职工工资管理系统设计实现分析.docx
- 文档编号:23748492
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:59
- 大小:1,015.61KB
职工工资管理系统设计实现分析.docx
《职工工资管理系统设计实现分析.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统设计实现分析.docx(59页珍藏版)》请在冰豆网上搜索。
职工工资管理系统设计实现分析
《JAVA程序设计》
课程设计报告
设计题目:
职工工资管理系统设计与实现
学院名称:
专业班级:
姓名:
学号:
一需求分析。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
二概要设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
三详细设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
5
3.1数据库设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
3.2模块及窗体设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
3.2.1数据库模块设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
5
3.2.2用户登录识别模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
6
3.2.3管理员模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
8
职工基本信息管理。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
9
职工工资管理。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
20
3.2.4普通用户模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
28
职工信息。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
28
3.2.5系统管理模块。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
15
3.2.5主窗体菜单设计。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
15
四软件测试。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
36
五总结。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
36
参考资料:
....................................................。
。
。
。
。
。
..17
一需求分析
本系统的主要目的就是实现职工工资管理系统设计与实现,使职工工资管理工作更加容易,高效地管理企业职工工资,从而提高工作效率,降低管理成本.
二概要设计
/************************************************************************
概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。
项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。
概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。
概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。
2.1概要设计的原则
概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。
概要设计要坚持以下几个原则。
(1)细分原则:
软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。
解决复杂问题的方法是将其分解成几个小问题,一个个来解决。
(2)提高代码重用性:
在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。
(3)从上而下层层分析:
概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。
(4)一致性原则:
概要设计要求所有功能模块在定义时使用统一的规范。
(5)提高独立性,减少耦合:
各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。
一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。
(6)模块的大小要尽量适中:
不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。
经验表明,一个模块的规模不应过大,模块的总行数应控制在10~100行的范围内,最好为30~60行,这样理解和阅读都较方便。
过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。
由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。
现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。
2.2将用户需求模块化
根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。
什么样的需求才是一个模块?
模块应该具备如下3个特征。
(1)输入和输出:
模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。
(2)处理功能:
模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。
(3)程序代码:
用来实现模块功能的源代码。
2.3确定系统最终模块
概要设计中最重要的就是确定此项目包括哪些模块。
根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。
**************************************************************************/
(1)流程图设计
2.2模块设计
1数据库设计模块
2用户登录识别模块
3用户信息管理模块
4职工信息管理模块
2.2.1程序功能描述
1.程序运行之后首先弹出欢迎窗口,继而进入登陆界面
2.登陆界面的通过用户密码验证进入操作
3.密码输入正确后转入管理员主菜单,就可以选择对职工基本信息和工资进行计算、修改、添加或者查询或退出后回到主菜单。
4.密码输入正确后转入普通用户主菜单,就可以选择对自身基本信息和工资进行计算或者查询或退出后回到主菜单。
5.每个功能模块都有退出的功能,回到主菜单。
6.点击主菜单的退出按钮,退出系统。
三详细设计
3.1数据库设计
数据库名称:
employee表名:
user,employ,salary
表user:
存放登陆用户的用户名和密码
表employ:
存放职工基本信息
职工表(employee)
字段名
类型
备注
EmployID
char(20)
职工号
EmployName
char(30)
Notnull
EmploySex
char
(2)
性别
'男'或者'女'
EmployAge
int
年龄
>0
EmployDept
char(30)
部门
EmployAd
char(50)
住址
EmpoyJob
Char(20)
职务
Notnull
EmployPh
Int
电话号
工资表(salary)
字段名
类型
备注
EmployID
char(20)
职工号
Notnull
EmbaseSalary
Int
基本工资
>=0
EmAddSalary
int
奖金
EmSubSalary
int
罚金
SalaryCard
int
工资卡
Notnull
RealSalary
int
实发工资
Notnull
3.2模块及窗体设计
3.2.1数据库模块设计
将数据库的连接包装在一个DBConnect类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。
下表是他的基本属性
文件名
成员变量
成员方法
database.java
publicstaticConnectioncn;
publicstaticStatementst;publicstaticResultSetrs;
publicstaticvoidcloseConn(Connectionconn);
publicstaticConnectiongetConn()throwsException{}
代码如下:
//创建数据库连接类DBConnect
packageJava_Design;
importjava.sql.*;
publicclassJDBConnect
{
//静态方法提高数据库的连接效率
publicstaticConnectiongetConn()throwsException
{
//加载JDBC驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
returnDriverManager.getConnection("jdbc:
sqlserver:
//localhost:
1433;"+"databasename=SalaryManagement","sa","1sjk");
}
//关闭连接
publicstaticvoidcloseConn(Connectionconn){
if(conn!
=null){
try{
conn.close();
}catch(Exceptione){
e.printStackTrace();
}}}
//关闭执行对象
publicstaticvoidcloseStatement(Statementstmt){
if(stmt!
=null){
try{stmt.close();
}catch(Exceptione){
e.printStackTrace();
}}}
//关闭结果集
publicstaticvoidcloseResultSet(ResultSetrs){
if(rs!
=null){
try{rs.close();}
catch(Exceptione){
e.printStackTrace();}}}
}
3.2.2用户登录识别模块
下表其他的基本属性
文件名
成员变量
成员方法
landing1.java
JLabeljlabel2=newJLabel("用户ID:
");
JLabeljlabel3=newJLabel("密码:
");
JTextFieldtext1=newJTextField();
publiclanding1(){}
判断用户名和密码是否正确的成员方法代码:
privateclassBHandlerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
name=text1.getText();
if(e.getSource()==button1){
if(text1.getText().trim().equals("")||text2.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"信息不能为空!
");
}
try{
ResultSetrs1=st.executeQuery("select*fromEmployeewhereEmployID='"+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().equals("管理员")){
dispose();
ManagementManagement1=newManagement(rs1.getString("EmployName").trim());
Management1.setVisible(true);
}elseJOptionPane.showMessageDialog(null,"非管理员!
");
}elseif(pers.isSelected()){//j普通用户
dispose();
PersonPerson1=newPerson(rs1.getString("EmployName").trim(),rs1.getString("EmployID").trim());
Person1.setVisible(true);
}
}elseJOptionPane.showMessageDialog(landing1.this,"passworderror!
");
}elseJOptionPane.showMessageDialog(landing1.this,"登录超时!
没有这个用户!
");
}catch(Exceptionex){
//利用消息对话框提示失败
JOptionPane.showMessageDialog(landing1.this,"登录超时!
没有这个用户!
");
text1.setText("");
text2.setText("");
}
}
elseif(e.getSource()==button2){
text1.setText("");
text2.setText("");
}
elseif(e.getSource()==jMenuItem1){//上页
dispose();
indexm=newindex();
m.setVisible(true);
}
elseif(e.getSource()==jMenuItem4){//退出
System.exit(0);
}
}
}
3.2.3管理员模块
下表其他的基本属性
文件名
成员变量
成员方法
Management.java
JMenujMenu0=newJMenu("系统_管理员界面");//菜单
JMenuItemjMenuItem1=newJMenuItem("主页");//子菜单
JButtonaddButton=newJButton("");
privateclassBHandlerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jMenuItem1){//主页}}
publicManagement(Stringname){}
代码:
publicManagement(Stringname){//传过来管理员的name
Name=name;
setTitle("WelcomeManagement_"+Name);//设置窗体标题
setSize(800,600);
setBounds(100,100,550,340);//设置窗体位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setContentPane(contentPane);//设置窗体内容面板
BHandlerh=newBHandler();//为组件注册监听器
indexBackgroundPbackgroundPanel=newindexBackgroundP();//创建背景面板
backgroundPanel.setImage(getToolkit().getImage(getClass().getResource("3.jpg")));//设置面板背景图片
contentPane.setBorder(newEmptyBorder(5,5,5,5));
contentPane.setLayout(newBorderLayout(0,0));//BorderLayout是用东西南北和中央
Button1.setToolTipText("查看所有职工资料");//用来设置鼠标停留时显示提示信息的
Button1.setIcon(newImageIcon(Management.class.getResource("5.png")));
addButton.setToolTipText("增添职员");//用来设置鼠标停留时显示提示信息的
addButton.setIcon(newImageIcon(Management.class.getResource("add.jpg")));
toolBar.add(addButton);
subButton.setToolTipText("删除资料");
subButton.setIcon(newImageIcon(Management.class.getResource("sub.png")));
toolBar.add(subButton);
resetButton.setToolTipText("修改信息");
resetButton.setIcon(newImageIcon(Management.class.getResource("reset.png")));
toolBar.add(resetButton);
findButton.setToolTipText("查找职员");
findButton.setIcon(newImageIcon(Management.class.getResource("find1.jpg")));
toolBar.add(findButton);
jMenuBar1.add(jMenu0);
jMenu0.add(jMenuItem1);//主页
jMenu0.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);jMenuItem2.addActionListener(h);jMenuItem3.addActionListener(h);
Button1.addActionListener(h);subButton.addActionListener(h);findButton.addActionListener(h);
addButton.addActionListener(h);resetButton.addActionListener(h);
}
privateclassBHandlerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jMenuItem1){//主页
dispose();
indexh=newindex();
h.setVisible(true);
//frame.dispose();
}
elseif(e.getSource()==jMenuItem2){//帮助
inti=0;
dispose();
helph1=newhelp(Name,i,"");//姓名权限编号
h1.setVisible(true);
}
elseif(e.getSource()==jMenuItem3){//退出
System.exit(0);
}
elseif(e.getSource()==Button1){//
dispose();
M_resetrese=newM_reset(Name);
rese.setVisible(true);
}
elseif(e.getSource()==addButton){//增
dispose();
Add_personfram1=newAdd_person(Name);
fram1.setVisible(true);
}
elseif(e.getSource()==subButton){//删
dispose();
Sub_personsu=newSub_person(Name);
su.setVisible(true);
}elseif(e.getSource()==resetButton){//改
dispose();
Reset_personre=newReset_person(Name);
re.setVisible(true);
}elseif(e.getSource()==findButton){//查
dispose();
Find_person2fin=newFind_person2(Name);
fin.setVisible(true);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 设计 实现 分析