#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
char ch;
int a=0;
int b=0;
class Student
{
public:
Student(){age=0;};
string getname()
{
return name;
}
string getnum()
{
return number;
}
string getsex()
{
return sex;
}
virtual int getid()=0;
virtual void sr()=0;
virtual void display()=0;
protected:
char name[8];
char sex[5];
int age;
char number[8];
int cj;
int id;
};
class Bstudent:public Student
{
public:
Bstudent():Student()
{
id=0;
}
void sr()
{
cin>>number>>name>>sex>>age>>subject>>cj;
}
void display()
{
cout<<setiosflags(ios::left)<<"本科生"<<"\t"<<number<<"\t"<<name<<"\t"<<sex<<"\t"<<age<<"\t"<<subject<<"\t"<<cj<<"\t"<<endl;
}
int getid()
{
return id;
}
protected:
char subject[8];
int id;
};
class Gradestudent:public Student
{
public:
Gradestudent():Student()
{
id=1;
}
void sr()
{
cin>>number>>name>>sex>>age>>teacher>>cj;
}
void display()
{
cout<<setiosflags(ios::left)<<"研究生"<<"\t"<<number<<"\t"<<name<<"\t"<<sex<<"\t"<<age<<"\t"<<teacher<<"\t"<<cj<<"\t"<<endl;
}
int getid()
{
return id;
}
protected:
char teacher[8];
int id;
};
void input()
{
Bstudent bin;
Gradestudent gin;
ofstream outfile("xuesheng.dat",ios::trunc|ios::binary);
if(!outfile)
{
cout<<"文件无法打开!"<<endl;
return;
}
cout<<"************************************输入数据************************************";
cout<<endl;
cout<<" 1.输入本科生数据 "<<endl;
cout<<" 2.输入研究生数据 "<<endl;
cout<<" 0.返回 "<<endl;
cout<<endl;
cout<<"********************************************************************************"<<endl;
cout<<"输入选择:";
int ch1;
cin>>ch1;
switch(ch1)
{
case 1:{
cout<<"输入人数:";
cin>>a;
cout<<"输入本科生信息:"<<endl;
cout<<setiosflags(ios::left)<<setw(8)<<setfill(' ')<<"学号"<<setw(8)<<setfill(' ')<<"姓名"<<setw(8)<<setfill(' ')<<"性别"<<setw(8)<<setfill(' ')<<"年龄"<<setw(8)<<setfill(' ')<<"专业"<<setw(8)<<setfill(' ')<<"成绩"<<endl;
for (int i=0;i<a;i++)
{
bin.sr();
outfile.write((char*)&bin,sizeof(bin));
}
cout<<"输入结束!"<<endl;
}
break;
case 2:{
cout<<"输入人数:";
cin>>b;
cout<<"输入研究生信息:"<<endl;
cout<<setiosflags(ios::left)<<setw(8)<<setfill(' ')<<"学号"<<setw(8)<<setfill(' ')<<"姓名"<<setw(8)<<setfill(' ')<<"性别"<<setw(8)<<setfill(' ')<<"年龄"<<setw(8)<<setfill(' ')<<"导师"<<setw(8)<<setfill(' ')<<"成绩"<<endl;
for (int i=0;i<b;i++)
{
gin.sr();
outfile.write((char*)&gin,sizeof(gin));
}
cout<<"输入结束!"<<endl;
}
break;
case 0:break;
}
outfile.close();
}
void output()
{
Bstudent bout;
Gradestudent gout;
ifstream infile("xuesheng.dat",ios::binary);
if (!infile)
{
cout<<"文件无法打开!"<<endl;
return;
}
cout<<"************************************输出数据************************************";
cout<<endl;
cout<<" 1.输出所有信息 "<<endl;
cout<<" 2.输出本科生数据 "<<endl;
cout<<" 2.输出研究生数据 "<<endl;
cout<<" 0.返回 "<<endl;
cout<<endl;
cout<<"********************************************************************************"<<endl;
cout<<"输入选择:";
int ch2;
cin>>ch2;
switch(ch2)
{
case 1:{
cout<<"输出所有学生信息:"<<endl;
cout<<setiosflags(ios::left)<<setw(8)<<setfill(' ')<<"年级"<<setw(8)<<setfill(' ')<<"学号"<<setw(8)<<setfill(' ')<<"姓名"<<setw(8)<<setfill(' ')<<"性别"<<"年龄 "<<setw(8)<<setfill(' ')<<"专业导师"<<setw(8)<<setfill(' ')<<" 成绩"<<endl;
infile.read((char*)&bout,sizeof(bout));
while(infile)
{
bout.display();
gout.display();
infile.read((char*)&bout,sizeof(bout));
}
}
break;
case 2:{
cout<<"输出本科生信息:"<<endl;
cout<<setiosflags(ios::left)<<setw(8)<<setfill(' ')<<"年级"<<setw(8)<<setfill(' ')<<"学号"<<setw(8)<<setfill(' ')<<"姓名"<<setw(8)<<setfill(' ')<<"性别"<<setw(8)<<setfill(' ')<<"年龄"<<setw(8)<<setfill(' ')<<"专业"<<setw(8)<<setfill(' ')<<"成绩"<<endl;
infile.read((char*)&bout,sizeof(bout));
while(infile)
{
if(bout.getid()==0)
bout.display();
infile.read((char*)&bout,sizeof(bout));
}
}
break;
case 3:{
cout<<"输出研究生信息:"<<endl;
cout<<setiosflags(ios::left)<<setw(8)<<setfill(' ')<<"年级"<<setw(8)<<setfill(' ')<<"学号"<<setw(8)<<setfill(' ')<<"姓名"<<setw(8)<<setfill(' ')<<"性别"<<setw(8)<<setfill(' ')<<"年龄"<<setw(8)<<setfill(' ')<<"导师"<<setw(8)<<setfill(' ')<<"成绩"<<endl;
infile.read((char*)&gout,sizeof(gout));
while(infile)
{
if(gout.getid()==1)
gout.display();
infile.read((char*)&gout,sizeof(gout));
}
}
break;
case 0:break;
}
infile.close();
}
int main()
{
int chs;
while(1)
{
cout<<"********************************学生信息管理系统********************************";
cout<<endl;
cout<<" 1.输入数据 2.输出数据 3.修改数据 4.查询数据 0.退出系统 "<<endl;
cout<<endl;
cout<<"********************************************************************************"<<endl;
cout<<"请输入选择:";
cin>>chs;
switch(chs)
{
case 1:input();
cout<<"\n你想继续使用吗?(y/n) ";
cin>>ch;
if(ch=='n'||ch=='N')
exit(1);
if(ch=='y'||ch=='Y')
break;
case 2:output();
cout<<"\n你想继续使用吗?(y/n) ";
cin>>ch;
if(ch=='n'||ch=='N')
exit(1);
if(ch=='y'||ch=='Y')
break;
case 0:exit(1);
}
}
return 0;
}