第8题职工信息表 报告.docx

上传人:b****4 文档编号:11915091 上传时间:2023-04-16 格式:DOCX 页数:20 大小:29.95KB
下载 相关 举报
第8题职工信息表 报告.docx_第1页
第1页 / 共20页
第8题职工信息表 报告.docx_第2页
第2页 / 共20页
第8题职工信息表 报告.docx_第3页
第3页 / 共20页
第8题职工信息表 报告.docx_第4页
第4页 / 共20页
第8题职工信息表 报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第8题职工信息表 报告.docx

《第8题职工信息表 报告.docx》由会员分享,可在线阅读,更多相关《第8题职工信息表 报告.docx(20页珍藏版)》请在冰豆网上搜索。

第8题职工信息表 报告.docx

第8题职工信息表报告

 

课程设计报告

 

课程设计名称:

从职工信息表

系别:

3

学生姓名:

班级:

学号:

成绩:

指导教师:

汤亮

开课时间:

2010——2011学年二学期

一、课程设计目的(宋体四号加粗)

**************************************************

二、课程设计要求 (宋体四号加粗)

**************************************************

三、课程设计内容 (宋体四号加粗)

**************************************************

四、课程设计概要设计(宋体四号加粗)

**************************************************

五、课程设计详细设计与实现 (宋体四号加粗)

**************************************************

六、源代码与注释  (宋体四号加粗)

**************************************************

七、总结(宋体四号加粗)

***************************************************

 

一、课程设计目的

根据课程讲内容,自主作相应的练习,消化自己所学的内容,同时也培养自己综合运用c++程序设计课程所学到的知识和编写c++程序解决实际问题的能力,以及良好的课程设计习惯。

通过课程设计的训练,学生了解程序开发的过程,掌握编写、调试和测试c++语言程序的基本技巧,充分理解结构化程序设计的基本方法。

二、课程设计要求

1、基本要求:

(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;

(2)要求在设计的过程中,建立清晰的类层次;

(3)在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;

(4)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。

2、创新要求:

在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。

三、课程设计内容

职工信息表(★★)

设计要求:

使用C++类实现

设计要求实现如下功能:

(1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。

(2)根据职工信息表,建立只含有姓名和年龄的职工信息简表。

(可选功能)

(3)使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类)使用相应的对象放置10个职工信息。

(4)编写同名display()成员函数,用来输出数组的内容。

(5)按不同类别输出职工信息,比如按系输出教师信息。

(可选功能)

(6)要求对“<<”和“>>”运算符进行重载。

考虑到输人职工编号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求。

(7)抽取并计算职工的平均年龄。

(8)检索(查找)指定信息。

(如按姓名检索、按年龄检索)

(9)显示年龄分布的柱状图,示例如下:

(10)参考界面如下:

增加一位教师记录

增加一位工人记录

显示全部职工记录

计算教师平均年龄

计算工人平均年龄

删除一个教师

删除一个工人

按系输出教师信息(可选)

按姓名检索所有信息

结束程序运行

四、课程设计概要设计

这个题目根据教师、两个对象可知先设两个类,即Teacher、Work类,并由此分别建立对象数组,然后在这两个类中分别将编号、姓名、年龄、性别等数据成员和删除、添加、查找、计算平均年龄等成员函数等封装起来,将每个功能函数在类外定义,主函数中通过菜单进行选择调用各功能函数。

五、课程设计详细设计与实现

1.由于有“<<”、“>>”的重载,顾应用“#include、#include、#include”。

2.设计一个雇员虚基类guyuan,并派生出教师Teacher工人Works两个类,同时在这两个类里分别添加数据成员和成员函数,成员函数包括录入、添加、查询、删除、显示、主函数、<<及>>的重载函数。

3.各函数的具体实现:

(由于教师类与工人类功能及数据成员几乎都相同,所以在这里只介绍一下教师类)

(1)录入函数

可以创建一个txt文件。

并向这个文件中输出10个教师的信息,然后再从文件中将这10个教师的信息录入到教师数组10个对象中。

(2)主菜单函数

输出主菜单界面信息,返回一个菜单选项的值。

(3)添加函数

输入要添加教师的信息并返回主菜单。

(4)删除函数

输入要删除教师的编号,根据编号定位到数组的这个同学,将此后的教师的编号依次向前移一个。

(5)按系查询函数

输入要查询的教师的系别,然后输出该教师的信息。

(6)显示函数

用一个循环和插入重载函数,依次将对象输出。

(7)求平均年龄函数

用循环将各元素的年龄加起来,然后除以总人数。

4.主函数

通过菜单选项来调用各函数,菜单可以用swich语句实现。

六、源代码与注释

#include

#include

#include

#include

usingnamespacestd;

staticintsum=0;//教师总数

staticintsum1=0;//工人总数

classGuyuan

{public:

charnum[20];

charname[20];

intage;

};

 

//教师类

classTeacher:

virtualpublicGuyuan//继承虚基类

{

public:

charxi[5];

intzhucaidan();//主菜单函数

voidrecord();//录入函数

voidadd();//添加函数

voidchaxun();//查询函数

voiddel();//删除函数

floataverage_age();//平均年龄函数

voidxichaxun();//按系查询函数

voidxianshi();//显示全部教师函数

voidnamejiansuo();//按姓名检索函数

friendostream&operator<<(ostream&,Teacher&);重载<<

friendistream&operator>>(istream&,Teacher&);重载<<

};

Teacherteacher[20];//全局对象数组

//主菜单定义

intTeacher:

:

zhucaidan()

{

cout<<"\t\t\t----------------------------------------------------\n";

cout<<"\t\t\t+教师信息表管理系统+\n";

cout<<"\t\t\t----------------------------------------------------\n";

cout<<"\t\t\t+[1]----计算教师平均年龄+\n";

cout<<"\t\t\t+[2]----查询教师信息+\n";

cout<<"\t\t\t+[3]----按系查询教师信息+\n";

cout<<"\t\t\t+[4]----按名字检索教师信息+\n";

cout<<"\t\t\t+[5]----显示教师全部信息+\n";

cout<<"\t\t\t+[6]----删除教师信息+\n";

cout<<"\t\t\t+[7]----添加教师信息+\n";

cout<<"\t\t\t+[0]----退出系统+\n";

cout<<"\t\t\t----------------------------------------------------\n";

cout<<"请输入您的选择:

";

intchoice;

cin>>choice;

return(choice);

}

//定义录入函数

voidTeacher:

:

record()

{ofstreamoutfile("教师信息.txt",ios:

:

out);//向文件输出

charc;

cout<<"请输入教师信息,以#结束:

"<

while(c!

='#')

{

Cout<<输入教师编号:

";cin>>teacher[sum].num;outfile<

cout<<"输入教师姓名:

";cin>>teacher[sum].name;outfile<

cout<<"输入教师年龄:

";cin>>teacher[sum].age;outfile<

cout<<"输入教师系别:

";cin>>teacher[sum].xi;outfile<

cout<<"若想要结束输入请按#:

";cin>>c;

sum++;

cout<

}

cout<<"输入信息结束!

"<

ifstreaminfile("教师信息.txt",ios:

:

in);

for(inti=0;i

{infile>>teacher[sum].num;

infile>>teacher[sum].name;

infile>>teacher[sum].age;

infile>>teacher[sum].xi;

}

}

//添加一个教师信息

voidTeacher:

:

add()

{cout<

cout<<"输入教师编号:

";cin>>teacher[sum].num;

cout<<"输入教师姓名:

";cin>>teacher[sum].name;

cout<<"输入教师年龄:

";cin>>teacher[sum].age;

cout<<"输入教师系别:

";cin>>teacher[sum].xi;

sum++;

}

//查询教师信息

voidTeacher:

:

chaxun()

{cout<

charnum[20];inti=0;

cout<<"请输入要查询教师的编号:

"<

cin>>num;

for(i=0;i<=sum;i++)

if(strcmp(teacher[i].num,num)==0)

{cout<<"你要查询的信息是:

"<

cout<

}

}

//删除教师信息

voidTeacher:

:

del()

{cout<

charnum1[20];intj;

cout<<"请输入您要删除的教师的编号:

";

cin>>num1;

for(inti=0;i<=sum;i++)

if(strcmp(teacher[i].num,num1)==0)

{j=i;}

for(;j

{teacher[j]=teacher[j+1];

}

sum--;

cout<<"你要删除的信息已经删除成功!

"<

}

floatTeacher:

:

average_age()

{cout<

floatave;floathe=0;

for(inti=0;i<=sum;i++)

{he=he+teacher[i].age;

}

ave=he/sum;

cout<<"所有教师年龄的平均数为:

"<

returnave;

}}

//按系输出教师信息

voidTeacher:

:

xichaxun()

{cout<

charxi[5];inti=0;

cout<<"请输入要查询教师的系别:

"<

cin>>xi;

for(i=0;i<=sum;i++)

if(strcmp(teacher[i].xi,xi)==0)

{cout<<"你要查询的信息是:

"<

cout<

}

elsecout<<"您要查询的教师不存在!

"<

}

//显示函数定义

voidTeacher:

:

xianshi()

{cout<<"。

全部教师信息。

/t/t"<

for(inti=0;i

{cout<

}

cout<<"共有教师人数:

"<

}

//按姓名检索函数定义

voidTeacher:

:

namejiansuo()

{cout<

charname[10];inti=0;

cout<<"请输入要查询教师的名字:

"<

cin>>name;

for(i=0;i

if(strcmp(teacher[i].name,name)==0)

{cout<<"你要查询的信息是:

"<

cout<

}

}

//重载>>

istream&operator>>(istream&in,Teacher&t)

{cout<<"输入教师编号:

";cin>>t.num;

cout<<"输入教师姓名:

";cin>>teacher[sum].name;

cout<<"输入教师年龄:

";cin>>teacher[sum].age;

returnin;

}

//

ostream&operator<<(ostream&out,Teacher&t)

{cout<<"编号:

"<

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"系别:

"<

cout<

returnout;

}

 

classWorks:

virtualpublicGuyuan

{

public:

voidrecord();

voidadd();

voidchaxun();

voiddel();

floataverage_age();

voidxichaxun();

voidxianshi();

voidnamejiansuo();

friendostream&operator<<(ostream&,Works&);

friendistream&operator>>(istream&,Works&);

}works[10];

voidWorks:

:

record()

{ofstreamoutfile("工人信息.txt",ios:

:

out);

charc;

cout<<"请输入工人信息,以#结束:

"<

while(c!

='#')

{

cout<<"输入工人编号:

";cin>>works[sum1].num;outfile<

cout<<"输入工人姓名:

";cin>>works[sum1].name;outfile<

cout<<"输入工人年龄:

";cin>>works[sum1].age;outfile<

cout<<"若想要结束输入请按#:

";cin>>c;cout<

sum1++;

cout<

}

cout<<"输入信息结束!

"<

 

ifstreaminfile("工人信息.txt",ios:

:

in);

for(inti=0;i

{infile>>works[sum1].num;

infile>>works[sum1].name;

infile>>works[sum1].age;

}

}

 

//添加一个工人信息

voidWorks:

:

add()

{cout<

cout<<"输入工人编号:

";cin>>works[sum1].num;

cout<<"输入工人姓名:

";cin>>works[sum1].name;

cout<<"输入工人年龄:

";cin>>works[sum1].age;

sum1++;

}

 

//查询工人信息

voidWorks:

:

chaxun()

{cout<

charnum[20];inti=0;

cout<<"请输入要查询工人的编号:

"<

cin>>num;

for(i=0;i

if(works[i].num==num)

{cout<<"你要查询的信息是:

"<

//cout<

}

}

 

//删除工人信息

voidWorks:

:

del()

{cout<

charnum1[20];intj;

cout<<"请输入您要删除的工人的编号:

";

cin>>num1;

for(inti=0;i

if(strcmp(works[i].num,num1)==1)

{j=i;}

for(;j

{works[j]=works[j+1];

}

cout<<"你要删除的信息已经删除成功!

"<

}

floatWorks:

:

average_age()

{cout<

floatave;floathe=0;

for(inti=0;i

{he=he+works[i].age;

}

ave=he/sum1;

cout<<"所有工人年龄的平均数为:

"<

returnave;

}

 

voidWorks:

:

xianshi()

{cout<<"。

全部工人信息。

/t/t"<

for(inti=0;i

{//cout<

}

}

 

voidWorks:

:

namejiansuo()

{cout<

charname[10];inti=0;

cout<<"请输入要查询工人的名字:

"<

cin>>name;

for(i=0;i

if(strcmp(works[i].name,name)==0)

{cout<<"你要查询的信息是:

"<

//cout<

}

}

istream&operator>>(istream&in,Works&w)

{cout<<"输入编号:

";cin>>w.num;

cout<<"输入工人姓名:

";cin>>w.name;

cout<<"输入工人年龄:

";cin>>w.age;

returnin;

}

 

ostream&operator<<(ostream&out,Works&w)

{out<<"编号:

"<

out<<"姓名:

"<

out<<"年龄:

"<

out<

returnout;

}

 

intmain()

{cout<

cout<<"\t\t\t|-------------------------------|\n";

cout<<"\t\t\t||\n";

cout<<"\t\t\t|欢迎使用职工信息表管理系统|\n";

cout<<"\t\t\t||\n";

cout<<"\t\t\t|-------------------------------|\n";

cout<

cout<<"\t\t\t+------------------------------+\n";

cout<<"\t\t\t|管理教师信息请按1|\n";

cout<<"\t\t\t|管理工人信息请按2|\n";

cout<<"\t\t\t|退出请按0|\n";

cout<<"\t\t\t+------------------------------+\n";

intchoice;Teachert;Worksw;

cout<<"请输入你的选择:

\n";

cin>>choice;

switch(choice)

{case0:

break;

case1:

t.record();

break;

case2:

w.record();

break;

}

intx;

while

(1)

{x=t.zhucaidan();

if(x==0)

{cout<<"谢谢使用!

"<

break;

}

else

switch(x)

{case1:

t.average_age();

cout<<"请按回车键返回主菜单..."<

getchar();getchar();

break;

case2:

t.chaxun();

cout<<"请按回车键返回主菜单..."<

getchar();getchar();

break;

case3:

t.xichaxun();

cout<<"请按回车键返回主菜单..."<

getchar();getchar();

break;

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

当前位置:首页 > 高等教育 > 农学

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

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