职工工资管理系统设计与实现(DOC36页).doc

上传人:牧羊曲112 文档编号:1926929 上传时间:2022-12-26 格式:DOC 页数:36 大小:1.26MB
返回 下载 相关 举报
职工工资管理系统设计与实现(DOC36页).doc_第1页
第1页 / 共36页
职工工资管理系统设计与实现(DOC36页).doc_第2页
第2页 / 共36页
职工工资管理系统设计与实现(DOC36页).doc_第3页
第3页 / 共36页
职工工资管理系统设计与实现(DOC36页).doc_第4页
第4页 / 共36页
职工工资管理系统设计与实现(DOC36页).doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《职工工资管理系统设计与实现(DOC36页).doc》由会员分享,可在线阅读,更多相关《职工工资管理系统设计与实现(DOC36页).doc(36页珍藏版)》请在三一办公上搜索。

1、JAVA程序设计课程设计报告 设计题目: 职工工资管理系统设计与实现 学院名称: 专业班级: 姓 名: 学 号: 目录一 需求分析。3二 概要设计。3三 详细设计。5 3.1 数据库设计。3 3.2 模块及窗体设计。3 3.2.1 数据库模块设计。53.2.2 用户登录识别模块。63.2.3管理员模块。 8 职工基本信息管理。 9 职工工资管理。203.2.4 普通用户模块。 28 职工信息。283.2.5 系统管理模块。153.2.5 主窗体菜单设计。15四 软件测试。36五 总结。36参考资料:。17一 需求分析 本系统的主要目的就是实现职工工资管理系统设计与实现,使职工工资管理工作更加容

2、易, 高效地管理企业职工工资,从而提高工作效率,降低管理成本. 二 概要设计/*概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。2.1 概要设计的原则概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则

3、。(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一

4、般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10100行的范围内,最好为3060行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中

5、不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。2.2 将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才是一个模块?模块应该具备如下3个特征。(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。(3)程序代码:用来实现模块功能的源代码。2.3 确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和模块特征,将用户需求转

6、化为下面的模块。*/(1)流程图设计2.2 模块设计1 数据库设计模块2 用户登录识别模块3 用户信息管理模块4 职工信息管理模块2.2.1 程序功能描述1. 程序运行之后首先弹出欢迎窗口,继而进入登陆界面2. 登陆界面的通过用户密码验证进入操作3. 密码输入正确后转入管理员主菜单,就可以选择对职工基本信息和工资进行计算、修改、添加或者查询或退出后回到主菜单。4. 密码输入正确后转入普通用户主菜单,就可以选择对自身基本信息和工资进行计算或者查询或退出后回到主菜单。5. 每个功能模块都有退出的功能,回到主菜单。6. 点击主菜单的退出按钮,退出系统。三 详细设计3.1 数据库设计数据库名称:emp

7、loyee 表名:user, employ,salary表user:存放登陆用户的用户名和密码表employ:存放职工基本信息职工表(employee)字段名类型备注EmployIDchar(20)职工号EmployNamechar(30)Not nullEmploySexchar(2)性别男 或者女EmployAgeint年龄0EmployDeptchar(30)部门EmployAdchar(50)住址EmpoyJobChar(20)职务Not nullEmployPhInt电话号工资表(salary)字段名类型备注EmployIDchar(20)职工号Not nullEmbaseSalar

8、yInt基本工资=0EmAddSalaryint奖金EmSubSalaryint罚金SalaryCardint工资卡Not nullRealSalaryint实发工资Not null3.2 模块及窗体设计3.2.1 数据库模块设计将数据库的连接包装在一个DBConnect类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。下表是他的基本属性文件名成员变量成员方法database.javapublic static Connection cn;public static Statement st; public static ResultSet rs;public static void

9、 closeConn(Connection conn);public static Connection getConn() throws Exception代码如下:/创建数据库连接类DBConnectpackage Java_Design;import java.sql.*;public class JDBConnect/静态方法提高数据库的连接效率public static Connection getConn() throws Exception/加载JDBC驱动Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);re

10、turn DriverManager.getConnection(jdbc:sqlserver:/localhost:1433; +databasename=SalaryManagement,sa,1sjk);/关闭连接 public static void closeConn(Connection conn) if(conn != null) try conn.close(); catch (Exception e) e.printStackTrace(); /关闭执行对象public static void closeStatement(Statement stmt) if(stmt !=

11、 null) try stmt.close(); catch (Exception e) e.printStackTrace(); /关闭结果集public static void closeResultSet(ResultSet rs) if(rs != null) try rs.close(); catch (Exception e) e.printStackTrace(); 3.2.2 用户登录识别模块下表其他的基本属性文件名成员变量成员方法landing1.javaJLabel jlabel2=new JLabel(用户ID:);JLabel jlabel3=new JLabel(密

12、码:);JTextField text1 = new JTextField(); public landing1() 判断用户名和密码是否正确的成员方法代码: private class BHandler implements ActionListener public void actionPerformed(ActionEvent e) name=text1.getText(); if (e.getSource()=button1) if(text1.getText().trim().equals()| text2.getText().trim().equals() JOptionPane

13、.showMessageDialog(null,信息不能为空!); try ResultSet rs1=st.executeQuery(select * from Employee where EmployID=+text1.getText()+); if(rs1.next() ) Name=rs1.getString(EmployName).trim(); if(text2.getText().equals(rs1.getString(EmployPassword).trim() if(mana.isSelected() if(rs1.getString(EmployJob).trim().

14、equals(管理员) dispose(); Management Management1 = new Management(rs1.getString(EmployName).trim(); Management1.setVisible(true); else JOptionPane.showMessageDialog(null,非管理员!); else if(pers.isSelected()/j普通用户 dispose(); Person Person1 = new Person(rs1.getString(EmployName).trim(),rs1.getString(EmployI

15、D).trim(); Person1.setVisible(true); else JOptionPane.showMessageDialog(landing1.this,password error!); else JOptionPane.showMessageDialog(landing1.this,登录超时!没有这个用户!); catch(Exception ex) /利用消息对话框提示失败 JOptionPane.showMessageDialog(landing1.this,登录超时!没有这个用户!); text1.setText(); text2.setText(); else i

16、f (e.getSource()=button2) text1.setText( ); text2.setText( ); else if(e.getSource()=jMenuItem1)/上页dispose(); index m= new index(); m.setVisible(true); else if(e.getSource()=jMenuItem4)/退出 System.exit(0); 3.2.3 管理员模块下表其他的基本属性文件名成员变量成员方法Management.javaJMenu jMenu0=new JMenu(系统_管理员界面);/菜单JMenuItem jMen

17、uItem1=new JMenuItem(主页);/子菜单JButton addButton = new JButton(); private class BHandler implements ActionListener public void actionPerformed(ActionEvent e) if(e.getSource()=jMenuItem1)/主页public Management(String name)代码:public Management(String name)/传过来管理员的nameName=name;setTitle(Welcome Management_

18、+Name);/ 设置窗体标题 setSize(800, 600); setBounds(100, 100, 550, 340);/ 设置窗体位置 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setContentPane(contentPane);/ 设置窗体内容面板 BHandler h=new BHandler();/为组件注册监听器 indexBackgroundP backgroundPanel = new indexBackgroundP();/ 创建背景面板 backgroundPanel

19、.setImage(getToolkit().getImage( getClass().getResource(3.jpg);/ 设置面板背景图片 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5); contentPane.setLayout(new BorderLayout(0, 0);/BorderLayout是用东西南北和中央 Button1.setToolTipText(查看所有职工资料);/用来设置鼠标停留时显示提示信息的 Button1.setIcon(new ImageIcon(Management.class.getResour

20、ce(5.png); addButton.setToolTipText(增添职员);/用来设置鼠标停留时显示提示信息的 addButton.setIcon(new ImageIcon(Management.class.getResource(add.jpg); toolBar.add(addButton); subButton.setToolTipText(删除资料); subButton.setIcon(new ImageIcon(Management.class.getResource(sub.png); toolBar.add(subButton); resetButton.setToo

21、lTipText(修改信息); resetButton.setIcon(new ImageIcon(Management.class.getResource(reset.png); toolBar.add(resetButton); findButton.setToolTipText(查找职员); findButton.setIcon(new ImageIcon(Management.class.getResource(find1.jpg); toolBar.add(findButton); jMenuBar1.add(jMenu0); jMenu0.add(jMenuItem1);/主页 j

22、Menu0.add(jMenuItem3);/退出 jMenu0.add(jMenuItem2);/帮助 setJMenuBar(jMenuBar1); setIconImage(Toolkit.getDefaultToolkit().getImage(4.png); contentPane.add(toolBar, BorderLayout.NORTH); contentPane.add(Button1,BorderLayout.WEST); contentPane.add(backgroundPanel); jMenuItem1.addActionListener(h);jMenuItem

23、2.addActionListener(h);jMenuItem3.addActionListener(h); Button1.addActionListener(h);subButton.addActionListener(h);findButton.addActionListener(h); addButton.addActionListener(h);resetButton.addActionListener(h); private class BHandler implements ActionListener public void actionPerformed(ActionEve

24、nt e) if(e.getSource()=jMenuItem1)/主页 dispose(); index h= new index(); h.setVisible(true); /frame.dispose(); else if(e.getSource()=jMenuItem2)/帮助 int i=0; dispose(); help h1=new help(Name,i,);/姓名 权限 编号 h1.setVisible(true); else if(e.getSource()=jMenuItem3)/退出 System.exit(0); else if(e.getSource()=Bu

25、tton1)/ dispose(); M_reset rese=new M_reset(Name); rese.setVisible(true); else if(e.getSource()=addButton) /增 dispose(); Add_person fram1= new Add_person(Name); fram1.setVisible(true); else if(e.getSource()=subButton)/删 dispose(); Sub_person su=new Sub_person(Name); su.setVisible(true); else if(e.ge

26、tSource()=resetButton)/改 dispose(); Reset_person re= new Reset_person(Name); re.setVisible(true); else if(e.getSource()=findButton)/查 dispose(); Find_person2 fin= new Find_person2(Name); fin.setVisible(true); 3.2.3.1 下表其他的基本属性文件名成员变量成员方法Add_person.javaJMenuItem jMenuItem2=new JMenuItem(回到主页);/子菜单JLa

27、bel jlabel1=new JLabel(添加职工基本信息);JButton button2=new JButton(返回上页);JLabel jlabel2=new JLabel(编号:); private class BHandler implements ActionListener public void actionPerformed(ActionEvent e) if(e.getSource()=jMenuItem1)/主页public Add_person(String N)代码:public Add_person(String N) Name=N;setTitle(Welc

28、ome Person_Reset_+Name);/ 设置窗体标题 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 350);/ 设置窗体位置 setContentPane(contentPane);/ 设置窗体内容面板 contentPane.setLayout(new BorderLayout(0, 0); indexBackgroundP backgroundPanel = new indexBackgroundP();/ 创建背景面板 backgroundPanel.setImage(get

29、Toolkit().getImage( getClass().getResource(666.jpg);/ 设置面板背景图片 jlabel1.setBounds(10,-20,300,120); jlabel2.setBounds(30,65,80,60); text1.setBounds(80,80,120,30); jlabel3.setBounds(220,65,80,60); man.setBounds(270,80,60,30);women.setBounds(325,80,60,30); jlabel7.setBounds(30,105,80,60); text7.setBound

30、s(80,120,120,30);/姓名 jlabel8.setBounds(220,105,80,60); text8.setBounds(270,120,120,30);/年龄 jlabel4.setBounds(30,145,80,60); text3.setBounds(80,160,120,30);/住址 jlabel5.setBounds(220,145,80,60); text4.setBounds(270,160,120,30);/联系电话 jlabel6.setBounds(30,190,80,60); text2.setBounds(80,205,120,30);/部门 j

31、label10.setBounds(220,190,80,60); text10.setBounds(270,205,120,30); jlabel9.setBounds(30,235,80,60); text9.setBounds(80,245,120,30);/职务 button2.setBounds(355,10,70,30);button2.setToolTipText(返回上页!); button1.setBounds(270,245,120,30); jlabel1.setFont(new Font(Serif,Font.PLAIN,30); jlabel2.setFont(new

32、 Font(Serif,Font.PLAIN,20); jlabel3.setFont(new Font(Serif,Font.PLAIN,20); jlabel4.setFont(new Font(Serif,Font.PLAIN,20); jlabel5.setFont(new Font(Serif,Font.PLAIN,20); jlabel6.setFont(new Font(Serif,Font.PLAIN,20); jlabel7.setFont(new Font(Serif,Font.PLAIN,20); jlabel8.setFont(new Font(Serif,Font.P

33、LAIN,20); jlabel9.setFont(new Font(Serif,Font.PLAIN,20); jlabel10.setFont(new Font(Serif,Font.PLAIN,20); button1.addActionListener(h); button2.addActionListener(h); /button4.addActionListener(h); contentPane.add(jlabel1); contentPane.add(jlabel2); contentPane.add(jlabel3); contentPane.add(jlabel4);

34、contentPane.add(jlabel5); contentPane.add(jlabel6); contentPane.add(jlabel7); contentPane.add(jlabel8); contentPane.add(jlabel9); contentPane.add(jlabel10); contentPane.add(button2); contentPane.add(text1); contentPane.add(text2); contentPane.add(text3); contentPane.add(text4); contentPane.add(text7

35、); contentPane.add(text8); contentPane.add(text9); contentPane.add(text10); buttonGroup.add(man);buttonGroup.add(women); contentPane.add(man);contentPane.add(women); contentPane.add(button1); contentPane.add(backgroundPanel);/ 把背景面板添加到窗体内容面板 / contentPane.setOpaque(true);contentPane.add(button4); tr

36、y/调用初始化方法Init();catch(Exception exception)exception.printStackTrace(); private class BHandler implements ActionListener public void actionPerformed(ActionEvent e) if(e.getSource()=button1) /获取用户输入的信息 String EmployID=text1.getText(); String EmployName=text7.getText(); String EmploySex=; if(man.isSelected() EmploySex+=男; if(women.isSelected() EmploySex+=女; String EmployAge=text8.getText(); String EmployAd=text4.getText(); String EmployPhone=text2.getText(); String EmployPassword=text10.getText(); String EmployDe

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号