第8题 职工信息表 报告
更新时间:2023-08-25 18:02:01 阅读量: 教育文库 文档下载
- 第8题 《红楼梦》中推荐度:
- 相关推荐
课 程 设 计 报 告
课程设计名称: 从职工信息表 系 别: 3 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 汤亮
开课时间:
一、课程设计目的 (宋体四号加粗)
**************************************************
二、课程设计要求 (宋体四号加粗)
**************************************************
三、课程设计内容 (宋体四号加粗)
**************************************************
四、课程设计概要设计 (宋体四号加粗)
**************************************************
五、课程设计详细设计与实现 (宋体四号加粗)
**************************************************
六、源代码与注释 (宋体四号加粗)
**************************************************
七、总结 (宋体四号加粗)
***************************************************
一、课程设计目的
根据课程讲内容,自主作相应的练习,消化自己所学的内容,同时也培养
自己综合运用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<iostream.h>、#include<fstream.h>、#include<iomanip.h>”。
2.设计一个雇员虚基类guyuan,并派生出教师Teacher工人Works两个类,同时在这两个类里分别添加数据成员和成员函数,成员函数包括录入、添加、查询、删除、显示、主函数、<<及>>的重载函数。
3.各函数的具体实现:(由于教师类与工人类功能及数据成员几乎都相同,所以在这里只介绍一下教师类) (1)录入函数
可以创建一个txt文件。并向这个文件中输出10个教师的信息,然后再从文件中将这10个教师的信息录入到教师数组10个对象中。 (2)主菜单函数
输出主菜单界面信息,返回一个菜单选项的值。 (3)添加函数
输入要添加教师的信息并返回主菜单。 (4)删除函数
输入要删除教师的编号,根据编号定位到数组的这个同学,将此后的教师
的编号依次向前移一个。 (5)按系查询函数
输入要查询的教师的系别,然后输出该教师的信息。 (6)显示函数
用一个循环和插入重载函数,依次将对象输出。 (7)求平均年龄函数
用循环将各元素的年龄加起来,然后除以总人数。 4.主函数
通过菜单选项来调用各函数,菜单可以用swich语句实现。 六、源代码与注释
#include <iostream> #include<fstream> #include <string> #include <iomanip> using namespace std;
static int sum=0; //教师总数 static int sum1=0; //工人总数 class Guyuan {public:
char num[20]; char name[20]; int age;
}; //教师类
class Teacher:virtual public Guyuan//继承虚基类 { public:
char xi[5];
int zhucaidan();//主菜单函数 };
Teacher teacher[20];//全局对象数组
void record();//录入函数 void add();//添加函数 void chaxun();//查询函数 void del();//删除函数
float average_age();//平均年龄函数 void xichaxun();//按系查询函数 void xianshi();//显示全部教师函数 void namejiansuo();//按姓名检索函数
friend ostream& operator<<(ostream&,Teacher&);重载<< friend istream& operator>>(istream&,Teacher&);重载<<
//主菜单定义
int Teacher::zhucaidan() { }
//定义录入函数 void Teacher::record()
{ ofstream outfile("教师信息.txt",ios::out);//向文件输出
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<<"请输入您的选择:"; int choice; cin>>choice; return (choice);
char c;
cout<<"请输入教师信息,以#结束:"<<endl;
while(c!='#') { Cout<<
输
入
教
师
编
号
";cin>>teacher[sum].num;outfile<<setw(5)<<teacher[sum].num;
cout<<"
输
入
教
师
姓
名
";cin>>teacher[sum].name;outfile<<setw(10)<<teacher[sum].name;
cout<<"
输
入
教
师
年
龄
";cin>>teacher[sum].age;outfile<<setw(10)<<teacher[sum].age;
cout<<"
输
入
教
师
系
别
";cin>>teacher[sum].xi;outfile<<setw(10)<<teacher[sum].xi<<endl; cout<<"若想要结束输入请按#:";cin>>c; sum++; cout<<endl; }
cout<<"输入信息结束!"<<endl<<endl<<endl<<endl<<endl;
ifstream infile("教师信息.txt",ios::in);
for(int i=0;i<sum;i++)//从文件向数组读入 {infile>>teacher[sum].num; infile>>teacher[sum].name; infile>>teacher[sum].age; infile>>teacher[sum].xi;
:
:
:
:
} }
//添加一个教师信息 void Teacher::add()
{ cout<<endl<<endl<<endl; }
//查询教师信息 void Teacher::chaxun() {cout<<endl<<endl<<endl; char num[20]; int i=0;
cout<<"请输入要查询教师的编号:"<<endl; cin>>num; for(i=0;i<=sum;i++) }
cout<<"输入教师编号:";cin>>teacher[sum].num; cout<<"输入教师姓名:";cin>>teacher[sum].name; cout<<"输入教师年龄:";cin>>teacher[sum].age; cout<<"输入教师系别:";cin>>teacher[sum].xi; sum++;
if(strcmp(teacher[i].num,num)==0) { cout<<"你要查询的信息是:"<<endl; }
cout<<teacher[i];
//删除教师信息 void Teacher::del()
{ cout<<endl<<endl<<endl;
char num1[20];int j;
cout<<"请输入您要删除的教师的编号:"; cin>>num1;
for(int i=0;i<=sum;i++)
if(strcmp(teacher[i].num,num1)==0) {j=i;}
for(;j<sum;j++) {teacher[j]=teacher[j+1]; } sum--;
cout<<"你要删除的信息已经删除成功!"<<endl; }
float Teacher::average_age() {cout<<endl<<endl<<endl; float ave; float he=0; for(int i=0;i<=sum;i++) {he=he+teacher[i].age; }
ave=he/sum;
cout<<"所有教师年龄的平均数为:"<<endl; cout<<ave<<endl;
return ave; } }
//按系输出教师信息 void Teacher::xichaxun() {cout<<endl<<endl<<endl; char xi[5]; int i=0;
cout<<"请输入要查询教师的系别:"<<endl; cin>>xi;
for(i=0;i<=sum;i++) }
//显示函数定义 void Teacher::xianshi()
{cout<<"。。。。。。。。。。。。全部教师信息。。。。。。。。。。。/t/t"<<endl; for(int i=0;i<sum;i++) {cout<<teacher[i]; }
cout<<"共有教师人数:"<<sum<<endl; }
if(strcmp(teacher[i].xi,xi)==0)
{ cout<<"你要查询的信息是:"<<endl; }
else cout<<"您要查询的教师不存在!"<<endl; cout<<teacher[i];
//按姓名检索函数定义 void Teacher::namejiansuo() {cout<<endl<<endl<<endl; char name[10]; int i=0;
cout<<"请输入要查询教师的名字:"<<endl; cin>>name; for(i=0;i<sum;i++) } //重载>>
istream &operator>>(istream &in,Teacher &t) { cout<<"输入教师编号:";cin>>t.num;
cout<<"输入教师姓名:";cin>>teacher[sum].name; cout<<"输入教师年龄:";cin>>teacher[sum].age; if(strcmp(teacher[i].name,name)==0) { cout<<"你要查询的信息是:"<<endl; }
cout<<teacher[i];
return in; } //
ostream &operator<<(ostream &out,Teacher &t) { cout<<"编号:"<<t.num<<endl;
}
cout<<"姓名:"<<http://www.77cn.com.cn<<endl; cout<<"年龄:"<<t.age<<endl; cout<<"系别:"<<t.xi<<endl; cout<<endl<<endl; return out;
class Works:virtual public Guyuan { public:
void record(); void add(); void chaxun(); void del(); float average_age(); void xichaxun(); void xianshi(); void namejiansuo();
friend ostream& operator<<(ostream&,Works&);
friend istream& operator>>(istream&,Works&);
}works[10]; void Works::record()
{ ofstream outfile("工人信息.txt",ios::out); char c;
cout<<"请输入工人信息,以#结束:"<<endl;
while(c!='#') { cout<<"
输
入
工
人
编
号
";cin>>works[sum1].num;outfile<<setw(5)<<works[sum1].num;
cout<<"
输
入
工
人
姓
名
";cin>>works[sum1].name;outfile<<setw(10)<<works[sum1].name;
cout<<"
输
入
工
人
年
龄
";cin>>works[sum1].age;outfile<<setw(10)<<works[sum1].age; cout<<"若想要结束输入请按#:";cin>>c;cout<<endl; sum1++; cout<<endl; }
cout<<"输入信息结束!"<<endl<<endl<<endl<<endl<<endl;
ifstream infile("工人信息.txt",ios::in); for(int i=0;i<sum1;i++)
:
:
:
{infile>>works[sum1].num; infile>>works[sum1].name; infile>>works[sum1].age; } }
//添加一个工人信息 void Works::add()
{ cout<<endl<<endl<<endl; }
//查询工人信息 void Works::chaxun() {cout<<endl<<endl<<endl; char num[20]; int i=0;
cout<<"请输入要查询工人的编号:"<<endl;
cout<<"输入工人编号:";cin>>works[sum1].num; cout<<"输入工人姓名:";cin>>works[sum1].name; cout<<"输入工人年龄:";cin>>works[sum1].age; sum1++;
cin>>num; for(i=0;i<sum1;i++)
if(works[i].num==num)
{ cout<<"你要查询的信息是:"<<endl;
// cout<<works[i]; }
//删除工人信息 void Works::del()
{ cout<<endl<<endl<<endl;
char num1[20];int j;
cout<<"请输入您要删除的工人的编号:"; cin>>num1;
for(int i=0;i<sum1;i++)
if(strcmp(works[i].num,num1)==1) {j=i;} }
for(;j<sum;j++) {works[j]=works[j+1]; }
cout<<"你要删除的信息已经删除成功!"<<endl;
}
float Works::average_age() {cout<<endl<<endl<<endl; float ave; float he=0; for(int i=0;i<sum;i++) {he=he+works[i].age; }
ave=he/sum1;
cout<<"所有工人年龄的平均数为:"<<endl; cout<<ave<<endl; return ave; }
void Works::xianshi()
{cout<<"。。。。。。。。。。。。全部工人信息。。。。。。。。。。。/t/t"<<endl; for(int i=0;i<sum;i++) {//cout<<works[i]; } }
void Works::namejiansuo() {cout<<endl<<endl<<endl; char name[10]; int i=0;
cout<<"请输入要查询工人的名字:"<<endl; cin>>name; for(i=0;i<sum;i++)
if(strcmp(works[i].name,name)==0) { cout<<"你要查询的信息是:"<<endl;
// cout<<works[i]; }
istream &operator>>(istream &in,Works &w) { cout<<"输入编号:";cin>>w.num;
cout<<"输入工人姓名:";cin>>http://www.77cn.com.cn; cout<<"输入工人年龄:";cin>>w.age; }
return in; }
ostream &operator<<(ostream &out,Works &w) { out<<"编号:"<<w.num<<endl;
out<<"姓名:"<<http://www.77cn.com.cn<<endl;
正在阅读:
第8题 职工信息表 报告08-25
新员工班组级安全培训教材03-18
川崎液压泵型号介绍08-15
宁夏育才中学2019届高三上学期第一次月考化学试卷(含答案)03-17
3-关于进一步加强本市建筑起重机械监督管理的通知(沪建建管200905-05
2018年中国氯碱市场调研分析与报告目录09-26
小学二年级语文《纸船和风筝》教学反思04-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 职工
- 报告
- 信息
- 2018国企面试技巧:面试人际“棘手”难题如何巧妙处理
- 2012年陕西省高考英语模拟试题及答案
- 浅析城市轨道交通行车事故
- 牛顿插值法C语言程序123
- 新视野读写教程第三册教案Unit 1
- 小学六年级作文题目集锦
- 东梁村小学教材征订与管理制度
- PEP五年级下Unit5_Look_at_the_monkeys_B_read_and_write
- 玻璃纤维编织工艺现状
- 康明斯CM570发动机电控系统电路图
- 【优质文档】一般将来时一般将来时变否定句一般疑问句特殊疑问句转化
- 当代戏剧
- 中国工商银行协议样张
- An Analysis On The Character Of Hamlet对哈姆雷特性格分析英文版
- Flash电子相册制作
- 农业部我国棉花产业面临三大发展机遇
- 2017-2021中国移动支付行业市场发展预测及投资战略咨询(目录)
- 2013新课标Ⅱ卷高考数学文科试题及解析
- 俄罗斯国情文化习俗特点(2)
- 尔雅公选课《科学启蒙》习题答案