职工信息管理系统.docx
《职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
职工信息管理系统
职工信息管理系统
1.可行性分析
在当今社会,互联网的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。
当前大量企业的员工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。
因此部分企业需求,设计企业员工信息管理系统,以帮助企业达到员工管理办公自动化、节约管理成本、提高企业工作效率的目的。
员工信息管理系统主要对企业员工的信息进行集中管理,方便企业建立一个完善的、强大的员工信息数据库,它是以SQL2000数据库作为开发平台,使用java编写程序、完成数据输入、修改、存储、调用查询等功能。
并使用SQL2000数据库形成数据,进行数据存储。
本项目开发计划旨在明确规开发过程,保证项目质量,统一小组成员对项目的理解,并对其开发工作提供指导;同时还作为项目通过评审的依据。
并说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。
1.1技术可行性
根据用户提出的系统功能、性能及实现系统的各项约束条件,根据新系统目标,来衡量所需技术是否具备。
本系统主要采用数据库管理方法,服务器选用MySQLServer数据库,他是它是目前能处理所有中小型系统最方便的流行数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。
它的灵活性、安全性和易用性为数据库编程提供了良好的条件。
硬件方面,该系统短小精悍对赢家没有太大要求,只要能够运行windows操作系统就可以很好的运行该软件。
1.2操作可行性
由系统分系可以看出本系统的开发在技术上具有可行性。
首先系统对于服务器端和客户端所要求的软、硬件的最低配置现在大多数的用户用机都能达到。
本系统对管理人员和用户没有任何的特殊要求,实际操作基本上以鼠标操作为主并辅以少量的键盘操作,操作方式很方便。
因此该项目具有良好的易用性。
用户只要具备简单的应用计算机的能力无论学历,无论背景,均可以使用本系统,用户界面上的按钮的功能明确,用户一看就可以了解怎么使用本系统,以及本系统能够完成的功能,因此本系统在操作上是可行的。
1.3经济可行性
估算新系统的成本效益分析,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用,估计新系统将获得的效益,估算开发成本是否回高于项目预期的全部经费。
并且,分析系统开发是否会对其它产品或利润带来一定影响。
本系统作为一个课程设计,没有必要考虑维护费用,以及本系统可获得的效益等问题。
1.4法律及社会效益方面的可行性
由于本系统只是一个课程设计,在图书馆查询相关资料因此不存在侵权等法律与社会影响方面的问题,不存在侵权级相应的法律问题。
关于效益方面,本系统仅仅是一个课程设计,只是为了提高自己的分析,设计能力,而非为了社会效益而编写设计,因此社会效益方面也是可行的。
2.需求分析
通过对职工信息管理系统的研究分析,根据可行性分析的方案和项目成员的讨论,编制本需求说明书。
本报告用于财职工信息管理系统的需求规格明确系统的功能需求,业务流程和性能要求以及与有关系统的接口关系,它将是系统最终实现和审评的根据之一,是进一步设计、开发的基础。
本报告的阅读围:
项目组的项目管理、软件开发和系统测试人员、指导老师等。
2.1需求概述
2.1.1目标
作为课程设计,本项目开发的人员、技术等资源非常有限,本项目开发的职工信息管理系统不能算是真正意义上的职工信息管理系统,只是简单的对职工的个人资料、工资信息进行电子系统管理,其主要为用户提供查询个人工资信息功能,针对的用户是某事业单位的职工信息管理,职工数量较少,系统功能简单,操作也要简单方便,要便于管理维护。
2.1.2用户特征
最终的用户是职工管理员和公司职工,管理员需要对用户资料进行增删改查和对自己密码修改等操作,要求管理员具备相应的计算机知识,如权限管理等。
公司职工是普通用户,具备一定的计算机操作即可。
2.2功能性需求
1、能够存储一定数量的用户信息,并方便有效的进行相应的用户资料操作和管理,这主要包括以下容。
(1)管理员对用户资料的录入、删除及修改;
(2)管理员对用户资料的查询;
(3)用户对用户资料的查询;
(4)员工基本工资表,反应员工的月基本工资;
(5)员工津贴表,反映员工津贴;
2、能够存储员工信息,并方便有效的进行员工信息和密码修改,保证员工信息的及时更新以及信息的安全性保证。
2.3非功能性需求
2.3.1性能需求
职工信息管理系统的使用者是公司职工,对于系统管理员的管理工作和职工的查询、注册等功能,性能要求都不是很高,本系统是简单小型的个人信息管理系统,只适用于小规模企业单位,使用的人员数量不大,并发数小,所以性能要求不是很严格。
2.3.2安全性需求
对于职工的信息管理关系到个人利益及公司的整体利益,所以安全性的要求比较高。
主要是要保证数据的完整性、一致性,控制权限,防止某人恶意攻击系统,修改原始记录。
同时对数据库中的数据需要定时备份,防止系统数据丢失。
2.3.3界面图形需求
要求系统操作界面美观大方,各功能操作具体步骤和方法显示清晰,人机交互页面友好。
2.4职工信息管理的大致过程数据流图
根据上述的功能要求,我们已经了解到这个系统必须做什么,从而设计了下面的数据流图以更好的去设计整个系统,见图2.4;
事务职工信息事务
职工信息
图2.4
又根据工资管理要求及用户需求调查分析,得到以下第一层数据流图,见图2.5;
图2.5
2.5系统设计
图2.6
3.概要设计
3.1系统模块划分
在需求分析中,我们已经完整而清晰地给出了关于职工信息管理系统所必须完成的功能,并用文档的形式记录了下来。
随着组成员的讨论和相关资料的不断收集,我们进入了关于系统实现的阶段,也即概要设计。
首先,我们根据之前的系统设计,决定将系统进行了模块化,使得我们在设计程序时更加清晰明了。
也即对职工信息进行详细的分化,分为系统模块、工资管
理模块、职工登陆模块、信息管理模块四大主模块;具体见下图3.1;
图3.1
3.2模块间的关系
3.2.1E-R图来说明工资信息管理系统的数据库概念模式
根据系统功能实现和所划分的模块,分析系统的实体以及实体间的关系,用E-R图来说明工资信息管理系统的数据库概念模式可得如下的关系图,见图3.2;
1n
m
图3.2实体之间关系E-R图
3.2.2关系模式
将以上E-R转换成如下关系模式:
员工(职工号,,密码)
工资(职工号,,基本工资,)
津贴(职工号,,奖金)
其中,标有下划线的字段表示为该数据表的主码,即主关键字。
在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。
工资信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。
每个表格表示在数据库中的一个表。
表一:
员工信息表:
列名
数据类型
可否取空
备注说明
no
Char(8)
NOTNULL
职工号(主键)
name
Char(10)
NOTNULL
职工
mi
Smallint
NOTNULL
登录密码
表二:
基本工资表:
列名
数据类型
可否取空
备注说明
no
Char(8)
NOTNULL
职工号(主键)
name
Char(10)
NOTNULL
职工
Jb
money
NOTNULL
基本工资
表三:
津贴信息表
列名
数据类型
可否为空
备注说明
no
Char(8)
NOTNULL
职工号(主键)
name
Char(10)
NOTNULL
职工
Jt
money
NOTNULL
津贴
4.详细设计
4.1程序中的数据结构
本系统中主要的数据结构就是职工的信息和职工的工资,包含职工号、、工资等,在处理过程中各项可以作为一个职工的不同属性来进行处理。
4.2各模块实现的算法
4.2.1职工信息管理模块
功能为:
财务部门相关人员录入、修改、删除、查询员工个人信息
部分基本算法实现:
publicclassYGGLextendsJFrameimplementsActionListener{
JFramef=newJFrame("员工信息管理");
JButtonb1=newJButton("添加新员工信息");
JButtonb2=newJButton("修改员工信息");
JButtonb3=newJButton("删除员工信息");
JButtonb4=newJButton("查询所有员工信息");
JButtonb5=newJButton("返回");
JTextFieldtf1=newJTextField(4);
JTextFieldtf2=newJTextField(4);
JTextFieldtf3=newJTextField(4);
JTextFieldtf4=newJTextField(4);
JTextFieldtf5=newJTextField(6);
JTextFieldtf6=newJTextField(7);
String[]cloum={"职工号","","津贴","月基本工资","月薪","登陆密码"};
Object[][]row=newObject[50][6];
JTabletable=newJTable(row,cloum);
JScrollPanescrollpane=newJScrollPane(table);
JSplitPanesplitpane=newJSplitPane(JSplitPane.VERTICAL_SPLIT);
voidcreate(){
JPanelp=(JPanel)f.getContentPane();
p.setLayout(newFlowLayout());
p.add(scrollpane);
p.add(splitpane);
JPanelp1=newJPanel();
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
JPanelp2=newJPanel();
p2.setBackground(Color.cyan);
p2.add(scrollpane);
p.setLayout(newFlowLayout());
p.add(newJLabel(""));
p.add(newJLabel("职工号"));
p.add(tf1);
p.add(newJLabel(""));
p.add(tf2);
p.add(newJLabel("津贴"));
p.add(tf3);
p.add(newJLabel("月基本工资"));
p.add(tf4);
p.add(newJLabel("登陆密码"));
p.add(tf5);
p.add(newJLabel("在此处输入职工号点击查询删除"));
p.add(tf6);
splitpane.add(p1,splitpane.TOP);
splitpane.add(p2,splitpane.BOTTOM);
splitpane.setDividerLocation(50);
p.setBackground(Color.CYAN);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
f.setBounds(200,100,600,600);
f.setResizable(true);//可以调整界面大小
f.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(b1.equals(e.getSource())){//添加新员工信息
Connectioncon;
Statementsql;
try{
Class.forName("org.gjt.mm.mysql.Driver");
}catch(ClassNotFoundExceptione1){
JOptionPane.showMessageDialog(this,"连接数据库失败!
");
}
try{
con=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/wagemanagement","root","jxb");
sql=con.createStatement();
StringinsertStr="INSERTINTOwelfare(no,name,jt)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"');";
sql.executeUpdate(insertStr);
StringinsertStr1="INSERTINTOwageinfo(no,name,jb)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf4.getText()+"');";
sql.executeUpdate(insertStr1);
StringinsertStr2="INSERTINTOworkerinfo(no,name,mi)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf5.getText()+"');";
sql.executeUpdate(insertStr2);
JOptionPane.showMessageDialog(this,"添加成功!
");
con.close();
}catch(SQLExceptione1){
JOptionPane.showMessageDialog(this,"添加失败!
");
}
}
if(b2.equals(e.getSource())){//修改员工信息
Connectioncon;
Statementsql;
try{
Class.forName("org.gjt.mm.mysql.Driver");
}catch(ClassNotFoundExceptione1){
JOptionPane.showMessageDialog(this,"连接数据库失败!
");
}
try{
con=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/wagemanagement","root","jxb");
sql=con.createStatement();
con=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/wagemanagement","root","jxb");
sql=con.createStatement();
StringupdateStr="UPDATEwelfareSETjt='"+tf3.getText()+"',name='"+tf2.getText()+"'whereno='"+tf1.getText()+"';";
sql.executeUpdate(updateStr);
StringupdateStr1="UPDATEwageinfoSETjb='"+tf4.getText()+"',name='"+tf2.getText()+"'whereno='"+tf1.getText()+"';";
sql.executeUpdate(updateStr1);
sql.executeUpdate(updateStr1);
StringupdateStr2="UPDATEworkerinfoSETname='"+tf2.getText()+"',mi='"+tf5.getText()+"'whereno='"+tf1.getText()+"';";
sql.executeUpdate(updateStr2);
JOptionPane.showMessageDialog(this,"修改成功!
");
con.close();
}catch(SQLExceptione1){
JOptionPane.showMessageDialog(this,"修改失败!
");
}
}
if(b3.equals(e.getSource())){//删除员工信息
Connectioncon;
Statementsql;
try{
Class.forName("org.gjt.mm.mysql.Driver");
}catch(ClassNotFoundExceptione1){
JOptionPane.showMessageDialog(this,"连接数据库失败!
");
}
try{
con=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/wagemanagement","root","jxb");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sql.executeUpdate("DELETEFROMwageinfowhereno='"+tf6.getText()+"';");
sql.executeUpdate("DELETEFROMwelfarewhereno='"+tf6.getText()+"';");
sql.executeUpdate("DELETEFROMworkerinfowhereno='"+tf6.getText()+"';");
JOptionPane.showMessageDialog(this,"删除成功!
");
con.close();
}catch(SQLExceptione1){
JOptionPane.showMessageDialog(this,"删除失败!
");
}
}
if(b4.equals(e.getSource())){//查询全部员工信息
Connectioncon;
Statementsql;
ResultSetrs;
try{
Class.forName("org.gjt.mm.mysql.Driver");
}catch(ClassNotFoundExceptione1){
JOptionPane.showMessageDialog(this,"连接数据库失败!
");
}
try{
con=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/wagemanagement","root","jxb");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if(b4.equals(e.getSource())){
for(inti=0;i<50;i++)
for(intj=0;j<4;j++)
table.setValueAt("",i,j);
rs=sql.executeQuery("selectdistinct*fromwageinfo,welfare,workerinfowherewageinfo.no=welfare.noandwageinfo.no=workerinfo.no;");
intk=-1;
while(rs.next()){
++k;
Stringno=rs.getString
(1);
Stringname=rs.getString
(2);
Stringjb=rs.getString(3);
Stringjt=rs.getString(6);
intsum=rs.getInt(3)+rs.getInt(6);
Stringmi=rs.getString(9);
table.setValueAt(no,k,0);
table.setValueAt(name,k,1);
table.setValueAt(jb,k,3);
table.setValueAt(jt,k,2);
table.setValueAt(sum,k,4);
table.setValueAt(mi,k,5);
}
}
}catch(SQLExceptione1){
JOptionPane.showMessageDialog(this,"查询失败!
");
}
}
if(b5.equals(e.getSource())){//返回
GZGLZJMgl=newGZGLZJM();
gl.create();
f.dispose();