工资管理系统课程设计用心整理精品资料.docx
- 文档编号:4199257
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:31
- 大小:467.02KB
工资管理系统课程设计用心整理精品资料.docx
《工资管理系统课程设计用心整理精品资料.docx》由会员分享,可在线阅读,更多相关《工资管理系统课程设计用心整理精品资料.docx(31页珍藏版)》请在冰豆网上搜索。
工资管理系统课程设计用心整理精品资料
计算机科学与技术学院
《C高级语言程序设计》
课程设计报告
(2012/2013学年第一学期)
学生姓名:
茹伟
专业班级:
计算机112002班
学生学号:
201120010220
指导教师:
王艳
2012年 12 月 29日
《工资管理系统》的设计与实现
(一)课题的来源和研究意义4
(二)课题的开发环境4
(三)本课题要达到的设计目标5
附录2程序清单-—---—-—-—-—-————--—-——---———-—-——---——--———-—-—--
一目的和要求
(一)课题的来源和研究意义
随着计算机的日益普及和网络的发展,数据库的应用范围越来越广,数据库应用的功能也越来越强,因此编写管理信息系统应用程序也显得尤为重要,在强调管理,强调信息的现代社会中它变得越来越普及。
工资管理是任何企事业单位都需要进行的一项工作,因此,开发制作工资管理系统具有较大的社会现实意义,同时工资管理系统是一切应用系统的典范,它具有一切应用系统的特征,系统结构与现实生活紧密结合,具体直观,具有典范的数据库系统的特性。
工资管理系统主要用于企业内部员工的档案、工资、考勤、评价的管理,便于公司领导掌握人员的动向,及时调整人才的分配,同时也减少了手工操作带来的一些繁琐与不便,使员工情况的记录和统计变得十分简单.这些优点可以极大的提高企业对人事管理的效率。
因此,工资管理系统是企事业信息化、智能化、科学化和正规化不可缺少的管理软件。
(二)课题的开发环境
本系统的设计是在Windowsxp中文版操作系统环境下,使用VisualC++6.0中文版开发成功的。
数据库SQL是其中的重要支持技术,在数据库开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多,每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,本系统选用的数据库语言介绍如下:
C++语言。
C++是一种使用非常广泛的计算机编程语言.C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。
很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。
(三)本课题要达到的设计目标
工资管理信息系统的开发目标是:
克服现在工资管理中存在的人工管理,统计与查询单一、管理效率低下等问题;能科学有效的管理工资,方便地查询和统计人员、工资等情况,对所需要的数据以表格形式显示,以报表形式打印,并为将来进一步扩充和发展工资管理系统奠定基础.
二课程设计任务内容
(一)系统功能分析
系统开发的总体任务是要实现企业人事信息关系的系统化,规范化和自动化.
系统功能分析是在系统开发的总体任务的基础之上完成的。
工资管理系统主要有以下几项功能:
1.员工档案的管理:
包括员工基本信息,姓名和工号。
2.员工工资的管理:
包括工资的添加,工资报表的查询,修改和删除.
3.月份工资的管理:
包括添加某月某员工的工资和查询某月所有员工的工资信息。
4.员工补贴的管理:
包括津贴,房贴和交通费的输入,计算和修改。
5.员工扣除的管理:
包括房租,会费和税务的输入,修改和计算。
6.计算:
对工资各项数据进行汇总计算。
7。
保存信息和退出系统。
8.管理员以及其它功能模块。
(二)功能模块图
根据系统功能的要求,可以将系统分解成几个功能模块来分别设计,功能模块如图2—1所示
图2-1功能模块图
三、详细设计任务内容
(一)系统功能和流程
数据库的设计是指对于一个给定的应用环境,构造最有效的数据库模式,建立数据及应用系统,实质能够有效地存储数据,满足用户的需求,数据库设计是在数据库管理系统支持下进行的。
根据功能模块图,可以列出以下数据项和数据结构:
员工信息:
工号,姓名。
工资管理:
工号,月份,姓名,底薪,津贴,房贴,交通费,应发工资,实发工资.
员工扣除管理:
工号,月份,姓名,房租,会费,税务,应扣数。
管理员:
编号,用户名,密码。
(二)程序流程图
得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
根据上面的设计规划出的实体有:
员工基本信息实体,员工考勤信息实体,员工工作评价信息实体,员工工资信息实体,人事变动实体,部门管理实体.
根据实体之间的联系得出程序流程图如图3—1所示。
否
是
是
否
否
是
图3-1程序流程图
(三)数据库逻辑结构设计及函数功能表
根据实体间联系模型的需求分析,本系统需要设计工资管理,考勤管理,员工信息3个表来管理员工数据。
具体数据表的设计如下面的表格所示。
表3▪1工资管理表
字段名
数据类型
长度
是否为空
说明
gzid
Varchar
10
Notnull
工号
gzname
Varchar
8
Notnull
姓名
dixin
Money
8
Notnull
底薪
fangtie
Money
8
null
房贴
jiaotongfei
Money
8
null
交通费
fangzu
Money
8
null
房租
huifei
Money
8
null
会费
suodeshui
Money
8
null
所得税
表3▪2员工档案信息表
字段名
数据类型
长度
是否为空
说明
ygid
Varchar
10
Notnull
工号
ygname
Varchar
20
Notnull
姓名
name
char
20
Notnull
管理员用户名
password
char
8
Notnull
密码
表3▪3函数功能表
Add()
添加信息
Delete()
删除信息
Search(charnu[])
根据职工号查找
ReadFile()
从文件中读取信息
WriteFile()
向文件中写入信息
Display()
在屏幕中输出全部信息
Print()
输出表头
Print2()
按月份输出所有职工的工资信息
Print1(charnu[])
按职工编号输出所有职工的工资信息,带有返回值
Change()
修改信息
四、系统详细设计与模块的具体实现
(一)系统的主界面
在登陆主界面之前,首先登记用户管理窗体:
否
是是
否
图4-1登陆流程图
图4—2管理员登陆界面
(二)员工信息管理模块
登入后界面如图:
图4-3主菜单图
可以选择0--9并Enter来进行操作;选择1可以进行添加职工信息,输入职工编号和姓名来编入职工。
如果输入的职工编号重复,则不能输入该信息,如图:
图4-4员工重复效果图
选择2可以查看所有职工的信息和编号。
选择3可以删除职工信息。
(三)员工工资管理模块
选择4可以添加工资信息.如图:
图4-5工资信息输入图
依次输入编号,月份,基本工资,津贴,房贴,交通费,房租和会费,Enter后可以添加信息了。
选择7就可以查看刚刚输入的工资信息了,如图;实际发放工资也计算显示了:
图4-6职工工资图
选择5可以修改信息,比如基础工资,津贴,房贴等数据的改动都可以修改。
选择6则可以删除工资信息,可以选择某个月份,删除该月的工资信息.
选择8则是输出显示某个月的全部职工工资信息,如图:
图4—7工资信息输出图
(四)保存退出和软件测试
选择9可以保存信息,刚添加的信息需要保存,如果不保存,则退出系统后该信息就会消失。
选择0则是退出系统。
图4-8退出系统图
4。
4。
1确认测试
确认测试是根据软件需求说明书中定义的全部功能、性能要求以及确认测试计划来测试整个软件系统是否达到了要求,确认测试是软件产品实际应用之前一道完整又系统的检验,是软件质量保证的最后一个环节.
4.4.2测试结果分析
测试结果表明,由测试用例基本上能产生预期的结果,本系统具有很好的抗错能力.由于在设计过程中对数据的输入都进行了合法性检查,从而保证的数据的正确性。
对于在测试过程中发现的错误,通过利用归纳、演绎和回朔等技术有效地排除了错误,从根本上保证了系统的质量。
五、心得与体会
经过四周的C++课程实践,我对C++语言设计有了一个更深,更全面的了解,尤其体会到了C++面向对象操作对简化程序的重要作用。
下面是我的几点体会:
①刚拿到课题时,我一脸的茫然,看到如此庞大的工程,不知如何下手。
这个工资管理系统中职工子信息竟然包含15条,以前从来没有遇到过如此多的变量.和同学讨论很久好,我发现其实可以化繁为简的,信息中15条不一定全都要,因为其中本身就有重复的,例如津贴和补贴。
并且可以有一个pay的数组来处理数据.所以做任何事情都必须要开动脑筋,积极思考,有时还要学会化繁为简。
②在编程时条理清晰是至关重要的.主函数,函数,成员函数之间的层次关系,调用关系一定要有一个全面的把握,尤其要体会类的封装性。
另外很重要的一点就是一定要对链表的五种操作熟练的掌握。
③在编译,链接,调试的过程中一定要有耐心。
因为一个程序中会有很多小的错误,甚至有的问题要几个小时才能解决。
遇到问题,一定要全面分析,有时候还要向同学请教。
总得来说,编程时极需要耐心的.
还有程序里虽然可以运行了,但是应该有的功能也没有,比如说输入职工信息时,输入的职工工号和原来储存的信息里有的工号不能重复,避免输入错误,照成不必要的损失。
总之,C++课程设计实践为我们提供了一个综合运用所学知识,解决实际问题的平台,增强了我们实践动手的能力和工程实践能力,并且锻炼和培养了我们的自学能力,让我们对C++有了一个更全面的了解。
附录1参考文献
谭浩强编著,C++程序设计,清华大学出版社,2004
陈文宇,张松梅编著,C++语言教程,电子科技大学出版社,2004
附录2程序清单
源代码如下:
#include #include〈stdlib.h〉 #include〈conio。 h> #include #include intj; #include〈iomanip> usingnamespacestd; classGZ; structzhigong {charnumber[10]; charname[15]; }; structZhigong {zhigongzg; Zhigong*next; }; classZG//定义一个职工类 { Zhigong*head;//头指针 Zhigong*p;//当前指针 public: ZG(){head=p=NULL;}; voidAdd(); voidDelete();//删除职工 intSearch(charnu[]);//根据职工号查找 voidReadFile();//从文件中读取职工信息 voidWriteFile();//向文件写入职工信息 voidDisplay();//在屏幕中输出全部职工信息 voidPrint(charnu[]); voidPrint(); friendclassGZ; }; voidZG: : Add() { p=newZhigong; cout<<”\t请输入职工编号: ";cin>〉p—〉zg.number; if(Search(p—>zg。 number)==0) {cout〈〈”\t请输入职工姓名: ";cin〉〉p-〉zg。 name; p->next=head;//头插入建链表 head=p; cout〈〈endl; } else cout<<"\n\t已经存在该职工,不能重复添加! "〈 } //////////////////////// voidZG: : Delete() { if(head! =NULL) {intn=0; Zhigong*q=head; Zhigong*q1=head,*q2=head-〉next; chargh[10]; cout〈〈”\t请输入您要删除的职工编号: "; cin>>gh; while(q! =NULL) {n++; if(strcmp(q-〉zg。 number,gh)==0)break; q=q—>next; } if(q==NULL)cout<<"不存在该职工! ”〈〈endl; else {if(n==1)head=head-〉next; else {for(inti=1;i {q1=q2; q2=q2—〉next; } if(q2==NULL) q1=NULL; else q1—〉next=q2->next; } cout<<"删除成功! "< }} } /////////////// intZG: : Search(charnu[]) {Zhigong*q=head; while(q! =NULL) {if(strcmp(q—>zg。 number,nu)==0)break; q=q—>next; } if(q==NULL)return0; elsereturn1; } /////////////////// voidZG: : ReadFile() {p=newZhigong; ifstreamfip("职工信息。 dat",ios: : in|ios: : binary); if(! fip)cout〈〈"未创建该文件! ”〈 else while(fip。 read((char*)&p->zg,sizeof(p—>zg))) {p—〉next=head; head=p; p=newZhigong; } fip。 close(); deletep; } //////////////////// voidZG: : WriteFile() {Zhigong*s=head; ofstreamfop; fop.open("职工信息。 dat",ios: : binary|ios: : trunc); if(! fop) {cout〈<”职工信息。 dat无法打开! ”〈〈endl; abort(); } while(s) {while(fop.write((char*)&s—>zg,sizeof(s->zg))) {s=s—>next; } } fop.close(); } /////////////////// voidZG: : Print() {cout〈〈"\t\t"〈〈setiosflags(ios: : left)<〈setw(10)〈<"职工编号”< : left)〈 } voidZG: : Print(charnu[]) {Zhigong*q=head; while(q! =NULL) {if(strcmp(q—>zg.number,nu)==0)break; q=q—〉next; } if(q! =NULL) {Print(); cout〈〈"\t\t”<〈setiosflags(ios: : left)< : left)<〈setw(15)〈〈q—〉zg。 name〈 } else cout<<”职工不存在”〈 } ///////////////////////////// voidZG: : Display() {if(head==NULL) cout〈<"没有职工信息! \n\n”; else {Zhigong*k=head; Print(); while(k) {cout<〈"\t\t"<〈setiosflags(ios: : left)< number〈〈setiosflags(ios: : left)〈〈setw(15)<〈k—〉zg。 name<〈endl; k=k-〉next; } } } ///////////////////////////////////////////////////////// structgongzi {charmonth[7]; charnum[10]; floatdixin; floatjintie; floatfangtie; floatjiaotongfei; floatfangzhu; floathuifei; floatyingfa; floatsuodesui; floatyingkou; floatshifa; }; structGongzi {gongzigz; Gongzi*next; }; classGZ//定义一个职工类 { Gongzi*head;//头指针 Gongzi*p;//当前指针 public: GZ(){head=p=NULL;}; voidAdd(); voidDelete();//删除 voidChange(); voidReadFile();//从文件中读取职工信息 voidWriteFile();//向文件写入职工信息 voidPrint1();//按职工编号输出所有职工的工资信息 intPrint1(charnu[]);//按职工编号输出所有职工的工资信息,带有返回值 voidPrint2();//按月份输出所有职工的工资信息 voidPrint();//输出表头 }; voidGZ: : Add() {ZGA; A.ReadFile(); p=newGongzi; cout<〈"职工编号: ";cin〉>p->gz。 num; if(A.Search(p-〉gz.num)==1) {cout<<”月份: ";cin>〉p—>gz。 month; cout<<"基本工资: ”;cin>〉p—>gz.dixin; cout<<"津贴: ”;cin>>p->gz。 jintie; cout〈〈”房贴: ”;cin〉〉p->gz.fangtie; cout<<"交通费: ";cin〉〉p-〉gz.jiaotongfei; cout〈〈"房租: ";cin〉>p—>gz.fangzhu; cout<<”会费: ”;cin〉>p-〉gz。 huifei; p—>gz.yingfa=p—〉gz。 dixin+p-〉gz.jintie+p->gz。 fangtie+p—>gz.jiaotongfei; if(p—>gz。 yingfa<=2000)p->gz。 suodesui=0; else p-〉gz。 suodesui=(p-〉gz.yingfa-2000)*0。 2; p—〉gz。 yingkou=p->gz。 fangzhu+p->gz。 huifei+p->gz。 suodesui; p-〉gz.shifa=p—〉gz。 yingfa-p->gz.yingkou; p->next=head;//头插入建链表 head=p; } elsecout<〈"没有该职工,不能添加工资信息! "< } voidGZ: : Print() {cout〈〈setiosflags(ios: : left)< : left)〈〈setw(9)<<”职工编号” < : left)〈 : left)<〈setw(5)<〈”津贴"<〈setiosflags(ios: : left)< < : left)< : left)〈〈setw(7)<<”应发数”〈〈setiosflags(ios: : left)< <<"房租”<〈setiosflags(ios: : left)<〈setw(5)〈<”会费"〈〈setiosflags(ios: : left)< : left)<〈setw(7) <<"应扣数"〈 : left)〈〈setw(7)<〈"实发数"< } //////////////////////////////////////////////////// voidGZ: : Print1() {intn=0; charnu[10]; cout〈〈”\n\n\t\t请输入职工编号: ”; cin〉〉nu; if(head==NULL) cout<<”\n\n\t\t没有工资信息! \n\n”; else{p=head; while(p) {if(strcmp(p—>gz。 num,nu)==0)n++; p=p—〉next; } } if(n! =0) {p=head; Print(); while(p) {if(strcmp(p-〉gz.num,nu)==0) cout<〈setiosflags(ios: : left)〈〈setw(7)< : left)<〈setw(9)<〈p->gz.num〈 : left)〈〈setw(7)<〈p—>gz.dixin <〈setiosflags(ios: : left)<〈setw(5)〈〈p->gz。 jintie< : left)<〈setw(5)<〈p->gz。 fangtie 〈 : left)<〈setw(7)< gz.jiaotongfei〈〈setiosflags(ios: : left)〈 yingfa< : left)<〈setw(5) <
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工资管理 系统 课程设计 用心 整理 精品 资料