c++课设实验报告 1.docx
- 文档编号:30424749
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:42
- 大小:154.97KB
c++课设实验报告 1.docx
《c++课设实验报告 1.docx》由会员分享,可在线阅读,更多相关《c++课设实验报告 1.docx(42页珍藏版)》请在冰豆网上搜索。
c++课设实验报告1
C与C++
课程设计报告
设计题目:
公司员工管理系统
专业网络工程
班级网络141
学生
学号
指导教师
起止时间2015.12.28-2015.12.31
2015年秋季学期
一、具体任务
设计一个利用文件处理方式实现对公司人员(包括工程师、领导和主任工程师)进行管理,要求具有增加数据、更新数据、查询数据、删除数据以及现实数据的功能。
设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出工程师类Engineer,包含专业和职称保护数据成员以及相关的成员函数;再由Staff派生出领导类Leader,包含职务和部门保护数据成员以及相关的成员函数;然后由Engineer和Leader类派生出主任工程师类Chairman。
二、软件环境
本实验用到的编程环境为CodeBlocks
三、算法设计思想
1.实现
由于本实验共有4个类,需要实现数据的插入,删除,修改,查询,显示等功能,所以可以用单链表来实现,这样就需要建立一个链表类和一个节点的结构体。
2.定义类
本实验中公司共有4种员工,且员工之间有继承和派生关系,所以应该有4个类,外加链表,一共5个类
(1)设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;
(2)由Staff派生出工程师类Engineer,包含专业和职称保护数据成员以及相关的成员函数;
(3)再由Staff派生出领导类Leader,包含职务和部门保护数据成员以及相关的成员函数。
(4)然后由Engineer和Leader类派生出主任工程师类Chairman。
(5)链表类,包含头结点head和指针r以及相关的成员函数,即针对链表的各个数据处理功能的实现。
3.功能实现
链表内需要各个数据的处理功能,但是由于共有其他的4种类,所以对于某些操作,例如修改,显示每个类里面需要有自己的函数实现。
4.函数实现
(1)对于链表的成员函数,用于实现数据的插入,删除,修改,查询,显示的功能:
①LinkList();对头结点和指针r初始化;
②intInsert_LinkList();插入函数
③intDel_LinkList(inti);删除函数
④voidmodify_LinkList(inti);修改函数,其中不同的类调用各自的修改函数
⑤voidprint_LinkList();显示函数,其中不同的类调用各自的显示函数
⑥Node
⑦voidsave_LinkList();保存函数,其中不同的类调用各自的保存函数
(2)对于类的成员函数
a.Staff职工类
①Staff()职工的构造函数,输入职工的数据
②voidprint()职工的显示函数,显示职工的数据
③voidprint1()职工的显示函数,用于派生类的调用
④voidmodify()职工的修改函数,修改职工的数据
⑤voidsave()职工的保存函数,保存数据到staff.txt文件
⑥voidsave1()职工的保存函数,将工程师的针对职工的数据存入engineer.txt文件,后用于派生类Engineer的调用
⑦voidsave2()职工的保存函数,将领导的针对职工的数据存入leader.txt文件,后用于派生类Leader的调用
⑧voidsave3()职工的保存函数,将主任工程师的针对职工的数据存入chairman.txt文件,后用于派生类chairman的调用
b.Engineer工程师类
①Engineer()工程师的构造函数,输入工程师的数据
②voidprint()工程师的显示函数,显示工程师的数据,先调用基类Staff的print1(),显示满足职工的条件的数据,再显示自己特有的数据。
③voidprint1()工程师的显示函数,用于派生类Chairman的调用
④voidmodify()工程师的修改函数,修改工程师的信息,先调用基类Staff的modify(),修改满足职工条件的数据,再修改自己特有的数据。
⑤voidsave()工程师的保存函数,保存工程师的数据到engineer.txt文件,先调用基类的save1(),保存满足职工条件的数据信息,再保存自己特有的数据信息。
⑥voidsave1()工程师的保存函数,将Chairman满足工程师的信息存入chairman.txt文件,用于派生类Chairman的调用
c.Leader领导类
①Leader()领导的构造函数
②voidprint()领导的显示函数,显示领导的信息,先调用基类Staff的print1(),显示满足职工的条件的信息,再显示自己特有的数据信息。
③voidprint1()领导的显示函数,用于派生类Chairman的调用
④voidmodify()领导的修改函数,修改领导的信息,先调用基类Staff的modify(),修改满足职工条件的数据,再修改自己特有的数据。
⑤voidsave()领导的保存函数,保存领导的数据到leader.txt文件,先调用基类的save1(),保存满足职工条件的数据信息,再保存自己特有的数据信息。
⑥voidsave1()领导的保存函数,将Chairman满足领导的信息存入chairman.txt文件,用于派生类Chairman的调用
d.Chairman主任工程师类
①Chairman();主任工程师的构造函数
②voidprint();主任工程师的显示函数,显示主任工程师的信息,先调用基类工程师的print1(),再调用基类领导的print1()。
③voidmodify();主任工程师的修改函数,修改主任工程师的信息,先调用基类工程师的modify(),再调用基类领导的modify()。
④voidsave();主任工程师的保存函数,保存主任工程师的信息,先调用基类工程师的save1(),再调用基类领导的save1()。
(3)其他的普通函数,操作函数及选择,菜单函数
①voidoperation1();职工类的操作函数,若选择职工类,则进入该函数,调用菜单函数,利用switch语句供用户做相应得选择来对职工类进行操作,其中调用链表的操作函数。
②voidoperation2();工程师类的操作函数,若选择工程师类,则进入该函数,调用菜单函数,利用switch语句供用户做相应得选择来对工程师类进行操作,其中调用链表的操作函数。
③voidoperation3();领导类的操作函数,若选择领导类,则进入该函数,调用菜单函数,利用switch语句供用户做相应得选择来对职工类进行操作,其中调用链表的操作函数。
④voidoperation4();主任工程师类的操作函数,若选择主任工程师类,则进入该函数,调用菜单函数,利用switch语句供用户做相应得选择来对职工类进行操作,其中调用链表的操作函数。
⑤voidchoose();选择函数,供用户选择要操作的公司员工类别
⑥voidmenu();菜单函数,供用户选择要进行的数据处理操作
(4).主函数main()
利用switch语句,调用选择函数,供用户选择要操作的公司员工的类别的编号,然后调用对应的operation函数。
四、源代码
#include
#include
#include
#include
usingnamespacestd;
voidmenu();
intchoose();
voidoperation1();
voidoperation3();
voidoperation2();
voidoperation4();
classStaff
{
private:
intnum;
charname[100];
intage;
public:
Staff()
{
cout<<"请输入职工编号"< cin>>num; cout<<"请输入职工姓名"< cin>>name; cout<<"请输入职工年龄"< cin>>age; } voidprint() { cout<<"编号"< } voidprint1() { cout<<"编号"< } voidmodify() { inta; cout<<"------------------------------------"< cout<<"请输入要修改的信息号(输入0退出): "< cout<<"1.编号"< cout<<"2.姓名"< cout<<"3.年龄"< cout<<"------------------------------------"< cin>>a; switch(a) { case1: { cout<<"请输入要修改后的编号: "< cin>>num; break; } case2: { cout<<"请输入要修改后的姓名: "< cin>>name; break; } case3: { cout<<"请输入要修改后的年龄: "< cin>>age; break; } case0: break; default: break; } } voidsave() { ofstreamout; out.open("staff.txt",ios: : app); if(out) { out<<"编号"< out< out.close(); } } voidsave1() { ofstreamout; out.open("engineer.txt",ios: : app); if(out) { out<<"编号"< out.close(); } } voidsave2() { ofstreamout; out.open("leader.txt",ios: : app); if(out) { out<<"编号"< out.close(); } } voidsave3() { ofstreamout; out.open("chairman.txt",ios: : app); if(out) { out<<"编号"< out.close(); } } }; classEngineer: virtualpublicStaff { private: charmajor[100]; charpost[100]; public: Engineer() { cout<<"请输入工程师专业"< cin>>major; cout<<"请输入工程师职称"< cin>>post; } voidprint() { Staff: : print1(); cout<<"专业"< } voidprint1() { Staff: : print1(); cout< } voidmodify() { Staff: : modify(); inta; cout<<"------------------------------------"< cout<<"请输入要修改的信息号(输入0退出): "< cout<<"1.专业"< cout<<"2.职称"< cout<<"------------------------------------"< cin>>a; switch(a) { case1: { cout<<"请输入要修改后的专业: "< cin>>major; break; } case2: { cout<<"请输入要修改后的职称: "< cin>>post; break; } default: break; } } voidsave() { ofstreamout; if(out) { Staff: : save1(); out.open("engineer.txt",ios: : app); out< out.close(); } } voidsave1() { ofstreamout; if(out) { Staff: : save3(); out.open("chairman.txt",ios: : app); out< out.close(); } } }; classLeader: virtualpublicStaff { private: charposition[100]; charpart[100]; public: Leader() { cout<<"请输入领导职务"< cin>>position; cout<<"请输入领导部门"< cin>>part; } voidprint() { Staff: : print1(); cout< } voidprint1() { cout< } voidmodify() { Staff: : modify(); inta; cout<<"------------------------------------"< cout<<"请输入要修改的信息号(输入0退出): "< cout<<"1.职务"< cout<<"2.部门"< cout<<"------------------------------------"< cin>>a; switch(a) { case1: { cout<<"请输入要修改后的职务: "< cin>>position; break; } case2: { cout<<"请输入要修改后的部门: "< cin>>part; break; } default: break; } } voidsave() { ofstreamout; if(out) { Staff: : save2(); out.open("leader.txt",ios: : app); out<<"职务"< out.close(); } } voidsave1() { ofstreamout; if(out) { out.open("chairman.txt",ios: : app); out<<"职务"< out.close(); } } }; classChairman: publicEngineer,publicLeader { public: Chairman(){} voidprint() { Engineer: : print1(); Leader: : print1(); } voidmodify() { Engineer: : modify(); Leader: : modify(); } voidsave() { Engineer: : save1(); Leader: : save1(); } }; template structNode{ Tdata; Node*next; }; template classLinkList { private: Node Node public: LinkList(); intInsert_LinkList(); intDel_LinkList(inti); voidmodify_LinkList(inti); voidprint_LinkList(); Node voidsave_LinkList(); }; intmain() { intm; while(m) { inta; a=choose(); switch(a) { case1: { operation1(); break; } case2: { operation2(); break; } case3: { operation3(); break; } case4: { operation4(); break; } case0: { m=0; break; } } } return0; } voidoperation1() { LinkList intn,m; while(m) { menu(); cin>>n; switch(n) { case1: { intflag; flag=s.Insert_LinkList(); if(flag==1) { cout<<"------------"< cout<<"插入成功"< cout<<"------------"< } else { cout<<"------------"< cout<<"插入失败"< cout<<"------------"< } break; } case2: { inti,flag; cout<<"请输入要删除的员工的编号: "; cin>>i; flag=s.Del_LinkList(i); if(flag==1) { cout<<"------------"< cout<<"删除成功"< cout<<"------------"< } else { cout<<"------------"< cout<<"删除失败"< cout<<"------------"< } break; } case3: { cout<<"---------员工信息---------"< s.print_LinkList(); break; } case4: { cout<<"请输入要修改的员工的编号: "; intb; cin>>b; s.modify_LinkList(b); cout<<"---------------"< cout<<"修改成功"< cout<<"---------------"< break; } case5: { cout<<"请输入要查询的员工的编号: "; intb; cin>>b; s.Get_LinkList(b); break; } case6: { s.save_LinkList(); cout<<"---------------"< cout<<"保存成功"< cout<<"---------------"< break; } case0: { m=0; break; } default: cout<<"输入有误,请重新输入"< break; } } } voidoperation2() { LinkList intn,m; while(m) { menu(); cin>>n; switch(n) { case1: { intflag; flag=e.Insert_LinkList(); if(flag==1) { cout<<"------------"< cout<<"插入成功"< cout<<"------------"< } else { cout<<"------------"< cout<<"插入失败"< cout<<"------------"< } break; } case2: { int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+课设实验报告 c+ 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)