设计题目职工工资管理系统设计xxx技术学院课程设计任务书二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)(1)分析职工工资管理系统程序结构: 画出程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);(2)对你已经实现的功能(修改的、新编写的)做详细的说明, 并附上流程图及程序清单。
(3)自己对该职工工资管理系统的进一步设想;(4)对于有设想但最终未实现的功能的大致编程思路的阐述;(5)论述在设计过程中遇到的并且对你具有启发性的问题。
(6)严禁抄袭,发现雷同,双方扣分。
三、课程设计工作进度计划:周一、二:教师布置任务,讲解本课设模块。
画出主程序粗略的流程图和各个模块的详细流程图。
设计程序及调试程序。
周三、四:设计程序及调试程序。
同时着手写报告。
周五:完成设计,提交报告,接受教师考评。
四、主要参考资料(1)《面向对象程序设计》,郑莉,清华大学出版社,(2)《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社(3)《面向对象程序设计----Visual C++》,刘斌等编, 清华大学出版社(4)《面向对象程序设计----C++语言描述》, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社,2003目录1概述: ..................................................................................... 错误!未定义书签。
1.1基本功能............................................. 错误!未定义书签。
1.2拓展功能............................................. 错误!未定义书签。
2课题分析 ................................................................................. 错误!未定义书签。
2.1类的设计............................................. 错误!未定义书签。
2.2类的实现............................................ 错误!未定义书签。
3详细设计说明 ......................................................................... 错误!未定义书签。
3.1程序主界面........................................... 错误!未定义书签。
3.2方案................................................ 错误!未定义书签。
3.3程序描述(输入INPUT)................................. 错误!未定义书签。
4课程设计总结 ......................................................................... 错误!未定义书签。
5软件使用说明 ......................................................................... 错误!未定义书签。
6附录(参考文献,原代码:) ............................................... 错误!未定义书签。
6.1参考文献:........................................... 错误!未定义书签。
6.2原代码............................................... 错误!未定义书签。
1概述:1.1 基本功能实现一个简单的工资管理系统。
系统的主要用来计算职工当月工资并存档。
由于公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
所以,此系统的基本功能是:首先,由员工输入用户信息(包括编号、姓名和职务;然后,计算某职工的当月工资(系统先从已输入的职工信息文件中获取职工的工作类型;接着调用不同的处理程序进行计算);最后,可以选择将结果(所有员工的编号、姓名、职位、工资等信息)存档。
1.2 拓展功能1.设定好5种职位各不相同的工资计算方式:技术人员的工资根据他当月工作的小时数来定,时薪35元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;文秘有4000元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,PS:每级可获得1000元奖金(¥1000、¥2000、¥3000);销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的2%。
2.添加某个职工信息的查询功能:只要输入一个已经存在数据库内的雇员名字,即可查到该雇员的编号、姓名、职位和工资的信息。
3.清屏功能:为了保护雇员个人信息不外露。
4.警报功能:在查询职员工资信息的时候,会发出警报音“滴——”的一声。
5.退出确定功能退出程序时,会让用户再次确定是否真的要退出的界面。
2课题分析2.1 类的设计从用户需求中,可以发现5种类型的职员都可以分别设计为一个类。
首先,他们都属于雇员,因此可以设计一个基类employee(雇员),然后从中派生出technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类、techmanager(技术经理)类和manager(销售经理)类。
根据用户需要employee类应该拥有的属性有:编号、姓名、职务、月份和工资。
Employee 类的服务可以包括input(),print(),find(),save()。
其中,input()函数用于接收用户输入的职工信息;print()函数用于输出用户输入的职工信息;find()函数用来根据职工名查找职工信息;save()函数为将职工信息写入文本。
由于各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。
2.2类的实现class Technician:public Employee //技术员类(公有继承雇员类){public:void input() {cout<<"技术员的";Employee::input(); cout<<"工作时间:";cin>>worktime;}void print(){ pay=worktime*hourpay;Employee::print(); }void find(){pay=worktime*hourpay;Employee::find();}void save(){ pay=worktime*hourpay; 其他类,类似形成。
Employee::save(); }protected:double worktime; //工作时间(小时) };3 详细设计3.1 程序主界面3.2 方案接着,便是思考如何具体实现:问题1const int/*定义公司各类职工输入用户信息,包括编号、姓名和职务从已输入的职工信息文件中获取职工的信息调用不同的处理程序进行查询,职员信息将结果存档开始开始(n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/事先设定好可修改的全局变量。
然后确定好全局对象数组。
如此便可以按照所需存入员工信息问题2:如何程序要求,派生类 派生类 派生类 基类派生类问题3:怎样处理2个菜单关系?(输入职员信息菜单、目录菜单)让目录菜单作为主菜单,输入职员信息的菜单成为二级菜单。
并运用清屏的功能,及时清除输入的职员信息,作为一种安全保护。
3.3 input )* ”的数据输入菜单,进行数据输入(进入二子菜单(程序中的menu 3)* 根据需要选择输入要输入的职员信息。
(只需按照中文提示,依次输入英语或数字信息)图表 3子菜单中选择输入技术经理信息的一个状态* 一个职员的信息全部输入完成后,会自动清屏,回到“财务部门输入数据系统”主菜单图表 4 子菜单* 以此类推,随意输入你要输入的职员信息。
若输入全部完成,可以回到主菜单 * 然后,在主菜单中选择数据查询,可以根据你填入的职工姓名,查到他的所有信息图表 5 由主菜单选择查询一操作时,反馈信息的状态* 也可选择数据备份,会自动清屏。
并让所有已输入过的职工信息,全打印在所在磁盘的一个txt 文档里。
图表 6 由主菜单选择数据备份一操作后的状态* 如果想要退出系统,可以选择主菜单的退出系统,选择过后,会清屏,显示以下界面,警告用户,是否真的要推出。
图表7 选择主菜单退出系统一操作后的状态4课程设计总结通过此次面向对象程序设计的实践课程学习,本人受益匪浅。
经过一系列的编程,本人更加体会到纸上得来终觉浅,绝知此事要躬行。
实践是检验真理的唯一标准。
这两句话说的真切。
遇到的难关1.在编写销售经理的类的时候,由于思维混乱,继承乱用,以致真个程序一片混乱,运行不出,且外加几十个错误警告。
经过回顾自己先前写的流程图,本人得到了很大的顿悟。
关系捋清楚了,思路也豁然开朗了,下笔如有神。
遇到的难关2.五种职员在计算工资的时候,先前一直查询不到正确的工资数额。
在反复检查、测试的过程中,才发现那些计算公式,继承没有问题,问题出在查询的那个函数忘记将重新计算工资的公式写上。
所以一直显示的是employee的工资数,而不是各个职位员工的工资数。
遇到的难关3.在增加清屏这一功能时,本以为这很简单。
可在具体操作时,才发现,这也考验一个人思维逻辑的严谨。
曾设想,为了不泄密,将清屏这一函数放在查询函数后。
结果没想到,这导致测试时:工资信息一显示,立刻被擦掉,根本来不及看的窘境。
存在的不足1.本程序设计上还有明显的不妥,就是查询工资信息的时候,要求输入的仅仅为用户姓名。
由于还是英语输入,难免有同名同姓的状况出现,容易混乱与出错,还需改进。
存在的不足2.原本思路是将程序分为两个入口:管理员入口和职员入口。
管理员入口:需要输入通行账户和密码。
进入后,有两个功能——输入所有职工信息(编号、姓名、岗位、月份、业绩奖励等等基本信息)和数据备份。
职员入口:则面向所有员工。
进入后,只有一个功能——根据自己的名字和编号查询自己的工资等信息。