c++课设实验报告 1.docx

上传人:b****8 文档编号:30424749 上传时间:2023-08-14 格式:DOCX 页数:42 大小:154.97KB
下载 相关 举报
c++课设实验报告 1.docx_第1页
第1页 / 共42页
c++课设实验报告 1.docx_第2页
第2页 / 共42页
c++课设实验报告 1.docx_第3页
第3页 / 共42页
c++课设实验报告 1.docx_第4页
第4页 / 共42页
c++课设实验报告 1.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

c++课设实验报告 1.docx

《c++课设实验报告 1.docx》由会员分享,可在线阅读,更多相关《c++课设实验报告 1.docx(42页珍藏版)》请在冰豆网上搜索。

c++课设实验报告 1.docx

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*Get_LinkList(inti);查找函数

⑦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*head;

Node*r;

public:

LinkList();

intInsert_LinkList();

intDel_LinkList(inti);

voidmodify_LinkList(inti);

voidprint_LinkList();

Node*Get_LinkList(inti);

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()

{

LinkLists;

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()

{

LinkListe;

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1