版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数学与计算机学院课程设计说明书课程名 称:面向对象 程序设计-课程设计课程代码:8404101题 目:公司工资管理系统年级/专业/班:2007级软件工程1学生姓名:刘远强学 号:312007080611109开始时间:2009年 06月 10 日完成时间:2009年 06月 28 日课程设计成绩:学习态度及平 时成绩(30)技术水平与实际 能力(20)创新(5)说明书撰写质量(45)总分 (100)指导教师签名: 年月日1引 言11.1 问题的提出 11.2 国内外研究的现状 11.5 任务与分析 12程序的主要功能12.1 添加功能12.2 删除功能12.3 显示功能22.4 数据设置功能2
2、2.5 修改功能23程序运行平台24总体设计25程序类的说明3WP公司工资管理系统6模块分析76.1 添力口模块76.2 查询本月经营模块86.3 修改模块96.4 数据存盘模块116.5 删除模块126.6 基础数据设置模块126.7 数据装入模块 127系统测试168结论21致谈日22参考文献23摘要随着计算机的普及计算机科学越来越变得重要,程序设计作为计算机科 学的基本,地位也变得越来越重要。C+乍为程序设计的基础,地位也是很重要的。 C+隹开发性能高复杂度系统白最好语言。此次进行C+砚程设计,做一个公司工资管理系统,让我更为深层次地了解到了 C+勺魅力所在,让我懂得什么才叫编程 的快乐
3、。社会在进步,计算机科学也在进步,C+勺重要性也越来越重要,我们只有不断地学习,才能赶上时代的步伐关键词:公司工资管理系统;计算机;C+;程序设计公司工资管理系统1.1 问题的提出在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系 统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自 然有十分重要作用。某小型企业出与这种目的制作了这个人事管理系统。1.2 国内外研究的现状C+跋展至今已经有20年的时光了,在这20年里,C+链步的发展壮大,为面向对 象开发思维的推广提供了实现的基础。可以说 C+寸于现在思想的成熟以及在企业开发 中的大量应用时功不可没
4、的。蛋随着 1995年网络时代的到来,以及JAVA语言的诞生使 得C+链步进入一个尴尬的境地。由于没有跨平台以及网络应用的优势,在企业级应用 开发中逐步被JAVA所替代。这几年来笑道LOKI,大到STL等程序库已经为C+叫言扩展了广泛的应用领域。我 相信通过大家的努力,C+勺未来必将更加精彩!1.5 任务与分析通过设计一个较为简单的小型公司工资管理系统,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码 测试、模块组装与整体调试的全过程,加深对 C+的理解与Visual C+环境的使用;逐 步熟悉程序设计的方法,并养成良好的编程习惯。2程序的
5、主要功能2.1 添加功能添加一个职员的基本信息,包括职工类型,姓名等等,2.2 删除功能能够对一个职员的信息进行删除按员工号进行删除。2.3 显示功能显示所有职员的主要信息包括员工类型,姓名,工资。2.4 数据设置功能设置不同员工类型的工资要求2.5 修改功能对职员的信息进行修改。3程序运行平台VC+6.Q4总体设计图4.1系统总体框架图图4.2类的层次结构图5程序类的说明总职工类的声明class Person / 员工类protected:int No; 编号char Name20; /姓名int Duty; /岗位double Earning; /收入Person *next;public
6、:Person(char ID,char *Name,int Duty)this->Duty=Duty;strcpy(this->Name,Name);this->No=ID;virtual void CalcSalary()=0;virtual void Output()=0;friend class Company;技术员类的声明class technician:virtual public Employeepublic:technician。virtual void shanchu() *name=*sex=0;number=age=hour=0;pay1=0; voi
7、d wage() pay1=100*hour;virtual void print()wage();cout<<”技术员员工号:"<<number<<""-3-公司工资管理系统<<"姓名:"<<name<<"<<叫生另 :"<<sex<<" <<"年龄:"<<age<<""<<"工资:"<<
8、pay1<<endl; void input() Employee:input();cout<<”工作时间(以小时计算)"<<endl;cin>>hour; protected:int hour,pay1;;经理类的声明class Managerpublic Person / 经理类 public:Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty)void CalcSalary()Earning=ManagerSalary; void Output() CalcSalary
9、();cout<<No<<"t"<<Name<<"t 经理 t"<<Earning<<endl;销售员类的声明class Sales:public Person /销售员类private:double Amount;public:Sales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty) this->Amount=Amount;double GetAmount()return Amount;void
10、 SetAmount(double Amount)this->Amount=Amount;void CalcSalary()Earning=SalesPercent/100*Amount;void Output()CalcSalary();cout<<No<<"t"<<Name<<"t 销售员 t"<<Amount<<"t"<<Earning<<endl;销售经理类的声明class SalesManager:public Person
11、 /销售经理类private:double Amount;public:SalesManager(char ID,char *Name,int Duty):Person(ID,Name,Duty)void SetAmount(double s)Amount=s;void CalcSalary()Earning=SalesManagerSalary+Amount*SalesManagerPercent/100;void Output() CalcSalary();cout<<No<<"t"<<Name<<"t 销售经理
12、 t"<<Earning<<endl;;公司类的声明class Company /公司类private:Person *Worker; / 员工表void Clear(); / 清除内存中数据public:Company。Worker=0;Load(); Company() Person *p; p=Worker; while(p) p=p->next;delete Worker;Worker=p;Worker=0;void Add(); /增加人员void Delete();/删除人员void Modify();/修改人员void Query();/查
13、询人员void Set(); /基础数据设置void Save(); / void Load(); /数据存盘(包括基础数据,人员数据)数据装入(包括基础数据,人员数据);6模块分析6.1 添加模块添加函数如下:void Company:Add()Person *p; / 新结点指针 int Duty;char Name20;double Amount,T;cout<<"n*新增员工 *n”;/输入员工信息ID+;cout<<"输入岗位(1-经理2-销售经理3-销售员4-技术员):";cin>>Duty;cout<<
14、"输入姓名:";cin>>Name;if(Duty=3)cout<<”本月销售额:";cin>>Amount;else if(Duty=4) -7-公司工资管理系统cout<<"本月工作小时数(0-168):"cin>>T;6.2 查询本月经营模块显示函数如下:void Company二Query()cout<<"n*查询人员本月销售信息*n"double sum=0; / 销售额总和Person *p=Worker;while(p)if(p->D
15、uty=3)sum+=(Sales *)p)->GetAmount(); p=p->next; p=Worker;double sum2=0; /工资总和while(p)if(p->Duty=2)(SalesManager *)p)->SetAmount(sum);p->Output();sum2+=p->Earning;p=p->next;cout<<”本月盈利:"<<sum*0.20-sum2<<endl;cout<<"(按照20%利润计算)n"-9-挚嬴6.3 修改模块
16、修改函数如下:void Company二Modify() int No,Duty;char Name20;double Amount,T;cout<<"n* 修改员工 *n”;cout<<"ID:" cin>>No;/查找要修改的结点Person *p1,*p2; p1=Worker;while(p1)if(p1->No=No)break;elsep2=p1;p1=p1->next;/修改结点if(p1!=NULL)/若找到结点p1->Output();cout<<" 调整岗位(1-经理2
17、-销售经理3-销售员4-技术员):";cin>>Duty;if(p1->Duty!=Duty) /若岗位发生变动/修改其它数据cout<<"输入姓名:";cin>>Name;if(Duty=3)cout<<” 本月销售额:";cin>>Amount;else if(Duty=4)cout<<"本月工作小时数(0-168):"cin>>T;/创建新员工结点Person *p3;switch(Duty)case 1:p3=new Manager(p1
18、->No,Name,Duty); break;case 2:p3=new SalesManager(p1->No,Name,Duty); break;case 3:p3=new Sales(p1->No,Name,Duty,Amount); break;case 4:p3=new Technician(p1->No,Name,Duty,T); break;/员工结点替换到链表p3->next=p1->next;if(p1=Worker) /若要替换的结点是第一个结点Worker=p3;else /若要删除的结点是后续结点p2->next=p3;公司工资
19、管理系统/删除原来的员工结点delete p1;else /若岗位没有变动cout<<"输入姓名:";cin>>p1->Name;if(Duty=3)cout<<” 本月销售额:"; cin>>Amount; (Sales *)p1)->SetAmount(Amount);else if(Duty=4)cout<<” 本月工作小时数(0-168):" cin>>T; (Technician *)p1)->SetT(T);cout<<"修改成功!
20、n"else /未找到结点cout<<"未找到!n"6.4 数据装盘模块数据装盘函数如下:void Company二Save()ofstream fPerson,fBase;char c;cout<<"n保存人员和基础数据,是否继续?Y/N:" cin>>c;if(toupper(c)!='Y')return;-11-公司工资管理系统/保存人员编号、姓名、岗位fPerson.open("person.txt",ios:out);Person *p=Worker;while(
21、p)(fPerson<<p->No<<"t"<<p->Name<<"t"<<p->Duty<<"t"if(p->Duty=3)fPerson<<(Sales*)p)->GetAmount()<<"t"else if(p->Duty=4)fPerson<<(Technician *)p)->GetT()<<"t"fPerson<&l
22、t;endl;p=p->next;fPerson.close();/保存基础数据fBase.open("base.txt",ios二out);fBase<<”经理固定月薪 t"<<ManagerSalary<<endl;fBase<<”销售经理固定月薪 t"<<SalesManagerSalary<<endl;fBase<<”销售经理提成% t"<<SalesManagerPercent<<endl;fBase<<”销售
23、人员提成% t"<<SalesPercent<<endl;fBase<<”技术人员小时工资 t"<<WagePerHour<<endl;fBase<<"ID't"<<ID<<endl;fPerson.close();cout<<"n保存人员和基础数据已经完成.n"6.5 删除模块删除函数如下:-13-void Company:Delete() /删除人员int No;cout<<"n*删除员工 *n
24、"cout<<"ID:" cin>>No;/查找要删除的结点Person *p1,*p2; p1=Worker; while(pl) if(p1->No=No) break;elsep2=p1;p1=p1->next; /删除结点if(p1!=NULL)若找到结点,则删除if(p1=Worker) /若要删除的结点是第一个结点Worker=p1->next;delete p1;else /若要删除的结点是后续结点p2->next=p1->next;delete p1;公司工资管理系统cout<<&q
25、uot; 找到并删除n")else /未找到结点cout<<"未找至U !n")6.6 基础数据设置模块基础数据设置函数如下:void Company二Set()cout<<"n*设置基础数据*n"cout<<” 经 理 固 定 月 薪"<<ManagerSalary<<" 元:" cin>>ManagerSalary;cout<<”销售经理固定月薪"<<SalesManagerSalary<<&q
26、uot;元:"cin>>SalesManagerSalary;cout<<”销售经理提成"<<SalesManagerPercent<<"% :"cin>>SalesManagerPercent;cout<<” 销 售 人 员 提 成"<<SalesPercent<<" %:"cin>>SalesPercent;cout<<” 技术人员小时工资”<<WagePerHour<<&quo
27、t;(元/小时):" cin>>WagePerHour;cout<<"员工标识>="<<ID<<":"cin>>ID;)6.7 数据装入模块数据装入函数:void Company:Load() /数据装入(包括基础数据,人员数据)/基础数据装入ifstream fBase;char buf80; /buf用于保存数据文件中的注释字符串fBase.open("base.txt",ios:in);fBase>>buf>>ManagerSal
28、ary; /经理固定月薪-#-公司工资管理系统-15-销售经理固定月薪销售经理提成销售人员提成 技术人员小时工资员工标识fBase>>buf>>SalesManagerSalary; / fBase>>buf>>SalesManagerPercent; fBase>>buf>>SalesPercent; /fBase>>buf>>WagePerHour; /fBase>>buf>>ID;/ fBase.close();/清除内存人员数据Clear();/人员数据数据装入ifs
29、tream fPerson;Person *p=Worker;int No; char Name20; int Duty;double Amount,T;fPerson.open("person.txt",ios:in);/读一条记录fPerson>>No>>Name>>Duty;if(Duty=3)fPerson>>Amount;else if(Duty=4)fPerson>>T;while(fPerson.good()/ 创建员工结点switch(Duty)case 1:p=new Manager(No,Nam
30、e,Duty); break;case 2:p=new SalesManager(No,Name,Duty); break;case 3:p=new Sales(No,Name,Duty,Amount); break;case 4:p=new Technician(No,Name,Duty,T); break;p->next=0;/员工结点加入链表if(Worker) /若已经存在结点Person *p2;p2=Worker;while(p2->next) /查找尾结点p2=p2->next;p2->next=p; / 连接else / 若不存在结点(表空)Worker
31、=p; / 连接 / 读下一条记录fPerson>>No>>Name>>Duty;if(Duty=3)fPerson>>Amount; else if(Duty=4)fPerson>>T;fPerson.close();cout<<"n 人员和基础数据已经装入n"7系统测试进入VC+6.0,运行程序,如图7.1所小。公司工资管理系统-21-"F:由限乂自丫。十足0didcj_Vi5ua! C+- e,0dick_Vi5ual + 4- 6.0COMMONMSDEVgSXBL.人员和基础独据已建
32、装人.*B贝员月甯公*人人本®统 系 m 二 s 管经设图7.1进行基础数据设置,如图7.2所示。平:公制作WC + + &0ddcj_vi5ual C+ + 6HGclick_Viwal + + 6.0COMMONM&DEV9gBL, 0'1 回MKK息=d赶s 经设设置基石鹭遁*W理固正月薪目元r型的.肖售经理固造月薪加元05000 耨军理握展遇I 城人总幡矍黑元/小时)增加人员,入图7.3所示。"FVC - + 6,0<l i ck j _ Visual 匚+ - 6,0dick_Visua+ 6.0 C O M M 0 N M S DE V9 3B ,谕蜡管理系统人员和基础数据已经装入.一二鬻|-善询本月经菖信息 斜:- 51田请选择1-日式k "脚之施2-销售经理7肖售员4-技术员:1 俞入蛙名:孙瑞图7.3lJhqb查询人员本月销售信息,如图7.4所示 % -F:>i>WFVC+6.0clickj_VisuaI C + + 6,0dick_VisualC + - 6.0COM MONMSDE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度实习生实习协议:实习期间劳动权益保障及职业技能培训协议3篇
- 2024年铲车设备转让协议精简版一
- 2024年规范化仓库租赁服务协议样本版B版
- 全国山西经济版小学信息技术第一册第二单元活动5《收发电子邮件》说课稿
- 2024年高校图书采购合同范本
- 2025版跨境电子商务平台合作开发协议3篇
- 2024版进出口食品交易协议要点版B版
- 数字经济产业园项目运营方案
- 2025版搅拌站混凝土生产设备租赁及安装合同3篇
- 大班班级活动设计策划方案五篇
- 【良品铺子成本控制中存在的问题及优化建议探析(定量论文)11000字】
- 2023八年级语文上册 第三单元 13 唐诗五首说课稿 新人教版
- 2024至2030年中国青年旅舍行业发展监测及投资战略研究报告
- 牙膏采购投标合同范本
- 雷军2024演讲破釜沉舟
- 小学语文(修改病句)专题复习课件
- 医疗美容诊所规章制度上墙
- 中东及非洲牛奶婴儿配方奶粉行业现状及发展机遇分析2024-2030
- 桂林市龙胜各族自治县2022-2023学年七年级上学期期末地理试题【带答案】
- 数字化转型企业架构设计手册
- 广东省中山市2023-2024学年八年级上学期期末考试历史试卷(含答案)
评论
0/150
提交评论