专题讲座资料(2021-2022年)工资管理系统2_第1页
专题讲座资料(2021-2022年)工资管理系统2_第2页
专题讲座资料(2021-2022年)工资管理系统2_第3页
专题讲座资料(2021-2022年)工资管理系统2_第4页
专题讲座资料(2021-2022年)工资管理系统2_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

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、 应用程序设计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=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

温馨提示

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

评论

0/150

提交评论