- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《高级语言程序设计》作业报告
作业名称: 公司员工管理系统
学 院
专 业
学生姓名
任课教师
提交日期 2014年6月27日
问题描述
一间公司有各种人员,对人员信息的管理显得比较重要。于是,本系统是要解决公司员工信息的管理。主要有信息的增加,查询,删除,更新等操作。解决了人员的增加,减少,变更等的情况。
系统设计
类体系设计:
设计一个员工虚基类staff,包含编号、姓名和年龄保护数据成员,还有相关的函数。因为公司里面人员的分类众多,难以找到统一标准,在此进行简化,暂且将人员分为管理方面和研究方面。所以,从基类中派生出研究人员类engineer,里面增加专业,职称两个保护数据成员。同样地,管理类leader也从基类派生,里面增加职位,部门两个保护数据成员。考虑到有的员工同时具有这两个性质,即同时兼有管理和研究的职责,于是从研究类和管理类中派生出研究管理类chairman,该类属于多继承了前面的两个类。现在已经有四个类,而且它们具有继承关系。接着要考虑对数据的操作和对各种员工的管理操作,另外定义一个员工管理类staffmanage,将各种操作函数,数据成员进行封装。至于各个类的成员函数都有自己的版本,利用多态性,用基类指针指向派生类对象进行调用。
数据结构分析
因为涉及到信息的处理,所以采用二进制文件staff.dat保存数据。上述的类体系中,不同类层次的对象具有的数据成员不同,为了方便存储在一个二进制文件中并且能进行查询等操作,另外建立索引结构indextype,并将索引存储在索引文件index.dat中。索引结构中必须包含一个数据成员position记录不同对象数据在二进制文件的相对存储位置。另外,查找数据的标志设置为人员的编号num,为了便于进行删除操作,设删除标记deltag.最后,文件操作时要确定写入的文件大小,需要有人员类型标记stafftypeb便于分配存储空间。
类定义及成员函数功能描述:
虚基类staff:
class staff
{
public:
staff(){} //构造函数
virtual~staff(){} //虚析构函数
const char*getnum()const{return num;} //返回编号
virtual void input()=0; //输入函数
virtual void show()const=0; //显示数据
virtual void read(fstream f)const=0; //读文件
virtual void write(fstream f)const=0; //写文件
protected:
char num[8]; //编号
char name[12];//姓名
int age; //年龄
}
该基类把员工的基本数据成员和基本操作都包含进来了。除了返回编号的函数有具体实现,其他函数都声明为纯虚函数。
研究人员类engineer
class engineer:virtual public staff
{
public:
engineer(){} //构造函数
virtual~ engineer(){} //虚析构函数
void input(); //输入数据
void show()const; //显示数据
void read(fstream f)const //读文件
{
f.read((char*)this,sizeof(engineer));
};
void write(fstream f)const //写文件
{
f.write((char*)this,sizeof(engineer));
};
protected:
char major[12]; //专业
char prof[12]; //职称
};
该类增加两个成员以记录更多的性质,函数也会给出具体实现,这里部分函数只做了声明。
文档评论(0)