收藏 分销(赏)

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

上传人:xrp****65 文档编号:8655106 上传时间:2025-02-24 格式:DOCX 页数:43 大小:1.43MB 下载积分:10 金币
下载 相关 举报
数据库课程设计报告_工资管理系统.docx_第1页
第1页 / 共43页
数据库课程设计报告_工资管理系统.docx_第2页
第2页 / 共43页


点击查看更多>>
资源描述
数 据 库 课 程 设 计 报 告 理论成绩 实践成绩 总成绩 院系:信息管理学院 专业:软件工程 班级:软件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 实施与维护 - 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_no varchar(10) not null 员工号(主键一) overtime_month varchar(20) not null 加班时间(主键二) Overtime_days int null 加班天数 Overtime_pay float null 加班工资 表2 Attendance (考勤信息统计) 列 名 数据类型 可否为空 说 明 emp_no varchar(10) not null 员工号(主键一) attend_month varchar(20) not null 时间(主键二) Absent_days int null 缺勤天数 Absent_pay float null 考勤工资 表3 BasicWages(工资标准表格) 列 名 数据类型 可否为空 说 明 emp_pos Varchar(10) not null 工种(主键) basic_wage Float not null 基本工资 表 4 EmpBasicInfo (员工基本情况表) 列 名 数据类型 可否为空 说 明 emp_no VARCHAR(10) NOT NULL 员工号(主键) emp_name VARCHAR(40) NULL 员工名称 emp_pos VARCHAR(40) NOT NULL 职位 sex Char(2) NULL 性别 department_id VARChar(10) NOT NULL  员工部门 emp_time VARCHAR(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 工资管理系统 { /// <summary> /// 用来连接数据库和进行有关数据库的操作 /// </summary> class BaseOperate { public static string username = ""; public static string userID = ""; public static string password = ""; #region 建立数据库连接 /// <summary> /// 建立数据库连接 /// </summary> /// <returns>返回SqlConnection对象</returns> public SqlConnection getConnect() { string str_sqlcon = "server=xgxy5; database=MyWages; uid=sa; pwd="; SqlConnection myConnect = new SqlConnection(str_sqlcon); //连接数据库 return myConnect; } #endregion #region 创建DataSet对象 /// <summary> /// 创建一个DataSet对象 /// </summary> /// <param name="str_sqlcom">SQL语句</param> /// <param name="str_table">表名</param> /// <returns>返回DataSet对象</returns> 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.Tables[str_vtab].Rows) { if (textBox1.Text == row["user_id"].ToString()) { BaseOperate.userID = row["user_id"].ToString(); BaseOperate.username = row["username"].ToString(); if (textBox2.Text == row["password"].ToString()) { BaseOperate.password = textBox2.Text; myform.Show(); break; } else { MessageBox.Show("密码错误!请重新输入!"); textBox2.Text = ""; } } else { i = i + 1; if (i == thisDset.Tables[str_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.Tables[str_vtab].Rows) listBox1.Items.Add(row["emp_no"].ToString() + "\t" + row["emp_name"].ToString() + "\t" + row["emp_pos"].ToString() + "\t " + row["sex"].ToString() + "\t " + row["depart_name"].ToString() + "\t\t" + row["emp_time"].ToString() + "\t" + row["telephone"].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.Tables[str_vtab].Rows) listBox1.Items.Add(row["depart_id"].ToString() + "\t" + row["depart_name"].ToString() + "\t\t" + row["depart_head"].ToString() + "\t " + row["depart_emps"].ToString() + "\t\t" + row["depart_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("职工号\t\t加班月份\t加班天数\t加班工资"); foreach (DataRow row in thisDset.Tables[str_vtab].Rows) listBox1.Items.Add(row["emp_no"].ToString() + "\t\t" + row["overtime_month"].ToString() + "\t\t " + row["overtime_days"].ToString() + "\t\t " + row["overtime_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("职工号\t\t考勤月份\t缺勤天数\t扣除工资"); foreach (DataRow row in thisDset.Tables[str_vtab].Rows) listBox1.Items.Add(row["emp_no"].ToString() + "\t\t" + row["attend_month"].ToString() + "\t\t " + row["absent_days"].ToString() + "\t\t " + row["absent_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.Tables[str_vtab].Rows) listBox1.Items.Add(row["emp_no"].ToString() + "\t" + row["pay_time"].ToString() + "\t" + row["basic_wage"].ToString() + "\t" + row["overtime_pay"].ToString() + "\t" + row["absent_pay"].ToString() + "\t" + row["month_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.Tables[str_vtab].Rows) listBox1.Items.Add(row["depart_name"].ToString() + "\t " + row["pay_month"].ToString() + "\t " + row["depart_emps"].ToString() + "\t\t " + row["sum_wage"].ToString() + " \t " + row["avg_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 修改员工信息 /// <summary> /// 修改员工信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> 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.Tables[str_vtab].Rows) { if (row["emp_no"].ToString() == textBox1.Text) { string no = textBox1.Text;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服