分享
分销 收藏 举报 申诉 / 23
播放页_导航下方通栏广告

类型工资管理系统2.doc

  • 上传人:人****来
  • 文档编号:4136326
  • 上传时间:2024-07-31
  • 格式:DOC
  • 页数:23
  • 大小:621KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    工资管理 系统
    资源描述:
    数据库课程设计 题 目: 工资管理系统 系 别: 班 级: 姓 名: 学 号: 指导教师: 评阅意见: 封面格式不对 其余部分参考张付伟 成绩评定: 评阅人: 日期: 目录 一、 开发背景 2 二、 功能描述 3 三、数据流分析 4 3.1 数据流图 4 3.2 数据字典 5 3.2.1 数据结构描述 5 3.2.2 数据流的描述 5 3.2.3 主要数据存储的定义 6 四、 概念模型设计 7 4.1局部E-R图 7 4.2全局E-R图 9 五、逻辑结构设计和优化 10 5.1 基本表 10 5.2 导出表 11 六、 应用程序设计 12 6.1应用程序界面 12 6.2 功能实现代码 15 七、结论与体会 22 八、 参考文献 23 一、 开发背景 随着计算机技术的飞速发展,计算机已深入到各个领域,并且形成了功能强大、覆盖全球的信息传输网络。各个领域都向系统化、规范化、自动化的方向发展,使得工作效率、工作成绩和生活水平都日益提高。工资管理是很多厂矿、公司、个体事业单位所须的,工资信息管理系统包括对工资信息的统计、查询、更新、打印输出等,如果靠人,工作量将很大,若公司人数有几万甚至更多,人工统计将变得不可想象,仅一些简单的操作便可及时、准确地通过计算机获得需要的信息。计算机在企业管理中应用的普及,利用计算机实现企业工资管理势在必行。计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。不同的企业具有不同的工资管理制度,这就决定了不同的企业需要不同的工资管理系统。 经过分析,我们使用SQL Server 2005 和Visual C开发工具。系统能够提供对工资信息输入、查询、编辑以及工资设定、查询、修改、算出工资发放各项合计数据;可自主设定条件从而达到对工资数据的多角度查询功能;方便导入、导出数据及输出报表。财务部门人员以管理员身份登录,对本系统的可登录人员进行管理;实现了财务部门对本单位工资发放系统的集中管理,保证了系统的安全性。 二、 功能描述 工资管理系统系是为了更好的实现工资各种信息的管理以及各种信息的安全性管理。本系统主要对查看员工的各种工资信息需求所设计的,可以很好的管理数据。 本系统的主要功能由以下几个部分组成: (1)员工基本信息模块:员工信息功能:对员工基本信息的查询、修改和删除。 (2)员工工资管理模块:员工工资情况功能:完成对员工工资的修改、查询,统计员工基本信息表。 (3)员工工资信息包含员工每个月度的基本工资、加班工资、奖励情况、以后扣款情况。查询模块是指在建表的基础上,用户对所需要的资料的查询。包括单一条件查询和多条件查询。从查询对象来看,又可分为对员工基本信息的查询和对员工工资信息。 (4)员工身份的确认:只有用户名和用户密码都相符的用户方可进入本系统,为了防止不合法用户对数据的察看和修改,本系统把用户分为两个级别:员工和管理员,员工包括管理员不仅拥有对数据的查询、统计、打印权限,还对用户的使用权限进行控制,管理员可以设定用户名、密码和其权限,还可以对纪录进行增加、删除、修改等操作。当用户要进入系统时必须先输入用户名和密码,按“确认”按钮后,系统辨别用户身份,对合法用户根据用户的权限赋予相应的使用功能。 (5)工资信息的计算:工资计算分为部门工资修改、单个员工总工资计算、单个部门总工资计算,单个员工工资是员工基本工资加上员工奖金加上员工加班工资减去员工应扣除的款项。部门工资之和是该部门所有员工当月工资的总合。 三、数据流分析 3.1 数据流图 1)第一层数据流图 图1 第一层数据流图 2) 第二层数据流图 图2 第二层数据流图 3.2 数据字典 3.2.1 数据结构描述 名称:员工(Employee) 含义说明:员工基本信息 组成结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 名称:工资(Salary) 含义说明:员工的基本工资信息 组成结构:员工编号+姓名+性别+全勤奖金+实际上班天数+基本工资+加班天数+加班工资+扣款+应发工资+实发工资+部门 名称:部门(branch) 含义说明:所购书和购书单位的说明 组成结构:部门编号+名称+电话+部门经理+编制人数+现有人数 3.2.2 数据流的描述 数据流名称:员工加入 简述:新员工信息录入 数据流来源:管理者 数据流去向:员工信息情况 数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+ 办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 数据流名称:员工信息修改 简述:员工信息错误或者员工调动 数据流来源:员工信息情况 数据流去向:员工信息情况 数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+ 办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 数据流名称:员工离职 简述:员工离开公司到别的公司就职 数据流来源:员工信息情况 数据流去向:员工信息情况 数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+ 办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 数据流名称:员工信息删除 简述:该员工不能作离职处理 数据流来源:员工信息情况 数据流去向:员工信息情况 数据流组成:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+ 办公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 数据流名称:工资变动 简述:公司对工资进行变动 数据流来源:公司管理者 数据流去向:工资信息情况 数据流组成:员工编号+姓名+性别+全勤奖金+实际上班天数+基本工资+加 班天数+加班工资+扣款+应发工资+实发工资+部门 数据流名称:部门经理调动 简述:公司对部门经理进行变动 数据流来源:公司管理者 数据流去向:部门信息情况 数据流组成:部门编号+名称+电话+部门经理+编制人数+现有人数 3.2.3 主要数据存储的定义 存储名称:员工记录 输入:员工基本信息 输出:员工所有信息 数据结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办 公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 存储名称:离职记录 输入:离职员工基本信息 输出:离职员工所有信息 数据结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办 公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 存储名称:非离职记录 输入:非离职员工基本信息 输出:非离职员工所有信息 数据结构:员工编号+姓名+性别+年龄+民族+身份证号+电话+Email+办 公电话+教育程度+专业+毕业院校+住所+籍贯+职业+部门+工作时间 存储名称:工资记录 输入:员工工资信息 输出:员工所有工资信息 数据结构:员工编号+姓名+性别+全勤奖金+实际上班天数+基本工资+加 班天数+加班工资+扣款+应发工资+实发工资+部门 存储名称:部门记录 输入:部门信息 输出:所有部门信息 数据结构:部门编号+名称+电话+部门经理+编制人数+现有人数 四、 概念模型设计 4.1局部E-R图 图3 用户信息E-R图 图4 员工信息E-R图 图5 部门信息E-R图 图6 工资信息E-R图 4.2全局E-R图 图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) 调动入表(部门编号,职位,职工编号,原部门,现部门、说明部分) 由部门信息表导出。 2) 转出表(部门编号,职位,职工编号,现有人数,职工名) 由部门信息表导出。 3) 奖惩表(职工编号、奖励、惩罚、奖惩时间、说明部分) 由工资表导出。 六、 应用程序设计 6.1应用程序界面 图8登录界面 图9 员工信息操作界 图10 添加员工信息界面 图11离职员工信息界面 图12工资信息界面 图13修改工资信息界面 图14部门信息界面 图15工资计算界面 6.2 功能实现代码 数据库连接代码 建立数据库连接的函数: int CSalaryApp::NewDBConnect() { CString strCon;//定义连接字符串 strCon.Format("DSN=%s;UID=%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 here UpdateData(TRUE); CString str,strSQL; strSQL.Format("select count(ID) as count from LoginInfo where username='%s' and password='%s'",m_Username,m_Password);//SQL查询语句,查询出管理员编号ID CRecordset rs(g_pDB);//构造记录集 rs.Open(CRecordset::forwardOnly,strSQL);//执行查询语句 rs.GetFieldValue("count",str);//检索当前数据的索引 rs.Close();//关闭数据集 if(!str.Compare("1"))//判断认证是否通过 { EndDialog(IDOK);//结束对话框、返回IDOK } else { AfxMessageBox("用户名或者密码错误"); } } 列表控件初始化代码 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("编号"), LVCFMT_LEFT,40,i++);//逐列插入列标题 将记录集显示到列表控件中的实现代码 void CSalaryView::ShowItem(CString strSQL) { ...记录集定义和记录集打开部分 else { int i=0,j=0; while(!EmployeeInfoSet.IsEOF())//判断记录集是否到达最后一条记录 { m_listEmployeeInfo.InsertItem(i,EmployeeInfoSet.m_num);//从第i行 第j列开始逐行插入记录集中的数据 .... i++; j=0; EmployeeInfoSet.MoveNext();//将记录集的指针移到下一个记录 } } EmployeeInfoSet.Close();//关闭记录集 } ....异常处理 } 添加信息实现代码 void CAddEmployeeDlg::OnButtonOk() { .....记录集的打开和判断记录集是否可以读取的部分代码 EmployeeInfoSet .AddNew();//添加新记录 EmployeeInfoSet .m_num =m_strNum;//设置各记录字段的值 ..... EmployeeInfoSet .Update();//更新记录集 EmployeeInfoSet .Close();//关闭记录集 } ....异常处理 } 删除信息实现代码 void CSalaryView::OnButtonDelete() { ...数据项定义 if(((CButton*)GetDlgItem(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 * from EmployeeInfo where num=%s",strPersonID);//构造将该信息移动到离职信息表中的SQL语句 strSQL1.Format("delete from EmployeeInfo where num=%s",strPersonID);//构造删除语句 TRY {. ..判断记录集的连接和异常处理部分代码省略 } END_CATCH_ALL db.BeginTrans();//开始处理事务 TRY { db.ExecuteSQL(strSQL);//执行SQL语句 db.ExecuteSQL(strSQL1);//执行SQL1语句 db.CommitTrans();//提交处理 } CATCH(CDBException ,e) { e->ReportError();//报告错误 db.Rollback();//回滚记录 return; } END_CATCH ShowItem("select * from EmployeeInfo"); } else//如果选中的是其他 { ....代码段相似,省略 } UpdateData(FALSE); } 下面是修改员工信息部分的代码: void CSalaryView::OnButtonModify() { .....字段定义和获取修改位置代码省略 iPos =m_listEmployeeInfo.GetNextSelectedItem(pos);//在修改的对话框中显示修改员工信息前的员工信息 dlg.m_strNum=m_listEmployeeInfo.GetItemText(iPos,i++);//逐个插入信息 ..... dlg.DoModal();//转到修改员工信息对话框 ShowItem("select * from EmployeeInfo"); UpdateData(FALSE); } 修改员工信息对话框确定按钮代码: void CModifyEmployeeDlg::OnButtonOk() { // TODO: Add your control notification handler code here UpdateData(TRUE); CString strTmp; strTmp.Format("SELECT * FROM EmployeeInfo where num = %s", m_strNum); CEmployeeInfoSet EmployeeInfoSet; TRY { ....打开记录集和判断记录集是否可以写入部分代码省略 EmployeeInfoSet.Edit(); EmployeeInfoSet .m_num =m_strNum;//设置各记录字段的值 ....//逐个加入修改的值、代码跟添加中的代码一样,这里不作说明 EmployeeInfoSet .Update();//更新记录集 EmployeeInfoSet .Close();//关闭记录集 EmployeeInfoSet.Update(); EmployeeInfoSet.Close(); } ...异常处理 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 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(SalaryInfoSet.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.GetLength())); 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("%f",F); //将float型转换为字符型 UpdateData(FALSE); } 七、结论与体会 通过这数周的数据库设计,使我们从中受到很大的教育和练习,不仅将大学所学的知识进行了实际应用,还学到了很多书本上学不到的知识。开阔了视野,增长了知识,积累了一些经验和教训。充分锻炼了自己的动手和应用能力,真正做到了理论联系实际。 我们设计的个工资管理系统,提供了较为完备的员工、部门、工资等信息,实现了数据库的的基本的操作,如修改、插入、删除、更新等。员工表的基本操作包括增、删、查、改,其中删除有俩种选择:离职和其他,如果选择的是离职,那么该员工的信息就相应的移至离职员工信息表中,否则就当删除处理,另外俩张表包括工资信息和部门信息表等都是增、删、查、改等基本操作,工资计算包括对整个部门的基本工资进行修改,包括计算某个员工这个月度的总工资,还包括对这个部门所有员工的工资进行统计。由于整个课程设计时间比较仓促,所以该系统还有许多不尽如意的地方,对某些功能的细节设计还缺乏完备性,缺乏对系统整体进行周密的考虑等等多方面问题。这些都有待于进一步的改善。 本次程序我主要负责代码的编写,在编写代码的过程中、遇到各种各样的问题、例如头文件的使用,连接数据库代码的操作,以及怎样建立数据源,怎么样用代码把程序与数据源之间的联系建立起来,怎么样利用记录集将数据库中的表和程序结合起来。这些问题在以前的学习过程中从来没有遇到过,在这次的编写代码的过程中,我学到了很多知识,学会怎么样建立与数据源的连接,怎么样去管理一个数据库,怎么样利用数据源建立与程序之间的联系。这些都是要自己重新去学习的。 最后,我们要感谢老师的关心、指导和教诲。再次向所有关心、帮助、理解、支持我们做好数据库课程设计的老师和同学们致以深深的谢意,感谢你们的帮助和关爱! 八、 参考文献 本程序主要使用到的参考书籍: 1. Visual C++从初学到精通 吕兵 曲宝军 王玮等编著 电子工业出版社出版 2. Visual C++6.0编程实用技术与案例 陈元琰 邓宗明 张睿哲 张晓竞编著 清华大学出版社出版 3. 深入浅出MFC 侯俊杰编著
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:工资管理系统2.doc
    链接地址:https://www.zixin.com.cn/doc/4136326.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


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

    自信网络  |  ZixinNetwork