- 251.21 KB
- 2022-05-17 13:31:56 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
《数据库系统原理课程设计报告》学生姓名:考勤管理系统系别:计科院班级:10计11专业:计算机科学与技术指导教师:唐蕾R伟强10261023职工考勤管理信息系统的设计与实现、绪论随着科学技术的不断发展,计算机科学FI渐进步,其强人的功能耳闻目睹,它已进入人类社会的各个领域并发挥着越来越重要的作用。由于在Z前学习课程像C++等的课程设计中遇到过要求实现功能与此实验相似的情况,所以选择此课题作为课程设计作业。此职工考勤管理信息系统的实现利用了计算机的相关技术,满足了单位FI常考勤管理的需求,使单位考勤过程更加快速,安全,高效的信息管理系统。本系统基于C/S模式,采用java语言与SQLSERVER2000数据库开发完成,实现了职工出差信息管理,职工请假信息管理功能。其屮职工出差信息管理主要包括出差起始时间、结束时I"可、统计总共天数等,职工请假信息管理主耍包括请假开始时间,结束时间,统计请假天数等。本系统能基本满足用户在考勤管理方面的需求,界面较简洁,符合用八使用习惯能实际地提高单位的考勤管理的效率。
二、系统分析随着企业人事管理的FI趋复朵和企业人员的增多,企业的考勤管理变得越来越复杂。规范的考勤管理是现代企业提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代企业的需求。。木实验实现的职工信息管理系统主要包括以下功能:(1)提供简单、方便的操作;(2)根据企业原来的考勤管理制度,为企业不同管理层次提供相应的功能;(3)通过考勤管理无纸化的实现,使企业的考勤悖理更加科学规范;(4)节省考勤管理的成本;(5)对系统提供必耍的权限管理,具备一定的安全性管理功能。包括输入登录用户名和密码;(6)为企业实现幣体信息化的其他相关系统提供必要的数据支持;(7)完成数据的录入和修改,并提交数据库保存。其中的数据包括:出差信息、请假信息;(8)系统功能基木要求:出差信息,包括出差起始时间、结束时间、统计总共天数等;请假信息,包括请假开始吋间,结束时间,统计请假天数等;三、系统设计3.1功能模块设计本系统采用C/S体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,采用PowerBuilder9作为开发工具;服务器端则用于提供数据服务,采用SQLServer2000作为数据库管理系统。本系统按照功能划分为以卜-四个模块:职工请假信息管理(包括请假开始时间,结束时间,统计请假天数等),职工出差信息管理(包括出差起始吋间、结束吋间、统计总共天数等)系统的功能模块图如图1所示:职工考勤管理信息系统
请.T.假差信信息息理理图1系统的功能模块图3.2数据库设计3.2.1数据库概念结构设计本系统主要有职工信息、出差信息、请假信息、加班信息、出勤信息和职丄考勤信息六个实体集。一个职工考勤信息包含有一个职工信息、一个出差信息、一个请假信息、一•个出勤信息和一个加班信息。每个信息中又由多个属性组成。(1)每个本系统的E-R图如图2.1所示:图2.1系统的E-R图
图2.2系统的职工岀差E-R图(3)图2.3为请假E-R图图2.3系统小职工请假E-R图3.2.2数据库逻辑结构设计在物理结构中,数据的棊本存取单位是存储记录。冇了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以少多个逻辑记录相对应。存储记录就包括记录的组成,数据项的类型和长度等。根据关系模型的转换原则,上面的E-R图可转换为如卜-所示的关系模型:evection(Wnum,Wname,Wleave,Wreturn,Wdays)英中各项含义分别为:出差信息(职工编号,职工姓名,出差开始时间,出差结束时间,出差天数)vacation(Wnum,Wname,Wstart,Wend,Wvadays)其中各项含义分别为:请假信息(职工编号,职工姓名,请假开始时间,请假结束时间,请假天数)load(User,psw)英中各项含义分别为:登录(用户名,口令)根据上而的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:表1出差信息表evecion的表结构主码列名数据类型宽度小数位空否备注PkWnumChar20N职工编号PkWnameChar20Y姓名WleaveDatetimeY出差开始时间WreturnDatetimeY出差结束时间WdaysSmallintY出差天数创建表1的SQL语句如下:createtableevection
Wnumchar(20),Wnamechar(10),primarykey(Wnum,Wname),foreignkey(Wnum,Wname)referenceszhigongxinxi4(Wnum,Wname)ondeletecascadeonupdatecascade,Wleavedatetime,Wreturndatetime,Wdayssmallint,)表2情假信息表vacation的表结构主码列名数据类型宽度小数位空否备注PkWnumChar20N职工编号WnameChar20N姓名WstartDatetimeY请假开始时间WendDatetimeY请假结束时间WvadaysSmallintY请假犬数创建表3的SQL语句如下:createtableqingjia(Wnumchar(20),Wnamechar(10),primarykey(Wnum,Wname),foreignkey(Wnum,Wname)referenceszhigongxinxi4(Wnum,Wname)ondeletecascadeonupdatecascade,Wstartdatetime,Wenddatetime,Wvadayssmallint,)表3登录农load的表结构主码列名数据类型宽度小数位空否备注PkUserChar20N用户名pswChar20Y口令创建表3的SQL语句如下:createtableloadUserchar(20)primarykey,pswchar(20),
U!系统实现结合Eclipse进行数据库应用开发的特点,设计过程可按如下步骤进行:•创建主函数,设计一个Frame框架,用來调川相关类的实例,实现操作功能;•创建职工请假类和出差类;•创建类的事件监听,用来响应添加,查询,浏览,删除等功能;•创建数据窗口和数据源,将数据库与应用程序相连接;•创建各个类的窗口中放置所需控件和可视化用户图形界面。4.1创建主函数,设计一个Frame框架,用来调用相关类的实例,实现操作功能;利用Eclipse创建工程WorkManage,进一步创建包workManageg,在创建主类名为WorkManage,注释为“职工考勤信息管理系统”。按照下面的方法,编写相应代码:⑴点击“新建类”新建一个类,名为“WorkManage”。⑵创建主函数,并创建一个Frame容器用来添加各种组件,程序代码如下:packageworkManae;/*职工考勤信息管理管理系统。程序名:Work"kmage.java**/importjava・swt・*;importjava.awt.event•*;importjava,sq1.*;importjava.util.*;importjava・util.Date;importjavax.swing.*;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava・util.*;importjava.applet.*;classWorkManage4{publicstaticvoidmain(Stringargs[])throwsParseException{dbframedb=newdbframe(〃职工考勤信息管理系统“);//职工考勤信息管理系统主界面classdbframeextendsFrameimplementsActionListener{〃成员变量〃登录boolcancanLogin;LabellabelLogln=newLabelC系统登录");LabellabelUser=newLabelC用户名:“);Label1abe1Password=newLabelC口令:“);TextFieldtextFie1dUser=newTextFieldO;ToxtFieldtextFie1dPassword二newTextField();JButtonjButtonConfirm二newJButton(〃确定“);JButtonjButtonExit=newJButton(zz退出“);Stringuser=newString();Stringtuser=newString();Stringtpassword=newString();////登录MonuBarnavigation=nowMcnuBar();//建立菜单栏
//建立“功能”菜单组MenumenuWorker!nformation二newMenu("职工信息“);MenumenuWentOnErrands=newMenu(/z出差管理");MenumcnuGoToWork=newMenu(z,岀勤管理");MenumenuLeave=newMenu(,z请假管理");MenumenuWorkOverTime=newMenu(z,加班管理");MenumenuSystemManage=newMenu(,z系统管理“);//建立“帮助”菜单组4.2创建请假类和出差类;1•出差类MenuItemmenuItemWentOnErrandsQuery二newMenuItemC查询出差记录“);MenuItemmcnumltcmWentOnErrandsAddtion=newMenuitem(z,添加出差记录");MenuitemmenuItemWentOnErrandsDelete=newMenuitem(/z删除出差记录");MenuTtemmenu!temWentOnErrandsModify=newMenuTtem(,z修改出差记录“);MenuTtemmenu!temchuchai1iulan=newMenuTtem("浏览出差记录“);〃出差查询classPanelchuchaichaxunextendsPanelimplementsActionListener{Choicecchaxun;TextFieldtchaxun;Buttonbtnchaxun;TextAreatachaxun;Panelchuchaichaxun(){setLayout(null);cchaxun=newChoice();//创建卜拉菜单cchaxun.add("职工编号");cchaxun.add("职工姓名〃);tchaxun二newTextFieldO;btnchaxun=newButton(z,查询“);//创建按钮tachaxun=newTextArea();//创建多行文本框add(cchaxun);add(tchaxun);add(blnchaxun);add(tachaxun);tchaxun.setText(///z);cchaxun.setBounds(10,60,70,20);tchaxun.setBounds(85,60,180,20);btnchaxun.setBounds(275,60,40,20);tachaxun.setBounds(10,90,305,145);cchaxun.select(0);//下拉菜单的初始选项setSize(340,250);//设置窗口大小setBackground(Color,white);setVisible(true);btnchaxun.addActionListener(this);validate();
}//岀差修改classPanclchuchaixiugaiextendsPanelimplementsActionListerwrTextFieldtextFie1dWorkerName,textFie1dWorkerNumber,textFieldchuchaiqishiriqi,textFieldchuchaijieshuriqi,textFieldchuchaitianshu;Labe11abe1WorkerName,1abeIWorkerNumber,1abe1chuchaiqishiriqi,1abelchuchaijieshuriqi,labelchuchaitianshu;Buttonbtn;Panelchuchaixiugai(){setLayout(null);btn=newButton(,z添加“);//创建"添加”按钮textFieldWorkerName=newTextFieldO;textFieldWorkerNumber=newTextFieldO;textFieldchuchaiqishiriqi=newTextFieldO;texlFieldchuchaijieshuriqi=newTextFieldO;textFieldchuchaitianshu=newTextField();labelWorkerName=newLabelC职工姓名:");1abeIWorkerNumber=newLabelC职工编号labe1chuchaiqishiriqi=newLabel("出差开始日期:");labelchuchaijieshuriqi=newLabelC"出差结束日期:");labelchuchaitianshu=newLabel("出差天数:");add(labelWorkerName);add(textFieldWorkerName);add(1abe1WorkerNumber);add(textFieldWorkerNumber);add(labelchuchaiqishiriqi);add(textFieldchuchaiqishiriqi);add(1abe1chuchaijicshuriqi);add(textFieldchuchaijieshuriqi);add(1abelchuchaitianshu);add(textFieldchuchaitianshu);add(btn);//添加“按钮”到窗口面板上labelWorkerName.setBounds(10,60,70,25);textFieldWorkerName.setBounds(90,60,220,25);labelWorkerNumber.setBounds(10,90,70,25);textFie1dWorkerNumber.setBounds(90,90,220,25);1abelchuchaiqishiriqi•setBounds(10,120,80,25);textFieldchuchaiqishiriqi.setBounds(90,120,220,25);1abe1chuchaijicshuriqi.setBounds(10,150,80,25);textFieldchuchaijieshuriqi.setBounds(90,150,220,25);labelchuchaitianshu.setBounds(10,180,70,25);textFieldchuchaitianshu.setBounds(90,180,220,25);
btn.setBounds(130,250,70,25);//设置按钮位置btn.addActionListener(this);//设置按钮监听setSize(340,300);//设置窗口大小setBackground(Co1or.white);//设置窗口背最颜色setVisible(true);validate();}〃出差浏览classPanelchuchai1iulanextendsPanelimplementsActionListenerButtonbtnliulan;TextAreatachaxun;PanelchuchailiulanO{setLayout(null);btnliulan=newButton(,z浏览职工出差记录“);//创建按钮tachaxun=newTextArea();//创建多行文木框add(btnliulan);add(tachaxun);//tchaxun.setTcxt(,,z/);//cchaxun.setBounds(10,60,70,20);//tchaxun.setBounds(85,60,180,20);btnliulan.setBounds(75,60,100,20);tachaxun.setBounds仃0,90,400,200);setSize(500,400);//设置窗口大小setBackground(Color.white);setVisible(true);btnliulan.addActionListener(this);validate();//职工出差添加classPanelchuchaitianjiaextendsPanelimplementsActionListener{TextFieldtexlFicldWorkerName,IcxtFieldWorkcrNumber,textFieldchuchaiqishiriqi,textFieldchuchaijieshuriqi;Label1abeltongjitianshu;LabellabelWorkerNamo,labelWorkcrNumber,labelchuchaiqishiriqi,1abe1chuchaijicshuriqi,1abe1chuchaitianshu;Buttonbtnchuchaitianshu;Buttonbtn;Pane1chuchailianjia(){setLayout(null);
btn=newButton(,z添加“);//创建"添加”按钮btnchuchaitianshu=newButton(z,统计出差天数”);textFie1dWorkerName=newTextFieldO;textFicldWorkerNumber=newTextFieldO;textFieldchuchaiqishiriqi=newTextFieldO;textFieldchuchaijieshuriqi=newTextFieldO;labeltongjitianshu=newLabel();1abeIWorkerName=newLabelC职工姓名:");1abelWorkerNumber=newLabelC职工编号labelchuchaiqishiriqi=newLabelC出差开始日期:");labclchuchaijieshuriqi=newLabel(/z出差结束日期:");labelchuchaitianshu=newLabel("出差天数:");add(1abelWorkerName);add(textFieldWorkerName);add(labelWorkerNumber);add(textFie1dWorkerNumber);add(1abe1chuchaiqishiriqi);add(textFieldchuchaiqishiriqi);add(1abe1chuchaijieshuriqi);add(textFieldchuchaijieshuriqi);add(labelchuchaitianshu);add(labeltongjitianshu);add(btnchuchaitianshu);add(btn);//添加“按钮”到窗口面板上labelWorkerName.setBounds(10,60,70,25);textFie1dWorkerName.setBounds(90,60,220,25);labelWorkerNumber.setBounds(10,90,70,25);textFieldWorkerNumber.setBounds(90,90,220,25);1abe1chuchaiqishiriqi.setBounds(10,120,80,25);textFieldchuchaiqishiriqi.setBounds(90,120,220,25);labelchuchaijieshuriqi^setBounds(10,150,80,25);textFieldchuchaijieshuriqi.setBounds(90,150,220,25);labelchuchaitianshu.setBounds(10,180,70,25);labeltongjitianshu.setBounds(90,180,220,25);labeltongjitianshu.setBackground(Color,cyaii);btnchuchaitianshu.setBounds(100,220,80,25);btn.setBounds(220,220,70,25);//设叠按钮位置btn.addActionListener(this);//设置按钮监听btnchuchaitianshu.addActionListener(this);setSize(340,300);//设置窗口大小setBackground(Co1or.whito);//设置窗口背景颜色setVisible(true);validate();
图3出差类的图形界而2.请假类MenuItemmenuItemLeaveQuery=newMenultem(,z杏询请假记录“);MenuItommcnumItemLeavcAddtion=newMenuitem(z,添加请假记录“);Menuitemmenu11emLeaveDe1ete=newMenultem(z,删除请假记录“);MenuTtemmenu11emLeaveModify=newMenuTtem(,z修改请假记录“);MenuTtemmenuTtemqingjialiulan=newMenuTtem(〃浏览请假记录");//请假査询classPane1qingjiachaxunextendsPanelimplementsActionListener{Choicecchaxun;TextFieldtchaxun;Buttonbtnchaxun;TextAreatachaxun;Panelqingjiachaxun(){setLayout(null);cchaxun=newChoice();//创建F拉菜单cchaxun.add("职工编号");cchaxun.add("职工姓名");tchaxun二newTextFieldO;btnchaxun=newButton(z,查询”);//创建按钮tachaxun=newTextArea();//创建多行文本框add(cchaxun);add(tchaxun);add(btnchaxun);add(tachaxun);
tchaxun.setText;cchaxun.setBounds(10,60,70,20);tchaxun.setBounds(85,60,180,20);btnchaxun.setBounds(275,60,40,20);tachaxun.setBounds仃0,90,305,145);cchaxun.select(0);//T"拉菜单的初始选项setSize(340,250);//设置窗口大小setBackground(Color.white);setVisible(true);btnchaxun.addActionListener(this);validate();//请假浏览classPanelqingjialiulanextendsPanelimplementsActionListener{//请假类Buttonbtnliulan;TextAreatachaxun;Panelqingjialiulan(){setLayout(null);btnliulan=newButton浏览职工请假记录“);//创建按钮tachaxun=newTextArea();//创建多行文本框tachaxun.setEditable(false);add(btnliulan);add(tachaxun);btnliulan.setBounds(75,60,100,20);tachaxun.setBounds(10,90,400,200);setSize(500,400);//设置窗口大小setBackground(Color,j加Ze);setVisible(true);btnliulan・addActionListener(this);validate();}〃请假修改classPane1qingjiaxiugaiextendsPanelimplementsActionListener{TextFieldtextFieldWorkerName,textEie1dWorkerNumber,textFieldqingjiakaishi,textFieldqingjiajieshu,toxtFicldqingjiatianshu;
Label1abelWorkerName,1abe1WorkerNumber,1abelqingjiakaishi,1abelqingjiajieshu,1abelqingjiatianshu;Buttonbtn;Panelqingjiaxiugai(){setLayout(null);btn=newButton(,z添加“);//创建“添加"按钮textFie1dWorkerName=newTextFieldO;textFic1dWorkerNumber=newTextFieldO;textFieldqingjiakaishi=newTextFieldO;textFie1dqingjiajieshu=newTextFieldO;textFieldqingjiatianshu二newTextFieldO;labelWorkerName=newLabel(,?职工姓名1abe1WorkerNumber=newLabel(,z职工编号:");labelqingjiakaishi=newLabel(z,请假开始日期labelqingjiajieshu=newLabel("请假结束日期;labelqingjia.tianshu=newLabel("请假天数:“);add(labelWorkerName);add(textFie1dWorkerName);add(labelWorkerNumber);add(textFieldWorkerNumber);add(labelqingjiakaishi);add(textFieldqingjiakaishi);add(labelqingjiajieshu);add(textFieldqingjiajieshu);add(1abelqingjiatianshu);add(textFieldqingjiatianshu);add(btn);//添加“按钮”到窗口面板上labelWorkerName.setBounds(10,60,70,25);textFieldWorkerName.setBounds(90,60,220,25);labelWorkerNumber.setBounds(10,90,70,25);textFic1dWorkerNumber.setBounds(90,90,220,25);80,25);120,220,25);80,25);150,220,25);labelqingjiakaishi.setBounds(10,120,textFieldqingjiakaishi.setBounds(90,labelqingjiajieshu.setBounds(10,150,textFieldqingjiajieshu.setBounds(90,labelqingjiatianshu.setBounds(10,180,80,25);textFie1dqingjiatianshu.setBounds(90,180,220,25);btn.setBounds(130,250,70,25);//设置按钮位置btn.addActionListener(this);//设置按钮监听setSize(340,300);//设置窗口大小setBackground(Color.white);//设置窗口背景颜色setVisible(true);
validate();}〃请假添加classPanelqingjiatianjiaextendsPanelimplementsActionListener{TextFieldtextFieldWorkerName,textEie1dWorkerNumber,textFieldqingjiakaishi,textFieldqingjiajieshu;Labellabeltongjitianshu;Label1abelWorkerName,1abe1WorkerNumber,1abelqingjiakaishi,labelqingjiajieshu,labelqingjiatianshu;Buttonbtn;Buttonbtntongjiqingjiatianshu;PanelqingjiatianjiaO{setLayout(null);btn=newButton(,z添加“);//创建"添加"按钮btntongjiqin£jidtianshu=newButton("统计请假天数”);textFieldWorkerName=newTextFieldO;toxtFic1dWorkerNumber=newTextFieldO;textFieldqingjiakaishi=newTextFieldO;textFie1dqingjiajieshu=newTextFieldO;labeItongjitianshu=newLabel(,,,z);labelWorkerName=newLabelC职工姓名:");labelWorkerNumber=newLabel(,z职工编号labelqingjiakaishi=newLabelC请假开始日期:");labelqingjiajieshu=newLabel(,z请假结束日期1abelqingjiatianshu=newLabel("请假天数:“);labeltongjitianshu.setBackground(Color-cyaii);add(labelWorkerName);add(textFicIdWorkerNamo);add(1abe1WorkerNumber);add(textFieldWorkerNumber);add(labelqingjiakaishi);
add(textFie1dqingjiakaishi);add(1abelqingjiajieshu);add(textFieldqingjiajieshu);add(labelqingjiatianshu);add(labeltongjitianshu);add(btn);//添岂J安钮”到窗口面板上add(btntongjiqingjiatianshu);labelWorkerName.setBounds(10,60,70,25);textFieldWorkerName.setBounds(90,60,220,25);labelWorkerNumber.setBounds(10,90,70,25);textFieldWorkerNumber.setBounds(90,90,220,25);80,25);120,220,25);80,25);150,220,25);labelqingjiakaishi・setBounds(10,120,textFieldqingjiakaishi.setBounds(90,labelqingjiajieshu.setBounds(10,150,textFieldqingjiajieshu>setBounds(90,labelqingjiatianshu・setBounds(10,180,80,25);labeltongjitianshu.setBounds(90,180,220,25);btntongjiqingjiatianshu.setBounds(120,220,80,25);btn.setBounds(220,220,70,25);//设置按钮位置bln.addActionListener(this);//设H!按钮监听blnlongjiqingjiatianshu.addActionListener(this);setSize(340,350);//设置窗口大小setBackground(Color,white);//设置窗口背景颜色sotVisible(true);validate();图4请假类的图形用户界而
4・3创建类的事件监听,用来响应添加,査询,浏览,删除等功能;//岀差类的动作监听添加publicvoidactionPorformed(ActionEvonte){inti=cchaxun.gctSelectcdlndex():Strings=tchaxun.getText();if(s.equals(/,,z))JOptionPane.show嗣essageDia1og(this,〃查询内容不能为空〃,“查询系统",JOptionPane.WA^NING_MESSAG^);else{Connectioncon;Statementsql;ResultSetrs;try{Class.forNameCsun.jdbc.odbc.JdbcOdbcDriver");//加载JDBC驱动}catch(ClassNotFoundExceptionee){System.oW.println+ee);}try{con=DriverManager.go0/7("jdbc:odbc:evection4","sa",〃123〃);//连接数据库sql=con.createStatement();if(i==0)//根据卜•拉菜单的选项执行不同的SQL语句rs=sql.executeQuery(""select*fromevection4whereWnum="elseif(i二二1)rs=sql.executeQuery("select*fromevection4whereWname:++s+);elsers=sql.executeQuery(""select*fromevection4wherepublisher++S+);tachaxun.setText(〃");Stringpanduan="false";while(rs.ncxt()){panduan二"true";tachaxun.append(,z职工编号:"+rs.getString(l)+"n");tachaxun.append(,z职工姓名:"+rs.getString(2)+"rT);tachaxun.append(z,出差开始时间:"+rs.getString(3)+"n〃);tachaxun.append(,z出差结束时间:"+rs.getString(4)+"n〃);tachaxun.appendC出差总天数:"+rs.getString(5)+"n");}//显示查询到的职工信息rs二sql.executeQuery("selectcount(*)fromevection4“);//统
计所有职工数while(rs.ncxt()){tachaxun.appendCn");tachaxun.append(,z职工考勤信息管理系统暂有"+rs.getString(l)+〃个职工出差记录〃);}//显示所有职工数量信息con.close()://关闭数据库if(panduan.equals("false"))JOptionPane.showMessageDia/(?^(this,"没有该记录","查询系统JOptionPane.WARNING_MESSAGD;}catch(SQLExceptioneee){System・out.println(eee);〃请假类的动作监听添加publicvoidactionPerformed(ActionEvente){inti二cchaxun.getSelectedlndex();Strings=tchaxun.getText();if(s.equals(〃"))JOptionPane.showMessageDialog{his,〃查询内容不能为空","查询系统”,JOptionPane.WARNING_MESSAGh;else{
Conncctioncon;Statementsql;ResultSetrs;try{Class.forNamefsg.jdbc.odbc.JdbcOdbcDriver,z);//加载JDBC驱动}catch(ClassNotFoundExccptionee){System,out.pri+ee);}try{con二DriverManager.getConnectionCjd)c:od)c:evection^,〃sa〃,〃123〃);//连接数据库sql=con•createStstement();if(i==0)//根据下拉菜单的选项执行不同的SQ【,语句rs=sql.executeQuery("select*fromevectiondwhereWnum二"+〃‘〃+s+…);elseif(i==1)rs=sql.executeQuery(""select*fromevection4whereWname:);tachaxun.setText(〃");while(rs.next()){panduan二"true";tachaxun.appendCtachaxun.append(,ztachaxun.append(z/tachaxun.append(,ztachaxuri・appendCStringpanduan="false";职工编号:〃+rs.getString(l)+〃n〃);职工姓名:〃+rs.getString(2)+"n");出差开始时间:"+rs.getString(3)+"n");出差结束时间:"+rs.getString(4)+"n");出差总天数:"+rs.getString(5)+"n");}//显示查询到的职工信息rs=sql.executeQuery(""selectcount(*)fromevectiond“);//统计所有职工数while(rs.next()){tachaxun・append("n");tachaxun.append(,z职工考勤信息管理系统暂冇"+rs.getString(l)+〃个职工出差记录〃);}//显示所有职工数量倍息con.closeO;//关闭数据库if(panduan.equals(z,false〃))JOptionPane.showMessageDiais,"没有该记录","查询系统〃JOptionPane.WARNING_MESSAGD;}catch(SQLExceptioneee){System・out.println(eee);
4.4创建各个类的窗口中放置所需控件和可视化用户图形界面。(1)将出差类添加到主函数中。MenuTtemmenultemWentOnErrandsQuery=newMenuTtem(〃查询出差记录“);MenuitemmenumltemWentOnErnmdsAddtion二newMenuItemC添加出差记录“);MenuItemmcnultemWentOnErrandsDelete=newMenultcm(/,删除出差记录”);MenuitemmenultemWentOnErrandsModify=newMenuitem(,z修改111差记录“);MenultemmenuTtemevection1iu1an二newMenulteni(〃浏览出羌记录");Panelevectiontianjiapjiabantianjia=newPanelevectiontianjia();Panelevectionshanchupjiabanshanchu=newPanelevectionshanchu();Panelevectionchaxunpjiabanchaxun二newPanelevectionchaxunO;Panelevectionliulanpjiabanliulan=newPanelevectionliulan();图7将出弟类添加到主面板小的运行效果图(2)将请假类添加到主函数中。MenuItemmenu11emLeaveQuery=newMenultem(z,杳询请假记录“);MenuIternmenumltemLeaveAddtion=newMenuItom(z,添加请假记录”);Menuitemmenu11emLeaveDe1ete=newMenuitem(,z删除请假记录“);MenuTtemmenuItemLeaveModify=newMenuTtem(z,修改请假记录“);MenuTtemmenultemqingjialiulan=newMenuTtem(z,浏览请假记录");Panelqingjiatianjiapjiabantianjia=newPanelqingjiatianjiaO;Panelqingjiashanchupjiabanshanchu=newPanolqingjiashanchu();Panelqingjiachaxunpjiabanchaxun=newPanelchqingjiaaxun();Panelqingjialiulanpjiabanliulan=newPanelchqingjiaulan();
图6将请假类添加到丄血板屮的运行效果图(3)将登录类添加到主函数中。MenuItemmenuItemSystemManageExit=newMenuItern(/z退出系统“);MenultemmenuItemWelcome=newMenultem(n返|川欢迎界liT);PanelWelcomepwelcome=newPanelWelcome()图7将登录类添加到主面板小的运行效果图(8)出差信息添加效果图厂回职工考统IE回添加|图11
本系统经过实际的测试和运行,基本町以满足屮小企业考勤业务的要求。该系统运行稳定,在使用和维护中应该注意以下几个问题:(1)定期备份数据库和口志,以使数据库在发生故障后恢复到一致性状态,保障数据库的完整性。(2)定期清理数据库中的无效数据,以提高运行效率。(3)对软件及运行环境进行口常维护。五、总结本系统中我主要实现了职工出差信息管理和在职工请假信息管理,其余功能由麦丞程同学实现。本系统在信息表述上还不完备,一些模块的信息还不够详细,主要是提供的报衣有限。系统虽然针对屮小企业的考勤管理业务。对使用打卡机、指纹机进行出、退勤的企业,还需要添加一个采集打卡机和指纹机的数据模块。下一步町以再熟悉系统设计风格的棊础上,在各个界而上进一步添加多需要的字段和报表,或者添加采集数据的模块,以扩充系统的功能。本系统的创新点在于触发器的应用,每增加一条记录,都会重新统计一下记录次数,并存入月纪录屮,使得信息更加准确。在设计时由于对编程语言知识的匮乏,所以数据库的界面化没有做成,如若想更加完善数据库,应该结合一•些编程语言,使得操作界面更加人性化,简单化。