第8题 职工信息表 报告

更新时间:2023-08-25 18:02:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课 程 设 计 报 告

课程设计名称: 从职工信息表 系 别: 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;

本文来源:https://www.bwwdw.com/article/z4ei.html

Top