oop大作业报告_第1页
oop大作业报告_第2页
oop大作业报告_第3页
oop大作业报告_第4页
oop大作业报告_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机学院 C + + 大 作 业 报 告 班级: 学号: 姓名: 一、设计目的 1、熟练掌握C+语法、能够使用该语言编写较为复杂的程序 2、进一步熟悉类的用法,加深对类之间继承的规律的理解 3、提高对较为复杂程序的编写能力,提高编程能力 二、设计原理 根据C+中类的使用方法,结合 C+语法进行编写程序。 三、设计目标 设计一个虚基类Staff (员工),包含编号、姓名和年龄保护数据 成员以及相关的成员函数;由 Staff派生出工程师类Engineer,包含 专业和职称保护数据成员以及相关的成员函数;再由 Staff 派生出领 导类Leader,包含职务和部门保护数据成员以及相关的成员函数;然

2、 后由Engineer和Leader派生出主任工程师类Chairman。 设计一个利用文件处理方式实现对公司人员 (包括工程师、 领导 和主任工程师)进行管理,具有增加数据、更新数据、查询数据、删 除数据以及重组文件的功能。 四、设计步骤 1 、分析问题 由题目知至少需要四个类: 一个基类、两个直接由基类派生的类、 一个由上面两个派生出来的类共同派生的子类。 对这四个类分别取名 为:class staff (基类)class Enginee、class Leader class Chairman 其中 class Engineer class Leader为基类直接派生,class Chair

3、man由 class Engineer class Leade直接派生,他们之间关系图下图: 2、功能分析 根 据 对问题的分 析为了实 现要求 的功能, 对基类 设计 void InputInfo() 用来输入信 息, void OutputInfo() 用来输出信息 、 char *ShowInfo(int i) 用来返回当前类的信息。在派生类中各自加入自己的 函数。个字实现如下: 基类: class staff protected: char Name10; char Uid10; char Age10; public: void InputInfo() J void OutputInf

4、o() J char *ShowInfo(int i) J ; 两个基类 class Engineer:virtual public staff protected: char career10; char title10; class Leader:virtual public staff protected: char Dep10; char Job10; 最后的派生类 class Chairma n:public Engin eer,public Leader public: void In putl nfo() 三、程序流程图 1、类关系图 2、主界面流程图 3、添加模块 潯加模块 沸

5、期工程师 济扣领导 憑加工程师 * 打幵支件打幵文件打幵文件 谕入信息J输入信息输入信息 保存信息f呆存信息保存信_ void DeleteInfo(char no); void LookforInfo(char no); void ModifyInfo(char no); #endif 2、 MyClass.h #ifndef _MYCLASS_H #define _MYCLASS_H #include MyHeader.h using namespace std; class staff protected: char Name10; char Uid10; char Age10; pub

6、lic: void InputInfo() J void OutputInfo() J char *ShowInfo(int i) ; class Engineer:virtual public staff protected: char career10; char title10; public: void InputInfo() cout 请输入编号: Uid; cout 请输入姓名: Name; cout 请输入年龄: Age; cout 请输入专业: career; cout 请输入职称: endl; void OutputInfo() cout 编号: Uidendl; cout

7、姓名: Nameendl; cout 年龄: Ageendl; cout 专业: careerendl; cout 职称: endl; char *ShowInfo(int i) if(i=1) return Uid; else if(i=2) return Name; else if(i=3) return Age; else if(i=4) return career; else if(i=5) return title; return 0; ; class Leader:virtual public staff protected: char Dep10; char Job10; pub

8、lic: void InputInfo() cout 请输入编号: Uid; cout 请输入姓名: Name; cout 请输入年龄: Age; cout 请输入职务: Job; cout 请输入部门: Dep; void OutputInfo() cout 编号: Uidendl; cout 姓名: Nameendl; cout 年龄: Ageendl; cout 职务: Jobendl; cout 部门: Dependl; char *ShowInfo(int i) if(i=1) return Uid; else if(i=2) return Name; else if(i=3) re

9、turn Age; else if(i=4) return Job; else if(i=5) return Dep; return 0; ; class Chairman:public Engineer,public Leader public: void InputInfo() cout 请输入编号: Uid; cout 请输入姓名: Name; cout 请输入年龄: Age; cout 请输入职务: Job; cout 请输入部门: Dep; cout 请输入专业: career; cout 请输入职称: title; void OutputInfo() cout 编号: Uidend

10、l; cout 姓名: Nameendl; ; #endif cout 年龄: Ageendl; cout 职务: Jobendl; cout 部门: Dependl; cout 专业: careerendl; cout 职称: titleendl; char *ShowInfo(int i) if(i=1) return Uid; else if(i=2) return Name; else if(i=3) return Age; else if(i=4) return Job; else if(i=5) return Dep; else if(i=6) return career; els

11、e if(i=7) return title; return 0; 3、Function.cpp #include MyClass.h #include MyHeader.h using namespace std; void AddInfo() fstream file,file2,file3; char choice1,choice2,s100; int i; cout1 :增加工程师 ; cout2 :增加领导 ; cout3 :增加主任工程师 ; cout4 :返回 choice2; if(choice2=1) file.open(E:engineer.txt,ios:out|ios:

12、app); if(!file) coutengineer.txt cannot be openendl; abort(); Engineer e; e.InputInfo(); for(i=1;i=5;i+) strcpy(s,e.ShowInfo(i); files; if(i5) file ; else if(i=5) fileendl; file.close(); else if(choice2=2) file.open(E:leader.txt,ios:out|ios:app); if(!file) coutengineer.txt cannot be openendl; abort(

13、); Leader e; e.InputInfo(); for(i=1;i=5;i+) strcpy(s,e.ShowInfo(i); files; if(i5) file ; else if(i=5) fileendl; file.close(); else if(choice2=3) file.open(E:chairman.txt,ios:out|ios:app); if(!file) coutengineer.txt cannot be openendl; abort(); Chairman e; e.InputInfo(); for(i=1;i=7;i+) strcpy(s,e.Sh

14、owInfo(i); files; if(i7) file ; else if(i=7) fileendl; file.close(); else if(choice2=4) cout 已返回 endl; return; void LookforInfo(char no) fstream file,file2,file3; int flag=0,l,len; char t,s100; l=strlen(no); file.open(E:engineer.txt,ios:in); if(!file) coutengineer.txt cannot be opennedendl; abort();

15、 while(!file.eof() s0=0; file.getline(s,100); t=sl; sl=0; if(strcmp(s,no)=0) sl=t; len=strlen(s); int i,j=0; for(i=0;i5;i+) if(i=0) cout 员工号: ; else if(i=1) cout 姓名: ; else if(i=2) cout 年龄: ; else if(i=3) cout 专业: else if(i=4) cout 职称: ; while(sj!= j+; coutendl; while(sj= flag=1; break; file.close()

16、; if(flag=0) file2.open(E:leader.txt,ios:in); if(!file2) coutleader.txt cannot be opennedendl; abort(); while(!file2.eof() s0=0; file2.getline(s,100); t=sl; sl=0; if(strcmp(s,no)=0) sl=t; len=strlen(s); int i,j=0; for(i=0;i5;i+) if(i=0) cout 员工号: else if(i=1) cout 姓名: ; else if(i=2) cout 年龄: ; else

17、if(i=3) cout 职务: ; else if(i=4) cout 部门: ; while(sj!= j+; coutendl; while(sj= / coutsendl; flag=1; break; file2.close(); if(flag=0) file3.open(E:chairman.txt,ios:in); if(!file3) coutchairman.txt cannot be opennedendl; abort(); while(!file3.eof() s0=0; file3.getline(s,100); t=sl; sl=0; if(strcmp(s,no

18、)=0) sl=t; len=strlen(s); coutsendl; int i,j=0; for(i=0;i7;i+) if(i=0) cout 员工号: else if(i=1) cout 姓名: ; else if(i=2) cout 年龄: ; else if(i=3) cout 职务: ; else if(i=4) cout 部门: ; else if(i=5) cout 专业: ; else if(i=6) cout 职称: ; while(sj!= j+; coutendl; while(sj= / coutsendl; flag=1; break; file3.close(

19、); if(flag=0) cout 未找到该记录 endl; void ModifyInfo(char no) fstream file1,file2,file3,file; int flag=0,l,len; char t,s100; l=strlen(no); file1.open(E:engineer.txt,ios:in|ios:out); if(!file1) coutengineer.txt cannot be opennedendl; abort(); file.open(E:1.txt,ios:out|ios:app); if(!file) cout1.txt cannot

20、be opennedendl; abort(); while(!file1.eof() s0=0; file1.getline(s,100); len=strlen(s); t=sl; sl=0; if(strcmp(s,no)=0) sl=t; int j=0,i=0; cout 原信息: endl; for(i=0;i5;i+) if(i=0) cout 员工号: ; else if(i=1) cout 姓名: ; else if(i=2) cout 年龄: ; else if(i=3) cout 专业: ; else if(i=4) cout 职称: ; while(sj!= j+; c

21、outendl; while(sj= cout 请输入新信息: endl; for(i=0;i5;i+) if(i=0) couts; files; file ; else if(i=1) couts; files; file ; else if(i=2) couts; files; file ; else if(i=3) couts; files; file ; else if(i=4) couts; files; file ; flag=1; else sl=t; files; fileendl; file1.close(); file.close(); if(flag=1) char s

22、ou=E:1.txt,des=E:engineer.txt; DeleteFile(E:engineer.txt); if(rename(sou,des) coutfailedendl; return; else DeleteFile(E:1.txt); if(flag=0) file2.open(E:leader.txt,ios:in|ios:out); if(!file2) coutleader.txt cannot be opennedendl; abort(); file.open(E:2.txt,ios:out|ios:app); if(!file) cout2.txt cannot

23、 be opennedendl; abort(); while(!file2.eof() s0=0; file2.getline(s,100); len=strlen(s); t=sl; sl=0; if(strcmp(s,no)=0) sl=t; cout 原信息: endl; int i,j=0; for(i=0;i5;i+) if(i=0) cout 员工号: ; else if(i=1) cout 姓名: ; else if(i=2) cout 年龄: ; else if(i=3) cout 职务: ; else if(i=4) cout 部门: ; while(sj!= j+; co

24、utendl; while(sj= cout 请输入新信息: endl; for(i=0;i5;i+) if(i=0) couts; files; file ; else if(i=1) couts; files; file ; else if(i=2) couts; files; file ; else if(i=3) couts; files; file ; else if(i=4) couts; files; file ; flag=1; else sl=t; files; fileendl; file2.close(); file.close(); if(flag=1) char so

25、u=E:2.txt,des=E:leader.txt; DeleteFile(E:leader.txt); coutdeletedendl; if(rename(sou,des) coutfailedendl; return; else DeleteFile(E:2.txt); if(flag=0) file3.open(E:chairman.txt,ios:in|ios:out); if(!file3) coutchairman.txt cannot be opennedendl; abort(); file.open(E:3.txt,ios:out|ios:app); if(!file)

26、cout3.txt cannot be opennedendl; abort(); while(!file3.eof() s0=0; file3.getline(s,100); len=strlen(s); t=sl; sl=0; if(strcmp(s,no)=0) sl=t; cout原信息:”; int i,j=0; for(i=0;i7;i+) if(i=0) cout 员工号: else if(i=1) cout 姓名: ; else if(i=2) cout 年龄: ; else if(i=3) cout 职务: ; else if(i=4) cout 部门: ; else if(

27、i=5) cout 专业: ; else if(i=6) cout 职称: ; while(sj!= j+; coutendl; while(sj= cout 请输入新信息: endl; for(i=0;i7;i+) if(i=0) couts; files; file ; else if(i=1) couts; files; file ; else if(i=2) couts; files; file ; else if(i=3) couts; files; file ; else if(i=4) couts; files; file ; else if(i=5) couts; files;

28、 file ; else if(i=6) couts; files; file ; flag=1; else sl=t; files; fileendl; file3.close(); file.close(); if(flag=1) char sou=E:3.txt,des=E:chairman.txt; DeleteFile(E:chairman.txt); if(rename(sou,des) coutfailedendl; return; else DeleteFile(E:3.txt); cout 该记录不存在,更新失败 endl; void DeleteInfo(char no)

29、fstream file1,file2,file3,file; int flag=0,l; char t,s100; l=strlen(no); file1.open(E:engineer.txt,ios:in|ios:out); if(!file1) coutengineer.txt cannot be opennedendl; abort(); file.open(E:1.txt,ios:out|ios:app); if(!file) cout1.txt cannot be opennedendl; abort(); while(!file1.eof() s0=0; file1.getli

30、ne(s,100); t=sl; sl=0; if(strcmp(s,no)=0) flag=1; continue; else sl=t; files; fileendl; file1.close(); file.close(); if(flag=1) char sou=E:1.txt,des=E:engineer.txt; DeleteFile(E:engineer.txt); if(rename(sou,des) coutfailedendl; return; else DeleteFile(E:1.txt); if(flag=0) file2.open(E:leader.txt,ios

31、:in|ios:out); if(!file2) coutleader.txt cannot be opennedendl; abort(); file.open(E:2.txt,ios:out|ios:app); if(!file) cout2.txt cannot be opennedendl; abort(); while(!file2.eof() s0=0; file2.getline(s,100); t=sl; sl=0; if(strcmp(s,no)=0) flag=1; continue; else sl=t; files; fileendl; file2.close(); f

32、ile.close(); if(flag=1) char sou=E:2.txt,des=E:leader.txt; DeleteFile(E:leader.txt); coutdeletedendl; if(rename(sou,des) coutfailedendl; return; else DeleteFile(E:2.txt); if(flag=0) file3.open(E:chairman.txt,ios:in|ios:out); if(!file3) coutchairman.txt cannot be opennedendl; abort(); file.open(E:3.txt,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论