收藏 分销(赏)

工资管理系统2.doc

上传人:人****来 文档编号:4136326 上传时间:2024-07-31 格式:DOC 页数:23 大小:621KB
下载 相关 举报
工资管理系统2.doc_第1页
第1页 / 共23页
工资管理系统2.doc_第2页
第2页 / 共23页
工资管理系统2.doc_第3页
第3页 / 共23页
工资管理系统2.doc_第4页
第4页 / 共23页
工资管理系统2.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、数据库课程设计 题 目: 工资管理系统 系 别: 班 级: 姓 名: 学 号: 指导教师: 评阅意见:封面格式不对其余部分参考张付伟成绩评定:评阅人: 日期:目录一、 开发背景2二、 功能描述3三、数据流分析43.1 数据流图43.2 数据字典53.2.1 数据结构描述53.2.2 数据流的描述53.2.3 主要数据存储的定义6四、概念模型设计74.1局部E-R图74.2全局E-R图9五、逻辑结构设计和优化105.1 基本表105.2 导出表11六、 应用程序设计126.1应用程序界面126.2 功能实现代码15七、结论与体会22八、 参考文献23一、 开发背景 随着计算机技术的飞速发展,计算

2、机已深入到各个领域,并且形成了功能强大、覆盖全球的信息传输网络。各个领域都向系统化、规范化、自动化的方向发展,使得工作效率、工作成绩和生活水平都日益提高。工资管理是很多厂矿、公司、个体事业单位所须的,工资信息管理系统包括对工资信息的统计、查询、更新、打印输出等,如果靠人,工作量将很大,若公司人数有几万甚至更多,人工统计将变得不可想象,仅一些简单的操作便可及时、准确地通过计算机获得需要的信息。计算机在企业管理中应用的普及,利用计算机实现企业工资管理势在必行。计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工资管理的效率,也是企业

3、的科学化、正规化管理,与世界接轨的重要条件。不同的企业具有不同的工资管理制度,这就决定了不同的企业需要不同的工资管理系统。经过分析,我们使用SQL Server 2005 和Visual C开发工具。系统能够提供对工资信息输入、查询、编辑以及工资设定、查询、修改、算出工资发放各项合计数据;可自主设定条件从而达到对工资数据的多角度查询功能;方便导入、导出数据及输出报表。财务部门人员以管理员身份登录,对本系统的可登录人员进行管理;实现了财务部门对本单位工资发放系统的集中管理,保证了系统的安全性。二、 功能描述工资管理系统系是为了更好的实现工资各种信息的管理以及各种信息的安全性管理。本系统主要对查看

4、员工的各种工资信息需求所设计的,可以很好的管理数据。 本系统的主要功能由以下几个部分组成:(1)员工基本信息模块:员工信息功能:对员工基本信息的查询、修改和删除。(2)员工工资管理模块:员工工资情况功能:完成对员工工资的修改、查询,统计员工基本信息表。(3)员工工资信息包含员工每个月度的基本工资、加班工资、奖励情况、以后扣款情况。查询模块是指在建表的基础上,用户对所需要的资料的查询。包括单一条件查询和多条件查询。从查询对象来看,又可分为对员工基本信息的查询和对员工工资信息。(4)员工身份的确认:只有用户名和用户密码都相符的用户方可进入本系统,为了防止不合法用户对数据的察看和修改,本系统把用户分

5、为两个级别:员工和管理员,员工包括管理员不仅拥有对数据的查询、统计、打印权限,还对用户的使用权限进行控制,管理员可以设定用户名、密码和其权限,还可以对纪录进行增加、删除、修改等操作。当用户要进入系统时必须先输入用户名和密码,按“确认”按钮后,系统辨别用户身份,对合法用户根据用户的权限赋予相应的使用功能。(5)工资信息的计算:工资计算分为部门工资修改、单个员工总工资计算、单个部门总工资计算,单个员工工资是员工基本工资加上员工奖金加上员工加班工资减去员工应扣除的款项。部门工资之和是该部门所有员工当月工资的总合。三、数据流分析3.1 数据流图1)第一层数据流图图1 第一层数据流图2) 第二层数据流图

6、图2 第二层数据流图3.2 数据字典3.2.1 数据结构描述名称:员工(Employee)含义说明:员工基本信息组成结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间名称:工资(Salary)含义说明:员工的基本工资信息组成结构:员工编号+姓名+性别+全勤奖金+实际上班天数+基本工资+加班天数+加班工资+扣款+应发工资+实发工资+部门名称:部门(branch)含义说明:所购书和购书单位的说明组成结构:部门编号+名称+电话+部门经理+编制人数+现有人数3.2.2 数据流的描述数据流名称:员工加入 简述:新员工信

7、息录入数据流来源:管理者数据流去向:员工信息情况数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间数据流名称:员工信息修改 简述:员工信息错误或者员工调动数据流来源:员工信息情况数据流去向:员工信息情况数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间数据流名称:员工离职 简述:员工离开公司到别的公司就职数据流来源:员工信息情况数据流去向:员工信息情况数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+

8、Email+办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 数据流名称:员工信息删除 简述:该员工不能作离职处理数据流来源:员工信息情况数据流去向:员工信息情况数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间数据流名称:工资变动 简述:公司对工资进行变动数据流来源:公司管理者数据流去向:工资信息情况数据流组成:员工编号+姓名+性别+全勤奖金+实际上班天数+基本工资+加班天数+加班工资+扣款+应发工资+实发工资+部门数据流名称:部门经理调动 简述:公司对部门经理进行变动数据流来源:

9、公司管理者数据流去向:部门信息情况数据流组成:部门编号+名称+电话+部门经理+编制人数+现有人数3.2.3 主要数据存储的定义存储名称:员工记录 输入:员工基本信息 输出:员工所有信息 数据结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办 公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 存储名称:离职记录 输入:离职员工基本信息 输出:离职员工所有信息 数据结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办 公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 存储名称:非离职记录 输入:非离职员工基本信息 输出:非离

10、职员工所有信息 数据结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办 公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 存储名称:工资记录 输入:员工工资信息 输出:员工所有工资信息 数据结构:员工编号+姓名+性别+全勤奖金+实际上班天数+基本工资+加 班天数+加班工资+扣款+应发工资+实发工资+部门 存储名称:部门记录 输入:部门信息 输出:所有部门信息 数据结构:部门编号+名称+电话+部门经理+编制人数+现有人数 四、概念模型设计4.1局部E-R图图3 用户信息E-R图图4 员工信息E-R图图5 部门信息E-R图图6 工资信息E-R图4.2全局E-R

11、图图7 全局E-R图五、逻辑结构设计和优化5.1 基本表5.1.1关系模式:工资(工号姓名性别全勤奖金实上班天数基本工资加班天数加班工资扣款应发工资实发工资)5. 1.2 关系模式:员工基本信息(身份证号民族年龄员工编号姓名性别E-mail联系电话办公电话、员工参加工作时间、所属部门、教育程度、专业、学校、住所、籍贯、职位)5. 1.3 关系模式:员工离职信息表是由员工信息表导出,和员工信息表的信息是一样的。5.1.4 关系模式:用户(用户ID、密码、用户类型)5.1.5 关系模式 :部门(部门编号,部门名称,部门电话,部门经理,编制人数,现有人数)5.2 导出表1) 调动入表(部门编号,职位

12、,职工编号,原部门,现部门、说明部分)由部门信息表导出。2) 转出表(部门编号,职位,职工编号,现有人数,职工名)由部门信息表导出。3) 奖惩表(职工编号、奖励、惩罚、奖惩时间、说明部分)由工资表导出。六、 应用程序设计6.1应用程序界面图8登录界面图9 员工信息操作界图10 添加员工信息界面图11离职员工信息界面图12工资信息界面图13修改工资信息界面图14部门信息界面图15工资计算界面6.2 功能实现代码数据库连接代码建立数据库连接的函数:int CSalaryApp:NewDBConnect() CString strCon;/定义连接字符串 strCon.Format(DSN=%s;U

13、ID=%s;PWD=%s,Mydata,sa,);/数据库连接字符串 g_pDB=&myDB; TRY if(!g_pDB-OpenEx(strCon,CDatabase:noOdbcDialog)/开打数据源,执行数据库连接字符串,如不成功、弹出对话框 AfxMessageBox(连接数据源发生错误); return -1; .下面是异常处理代码段、登录系统实现代码void CLoginDlg:OnOK() / TODO: Add extra validation hereUpdateData(TRUE);CString str,strSQL;strSQL.Format(select cou

14、nt(ID) as count from LoginInfo where username=%s and password=%s,m_Username,m_Password);/SQL查询语句,查询出管理员编号IDCRecordset rs(g_pDB);/构造记录集rs.Open(CRecordset:forwardOnly,strSQL);/执行查询语句rs.GetFieldValue(count,str);/检索当前数据的索引rs.Close();/关闭数据集if(!str.Compare(1)/判断认证是否通过EndDialog(IDOK);/结束对话框、返回IDOKelse AfxM

15、essageBox(用户名或者密码错误);列表控件初始化代码m_listEmployeeInfo.ModifyStyle(LVS_TYPEMASK,LVS_REPORT|LVS_SINGLESEL); /列表显示框的类型定义m_listEmployeeInfo.SetExtendedStyle(LVS_EX_FULLROWSELECT| LVS_EX_GRIDLINES |LVS_EX_HEADERDRAGDROP |LVS_EX_ONECLICKACTIVATE);/列表显示框的显示方式定义int i=0;m_listEmployeeInfo.InsertColumn(i+,_T(编号),

16、LVCFMT_LEFT,40,i+);/逐列插入列标题将记录集显示到列表控件中的实现代码void CSalaryView:ShowItem(CString strSQL) .记录集定义和记录集打开部分elseint i=0,j=0;while(!EmployeeInfoSet.IsEOF()/判断记录集是否到达最后一条记录m_listEmployeeInfo.InsertItem(i,EmployeeInfoSet.m_num);/从第i行 第j列开始逐行插入记录集中的数据 .i+;j=0;EmployeeInfoSet.MoveNext();/将记录集的指针移到下一个记录EmployeeIn

17、foSet.Close();/关闭记录集 .异常处理添加信息实现代码void CAddEmployeeDlg:OnButtonOk() .记录集的打开和判断记录集是否可以读取的部分代码EmployeeInfoSet .AddNew();/添加新记录EmployeeInfoSet .m_num =m_strNum;/设置各记录字段的值 .EmployeeInfoSet .Update();/更新记录集EmployeeInfoSet .Close();/关闭记录集.异常处理删除信息实现代码void CSalaryView:OnButtonDelete() .数据项定义if(CButton*)Get

18、DlgItem(IDC_RADIO_OUT)-GetCheck()=TRUE)/判断离职是否被选中pos=m_listEmployeeInfo.GetFirstSelectedItemPosition();/获取listControl中被选择的位子 .判断是否选中要删除的项的代码部分省略ipos=m_listEmployeeInfo.GetNextSelectedItem(pos);strPersonID=m_listEmployeeInfo.GetItemText(ipos,0);/获取要删除的员工的编号strSQL.Format( insert into Resigner select *

19、 from EmployeeInfo where num=%s,strPersonID);/构造将该信息移动到离职信息表中的SQL语句strSQL1.Format(delete from EmployeeInfo where num=%s,strPersonID);/构造删除语句TRY. .判断记录集的连接和异常处理部分代码省略 END_CATCH_ALLdb.BeginTrans();/开始处理事务TRYdb.ExecuteSQL(strSQL);/执行SQL语句db.ExecuteSQL(strSQL1);/执行SQL1语句db.CommitTrans();/提交处理CATCH(CDBEx

20、ception ,e)e-ReportError();/报告错误db.Rollback();/回滚记录return;END_CATCHShowItem(select * from EmployeeInfo);else/如果选中的是其他 .代码段相似,省略UpdateData(FALSE);下面是修改员工信息部分的代码:void CSalaryView:OnButtonModify() .字段定义和获取修改位置代码省略 iPos =m_listEmployeeInfo.GetNextSelectedItem(pos);/在修改的对话框中显示修改员工信息前的员工信息dlg.m_strNum=m_l

21、istEmployeeInfo.GetItemText(iPos,i+);/逐个插入信息 .dlg.DoModal();/转到修改员工信息对话框 ShowItem(select * from EmployeeInfo);UpdateData(FALSE);修改员工信息对话框确定按钮代码:void CModifyEmployeeDlg:OnButtonOk() / TODO: Add your control notification handler code hereUpdateData(TRUE);CString strTmp;strTmp.Format(SELECT * FROM Empl

22、oyeeInfo where num = %s, m_strNum);CEmployeeInfoSet EmployeeInfoSet;TRY.打开记录集和判断记录集是否可以写入部分代码省略EmployeeInfoSet.Edit(); EmployeeInfoSet .m_num =m_strNum;/设置各记录字段的值./逐个加入修改的值、代码跟添加中的代码一样,这里不作说明EmployeeInfoSet .Update();/更新记录集EmployeeInfoSet .Close();/关闭记录集EmployeeInfoSet.Update();EmployeeInfoSet.Close

23、();.异常处理UpdateData(FALSE);CDialog:OnOK();下面是查找员工信息的代码:void CSalaryView:OnButtonSearch() UpdateData(TRUE);if(m_cmbCondition.GetCurSel()=CB_ERR)/获取要查询的条件return;CString strCondition,strSQL;m_cmbCondition.GetWindowText(strCondition);/获取combox控件中的内容if(strCondition=编号)/构造并执行查询语句strSQL.Format(select * from

24、 EmployeeInfo where num Like %s%s%s,%,m_strQuery,%);.ShowItem(strSQL);UpdateData(FALSE);工资计算代码部分下面是员工工资计算功能代码:void CCount:OnButtonEsalarycount() .定义记录集对象和判断记录集是否打开部分代码省略while(SalaryInfoSet.IsOpen()&!SalaryInfoSet.IsEOF()/判断是否是记录集的最后一条if(SalaryInfoSet.m_num=m_strNumEmployee)/判断与输入的员工号一致否A=atof(Salary

25、InfoSet.m_asalary.GetBuffer(SalaryInfoSet.m_asalary.GetLength();/将获取的工资信息转换为float型B=atof(SalaryInfoSet.m_bsalary.GetBuffer(SalaryInfoSet.m_bsalary.GetLength();C=atof(SalaryInfoSet.m_csalary.GetBuffer(SalaryInfoSet.m_csalary.GetLength();D=atof(SalaryInfoSet.m_bon.GetBuffer(SalaryInfoSet.m_bon.GetLeng

26、th();E=A+B+D-C;/基本工资+加班工资+奖金扣除的工资=全部工资SalaryInfoSet.MoveNext();/指针移动至记录集下一条.异常处理 m_strResultemployee.Format(%f,E);/将获取的工资和转换为字符型UpdateData(FALSE);下面是部门所发总工资之和计算部分代码void CCount:OnButtonBsalarycount() .与前面部分代码相似,省略while(SalaryInfoSet.IsOpen()&!SalaryInfoSet.IsEOF()/判断是否是最后一条记录if(SalaryInfoSet.m_branch

27、=m_strNumbranch)/判断部门是否与输入的一致 A=atof(SalaryInfoSet.m_asalary.GetBuffer(SalaryInfoSet.m_asalary.GetLength();/将字符型工资信息转换为float型 . E=A+B+D-C; F+=E;/记录+1,总工资=个人工资+ SalaryInfoSet.MoveNext();/指针移至下一条记录异常处理m_strResultbranch.Format(%f,F);/将float型转换为字符型UpdateData(FALSE);七、结论与体会通过这数周的数据库设计,使我们从中受到很大的教育和练习,不仅将

28、大学所学的知识进行了实际应用,还学到了很多书本上学不到的知识。开阔了视野,增长了知识,积累了一些经验和教训。充分锻炼了自己的动手和应用能力,真正做到了理论联系实际。我们设计的个工资管理系统,提供了较为完备的员工、部门、工资等信息,实现了数据库的的基本的操作,如修改、插入、删除、更新等。员工表的基本操作包括增、删、查、改,其中删除有俩种选择:离职和其他,如果选择的是离职,那么该员工的信息就相应的移至离职员工信息表中,否则就当删除处理,另外俩张表包括工资信息和部门信息表等都是增、删、查、改等基本操作,工资计算包括对整个部门的基本工资进行修改,包括计算某个员工这个月度的总工资,还包括对这个部门所有员

29、工的工资进行统计。由于整个课程设计时间比较仓促,所以该系统还有许多不尽如意的地方,对某些功能的细节设计还缺乏完备性,缺乏对系统整体进行周密的考虑等等多方面问题。这些都有待于进一步的改善。本次程序我主要负责代码的编写,在编写代码的过程中、遇到各种各样的问题、例如头文件的使用,连接数据库代码的操作,以及怎样建立数据源,怎么样用代码把程序与数据源之间的联系建立起来,怎么样利用记录集将数据库中的表和程序结合起来。这些问题在以前的学习过程中从来没有遇到过,在这次的编写代码的过程中,我学到了很多知识,学会怎么样建立与数据源的连接,怎么样去管理一个数据库,怎么样利用数据源建立与程序之间的联系。这些都是要自己重新去学习的。最后,我们要感谢老师的关心、指导和教诲。再次向所有关心、帮助、理解、支持我们做好数据库课程设计的老师和同学们致以深深的谢意,感谢你们的帮助和关爱!八、 参考文献 本程序主要使用到的参考书籍:1. Visual C+从初学到精通 吕兵 曲宝军 王玮等编著 电子工业出版社出版2. Visual C+6.0编程实用技术与案例 陈元琰 邓宗明 张睿哲 张晓竞编著 清华大学出版社出版3. 深入浅出MFC 侯俊杰编著

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服