工资管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一.需求和规格说明此次课程设计的目的是以程序设计语言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.功能设计各类人员信息的录入和显示,销售经理工资的冒泡排序,文件的读取和提取和退出整个系统。这样一来可以用四个函数来实现各个功能分别是voidinputnumber();voidoutputnumber(double*m);voiddoublenumber();和break来实现。然后一一来完成各个函数的功能实现过程。3.详细设计共同的基类employee包括如下信息:classemployee//基类private:charnumber[20],name[20],sex[10],job[40];intage;public:voidgetnumber();//职工号的输入voidgetname();//姓名的输入voidgetsex();//性别的输入voidgetjob();//职位的输入voidgetage();//年龄的输入char*outnumber();//职工号的输出char*outname();//姓名的输出char*outsex();//性别的输出char*outjob();//职位的输出intoutage();//年龄的输出经理类manage的信息如下:classmanage:publicemployee/*派生经理类*/private:doublemanagesalary;//定义销售经理的工资public:manage();//构造函数doubleoutsalary();//获取工资技术类technology的信息如下:templateclassT/*派生技工类*/classtechnology:publicemployeeprivate:intworktime,moneyh;//定义工作时间和每小时的工作额public:technology(){moneyh=20;}//构造函数voidgetworktime();//输入工作时间Toutsalary();//提取工资销售经理类sellmanage类的信息如下:templateclassT/*派生销售经理类*/classsellmanage:publicemployeesTprivate:Tsellmanagesalary,s,sum;//定义其下的销售总额,T型s和工资public:voidgetsalary();//工资的获取Toutsalary();//输出工资销售员类employees的信息如下:templateclassT/*派生销售员类*/classemployees:publicemployeeprivate:Tsellnumber,employeesalary,extra;//定义销售额,工资和提成public:voidgetsellnumber();//输入销售额voidgetextra();//输入提成Toutsellnumber();//获取销售额Toutsalary();//获取工资以及三个大函数——输入的录入和现实,冒泡排序销售经理的工资和文件的存储和读取。/*数据录入和输出函数*/voidinputnumber()/*输出冒泡工资函数*/voidoutputnumber(double*m)/*存入文件函数*/voiddoublenumber()这三个函数来实现功能。四.调试及测试1、调试过程中遇到的主要问题及解决方法在调试过程中主要的问题就是输入人员的信息时由于人员比较多且信息的数量和种类都不相同,导致输入的信息我定义的不吻合,而出现结束的现象。解决方法我用的是静下心来看清提示后再录入对应的信息。2、对设计和编码的回顾讨论和分析;回顾设计:总的来说,刚开始看到题目和要求时感觉自己编不出来,于是就有一点害怕的心理。但由于还要答辩,结果还是根据要求开始下笔,说也奇怪很快就写完了,但不幸的是编译时有好多的错误,这可是一个很大的麻烦啊,写程序不难,难的就是改程序啊,又由于我的电脑上的VC++软件不能显示错误的个数和在哪个地方,只能显示有错误并且有多少错误都只显示一个错误,导致我无法改动,于是开学后我28就到校了,然后从同学那里重新装了个VC++软件,后来我就开始修改我的程序了,可是到了31号要答辩了,我仍没有修改完毕。我带着有错误的程序到了实验室,问问老师,在下午的时候我终于修改完毕了。讨论和分析:首先我问了我的同学关于我的程序的错误,可是由于错误好像很难改,我问了好几个同学都没能帮上我的忙,然后我就自己根据自己的思路开始慢慢一点一点分析自己的程序,在我好几天的奋斗下算是有了点成绩,修改了一些错误,但是有好几个错误我实在是看不懂,就在31号上午,在老师的提示下我才完成程序错误的修改。3、程序运行的时空效率分析总体看来,程序基本上完成了任务书的要求,但是我感觉程序的可读性不是很好,并且输出后的格式也有点挤(完成的比较匆忙)。4、测试数据集数据的录入:数据的显示:工资的冒泡排序:存入文件与读取:五、经验和体会。通过本次的程序设计让我学到了很多我原先没有学到的知识点,并且以前上课学习的知识点也得到了很大的巩固。我设计本次的最大体会就是凡事还是自己做的才是最好的,自己写出来的才叫会,有时说着知道这个知识点,甚至说得是头头是道,也不可能写出来的程序完全正确。即使想着会,或者自己觉得会这个知识点,但是在自己写某个程序的时候就会发现很多问题,然后自己就会重新看书或者问问同学和老师帮自己结束掉问题,经过很长时间的付出才会完成一个完全正确的程序,就是完成这个程序的过程中自己已经不知不觉的学到了比在课程上多得多的知识点,俗话说得好“自己动手,才能丰衣足食”,在这里道理一样,自己真正的思考了,才会把知识真的学到手,成为自己的一部分。还有就是学程序重要的不是我看了多少书,而是我写了几个能完成的程序,即使不能完成也要尽力的去思考。思考是一切根源,动手时思考的实践。实践是知识的积累。附录:主要源程序#includeiostream#includefstreamusingnamespacestd;/*类的定义*///employee.hclassemployee/*基类*/{private:charnumber[20],name[20],sex[10],job[40];intage;public:voidgetnumber();voidgetname();voidgetsex();voidgetjob();voidgetage();char*outnumber();char*outname();char*outsex();char*outjob();intoutage();};classmanage:publicemployee/*派生经理类*/{private:doublemanagesalary;public:manage();doubleoutsalary();};templateclassT/*派生技工类*/classtechnology:publicemployee{private:intworktime,moneyh;public:technology(){moneyh=20;}voidgetworktime();Toutsalary();};templateclassT/*派生销售员类*/classemployees:publicemployee{private:Tsellnumber,employeesalary,extra;public:voidgetsellnumber();voidgetextra();Toutsellnumber();Toutsalary();};templateclassT/*派生销售经理类*/classsellmanage:publicemployeesT{private:Tsellmanagesalary,s,sum;public:voidgetsalary();Toutsalary();};/*类的实现*/voidemployee::getnumber(){cinnumber;}voidemployee::getname(){cinname;}voidemployee::getsex(){cinsex;}voidemployee::getjob(){cinjob;}voidemployee::getage(){cinage;}char*employee::outnumber(){returnnumber;}char*employee::outname(){returnname;}char*employee::outsex(){returnsex;}char*employee::outjob(){returnjob;}intemployee::outage(){returnage;}manage::manage(){managesalary=8000;}doublemanage::outsalary(){returnmanagesalary;}templateclassTvoidtechnologyT::getworktime(){cinworktim

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功