求c++程序。要求300行以上,

要有4个以上菜单功能模块选择,每个菜单解决一个问题,每个菜单功能含有不同类,构造函数定义及使用,拷贝构造函数,至少有一个菜单功能模块含有友元函数,多重继承,虚基类,虚函数... 要有4个以上菜单功能模块选择,每个菜单解决一个问题,每个菜单功能含有不同类,构造函数定义及使用,拷贝构造函数,至少有一个菜单功能模块含有友元函数,多重继承,虚基类,虚函数或抽象类的应用 展开
 我来答
Mexico卡卡
推荐于2018-03-23 · TA获得超过1万个赞
知道大有可为答主
回答量:1.3万
采纳率:98%
帮助的人:1895万
展开全部
#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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式