实现功能
1)录入学生信息
:一次进行多人信息录入并在每次学号输入后判断是否该学号已存在。
2)插入学生信息
:先判断学号是否已存在,再进行顺序插入,结束一次仍可继续该功能。
3)浏览学生信息
:将所有新生人数和每人信息显示到屏幕上。
4)删除学生信息
:先询问用户是否需要根据姓名查找该生学号,若是,则根据用户输入的姓名查找相符的所有新生信息,再根据用户所输学号进行删除,否则直接根据用户所输学号进行删除,删除信息保存于备份文件中。若无该生信息则输出提示“无该生信息”。结束一次仍可继续该功能。
5)学生信息搜索
:按学号或姓名搜索,若一种搜索无果,会提示用户是否需要另一种方式搜索,若需要,则直接跳转到另一种查询方式。
6)修改学生信息
:先询问用户是否需要根据姓名查找该生学号,若是,则根据用户输入的姓名查找相符的所有新生信息,再根据用户所输学号进行修改,否则直接根据用户所输学号进行修改,再判断所要修改的学号是否存在,若存在则根据学号进行单项修改,若修改学号,则对修改后的学号进行查重,若已存在该学号,则提示用户并让用户重新输入想要修改成的学号。结束一次仍可继续该功能修改其他新生。
7)学生信息统计
:有性别,专业,和年龄统计。年龄自动计算。结束一次仍可继续该功能。
8)学生信息排序
:按学号从小到大排序,和按英语入学成绩从大到小排序。
9)学生信息保存
:用C++文件流的格式,将进行操作后的新生信息保存到文件中。 学生信息导入:打开程序时自动导入,若原文件中为空,则显示“文件为空”,否则显示“上次保存信息已自动导入”。
实验效果
运行
录入学生信息
插入学生信息
浏览学生信息
(之前保存过一名学生信息,运行时自动导入该生信息)
删除学生信息
其余功能不再展示,可自行复制代码测试
代码
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<iomanip>
#include<cstring>
#include<ctime>
using namespace std;
static int m=0;
template <typename T>
T inspect(T n)//检查输入格式
{
if(cin.fail())
{
cin.clear();cin.sync();
}
cout<<"输入错误,请重新输入"<<endl;
cin>>n;
return n;
}
class student//信息类
{
public:
void set_num(long int num) {this->Num=num;}
void set_name(string name) {this->Name=name;}
void set_sex(string sex) {this->Sex=sex;}
void set_specialty(string specialty) {this->Specialty=specialty;}
void set_year(int year) {this->Year=year;}
void set_month(int month) {this->Month=month;}
void set_day(int day) {this->Day=day;}
void set_score(float score) {this->Score=score;}
void set_address(string address) {this->Address=address;}
void set_age(int age) {this->Age=age;}
void set_next(student *p=NULL) {this->next=p;}
long int get_num() { return Num;}
string get_name() { return Name;}
string get_sex() {return Sex;}
string get_specialty() { return Specialty;}
int get_year() {return Year;}
int get_month() {return Month;}
int get_day() {return Day;}
string get_address() {return Address;}
float get_score() {return Score;}
int get_age() {return Age;}
student *get_next() {return this->next;}
void show();
private:
long int Num;
string Name;
string Sex;
string Specialty;
int Year,Month,Day;
int Age;
string Address;
float Score;
student *next;
};
void student::show()//单人输出
{
cout<<"学号:"<<setfill('0')<<setw(10)<<get_num()<<"\t";
cout<<"姓名:"<<get_name()<<"\t";
cout<<"性别:"<<get_sex()<<"\t";
cout<<"专业:"<<get_specialty()<<"\t";
cout<<"出生日期:";
cout<<get_year()<<"年";
cout<<setfill('0')<<setw(2)<<get_month()<<"月";
cout<<setfill('0')<<setw(2)<<get_day()<<"日";
cout<<"英语成绩:"<<get_score()<<endl;
cout<<"家庭住址:"<<get_address()<<endl;
cout<<"***************************************************************"<<endl;
}
class message:public student//管理类
{
public:
message(){head=NULL;}
~message();
student* find1(long int num);
bool find2(string name);
void add();
void show_();
void charu();
void delete_();
void search();
void revision();
void save();
void rank();
void age_(student *pt);
void tongji();
void read();
private:
student *p1,*p2,*head;
};
message::~message()
{
student *pt;
while(head)
{
pt=head;
head=head->get_next();
delete pt;
}
}
bool message::find2(string name)//按姓名查找
{
student *p3=head;int i=0;
while(p3)
{
if(p3->get_name()==name)
{
p3->show();i=1;
}
p3=p3->get_next();
}
if(i==0) return false;
return true;
}
student* message::find1(long int num)//按学号查找
{
student *p3=head;
while(p3!=NULL)
{
if(num==p3->get_num())
{
return p3;
}
p3=p3->get_next();
}
return p3;
}
void message::add()//批量增加
{ int n,d,year,month,day;//n为添加新生人数,d为判断男女条件
long int num;
string name,specialty,sex,address;
float score;
p2=head;while(p2) {if(!p2->get_next()) break;p2=p2->get_next();}
cout<<"请输入您要添加新生人数:";
cin>>n;while(n<=0)n=inspect(n);
for (int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个学生的信息"<<endl;
cout<<"学号:";
cin>>num;
while(cin.fail()) num=inspect(num);
p1=new student();
while(find1(num))
{
cout<<"该学号已存在,请重新输入"<<endl;
cin>>num;while(cin.fail()) num=inspect(num);
}
p1->set_num(num);
cout<<"姓名:";cin>>name;
p1->set_name(name);
cout<<"性别"<<endl<<"1.男 "<<"2.女"<<endl<<"请选择性别";
cin>>d;
while(d<=0||(d!=1&&d!=2))
d=inspect(d);
if(d==1)
p1->set_sex("男");
else
p1->set_sex("女");
cout<<"专业:";cin>>specialty;
p1->set_specialty(specialty);
cout<<"*****出生日期*****"<<endl<<"年:";cin>>year;
while(year<=0)year=inspect(year);
p1->set_year(year);
cout<<"月:";cin>>month;
while(month<=0||month>12)
month=inspect(month);
p1->set_month(month);
cout<<"日:";cin>>day;
while(day<=0||day>31)
day=inspect(day);
p1->set_day(day);
cout<<"**************"<<endl;
cout<<"英语成绩:";cin>>score;
while(cin.fail())
score=inspect(score);
p1->set_score(score);
cout<<"家庭住址:";cin>>address;
p1->set_address(address);
p1->set_next(NULL);
if(head==NULL) head=p1;
else
p2->set_next(p1);
p2=p1;
p2->set_next(NULL);m++;
}
}
void message::show_()//全部输出
{ if(head==NULL)
{
cout<<"这是一个空列表,请先添加学生信息"<<endl;return;
}
cout<<"共"<<m<<"名学生"<<endl;
p1=head;
while(p1)
{
p1->show();
p1=p1->get_next();
}
}
void message::charu()//插入
{
p1=head;
int d,year,month,day;//d为判断男女和是否继续执行条件
long int num;
float score;
string name,specialty,sex,address;
cout<<"请输入您要插入的新生信息:";
cout<<"学号:";
cin>>num; while(num<=0)num=inspect(num);
while(find1(num))
{
cout<<"该学号已存在,请重新输入"<<endl;
cin>>num;while(cin.fail()) num=inspect(num);
}
student *pt=new student();
pt->set_num(num);
cout<<"姓名:";cin>>name;
pt->set_name(name);
cout<<"性别"<<endl<<"1.男 "<<"2.女"<<endl<<"请选择性别";
cin>>d;
while(d!=1&&d!=2)
d=inspect(d);
if(d==1)
pt->set_sex("男");
else
pt->set_sex("女");
cout<<"专业:";cin>>specialty;
pt->set_specialty(specialty);
cout<<"*****出生日期*****"<<endl<<"年:";cin>>year;
while(year<=0)
year=inspect(year);
pt->set_year(year);
cout<<"月:";cin>>month;
while(month<=0||month>12)
month=inspect(month);
pt->set_month(month);
cout<<"日:";cin>>day;
while(day<=0||day>31)
day=inspect(day);
pt->set_day(day);
cout<<"**************"<<endl;
cout<<"英语成绩:";cin>>score;
while(cin.fail())
score=inspect(score);
pt->set_score(score);
cout<<"家庭住址:";cin>>address;
pt->set_address(address);
pt->set_next(NULL);
++m;
if(head==NULL)head=pt;
else
{
while(p1->get_num()<num&&p1->get_next()!=NULL)
{p2=p1;p1=p1->get_next();}
if(p1->get_num()>num)
{
pt->set_next(p1);
if(p1==head)
head=pt;
else
p2->set_next(pt);
}
else
{p1->set_next(pt);pt->set_next(NULL);}
}
cout<<"插入成功"<<endl;
cout<<"是否继续插入?"<<endl<<"1.是 2.否"<<endl;
cin>>d;
while(d!=1&&d!=2) d=inspect(d);
if(d==1) charu();
else return;
}
void message::delete_()//删除
{
long int num1;int n;//n为判断是否按姓名查找学号和是否继续执行条件
string name1;p2=head;
if(head==NULL)
{
cout<<"这是一个空列表,请先添加学生信息"<<endl;return;
}
cout<<"******************************************************************"<<endl;
cout<<"*该删除系统按学号删除,若您忘记该生学号可选择根据姓名查找该生学号*"<<endl;
cout<<"******************************************************************"<<endl;
cout<<"请选择是否根据姓名查找该生学号:1.是 2.否"<<endl;
cin>>n;while(n!=1&&n!=2) n=inspect(n);
if(n==1)
{
cout<<"请输入您要删除的学生姓名"<<endl;cin>>name1;
if(!find2(name1)) cout<<"无此人信息"<<endl;
else n=2;
}
if(n==2)
{
cout<<"请输入您要删除的学生学号:"<<endl;
cin>>num1;while(num1<=0) num1=inspect(num1);
p1=find1(num1);
if(p1)
{
p1->show();
ofstream out_("删除文件2.txt",ios::app);
out_<<"学号:"<<p1->get_num()<<" "<<"姓名:"<<p1->get_name()<<" "
<<"性别:"<<p1->get_sex()<<" "
<<"专业:"<<p1->get_specialty()<<" "
<<"出生日期:"<<p1->get_year()<<"年 "
<<setfill('0')<<setw(2)<<p1->get_month()<<"月 "
<<setfill('0')<<setw(2)<<p1->get_day()<<"日 "
<<"英语成绩:"<<p1->get_score()<<endl
<<"家庭地址:"<<p1->get_address()<<endl;
out_.close();
if(p1==head)head=p1->get_next();
else
{
while(p2->get_next()!=p1) p2=p2->get_next();
p2->set_next(p1->get_next());
p2=p1->get_next();
}
delete p1;
cout<<"删除成功"<<endl;
cout<<"***删除文件已保存于删除文件2中***"<<endl;
--m;
}
else cout<<"没有该生信息"<<endl;
}
if(head==NULL)
{ cout<<endl
<<"+++++++++++++++++++++++++++++++++++"<<endl
<<"+++++信息已全部删除,现文件为空+++++"<<endl
<<"+++++++++++++++++++++++++++++++++++"<<endl<<endl;
return;
}
cout<<"是否继续删除?"<<endl<<"1.是 2.否"<<endl;
cin>>n;
while(n!=1&&n!=2)n=inspect(n);
if(n==1) delete_();
else return;
}
void message::search()//查询
{
long int num1;
string name1;
int N=0;//N为判断是否换种查询方式条件
static int n=0;//n为判断查询条件
p1=head;
if(p1==NULL)
{
cout<<"这是一个空列表,请先添加学生信息"<<endl;return;
}
if(n==0)
{cout<<"请选择您要查询的学生信息:"<<"\t"<<"1.学号 2.姓名"<<endl;
cin>>n;while(n!=1&&n!=2) n=inspect(n);
}
if(n==1)
{ cout<<"请输入您要查询的学生学号"<<endl;cin>>num1;while(num1<=0) num1=inspect(num1);
if(find1(num1)) find1(num1)->show();
else
{
cout<<"没有该生信息,是否选择另一种查询方式?"<<endl<<"1.是 2.否"<<endl;
cin>>N;while(N!=1&&N!=2) N=inspect(N);
if(N==1)
{ n=2; search(); }
else
{ n=0; return; }
}
}
else
{
cout<<"请输入您要查询的学生姓名"<<endl;cin>>name1;
if(!find2(name1))
{
cout<<"没有该生信息,是否选择另一种查询方式?"<<endl<<"1.是 2.否"<<endl;
cin>>N; while(N!=1&&N!=2) N=inspect(N);
if(N==1)
{ n=1; search();}
else
{ n=0; return; }
}
} n=0;
}
void message::revision()//修改
{
long int num;
int n,y,year,month,day;//y为修改人数 ,n为修改选项,判断是否继续执行的条件和判断男女选项
string name,specialty,sex,address;//name1修改前姓名
float score;
if(head==NULL)
{
cout<<"这是一个空列表,请先添加学生信息"<<endl;return;
}
cout<<"请输入您要修改的人数:"<<endl;
cin>>y;
while(cin.fail()||y>m)
{ if(y>m)
cout<<"输入人数大于已录入人数,请重新输入"<<endl;
else
cout<<"格式错误,请重新输入"<<endl;
cin.clear();cin.sync();
cin>>y;
}
for(int j=0;j<y;j++)
{ p1=head;p2=head;
cout<<"******************************************************************"<<endl;
cout<<"*该修改系统按学号修改,若您忘记该生学号可选择根据姓名查找该生学号*"<<endl;
cout<<"******************************************************************"<<endl;
cout<<"请选择是否根据姓名查找该生学号:1.是 2.否"<<endl;
cin>>n;while(n!=1&&n!=2) n=inspect(n);
if(n==1)
{
cout<<"请输入您要修改的学生姓名"<<endl;
cin>>name;
if(find2(name))
{
n=2;
}
else
{ j--;cout<<"无此人信息"<<endl; }
}
if(n==2)
{ cout<<"请输入您要修改的学生学号"<<endl;
cin>>num;while(num<=0) num=inspect(num);
p1=find1(num);
if(p1)
{
do{ system("pause");
system("cls");
cout<<"****************"<<endl
<<"*****1.学号*****"<<endl
<<"*****2.姓名*****"<<endl
<<"*****3.性别*****"<<endl
<<"*****4.专业*****"<<endl
<<"*****5.出生日期*"<<endl
<<"*****6.英语成绩*"<<endl
<<"*****7.家庭地址*"<<endl
<<"*****8.返回*****"<<endl
<<"****************"<<endl;
cout<<"请选择您要修改的选项:";
cin>>n;while(cin.fail()) n=inspect(n);
switch(n)
{
case 1: cout<<"请输入您想要修改成的学号:"<<endl;
cin>>num;
while(num<=0)
num=inspect(num);
while(find1(num)){cout<<"该学号已存在,请重新输入"<<endl;cin>>num;}
p1->set_num(num);cout<<"修改成功"<<endl;break;
case 2: cout<<"姓名:";cin>>name;p1->set_name(name);break;
case 3: cout<<"性别"<<endl<<"1.男 2.女"<<endl<<"请选择性别";
cin>>n;
while(n!=1&&n!=2)
n=inspect(n);
if(n==1)
p1->set_sex("男");
else
p1->set_sex("女");break;
case 4: cout<<"专业:";cin>>specialty;p1->set_specialty(specialty);break;
case 5: cout<<"*****出生日期*****"<<endl<<"年:";cin>>year;
while(year<=0)
year=inspect(year);
p1->set_year(year);
cout<<"月:";cin>>month;
while(month<=0||month>12)
month=inspect(month);
p1->set_month(month);
cout<<"日:";cin>>day;
while(day<=0||day>31)
day=inspect(day);
p1->set_day(day);
cout<<"**************"<<endl;break;
case 6: cout<<"英语成绩:";cin>>score;
while(cin.fail())
{ cout<<"输入错误,请重新输入"<<endl;
cin.clear();cin.sync();cin>>score;
}
p1->set_score(score);break;
case 7: cout<<"家庭住址:";cin>>address;
p1->set_address(address);break;
case 8:break;
default:cout<<"选择错误,请重新选择"<<endl;
} if(n!=8)cout<<"修改成功"<<endl;
}while(n!=8);
}
else
{j--;cout<<"没有该生信息"<<endl;}
}
}
cout<<"是否继续修改?"<<endl<<"1.是 2.否"<<endl;
cin>>n;
while(n!=1&&n!=2) n=inspect(n);
if(n==1) revision();
else return;
}
void message::rank()//排序
{ if(head==NULL)
{
cout<<"这是一个空列表,请先添加学生信息"<<endl;
return;
}
int x;//x为排序选项
cout<<"请选择排序方式:1.按英语成绩排序 2.按学号排序"<<endl;
cin>>x; while(x!=1&&x!=2)
x=inspect(x);
student *pend=head,*p0=new student();
p0->set_next(head);
p1=head->get_next();
while(p1)
{ student *pt=p0->get_next();
p2=p0;
if(x==1)
while(pt!=p1&&pt->get_score()>=p1->get_score())
{
pt=pt->get_next();
p2=p2->get_next();
}
else
while(pt!=p1&&pt->get_num()<=p1->get_num())
{
pt=pt->get_next();
p2=p2->get_next();
}
if(pt==p1)
pend=p1;
else
{
pend->set_next(p1->get_next());
p1->set_next(pt);
p2->set_next(p1);
}
p1=pend->get_next();
}
head=p0->get_next();
delete p0;
show_();
}
void message::save()//保存
{
ofstream out[2];
out[0].open("学生信息管理1.txt",ios::out);
out[1].open("学生信息管理2.txt",ios::out);
for(int i=0;i<2;i++)
{
p1=head;
if(i==0)
out[i]<<"共"<<m<<"名学生"<<endl;
if(i==1)
out[i]<<m<<endl;
while(p1!=NULL)
{
if(i==0)
{
out[i]<<"学号:"<<p1->get_num()<<" "<<"姓名:"<<p1->get_name()<<" "
<<"性别:"<<p1->get_sex()<<" "<<"专业:"<<p1->get_specialty()<<" ";
out[i]<<"出生日期:"<<p1->get_year()<<"年"<<" "<<p1->get_month()<<"月"<<" "<<p1->get_day()<<"日"<<" ";
out[i]<<"英语成绩:"<<p1->get_score()<<endl<<"家庭地址:"<<p1->get_address()<<endl;
p1=p1->get_next();
}
if(i==1)
{out[i]<<p1->get_num()<<" "<<p1->get_name()<<" "<<p1->get_sex()<<" "<<p1->get_specialty()<<" ";
out[i]<<p1->get_year()<<" "<<p1->get_month()<<" "<<p1->get_day()<<" ";
out[i]<<p1->get_score()<<endl<<p1->get_address()<<endl;
p1=p1->get_next();
}
}
}
out[0].close();
out[1].close();
cout<<"保存成功"<<endl<<"***信息已保存于学生信息管理1中***"<<endl;
}
void message::age_(student *pt)//计算年龄
{
int age_;
time_t now;
struct tm *timenow;time(&now);timenow=localtime(&now);
age_=(timenow->tm_year+1900)-pt->get_year();
if(pt->get_month() > timenow->tm_mon || (pt->get_month() == timenow->tm_mon && timenow->tm_mday<pt->get_day()))
--age_;
pt->set_age(age_);
}
void message::tongji()//统计
{ int i=0,j=0,k=0,a;p1=head;//i,j,k为各统计人数
if(head==NULL)
cout<<"这是一个空列表,请先添加学生信息"<<endl;
else{
cout<<"请选择统计类型:"<<endl;
cout<<"1.性别"<<"\t"<<"2.专业"<<"\t"<<"3.年龄"<<endl;
cin>>a;
while(a!=1&&a!=2&&a!=3)
{
a=inspect(a);
}
switch(a){
case 1:cout<<"男性:"<<endl;while(p1!=NULL)
{
if(p1->get_sex()=="男")
{ p1->show();++i;}
p1=p1->get_next();
}
cout<<"男性共"<<i<<"人"<<endl<<"***************************************************************"<<endl;p1=head;
cout<<"女性:"<<endl;while(p1!=NULL)
{
if(p1->get_sex()=="女")
{ p1->show();++j;}
p1=p1->get_next();
}
cout<<"女性共"<<j<<"人"<<endl<<"***************************************************************"<<endl;p1=head;
cout<<"性别填写错误:"<<endl;while(p1!=NULL)
{
if(p1->get_sex()!="男"&&p1->get_sex()!="女")
{ p1->show();++k;}
p1=p1->get_next();
}cout<<"有"<<k<<"人性别填写错误"<<endl;break;
case 2:
cout<<"文科:"<<endl;while(p1!=NULL)
{
if(p1->get_specialty()=="文科")
{ p1->show();;++i;}
p1=p1->get_next();
}cout<<"文科共"<<i<<"人"<<endl<<"***************************************************************"<<endl;p1=head;
cout<<"理科:"<<endl;while(p1!=NULL)
{
if(p1->get_specialty()=="理科")
{ p1->show();++j;}
p1=p1->get_next();
}cout<<"理科共"<<j<<"人"<<endl<<"***************************************************************"<<endl;p1=head;
cout<<"专业填写错误:"<<endl;while(p1!=NULL)
{
if(p1->get_specialty()!="文科"&&p1->get_specialty()!="理科")
{ p1->show();++k;}
p1=p1->get_next();
}cout<<"有"<<k<<"人专业填写错误"<<endl;break;
case 3:
cout<<"年龄为16~18:"<<endl;while(p1!=NULL)
{
age_(p1);
if(p1->get_age()>=16&&p1->get_age()<=18)
{ cout<<"年龄:"<<p1->get_age()<<endl;p1->show();++i;}
p1=p1->get_next();
}cout<<"年龄为16~18共"<<i<<"人"<<endl<<"***************************************************************"<<endl;p1=head;
cout<<"年龄为19~21:"<<endl;while(p1!=NULL)
{ age_(p1);
if(p1->get_age()>=19&&p1->get_age()<=21)
{ cout<<"年龄:"<<p1->get_age()<<endl;p1->show();++j;}
p1=p1->get_next();
}cout<<"年龄为19~21共"<<j<<"人"<<endl<<"***************************************************************"<<endl;p1=head;
cout<<"年龄超出统计范围:"<<endl;while(p1!=NULL)
{ age_(p1);
if(p1->get_age()<16||p1->get_age()>21)
{ cout<<"年龄:"<<p1->get_age()<<endl;p1->show();++k;}
p1=p1->get_next();
}cout<<"有"<<k<<"人年龄超出统计范围"<<endl<<"***************************************************************"<<endl;break;
default:cout<<"选择错误"<<endl;
}
}
cout<<"是否继续统计"<<endl<<"1.是 2.否"<<endl;
cin>>a;
while(a!=1&&a!=2) a=inspect(a);
if(a==1) tongji();
else return;
}
void message::read()//读取
{
int year,month,day;
long int num;
string name,specialty,sex,address;
float score;
head=NULL;p2=head;
ifstream in1("学生信息管理2.txt",ios::in);
in1>>m;
if(m==0){ cout<<"*****此为空文件*****"<<endl;return; }
for(int j=0;j<m;j++)
{
p1=new student();
in1>>num>>
name>>sex>>specialty>>year>>month>>day
>>score>>address;
p1->set_num(num);
p1->set_name(name);
p1->set_sex(sex);
p1->set_specialty(specialty);
p1->set_year(year);
p1->set_month(month);
p1->set_day(day);
p1->set_score(score);
p1->set_address(address);p1->set_next(NULL);
if(head==NULL)head=p1;
else
p2->set_next(p1);
p2=p1;
p2->set_next(NULL);
}
in1.close();p2->set_next(NULL);
cout<<"***************************************************************"<<endl
<<"***上次保存信息已自动导入***"<<endl;
}
void menu()//菜单
{
system("date/t");system("time/t");
cout<<"***************************************************************"<<endl;
cout<<"1.录入学生信息"<<endl;
cout<<"2.插入学生信息"<<endl;
cout<<"3.浏览学生信息"<<endl;
cout<<"4.删除学生信息"<<endl;
cout<<"5.学生信息搜索"<<endl;
cout<<"6.修改学生信息"<<endl;
cout<<"7.学生信息统计"<<endl;
cout<<"8.学生信息排序"<<endl;
cout<<"9.学生信息保存"<<endl;
cout<<"0.退出"<<endl;
cout<<"请选择您要使用的功能:"<<endl;
cout<<"***************************************************************"<<endl;
}
int main()
{
message s;s.read();
int i;
do
{ menu();
cin>>i;
while(cin.fail()) i=inspect(i);
system("cls");
switch(i)
{
case 1:cin.sync();s.add();break;
case 2:cin.sync();s.charu();break;
case 3:cin.sync();s.show_();break;
case 4:cin.sync();s.delete_();break;
case 5:cin.sync();s.search();break;
case 6:cin.sync();s.revision();break;
case 7:cin.sync();s.tongji();break;
case 8:cin.sync();s.rank();break;
case 9:cin.sync();s.save();break;
case 0:cout<<"***感谢您的使用***"<<endl;system("pause");return 0;
default:cin.sync();cout<<"选择错误,请重新输入"<<endl;
}
}while(i!=0);
return 0;
}