1、 JAVA 程序设计 课程设计 报告 课 题 : mini 人事管理系统 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间: 评阅意见: 评定成绩: 指导老师签名: 年 月 日 目 录 一 、系统描述 . 1 1. 前言 . 1 2. 开发系统的功能介绍 . 1 二 、分析与设计 . 2 1. 功能模块划分 . 2 2. 数据库结构描述 . 2 3. 各个模块实现方法描述 . 3 4. 测试数据及期望结果 . 5 三 、源代码 . 5 1. 主页面设计 . 5 2. 记录添加界面的开发设计 . 12 3. 上班登记子系统开发设计 . 14 4. 下班登记子系统开发设计 . 16
2、 5. 信息统计页面的设计开发 . 18 四 、系统测试 . 22 五、总结 . 25 1. 实验心得 . 25 2. 参考文献 . 26 1 一 、系统描述 1.前言 随着科学技术的不断提高 ,计算机科学日渐成熟 ,其强大的功能已为人们深刻认识 ,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分 ,使用计算机对人事信息进行管理 ,具有着手工管理所无法比拟的优点 .例如 :检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事理的效率 ,也是企业的科学化、正规化管理 ,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要
3、的事情。 目前,无论是机关、事业单位、还是企业单 位,人事管理对于组织生存与长远发展所具备的重要性都已经有了明确的认识,而人事管理水平的提升不仅需要高素质的管理人员,而且也需要信息化工具进行辅助 在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。 2、开发系统的功能介绍 ( 1)上班登记子系统 上班登记子系统主要对所有员工的上班信息进行登记,包括员工的工号、员工的姓名、员工的上班时间和相应的备注信息,并且还要能够删除错误的员工上班时间信息的记录 ( 2) 下班登记子系统 下班登记
4、子系统主要对所有员工的下班信息进行登记,包括员工的工号、员工的姓名、员工的下班时间和相应的备注信息,并且还要能够删除错误的员工下班时间信息的记录。 ( 3)请假登记子系统 请假登记子系统主要对所有员工的请假信息进行登记,包括员工的工号、员工的姓名、员工的请假时间和相应的备注信息,并且还要能够删除错误的员工请假时间信息的记录。 ( 4)信息统计子系统 信息统计系统主要对所有员工的上班时间信息、下班时间信息、请假时2 间信息进行统计,包括员工的 工号、员工的姓名、员工的上班时间、员工的下班时间、员工的请假时间和相应的备注信息,并且还可以删除错误的员工时间信息的记录。 ( 5)记录添加子系统 记录添
5、加子系统的主要作用是在数据库中添加员工工号、员工姓名、相应的时间和备注。 二、分析与设计 本组共有三人一起完成本次的课程设计任务,组长是李海霞,组员有李丹和周露,组内分工为:李丹负责上班系统的开发,周露负责下班系统的开发,李海霞负责请假系统的开发以及统计信息系统的开发,然后再将每人完成的开发系统总结到一块。大家一起研究错误出在哪里,该怎么改正这 些错误。 1.功能模块划分 本系统分为如下的几大模块: 2.数据库结构描述 在这个 MINI 开发系统中,选用 mysql 作为系统服务数据库,这是因为 mysql 功能强大,操作简便,应用较广。数据库方面只做了一张表,根据功能不同,在每个子系统里面读
6、取的数据部分不同。设计的表如表一: Mini 人事管理系统 上班登记 子系统 下班登记 子系统 请假登记 子系统 信息统计 子系统 退出系统 3 表一 列名 数据类型 可否允空 长度 工号 数值型 否 50 姓名 字符型 否 50 上班时间 日期型 否 30 下班时间 日期型 否 30 请假时间 日期型 是 30 备注 字符型 是 50 3.各个模块实现方法描述 1) 上班登记模块描述(负责人:李丹) 上班登记子系统主要包括一个上班信息统计界面和一个上班信息添加界面。上班信息统计界面是一个表格,每一行就是一个员工的相关信息。如果某条记录不符合要求,可以将此条记录删除。 上班信息添加界面主要是员
7、工工号、员工姓名、相应时间和相关备注信息。可以根据信息添加界面上的系统时间指示来填入相应的时间。 其流程图为: 2) 下班登记模块描述(负责人:周露) 下班登记子系 统主要对所有员工的下班信息进行登记,包括员工的工号、员工的姓名、员工的下班时间和相应的备注信息,并且还要能够删除错误的员工下班时间信息的记录。下班信息添加界面主要是员工工号、员工姓名、相应时间和相关备注信息。可以根据信息添加界面上的系统时间指示填入相应的时间。 添加记录 上班登记系统 选择 删除记录 刷新界面 退出 结束 4 其流程图为: 3) 请假登记模块描述(负责人:李海霞) 请假登记子系统主要对所有员工的请假信息进行登记,包
8、括员工的工号、员工的姓名、员工的请假时间和相应的备注信息,并且还要能够删除错误的 员工请假时间信息的记录。 在这个下班信息添加界面中,主要是读取员工的 ID、员工的姓名、员工的请假时间以及相关的描述信息,并将这些信息写入到数据库中。 其流程图为: 4) 信息统计模块描述(负责人:李海霞) 信息统计系统主要对所有员工的上班时间信息、下班时间信息、请假时间信息进行统计,包括员工的工号、员工的姓名、员工的上班时间、员工的下班时间、员工的请假时间和相应的备注信息,并且还可以删除错误的员工时间信息的记录。 添加记录 请假登记系统 选择 删除记录 刷新界面 退出 结束 添加记录 下班登记系统 选择 删除记
9、录 刷新界面 退出 结束 5 信息统计子系统主要是一个信息统计 界面。信息统计界面是一个表格,每一行就是一个员工的相关信息。如果觉得某些记录不符合要求,还可以将此条记录删除。在此界面,可以看到所有员工的上下班时间及其请假时间。 4.测试数据及期望结果 这个阶段的工作主要是实际运行人事管理系统应用程序,进入人事管理系统登录界面, 在前一阶段,虽然也作了性能预测,但是仅仅做了性能估计,且在估计过程中,做了许多简化和假设,忽略了许多次要因素,因而估计是粗糙的,并可能失真。在试运行阶段,必须进行实际测量和评价,测试数据尽可能覆盖现实世界的各种情况。 如果实际测试结果不 符合设计目标,则需返回物理设计阶
10、段,修改参数。有时也许还需要返回初始阶段。 期望结果:比方说,员工 A3: 00 来上班,点击上班登记,手动添加上班记录。下班亦然。在统计模块中可以自动统计并显示出每个员工每天上下班,请假的全部记录。 三、源代码 1.主页面的设计开发 package manpowersystem; import javax.swing.*; import java.awt.event.*; import java.awt.*; import com.borland.jbcl.layout.*; import javax.swing.event.*; public class MainFrame extends
11、 JFrame private ImageIcon fmImage; /主框架面板代码文件声明的属性和变量 XYLayout xYLayout1 = new XYLayout(); JButton jTitleButton = new JButton(); JButton jOnWorkButton = new JButton(); JButton jOffWorkButton = new JButton(); 6 JButton jLeaveWorkButton = new JButton(); JButton jStaticButton = new JButton(); JButton j
12、ExitButton = new JButton(); public MainFrame() try jbInit(); addWindowListener( new WindowAdapter() /窗口事件监听 public void windowClosing( WindowEvent e ) dispose(); /销毁窗口 ); catch ( Exception e ) e.printStackTrace(); public static void main( String args ) MainFrame mainFrame = new MainFrame(); mainFram
13、e.validate(); mainFrame.setLocation( 200, 150 ); mainFrame.setSize( 600, 480 ); mainFrame.setVisible( true ); mainFrame.pack(); private void jbInit() throws Exception fmImage=new ImageIcon ( manpowersystem.MainFrame.class.getResource(“Fengmian.png“ ) ); jTitleButton.setBackground( new Color( 210, 13
14、8, 177 ) ); jTitleButton.setIcon( fmImage ); jTitleButton.setFocusable( false ); /此按钮的聚焦作用失效 xYLayout1.setWidth( 540 ); xYLayout1.setHeight( 407 ); this.getContentPane().setBackground( new Color( 210, 138, 177 ) ); this.setLocale( java.util.Locale.getDefault() ); this.setResizable( true ); 7 this.se
15、tTitle( “Mini人事管理系统 “ ); this.addWindowListener(new MainFrame_this_windowAdapter( this ) ); this.getContentPane().setLayout( xYLayout1 ); jOnWorkButton.setBackground( new Color( 212, 158, 217 ) ); jOnWorkButton.setFont( new java.awt.Font( “DialogInput“, 1, 16 ) ); jOnWorkButton.setText( “上班登记 “ ); j
16、OnWorkButton.addActionListener(new MainFrame_jOnWorkButton_actionAdapter( this ) ); jOnWorkButton.addHierarchyBoundsListener( new MainFrame_jOnWorkButton_hierarchyBoundsAdapter( this ) ); jOffWorkButton.setBackground( new Color( 212, 158, 217 ) ); jOffWorkButton.setFont( new java.awt.Font( “DialogIn
17、put“, 1, 16 ) ); jOffWorkButton.setText( “下班登记 “ ); jOffWorkButton.addActionListener(new MainFrame_jOffWorkButton_actionAdapter(this); jOffWorkButton.addAncestorListener( new MainFrame_jOffWorkButton_ancestorAdapter( this ) ); jLeaveWorkButton.setBackground( new Color( 212, 158, 217 ) ); jLeaveWorkB
18、utton.setFont( new java.awt.Font( “DialogInput“, 1, 16 ) ); jLeaveWorkButton.setText( “请假登记 “ ); jLeaveWorkButton.addActionListener(new MainFrame_jLeaveWorkButton_actionAdapter(this); jLeaveWorkButton.addAncestorListener( new MainFrame_jLeaveWorkButton_ancestorAdapter( this ) ); jStaticButton.setBac
19、kground( new Color( 212, 158, 217 ) ); jStaticButton.setFont( new java.awt.Font( “DialogInput“, 1, 16 ) ); jStaticButton.setText( “统计情况 “ ); jStaticButton.addActionListener(new MainFrame_jStaticButton_actionAdapter(this); 8 jStaticButton.addAncestorListener( new MainFrame_jStaticButton_ancestorAdapt
20、er( this ) ); jExitButton.setBackground( new Color( 212, 158, 217 ) ); jExitButton.setFont( new java.awt.Font( “DialogInput“, 1, 16 ) ); jExitButton.setText( “退出系统 “ ); jExitButton.addActionListener(new MainFrame_jExitButton_actionAdapter( this ) ); jExitButton.addAncestorListener(new MainFrame_jExi
21、tButton_ancestorAdapter( this ) ); this.getContentPane().add( jTitleButton,new XYConstraints( 0, 0, 358, 409 ) ); this.getContentPane().add( jOnWorkButton,new XYConstraints( 393, 35, 115, 45 ) ); this.getContentPane().add( jOffWorkButton, new XYConstraints( 393, 109, 115, 45 ) ); this.getContentPane
22、().add( jLeaveWorkButton, new XYConstraints( 393, 184, 115, 45 ) ); this.getContentPane().add( jStaticButton, new XYConstraints( 393, 258, 115, 45 ) ); this.getContentPane().add( jExitButton, new XYConstraints( 393, 332, 115, 45 ) );this.setResizable(false); void this_windowClosed( WindowEvent e ) S
23、ystem.exit( 0 ); void jOnWorkButton_ancestorMoved( HierarchyEvent e ) void jOffWorkButton_ancestorMoved( AncestorEvent e ) void jLeaveWorkButton_ancestorMoved( AncestorEvent e ) void jStaticButton_ancestorMoved( AncestorEvent e ) void jExitButton_ancestorMoved( AncestorEvent e ) void jExitButton_actionPerformed( ActionEvent e ) System.exit( 0 ); /退出系统按钮的事件处理 void jOnWorkButton_actionPerformed( ActionEvent e ) OnWorkPanel onWorkPanel = new OnWorkPanel();