工资管理系统概述1_第1页
工资管理系统概述1_第2页
工资管理系统概述1_第3页
工资管理系统概述1_第4页
工资管理系统概述1_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数 据 库课 程 设 计 报 告理论成绩实践成绩总成绩院系:信息管理学院 专业:软件工程 班级:软件Q1141 组长:李艳平()组员:孙俊珍()王 毅()左礼振()题目:工资管理系统 教师:石黎 时间: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 实施与维护- 7 -四、界面设计及相关代码- 8 -4.1 数据库的连接操作- 8 -4.2 登陆界面- 10 -4.3 管理员操作- 13 -4.4 职工操作- 35 -五、感想及总结- 39 -六、参考文献- 42 - 一、设计目的工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。手工进行工资发放工作,需要反复地进行抄写、计算,不仅花费财务人员大量的时间,而且往往由于抄写不慎,出现张冠李戴,或者由于计算机的疏忽,出现工资发放错误的现象。计算机进行工资发放工作,不仅能够保证工资核算正确无误、快速输出,而且还可以利用工资数据库对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理。实现企业员工工资管理的系统化、规范化和自动化,能够和人事管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。 二、数据库功能分析2.1 信息输入功能1) 输入员工的基本信息。包括:员工编号、姓名、性别、参加工作时间、所属部门、职位等基本信息2) 输入员工的工资信息。包括:岗位基本工资、津贴、考勤等相关信息。3) 输入员工的部门信息。包括:部门编号、部门名称、部门负责人、部门人数、部门与外界的联系方式。2.2 数据修改删除功能1) 修改和删除员工的基本信息。当单位人员的信息发生变化,如职称的改变,工作部门变动,或调离本单位等,系统应能修改员工的信息或将其从员工信息表中删除。2) 修改和删除员工的工资信息。员工升职加薪、工资普调是企业中常见的事情,这就需要系统能方便对员工工资进行个别及批量的修改;如员工调离本单位,就应当从员工信息表中删除这个员工信息,将其工资信息表中相应的数据删除。3) 修改和删除部门信息。当一个部门的负责人或联系方式发生改变时,系统中相关部门信息也能做相应改变。2.3 查询和统计功能1) 能够查询指定员工的基本信息2) 能够查询部门信息3) 查询某个员工的工资信息4) 统计部门总人数、共工资、平均工资5) 工资表月工资记录的生成功能。生成当月所有员工或所有部门的工资记录,同时能进行员工工资的计算,即基本工资、奖励金额、应扣金额。三、数据库设计3.1 需求分析:工资管理系统针对的用户是小型企业,工资项目比较少,较为固定,工资管理涉及企业管理的多个方面,如员工职务宫中变化、员工考勤情况、员工加班情况等等。根据这些信息,在每个月的某个固定时间,生成企业对全体员工的月工资。对于月工资,能够实现按照员工、部门、月、年进行统计分析,产生相应报表。需求信息整理(DFD图)如下: 第0层DFD图3.2 概念分析(E-R图) 3.3 逻辑设计1. 数据字典表1 Allowance (员工津贴)列 名数据类型可否为空说 明emp_novarchar(10)not null员工号(主键一)overtime_monthvarchar(20)not 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_wageFloatnot 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. 关系模式员工基本信息表(所属部门,入公司时间,电话号码)员工津贴表(员工号,加班时间,加班天数,加班工资) 员工考勤表(员工号,时间,缺勤天数,考勤工资)基本工资表(职位,基本工资) 部门信息表(部门编号,部门名称,部门人数,联系方式)用户登陆(ID号,用户名,密码)3. 视图设计为及时更新数据,减少数据库后台操作,设计了部门工资情况及员工月工资情况两个视图部门工资情况视图: 员工月工资视图: A 3.4 物理设计数据库最终是要存储在物理设备上的,为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。数据库的物理结构依赖于给定的计算机系统和DBMS。3.5 实施与维护确定了数据库的逻辑结构和物理结构后,就可以用所选用的DBMS提供的数据定义语言(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 = ; public 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; #endregion #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命令生成器 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 = new 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 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; else 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 = & textBox2.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) MessageBox.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.Checked) 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) 查询津贴信息: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 = 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 + rowemp_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 Department; 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() + 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.getDataSet(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(); #endregion #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扣除工资); foreach (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_sqlcom = 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_time.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_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_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 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.Text = ) 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; string name = ; if (textBox2.Text = ) name = rowemp_name.ToString(); else name = textBox2.Text.ToString(); string pos = ; if (textBox3.Text = ) pos = rowemp_pos.ToString(); else pos = textBox3.Text.ToString(); string Sex = ; if (!radioButton1.Checked & !radioButton2.Checked) Sex = rowsex.ToString(); else if (radioButton1.Checked) Sex = radioButton1.Text.ToString(); else if (radioButton2.Checked) Sex = radioButton2.Text.ToString(); string depart = ; if (comboBox1.Text = ) depart = rowdepart_name.ToString(); else depart = comboBox1.Text.ToString(); string time = ; if (textBox4.Text = ) time = rowemp_time.ToString(); else time = textBox4.Text.ToString(); string tel = ; if (textBox5.Text = ) tel = rowtelephone.ToString(); else tel = textBox5.Text.ToString(); string str_sqlcom2 = update EmpBasicInfo set emp_name=name, emp_pos=pos, sex=Sex, depart_name=depart, emp_time=time, telephone=tel where emp_no=no; SqlConnection mycon = boperate.getConnect(); mycon.Open(); SqlCommand cmd = new SqlCommand(str_sqlcom2, mycon); SqlParameter par_no = new SqlParameter(no, no); cmd.Parameters.Add(par_no); SqlParameter par_name = new SqlParameter(name, name); cmd.Parameters.Add(par_name); SqlParameter par_pos = new SqlParameter(pos, pos); cmd.Parameters.Add(par_pos); SqlParameter par_sex = new SqlParameter(Sex, Sex); cmd.Parameters.Add(par_sex); SqlParameter par_depart = new SqlParameter(depart, depart); cmd.Pa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论