1、软件工程作业人事工资管理系统学 院: 班 级: 学 号: 姓 名: 指导老师: 目录一、需求分析. .31、功能定义 .32、参与者列表. 33、用例图 .3二、分析 61、类图. 62、状态图 .73、活动图 .74、顺序图 .105、协作图 .12三、设计 141、流程图 .142、实体 E-R 图 .153、数据字典. 164、数据库 E-R 图 .17四、实现 171、源程序 .172、界面 .3五、总结与心得 3六、参考文献 3一、需求分析1、功能定义工资管理系统应完成以下功能:员工信息管理:包括员工基本信息,如工龄情况,学历情况,工作岗位,部门信息。实现对员工信息的输入、查询和修改
2、,对于转出、辞职、辞退、退休员工信息的删除。人事调动管理:包括对员工岗位和部门的查询与修改。工资管理:员工工资分为两部分:一部分是基本工资,根据员工的工龄和岗位设置;另一部分是动态工资,根据员工的考勤情况和工作评价情况计算,在计算出总工资后,还应扣除一些费用,如税款、公积金、养老金等。包括对工资的查询和修改。考勤管理:包括正常出勤、异常出勤(如请假、迟到、早退) 、加班。工作评价管理:员工评价信息分为两部分,一部分是主管经理对员工的评价信息,包括工作分工、完成情况、工作态度等;另一部分是同组员工的评价信息,包括工作态度、合作情况等。根据工作评价发放奖金。系统管理模块:对人事工资管理系统的维护、
3、升级和对用户的管理:用户信息添加、用户信息修改、用户信息删除和用户权限分配。2、 参与者列表 人事部门:对员工信息的管理,包括对员工信息的输入、查询、修改。对于转出、辞职、辞退、退休员工信息的删除。对人事调动的管理,包括对员工岗位和部门的查询与修改。财务部门:根据员工的考勤和工作评价,完成工资的核算并发放工资。系统管理员:对人事工资管理系统的维护、升级和对用户的管理:用户信息添加、用户信息修改、用户信息删除和用户权限分配。员工: 系统的主要使用者,登陆系统后,对自己的基本信息的查询和对自己工资的查询。考勤部门:对员工的出勤情况进行记录,对员工的工作进行评价。3、用例图图 1 财务部门用例图 2
4、 人事部门用例图 6 人事工资管理系统用例图一、 分析1、类图2、状态图图 1 系统状态图3、活动图图 1 用户注册活动图图 2 登录活动图图 3 员工信息查询活动图进入系统员工信息 提示不能操作无此权限有此权限添加员工信息删除员工信息添加删除确定修改员工信息修改图 4 对员工信息删除、添加、修改的活动图图 5 考勤管理活动图4、顺序图图 1 用户注册顺序图图 2 登录顺序图图 3 添加员工信息顺序图:业业业 业业业 业业业业业业1: 业业业4: 业业业业7: 业业业业2: 业业业业3: 业业5: 业业业业6: 业业业业8: 业业业业9: 业业业业 10: 业业13: 业业业 1: 业业业12
5、: 业图 4 人事调动顺序图图 5 考勤管理顺序图5、协作图图 1 用户注册协作图图 2 登录协作图图 3 添加员工信息协作图图 4 考勤管理协作图三、设计1、流程图2、实体 E-R 图评价情况岗位岗位编号部门编号员工号考勤员工号正常出勤天数 异常出勤天数加班天数员工学历员工学历岗位编号员工姓名婚姻状况员工性别员工号工龄 部门编号员工员工姓名隶属属于属于 考核依据部门编号部门部门名称部门负责人部门人数工资员工号工资年月应发工资奖励金额 扣除工资实发工资岗位名称获得3、数据字典(1) 、员工档案信息表:PERSONNEL.DBF字段 字段名 类型 宽度 说明1 员工号 字符型 3 数字2 员工姓
6、名 字符型 10 小于等于 5 个汉字3 员工性别 字符型 2 “男”或“女”4 员工学历 字符型 10 小于等于 5 个汉字5 婚姻状况 字符型 4 “已婚”或“未婚”6 工 龄 数值型 2 199 之间7 岗位编号 数值型 2 199 之间8 部门编号 数值型 2 199 之间(2) 、工资设置表:COURSE.DBF字段 字段名 类型 宽度 说明1 员工号 数值型 3 数字2 工资年月 字符型 20 _年_月_日3 应发工资 数值型 5 1-99999 之间4 奖励金额 数值型 4 1-9999 之间5 扣除工资 数值型 4 19999 之间6 实发工资 数值型 5 1-99999 之间
7、(3) 、岗位设置表:RANK.DBF字段 字段名 类型 宽度 说明1 岗位编号 数值型 2 199 之间2 岗位名称 字符型 14 小于等于 7 个汉字3 部门编号 数值型 2 199 之间(4) 、部门设置表:APARTMENT.DBF 字段 字段名 类型 宽度 说明1 部门编号 数值型 2 1-99 之间2 部门名称 字符型 14 小于等于 7 个汉字3 部门负责人 字符型 10 小于等于 5 个汉字4 部门人数 数值型 4 19999 之间(5) 、考勤设置表:KAOQIN.DBF字段 字段名 类型 宽度 说明1 员工号 数值型 3 数字2 正常出勤天数 数值型 3 1999 之间3
8、异常出勤天数 数值型 3 1999 之间4 加班天数 数值型 3 1999 之间5 评价情况 字符型 4 优秀、良好、中等、差4、数据库 E-R 图业业业 = 业业业业业业业业 = 业业业业业业业 = 业业业业业业 = 业业业业业业 = 业业业业业业 = 业业业业业业业业业业业业业 CHAR(3)业业业业 CHAR(10)业业业业 CHAR(2)业业业业 CHAR(10)业业业业 CHAR(4)业 业 SMALLINT业业业业 SMALLINT业业业业 SMALLINT业业业业业业业业 SMALLINT业业业业 CHAR(20)业业业业 SMALLINT业业业业 SMALLINT业业业业 SM
9、ALLINT业业业业 SMALLINT业业业业业业业业 smallint业业业业 smallint业业业业 smallint业业业业 smallint业业业业业业业业业 SMALLINT业业业 CHAR(3)业业业业 CHAR(14)业业业业业 CHAR(10)业业业业 SMALLINT业业业业业业业业业 SMALLINT业业业 CHAR(3)业业业业 CHAR(14)业业业业 SMALLINT四、实现1、源代码(1)登录界面代码设计本代码实现Form1,作用是对登录用户审核,将登录用户信息与数据库中用户表相比对,存在此用户且信息正确则进入,否则登录失败。using System;using
10、System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.OleDb;namespace 工资管理系统public partial class Form1 : Formpublic static string password;public static string username;public For
11、m1()InitializeComponent();public int CheckUsers()/连接数据库进行查询username = textBox1.Text.ToString();password = textBox2.Text.ToString();string Afile = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“; /access文件OleDbConnection AconnStr = new OleDbConne
12、ction(Afile);OleDbCommand Acmd=new OleDbCommand(“select * from user where userName=“+username+“ and password=“+password+“,AconnStr);OleDbDataReader odr=null;AconnStr.Open();tryodr=Acmd.ExecuteReader();catch (Exception ex)if (ex != null) return 0; while (odr.Read()return 1;odr.Close();AconnStr.Close(
13、);return 0;private void button1_Click(object sender, EventArgs e)/对登录信息进行审核,正确则进入,否则登录失败if(textBox1.Text=“|textBox2.Text=“)MessageBox.Show(“请输入信息“,“ 信息提示“);else if (CheckUsers()=1)this.Hide();Form6 form6 = new Form6();form6.Show();elseMessageBox.Show(“你输入的用户名或口令不正确!“,“信息提示“);private void button2_Cli
14、ck(object sender, EventArgs e)textBox1.Text = “;textBox2.Text = “;(2)员工信息更新界面本代码实现Form3,作用是对员工信息进行更新,可以员工信息作查找,添加,删除,修改等操作,还可以查询工资信息,并能计算总工资。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using Syst
15、em.Windows.Forms;using System.Data.OleDb;namespace 工资管理系统public partial class Form3 : Formpublic static int string1, string2, string3, day;public Form3()InitializeComponent();private void Form3_Load(object sender, EventArgs e)loadUsers();private void loadUsers()/连接数据库string connectionString = “Provi
16、der=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“; /access文件连接 string OleDbString = “select * from Message“;OleDbConnection connection = new OleDbConnection(connectionString);DataSet ds = new DataSet();tryconnection.Open();OleDbDataAdapter command = new
17、 OleDbDataAdapter(OleDbString, connection);command.Fill(ds, “Message“);catch (OleDbException ex)throw new Exception(ex.Message);/将表绑定到dataGridView1控件this.dataGridView1.DataSource = ds.Tables0;this.dataGridView1.Columns0.ReadOnly = true;/先0列,即用户名列为关键定不许修改connection.Close();private void pictureBox1_Cl
18、ick(object sender, EventArgs e)private void btnDelete_Click(object sender, EventArgs e)string connectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“;string SQLString = “delete from Message where sno=“ + this.dataGridView1.CurrentRow.
19、Cells“Sno“.Value+ “;OleDbConnection connection = new OleDbConnection(connectionString);connection.Open();OleDbCommand command = new OleDbCommand(SQLString, connection);if (command.ExecuteNonQuery()=1)MessageBox.Show(“删除成功!“);if (connection != null)connection.Close();loadUsers();private void Addbutto
20、n_Click(object sender, EventArgs e)/连接数据库实现添加操作。if (textBox1.Text = “ | textBox2.Text = “)MessageBox.Show(“请输入要添加的信息!“, “提示信息“);elsestring connectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“;string SQLString = “insert into Message
21、(Sno,员工姓名) values(“ + this.textBox2.Text + “,“ + this.textBox1.Text + “)“;OleDbConnection connection = new OleDbConnection(connectionString);connection.Open();OleDbCommand command = new OleDbCommand(SQLString, connection);if (command.ExecuteNonQuery() = 1)MessageBox.Show(“添加成功!“);if (connection != n
22、ull)connection.Close();loadUsers();private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)/当前修改过的值string updateValue = dataGridView1.Rowse.RowIndex.Cellse.ColumnIndex.Value.ToString();/当前修改行的用户名(关键字)string username = dataGridView1.Rowse.RowIndex.Cells“Sno“.Value.ToString()
23、;string colName = dataGridView1.Columnse.ColumnIndex.Name;/修改值对应的列名string OleDbString = “update Message set “ + colName + “=“ + updateValue + “ where Sno=“ + username + “;string connectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“;
24、OleDbConnection connection = new OleDbConnection(connectionString);connection.Open();OleDbCommand command = new OleDbCommand(OleDbString, connection);if (command.ExecuteNonQuery() = 1)if (connection != null)connection.Close();private void button4_Click(object sender, EventArgs e)/实现操作信息if (MessageBo
25、x.Show(“确定退出?“, “ 确认信息“, MessageBoxButtons.YesNo) = DialogResult.Yes)Application.Exit();private void button5_Click(object sender, EventArgs e)this.Hide();Form4 form4 = new Form4();form4.Show();private void button2_Click(object sender, EventArgs e)loadUsers();MessageBox.Show(“更新成功“);private void butt
26、on1_Click(object sender, EventArgs e)if (textBox1.Text = “ | textBox2.Text = “)MessageBox.Show(“请输入要查找的信息!“, “提示信息“);elsestring connectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“; /access文件string OleDbString = “select * from Mess
27、age where Sno=“ + this.textBox2.Text + “;OleDbConnection connection = new OleDbConnection(connectionString);DataSet ds = new DataSet();tryconnection.Open();OleDbDataAdapter command = new OleDbDataAdapter(OleDbString, connection);command.Fill(ds, “Message“);catch (OleDbException ex)throw new Exceptio
28、n(ex.Message);/将表绑定到dataGridView1控件this.dataGridView1.DataSource = ds.Tables0;this.dataGridView1.Columns0.ReadOnly = true;/先0列,即用户名列为关键定不许修改connection.Close();private void Form3_FormClosing(object sender, FormClosingEventArgs e)Application.Exit();public string Findstring1()string Afile = “Provider=M
29、icrosoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“; /access文件OleDbConnection AconnStr = new OleDbConnection(Afile);OleDbCommand Acmd = new OleDbCommand(“select 基本工资 from Message,工资 where Sno=“+ textBox2.Text +“ and Message.员工工种=工资.员工工种 and Message.工资等级=工资 .工资
30、等级“, AconnStr);OleDbDataReader odr = null;AconnStr.Open();tryodr = Acmd.ExecuteReader();catch (Exception ex)if (ex != null) return null;if (odr != null)while (odr.Read() return odr0.ToString(); odr.Close();AconnStr.Close();return null;public string Findday()string Afile = “Provider=Microsoft.Jet.OLE
31、DB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“; /access文件OleDbConnection AconnStr = new OleDbConnection(Afile);OleDbCommand Acmd = new OleDbCommand(“select 考勤天数 from Message where Sno=“ + textBox2.Text + “, AconnStr);OleDbDataReader odr = null;AconnStr.Open();tryodr = Ac
32、md.ExecuteReader();catch (Exception ex)if (ex != null) return null;if (odr != null)while (odr.Read() return odr0.ToString(); odr.Close();AconnStr.Close();return null;public string Findstring2()string Afile = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security
33、Info=True“; /access文件OleDbConnection AconnStr = new OleDbConnection(Afile);OleDbCommand Acmd = new OleDbCommand(“select 日工资 from Message,工资 where Sno=“ + textBox2.Text + “and Message.员工工种=工资.员工工种 and Message.工资等级=工资 .工资等级“, AconnStr);OleDbDataReader odr = null;AconnStr.Open();tryodr = Acmd.ExecuteRe
34、ader();catch (Exception ex)if (ex != null) return null;if (odr != null)while (odr.Read() return odr0.ToString(); odr.Close();AconnStr.Close();return null;public string Findstring3()string Afile = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:UserslenovoDesktopC#db.mdb;Persist Security Info=True“;
35、/access文件OleDbConnection AconnStr = new OleDbConnection(Afile);OleDbCommand Acmd = new OleDbCommand(“select 员工津贴 from Message,工资 where Sno=“ + textBox2.Text + “and Message.员工工种=工资.员工工种 and Message.工资等级=工资 .工资等级“, AconnStr);OleDbDataReader odr = null;AconnStr.Open();tryodr = Acmd.ExecuteReader();catc
36、h (Exception ex)if (ex != null) return null;if (odr != null)while (odr.Read() return odr0.ToString(); odr.Close();AconnStr.Close();return null;private void button3_Click(object sender, EventArgs e)if (textBox1.Text=“|textBox2.Text = “)MessageBox.Show(“请输入要查找的信息!“,“提示信息“);elsestring1 = int.Parse(Find
37、string1().ToString();string2 = int.Parse(Findstring2().ToString();day = int.Parse(Findday().ToString();string3 = int.Parse(Findstring3().ToString();int salary;salary = string1 + string2 * day + string3;MessageBox.Show(“本月工资为:“ + salary + “元“, “月工资信息“);private void button6_Click(object sender, EventA
38、rgs e)this.Hide();Form6 form6 = new Form6();form6.Show();(3)工资更新界面本代码实现Form4,主要是实现工资信息的更新,对工资信息进行查找、添加、修改、删除等操作。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 工资
39、管理系统public partial class Form6 : Formpublic Form6()InitializeComponent();private void button1_Click(object sender, EventArgs e)this.Hide();Form2 form2 = new Form2();form2.Show();private void button2_Click(object sender, EventArgs e)this.Hide();Form3 form3 = new Form3();form3.Show();private void Form
40、6_FormClosing(object sender, FormClosingEventArgs e)Application.Exit();private void Form6_Load(object sender, EventArgs e)label3.Text = Form1.username;3、 界面(1)登录界面登录界面主要有用户名和密码组成,还有一些标题设置,登录和重置按钮组成。(2)员工信息更新界面实现对员工信息的删除、更新、添加、查找等操作,并能查看工资信息和月工资。(3)工资信息更新界面此界面实现对工资信息的更新,可以实现对工资的查找、删除、更新和添加等操作。五、总结与心得
41、通过这次案例的练习,巩固与扩充了我课堂上学到的知识,使我掌握了建模设计的方法和步骤,同时,独立思考的能力也有了提高。在这次案例的练习中,我学会画用例图、类图、顺序图等,最主要的收获是我学会了一种快速有效的学习方法。以往的学习都是老师讲学生记,不懂得地方就靠解答大量习题帮助记忆,而这次案例的练习让我把被动接受转变为主动学习,不再是用学到的知识解题,而是在实际运用时遇到什么学什么,重在把知识应用于实际。在做这次案例的过程中我遇到了许多困难,在同学的帮助下和自己上网查了许多资料后,终于将这些困难解决,但案例仍然存在不足,主要是缺乏新颖点和功能不完善。案例没有不同于其他人事工资管理系统的特色,即没有闪光点。而且案例的功能不全,还可以增加一些功能,比如与银行有关的功能:工资代发,贷款等等。所以案例还存在改进的地方。总之,通过这次案例的练习,让我认识到了 uml 的重要性以及自己的知识还有限,以后还要更加努力的学习。六、参考文献1、软件工程- 面向对象和传统的方法(第 8 版) Stephen R. Schach 著 机械工业出版社2、类图百度百科3、uml 类图几种关系的总结open 开发经验库4、uml 类图关系大全riky博客园