1.设计目标
使用类和向量的方法,编写能够输入职工的信息的职工信息表,再根据这个表产生一个职工信息简表,并利用多态性实现信息的输出。
本设计要求实现如下功能:
增加职工信息记录
生成信息简表
显示原始记录
显示简表记录
结束程序运行
在功能2,3,4中如果没有输入信息,程序会提示要先输入信息。
2.设计思想
在本程序中包含一个头文件 .h 和两个cpp文件。其中头文件除了对函数进行原型声明外,还定义了两个类来建立职工的信息数据。这一点会在下一部分中作详细说明。当然还有普通函数对信息的处理。
void addin(); //增加职工记录
void brevity(); //生成信息简表
void Dispwks(); //显示职工信息
void Dispwk(); //显示简表信息
另外,菜单是该程序的整体框架,主要通过使用控制语句用来改变程序执行的顺序,即根据用户选择的不同功能来调用不同的实现函数,这是实现结构化程序设计的基础。如:
void handle_menu(); //菜单设计函数
int nemu_select(); //菜单选择函数
3.类及对象设计
3.1 类的设计
本程序通过继承的方法,定义两个类——职工简表类(worker),职工信息类(workers),这里把简表类的内容作为基类,由它派生出详表类,两个类之间的关系,可以由以下的结构图中清楚地表现出来。
worker
|–Num:char
|–Name:char
|
|–setname:void
|–Setnum: setnum:void
|–*getna *getname:char
|–*getnu *getnum:char
|–display: display:virtual void
workers
|–sex:char
|–age:int
|–sal:int
|
|–setsex:void
|–setage:void
|–setsal:void
|–*getsex:char
|–getage:int
|–getsal:int
|–display:void
其中,简表主要存放职工的编号,姓名,等信息,派生类中,除了继承基类的数据成员外,还在原有的基础上添加了职工性别,年龄,工资三项数据以丰富职工记录,而这些数据成员的获取与传值主要通过类中的成员函数来实现。
如两个类中,返回类型为int与char的成员函数,是实现数据的获取,由用户输入;而返回类型为void(除display外)的函数,实现传值的功能。在这里我想特别强调的是基类中的函数void display,将其设计为虚函数,主要是由于程序中的一个打印函数print是使用基类worker对象的引用作为参数,以便实现多态性(print(worker &))。
3.2 对象的设计
该程序的另一个特点是向量数组的使用,即主要通过向量的方法生成两个对象:
vectorvwk;//简表信息的向量数组
vectorvwks;//完整信息的向量数组
运用向量主要是考虑编程的方便;因为向量是一种容器,系统已经为用户预定义了相关操作的公有成员函数,我们可以通过调用其成员函数的方法直接完成程序设计,如在添加函数中:
void addin(){
worker wks;//暂存对象
……
cout<<“\t年龄”;
cin>>age;
wks.setage(age);
vwks.push_back(wks);
}
push_back()是向量的内部函数,主要用于向容器尾部插入对象,改变容器的大小,实现从向量的尾部增加记录。
4.调试记录
调试通过的结果如下:
完整的源码和详细的文档,上传到了 WRITE-BUG技术共享平台 上,需要的请自取:
https://www.write-bug.com/article/2896.html