工资管理系统C++课程设计
c++工资管理系统课程设计

c++工资管理系统课程设计
摘要:
一、引言
- 介绍工资管理系统的背景和意义
- 阐述课程设计的目的和任务
二、系统需求分析
- 功能需求
1.员工信息管理
2.工资计算
3.工资查询
4.工资统计
- 性能需求
1.响应速度
2.数据处理能力
3.系统稳定性
三、系统设计
- 系统架构设计
1.前端界面设计
2.后端功能实现
3.数据库设计
- 模块划分
1.员工信息管理模块
2.工资计算模块
3.工资查询模块
4.工资统计模块
四、系统实现
- 开发环境与工具
- 编程语言与框架
- 关键技术与实现方法
1.数据库操作
2.工资计算算法
3.界面设计
五、系统测试与优化
- 测试用例设计
- 测试环境与工具
- 测试结果分析与优化
六、总结与展望
- 总结课程设计的收获与经验
- 展望未来优化与扩展的方向
正文:
随着企业规模的扩大和管理需求的提高,工资管理系统成为企事业单位不可或缺的一部分。
本文以C++为开发语言,设计并实现了一个简单易用的工资管理系统。
首先,从需求分析出发,梳理了系统的功能需求和性能需求。
其
次,采用系统设计的方法,对系统架构、模块划分、数据库设计等方面进行了详细设计。
接着,介绍了系统实现的详细过程,包括开发环境与工具、编程语言与框架、关键技术与实现方法等。
然后,通过系统测试与优化,对系统进行了严格的测试,并对测试结果进行了分析与优化。
c课程设计工资管理系统

c 课程设计工资管理系统一、教学目标本课程旨在通过学习工资管理系统的设计与实现,使学生掌握以下知识目标:1.理解工资管理的基本概念和流程。
2.掌握常用的编程语言和数据库管理系统。
3.学习软件工程的基本原则和方法。
学生将具备以下技能目标:1.能够使用编程语言实现简单的工资管理功能。
2.能够使用数据库管理系统进行工资数据的存储和管理。
3.能够运用软件工程的方法进行工资管理系统的开发和维护。
通过本课程的学习,学生将培养以下情感态度价值观目标:1.培养对计算机科学和软件工程的兴趣和热情。
2.培养解决问题的能力和团队合作精神。
3.培养对工作的敬业精神和对工资管理的重视。
二、教学内容本课程的教学内容将按照以下大纲进行和安排:1.工资管理系统的概述:介绍工资管理的基本概念和流程。
2.编程语言和数据库管理系统的学习:学习常用的编程语言和数据库管理系统,并进行相关的实践操作。
3.软件工程的原则和方法:学习软件工程的基本原则和方法,并将其应用到工资管理系统的设计和实现中。
4.工资管理系统的实现:通过编程实践,实现工资管理系统的基本功能。
5.工资管理系统的测试和优化:对实现的工资管理系统进行测试和优化,以确保其正确性和效率。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法进行教学,包括:1.讲授法:通过讲解和演示,向学生传授工资管理系统的相关知识和技能。
2.讨论法:学生进行小组讨论,促进学生之间的交流和合作。
3.案例分析法:通过分析实际的工资管理案例,帮助学生理解和应用所学的知识和技能。
4.实验法:安排学生进行实验操作,实践和巩固所学的知识和技能。
四、教学资源为了支持教学内容和教学方法的实施,将选择和准备以下教学资源:1.教材:选择适合学生年级和知识水平的工资管理系统相关教材。
2.参考书:提供相关的参考书籍,供学生进行深入学习和参考。
3.多媒体资料:制作和收集与工资管理系统相关的多媒体资料,如演示文稿、视频等。
工资管理c语言课程设计

工资管理c语言课程设计一、课程目标知识目标:1. 掌握C语言中数据类型、运算符、控制流程等基本语法知识;2. 学会使用C语言进行结构体定义,实现工资管理系统中数据的结构化存储;3. 理解文件操作的基本方法,实现对工资数据的读写和存储;4. 掌握模块化编程思想,将工资管理系统拆分为多个功能模块,提高代码可读性和可维护性。
技能目标:1. 能够运用所学C语言知识,独立完成工资管理系统的设计与编码;2. 能够通过调试和修改代码,解决工资管理系统中出现的常见问题;3. 学会运用结构化分析和设计方法,对工资管理系统进行模块划分和功能设计;4. 培养良好的编程习惯,写出简洁、高效、可维护的代码。
情感态度价值观目标:1. 培养学生严谨、细心的编程态度,树立良好的编程习惯;2. 增强学生对C语言编程的兴趣,激发主动学习和探究的热情;3. 培养学生团队协作意识,提高沟通与协作能力;4. 使学生认识到编程在解决实际问题中的价值,增强实践操作能力。
本课程针对高年级学生,在已有C语言基础之上,通过工资管理系统的课程设计,让学生将理论知识与实践相结合,提高编程能力和解决实际问题的能力。
课程注重培养学生严谨的编程思维、良好的编程习惯和团队协作精神,使学生在完成课程学习的同时,具备一定的实际项目经验。
二、教学内容1. C语言基础知识复习:数据类型、变量、常量、运算符、控制流程(选择、循环);2. 结构体与共用体:工资管理系统中的员工信息结构定义,掌握结构体成员访问方法;3. 文件操作:文件读写、文件打开与关闭、文件定位,实现对工资数据的持久化存储;4. 函数与模块化编程:功能模块划分,掌握函数定义、调用、参数传递和返回值;5. 工资管理系统功能设计:需求分析,功能模块划分,模块间接口设计;6. 工资管理系统编码实现:根据设计,编写各模块代码,实现工资管理系统的各项功能;7. 系统测试与调试:编写测试用例,进行功能测试,发现问题并进行调试;8. 代码优化与维护:提高代码可读性、可维护性,培养良好的编程习惯。
c语言工资管理系统课程设计

c语言工资管理系统课程设计一、课程目标知识目标:1. 掌握C语言中数据类型、变量、运算符、控制结构等基本知识;2. 学会使用数组、结构体等C语言高级特性;3. 理解文件操作在C语言中的应用;4. 掌握工资管理系统的基本功能模块及其实现方法。
技能目标:1. 能够运用C语言编写简单的工资管理系统程序;2. 学会分析工资管理系统的需求,设计合理的程序结构;3. 掌握调试程序、解决常见编译错误和逻辑错误的方法;4. 提高学生的编程实践能力和问题解决能力。
情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发自主学习C语言的积极性;2. 培养学生的团队协作精神,提高沟通与协作能力;3. 增强学生的信息安全意识,注重保护用户隐私;4. 培养学生遵循编程规范,养成良好的编程习惯。
课程性质分析:本课程为C语言高级应用课程,以实现工资管理系统为项目驱动,结合实际应用场景,让学生在实践中掌握C语言编程技能。
学生特点分析:学生已具备C语言基础知识,具有一定的编程能力,但对复杂程序设计、模块化编程尚需进一步锻炼。
教学要求:结合课程性质和学生特点,注重实践操作,引导学生自主学习,培养编程思维和问题解决能力。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、变量、常量、运算符、控制结构(条件语句、循环语句);2. 函数:函数定义、调用、参数传递、返回值;3. 数组与字符串:一维数组、二维数组、字符串操作;4. 指针:指针概念、指针运算、指针与数组、指针与函数;5. 结构体:结构体定义、结构体变量创建、结构体数组、结构体指针;6. 文件操作:文件打开与关闭、读写文件、文件定位;7. 工资管理系统功能模块设计:需求分析、模块划分、数据结构设计;8. 编程实践:编写工资管理系统各功能模块代码,如员工信息管理、工资计算、工资查询等;9. 系统调试与优化:编译错误处理、逻辑错误调试、性能优化;10. 代码规范与编程习惯:命名规范、代码组织、注释使用。
工资管理系统c语言课程设计

工资管理系统c语言课程设计工资管理系统是一种用于管理和计算员工工资的软件系统。
对于企业而言,工资管理是一个重要的管理环节,直接关系到员工福利和企业的正常运行。
因此,开发一个功能完善、稳定可靠的工资管理系统对企业来说至关重要。
工资管理系统应具备以下基本功能:员工信息管理、工资计算、工资发放、报表生成等。
员工信息管理包括员工个人信息、职位信息、工资信息等的录入、修改、查询、删除等操作。
工资计算是根据员工的工作情况和薪资政策进行工资计算,包括基本工资的计算、加班工资的计算、奖金的计算等。
工资发放则是按照企业规定的发放时间和方式进行工资发放。
报表生成是将工资统计数据进行汇总和统计,并以表格、图形等形式生成相应的报表,以便管理人员进行分析和决策。
工资管理系统的实现需要采用结构化程序设计的方法。
首先,需要设计员工信息的数据结构,包括员工编号、姓名、性别、年龄、部门、职位、基本工资等字段。
然后,需要设计工资计算的算法,按照薪资政策进行计算,并将计算结果保存在员工的工资信息中。
接下来,需要设计工资发放的算法,根据发放时间和方式进行工资发放,并更新员工的工资信息。
最后,需要设计报表生成的算法,将工资统计数据汇总并以表格、图形等形式生成相应的报表。
在具体的实现过程中,可以采用C语言作为编程语言,并结合相关的开发工具进行开发。
在编程实现时,需要合理使用各种数据结构和算法,提高程序的效率和稳定性。
此外,需要注意进行错误处理和异常处理,保证程序运行的稳定性和安全性。
另外,还可以加入一些附加功能,如权限管理、数据备份、数据导入导出等,增加系统的灵活性和实用性。
综上所述,工资管理系统是一个重要的软件系统,对于企业来说具有重要的意义。
通过规范的员工信息管理、工资计算、工资发放和报表生成等功能,可以提高企业的管理效率和质量,实现人力资源的合理配置和有效利用。
同时,在日常的使用和维护过程中,需要注意保证系统的稳定性和安全性,提高系统的可靠性和可用性。
c++工资管理系统课程设计

c++工资管理系统课程设计一、课程设计背景及要求随着现代企业管理的日益规范,工资管理系统已成为企业必不可少的一部分。
本课程设计旨在实现一个简单的C++工资管理系统,用于计算职工当月工资、存储档案信息,并满足不同职位工资差异的需求。
系统主要涉及五种职位:技术人员、销售人员、文秘、技术经理和销售经理。
二、系统功能概述1.职工信息管理:存储职工的职工号、姓名、月工资、年龄、性别等信息。
2.工资计算:根据不同职位和业绩,计算职工的工资。
- 技术人员:按小时计算,每小时工资为40元。
- 销售人员:按销售总额的5%计算提成。
- 文秘:设有4000元底薪,奖金根据当月工作情况而定。
- 技术经理:固定月薪为5000元,根据工作业绩分为三个等级,每级有1000元奖金。
- 销售经理:固定月薪为5000元,按团队销售总额的0.3%计算奖金。
3.查询与统计:提供职工信息的查询、统计功能,如按条件筛选、显示员工数目、工资总数等。
4.数据保存与加载:利用文件系统保存职工信息,以便在系统下次运行时继续使用。
三、设计思路与实现1.设计合适的数据结构,如结构体数组、链表等,用于存储职工信息和计算工资。
2.确定文件存储格式(如文本或二进制)和文件名,实现数据的读写操作。
3.采用自顶向下的设计方法,划分模块,编写函数,实现各项功能。
四、程序清单及运行结果1.程序清单:列举程序中涉及的主要函数和关键代码。
2.运行结果:展示程序运行时的输出,如职工信息显示、工资计算结果等。
五、程序使用说明1.管理员登录:输入密码进入系统。
2.录入职工信息:按照提示录入职工信息,包括职工号、姓名、月工资、年龄、性别等。
3.查询职工信息:根据工号或姓名查询职工信息。
4.计算工资:根据职工类型和业绩,计算工资并显示。
5.统计信息:显示职工总数、工资总数等。
6.退出系统:完成操作后,选择退出系统。
六、总结与心得体会1.掌握C++语言的基本语法和编程技巧,提高编程能力。
c工资管理课程设计

c工资管理课程设计一、课程目标知识目标:1. 学生理解工资管理的基本概念,掌握工资的计算方法和流程。
2. 学生掌握工资表的制作和解读,了解个人所得税的相关知识。
3. 学生了解我国工资管理的相关法律法规,知晓劳动者的权益保护。
技能目标:1. 学生能够运用所学知识进行工资的计算,准确地完成工资表的制作。
2. 学生能够运用电子表格软件进行工资管理,提高数据处理和分析能力。
3. 学生通过案例分析,提高解决实际工资管理问题的能力。
情感态度价值观目标:1. 学生通过学习工资管理,培养对劳动者的尊重和关爱,增强社会责任感。
2. 学生在小组合作学习中,培养团队协作精神和沟通能力。
3. 学生通过了解工资管理的法律法规,增强法治观念,提高法律意识。
课程性质:本课程为实践性较强的课程,结合实际工资管理案例,让学生在理论学习的基础上,提高实际操作能力。
学生特点:学生具备一定的电子表格操作基础,对工资管理有一定的认知,但缺乏系统学习和实际操作经验。
教学要求:教师需结合实际案例,引导学生运用所学知识解决工资管理问题,注重培养学生的实际操作能力和法律意识。
通过课堂讲解、案例分析、小组讨论等多种教学手段,确保学生达到预设的课程目标。
教学过程中,关注学生的学习反馈,及时调整教学方法和节奏,提高教学效果。
二、教学内容1. 工资管理基本概念:工资的定义、工资构成要素、工资制度分类。
2. 工资计算方法:计时工资、计件工资、绩效工资的计算方法,各类奖金的计算。
3. 工资表的制作与解读:工资表的组成、填写方法、工资条的解读。
4. 个人所得税知识:个人所得税的基本概念、税率、计税方法、扣除标准。
5. 工资管理的法律法规:我国工资管理的相关法律法规,如《劳动法》、《劳动合同法》等。
6. 劳动者权益保护:工资支付保障、加班工资、社会保险等方面的权益保护。
教学大纲安排:第一课时:工资管理基本概念及工资计算方法介绍。
第二课时:工资表的制作与解读,个人所得税知识讲解。
c语言工资管理系统课程设计

c语言工资管理系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中数组、结构体、文件操作等基本知识,并能将其应用于工资管理系统。
2. 使学生了解工资管理系统的基本功能需求,如员工信息录入、查询、修改和删除等。
3. 帮助学生理解工资计算方法,包括基本工资、加班工资、税金和实发工资等。
技能目标:1. 培养学生运用C语言设计、编写和调试工资管理系统的能力。
2. 提高学生分析问题、解决问题的能力,使其能够根据实际需求,优化系统功能。
3. 培养学生团队协作和沟通能力,通过分组完成任务,共同完成课程设计。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神。
2. 培养学生认真负责的态度,对待课程设计任务,养成良好的编程习惯。
3. 引导学生关注实际应用,理解计算机技术在企业管理中的重要性,提高职业素养。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言课程设计,旨在帮助学生将所学知识应用于实际项目中,提高编程能力和解决实际问题的能力。
2. 学生特点:学生已经掌握了C语言的基本知识,具有一定的编程基础,但对实际项目开发尚缺乏经验。
3. 教学要求:结合教材内容,以实用性为导向,注重培养学生的实际操作能力和团队协作能力。
二、教学内容1. 教学大纲:a. C语言数组、结构体和文件操作复习b. 工资管理系统功能需求分析c. 工资计算方法及实现d. 系统设计、编码与调试e. 团队协作与项目展示2. 教学内容安排与进度:a. 第一周:复习C语言数组、结构体和文件操作相关知识,讲解工资管理系统项目背景和功能需求。
b. 第二周:分析工资计算方法,引导学生设计系统功能模块,编写系统设计文档。
c. 第三周:根据设计文档,分组进行编码,实现工资管理系统的基础功能。
d. 第四周:优化系统功能,进行系统调试,确保系统稳定运行。
e. 第五周:团队协作,整理项目文档,准备项目展示。
3. 教材章节与内容:a. 数组、结构体和文件操作:教材第3章、第4章、第6章b. 工资管理系统功能需求分析:教材第10章 实践项目案例c. 工资计算方法及实现:教材第7章 循环与分支结构d. 系统设计、编码与调试:教材第8章 函数与模块化编程e. 团队协作与项目展示:教材第12章 软件工程实践4. 教学内容列举:a. 数组、结构体和文件操作:数组的使用、结构体定义和操作、文件读写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计》课程设计报告姓名:叶小波姚旺富李成班级:信管082信息工程学院信息管理系二〇一一年一月题目:建立企业工资计算及管理系统一、题目要求:采用面向对象程序设计思想,利用文本文件来存储数据,实现数据的输入,处理,查询(按姓名,编号,职业,对应员工工资分布情况查询)等功能,并自动计算出工资。
二、需求分析:实现数据的输入及处理、编辑、管理、查询(按姓名,编号,职业,对应员工工资分布情况查询)数据输入的-------根据题意,输入员工的信息,包括职业,姓名,编号及对应的工资处理数据,系统会进行处理。
查询-------根据题意,按照姓名、编号、职业、对应员工工资分布情况进行查询三、设计思路:1、对象设计:抽象类employee,对应产生3个派生类technician, salesman, manager, 再把salesman,manager,salesman与manager作为虚基类派生出一个salesmanager类,从而避免二义性问题。
2、Technician,salesman,manager,salesmanager都用将用到pay()与display()两个函数,而且都是派生得到,于是在基类中设置了虚函数pay()与display().3、函数的设计:设置了6个函数,分别为添加员工及工资计算,按姓名查询,按编号查询,按职业查询,对应员工工资分布情况查询,查看所有员工信息4、6个函数分别设为类的友元函数,可以访问私有成员。
5、采用文本文件存储数据。
四、详细设计:1.类定义://///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class employee //雇员类类中函数:employee() //雇员构造函数virtual void pay()=0 /雇员工资计算虚函数virtual void display()=0 //雇员工资显示虚函数friend void add(); //添加员工及工资计算友元函数friend void visitname() ; //按姓名查询友元函数friend void visitnum() ; //按标号查询友元函数friend void visitprofession(); //按职业查询友元函数friend void searchpay() ; //对应员工工资分布情况查询友元函数friend void outpay(); //打印员工工资friend void outpay();~ employee() //雇员析构函数变量:no //编号name[20] //姓名salary //工资/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////class technician //兼职技术人员类类中函数:technician() //兼职技术人员构造函数void pay() //兼职技术人员工资计算函数void display() //兼职技术人员工资函数~technician() ///兼职技术人员析构函数friend void add(); //添加员工及工资计算友元函数friend void visitname() ; //按姓名查询友元函数friend void visitnum() ; //按标号查询友元函数friend void visitprofession(); //按职业查询友元函数friend void searchpay() ; //对应员工工资分布情况查询友元函数friend void outpay(); //打印员工工资变量:no //编号name[20] //姓名salary //工资hourlyrate //每小时的工作费用workhours //工作时间/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// salesman类中函数:salesman() //销售人员构造函数virtual void pay()=0 /销售人员工资计算虚函数virtual void display()=0 //销售人员工资显示虚函数friend void add(); //添加员工及工资计算友元函数friend void visitname() ; //按姓名查询友元函数friend void visitnum() ; //按标号查询友元函数friend void visitprofession(); //按职业查询友元函数friend void searchpay() ; //对应员工工资分布情况查询友元函数friend void outpay(); //打印员工工资~ salesman() //销售人员析构函数变量:no //编号name[20] //姓名salary //工资commrate //提成sales //销售量/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// manager类中函数:manager() //经理构造函数virtual void pay()=0 //经理工资计算函数virtual void display()=0 //经理工资显示函数~ manager() //经理析构函数friend void add(); //添加员工及工资计算友元函数friend void visitname() ; //按姓名查询友元函数friend void visitnum() ; //按标号查询友元函数friend void visitprofession(); //按职业查询友元函数friend void searchpay() ; //对应员工工资分布情况查询友元函数friend void outpay(); //打印员工工资变量:no //编号name[20] //姓名salary //工资monthlypay //月工资/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class salesmanager //销售经理类中函数:employee() //销售经理构造函数virtual void pay()=0 //销售经理计算函数virtual void display()=0 //销售经理工资显示函数friend void add(); //添加员工及工资计算友元函数friend void visitname() ; //按姓名查询友元函数friend void visitnum() ; //按标号查询友元函数friend void visitprofession(); //按职业查询友元函数friend void searchpay() ; //对应员工工资分布情况查询友元函数friend void outpay(); //打印员工工资~ employee() //销售经理析构函数变量:no //编号name[20] //姓名salary //工资monthlypay //月工资sales //销售量2.变量定义:manager *m[50]; //经理指针technician *t[50]; //兼职技术人员指针数组salesman *s[50]; //销售人员指针数组salesmanager *sm[50]; //销售经理指针数组outfile //文件名snum //销售人员数量tnum //兼职技术人员数量mnum //经理人数量smnum //销售经理人数量3、重要函数:void add(); //添加员工及工资计算void visitname() ; //按姓名查询void visitnum() ; //按标号查询void visitprofession(); //按职业查询void searchpay() ; //对应员工工资分布情况查询void outpay(); //打印员工工资重要类CArray是内存管理的类。
可以在任意位置插入数据,删除数据,并自动重新排好。
这样给程序带来了不少方便Carchive允许一个二进制(通常为磁盘存储)的形式保存一个对象的复杂网络。
把归档的对象看成一种二进制流,归档与文件有关,并允许写缓冲区及从硬盘读出或读入数据。
B.界面流程:1.主页面2.添加成员与工资计算3.按编号查询4.按职业查询5.按对应职业员工分布情况查询6.输出所有员工工资六、调试分析:调试过程中一些常见的小错误就不说了。
调试中主要遇到的问题有二1:定义了类的变量数组,放在主函数之外时,不能编译成功,于是定义类的指针变量数组进行操作,就可以在类外进行了。
2;两个基类派生出一个类时,出现二义性问题,用虚基类解决了。
3.部分函数不能调用类中的私有成员,用友元函数得以解决。
七、心得体会:经过一星期的课程实习,重设计到实现,虽然花费了不少时间,但也学到了很多。
主要总结以下几点:1:运用面向对象程序设计的思想。
并将文件读入,读出,多态,派生,虚基类,虚函数,合理整合并运用在代码中,实现程序。
2.程序代码实现是个耐性,细心的过程,写完一段,调试一段,遇到问题,分析问题,解决问题,事半功倍。
3.提高了动手能力。
课程设计虽然技术了,C++是一块很大的领域,还有很多地方和知识点不了解,要我们不断地学习,探索,思考,提高我们的能力。
八、源代码:#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<string.h>class employee{protected:int no;char name[20];float salary;public:employee(){cout<<"职工编号:";cin>>no;cout<<"职工姓名";cin>>name;salary=0;}virtual void pay()=0;virtual void display()=0;friend void add(); //添加员工及工资计算friend void visitname() ; //按姓名查询friend void visitnum() ; //按标号查询friend void visitprofession(); //按职业查询friend void searchpay() ; //对应员工工资分布情况查询friend void outpay();~employee(){};};class technician:public employee{private:float hourlyrate;int workhours;public:technician(){hourlyrate=100;}void pay(){cout<<name<<"本月工作时数:";cin>>workhours;salary=hourlyrate*workhours;}void display(){cout<<"兼职技术人员"<<name<<"(编号为"<<no<<")"<<"本月工资:"<<salary<<endl;}friend void add(); //添加员工及工资计算friend void visitname() ; //按姓名查询friend void visitnum() ; //按标号查询friend void visitprofession(); //按职业查询friend void searchpay() ; //对应员工工资分布情况查询friend void outpay();~technician(){};};class salesman:virtual public employee{protected:float commrate;float sales;public:salesman(){commrate=0.4;}void pay(){cout<<name<<"本月销售额:";cin>>sales;salary=sales*commrate;}void display(){cout<<"销售员"<<name<<"(编号为"<<no<<")"<<"本月工资:"<<salary<<endl;}friend void add(); //添加员工及工资计算friend void visitname() ; //按姓名查询friend void visitnum() ; //按标号查询friend void visitprofession(); //按职业查询friend void searchpay() ; //对应员工工资分布情况查询friend void outpay();~salesman(){};};class manager:virtual public employee{protected:float monthlypay;manger(){monthlypay=8000;}void pay(){salary=8000;}void display(){cout<<"经理"<<name<<"(编号为"<<no<<")"<<"本月工资:"<<salary<<endl;}friend void add(); //添加员工及工资计算friend void visitname() ; //按姓名查询friend void visitnum() ; //按标号查询friend void visitprofession(); //按职业查询friend void searchpay() ; //对应员工工资分布情况查询friend void outpay();~manager(){};};class salesmanager:public manager,public salesman{salemanager(){monthlypay=5000;commrate=0.05;}void pay(){cout<<name<<"所管部门月销售量";cin>>sales;salary=5000+commrate*sales;}void display(){cout<<"销售经理"<<name<<"(编号为"<<no<<")"<<"本月工资:"<<salary<<endl;}friend void add(); //添加员工及工资计算friend void visitname() ; //按姓名查询friend void visitnum() ; //按标号查询friend void visitprofession(); //按职业查询friend void searchpay() ; //对应员工工资分布情况查询friend void outpay(); //答应员工工资~salesmanager(){};int option,flag,i,no,k;float salary;char name[20];fstream outfile;manager *m[50];technician *t[50];salesman *s[50];salesmanager *sm[50];int mnum=0,tnum=0,smnum=0,snum=0,j=0,profession=0;void add(); //添加员工及工资计算void visitname() ; //按姓名查询void visitnum() ; //按标号查询void visitprofession(); //按职业查询void searchpay() ; //对应员工工资分布情况查询void outpay();void main(){cout<<"请选择您需要的操作!"<<endl;cout<<"\t\t\t*****************************"<<endl;cout<<"\t\t\t** 企业职工工资计算及管理系统**"<<endl;cout<<"\t\t\t*****************************"<<endl;cout<<"\t\t\t**1、添加员工及工资计算**"<<endl; cout<<"\t\t\t**2、按姓名查询**"<<endl; cout<<"\t\t\t**3、按标号查询**"<<endl; cout<<"\t\t\t**4、按职业查询**"<<endl; cout<<"\t\t\t**5、对应职业员工工资分布情况查询**"<<endl; cout<<"\t\t\t**6、输出所有员工的工资**"<<endl; cout<<"\t\t\t**0、退出系统**"<<endl; cout<<"\t\t\t*****************************"<<endl;cout<<"选择0-7数字进行操作"<<endl;cin>>option;outfile.open("text",ios::out);if(!outfile){cout<<"text can't open"<<endl;exit(1);}while(option!=0){switch(option){case 1: //添加员工及工资计算{break;}case 2: //按姓名查查询{visitname();break;}case 3: //按标号查询{visitnum();break;}case 4: //按职业查询{visitprofession();break;}case 5: // 对应员工工资分布情况查询{searchpay();break;case 6:{outpay();break;}}cout<<"请输入操作代码(1 添加员工及工资计算/2按姓名查询/3按编号查询/4 按职业查询5/对应职业员工工资分布情况查询/6 输出所有员工的工资/0 退出系统)"<<endl;cin>>option;}outfile.close();}void add(){flag=1;while(flag!=0){cout<<"员工身份: 1:销售员2:兼职技术人员3:经理4:销售经理0:退出添加请选择"<<endl;cin>>flag;switch(flag){{t[tnum]=new technician;t[tnum]->pay();t[tnum]->display();outfile<<"兼职技术人员"<<t[tnum]->name<<"(编号为"<<t[tnum]->no<<")"<<"本月工资:"<<t[tnum]->salary<<endl;tnum++;j++;break;}case 1:{s[snum]=new salesman;s[snum]->pay();s[snum]->display();outfile<<"销售员"<<s[snum]->name<<"(编号为"<<s[snum]->no<<")"<<"本月工资:"<<s[snum]->salary<<endl;snum++;j++;break;}case 3:m[mnum]=new manager;m[mnum]->pay();m[mnum]->display();outfile<<"经理"<<m[mnum]->name<<"(编号为"<<m[mnum]->no<<")"<<"本月工资:"<<m[mnum]->salary<<endl;mnum++;j++;break;}case 4:{sm[smnum]=new salesmanager;sm[smnum]->pay();sm[smnum]->display();outfile<<"销售经理"<<sm[smnum]->name<<"(编号为"<<sm[smnum]->no<<")"<<"本月工资:"<<sm[smnum]->salary<<endl;smnum++;j++;break;}}}void visitname(){cout<<"请输入要查询的姓名:";cin>>name;int sign[4]={0};for(i=0;i<snum;i++){if(strcmp(s[i]->name,name)==0){cout<<"销售员"<<s[i]->name<<"(编号为"<<s[i]->no<<")"<<"本月工资:"<<s[i]->salary<<endl;break;}}if(i<snum)return;elsesign[0]=1;for(i=0;i<tnum;i++){if(strcmp(t[i]->name,name)==0){"<<t[i]->no<<")"<<"本月工资:"<<t[i]->salary<<endl;break;}}if(i<tnum)return;elsesign[1]=1;for(i=0;i<mnum;i++){if(strcmp(m[i]->name,name)==0){cout<<"经理"<<m[i]->name<<"(编号为"<<m[i]->no<<")"<<"本月工资:"<<m[i]->salary<<endl;break;}}if(i<mnum)return ;elsesign[2]=1;for(i=0;i<smnum;i++){if(strcmp(sm[i]->name,name)==0)"<<sm[i]->no<<")"<<"本月工资:"<<sm[i]->salary<<endl;break;}}if(i<smnum)return;elsesign[3]=1;if(sign[0]&&sign[1]&&sign[2]&&sign[3]){cout<<"该人不存在,请确认!"<<endl;}}void visitnum()//按编号查询{cout<<"请输入要查询编号:";cin>>no;int sign[4]={0};for(i=0;i<snum;i++){if(s[i]->no==no)"<<s[i]->no<<")"<<"本月工资:"<<s[i]->salary<<endl;break;}}if(i<snum)return;elsesign[0]=1;for(i=0;i<tnum;i++){if(t[i]->no==no){cout<<"兼职技术人员"<<t[i]->name<<"(编号为"<<t[i]->no<<")"<<"本月工资:"<<t[i]->salary<<endl;break;}}if(i<tnum)return;elsesign[1]=1;for(i=0;i<mnum;i++){if(m[i]->no==no){cout<<"经理"<<m[i]->name<<"(编号为"<<m[i]->no<<")"<<"本月工资:"<<m[i]->salary<<endl;break;}}if(i<mnum)return;elsesign[2]=1;for(i=0;i<smnum;i++){if(sm[i]->no==no){cout<<"销售经理"<<sm[i]->name<<"(编号为"<<sm[i]->no<<")"<<"本月工资:"<<sm[i]->salary<<endl;break;}}if(i<smnum)return;elsesign[3]=1;if(sign[0]&&sign[1]&&sign[2]&&sign[3]){cout<<"该人不存在,请确认!"<<endl;}}void visitprofession() //按职业查询{cout<<"请选择要查询的职业";cout<<"1:销售员2:兼职技术人员3:经理4:销售经理"<<endl;cin>>profession;switch(profession){case 1:{if(snum==0){cout<<"无销售人员信息,请确认!"<<endl;}else{cout<<"销售人员信息如下:"<<endl;for(i=0;i<snum;i++){cout<<"销售员"<<s[i]->name<<"(编号为"<<s[i]->no<<")"<<"本月工资:"<<s[i]->salary<<endl;}}break;}case 2:{if(tnum==0){cout<<"无兼职技术人员信息,请确认!"<<endl;}else{cout<<"兼职技术人员信息如下:"<<endl;for(i=0;i<tnum;i++){cout<<"兼职技术人员"<<t[i]->name<<"(编号为"<<t[i]->no<<")"<<"本月工资:"<<t[i]->salary<<endl;}}break;}case 3:{if(mnum==0){cout<<"无经理人员信息,请确认!"<<endl;}else{cout<<"经理人员信息如下:"<<endl;for(i=0;i<mnum;i++){cout<<"经理"<<m[i]->name<<"(编号为"<<m[i]->no<<")"<<"本月工资:"<<m[i]->salary<<endl;}}break;}case 4:{if(smnum==0){cout<<"无销售经理信息,请确认!"<<endl;}else{cout<<"销售经理信息如下:"<<endl;for(i=0;i<smnum;i++){cout<<"销售经理"<<sm[i]->name<<"(编号为"<<sm[i]->no<<")"<<"本月工资:"<<sm[i]->salary<<endl;}}break;}}}void searchpay() //对应员工工资分布情况查询{int flag;cout<<"请选择要职业,给出对应的分布情况"<<endl;cout<<"1:销售员,2:兼职技术人员3:经理4:销售经理,请选择"<<endl;cin>>flag;switch(flag){case 1:{if(snum==0){cout<<"无销售员信息,请确认!";break;}for(i=0;i<snum-1;i++){k=i;for(j=i+1;j<snum;j++){if(s[j]->salary<s[k]->salary){k=j;}}strcpy(name,s[i]->name);strcpy(s[i]->name,s[k]->name);strcpy(s[k]->name,name);salary=s[i]->salary;s[i]->salary=s[k]->salary;s[k]->salary=salary;no=s[i]->no;s[i]->no=s[k]->no;s[k]->no=no;}for(i=0;i<snum;i++){cout<<"销售员"<<s[i]->name<<"(编号为"<<s[i]->no<<")"<<"本月工资:"<<s[i]->salary<<endl;}break;}case 2:{if(tnum==0){cout<<"无兼职技术人员信息,请确认!";break;}for(i=0;i<tnum-1;i++){k=i;for(j=i+1;j<tnum;j++){if(t[j]->salary<t[k]->salary){k=j;}}strcpy(name,t[i]->name);strcpy(t[i]->name,t[k]->name);strcpy(t[k]->name,name);salary=t[i]->salary;t[i]->salary=t[k]->salary;t[k]->salary=salary;no=t[i]->no;t[i]->no=t[k]->no;t[k]->no=no;}for(i=0;i<tnum;i++){cout<<"兼职技术人员"<<t[i]->name<<"(编号为"<<t[i]->no<<")"<<"本月工资:"<<t[i]->salary<<endl;}break;}case 3:{if(snum==0){cout<<"无经理人员信息,请确认!";break;}for(i=0;i<mnum-1;i++){k=i;for(j=i+1;j<mnum;j++){if(m[j]->salary<m[k]->salary){k=j;}}strcpy(name,m[i]->name);strcpy(m[i]->name,m[k]->name);strcpy(m[k]->name,name);salary=m[i]->salary;m[i]->salary=m[k]->salary;m[k]->salary=salary;no=m[i]->no;m[i]->no=m[k]->no;m[k]->no=no;}for(i=0;i<tnum;i++){cout<<"经理"<<m[i]->name<<"(编号为"<<m[i]->no<<")"<<"本月工资:"<<m[i]->salary<<endl;}}case 4:{if(smnum==0){cout<<"无销售经理人员信息,请确认!";break;}for(i=0;i<smnum-1;i++){k=i;for(j=i+1;j<smnum;j++){if(sm[j]->salary<sm[k]->salary){k=j;}}strcpy(name,sm[i]->name);strcpy(sm[i]->name,sm[k]->name);strcpy(sm[k]->name,name);salary=sm[i]->salary;sm[i]->salary=sm[k]->salary;sm[k]->salary=salary;no=sm[i]->no;sm[i]->no=sm[k]->no;sm[k]->no=no;}for(i=0;i<tnum;i++){cout<<"销售经理"<<m[i]->name<<"(编号为"<<m[i]->no<<")"<<"本月工资:"<<m[i]->salary<<endl;}}break;}}void outpay(){if(snum==0&&tnum==0&&mnum==0&&smnum==0)cout<<"没有员工的数据,请确认!"<<endl;else{for(i=0;i<snum;i++){cout<<"销售员"<<s[i]->name<<"(编号为"<<s[i]->no<<")"<<"本月工资:"<<s[i]->salary<<endl;}for(i=0;i<tnum;i++){cout<<"兼职技术人员"<<t[i]->name<<"(编号为"<<t[i]->no<<")"<<"本月工资:"<<t[i]->salary<<endl;}for(i=0;i<mnum;i++){cout<<"经理"<<m[i]->name<<"(编号为"<<m[i]->no<<")"<<"本月工资:"<<m[i]->salary<<endl;}for(i=0;i<smnum;i++){cout<<"销售经理"<<sm[i]->name<<"(编号为"<<sm[i]->no<<")"<<"本月工资:"<<sm[i]->salary<<endl;}}}。