数据库课程设计报告_工资管理系统.docx

上传人:小飞机 文档编号:1909060 上传时间:2022-12-25 格式:DOCX 页数:44 大小:1.43MB
返回 下载 相关 举报
数据库课程设计报告_工资管理系统.docx_第1页
第1页 / 共44页
数据库课程设计报告_工资管理系统.docx_第2页
第2页 / 共44页
数据库课程设计报告_工资管理系统.docx_第3页
第3页 / 共44页
数据库课程设计报告_工资管理系统.docx_第4页
第4页 / 共44页
数据库课程设计报告_工资管理系统.docx_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《数据库课程设计报告_工资管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告_工资管理系统.docx(44页珍藏版)》请在三一办公上搜索。

1、数 据 库课 程 设 计 报 告理论成绩实践成绩总成绩院系:信息管理学院 专业:软件工程 班级:软件Q1141 组长:李艳平(11150038)组员:孙俊珍(11150053)王 毅(11150132)左礼振(11150077)题目:工资管理系统 教师:石黎 时间:2013.11.23 目录一、设计目的- 1 -二、数据库功能分析- 1 -2.1 信息输入功能- 1 -2.2 数据修改删除功能- 2 -2.3 查询和统计功能- 2 -三、数据库设计- 2 -3.1 需求分析- 2 -3.2 概念分析(E-R图)- 3 -3.3 逻辑设计.- 4-3.4 物理设计- 7 -3.5 实施与维护-

2、7 -四、界面设计及相关代码- 8 -4.1 数据库的连接操作- 8 -4.2 登陆界面- 10 -4.3 管理员操作- 13 -4.4 职工操作- 35 -五、感想及总结- 39 -六、参考文献- 42 - - 41 -一、设计目的工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。手工进行工资发放工作,需要反复地进行抄写、计算,不仅花费财务人员大量的时间,而且往往由于抄写不慎,出现张冠李戴,或者由于计算机的疏忽,出现工资发放错误的现象。计算机进行工资发放工作,不仅能够保证工资核算正确无误、快速输出,而且还可以利用工资数据库对有关工资的各种信息进行统计,服务于财务部门其他方面的核

3、算和财务处理。实现企业员工工资管理的系统化、规范化和自动化,能够和人事管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。 二、数据库功能分析2.1 信息输入功能1) 输入员工的基本信息。包括:员工编号、姓名、性别、参加工作时间、所属部门、职位等基本信息2) 输入员工的工资信息。包括:岗位基本工资、津贴、考勤等相关信息。3) 输入员工的部门信息。包括:部门编号、部门名称、部门负责人、部门人数、部门与外界的联系方式。2.2 数据修改删除功能1) 修改和删除员工的基本信息。当单位人员的信息发生变化,如职称的改变,工作部门变动,或调离本单位等,系统应能修改员工的信息或将其从员工信

4、息表中删除。2) 修改和删除员工的工资信息。员工升职加薪、工资普调是企业中常见的事情,这就需要系统能方便对员工工资进行个别及批量的修改;如员工调离本单位,就应当从员工信息表中删除这个员工信息,将其工资信息表中相应的数据删除。3) 修改和删除部门信息。当一个部门的负责人或联系方式发生改变时,系统中相关部门信息也能做相应改变。2.3 查询和统计功能1) 能够查询指定员工的基本信息2) 能够查询部门信息3) 查询某个员工的工资信息4) 统计部门总人数、共工资、平均工资5) 工资表月工资记录的生成功能。生成当月所有员工或所有部门的工资记录,同时能进行员工工资的计算,即基本工资、奖励金额、应扣金额。三、

5、数据库设计3.1 需求分析:工资管理系统针对的用户是小型企业,工资项目比较少,较为固定,工资管理涉及企业管理的多个方面,如员工职务宫中变化、员工考勤情况、员工加班情况等等。根据这些信息,在每个月的某个固定时间,生成企业对全体员工的月工资。对于月工资,能够实现按照员工、部门、月、年进行统计分析,产生相应报表。需求信息整理(DFD图)如下: 第0层DFD图3.2 概念分析(E-R图) 3.3 逻辑设计1. 数据字典表1 Allowance (员工津贴)列 名数据类型可否为空说 明emp_novarchar(10)not null员工号(主键一)overtime_monthvarchar(20)no

6、t null加班时间(主键二)Overtime_daysintnull加班天数Overtime_payfloatnull加班工资 表2 Attendance (考勤信息统计)列 名数据类型可否为空说 明emp_novarchar(10)not null员工号(主键一)attend_monthvarchar(20)not null时间(主键二)Absent_daysintnull缺勤天数Absent_payfloatnull考勤工资 表3 BasicWages(工资标准表格)列 名数据类型可否为空说 明emp_posVarchar(10)not null工种(主键)basic_wageFloat

7、not null基本工资 表 4 EmpBasicInfo (员工基本情况表)列 名数据类型可否为空说 明emp_noVARCHAR(10)NOT NULL员工号(主键)emp_nameVARCHAR(40)NULL员工名称emp_posVARCHAR(40)NOT NULL职位sexChar(2)NULL性别department_idVARChar(10)NOT NULL员工部门emp_timeVARCHAR(20)NOT NULL入公司时间 telephone Char(11) Null 电话号码 2. 关系模式员工基本信息表(所属部门,入公司时间,电话号码)员工津贴表(员工号,加班时间,

8、加班天数,加班工资) 员工考勤表(员工号,时间,缺勤天数,考勤工资)基本工资表(职位,基本工资) 部门信息表(部门编号,部门名称,部门人数,联系方式)用户登陆(ID号,用户名,密码)3. 视图设计为及时更新数据,减少数据库后台操作,设计了部门工资情况及员工月工资情况两个视图部门工资情况视图: 员工月工资视图: A 3.4 物理设计数据库最终是要存储在物理设备上的,为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。数据库的物理结构依赖于给定的计算机系统和DBMS。3.5 实施与维护确定了数据库的逻辑结构和物理结构后,就可以用所选用的DBM

9、S提供的数据定义语言(DDL)来严格定义数据库,包括建立表、定义表的约束等。数据库系统投入运行后,对数据库设计进行评价、调整、修改等维护工作。四、界面设计及相关代码4.1 数据库的连接操作using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;namespace 工资管理系统 / / 用来连接数据库和进行有关数据库的操作 / class BaseOperate public static string username = ; pu

10、blic static string userID = ; public static string password = ; #region 建立数据库连接 / / 建立数据库连接 / / 返回SqlConnection对象 public SqlConnection getConnect() string str_sqlcon = server=xgxy5; database=MyWages; uid=sa; pwd=; SqlConnection myConnect = new SqlConnection(str_sqlcon); /连接数据库 return myConnect; #end

11、region #region 创建DataSet对象 / / 创建一个DataSet对象 / / SQL语句 / 表名 / 返回DataSet对象 public DataSet getDataSet(string str_sqlcom, string str_table) /数据库连接 SqlConnection sqlcon = this.getConnect(); /创建SQL适配器,用于填充DataSet和更新数据库的一组数据命令和一个数据库连接 SqlDataAdapter sqlda = new SqlDataAdapter(str_sqlcom, sqlcon); /创建SQL命令

12、生成器 SqlCommandBuilder thisBuild = new SqlCommandBuilder(sqlda); /数据的内存驻留表示形式,它表示一个数据集 DataSet myds = new DataSet(); /Fill方法用来填充DataSet或DataTable数据集,str_table是一个虚表 sqlda.Fill(myds, str_table); return myds; #endregion 4.1 登陆界面namespace 工资管理系统 public partial class Form1 : Form BaseOperate boperate = ne

13、w BaseOperate(); /声明一个BaseOperate类的一个对象,以调用其方法 public Form1() InitializeComponent(); #region 核对用户身份 public void IDverify(string str_sqltab, Form myform) string str_sqlcom = Select * from + str_sqltab; string str_vtab = vistual_table; DataSet thisDset = boperate.getDataSet(str_sqlcom, str_vtab); int

14、i = 0; foreach (DataRow row in thisDset.Tablesstr_vtab.Rows) if (textBox1.Text = rowuser_id.ToString() BaseOperate.userID = rowuser_id.ToString(); BaseOperate.username = rowusername.ToString(); if (textBox2.Text = rowpassword.ToString() BaseOperate.password = textBox2.Text; myform.Show(); break; els

15、e MessageBox.Show(密码错误!请重新输入!); textBox2.Text = ; else i = i + 1; if (i = thisDset.Tablesstr_vtab.Rows.Count) MessageBox.Show(无此用户信息,请重新输入!); textBox1.Text = ; textBox2.Text = ; textBox1.Focus(); #endregion #region 登陆信息检查 private void button1_Click(object sender, EventArgs e) if (textBox1.Text = & t

16、extBox2.Text = ) MessageBox.Show(请输入账户和密码!); textBox1.Focus(); else if (textBox1.Text = & textBox2.Text != ) MessageBox.Show(请输入账户名); textBox1.Focus(); else if (textBox1.Text != & textBox2.Text = ) MessageBox.Show(请输入密码!); textBox2.Focus(); else if (!radioButton1.Checked & !radioButton2.Checked) Mes

17、sageBox.Show(请选择登陆身份!); else if (radioButton1.Checked) if (textBox1.Text = 001 & textBox2.Text = 1001) Form2 myform2 = new Form2(); myform2.Show(); else MessageBox.Show(用户名和密码错误!); textBox1.Text = ; textBox2.Text = ; radioButton1.Checked = false; radioButton2.Checked = false; else if (radioButton2.C

18、hecked) Form3 myform3 = new Form3(); IDverify(Staff, myform3); #endregion #region 重置登陆信息 private void button2_Click(object sender, EventArgs e) textBox1.Text = ; textBox2.Text = ; radioButton1.Checked = false; radioButton2.Checked = false; textBox1.Focus(); #endregion 4.3 管理员操作1) 查询员工信息2) 查询部门信息3) 查

19、询津贴信息:4) 查询考勤信息:5)员工月工资汇总:6)部门平均工资:namespace 工资管理系统 public partial class Form2 : Form BaseOperate boperate = new BaseOperate(); /声明一个BaseOperate类的一个对象,以调用其方法 public Form2() InitializeComponent(); #region 显示员工信息 private void 员工信息ToolStripMenuItem_Click(object sender, EventArgs e) string str_sqlcom =

20、Select * from EmpBasicInfo; string str_vtab = vistual_table; DataSet thisDset = boperate.getDataSet(str_sqlcom, str_vtab); listBox1.Items.Clear(); listBox1.Items.Add(工号t姓名t 职位t性别t所属部门t入职时间t电话号码); foreach (DataRow row in thisDset.Tablesstr_vtab.Rows) listBox1.Items.Add(rowemp_no.ToString() + t + rowe

21、mp_name.ToString() + t + rowemp_pos.ToString() + t + rowsex.ToString() + t + rowdepart_name.ToString() + tt + rowemp_time.ToString() + t + rowtelephone.ToString(); #endregion #region 显示部门信息 private void 部门信息ToolStripMenuItem_Click(object sender, EventArgs e) string str_sqlcom = Select * from Departm

22、ent; string str_vtab = vistual_table; DataSet thisDset = boperate.getDataSet(str_sqlcom, str_vtab); listBox1.Items.Clear(); listBox1.Items.Add(部门号t部门名称t负责人t 职工人数t联系电话); foreach (DataRow row in thisDset.Tablesstr_vtab.Rows) listBox1.Items.Add(rowdepart_id.ToString() + t + rowdepart_name.ToString() +

23、tt + rowdepart_head.ToString() + t + rowdepart_emps.ToString() + tt + rowdepart_tel.ToString(); #endregion #region 显示部门信息 private void 津贴信息ToolStripMenuItem_Click(object sender, EventArgs e) string str_sqlcom = Select * from Allowance; string str_vtab = vistual_table; DataSet thisDset = boperate.get

24、DataSet(str_sqlcom, str_vtab); listBox1.Items.Clear(); listBox1.Items.Add(职工号tt加班月份t加班天数t加班工资); foreach (DataRow row in thisDset.Tablesstr_vtab.Rows) listBox1.Items.Add(rowemp_no.ToString() + tt + rowovertime_month.ToString() + tt + rowovertime_days.ToString() + tt + rowovertime_pay.ToString(); #end

25、region #region 出勤统计 private void 出勤统计ToolStripMenuItem_Click(object sender, EventArgs e) string str_sqlcom = Select * from Attendance; string str_vtab = vistual_table; DataSet thisDset = boperate.getDataSet(str_sqlcom, str_vtab); listBox1.Items.Clear(); listBox1.Items.Add(职工号tt考勤月份t缺勤天数t扣除工资); forea

26、ch (DataRow row in thisDset.Tablesstr_vtab.Rows) listBox1.Items.Add(rowemp_no.ToString() + tt + rowattend_month.ToString() + tt + rowabsent_days.ToString() + tt + rowabsent_pay.ToString(); #endregion #region 员工月工资汇总 private void 员工月工资汇总ToolStripMenuItem_Click(object sender, EventArgs e) string str_s

27、qlcom = Select * from MonthWages; string str_vtab = vistual_table; DataSet thisDset = boperate.getDataSet(str_sqlcom, str_vtab); listBox1.Items.Clear(); listBox1.Items.Add(工号t月份t工资t底薪t津贴t考勤); foreach (DataRow row in thisDset.Tablesstr_vtab.Rows) listBox1.Items.Add(rowemp_no.ToString() + t + rowpay_t

28、ime.ToString() + t + rowbasic_wage.ToString() + t + rowovertime_pay.ToString() + t + rowabsent_pay.ToString() + t + rowmonth_pay.ToString(); #endregion #region 各部门工资情况 private void 各部门工资情况ToolStripMenuItem_Click(object sender, EventArgs e) string str_sqlcom = select * from DepartAvgWage; string str_

29、vtab = vistual_table; DataSet thisDset = boperate.getDataSet(str_sqlcom, str_vtab); listBox1.Items.Clear(); listBox1.Items.Add(部门t 月份t 部门人数t部门总工资t部门平均工资); foreach (DataRow row in thisDset.Tablesstr_vtab.Rows) listBox1.Items.Add(rowdepart_name.ToString() + t + rowpay_month.ToString() + t + rowdepart_

30、emps.ToString() + tt + rowsum_wage.ToString() + t + rowavg_wage.ToString(); #endregion #region 更新数据 private void 更新数据ToolStripMenuItem_Click(object sender, EventArgs e) Form4 newform = new Form4(); newform.Show(); #endregion #region 退出 private void 退出ToolStripMenuItem_Click(object sender, EventArgs

31、e) this.Close(); #endregion 7)信息修改:namespace 工资管理系统 public partial class Form4 : Form BaseOperate boperate = new BaseOperate(); /声明一个BaseOperate类的一个对象,以调用其方法 public Form4() InitializeComponent(); #region 修改员工信息 / / 修改员工信息 / / / private void button1_Click_1(object sender, EventArgs e) if (textBox1.Te

32、xt = ) MessageBox.Show(请输入工号!); textBox1.Focus(); else string str_sqlcom = Select * from EmpBasicInfo; string str_vtab = vistual_table; DataSet thisDset = boperate.getDataSet(str_sqlcom, str_vtab); int search = 0; foreach (DataRow row in thisDset.Tablesstr_vtab.Rows) if (rowemp_no.ToString() = textBox1.Text) string no = textBox1.Text;

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号