小型公司工资管理系统的设计.pdf
《小型公司工资管理系统的设计.pdf》由会员分享,可在线阅读,更多相关《小型公司工资管理系统的设计.pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录 一、实习内容 1 二、设计思路 2 三、程序调试过程中典型问题及解决方法 3 四、程序使用说明 4 五、心得体会及课程改进设想 5 一、实习内容 计算机与网络技术的高速发展,特别是面向对象技术的出现,使得 C+的软件开发得到了迅速普及。本设计主要以 C+语言为基础,针对小型公司员工情况,编写出简单的小型公司工资管理系统。并在这一过程进一步熟悉 C+类的概念、类的封装、继承、和多态的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装、模块组装和整体调试的全过程;逐步熟悉程序设计的方法,并养成良好的编程习惯。同时在进行分析、编程、调试和运行的过程中,巩固了所学的理论知
2、识,使理论与事件相结合,提高分析问题、解决问题的能力。设计题目及要求:1.题目:小型公司工资管理系统设计 2.设计说明与要求 3.(1)公司主要有 4 类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、性别、年龄、月工资、年龄、性别等信息 (2)工资的计算方法 A、经理:固定月薪为 8000 元;B、技术员:工作时间*小时工资(100 元/小时);C、销售员:销售额*4%提成;D、销售经理:底薪(5000 元)+下属销售员销售额总额*0.5%;(3)类的层次结构大体如下 (4)员工基本数据的输入(测试数据)程序设计实习报告 1 要求每类人员不能少于 2 人,其中销售员需要
3、4 名,每名销 售经理手下有名销售员。(6)各类的数据成员访问权限设置为:protected (7)实现功能 应用程序中要有菜单,用于选择各种功能,其中 数据输入:输入各种数据;数据统计:统计各种销售经理下属销售员的销售额及限售额之和;销售经理按工资进行的冒泡排序;数据打印:打印各类员工的数据信息;数据备份:把各类员工的数据星系写入文件中保存;退出本系统;(8)菜单说明 数据录入指通过键盘输入各类员工的各项数据;数据统计指统计各销售经理下属销售员的销售额及销售额之和;销售 经理按工资进行冒泡法排序;数据打印指按照表格的格式在屏幕上输出个员工的信息;数据备份指将所有员工的信息保存到文件;退出:结
4、束程序的运行。(7)注意一个销售经理管辖多个销售员。(8)其他功能可以自己扩充(扩充的功能若比较合理可适当加分)。(9)要求在控制台下完成(显示内容都在黑屏下显示)程序设计实习报告 2 二、设计思路 有一个好的开头才有一个好的过程。的确,在老师刚说出题目要求时,我感到一阵茫然。但老师指导我们先设计类,让我们有了一个明确的首要目标。考虑到定义类后代码较长,主函数将直观明了,也为了更好的编写代码,我把类的声明设计都编写在了一个自定义的头文件“member.h”中。之后在主函数中包含此头文件。尽管一个学期没有复习过 C+了,对类的定义和应用不知所措,但是在课上我边翻书边编写,基本就在编写程序的过程中
5、明白了类的操作以及对接下来应如何做的问题。因为技术人员,销售员,经理,销售经理这四类人都有共同的成员姓名,年龄,职工号,性别,工资。所以可以设计出一个基类 employee,然后由基类派生出四个类,分别是 technologist(技术员),sale(销售员),manager(经理),sale_manger(销售经理)。由于各类数据成员为访问权限为protected,因此在基类 employee中,设计一个输入函数 setin(),使得在主函数中用新建类定义对象时可以进行数据输入。也为了能够使得主函数中的程序能够读取对象中的数据成员,我额外设计了几个返回值函数,用于返回成员数据以便能在接下来的
6、主函数调用中进行操作。例:int employee:out_number()return number;为了在程序中能更好地实现对象的数据输入、排序等功能,我定义了全局对象数组 ma10000(经理)、te10000(技术员)、sa10000(销售员)、sm10000(销售经理),其中 10000 为可输入的对象总数,又定义 int 型变量 m、t、s、j分别对应上面的对象数组。为了能让菜单在不选择退出系统时能一直出现,我设计了一个 for 的大循环如下:for(int a=0;true;)接着就是输出菜单,然后再由使用者输入a(a为菜单中的选项号码),再设计一个switch分支选择,根据 a
7、 的值来处理下一步。在输入数据步骤中,我利用switch分支选择,根据用户的选择来确定用户选择输入的哪一种类别的员工数据。接着我再利用 for语句循环,在输入数据的程序设计实习报告 3 时候统计所输对象的数量,从而使得在接下来几个步骤中都能运用到此数量,更好地实现排序统计等步骤。另外排序统计步骤中,我选择使用选择法,在 for 的循环中,根据工资、编号的大小找出最大的数,并交换对象的成员值,再直接输出此时对象的成员数据,使程序更高效简洁。而备份功能与退出系统功能则相对简单,只需包含相应头文件。并执行把统计排序功能的 cout 替换成相应的语句即可 接着就是个人创新功能。面对输入的众多数据,我感
8、到搜索功能的重要性。于是我在分支结构中又添加了一个分支,并下设分级菜单。可以根据用户想要搜索的名字、员工号、工资等数据进行与原有已输入数据的比对。由 for 语句执行循环,如搜索员工号,我就使全部对象的员工号与用户输入的员工号进行比对。若两数据相等,则输出此对象全部数据,从而完成搜索功能。而再搜索功能之后,我又添加了替换数据功能。由搜索出来的数据,用户可输入想要替换数据的员工员工号,再次利用与搜索功能相似的做法进行比对。之后再调用对象数据输入函数执行数据输入,从而实现数据替换功能。还有就是数据清空功能,此功能相对简单,但可靠实用不必关闭整个程序就能清空数据。其原理就是利用对计数变量 m、t、s
9、、j 的归零。另其返回到初始数值,使输入数据时计数再从 0 开始。基本上这就是我的整体思路。在明确自己的目标后,思路自然就有了。程序设计实习报告 4 三、程序调试过程中典型问题及解决方法 备注:手写 程序设计实习报告 5 四、程序使用说明 程序设计实习报告 6 五、心得体会及课程改进设想 备注:手写,字数不限 程序设计实习报告 7 附:源程序 头文件。members.h#include#include#include#include using namespace std;class employer public:void setin();void setout();void setoutx
10、t();int out_number();string out_name();int out_age();int out_wage();protected:int number;string name;char sex;int age;int wage;void employer:setin()cinnumber;coutname;coutsex;coutage;程序设计实习报告 8 void employer:setout()coutendl;coutsetiosflags(ios:right)setw(10)numbersetw(10)name setw(10)sex setw(10)ag
11、e setw(10)wageendl;void employer:setoutxt()fstream outtxt;outtxt.open(D:数据备份.txt,ios:out|ios:app);outtxtendl;outtxtsetiosflags(ios:right)setw(10)numbersetw(10)name setw(10)sex setw(10)age setw(10)wageendl;outtxt.close();int employer:out_number()return number;string employer:out_name()return name;程序设
12、计实习报告 9 int employer:out_age()return age;int employer:out_wage()return wage;class manager:public employer public:void setin();void manager:setin()employer:setin();wage=8000;class technologist:public employer public:void setin();protected:int hour;void technologist:setin()int n;employer:setin();coutn
13、;程序设计实习报告 10 hour=n;wage=100*n;class sale:public employer public:void setin();void setout1();int out_sale(int x=0);protected:double sal;int jl;void sale:setin()double n;employer:setin();coutn;sal=n;wage=0.04*n;coutjl;int sale:out_sale(int x)if(jl=x)int n;n=sal;程序设计实习报告 11 return n;else return 0;void
14、 sale:setout1()cout;coutsetiosflags(ios:right)setw(10)numbersetw(10)name setw(10)sex setw(10)agesetw(10)wagesetw(16)jl;class sale_manager:public manager public:int out_jl();void setinw(int n=0);int sale_manager:out_jl()return number;void sale_manager:setinw(int n)wage=n;程序设计实习报告 12 主程序:#include#incl
15、ude members.h#include#include using namespace std;int m=0,j=0,s=0,t=0;manager ma1000;technologist te1000;sale sa1000;sale_manager sm1000;int main()void dsptime(const struct tm*ptm);for(int a=0;true;)cout 公司工资管理系统endl;coutendl;cout 请选择您所需的操作 endl;cout数据输入:1,并按回车键 endl;cout数据统计:2,并按回车键 endl;cout数据打印:3
16、,并按回车键 endl;cout数据备份:4,并按回车键 endl;cout员工信息搜索:5,并按回车键 endl;cout清空所输数据:6,并按回车键 endl;cout退出系统:其他任意数字,并按回车键 endl;coutendl;cout请选择一个操作:a;switch(a)程序设计实习报告 13 case 1:for(int b=1;(b=1)|(b=2)|(b=3)|(b=4);)coutendl;cout 请选择您所需的操作 endl;cout经理数据输入:1,并按回车键 endl;cout技术员数据输入:2,并按回车键 endl;cout销售员数据输入:3,并按回车键 endl;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小型 公司 工资管理 系统 设计
限制150内