

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c+课程设计公司工资管理系统说明书 g 2 程序的主要功能 2.1添加功能 添加一个职员的基本信息,包括职工类型,姓名等等, 2.2删除功能 能够对一个职员的信息进行删除按员工号进行删除。 2.3显示功能 显示全部职员的主要信息包括员工类型,姓名,工资。 2.4数据设置功能 设置不同员工类型的工资要求。 2.5修改功能 对职员的信息进行修改。 3 程序运行平台 vc+6.0。 4 总体设计 图4.1 系统总体框架图 g 图4.2类的层次结构图 5 程序类的说明 总职工类的声明 class person /员工类 protected: int no; /编号 char name20; /姓名 i
2、nt 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 employee public: g technician() virtual
3、 void shanchu() *name=*sex=0;number=age=hour=0;pay1=0; void wage() pay1=100*hour; virtual void print() void input() 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 outpu
4、t() calcsalary(); coutnotnamet经理tearningendl; ; wage(); cout技术员员工号:number 姓名:name 性别:sex 年龄:age 工资:pay1endl; employee:input(); cout工作时间(以小时计算)endl; cinhour; g 销售员类的声明 class sales:public person /销售员类 private: double amount; public: sales(char id,char *name,int duty,double amount):person(id,name,duty)
5、 this-amount=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; g pub
6、lic: 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销售经理tearningendl; ; 公司类的声明 class company /公司类 private: person *worker; /员工表 void
7、 clear(); /清除内存中数据 public: company() worker=0; load(); company() person *p; p=worker; while(p) g p=p-next; delete worker; worker=p; worker=0; void add(); /增加人员 void delete(); /删除人员 void modify(); /修改人员 void query(); /查询人员 void set(); /基础数据设置 void save(); /数据存盘(包括基础数据,人员数据) void load(); /数据装入(包括基础数据,
8、人员数据) ; 6 模块分析 6.1 添加模块 添加函数如下: void company:add() person *p; /新结点指针 int duty; char name20; double amount,t; coutn* 新增员工 *n; /输入员工信息 id+; cout输入岗位(1-经理2-销售经理3-销售员4-技术员):; cinduty; cout输入姓名:; cinname; g if(duty=3) cout本月销售额:; cinamount; else if(duty=4) cout本月工作小时数(0-168):; cint; 6.2 查询本月经营模块 显示函数如下:
9、void company:query() coutn* 查询人员本月销售信息 *n; double sum=0; /销售额总和 person *p=worker; while(p) if(p-duty=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; g p=p-next; cout本月盈利:sum*0.20-sum2endl; c
10、out(根据20利润计算)n; 6.3 修改模块 修改函数如下: void company:modify() int no,duty; char name20; double amount,t; coutn* 修改员工 *n; coutid:; cinno; /查找要修改的结点 person *p1,*p2; p1=worker; while(p1) if(p1-no=no) break; else p2=p1; p1=p1-next; g /修改结点 if(p1!=null)/若找到结点 p1-output(); cout调整岗位(1-经理2-销售经理3-销售员4-技术员):; cindut
11、y; if(p1-duty!=duty) /若岗位发生变动 /修改其它数据 cout输入姓名:; cinname; if(duty=3) cout本月销售额:; cinamount; else if(duty=4) cout本月工作小时数(0-168):; cint; /创建新员工结点 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,d
12、uty,amount); break; case 4:p3=new technician(p1-no,name,duty,t); break; /员工结点替换到链表 g p3-next=p1-next; if(p1=worker) /若要替换的结点是第一个结点 worker=p3; else /若要删除的结点是后续结点 p2-next=p3; /删除原来的员工结点 delete p1; else /若岗位没有变动 cout输入姓名:; cinp1-name; if(duty=3) cout本月销售额:; cinamount; *)p1)-setamount(amount); else if(d
13、uty=4) cout本月工作小时数(0-168):; cint; *)p1)-sett(t); cout修改胜利!n; else /未找到结点 cout未找到!n; 6.4 数据装盘模块 数据装盘函数如下: void company:save() (sales (technician g ofstream fperson,fbase; char c; coutn保存人员和基础数据,是否连续?y/n:; cinc; if(toupper(c)!='y')return; /保存人员编号、姓名、岗位 fperson.open(person.txt,ios:out); person
14、*p=worker; while(p) fpersonp-notp-nametp-dutyt; if(p-duty=3) fperson(sales*)p)-getamount()t; else if(p-duty=4) fperson(technician *)p)-gett()t; fpersonendl; p=p-next; fperson.close(); /保存基础数据 fbase.open(base.txt,ios:out); fbase经理固定月薪tmanagersalaryendl; fbase销售经理固定月薪tsalesmanagersalaryendl; fbase销售经理
15、提成tsalesmanagerpercentendl; fbase销售人员提成tsalespercentendl; fbase技术人员小时工资twageperhourendl; fbaseidtidendl; fperson.close(); g coutn保存人员和基础数据已经完成.n; 6.5 删除模块 删除函数如下: void company:delete() /删除人员 int no; coutn* 删除员工 *n; coutid:; cinno; /查找要删除的结点 person *p1,*p2; p1=worker; while(p1) if(p1-no=no) break; el
16、se p2=p1; p1=p1-next; /删除结点 if(p1!=null)/若找到结点,则删除 if(p1=worker) /若要删除的结点是第一个结点 worker=p1-next; g delete p1; else /若要删除的结点是后续结点 p2-next=p1-next; delete p1; cout找到并删除n; else /未找到结点 cout未找到!n; 6.6 基础数据设置模块 基础数据设置函数如下: void company:set() coutn* 设置基础数据 *n; cout经理固cinmanagersalary; 定 月 薪 managersalary 元
17、:; cout销售经理固定月薪salesmanagersalary元:; cinsalesmanagersalary; cout销售经理提cinsalesmanagerpercent; cout销售人员cinsalespercent; 成提 salesmanagerpercent成 salespercent :; :; cout技术人员小时工资wageperhour(元/小时):; cinwageperhour; cout员工标识=id:; cinid; 6.7 数据装入模块 数据装入函数: void company:load() /数据装入(包括基础数据,人员数据) g /基础数据装入 if
18、stream fbase; char buf80; /buf用于保存数据文件中的解释字符串 fbase.open(base.txt,ios:in); fbasebufmanagersalary; /经理固定月薪 fbasebufsalesmanagersalary; /销售经理固定月薪 fbasebufsalesmanagerpercent; /销售经理提成 fbasebufsalespercent; /销售人员提成 fbasebufwageperhour; /技术人员小时工资 fbasebufid; /员工标识 fbase.close(); /清除内存人员数据 clear(); /人员数据数
19、据装入 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) g 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 太阳系外行星的发现及其对宇宙学的影响-深度研究
- 2020-2021年湖北省荆州市监利市小升初语文真题试卷 解析版
- 2023年湖北省武汉市硚口区小升初数学模拟试卷 解析版
- 3.3队列表演(二)(中等作业)2024-2025学年三年级下册数学 北师大版
- 2024年国网新疆电力有限公司招聘笔试真题
- 七年级下册英语十一单元测试卷及答案
- 辽宁省葫芦岛市2024-2025学年高三上学期1月期末语文试题及参考答案
- 主播直播带货协议私人主播
- (含答案解析)三年级下册英语Unit3AtthezooPartB同步听力训练人教PEP版
- 8.3.1 课件:动能定理的理解
- 2025年阀门和龙头项目发展计划
- 快手信息流广告优化师(初级)认证考试题库(附答案)
- 园林景观绿化工程施工组织设计方案
- 校园安全教育高中生
- 2024至2030年中国数字压力表行业投资前景及策略咨询研究报告
- 《SPIN顾问式销售》课件
- 农产品质量安全检测技术
- 【蝉妈妈】2024年抖音电商酒水行业趋势洞察报告
- 2025届河南省郑州市外国语学校高三考前热身英语试卷含解析
- 物业员工行为规范管理手册
- 【初中数学】2024-2025学年人教版七年级数学上册期末模拟练习
评论
0/150
提交评论