




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
公司工资管理系统2 程序的主要功能2.1添加功能添加一个职员的基本信息,包括职工类型,姓名等等,2.2删除功能能够对一个职员的信息进行删除按员工号进行删除。2.3显示功能显示所有职员的主要信息包括员工类型,姓名,工资。2.4数据设置功能设置不同员工类型的工资要求。2.5修改功能对职员的信息进行修改。3 程序运行平台VC+6.0。4 总体设计主 函 数添加信息删除信息清空信息修改信息显示信息查找信息 图4.1 系统总体框架图雇员类销售员类经理类技术员类销售经理类图4.2类的层次结构图5 程序类的说明总职工类的声明class Person /员工类protected: int No; /编号 char Name20; /姓名 int Duty; /岗位 double Earning; /收入 Person *next;public: 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() virtualvoid shanchu() *name=*sex=0;number=age=hour=0;pay1=0;void wage() pay1=100*hour;virtual void print()wage();cout技术员员工号:number 姓名:name 性别:sex 年龄:age 工资:pay1endl;void input()Employee:input();cout工作时间(以小时计算)hour;protected:int hour,pay1;经理类的声明class Manager:public Person /经理类public: Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty) void CalcSalary()Earning=ManagerSalary; void Output() CalcSalary(); coutNotNamet经理tEarningAmount=Amount; double GetAmount() return Amount; void SetAmount(double Amount) this-Amount=Amount; void CalcSalary() Earning=SalesPercent/100*Amount; void Output() CalcSalary(); coutNotNamet销售员tAmounttEarningendl; ;销售经理类的声明class SalesManager:public Person /销售经理类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(); coutNotNamet销售经理tEarningnext; delete Worker; Worker=p; Worker=0; void Add(); /增加人员 void Delete(); /删除人员 void Modify(); /修改人员 void Query(); /查询人员 void Set(); /基础数据设置 void Save(); /数据存盘(包括基础数据,人员数据) void Load(); /数据装入(包括基础数据,人员数据);6 模块分析6.1 添加模块添加函数如下:void Company:Add() Person *p; /新结点指针 int Duty; char Name20; double Amount,T; coutn* 新增员工 *n; /输入员工信息 ID+; coutDuty; coutName; if(Duty=3) coutAmount; else if(Duty=4) coutT; 6.2 查询本月经营模块显示函数如下:void Company:Query() coutDuty=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-sum2endl; cout(按照20利润计算)n;6.3 修改模块修改函数如下:void Company:Modify() int No,Duty; char Name20; double Amount,T; coutn* 修改员工 *n; coutNo; /查找要修改的结点 Person *p1,*p2; p1=Worker; while(p1) if(p1-No=No) break; else p2=p1; p1=p1-next; /修改结点 if(p1!=NULL)/若找到结点 p1-Output(); coutDuty; if(p1-Duty!=Duty) /若岗位发生变动 /修改其它数据 coutName; if(Duty=3) coutAmount; else if(Duty=4) coutT; /创建新员工结点 Person *p3; switch(Duty) case 1:p3=new Manager(p1-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; /删除原来的员工结点 delete p1; else /若岗位没有变动 coutp1-Name; if(Duty=3) coutAmount; (Sales *)p1)-SetAmount(Amount); else if(Duty=4) coutT; (Technician *)p1)-SetT(T); cout修改成功!n; else /未找到结点 cout未找到!n;6.4 数据装盘模块数据装盘函数如下:void Company:Save() ofstream fPerson,fBase; char c; coutc; if(toupper(c)!=Y)return; /保存人员编号、姓名、岗位 fPerson.open(person.txt,ios:out); Person *p=Worker; while(p) fPersonNotNametDutyDuty=3) fPersonGetAmount()Duty=4) fPersonGetT()t; fPersonnext; fPerson.close(); /保存基础数据 fBase.open(base.txt,ios:out); fBase经理固定月薪tManagerSalaryendl; fBase销售经理固定月薪tSalesManagerSalaryendl; fBase销售经理提成tSalesManagerPercentendl; fBase销售人员提成tSalesPercentendl; fBase技术人员小时工资tWagePerHourendl; fBaseIDtIDendl; fPerson.close(); coutn保存人员和基础数据已经完成.n;6.5 删除模块删除函数如下:void Company:Delete() /删除人员 int No; coutn* 删除员工 *n; coutNo; /查找要删除的结点 Person *p1,*p2; p1=Worker; while(p1) if(p1-No=No) break; else p2=p1; p1=p1-next; /删除结点 if(p1!=NULL)/若找到结点,则删除 if(p1=Worker) /若要删除的结点是第一个结点 Worker=p1-next; delete p1; else /若要删除的结点是后续结点 p2-next=p1-next; delete p1; cout找到并删除n; else /未找到结点 cout未找到!n;6.6 基础数据设置模块 基础数据设置函数如下: void Company:Set() coutn* 设置基础数据 *n; cout经理固定月薪ManagerSalaryManagerSalary; cout销售经理固定月薪SalesManagerSalarySalesManagerSalary; cout销售经理提成SalesManagerPercentSalesManagerPercent; cout销售人员提成SalesPercentSalesPercent; cout技术人员小时工资WagePerHourWagePerHour; cout=IDID;6.7 数据装入模块 数据装入函数: void Company:Load() /数据装入(包括基础数据,人员数据) /基础数据装入 ifstream fBase; char buf80; /buf用于保存数据文件中的注释字符串 fBase.open(base.txt,ios:in); fBasebufManagerSalary; /经理固定月薪 fBasebufSalesManagerSalary; /销售经理固定月薪 fBasebufSalesManagerPercent; /销售经理提成 fBasebufSalesPercent; /销售人员提成 fBasebufWagePerHour; /技术人员小时工资 fBasebufID; /员工标识 fBase.close(); /清除内存人员数据 Clear(); /人员数据数据装入 ifstream fPerson; Person *p=Worker; int No; char Name20; int Duty; double Amount,T; fPerson.open(person.txt,ios:in); /读一条记录 fPersonNoNameDuty; if(Duty=3)fPersonAmount; else if(Duty=4)fPersonT; while(fPerson.good() /创建员工结点 switch(Duty) case 1:p=new Manager(No,Name,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=p; /连接 /读下一条记录 fPersonNoNameDuty; if(Duty=3)fPersonAmount; else if(Duty=4)fPersonT; fPerson.close(); coutn人员和基础数据已经装入.n;7 系统测试进入VC+6.0,运行程序,如图7.1所示。图7.1进行基础数据设置,如图7.2所示。增加人员,入图7.3所示。图7.3查询人员本月销售信息,如图7.4所示。图7.4进行修改,如图7.5所示。图7.5进行删除,如图7.6所示。图7.6数据存盘,如图7.7所示。图7.78 结论此次课程设计,让我懂得了更深地了解了C+的各方面的知识,感悟到C+的魅力所在,让我能更熟练地去运用C+的知识,编出让自己满意的程序,获得更大的动力,让我不断进步!此次课程设计,也暴露了自己很多的不足,许多知识掌握得不熟,模棱两可,不过我去图书馆借阅书籍,通过查询,还是解决了这些问题,巩固了自己。致 谢 感谢我的C+任课老师蒋明礼老师,您的教导,使我更好地学习C+,掌握得更为熟练,使我受益匪浅。感谢我的课程设计辅导老师石红老师,正因为你的辅导,使我更顺利地做好这个课
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 边城旧事:民俗文化与课文解析教案
- 化学工程工艺原理测试卷集与解析
- 先进技术推动沙化土地治理的创新路径
- 记一个特别的节日作文5篇
- 不同行业交叉分类统计表
- 农业科技项目合作开发与资源共享协议
- 乡村中医药服务保障体系的优化与完善
- 人口迁移情况表格
- 2025年信息安全工程师执业资格考试试卷
- 2025年美术设计专业资格考试试题及答案
- 恶臭的测定作业指导书
- 2024年上海浦东新区公办学校储备教师教辅招聘真题
- 2025年高考历史全国卷试题评析-教育部教育考试院
- 贵州省贵阳市2023−2024学年度第二学期期末监测试卷高一 数学试题(含解析)
- 井冈山的故事试题及答案
- 城市管理公司管理制度
- 2025年中国合成生物学行业市场前景预测及投资价值评估分析报告
- 游艺项目合作合同协议书
- T/CAQI 96-2019产品质量鉴定程序规范总则
- 育婴师上户合同范本
- 俱乐部授权协议书
评论
0/150
提交评论