职工信息管理系统

职工信息管理系统

实习任务

问题描述及要求:
使用继承的方法,编写职工的信息的表,职工信息简表,并利用多态性实现信息的输出。
 建立职工信息数据,包括职工编号、姓名、性别和年龄。
 建立只含有编号和姓名的职工信息简表。
 使用相应的数据构造10个职工信息。
 编写函数,用来输出数组的内容。
 另外编制一个函数printer(),用来根据实际对象输出他们的内容。

例如:
详细信息是
编号 姓名 性别 年龄
101 张三 男 21
简表信息是
编号 姓名
101 张三
注意职工信息表和职工信息简表的对应关系

实习过程(程序设计思想)

1.程序设计思想
(1)类的结构图
这里把简表的内容作为基类worker,由它派生详表类workers。这样,简表可以利用赋值兼容规则得到。
例如workers的一个对象wks为:
编号 姓名 性别 年龄
101 张三 男 21
则worker的对象wk可以简单地通过下面的方法得到:
wk=wks;
这时wk的信息为:
编号 姓名
(2)多态性
将worker的display()成员函数设计为虚函数,printer()函数使用基类worker对象的引用作为参数(也可以使用指针),即可实现多态性。
void printer(worker &s)
{
s.display();
}
(3)设计主函数
使用switch语句,do-while循环语句实现了系统展示和运行模块与界面。使用字符数组ch存放读入的字符,当输入0时退出系统输入;当输入1时,进入输入内容系统;后面还可以选择是否继续输入,这样的设计是更显人性化。
(4)void printer()
要求编写能输入10个职工的信息表,例如使用整型变量number存放输入个数,则可使用如下方法实现:
if(ch[0]==’0’)
{
number=i;
break;
}
没有给类设计构造函数,而是使用系统提供的无参数构造函数。因为使用类的数组,可通过输入进行逐项赋值。按要求可以定义如下两个数组:
workers wks[10];
worker wk[10];
使用const定义一个常量作为数组维数,这样可以增加程序的灵活性。
(5)Txt文档写入存档:
使用txt文档的函数,首先对该文档进行声明ofstream ofs;其中ofs.open(“D:职工信息表.txt”,ios::out );语句是建文档 ,然后对其需要的内容进行存入文档中,ofs <<“编号\t”<<“姓名\t”<<“性别\t”<<“年龄\t”<<endl和ofs <<num<<“\t”<<name<<“\t”<<sex<<“\t”<<age<<“\t”<< endl; 最后就是进行关闭文档。

代码实现

#include"iostream"
#include"cstring"
#include <fstream>
#include <stdlib.h>
using namespace std;
const int size=10; 
class worker{
   
	protected:
		char name[size];
		char num[size];  
	public:
		void setname(char n[]){
   strcpy(name,n);}
		void setnum(char nu[]){
   strcpy(num,nu);}
		char *getname(){
   return name;}
		char *getnum(){
   return num;}
		virtual void display(){
   
		cout<<"\t"<<getnum()<<"\t
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值