工资管理系统.doc_第1页
工资管理系统.doc_第2页
工资管理系统.doc_第3页
工资管理系统.doc_第4页
工资管理系统.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

一. 需求和规格说明此次课程设计的目的是以程序设计语言II为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。从而提高自我分析问题、解决问题的能力。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程程序设计语言II的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象的程序设计方法。(6)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)、修改程序和程序的测试。二课程设计名称及其内容课程设计名称:工资管理系统设计内容:设计一个工资管理系统,能够对企业职工的工资进行管理, 公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。系统主要包括工资数据录入、数据统计、数据备份等功能。在设计时要考虑到对不同级别的职工工资的计算方法。一、 任务和要求运用面向对象的程序设计方法,要求选择动态数组类模板或链表类模板,任务中要运用I/O流对象对文件进行读写操作。本题总体设计,要有一个菜单,用于选择各项功能,其中1) 数据录入:输入各种数据;输入数据要求每类人员不能少于4人,并按以下格式输出:职工号姓名性别年龄岗位工资2) 数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序;3) 数据备份:把相关数据写入文件;4) 退出:退出本系统;注:各项菜单都调用一个函数来实现。二、 设计方案提示1、 工资的计算办法:1)经理:固定月薪为8000;2)技术员:工作时间*小时工资(100元每小时);3)销售员:销售额*4%提成;4)销售经理:底薪(5000)所辖部门销售额总额*0.5%;2、类的层次结构大体如下:雇员类技术员类经理类销售员类销售经理类3、在实现的时候考虑继承和多态技术的合理使用 三设计1.设计思想由于有四类人经理,销售经理,技术员和销售员,所以先设计四个类经理类,销售经理类,技术人员类和销售员类,又由于每类人的基本信息的类型都一样,所以可以设计一个共同的基类来定义信息的种类以及完成基本信息的录入和提起,然后以plublic的类型来继承就可以完成各类人员的各项信息的录入和读取。要求有四大项功能各类人员信息的录入和显示,销售经理工资的冒泡排序,文件的读取和提取和退出整个系统。这样一来可以用四个函数来实现个功能,然后用switch来选择各项功能。2功能设计各类人员信息的录入和显示,销售经理工资的冒泡排序,文件的读取和提取和退出整个系统。这样一来可以用四个函数来实现各个功能分别是void inputnumber();void outputnumber(double *m);void doublenumber();和break来实现。然后一一来完成各个函数的功能实现过程。3详细设计 共同的基类employee包括如下信息:class employee/基类private:char number20,name20,sex10,job40;int age;public:void getnumber();/职工号的输入void getname();/姓名的输入void getsex();/性别的输入void getjob();/职位的输入void getage();/年龄的输入char * outnumber();/职工号的输出char * outname();/姓名的输出char * outsex();/性别的输出char * outjob();/职位的输出int outage();/年龄的输出经理类manage的信息如下:class manage:public employee/*派生经理类*/private:double managesalary;/定义销售经理的工资public:manage();/构造函数double outsalary();/获取工资技术类technology的信息如下:template /*派生技工类*/class technology:public employeeprivate:int worktime,moneyh;/定义工作时间和每小时的工作额public:technology()moneyh=20;/构造函数void getworktime();/输入工作时间T outsalary();/提取工资销售经理类sellmanage类的信息如下:template /*派生销售经理类*/class sellmanage:public employeesprivate:T sellmanagesalary,s,sum;/定义其下的销售总额,T型s和工资public:void getsalary();/工资的获取T outsalary();/输出工资 销售员类employees的信息如下:template /*派生销售员类*/class employees :public employeeprivate:T sellnumber,employeesalary,extra;/定义销售额,工资和提成public:void getsellnumber();/输入销售额void getextra();/输入提成T outsellnumber();/获取销售额 T outsalary();/获取工资以及三个大函数输入的录入和现实,冒泡排序销售经理的工资和文件的存储和读取。/*数据录入和输出函数*/void inputnumber()/*输出冒泡工资函数*/void outputnumber(double *m)/*存入文件函数*/void doublenumber()这三个函数来实现功能。四. 调试及测试1、调试过程中遇到的主要问题及解决方法在调试过程中主要的问题就是输入人员的信息时由于人员比较多且信息的数量和种类都不相同,导致输入的信息我定义的不吻合,而出现结束的现象。解决方法我用的是静下心来看清提示后再录入对应的信息。2、对设计和编码的回顾讨论和分析;回顾设计:总的来说,刚开始看到题目和要求时感觉自己编不出来,于是就有一点害怕的心理。但由于还要答辩,结果还是根据要求开始下笔,说也奇怪很快就写完了,但不幸的是编译时有好多的错误,这可是一个很大的麻烦啊,写程序不难,难的就是改程序啊,又由于我的电脑上的VC+软件不能显示错误的个数和在哪个地方,只能显示有错误并且有多少错误都只显示一个错误,导致我无法改动,于是开学后我28就到校了,然后从同学那里重新装了个VC+软件,后来我就开始修改我的程序了,可是到了31号要答辩了,我仍没有修改完毕。我带着有错误的程序到了实验室,问问老师,在下午的时候我终于修改完毕了。讨论和分析:首先我问了我的同学关于我的程序的错误,可是由于错误好像很难改,我问了好几个同学都没能帮上我的忙,然后我就自己根据自己的思路开始慢慢一点一点分析自己的程序,在我好几天的奋斗下算是有了点成绩,修改了一些错误,但是有好几个错误我实在是看不懂,就在31号上午,在老师的提示下我才完成程序错误的修改。3、程序运行的时空效率分析总体看来,程序基本上完成了任务书的要求,但是我感觉程序的可读性不是很好,并且输出后的格式也有点挤(完成的比较匆忙)。4、测试数据集 数据的录入:数据的显示:工资的冒泡排序:存入文件与读取:五、经验和体会。通过本次的程序设计让我学到了很多我原先没有学到的知识点,并且以前上课学习的知识点也得到了很大的巩固。我设计本次的最大体会就是凡事还是自己做的才是最好的,自己写出来的才叫会,有时说着知道这个知识点,甚至说得是头头是道,也不可能写出来的程序完全正确。即使想着会,或者自己觉得会这个知识点,但是在自己写某个程序的时候就会发现很多问题,然后自己就会重新看书或者问问同学和老师帮自己结束掉问题,经过很长时间的付出才会完成一个完全正确的程序,就是完成这个程序的过程中自己已经不知不觉的学到了比在课程上多得多的知识点,俗话说得好“自己动手,才能丰衣足食”,在这里道理一样,自己真正的思考了,才会把知识真的学到手,成为自己的一部分。还有就是学程序重要的不是我看了多少书,而是我写了几个能完成的程序,即使不能完成也要尽力的去思考。思考是一切根源,动手时思考的实践。实践是知识的积累。附录:主要源程序#include #include using namespace std;/*类的定义*/employee.hclass employee/*基类*/private:char number20,name20,sex10,job40;int age;public:void getnumber();void getname();void getsex();void getjob();void getage();char * outnumber();char * outname();char * outsex();char * outjob();int outage();class manage:public employee/*派生经理类*/private:double managesalary;public:manage();double outsalary();template /*派生技工类*/class technology:public employeeprivate:int worktime,moneyh;public:technology()moneyh=20;void getworktime();T outsalary();template /*派生销售员类*/class employees :public employeeprivate:T sellnumber,employeesalary,extra;public:void getsellnumber();void getextra();T outsellnumber();T outsalary();template /*派生销售经理类*/class sellmanage:public employeesprivate:T sellmanagesalary,s,sum;public:void getsalary();T outsalary(); /*类的实现*/void employee:getnumber()cinnumber;void employee:getname()cinname;void employee:getsex()cinsex;void employee:getjob()cinjob;void employee:getage()cinage;char * employee:outnumber()return number;char * employee:outname()return name;char * employee:outsex()return sex;char *employee:outjob()return job;int employee:outage()return age;manage:manage()managesalary=8000;double manage:outsalary()return managesalary;template void technology:getworktime()cinworktime;template T technology:outsalary()return worktime*moneyh;template void sellmanage:getsalary()employees em4;sum=0;cout输入其部下4个销售员的销售额endl;for(int i=0;i4;i+)emi.getsellnumber();s=emi.outsellnumber();sum+=s;sellmanagesalary=(5000+sum*0.005);template T sellmanage:outsalary()return sellmanagesalary;template void employees:getsellnumber()cinsellnumber;template T employees:outsellnumber()return sellnumber;template void employees:getextra() cinextra;template T employees:outsalary()return sellnumber*extra*0.04;/*主函数*/void main()int choice,i,flag=0;void inputnumber();/数据录入与显示void doublenumber();/文件保存与读取for(i=0;i4;i+)cout数据录入请按1 备份请按2 结束请按0choice;switch(choice)case 1:inputnumber();break;case 2:doublenumber();break;case 0:flag=1;break;if(flag=1)break;/*数据录入和输出函数*/void inputnumber()manage m4;sellmanage s4;technology t4;employees e16;int i;double a28; cout录入4个经理信息endl;for(i=0;i4;i+)cout职工号 姓名 性别 职务 年龄endl;mi.getnumber();mi.getname();mi.getsex();mi.getjob();mi.getage();coutendl; cout录入4个技工的信息endl;for(i=0;i4;i+)cout职工号 姓名 性别 职务 年龄 工作时间/月endl;ti.getnumber();ti.getname();ti.getsex();ti.getjob();ti.getage();ti.getworktime();coutendl;cout录入4个销售经理的信息endl;for(i=0;i4;i+)cout职工号 姓名 性别 职务 年龄 endl;si.getnumber();si.getname();si.getsex();si.getjob();si.getage();si.getsalary();coutendl;cout录入16个销售员的信息endl;for(i=0;i16;i+)cout职工号 姓名 性别 职务 年龄 销售额 提成endl;ei.getnumber();ei.getname();ei.getsex();ei.getjob();ei.getage();ei.getsellnumber();ei.getextra();coutendl;cout职工号 姓名 性别 职务 年龄 工资 endl;for(i=0;i4;i+)couttmi.outnumber() mi.outname() mi.outsex() mi.outjob() mi.outage() mi.outsalary()endl;for(i=0;i4;i+)couttsi.outnumber() si.outname() si.outsex() si.outjob() si.outage() si.outsalary()endl;for(i=0;i4;i+)couttti.outnumber() ti.outname() ti.outsex() ti.outjob() ti.outage() ti.outsalary()endl;for(i=0;i16;i+)couttei.outnumber() ei.outname() ei.outsex() ei.outjob() ei.outage() ei.outsalary()endl;for(i=0;i4;i+)ai=si.outsalary();int choice;cout工资冒泡请按1 不排工资请按0choice;switch(choice)case 1:outputnumber(a);break;case 0:break; /*输出冒泡工资函数*/void outputnumber(double *m)double t;int i,j,index;for(i=0;i4;i+)index=i;for(j=i+1;jmj)index=j;t=mindex;mindex=mi;mi=t;cout销售员工资冒泡排序 endl;for(i=0;i4;i+)couttmiendl;/*存入文件函数*/void doublenumber()int i;manage m4;sellmanage s4;technology t4;employees e16; cout录入4个经理信息endl;for(i=0;i4;i+)cout职工号 姓名 性别 职务 年龄endl;mi.getnumber();mi.getname();mi.getsex();mi.getjob();mi.getage();coutendl; cout录入4个技工的信息endl;for(i=0;i4;i+)cout职工号 姓名 性别 职务 年龄 工作时间/月endl;ti.getnumber();ti.getname();ti.getsex();ti.getjob();ti.getage();ti.getworktime();coutendl;cout录入4个销售经理的信息endl;for(i=0;i4;i+)cout职工号 姓名 性别 职务 年龄 endl;si.getnumber();si.getname();si.getsex();si

温馨提示

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

评论

0/150

提交评论