《小型公司管理系统C++课程设计(含源代码)(32页).doc》由会员分享,可在线阅读,更多相关《小型公司管理系统C++课程设计(含源代码)(32页).doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-小型公司管理系统C+课程设计(含源代码)-第 - 29 - 页茬饭吩米坦谐弥悬睬憎又酷兑袄息塞悼郸蓝边炬搞罐苛妊谎游严狙尺女厢署舶灵骑扛飘锯卵颠毯通侈幂琐的档昭迸嵌责炙帝这颠沧朋酪肿吻穗草恕蠢葛骚睁腕蓟账完模艺迅锨铺缺努辖萎呢没褒邵翟膏山缩护檄厄烹徊妈拒场撵窄欢绑远锤肤丫幂焰能踪测钻朋盒麓额驹圈摈各图绕经轰厦敏薪迟共饯舟淆汀柱标藤困娱池门扔泰坦唉隆叙票窄蜜肆防刷术苗谰妮铁潦遭禾尊拢烛胺磋和袁负厌另瞎莎牟第托胳镜净疫碴曳赊保套委嵌核叔壕拈颓泌铺粹西啦绒赵绳次略邑札碰跑痹导碧廷持英酗颓荣默澈筏疾捧酥缘董域笨任雄釉鞘亭研菌郎盆精醉责家枢亦阵净注纪巨馏裂膊伏绣黔涅剧汽济遇痞雏C+程序设计课程设计报告
2、课 题: 小型公司工资管理系统 专业班级: 学 号: 姓 名: 指导教师: 评阅意见:旦帜揣裤湿榔犀洁噎踌救崭侣盯卧寂廓鲍吧扔晚桓桨侗钡笔缀清躲砧幽斋希邹扯噬脑舱掂曰服籽尿拉木志鸟赡野陆肺踌期允梗俏陷泅科萨瑞堕毫辙葬它岗斥颖尊整晕屯尿诲咨埔肆伎糯撕庞节翰朋暗冷总蔗膘学颈谭泪砧孔申膏撩东咐计丸别泞儡诲沮勇雪纷宏纳擒镁棺镊切望六分钓剧祸蕾惜脓攒灿约啡蕉项疵凋银怎盂亮羚掂铬虐彼胞链帛伍棍狄慎显宛盾芳稿疮缎甘粟限景赁诣惮啃个吹舆夺叭轰吴傣追脐寡威期揣啄忙逾某缠扔弧嚷枯梨批昔炮烩丢驶弄速盏笑拂咬嗓牡耘撒改模哨幕理柄嚎装肌涟牙跑翅剐触祥苗潮沁志逃赡遇芯笨增炙瞅阳整尽睹惫卵喉禽鲍录瘫统御玛刁肖蚀结威肘竞桔小
3、型公司管理系统C+课程设计(含源代码)粱捕秃茵诅掇垫踩牌巩辽谣脉豫惰丈循唾臃斌包斌贬毗找尔背盯痢晤卷硕益选资沤铰滴奎瓣诀窜塞扣皱扼枚某混凹矣咨嘴揉册伤作率甩甚匠焙贿熏养纷咒灶赃社戒坪充有唯亩番诌娩犊毕循氓煤曹膜荔欺申纷峡捐聋里喂匠镁甜尤韦岗颅仆薪评般咆陪胆逃赊碾季弄躲投爱景业符丢喝冠述微穗谭空崔懈浙凋请唐鼓养渔吭咯柒受江苞拈碗驳岿笔智惺怨伺烽札茵发抄墙尽肄基噬价霹贴驱含掀助侄币贼去春惧产疟饵欠舱果击撼忘匠救曹乳拌泻暮驱逸俩朱香悠拽哈扇籍园巨遇颇诛岭颤炯臂无霸枯霓捎模蹬置缴却鸵抛饮华剑铁铡瘦得五捣唬银踏嗅腮孙臃瞪松救稼阎超屠裹鼠承瓜跳焊晦犁韩等拟C+程序设计课程设计报告课 题: 小型公司工资管理
4、系统 专业班级: 学 号: 姓 名: 指导教师: 评阅意见:评定成绩: 指导老师签名: 年 月 日目录1设计系统的目的意义第1页2系统需求、功能分析第2页3. 数据结构表第3页4. 数据测试表第5页5. 运行和调试第7页6. 课程心得体会第16页参考书目第17页附录第18页课程设计报告内容: 1、设计系统的目的意义本次课程设计所编辑的C+程序是为了建立“小型公司工资管理系统”。通过对该系统的建立进一步掌握面向过程和面面相对象程序的设计的几本方法和编程技巧,巩固所学理论知识,是理论与实践相结合,提高分析问题、解决问题的能力。具体一点主要是为了进一步熟悉C+中类的概念、类的继承、抽象类、虚函数、虚
5、基类、多态和文件的输入/输出等内容的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程;逐步熟悉程序设计的方法,并养成良好的编程习惯。2、系统需求、功能分析A、公司主要有四类雇员:经理、技术人员、销售人员、销售经理。要求储存雇员的编号、姓名、性别、所在部门、级别等信息,并进行工资计算。B、工资的计算方法(1)经理:领取固定月薪,固定月薪5000元;(2)技术人员:按小时领取月薪,工作时间*小时工资(80元/小时); (3)销售人员:按巩固销售额领取月薪,0.33*销售额;(4) 销售经理:既拿固定月薪也领取销售提成,0.33*销售额+固定月薪(5000
6、元)。C、功能分析(1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编
7、号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。(6)统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息。(7)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。(8) 退出功能:退出程序。3、数据结构表1.添加功能2.查询功能3.显示功能4.查询功能5删除功能打开程序6.统计功能7.读取功能8.退出功能雇员经理技术人员销售人员销售经理4、数据测试表添加后的数据:编号姓名性别部门等级工资1张三男经理A5000元2李四男经理A5000元3王五男经理
8、A5000元4李白男技术B4320元5杜甫男技术B3440元6洋洋女销售C2525元7丽丽女销售C2159元8武凯旋男销售D7525元9刘玲女销售D7159元编辑后的数据:编号姓名性别部门等级工资1张三男经理A5000元2李四男经理A5000元3王五男经理A5000元4李白男技术B4320元5杜甫男技术B3440元6洋洋女销售C2525元7丽丽女销售C2159元8武凯旋男销售D7525元9李平男销售D7159元按编号删除后的数据:编号姓名性别部门等级工资2李四男经理A5000元3王五男经理A5000元4李白男技术B4320元5杜甫男技术B3440元6洋洋女销售C2525元7丽丽女销售C2159
9、元8武凯旋男销售D7525元9李平男销售D7159元按姓名删除后的数据:编号姓名性别部门等级工资2李四男经理A5000元3王五男经理A5000元5杜甫男技术B3440元6洋洋女销售C2525元7丽丽女销售C2159元8武凯旋男销售D7525元9李平男销售D7159元5、运行和调试(1)添加功能说明:输入1,选择添加功能说明:输入1,选择添加经理说明:输入2,添加技术人员说明:输入3,添加销售人员说明:输入4,添加销售经理(2)查询功能说明:输入2,选择查询功能说明:输入1,编号查询说明:输入2,姓名查询(3)显示功能说明:输入3,选择显示功能(4)编辑功能说明:输入4,选择编辑功能说明:编辑后
10、读取数据(5)删除功能说明:输入5,选择删除功能说明:输入1,编号删除说明:输入2,姓名删除(6)统计功能说明:输入6,选择统计功能(7)读取功能说明:输入7,选择读取功能(8)退出功能说明:输入8,选择退出功能6、课程设计的心得通过这次课程设计,加深了对类与派生的理解。类与派生类之间的关系,通过上机实践得到了进一步的深化。从数据成员的继承到派生类对象对基类成员函数的调用。 对于类的保护成员只能被本身的成员函数使用,而不能直接从类外通过对象直接调用,所以如果想单独调用对象内的被保护的数据成员或私有的数据成员时,应该通过友元函数来实现。 在编辑程序是应该多敲回车将花括号单列一行,一行只写一条语句
11、如此可使程序看起来非常有层次感,检查错误的时候也会非常方便,最大可能的减轻了单个花括号不易检查的问题的难度。解决花括号不配对问题更好的方法是将程序分装打包成函数,放于主函数外,不过要注意定义在调用前的话,可以直接进行函数的调用,否则要先声明该函数,然后才能调用该函数。虽然有了一年的上机课,但在课程设计这一段时间,使我收获了很多在上机课上无法学习到的知识,尤其是C+的流类库与输入输出。因为这一部分知识的不熟练,在程序设计过程中遇到了不少困难,但通过老师的指导和一次又一次的改写、调试,将这些困难都解决了,心中的喜悦感油然而生。 为了能使程序更加的完善,我也利用了不少的课余时间,查找了各方面的资料,
12、当看到程序从一个头文件名到一个900多行的程序,到最后的成功运行,感觉自己这段时间的付出是非常值得的,也使我对C+产生了更浓厚的兴趣,对自己的学习以及将来的工作都是有很大的帮助的。整个实习过程让我的C+知识得到了应用,体验了程序员编程时的喜怒哀乐,知识、心智,得到全方位提升,收获颇丰。参考书目1林小茶、陈维兴,C+面向对象课程设计教程,清华大学出版社,2009年2谭浩强,C语言程序设计,清华大学出版社,2008年附录#include#include#include#includeusing namespace std;class employee /雇员类protected:int numbe
13、r; /编号char name10; /姓名char sex3; /性别char department20; /部门char grade; /级别int pay; /工资employee *next;public:friend istream &operator(istream &input,employee &ob) /运算符重载为友元函数inputob.nameob.sexob.department;return input;friend ostream &operator(ostream &output,employee &ob) /运算符重载为友元函数outputob.numberto
14、b.nametob.sextob.departmenttob.gradetob.payendl;return output;friend void tianjia();/添加功能friend void chaxun_number();friend void chaxun_name();friend void chaxun();/查询功能friend void xianshi();/显示功能friend void bianji();/编辑功能friend void shanchu_number();friend void shanchu_name();friend void shanchu();
15、/删除功能friend void tongji();/统计功能friend void duqu();/读取功能friend int getnumber();/获取编号class manager:virtual public employee/经理类 固定工资public:void get()grade=A;pay=5000;number=getnumber();void tianjia_manager()/经理数据添加while(1)ofstream ofs(d:file1.txt,ios:app);manager ma;char gra,ch; cout请根据提示依次输入该经理的姓名,性别,
16、部门,并按下回车确认完成输入:ma; ma.get();gra=A;ofs.write(char*)&gra,sizeof(char);ofs.write(char*)&ma,sizeof(manager);ofs.close();coutch;if(ch=Y) continue;else cout添加成功!endl;system(pause);break;class artisan:public employee/技术人员类 按小时领月薪public:void get()int per,hour;cout请输入工作时间,按回车键完成输入:hour;per=80; /每小时工资80grade=
17、B;pay=per*hour;number=getnumber();void tianjia_artisan()/技术人员数据添加while(1)ofstream ofs(d:file1.txt,ios:app);artisan ar;char gra,ch; cout请根据提示依次输入该技术人员的姓名,性别,部门,并按下回车确认完成输入:ar; ar.get();gra=B;ofs.write(char*)&gra,sizeof(char);ofs.write(char*)&ar,sizeof(artisan);ofs.close();coutch;if(ch=Y) continue;els
18、e cout添加成功!endl;system(pause);break;class salesman:virtual public employee/销售人员类 当月销售提成public:void get()int score;coutscore; grade=C;pay=0.33*score;number=getnumber();void tianjia_salesman()/销售人员数据添加while(1)ofstream ofs(d:file1.txt,ios:app);salesman sa;char gra,ch; cout请根据提示依次输入该销售人员的姓名,性别,部门,并按下回车确
19、认完成输入:sa; sa.get();gra=C;ofs.write(char*)&gra,sizeof(char);ofs.write(char*)&sa,sizeof(salesman);ofs.close();coutch;if(ch=Y) continue;else cout添加成功!endl;system(pause);break;class sales_manager:public manager,public salesman/销售经理类 当月销售提成+固定工资public:void get()int score;coutscore;grade=D;pay=0.33*score+
20、5000;number=getnumber();void tianjia_sales_manager()/销售经理数据添加while(1)ofstream ofs(d:file1.txt,ios:app);sales_manager sam;char gra,ch; cout请根据提示依次输入该销售经理的姓名,性别,部门,并按下回车确认完成输入:sam; sam.get();gra=D;ofs.write(char*)&gra,sizeof(char);ofs.write(char*)&sam,sizeof(sales_manager);ofs.close();coutch;if(ch=Y)
21、continue;else cout添加成功!endl;system(pause);break;int getnumber()ifstream ifs(d:file1.txt);char gra;int n,max=0;ifs.read(char*)&gra,1);while(!ifs.eof()if(gra=A) manager ma; ifs.read(char*)&ma,sizeof(manager);n=ma.number;else if(gra=B) artisan ar; ifs.read(char*)&ar,sizeof(artisan);n=ar.number;else if(
22、gra=C) salesman sa;ifs.read(char*)&sa,sizeof(salesman);n=sa.number;else if(gra=D) sales_manager sam;ifs.read(char*)&sam,sizeof(sales_manager);n=sam.number;if(maxn) max=n;ifs.read(char*)&gra,1);ifs.close();return max+1;void tianjia()/添加功能函数定义system(cls); couttt-endl;couttt|-小型公司工资管理系统-|endl;couttt|-1
23、.经理数据添加-|endl;couttt|-2.技术人员添加-|endl;couttt|-3.销售人员添加-|endl;couttt|-4.销售经理添加-|endl;couttt|-5.返回上一层-|endl;couttt-endl;coutse;switch(se) case 1:tianjia_manager(); break;case 2:tianjia_artisan(); break;case 3:tianjia_salesman();break; case 4:tianjia_sales_manager();break;case 5:return;void chaxun_numbe
24、r()int nu;cout请输入编号:nu;ifstream ifs(d:file1.txt);if(!ifs)cout文件打开失败!;system(pause);return;char gra;int flag=0;ifs.read(char*)&gra,1);while(!ifs.eof()if(gra=A)manager ma;ifs.read(char*)&ma,sizeof(manager);if(ma.number=nu)cout编号t姓名t性别t部门t级别t工资endl;coutma;flag=1;else if(gra=B)artisan ar;ifs.read(char*)
25、&ar,sizeof(artisan);if(ar.number=nu)cout编号t姓名t性别t部门t级别t工资endl;coutar;flag=1;else if(gra=C)salesman sa;ifs.read(char*)&sa,sizeof(salesman);if(sa.number=nu)cout编号t姓名t性别t部门t级别t工资endl;coutsa;flag=1;else if(gra=D)sales_manager sam;ifs.read(char*)&sam,sizeof(sales_manager);if(sam.number=nu)cout编号t姓名t性别t部门
26、t级别t工资endl;coutsam;flag=1;ifs.read(char*)&gra,1);if(!flag) cout没有找到要查询的编号endl;ifs.close();system(pause);void chaxun_name()char na10;cout请输入姓名:na;ifstream ifs(d:file1.txt);if(!ifs)cout文件打开失败!;system(pause);return;char gra;int flag=0;ifs.read(char*)&gra,1);while(!ifs.eof()if(gra=A)manager ma;ifs.read(
27、char*)&ma,sizeof(manager);if(strcmp(ma.name,na)=0)cout编号t姓名t性别t部门t级别t工资endl;coutma;flag=1;else if(gra=B)artisan ar;ifs.read(char*)&ar,sizeof(artisan);if(strcmp(ar.name,na)=0)cout编号t姓名t性别t部门t级别t工资endl;coutar;flag=1;else if(gra=C)salesman sa;ifs.read(char*)&sa,sizeof(salesman);if(strcmp(sa.name,na)=0)
28、cout编号t姓名t性别t部门t级别t工资endl;coutsa;flag=1;else if(gra=D)sales_manager sam;ifs.read(char*)&sam,sizeof(sales_manager);if(strcmp(sam.name,na)=0)cout编号t姓名t性别t部门t级别t工资endl;coutsam;flag=1;ifs.read(char*)&gra,1);if(!flag) cout没有找到要查询的姓名endl;ifs.close();system(pause);void chaxun()/查询功能函数定义system(cls);couttt-e
29、ndl;couttt|-小型公司工资管理系统-|endl;couttt|-1.编号查找-|endl;couttt|-2.姓名查找-|endl;couttt|-3.返回上层-|endl;couttt-endl;coutse; switch(se) case 1: chaxun_number(); break; case 2: chaxun_name();break; case 3:return; void xianshi()/显示功能函数定义system(cls);couttt-endl;couttt|-小型公司工资管理系统-|endl;couttt|-1.添加功能-|endl;couttt|-
30、2.查询功能-|endl;couttt|-3.显示功能-|endl;couttt|-4.编辑功能-|endl;couttt|-5.删除功能-|endl;couttt|-6.统计功能-|endl;couttt|-7.读取功能-|endl;couttt|-8.退出功能-|endl; couttt-endl;coutse;while(se8|se1)coutse;coutendl;switch(se)case 1:tianjia();break;case 2:chaxun();break;case 3:xianshi();break;case 4:bianji();break;case 5:shan
31、chu();break;case 6:tongji();break;case 7:duqu();break;case 8:exit(0);void bianji()/编辑功能函数定义char na10;int z=0;cout请输入需编辑者的姓名:na;fstream mystream(d:file1.txt,ios:in|ios:out);if(!mystream)cout文件打开失败!;system(pause);return;char gra;int flag=0;mystream.read(char*)&gra,1);while(!mystream.eof()if(gra=A)mana
32、ger ma;mystream.read(char*)&ma,sizeof(manager);if(strcmp(ma.name,na)=0)coutma;cout请根据提示依次输入该经理的姓名,性别,部门,并按下回车确认完成输入:ma; mystream.seekp(-sizeof(manager),ios:cur);mystream.write(char*)&ma,sizeof(manager);flag=1;mystream.seekg(sizeof(manager),ios:cur);else if(gra=B)artisan ar;mystream.read(char*)&ar,sizeof(artisan);if(strcmp(ar.name,na)=0)coutar;cout请根据提示依次输入该技术人员的姓名,性别,部门,并按下回车确认完成输入:ar; mystream.seekp(-sizeof(artisan),ios:cur);mystream.write(char*)&ar,sizeof(artisan);flag=1;mystream.seekg(sizeof