C++课程设计_职工工资管理系统(报告内含程序完整清单)_第1页
C++课程设计_职工工资管理系统(报告内含程序完整清单)_第2页
C++课程设计_职工工资管理系统(报告内含程序完整清单)_第3页
C++课程设计_职工工资管理系统(报告内含程序完整清单)_第4页
C++课程设计_职工工资管理系统(报告内含程序完整清单)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、目录目录i1概述11.1程序的基本功能11.2其它功能11.3扩展功能12课题的分析22.1会员登入系统模块即systemhead静态全局函数模块22.2查询功能模块即search函数模块22.3职务信息匹配及处理模块即systembody静态全局函数模块模块422.4循环控制模块即while(1)模块23详细设计33.1类声明33.2系统简略流程图43.3会员登入系统模块即systemhead静态全局函数模块53.4查询功能模块即search函数模块63.5职务信息匹配及处理模块即systembody静态全局函数模块73.6循环控制模块即while(1)模块74课程设计总结84.1完成情况8

2、4.2遇到的问题及解决8参考文献11附录12i程序设计语言课程设计报告261 概述本课程设计是面向对象程序设计课程的后继教学环节,学好c+语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写c+实际应用程序。此次课程设计的题目及要求:实现一个简单的工资管理系统。1.1 程序的基本功能系统的主要功能是计算职工当月工资并存档。公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。1.2 其它功能将工资信息存入salary.txt文件中,工资信息包含雇员编号、姓名、职务、月份、月收入。info.txt文件中只存留一些信息及会员

3、最后进入系统时输入的数据,最多含有编号、姓名、职务、月份的信息。1.3 扩展功能采用了会员制度,并将登入信息及编号、密码存入number.txt文件中。2 课题的分析通过对课题的深入分析,我将这个课题分为以下几个模块,深入详细得剖析它们。2.1 会员登入系统模块即systemhead静态全局函数模块程序运行后,先进行会员选择判断。为减少会员重新注册,通过输入两次编号及密码,增加繁琐度。同时在一定的方面上,又方便忘记密码的会员。通过密码匹配,雇员的工资信息这一隐私得到了很好的保障。2.2 查询功能模块即search函数模块首先,从info.txt中提取编号,与salary.txt中的编号进行匹配

4、,匹配成功,输出工资信息,直到文件!indata.eof()=0。.2.3 职务信息匹配及处理模块即systembody静态全局函数模块模块4从info.txt中提取职务信息,用switch语句进行匹配,据匹配情况调用不同的函数进行输入、处理、显示并以增加方式记录到salary.txt中。2.4 循环控制模块即while(1)模块为了更加方便使用,尽量改善系统,实现search函数及systembody函数功能,在search函数及systembody函数模块的基础上加了一些必要的语句,并增加了外层循环控制。3 详细设计作为一个面向对象程序设计,我们不得不先从类的声明开始设计,而后是一个整体的

5、流程图做框架。最后在从小的模块结构着手。class techmanager:public technician, public managerprivate:float gradebonus;int grade;public:techmanager(float x=1000);void setgrade(float x);void countsalary( );图3.1 类声明3.1 类声明图3.2 职工工资管理系统简略流程图3.2 系统简略流程图开始优点:一个入口,一个出口!处理5输入5输入4输入3输入2输入1处理4处理3处理2处理1工资记录在salary.txt职务代码分析显示真10查询信

6、息选择?是否会员否注册是输入编号及密码假检验?真输入姓名、职务、月份记录编码姓名职务月份至info.txt从info.txt提取职务代码再次输入假结束3.3 会员登入系统模块即systemhead静态全局函数模块清空info.txt并将编号存入到info.txt中图3.3 登入系统模块详细流程图否是否会员输入编号及密码打开name.txt并输出编号及密码匹配?关闭name.txt否是以增加方式打开name.txt并输入编号及密码关闭name.txt.输入编号及密码3.4 查询功能模块即search函数模块10否是输出info.txt中的职务信息将info.txt的编号与salary.txt中的

7、编号进行匹配是否打开info.txt!indata.eof() ?图3.4 查询功能模块以默认方式打开info.txt以默认方式打开salary.txt从文件info.txt中提取编号并关闭文件输出“以上是你的工资信息!”关闭salary.txt3.5 职务信息匹配及处理模块即systembody静态全局函数模块图3.5 systembody函数模块以默认方式打开info.txt提取info.txt中的职务信息switch语句进行职务匹配调用不同函数进行数据处理及显示3.6 循环控制模块即while(1)模块图3.6循环控制模块即while(1)模块102输入选择操作查询功能模块info及re

8、cordinfo调用systembody调用选择?结束4 课程设计总结4.1 完成情况本次面向对象课程设计的所有功能基本完成,并且扩展功能也成功的实现!可执行文件能正常执行指令并运行!4.2 遇到的问题及解决图4.2.1错误error c:users权desktopmain.o(.data$_vt$8employee+0xc):main.cpp: undefined reference to employee:countsalary(void)错误:没有定义employee类中的countsalary函数!改正:将原先的“virtual void countsalary();”改为” virt

9、ual void countsalary()”图4.2.2错误错误分析:(会员板块中)提示:“数字1表示是!其他键表示否!”,但定义的选择变量为整型。加上我当时输入字符p。改正:“其他键表示否!”改为”数字0表示否”。输入时按提示进行输入即可!图4.2.3错误调试分析:错误发生在systemhead静态全局函数内的文件输入循环模块中!改正:将以nocreate方式即” ifstream indata(d:number.txt,ios:nocreate); “ 该为默认打开方式即“ifstream indata(d:number.txt);”。图4.2.4错误调试分析:错误发生在调用system

10、body静态全局函数前后的while循环模块中,很有可能是数据存取混乱造成的。改正: systemhead静态全局函数内“ofstream outdata(d:info.txt,ios:trunc);”改为先清后在以默认方式输入!且将存取整型编号的变量类型从字符型改为整型。图4.2.5错误错误:后面莫名其妙的跟着一个提示语句指令。分析调试:当语句指令是基类info函数内的语句,很有可能是循环控制出现了一些问题。改正:见程序源代码!参考文献1 下面给出几个参考文献的格式参考2 匿名,不知道,非常多计算机实用教程北京:xx大学出版社,2004,1232343 美 donis somethingvi

11、sual x# 2008技术内幕北京:yyy大学出版社,2007,56784 johns smith, james nothing. programming in c+ or anything and something. http:/www.world.ic.ac.uk/lab/cplusplus/nothing/index.html 20075 anonymous. something to say. 20076 面向对象程序设计 ,郑莉,清华大学出版社, 7 面向对象程序设计c+语言,朱战立等编 西安电子科技大学出版社8 面向对象程序设计-visual c+,刘斌等编, 清华大学出版社

12、9 面向对象程序设计-c+语言描述, richard johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社, 2003附录本系统有三个源程序文件构成,分别为system.h, system.cpp及main.cpp。同时含有三个系统文件,分别为info.txt, name.txt及salary.txt,且全部存放在d盘根目录下,请勿随意移动或修改系统文件。当会员正式进入系统, info.txt是先清空后用来存储会员输入的信息,最多含有编号、姓名、职务及月份。当仅会员注册时,会将编码及密码存储到name.txt中。当仅会员登入的编号及密码进行匹配时,会打开输入文件name.txt,提取

13、编号及密码,进行匹配。当仅当输入工资数据时,会将工资、编号、姓名、职务、月份存储到salary.txt中。当仅当查询工资信息时,会打开salary.txt,提取编号、姓名、职务、月份及工资。该系统是一个只适合5种及5种职务的工资管理系统。并将职务分为技术人员、销售人员、文秘、技术经理和销售经理,其代号分别为1,2,3,4,5。雇员编号以整型变量存储,编号所取范围在-65536至65535之内(包括边界值),首位数字表示相应的职务代码。该系统能力有限,请根据指示严格输入相应字符!程序清单main 函数#include system.cpp#include cstringstatic void s

14、ystemhead();static void systembody(); static void technician();static void salesman();static void secretary();static void techmanager();static void salesmanager();using namespace std;void main()systemhead(); /调用systemhead静态全局函数 coutnn1: 查询工资;coutnn2: 输入工资数据;coutnn0: 退出系统!nn;coutxuanze; if(xuanze=1)

15、employee a; coutendlendl; a.search(); coutnn输入工资数据请按数字2,退出系统请按数字0!nn; /查询工资信息 if(xuanze=2) employee a; (); a.recordinfo(); /输入处理工资数据并暂时记录 systembody(); /调用systembody静态全局函数 coutnn查询工资请按数字1,退出系统请按数字0!nn; if(xuanze=0)exit(0); static void salesmanager()salesmanager a5;float sum;coutsum;a5.setsales

16、num(sum);a5.countsalary();a5.recordsalary();static void techmanager()techmanager a4;int gra;coutgra;a4.setgrade(gra);a4.countsalary();a4.recordsalary();static void secretary()secretary a3;float bon;coutbon;a3.setbonus(bon);a3.countsalary();a3.recordsalary();static void salesman()salesman a2;float su

17、m;coutsum;a2.setsalesnum(sum);a2.countsalary();a2.recordsalary();static void technician()technician a1;float hour;couthour;a1.sethour(hour);a1.countsalary();a1.recordsalary();static void systembody()ifstream indata(info.txt);if(indata=null) exit(0);int num;char na25;int sta;indatanumnasta; /职务代号分别为1

18、,2,3,4,5 switch(sta)case 1:technician();break;case 2:salesman();break;case 3:secretary();break; case 4:techmanager();break; case 5:salesmanager();break;default:cout职务代号错误!n请重新输入!;static void systemhead()char x,y=y;int num;char secret6;while(y) coutx; if(x) coutnum; coutsecret; /输入编号及密码 ifstream inda

19、ta(number.txt); if(indata=null) coutnum1; while(!indata.eof() indatasecret1;if(num=num1)&(strcmp(secret,secret1)=0)y=0; /改变判断变量的值,停止外层循环 break; /终止内层循环 indatanum1; indata.close(); / 检验 登入信息 else coutnum; coutsecret; /注册输入编号及密码ofstream outdata(number.txt,ios:app);outdatanumtsecrett;outdata.close(); /

20、将编号及密码保存到number.txt中coutendlendl; ofstream outdata(info.txt,ios:trunc); outdata.close(); /清空文件内容 ofstream outdata1(info.txt);outdata1numt;outdata.close(); /输入编号至info.txt system.cpp#include #include #include system.husing namespace std;void employee:info()char na25;int sta,mon;coutnastamon;name=na;st

21、atus=sta;month=mon; /存储姓名、职务、月份 void employee:search()int num;ifstream indata0(info.txt);if(indata0=null) exit(0);indata0num;indata0.close(); /从文件info.txt中提取编号 int num1;char na125;int sta1;int mon1;float sal;int mon0;ifstream indata(salary.txt);if(indata=null) exit(0);while(!indata.eof()indatanum1na

22、1sta1mon1sal;if(num=num1)coutnum1tna1tsta1tmon1tsaln; /依次输出该雇员的工资信息 if(indata.eof() coutnn以上是你的工资信息!nn; indata.close();void employee:recordinfo()ofstream outdata(info.txt,ios:app);outdatanametstatustnumbernamestatusmonth;indata.close(); /依次输出该雇员的工资信息 int num1;char na125;int sta1;int mon1;float sal;i

23、fstream indata1(salary.txt);if(indata1=null) exit(0);while(!indata1.eof()indata1num1na1sta1mon1sal;if(month!=mon1)coutnum1tna1tsta1tmon1tsaln;else exit(0); /依次输出该雇员的工资信息 coutnumbertnametstatustmonthtsalary; /显示工资信息ofstream outdata(salary.txt,ios:app);outdatannumbertnametstatustmonthtsalary;outdata.c

24、lose(); void technician:sethour(float x)workhour=x;technician:technician(float x)hoursalary=x;void technician:countsalary()salary=workhour*hoursalary;void salesman:setsalesnum(float x) salesnum=x;salesman:salesman(float x)getrate=x;void salesman:countsalary( )salary=salesnum*getrate;void secretary:s

25、etbonus(float x) bonus=x;secretary:secretary(float x)fixedsalary=x;void secretary:countsalary( )salary=fixedsalary+bonus;manager:manager(float x)fixedsalary=x;void techmanager:setgrade(int x)grade=x;techmanager:techmanager(float x)gradebonus=x;void techmanager:countsalary()salary=fixedsalary+grade*g

26、radebonus;salesmanager:salesmanager(float x)getrate=x;void salesmanager:countsalary()salary=fixedsalary+salesnum*getrate;void technician:sethour(float x)workhour=x;technician:technician(float x)hoursalary=x;void technician:countsalary()salary=workhour*hoursalary;void salesman:setsalesnum(float x) sa

27、lesnum=x;salesman:salesman(float x)getrate=x;void salesman:countsalary( )salary=salesnum*getrate;void secretary:setbonus(float x) bonus=x;secretary:secretary(float x)fixedsalary=x;void secretary:countsalary( )salary=fixedsalary+bonus;manager:manager(float x)fixedsalary=x;void techmanager:setgrade(in

28、t x)grade=x;techmanager:techmanager(float x)gradebonus=x;void techmanager:countsalary()salary=fixedsalary+grade*gradebonus;salesmanager:salesmanager(float x)getrate=x;void salesmanager:countsalary()salary=fixedsalary+salesnum*getrate;system.hclass employeeprotected:int number; char name25; int status;int month; float sal

温馨提示

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

评论

0/150

提交评论