资源描述
Windows与SQL课程设计
山东理工大学课程设计报告
题目:企业员工工资管理系统
院 系: _
班 级:
学 号:
姓 名:
指导教师:
考勤成绩
代码成绩
报告成绩
指导教师签名
2010年 7 月 5 日 ~ 2010年 7 月14 日
- 16 -
目 录
目 录 I
成绩评定页 II
一.项目描述 1
1.1 系统开发背景.....................................................................................................................................1
1.2 项目实现原理.....................................................................................................................................1
二.个人分工及进度计划 2
三.数据库设计 1
3.1 数据库逻辑设计.................................................................................................................................3
3.2 数据库物理设计.................................................................................................................................4
3.3 数据库关系图.....................................................................................................................................5
四.软件总体设计 5
4.1 公有数据库类的设计.........................................................................................................................5
4.2 公有模块的设计.................................................................................................................................6
五.功能实现 8
5.1 自动生成变动工资表功能的实现.....................................................................................................8
5.2 表查询功能的实现...........................................................................................................................10
5.3 自动生成福利费表功能的实现.......................................................................................................13
5.4 关于制作小组信息的实现.............................................................................................................. 14
六.项目总结 15
七.参考文献 15
成绩评定页
1.出勤成绩(20分)
出勤天数
成绩
出勤成绩小记
2.源代码成绩
考核大项
具体考核条目
成绩比重
实际成绩
数据库设计(10分)
数据库表结构合理
5
表间关系正确
3
全组统一数据库
2
公共模块设计及完成情况(5分)
设计方案清晰、合理
2
完成统一的代码实现
2
全组统一使用公共模块
1
各功能设计及运行情况(10分)
完成分工的功能,且功能正确
5
功能运行无错误
3
代码结构清晰,添加注释
2
系统整合及运行情况(5分)
完成系统整合
3
功能运行正确
2
代码答辩情况(5分)
代码熟悉,功能实现讲述清楚
3
数据库操作熟练
2
数据库操作熟练
2
源代码成绩小记
3.设计报告成绩
考核大项
具体考核条目
成绩比重
实际成绩
报告内容(30分)
设计报告结构完整,无缺项
5
设计报告结构合理,数据库设计、公共模块设计介绍准确
5
功能实现部分介绍完整、清晰
10
设计报告独立完成,无抄袭
5
设计报告用语准确,语句通顺
5
报告格式(10分)
封面设计美观,全组统一
2
全文格式符合要求
3
图片清楚、无错别字
2
打印、装订符合要求
3
打印、装订符合要求
3
设计报告成绩小记
总成绩 成绩等级
一. 项目描述
1.1 系统开发背景
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统,仅凭手工操作来实现不仅容易出错,而且也造成资源的不必要浪费,因此开发这个工资管理系统是很有必要的。
1.2 项目实现原理
企业员工工资管理系统是通过设置不同的权限来进行对企业员工的各项资金进行管理的小型管理系统,通过对员工的资金管理来实现员工与企业共赢的情景.
这个系统的角色有两种,一个是管理员,需要从一个管理者的角度实现对员工的增加,删除和修改。另外一个是企业的员工,企业员工需要两个部分的功能,一个是员工信息管理,实现员工的基本信息修改。另外一个是员工个人信息查询,实现员工对自己及其同事的个人信息查询,了解自己最近的工资情况,根据情况进行适当的自我修整.
管理员角色除了可以实现员工角色能实现的功能外,另一个重要的作用就是对员工的工资进行有效的管理.管理员可以通过员工的考勤,即修改与删除员工的加班时数,迟到次数,旷工天数,事假天数来对员工的工资进行合理的加薪与减薪.还有就是对员工的月工资变化进行的查询,设置员工所在部门的福利资金,对每个员工的所在部门,职称进行合适的修改;另一个就是通过日期来对员工的工资进行查询.
本系统的功能如图所示:
企业员工工资管理系统
员工信息管理
企 业 管 理
关于我们
个人信息查询
自动生成变动工资表
员工信息修改
基本工资设置
员工考勤
自动生成工资表
自动生成福利费表
表查询
设计小组
二.个人分工及进度计划
表1 小组成员及分工表(组长使用)
组员
模块分工
组长:
设计系统数据库,登录,关于窗体,变动工资,查询和福利费窗体
组员:
设计个人查询,工资表,工资管理系统主界面三个窗体
组员:
设计基本工资,员工考勤,员工信息管理三个窗体
表1 个人分工及进度计划表(组长及组员使用)
系统
企业员工工资管理系统
分工模块
设计系统数据库,登录,关于窗体,变动工资,查询和福利费窗体
模块详细功能
功能描述
进度计划
建立数据库,其中表主要包括登录者信息Login表,变动工资表,福利费计提分配表,工资计算表,基本工资表,考勤表和员工信息表。设置表关系。
4小时
设置登录窗体,关于窗体。其中登录界面分为两种权限管理员及个人用户。
1天
设计变动工资,查询和福利费窗体。其中变动工资显示两个月之间的比较,福利费显示每个部门的福利待遇。
3天
三.数据库设计
3.1 数据库逻辑设计
员工工资管理系统数据库ER图:
员工信息
具有
员工考勤
员工福利
员工
具有
具有
具有
员工工资
数据对象分析:
员工信息:
员工信息表
员工编号
身份证号码
部门名称
职称
联系电话
个人账号
工龄
部门编号
出生日期
性别
员工姓名
考勤表信息,基本工资表信息,福利分配表信息:
考勤表
加班时数
考勤日期
事假天数
迟到次数
旷工天数
员工编号
部门编号
基本工资表
部门名称
基本工资
职称
福利分配表
员工编号
金额
统计日期
部门编号
3.2 数据库物理设计
数据库表的设计及表结构:
员工信息表:
工资计算表:
变动工资表:
考勤表:
福利费计提分配表:
基本工资表:
用户登录Login表:
3.3 数据库关系图
四.软件总体设计
4.1 公有数据库类的设计
企业员工工资管理系统在进行数据库连接时,采用的是设计一个公有的类database.cs,各个窗体界面的实现都是通过此类作为桥梁。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
namespace 企业工资管理系统
{
public class database
{
public SqlConnection mySqlConnection = new SqlConnection();
public string str = "";
//完成数据库连接的构造函数
public database()
{
mySqlConnection.ConnectionString = "Data Source=.;Initial Catalog=GZGL;Integrated Security=true";
mySqlConnection.Open();
}
}
}
4.2 公有模块的设计
工资管理系统采用的是以不同角色登录系统已达到企业管理者和员工共同管理的目的。其中小
组设计时的公有模块既登录界面的设计以及主界面的实现。
登录模块:登录模块采用双重角色进行管理,一是企业管理者,二是个人用户。
如图所示即为作为管理员登陆系统时程序显示的界面,以及作为员工的个人用户登录系统时显示的界面。
当个人用户或管理员的用户名或密码输入错误时会显示以下的登陆错误:
而当只选择了用户权限却没有输入用户名或密码时就会出现下面的输入错误:
而当用户登录成功了之后就会出现主窗体的显示界面:
其中管理者权限可以对菜单中的各项信息进行管理,而个人用户权限只能对其中的员工信息和系统基本操作进行查看及部分修改。
设计此界面的关键代码如下:
private void button1_Click(object sender, EventArgs e)
{if (comboBox1.Text == "")
MessageBox.Show("请选择登陆权限");}
else if (textBox1.Text =="" || textBox2.Text == "")
{ MessageBox.Show("用户名和密码不能为空");
} else {
String str = "select uid ,pwd from login where uid='" + textBox1.Text + "'and pwd='" + textBox2.Text + "'";
database conn = new database();
DataSet myDataSet = new DataSet();
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(str, conn.mySqlConnection);
mySqlDataAdapter.Fill(myDataSet, "login");
if (myDataSet.Tables[0].Rows.Count > 0)
{ MessageBox.Show("欢迎登录工资管理系统!", "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
工资管理系统 f1 = new 工资管理系统();
f1.Show();
this.Visible = false;
if (comboBox1.Text == "个人用户")
{ ((工资管理系统)f1).关于.Enabled = true;
((工资管理系统)f1).员工信息.Enabled = true;
((工资管理系统)f1).退出.Enabled = true;
((工资管理系统)f1).企业管理.Enabled = false; } else
{
((工资管理系统)f1).关于.Enabled = true;
((工资管理系统)f1).员工信息.Enabled = true;
((工资管理系统)f1).退出.Enabled = true;
((工资管理系统)f1).企业管理.Enabled = true;
} }
else
{
MessageBox.Show("用户名或密码错误,请重复输入!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox1.Text = "";
textBox2.Text = "";
} }}
五.功能实现
5.1 自动生成变动工资表功能的实现
自动生成变动工资表主要的功能是通过选择员工编号来查询员工一年内的工资变化,通过查看一年内工资的变化来获取主要的资金信息,查看员工的工作绩效。
首先要登录到系统主界面上,找到企业管理菜单下拉列表中的自动生成变动工资表选项,然后单击查看效果:
当选择自动生成变动工资表时,就会出现以下界面:
代码实现如下:
选定员工编号关键代码:
String str = "select distinct 员工编号 from 变动工资表";
database conn = new database();
SqlCommand mySqlCommand = new SqlCommand(str, conn.mySqlConnection);
SqlDataReader dr = mySqlCommand.ExecuteReader();
while (dr.Read())
comboBox1.Items.Add(dr.GetString(0));
conn.mySqlConnection.Close();
查询绑定到员工编号的代码:
label4.Text = "2007年12月";
label5.Text = "2008年12月";
String str = String.Format("select * from 变动工资表 where 统计日期='{0}'and 员工编号='{1}'", label4.Text, comboBox1.Text);
database conn = new database();
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(str, conn.mySqlConnection);
DataSet myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
if (myDataSet.Tables[0].Rows.Count > 0)
{ dataGridView1.DataSource = myDataSet.Tables[0].DefaultView;
}
else
{MessageBox.Show("数据库中没有这个员工编号");
}
conn.mySqlConnection.Close();
str =String.Format("select * from 变动工资表 where 统计日期='{0}'and 员工编号='{1}'", label5.Text, comboBox1.Text);
conn.mySqlConnection.Open();
mySqlDataAdapter = new SqlDataAdapter(str, conn.mySqlConnection);
myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
if (myDataSet.Tables[0].Rows.Count > 0)
{ dataGridView2.DataSource = myDataSet.Tables[0].DefaultView;
}
else
{MessageBox.Show("数据库中没有这个员工编号");
}
conn.mySqlConnection.Close();
5.2表查询功能的实现
表查询功能主要是通过选择员工编号,查询日期来查询相应的员工信息表,考勤表,变动工资表,福利费计提分配表和工资计算表.通过查询各个表来获取员工在各方面的信息.此表查询只能是管理员才有的权限查询.
由于在一定时间内会有人事的变动,因此有的员工在2007能查到的信息在2008年不一定能够查到,因此就会有相应的对话框提示说:没有此人相应的信息.
如下图所示:
实现的功能代码如下所示:
一是绑定员工编号的代码同变动工资表中显示员工编号一样,另是显示日期的代码:
str = "select distinct 统计日期 from 变动工资表";
conn.mySqlConnection.Open();
mySqlCommand = new SqlCommand(str, conn.mySqlConnection);
dr = mySqlCommand.ExecuteReader();
while (dr.Read())
comboBox2.Items.Add(dr.GetString(0));
conn.mySqlConnection.Close();
查询事件的相应代码:
private void button1_Click(object sender, EventArgs e)
{ if (comboBox1.Text == "" && comboBox2.Text == "")
{ MessageBox.Show("请您选择查询的方式");
}
else if(comboBox3.Text=="")
{ MessageBox.Show("请您选择查询的表");
}
else
{string Select = "select * from " + comboBox3.Text;//查询表
if (checkBox1.Checked)
{ Select += " where 员工编号=" + "'" + comboBox1.Text + "'";
}
if (checkBox2.Checked)
{if (checkBox1.Checked)
{if (comboBox3.Text != "考勤表")
{ Select += " and 统计日期=" + "'" + comboBox2.Text + "'";
}
else
{Select += " and 考勤日期=" + "'" + comboBox2.Text + "'";
}
}
else
{ if (comboBox3.Text != "考勤表")
{ Select += " where 统计日期=" + "'" + comboBox2.Text + "'";
}
else
{ Select += " where 考勤日期=" + "'" + comboBox2.Text + "'";
}
}
}
DataSet myDataSet = new DataSet();
database conn = new database();
SqlDataAdapter da = new SqlDataAdapter(Select, conn.mySqlConnection);
da.Fill(myDataSet, comboBox3.Text);
if (myDataSet.Tables[0].Rows.Count > 0)
{ dataGridView1.DataSource = myDataSet.Tables[comboBox3.Text];
}
else
{ MessageBox.Show("没有此人信息,请重新选择");
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{ if (checkBox1.Checked == false)
comboBox1.Enabled = false;
else
comboBox1.Enabled = true;
}
5.3 自动生成福利费表功能的实现
福利费表功能的实现是通过选择员工所在的工作部门来查询相应的福利待遇。通过查询相应的福利待遇才确定哪个部门是优选部门。
功能的实现如下图所示:
实现其功能的关键代码如下所示:
private void flf_Load(object sender, EventArgs e)
{ String str = "select distinct 部门编号 from 福利费计提分配表";
database conn = new database();
SqlCommand mySqlCommand = new SqlCommand(str, conn.mySqlConnection);
SqlDataReader str1;
str1 = mySqlCommand.ExecuteReader();
while (str1.Read())
comboBox1.Items.Add(str1.GetString(0));
conn.mySqlConnection.Close();
comboBox1.SelectedIndex = 0;
}
private void button1_Click(object sender, EventArgs e)
{
String str = "select * from 福利费计提分配表 where 部门编号='"+comboBox1.Text+"'";
database conn = new database();
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(str, conn.mySqlConnection);
DataSet myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
if (myDataSet.Tables[0].Rows.Count > 0)
{ dataGridView1.DataSource = myDataSet.Tables[0].DefaultView;
}
else
{ MessageBox.Show("数据库中没有这个员工编号");
}
conn.mySqlConnection.Close();
}
5.4 关于制作小组信息的实现
由于系统是在一个组长的领导下,和多个组员共同完成的,在使用系统的同时知道小组人员是谁以备在系统发生异常时能及时联系到制作人员是一个很好的防备。
功能实现的代码如下:
private void button1_Click(object sender, EventArgs e)
{ MessageBox.Show("崔国裕", "谢谢", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void button2_Click(object sender, EventArgs e)
{MessageBox.Show("孙召良、朱现晖", "谢谢", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
六.项目总结
企业员工工资管理系统是一个典型的信息管理系统,其主要通过软件工程方面的选择课题、需求分析、总体设计、选用工具、程序模块、系统测试等几个步骤来实现。开发本系统的过程中,首先要对企业工资管理进行系统调研,熟悉企业财务、人事、工资发放管理的流程、步骤;其次在系统需求分析过程中,要透过现象看本质,敏锐观察到企业工资管理中存在的各种问题,并在总体设计把握好对问题的分析、理解,进而解决问题;选用开发工具要选用自己最熟悉、应用较多的开发工具,本系统开发选用Visual Studio 2005 C#,其具有语言简单、功能强大、组件众多的优点。程序模块的编制中,重点把握系统内部完整性、功能性、实用性、便捷性,使其能够协调统一、运行无误。运行结果证明,本企业工资管理系统极大提高了工作效率,节省了人力和物力,最终满足企业财务管理、员工工资发放的需要,同时也成为现代化企业管理的标志.
在开发这个工资管理系统过程中我深刻地体会到了自学能力的重要性。毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。在开发过程中,遇到困难是在所难免的,期间我跟我的指导老师和同学进行交流,从中明白了很多。开发一个系统,恒心和毅力也是不可缺少的,如果一遇到难题就心慌,想要放弃,那这样就不可能完成系统。同样,在开发过程当中,细心也是非常重要的,由于很多事项都要很注意才行,如果没有做到这一点,就会出错。
在开发过程当中,我学到很多,明白了做任何事情都要有始有终,要敢于同困难作斗争,要养成独立思考的习惯。在以后的工作和生活当中,我将继续发扬这些好的作风。
七.参考文献
[1]韩万江.软件工程案例教程.机械工业出版社.2005
[2] 唐政 房大伟 C#项目开发全程实录 清华大学出版社 .2008
[3] 柴晟 ADO.NET数据库访问技术案例式教程 北京航空航天大学出版社.2009
[4] 李春葆 赵炳秀 张牧 数据库系统开发教程------基于SQL SERVER2005
清华大学出版社 .2008
展开阅读全文