




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录1 前言12 需求分析12.1 任务和要求12.2 运行环境12.3 开发工具13 分析和设计23.1 系统分析及设计思路23.2 主要类图23.3 函数流程图34 具体代码实现45 课程设计总结105.1 程序运行结果或预期运行结果105.2 设计结论12参考文献13致谢141 前言某公司内有5种不同类型的职工: 技术人员(technician)、销售人员(salesman)、文秘(secretary)、技术经理(tech-manager)、销售经理(sales-manager)。他们的工资计算方式各不相同:1) 技术人员的工资根据他当月工作的小时数来定,时薪为35元;2) 销售人员的
2、工资则是根据本人当月销售额来确定,工资为销售额的5%;3) 文秘有4000元的基本工资,奖金视当月工作情况而定;4) 技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,每级可以获得1000元奖金,5) 销售经理除有6000元的固定工资外,销售经理的奖金由他所管理的销售员的销售业绩而定,为总销售额的0.2%。为此设计一个工资管理系统管理职工的信息。2 需求分析2.1 任务和要求使用C+面向对象程序设计一个简易的工资管理系统。,系统的主要功能是:根据不同的职工,计算职工当月工资。确定程序至少应该具备如下功能:.输入职工, 添加职工,删除职工,结算工资,等基本模块。1)输
3、入职工: 用class person *creat(void) 函数创建链表。2)添加职工: 用class person *insert(class person *head,class person *pe)函数添加。3)删除职工:用class person *del(class person *head,double num) 函数删除。4)结算工资:用void selary(class person *head) 函数计算。2.2 运行环境(1)WINDOWS2000/XP系统(2)Visual C+ 6.0编译环境或DEV C+ 5.0编译环境2.3 开发工具C+语言3 分析和设计3.
4、1 系统分析及设计思路首先公司有五类人,各类之间又有相同的部分例如:姓名、职工号等,所以定义一个基类Person,四类人相同部分为基类数据成员。由基类Person再派生出各类:技工类Technician类、售货员类Salesman、文秘类Secretary、技术经理类Tech-manager、销售经理类Sales-manager。(1) Person类:包含: num,wage,year, name10,post10,sex等数据成员等。要完成结算工资操作,需要设计virtual void pay()作为成员函数。(2)Technician类:继承Person类,增加hours数据。(3)Sa
5、lesman类:继承Person类,增加sales数据。(4) Secretary类:继承Person类,增加bonus数据。(5)Tech-manager类:继承Person类,增加bonus数据(6)Sales-manager类:继承Person类,增加sumsales数据。然后分析系统管理需要有几个功能,分别是输入职工,添加职工,删除职工以及结算工资。我们为这几个功能分别建立对应的函数来实现:class person *creat(void) 、class person *insert(class person *head,class person *pe)、class person *
6、del(class person *head,double num) 、void selary(class person *head) 。并且还有输出函数print()以及保存信息函数save()最后主函数的实现。由于是有选择的菜单,首先想到了switch选择语句。当输入不同值时,进入不同的case部分以实现不同的功能。case1的功能是实现数据的输入。用creat()函数创建职工信息,按照提示分别输入职工的信息:编号、姓名、性别、出生年份,并用save()函数保存信息。case2的功能是实现数据的添加。用malloc动态分配内存空间,然后输入要添加的职工信息。用insert()函数添加进去。
7、用print()函数输出并保存。case3的功能是实现数据的删除。根据提示输入你要删除的职工编号。按照你输入的编号,用del()函数输出该职工的所有信息。case4的功能是计算职工的工资。根据不同的职工类别计算工资。3.2 主要类图图3.1 主要类图3.3 函数流程图(1)主函数流程图3.2 主函数流程图 4 具体代码实现#include#include#include#include#include#define NULL 0#define LEN sizeof(class person)class personpublic:virtual void pay()double num,wage
8、,year;char name10,post10,sex;class person *next;int n;class Technician:public personpublic:void pay()couthours;wage=35*hours;cout工资:wageendl;protected:double hours;class Salesman:public personpublic: void pay()coutsales; wage=0.05*sales;cout工资:wageendl;double sales;class Secretary:public personpubli
9、c:Void pay()coutbonus;wage=4000+bonus;cout工资:wageendl;protected:double bonus;class Techmanager:public personpublic:void pay()coutbonus;wage=6000+bonus;cout工资:wageendl;protected:double bonus;class Salesmanager:public personpublic:void pay()cout总销售额:sumsalesendl;wage=6000+sumsales*0.002; cout工资:wagep1
10、-postp1-nump1-namep1-sexp1-year; head=NULL;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(class person *)malloc(LEN);cinp1-postp1-nump1-namep1-sexp1-year;p2-next=NULL;return(head);void print(class person *head) / 输出职工class person *p;coutn个职工信息:endl;cout职务 编号 姓名 性别 出生年份 endl;p=head;if
11、(head!=NULL)docoutpost num name sex yearnext;while(p!=NULL);class person *del(class person *head,double num) / 删除职工class person *p1,*p2;if(head=NULL)coutlist null!num&p1-next!=NULL)p2=p1;p1=p1-next;if(num=p1-num)if(p1=head)head=p1-next;else p2-next=p1-next;coutdelete:numendl; n=n-1;else cout num not
12、 been found!next=NULL;elsewhile(p0-nump1-num)&(p1-next!=NULL)p2=p1;p1=p1-next;if(p0-numnum)if(head=p1)head=p0;else p2-next=p0; p0-next=p1; elsep1-next=p0; p0-next=NULL; n=n+1;return(head);void save(class person *head) / 保存文件class person *p;ofstream outfile(职工.txt,ios:out);if(!outfile)cerropen error!
13、endl;exit(1);p=head;if(head!=NULL)dooutfilepost num name sex yearnext;while(p!=NULL);outfile.close();void selary(class person *head) / 计算工资class person *p;Technician te;Salesman sa;Secretary se; Techmanager tm; Salesmanager sm;sm.sumsales=0;ifstream infile(职工.txt,ios:in);if(!infile)cerropen error!p-
14、postp-nump-namep-sexp-year;coutpost num name sex year numnumnum200)sa.pay();sm.sumsales=sa.sales+sm.sumsales;if(p-numnum300)se.pay();if(p-numnum400)tm.pay();if(p-numnum500)sm.pay();p=p-next;while(p!=NULL);infile.close();int main() class person *head,*pe; double delnum;int menu; while(1) cout*endl; c
15、out*=菜单选顶=*endl; cout*=*endl; cout* 1.输入职工 2.添加职工 3.删除职工 4.结算工资 *endl; cout*endl; cout编号:技工(101-199) 售货员(201-299) 文秘(301-399) endl 技术经理(401-499)销售经理(501-599)endl; coutendlmenu; switch(menu) case 1:coutendl输入职工:endl; cout职务 编号 姓名 性别 出生年份 endl; head=creat();print(head);save(head); break; case 2:couten
16、dl添加职工:endl; cout职务 编号 姓名 性别 出生年份 pe-postpe-numpe-namepe-sexpe-year;while(pe-num!=0)head=insert(head,pe);print(head);save(head);pe=(class person *)malloc(LEN);cinpe-postpe-numpe-namepe-sexpe-year;break;case 3:coutendldelnum;while(delnum!=0)head=del(head,delnum);print(head);save(head);coutendldelnum;
17、break;case 4:selary(head);break; return 0;5 课程设计总结5.1 程序运行结果或预期运行结果图5.1实验结果图图5.2实验结果图图5.3实验结果图图5.2实验结果图5.2 设计结论本次设计我们组的题目是职工工资管理系统,因为事先老师的细心指导,我们才得以的完成这次课程设计。在系统分析和设计的部分仍然花了比较多的时间,特别是源代码的编写和调试,经过反复的改写、调试、再改写、调试,我们最终完成了任务。经过对职工信息管理系统的分析与编写,我们得到了很大的收获。自主学习的必要性更是解决问题的基础,我们二个人一组,在设计的过程中,我们相互讨论,相互学习,发挥出各
18、自的优势,发现自己的不足,取长补短,增强了团队意识。更重要的是这次设计让我们对C面向对象设计编程有了更深刻的认识和更全面的掌握,也提升了我们分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。对面向对象编程有了深刻的理解,对软件工程有了了解。在以后的学习中我们会更加的努力,深刻的钻研,增强团队意识。通过这次课程设计,我们加深了对类与派生的理解。类与派生类之间的关系,通过上机实践得到了进一步的深化。从数据成员的继承到派生类对象对基类成员函数的调用。整个实习过程让我的C+知识得到了应用,体验了程序员编程时的喜怒哀乐,知识、心智,得到全方位提升,收获颇丰。参考文献1 龚晓庆,付丽娜,朱心懿.C+面向对象程序设计.北京:清华大学出版社,2012 揣锦华等编.C+程序设计语言.西安:西安电子科技大学出版社,20033 吕凤翥著.C+语言基础教程.北京:清华大学出版社,20014张国峰编著.C+语言及其程序设计教程.北京:电子工业出版社,1996.6 郑莉,董渊,张瑞丰.C+语言课程设计(第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国数字显示拼接墙行业竞争状况及投资发展前景研究报告
- 个人廉洁教育心得体会
- 进行在线阅读教学设计及反思
- 餐厅服务员高级模拟考试题与参考答案
- 江西省宜春第九中学2025届高三最后一卷英语试卷含答案
- 2025届江西省奉新一中、南丰一中等六校重点中学高三下第一次测试英语试题含答案
- 江苏省扬州市扬州中学2024-2025学年高一下学期4月期中考试化学试题(原卷版+解析版)
- 海洋石油钻探深海资源探测技术考核试卷
- 森林改培技术对水资源节约利用的启示考核试卷
- 玩具行业的市场趋势预测考核试卷
- (精选word)洪恩识字-生字卡片1-200
- CNC作业指导书及操作规范
- EHS安全培训教育周知卡(机械伤害)
- 西安电务段电子信息设备维护管理办法
- 贵州生态停车场建设工程监理规划
- 大班音乐欣赏粤曲《荔枝颂》微课件
- 医院建筑能耗监管系统建设技术导则(试行)(共44页)
- 城市建筑垃圾分类及处理培训PPT课件
- 《肌内注射说课》ppt课件
- 沈萍微生物学第七章
- 钢箱梁运输及安装施工方案
评论
0/150
提交评论