版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文明演讲稿模板集锦7篇
- 黑龙江大学《试验设计与统计分析》2023-2024学年第一学期期末试卷
- 黑龙江大学《桥梁工程》2022-2023学年第一学期期末试卷
- 2024年桩基工程协议条款示例版
- 黑龙江大学《机械设计》2023-2024学年第一学期期末试卷
- 2024年版创业孵化租赁协议范本版
- 黑龙江大学《档案信息复制与恢复技术》2022-2023学年第一学期期末试卷
- 2024年服务居间协议实操指南版
- 国庆节聚会民宿活动方案
- 2024年版电锅炉供应及安装服务协议版
- 偿债能力分析开题报告
- 企业事业部制的职责与权限
- 广东省行政执法资格考试题库
- 项目实施组织形式和管理措施
- 健康知识讲座-痛风
- 校园设施规划设计案例分析
- 2024年幼儿园师德师风培训教育班会
- 冠脉ct检查护理课件
- 医疗机构资金管理的合规要求与控制策略
- 牛津深圳版小学英语四年级上册模块检测试卷(含听力材料及答案)全册
- 结核病的并发症的识别与处理
评论
0/150
提交评论