资源描述
职工信息管理系统
1.可行性分析
在当今社会,互联网发展,给人们工作和生活带来了极大便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率首选。
当前大量公司员工管理尚处在手工作业阶段,不但效率低下,还经常由于管理不慎而浮现纰漏。因而某些公司需求,设计公司员工信息管理系统,以协助公司达到员工管理办公自动化、节约管理成本、提高公司工作效率目。员工信息管理系统重要对公司员工信息进行集中管理,以便公司建立一种完善、强大员工信息数据库,它是以SQL数据库作为开发平台,使用java编写程序、完毕数据输入、修改、存储、调用查询等功能。并使用SQL 数据库形成数据,进行数据存储。本项目开发筹划旨在明确规范开发过程,保证项目质量,统一小构成员对项目理解,并对其开发工作提供指引;同步还作为项目通过评审根据。并阐明该软件开发项目实当前技术上、经济上和社会因素上可行性,评述为了合理地达到开发目的可供选取各种也许实行方案,阐明并论证所选定实行方案理由。
1.1 技术可行性
依照顾客提出系统功能、性能及实现系统各项约束条件,依照新系统目的,来衡量所需技术与否具备。本系统重要采用数据库管理办法,服务器选用MySQL Server数据库,她是它是当前能解决所有中小型系统最以便流行数据库,它可以解决大量数据,同步保持数据完整性并提供许多高档管理功能。它灵活性、安全性和易用性为数据库编程提供了良好条件。硬件方面,该系统短小精悍对赢家没有太大规定,只要可以运营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.1 E-R图来阐明工资信息管理系统数据库概念模式
依照系统功能实现和所划分模块,分析系统实体以及实体间关系,用E-R图来阐明工资信息管理系统数据库概念模式可得如下关系图,见图3.2;
姓名
基本工资
职工号
工资
员工
职工号
领取
1 n
m
影响
姓名
津贴
领取
姓名
津贴
密码
职工号
图3.2实体之间关系E-R图
3.2.2关系模式
将以上E-R转换成如下关系模式:
员工(职工号,姓名,密码)
工资(职工号,姓名,基本工资,)
津贴(职工号,姓名,奖金)
其中,标有下划线字段表达为该数据表主码,即主核心字。在上面实体以及实体之间关系基本上,形成数据库中表格以及各个表格之间关系。
工资信息管理系统数据库中各个表格设计成果如下面几种表格所示。每个表格表达在数据库中一种表。
表一:员工信息表:
列名
数据类型
可否取空
备注阐明
no
Char ( 8 )
NOT NULL
职工号(主键)
name
Char(10)
NOT NULL
职工姓名
mi
Smallint
NOT NULL
登录密码
表二:基本工资表:
列名
数据类型
可否取空
备注阐明
no
Char ( 8 )
NOT NULL
职工号(主键)
name
Char(10)
NOT NULL
职工姓名
Jb
money
NOT NULL
基本工资
表三:津贴信息表
列名
数据类型
可否为空
备注阐明
no
Char ( 8 )
NOT NULL
职工号(主键)
name
Char(10)
NOT NULL
职工姓名
Jt
money
NOT NULL
津贴
4. 详细设计
4.1程序中数据构造
本系统中重要数据构造就是职工信息和职工工资,包括职工号、姓名、工资等,在解决过程中各项可以作为一种职工不同属性来进行解决。
4.2各模块实现算法
4.2.1职工信息管理模块
功能为:财务部门有关人员录入、修改、删除、查询员工个人信息
某些基本算法实现:
public class YGGL extends JFrame implements ActionListener {
JFrame f = new JFrame("员工信息管理");
JButton b1 = new JButton("添加新员工信息");
JButton b2 = new JButton("修改员工信息");
JButton b3 = new JButton("删除员工信息");
JButton b4 = new JButton("查询所有员工信息");
JButton b5 = new JButton("返回");
JTextField tf1 = new JTextField(4);
JTextField tf2 = new JTextField(4);
JTextField tf3 = new JTextField(4);
JTextField tf4 = new JTextField(4);
JTextField tf5 = new JTextField(6);
JTextField tf6 = new JTextField(7);
String[] cloum = { "职工号","姓名","津贴","月基本工资","月薪","登陆密码"};
Object[][] row = new Object[50][6];
JTable table = new JTable(row,cloum);
JScrollPane scrollpane = new JScrollPane(table);
JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
void create() {
JPanel p = (JPanel) f.getContentPane();
p.setLayout(new FlowLayout());
p.add(scrollpane);
p.add(splitpane);
JPanel p1 = new JPanel();
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
JPanel p2 = new JPanel();
p2.setBackground(Color.cyan);
p2.add(scrollpane);
p.setLayout(new FlowLayout());
p.add(new JLabel(""));
p.add(new JLabel("职工号"));
p.add(tf1);
p.add(new JLabel("姓名"));
p.add(tf2);
p.add(new JLabel("津贴"));
p.add(tf3);
p.add(new JLabel("月基本工资"));
p.add(tf4);
p.add(new JLabel("登陆密码"));
p.add(tf5);
p.add(new JLabel(" 在此处输入职工号点击查询删除"));
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);
}
public void actionPerformed(ActionEvent e) {
if (b1.equals(e.getSource())) { // 添加新员工信息
Connection con;
Statement sql;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
JOptionPane.showMessageDialog(this,"连接数据库失败!");
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement();
String insertStr = "INSERT INTO welfare (no,name,jt)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"');";
sql.executeUpdate(insertStr);
String insertStr1 = "INSERT INTO wageinfo (no,name,jb)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf4.getText()+"');";
sql.executeUpdate(insertStr1);
String insertStr2 = "INSERT INTO workerinfo (no,name,mi)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf5.getText()+"');";
sql.executeUpdate(insertStr2);
JOptionPane.showMessageDialog(this,"添加成功!");
con.close();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this,"添加失败!");
}
}
if (b2.equals(e.getSource())) {// 修改员工信息
Connection con;
Statement sql;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
JOptionPane.showMessageDialog(this,"连接数据库失败!");
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement();
String updateStr = "UPDATE welfare SET jt='"+tf3.getText()+"',name='"+tf2.getText()+"'where no='"+tf1.getText()+"';";
sql.executeUpdate(updateStr);
String updateStr1 = "UPDATE wageinfo SET jb='"+tf4.getText()+"',name='"+tf2.getText()+"'where no='"+tf1.getText()+"';";
sql.executeUpdate(updateStr1);
sql.executeUpdate(updateStr1);
String updateStr2 = "UPDATE workerinfo SET name='"+tf2.getText()+"',mi='"+tf5.getText()+"'where no='"+tf1.getText()+"';";
sql.executeUpdate(updateStr2);
JOptionPane.showMessageDialog(this,"修改成功!");
con.close();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this,"修改失败!");
}
}
if (b3.equals(e.getSource())) {// 删除员工信息
Connection con;
Statement sql;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
JOptionPane.showMessageDialog(this,"连接数据库失败!");
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sql.executeUpdate("DELETE FROM wageinfo where no='"+tf6.getText()+"';");
sql.executeUpdate("DELETE FROM welfare where no='"+tf6.getText()+"';");
sql.executeUpdate("DELETE FROM workerinfo where no='"+tf6.getText()+"';");
JOptionPane.showMessageDialog(this,"删除成功!");
con.close();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this,"删除失败!");
}
}
if (b4.equals(e.getSource())) {// 查询所有员工信息
Connection con;
Statement sql;
ResultSet rs;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
JOptionPane.showMessageDialog(this,"连接数据库失败!");
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if (b4.equals(e.getSource())) {
for (int i = 0;i < 50;i++)
for (int j = 0;j < 4;j++)
table.setValueAt("",i,j);
rs = sql.executeQuery("select distinct * from wageinfo ,welfare,workerinfo where wageinfo.no=welfare.no and wageinfo.no=workerinfo.no ;");
int k = -1;
while (rs.next()) {
++k;
String no = rs.getString(1);
String name = rs.getString(2);
String jb = rs.getString(3);
String jt = rs.getString(6);
int sum= rs.getInt(3)+rs.getInt(6);
String mi = 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 (SQLException e1) {
JOptionPane.showMessageDialog(this,"查询失败!");
}
}
if (b5.equals(e.getSource())) {// 返回
GZGLZJM gl=new GZGLZJM();
gl.create();
f.dispose();
}
}
}
4.2.2职工工资管理模块
功能为:依照工资生成公式,按照员工考勤状况及各种体现按月生成相应工资;财务部门有关人员能录入、修改、删除、查询每月每个员工工资信息以及工资汇总;员工本人能查询自己工资信息以及工资汇总;
某些基本算法实现:
public class GZGL extends JFrame implements ActionListener {
JFrame f = new JFrame("工资管理");
JButton b1 = new JButton("录入");
JButton b2 = new JButton("修改");
JButton b3 = new JButton("删除");
JButton b4 = new JButton("查询所有");
JButton b5 = new JButton("返回");
JTextField tf1 = new JTextField(4);
JTextField tf2 = new JTextField(4);
JTextField tf3 = new JTextField(4);
JTextField tf4 = new JTextField(4);
JTextField tf5 = new JTextField(6);
JTextField tf6 = new JTextField(7);
String[] cloum = { "职工号","姓名","津贴","月基本工资","月薪"};
Object[][] row = new Object[50][5];
JTable table = new JTable(row,cloum);
JScrollPane scrollpane = new JScrollPane(table);
JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
void create() {
JPanel p = (JPanel) f.getContentPane();
p.setLayout(new FlowLayout());
p.add(scrollpane);
p.add(splitpane);
JPanel p1 = new JPanel();
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
JPanel p2 = new JPanel();
p2.setBackground(Color.cyan);
p2.add(scrollpane);
JPanel p3 = new JPanel();
p.setLayout(new FlowLayout());
p.add(new JLabel(""));
p.add(new JLabel("职工号"));
p.add(tf1);
p.add(new JLabel("姓名"));
p.add(tf2);
p.add(new JLabel("津贴"));
p.add(tf3);
p.add(new JLabel("月基本工资"));
p.add(tf4);
p.add(new JLabel("月薪"));
p.add(tf5);
p.add(new JLabel(" 在此处输入职工号点击查询删除"));
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,500,600);
f.setResizable(true);// 可以调节界面大小
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (b1.equals(e.getSource())) { // 录入
Connection con;
Statement sql;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
System.out.println("" + e1);
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement();
String insertStr = "INSERT INTO welfare (no,name,jt)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"');";
sql.executeUpdate(insertStr);
String insertStr1 = "INSERT INTO wageinfo (no,name,jb)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf4.getText()+"');";
sql.executeUpdate(insertStr1);
con.close();
JOptionPane.showMessageDialog(this,"入录成功!");
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this,"入录失败!");
}
}
if (b2.equals(e.getSource())) {// 修改
Connection con;
Statement sql;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
System.out.println("" + e1);
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement();
String updateStr = "UPDATE welfare SET jt='"+tf3.getText()+"',name='"+tf2.getText()+"'where no='"+tf1.getText()+"';";
sql.executeUpdate(updateStr);
String updateStr1 = "UPDATE wageinfo SET jb='"+tf4.getText()+"',name='"+tf2.getText()+"'where no='"+tf1.getText()+"';";
sql.executeUpdate(updateStr1);
JOptionPane.showMessageDialog(this,"修改成功!");
con.close();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this,"信息不存在!");
}
}
if (b3.equals(e.getSource())) {// 删除
Connection con;
Statement sql;
ResultSet rs;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
System.out.println("" + e1);
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sql.executeUpdate("DELETE FROM wageinfo where no='"+tf6.getText()+"';");
sql.executeUpdate("DELETE FROM welfare where no='"+tf6.getText()+"';");
JOptionPane.showMessageDialog(this,"删除成功!");
con.close();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this,"删除失败!");
}
}
if (b4.equals(e.getSource())) {// 查询所有
Connection con;
Statement sql;
ResultSet rs;
//Vector vector = new
展开阅读全文