1、具体一点主要是为了进一步熟悉 C+中类的概念、类的继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程; 逐步熟悉程序设计的方法,并养成良好的编程习惯。2、系统需求、功能分析A、公司主要有四类雇员:经理、技术人员、销售人员、销售经理。要求储存雇员的编号、姓名、性别、所在部门、级别等信息,并进行工资计算。B、工资的计算方法(1) 经理:领取固定月薪,固定月薪 5000 元;(2) 技术人员:按小时领取月薪,工作时间*小时工资(80 元/小时);(3) 销售人员:按巩固销售额领取月薪,0.33*销售
2、额;(4) 销售经理:既拿固定月薪也领取销售提成,0.33*销售额+固定月薪(5000 元)。C、功能分析(1) 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2) 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;(3) 显示功能:可显示当前系统中所有记录,每条记录占据一行。(4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5) 删除功能:主要实现对已添加的人员记录进行
3、删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。(6) 统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息。(7) 读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。(8) 退出功能:退出程序。3、数据结构表2.查询功能3.显示功能4.查询功能5删除功能6.统计功能7.读取功能 8.退出功能打开程序 1.添加功能雇员经理技术人员销售人员销售经理4、数
4、据测试表添加后的数据:编号姓名性别部门等级工资1张三男A5000 元2李四3王五4李白技术B4320 元5杜甫3440 元6洋洋女销售C2525 元7丽丽2159 元8武凯旋D7525 元9刘玲7159 元编辑后的数据:李平按编号删除后的数据:按姓名删除后的数据:5、运行和调试(1)添加功能说明:输入 1,选择添加功能输入 1,选择添加经理输入 2,添加技术人员输入 3,添加销售人员输入 4,添加销售经理(2)查询功能输入 2,选择查询功能输入 1,编号查询输入 2,姓名查询(3) 显示功能输入 3,选择显示功能(4) 编辑功能输入 4,选择编辑功能编辑后读取数据(5) 删除功能输入 5,选择
5、删除功能输入 1,编号删除输入 2,姓名删除(6) 统计功能输入 6,选择统计功能(7) 读取功能输入 7,选择读取功能(8) 退出功能输入 8,选择退出功能6、课程设计的心得通过这次课程设计,加深了对类与派生的理解。类与派生类之间的关系,通过上机实践得到了进一步的深化。从数据成员的继承到派生类对象对基类成员函数的调用。对于类的保护成员只能被本身的成员函数使用,而不能直接从类外通过对象 直接调用,所以如果想单独调用对象内的被保护的数据成员或私有的数据成员时, 应该通过友元函数来实现。在编辑程序是应该多敲回车将花括号单列一行,一行只写一条语句如此可使程序看起来非常有层次感,检查错误的时候也会非常
6、方便,最大可能的减轻了单个花括号不易检查的问题的难度。解决花括号不配对问题更好的方法是将程序分装打包成函数,放于主函数外,不过要注意定义在调用前的话,可以直接进行函数的调用,否则要先声明该函数,然后才能调用该函数。虽然有了一年的上机课,但在课程设计这一段时间,使我收获了很多在上机课上无法学习到的知识,尤其是 C+的流类库与输入输出。因为这一部分知识的不熟练,在程序设计过程中遇到了不少困难,但通过老师的指导和一次又一次的改写、调试,将这些困难都解决了,心中的喜悦感油然而生。为了能使程序更加的完善,我也利用了不少的课余时间,查找了各方面的资料,当看到程序从一个头文件名到一个 900 多行的程序,到
7、最后的成功运行,感觉自己这段时间的付出是非常值得的,也使我对 C+产生了更浓厚的兴趣,对自己的学习以及将来的工作都是有很大的帮助的。整个实习过程让我的 C+知识得到了应用,体验了程序员编程时的喜怒哀乐, 知识、心智,得到全方位提升,收获颇丰。参考书目1 林小茶、陈维兴,C+面向对象课程设计教程,清华大学出版社,2009 年2 谭浩强,C 语言程序设计,清华大学出版社,2008 年附录#include #includefstreamstdlib.h using namespace std;class employee/雇员类protected:int number;/编号char name10;
8、/姓名char sex3;/性别char department20; /部门char grade;/级别int pay; /工资employee *next;public:friend istream &operator(istream &input,employee &ob) /运算符重载为友元函数inputob.nameob.sexob.department; return input;friend ostream &operator(ostream &output,employee &重载为友元函数outputob.numbertob.nameob.sexob.departmentob.
9、grad eob.payendl;return output;friend void tianjia();/添加功能friend void chaxun_number(); friend void chaxun_name();friend void chaxun();/查询功能friend void xianshi();/显示功能friend void bianji();/编辑功能friend void shanchu_number();friend void shanchu_name(); friend void shanchu();/删除功能friend void tongji();/统计
10、功能friend void duqu();/读取功能friend int getnumber();/获取编号;class manager:virtual public employee/经理类 固定工资void get()grade=A; pay=5000; number=getnumber();void tianjia_manager()/经理数据添加while(1)ofstream ofs(d:file1.txt,ios:app); manager ma;char gra,ch;coutma;ma.get();gra= ofs.write(char*)&gra,sizeof(char); ofs.wr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1