




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品推广与营销方案总结
- 私人心理咨询服务免责协议书
- 废旧物资购销合同
- 股份制企业合同审查文书模板
- Unit 1 You and Me 大单元整体教学设计 2024-2025学年人教版英语七年级上册
- 第3章开源硬件创意设计3.4审查并优化方案 -高中教学同步《信息技术人工-开源硬件项目设计》教学设计(人教-中图版2019)
- 川教版信息技术(2019)五年级上册第三单元 图形化编程之聪明的角色 2 侦测太空垃圾-教学设计
- 20《美丽的小兴安岭》教学设计-2024-2025学年三年级上册语文统编版(五四制)
- 2025届高考生物备考教学设计:第四章 细胞的生命历程 课时1 细胞的增殖
- 第六单元课题3二氧化碳的实验室制取教学设计-2024-2025学年九年级化学人教版上册
- 氧化还原反应配平专项训练
- 2025年中考复习必背外研版初中英语单词词汇(精校打印)
- 全国教育科学规划课题申报书:02.《铸牢中华民族共同体意识的学校教育研究》
- GB/T 44679-2024叉车禁用与报废技术规范
- 《船舶精通急救》全套教学课件
- 什么叫绩效考勤管理制度
- 外墙喷漆施工合同协议书
- 《积极心理学(第3版)》 课件 第2章 心理流畅体验
- 软件系统平台项目实施方案
- 陕西延长石油集团矿业公司招聘笔试题库2024
- 浙江省中小学心理健康教育课程标准
评论
0/150
提交评论