求c++程序。要求300行以上,
要有4个以上菜单功能模块选择,每个菜单解决一个问题,每个菜单功能含有不同类,构造函数定义及使用,拷贝构造函数,至少有一个菜单功能模块含有友元函数,多重继承,虚基类,虚函数...
要有4个以上菜单功能模块选择,每个菜单解决一个问题,每个菜单功能含有不同类,构造函数定义及使用,拷贝构造函数,至少有一个菜单功能模块含有友元函数,多重继承,虚基类,虚函数或抽象类的应用
展开
1个回答
展开全部
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
const int N=7;
class teacher
{
public:
void set(int i); //录入信息
void add(teacher p); //增加资料
void modification(); //修改资料
void expurgate(); //删除资料
int checkout(int n,int age1,string courseform1); //查找资料
void show(); //输出该档案
int fanhui(int a); //返回一数判断是否是所要选的档案
private:
string name;
int number; //教工号
char sex;
int age;
int comeworktime; //参加工作时间
string call; //职称
string courseform; //课程组成
};
void teacher::set(int i) //录入信息
{
cout<<" 录入档案 "<<i<<":"<<endl;
cout<<"输入教师的教工号:";
cin>>number;
fflush(stdin);
cout<<"输入教师姓名:";
cin>>name;
fflush(stdin);
cout<<"输入教师姓别:";
cin>>sex;
fflush(stdin);
cout<<"输入教师职称:";
cin>>call;
fflush(stdin);
cout<<"输入教师年龄:";
cin>>age;
fflush(stdin);
cout<<"输入教师参加工作时间:";
cin>>comeworktime;
fflush(stdin);
cout<<"输入教师课程组成:";
cin>>courseform;
fflush(stdin);
cout<<" 档案"<<i<<" 录入结束"<<endl;
}
void teacher::add(teacher p) //增加信息
{
cout<<"输入新增教师档案"<<endl;
p.set(N-4);
}
void teacher::expurgate() //删除信息
{
name="0";
number=0;
sex='\0';
age=0;
comeworktime=0;
call="0";
courseform="0";
cout<<"删除教师信息成功"<<endl;
}
int teacher::checkout(int n,int age1,string courseform1) //查找信息
{
int p;
switch(n)
{
case 1:
if(age==age1)
p=1;
else
p=0;
break;
case 2:
if(courseform==courseform1)
p=1;
else
p=0;
break;
}
return p;
}
void teacher::show() //输出信息
{
cout<<"输出一档案**********"<<endl;
cout<<setiosflags(ios_base::left)
<<setw(16)<<"教工号"<<setw(16)<<number<<endl
<<setw(16)<<"姓名"<<setw(16)<<name<<endl
<<setw(16)<<"姓别"<<setw(16)<<sex<<endl
<<setw(16)<<"职称"<<setw(16)<<call<<endl
<<setw(16)<<"年龄"<<setw(16)<<age<<endl
<<setw(16)<<"参加工作时间"<<setw(16)<<comeworktime<<endl
<<setw(16)<<"课程组成"<<setw(16)<<courseform<<endl
<<resetiosflags(ios_base::left);
cout<<"**********输出结束"<<endl;
}
void teacher::modification() //修改信息
{
int n,renumber,recomeworktime,reage,flag=1;
string rename,recall,recourseform;
char resex;
do
{
cout<<" ***子菜单:修改资料***"<<endl
<<" 修改哪项信息?"<<endl
<<" 1(教工号) 2(姓名) 3(姓别) 4(职称) 5(年龄) 6(参加工作时间) 7(课程组成) 8(退出)"<<endl
<<" 输入数字1-8进行修改或退出:";
cin>>n;
fflush(stdin);
if(n<9&&n>0)
switch(n)
{
case 1:
cout<<"输入正确的教工号:";
cin>>renumber;
fflush(stdin);
number=renumber;
cout<<"教工号修改成功"<<endl;
break;
case 2:
cout<<"输入正确的姓名:";
cin>>rename;
fflush(stdin);
name=rename;
cout<<"姓名修改成功"<<endl;
break;
case 3:
cout<<"输入正确的姓别:";
cin>>resex;
fflush(stdin);
sex=resex;
cout<<"姓别修改成功"<<endl;
break;
case 4:
cout<<"输入正确的职称:";
cin>>recall;
fflush(stdin);
call=recall;
cout<<"职称修改成功"<<endl;
break;
case 5:
cout<<"输入正确的年龄:";
cin>>reage;
fflush(stdin);
age=reage;
cout<<"年龄修改成功"<<endl;
break;
case 6:
cout<<"输入正确的参加工作时间:";
cin>>recomeworktime;
fflush(stdin);
comeworktime=recomeworktime;
cout<<"参加工作时间修改成功"<<endl;
break;
case 7:
cout<<"输入正确的课程组成:";
cin>>recourseform;
fflush(stdin);
courseform=recourseform;
cout<<"课程组成修改成功"<<endl;
break;
case 8:
cout<<"退出到主菜单"<<endl;
flag=0;
break;
}
else
{
cout<<"输入的数字不在1-8之间,请重新输入."<<endl;
flag=0;
}
}while(flag!=0);
}
int teacher::fanhui(int a)
{
if(a==number) return 1;
else return 0;
}
void main()
{
int n,m=0,a,i,flag=1;
teacher p[N],pt;
int age1=0;
string courseform1="0";
cout<<"首先输入教师信息"<<endl;
for(i=0;i<N-5;i++)
p[i].set(i+1);
do
{
cout<<" ***************"<<endl
<<" 主菜单"<<endl
<<" ***************"<<endl
<<"(1)修改资料(2)增加资料(3)删除资料(4)显示资料(5)根据工龄或课程组成查找并显示"
<<"(6)退出"<<endl
<<"然后选择1-5进行操作:";
cin>>n;
fflush(stdin);
switch(n)
{
case 1:
cout<<"输入要修改的教师的教工号:";
cin>>a;
fflush(stdin);
for(i=0;i<N-5;i++)
{
if(p[i].fanhui(a)) p[i].modification();
}
break;
case 2:
pt.add(p[N-5+m]);
m++;
break;
case 3:
cout<<"输入要删除的教师的教工号:";
cin>>a;
fflush(stdin);
for(i=0;i<N-5;i++)
{
if(p[i].fanhui(a)) p[i].expurgate();
}
break;
case 4:
cout<<"输入要显示的教师的教工号:";
cin>>a;
fflush(stdin);
for(i=0;i<N-5;i++)
{
if(p[i].fanhui(a)) p[i].show();
}
break;
case 5:
cout<<" ***子菜单:查找资料***"<<endl
<<"(1)按教工年龄查找 (2)按担任课程组成查找 "<<endl
<<"输入1-2:";
cin>>n;
fflush(stdin);
if(n==1)
{
cout<<"输入教工年龄:";
cin>>age1;
fflush(stdin);
}
else if(n==2)
{
cout<<"输入担任课程组成:";
cin>>courseform1;
fflush(stdin);
}
for(i=0;i<N-5;i++)
if(p[i].checkout(n,age1,courseform1))
{
cout<<"已查找到"<<endl;
p[i].show();
}
break;
case 6:
flag=0;
break;
default:
cout<<"输入错误,不在1-5之间"<<endl;
flag=0;
break;
}
}while(flag!=0);
cout<<" !!!程序运行结束!!!"<<endl;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询