![C课程设计公司工资管理系统说明书_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/2fdc773c-c345-4ce7-868d-5452d1c9f87d/2fdc773c-c345-4ce7-868d-5452d1c9f87d1.gif)
![C课程设计公司工资管理系统说明书_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/2fdc773c-c345-4ce7-868d-5452d1c9f87d/2fdc773c-c345-4ce7-868d-5452d1c9f87d2.gif)
![C课程设计公司工资管理系统说明书_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/2fdc773c-c345-4ce7-868d-5452d1c9f87d/2fdc773c-c345-4ce7-868d-5452d1c9f87d3.gif)
![C课程设计公司工资管理系统说明书_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/2fdc773c-c345-4ce7-868d-5452d1c9f87d/2fdc773c-c345-4ce7-868d-5452d1c9f87d4.gif)
![C课程设计公司工资管理系统说明书_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/2fdc773c-c345-4ce7-868d-5452d1c9f87d/2fdc773c-c345-4ce7-868d-5452d1c9f87d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数学与计算机学院课程设计说明书课 程 名 称: 面向对象程序设计-课程设计 课 程 代 码: 8404101 题 目: 公司工资管理系统 年级/专业/班: 2007级软件工程1 学 生 姓 名: 刘远强 开 始 时 间: 2009 年 06 月 10 日完 成 时 间: 2009 年 06 月 28 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总 分(100)指导教师签名: 年 月 日目 录1 引 言 11.1 问题的提出 11.2国内外研究的现状 11.5任务与分析 12 程序的主要功能 22.1添加功能 22.2删除功能 22.3显示
2、功能 22.4数据设置功能 22.5修改功能 23 程序运行平台 34 总体设计 45 程序类的说明 56 模块分析 86.1 添加模块 86.2 查询本月经营模块 86.3 修改模块 86.4 数据存盘模块 86.5 删除模块 86.6 基础数据设置模块 86.7 数据装入模块 87 系统测试 98 结论 10致 谢 11参考文献 12摘 要 随着计算机的普及计算机科学越来越变得重要,程序设计作为计算机科学的基本,地位也变得越来越重要。C+作为程序设计的基础,地位也是很重要的。C+是开发性能高复杂度系统的最好语言。此次进行C+课程设计,做一个公司工资管理系统,让我更为深层次地了解到了C+的魅
3、力所在,让我懂得什么才叫编程的快乐。社会在进步,计算机科学也在进步,C+的重要性也越来越重要,我们只有不断地学习,才能赶上时代的步伐关键词:公司工资管理系统;计算机;C+;程序设计 1 引 言 1.1 问题的提出 在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。某小型企业出与这种目的制作了这个人事管理系统。1.2国内外研究的现状 C+发展至今已经有20年的时光了,在这20年里,C+逐步的发展壮大,为面向对象开发思维的推广提供了实现的基础。可以说C+对于现在思想的成熟以及在企业开
4、发中的大量应用时功不可没的。蛋随着1995年网络时代的到来,以及JAVA语言的诞生使得C+逐步进入一个尴尬的境地。由于没有跨平台以及网络应用的优势,在企业级应用开发中逐步被JAVA所替代。这几年来笑道LOKI,大到STL等程序库已经为C+语言扩展了广泛的应用领域。我相信通过大家的努力,C+的未来必将更加精彩!1.5任务与分析 通过设计一个较为简单的小型公司工资管理系统,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯
5、。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
6、Earning; /收入Person *next;public:Person(char ID,char *Name,int Dutythis->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;
7、number=age=hour=0;pay1=0;void wage( pay1=100*hour;virtual void print(wage(;cout<<"技术员员工号:"< <<"姓名:"< <<"性别:"< <<"年龄:"< <<"工资:"< void input(Employee:input(;cout<<"工作时间(以小时计算"< cin>>
8、hour;protected:int hour,pay1;经理类的声明class Manager:public Person /经理类public:Manager(char ID,char *Name,int Duty:Person(ID,Name,Dutyvoid CalcSalary(Earning=ManagerSalary;void Output(CalcSalary(;cout< 经理 t"< ; 销售员类的声明class Sales:public Person /销售员类private:double Amount;public:Sales(char ID,ch
9、ar *Name,int Duty,double Amount:Person(ID,Name,Dutythis->Amount=Amount;double GetAmount(return Amount;void SetAmount(double Amountthis->Amount=Amount;void CalcSalary(Earning=SalesPercent/100*Amount;void Output(CalcSalary(;cout< 销售员 t"< ;销售经理类的声明class SalesManager:public Person /销售经理
10、类private:double Amount;public:SalesManager(char ID,char *Name,int Duty:Person(ID,Name,Dutyvoid SetAmount(double sAmount=s;void CalcSalary(Earning=SalesManagerSalary+Amount*SalesManagerPercent/100;void Output(CalcSalary(;cout< 销售经理 t"< ;公司类的声明class Company /公司类private:Person *Worker; /员工表v
11、oid Clear(; /清除内存中数据public:Company(Worker=0; Load(;Company(Person *p;p=Worker;while(pp=p->next;delete Worker;Worker=p;Worker=0;void Add(; /增加人员void Delete(; /删除人员void Modify(; /修改人员void Query(; /查询人员void Set(; /基础数据设置void Save(; /数据存盘(包括基础数据,人员数据void Load(; /数据装入(包括基础数据,人员数据;6 模块分析6.1 添加模块添加函数如下:
12、void Company:Add(Person *p; /新结点指针int Duty; char Name20;double Amount,T;cout<<"n* 新增员工 *n" /输入员工信息ID+;cout<<"输入岗位(1-经理2-销售经理3-销售员4-技术员:" cin>>Duty;cout<<"输入姓名:" cin>>Name;if(Duty=3cout<<"本月销售额:" cin>>Amount;else if(Dut
13、y=4cout<<"本月工作小时数(0-168:" cin>>T;6.2 查询本月经营模块显示函数如下:void Company:Query(cout<<"n* 查询人员本月销售信息 *n"double sum=0; /销售额总和Person *p=Worker;while(pif(p->Duty=3sum+=(Sales *p->GetAmount(;p=p->next;p=Worker;double sum2=0; /工资总和while(pif(p->Duty=2(SalesManager
14、*p->SetAmount(sum;p->Output(;sum2+=p->Earning;p=p->next;cout<<"本月盈利:"< cout<<"(按照20利润计算n"6.3 修改模块修改函数如下:void Company:Modify(int No,Duty;char Name20; double Amount,T;cout<<"n* 修改员工 *n"cout<<"ID:" cin>>No;/查找要修改的结点Per
15、son *p1,*p2; p1=Worker;while(p1if(p1->No=Nobreak;elsep2=p1;p1=p1->next;/修改结点if(p1!=NULL/若找到结点p1->Output(;cout<<"调整岗位(1-经理2-销售经理3-销售员4-技术员:" cin>>Duty;if(p1->Duty!=Duty /若岗位发生变动 /修改其它数据cout<<"输入姓名:" cin>>Name; if(Duty=3cout<<"本月销售额:&q
16、uot; cin>>Amount;else if(Duty=4cout<<"本月工作小时数(0-168:" cin>>T;/创建新员工结点Person *p3;switch(Dutycase 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
17、(p1->No,Name,Duty,T; break;/员工结点替换到链表p3->next=p1->next;if(p1=Worker /若要替换的结点是第一个结点Worker=p3;else /若要删除的结点是后续结点p2->next=p3;/删除原来的员工结点delete p1;else /若岗位没有变动cout<<"输入姓名:" cin>>p1->Name;if(Duty=3cout<<"本月销售额:" cin>>Amount; (Sales *p1->SetAmo
18、unt(Amount;else if(Duty=4cout<<"本月工作小时数(0-168:" cin>>T; (Technician *p1->SetT(T;cout<<"修改成功!n"else /未找到结点cout<<"未找到!n"6.4 数据装盘模块数据装盘函数如下:void Company:Save( ofstream fPerson,fBase;char c;cout<<"n保存人员和基础数据,是否继续?Y/N:" cin>>c
19、;if(toupper(c!='Y'return;/保存人员编号、姓名、岗位fPerson.open("person.txt",ios:out; Person *p=Worker;while(pfPerson< No<<"t"< Name<<"t"< Duty<<"t" if(p->Duty=3fPerson<<(Sales*p->GetAmount(<<"t"else if(p->D
20、uty=4fPerson<<(Technician *p->GetT(<<"t"fPerson< p=p->next;fPerson.close(;/保存基础数据fBase.open("base.txt",ios:out;fBase<<"经理固定月薪t"< fBase<<"销售经理固定月薪t"< fBase<<"销售经理提成t"< fBase<<"销售人员提成t"<
21、; fBase<<"技术人员小时工资t"< fBase<<"IDt"< fPerson.close(;cout<<"n保存人员和基础数据已经完成.n"6.5 删除模块删除函数如下:void Company:Delete( /删除人员int No;cout<<"n* 删除员工 *n"cout<<"ID:" cin>>No;/查找要删除的结点Person *p1,*p2; p1=Worker;while(p1if(p
22、1->No=Nobreak;elsep2=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(cout<<&q
23、uot;n* 设置基础数据 *n"cout<<"经理固定月薪"< 元 :" cin>>ManagerSalary; cout<<"销售经理固定月薪"< 元 :" cin>>SalesManagerSalary; cout<<"销售经理提成"< :" cin>>SalesManagerPercent; cout<<"销售人员提成"< :" cin>>
24、SalesPercent; cout<<"技术人员小时工资"< 元 / 小时 :" cin>>WagePerHour; cout<<"员工标识>="< >ID; 6.7 数据装入模块数据装入函数:void Company:Load( /数据装入(包括基础数据,人员数据/基础数据装入ifstream fBase;char buf80; /buf用于保存数据文件中的注释字符串fBase.open("base.txt",ios:in;fBase>>buf>
25、;>ManagerSalary; /经理固定月薪fBase>>buf>>SalesManagerSalary; /销售经理固定月薪fBase>>buf>>SalesManagerPercent; /销售经理提成fBase>>buf>>SalesPercent; /销售人员提成fBase>>buf>>WagePerHour; /技术人员小时工资fBase>>buf>>ID; /员工标识fBase.close(; /清除内存人员数据Clear(; /人员数据数据装入ifst
26、ream 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=3fPerson>>Amount;else if(Duty=4fPerson>>T;while(fPerson.good(/创建员工结点switch(Dutycase 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=p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 用阅读与学习习惯提升个人素养与能力
- 中国烤花酒瓶行业市场全景分析及投资规划建议报告
- 电商物流行业政策环境分析与优化建议
- 知识经济下教育领域的版权创新应用
- 辞退劳动仲裁申请书
- 铁岭卫生职业学院《智能感知》2023-2024学年第二学期期末试卷
- 集美大学诚毅学院《食品卫生学》2023-2024学年第二学期期末试卷
- 许昌学院《学前儿童融合教育》2023-2024学年第二学期期末试卷
- 中国中粘度聚碳酸酯项目投资可行性研究报告
- 2024其他建筑业市场前景及投资研究报告
- 中华人民共和国保守国家秘密法实施条例培训课件
- 2024高考物理二轮复习电学实验专项训练含解析
- 暴发性心肌炎的诊断与治疗
- 部编小学语文新教材培训
- 高一化学必修一试题
- 高中英语:倒装句专项练习(附答案)
- 人教版二年级上册100以内加减法竖式计算题300道及答案
- 2025届河北衡水数学高三第一学期期末统考试题含解析
- 直肠癌课件完整版本
- 医学教材 《甲状腺结节和分化型甲状腺癌诊治指南(第二版)》解读课件文
- 食材配送服务投标方案(技术标)
评论
0/150
提交评论