#includeusing namespace std;
class student
{
protected:
int number;
char name[20];
char sex[6];
char place[20];
char nation[6];
char birth[20];
char party[10];
char id[20];
float score[4];
public:
student *next;
student(){ }
~student(){ }
char* getname(){ return name; }
int getnumber(){ return number;}
double getscore(int i) { return score[i];}
float getg(){ return (score[0]+score[1]+score[2]+score[3]+score[4]); }
void input()
{ int e=1;
cout<>number;
cout<>name;
do
{ lable:cout<>sex;
if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0)
{ cout<>place;
cout<>nation;
cout<>birth;
cout<>party;
cout<>id;
cout<>score[0];
cout<>score[1];
cout<>score[2];
cout<>score[3];
cout<>score[4];
e=0;
}
else
{
cout<>number>>name>>sex>>place>>nation>>birth>>party>>id
>>score[0]>>score[1]>>score[2]>>score[3]>>score[4];
is.get();
}
void output()
{
cout
~school(){ delete head; }
void input();
void mend();
void del();
int find(student **p,int num,char *pn="^");
void found();
void show();
void count();
void save();
void begin();
void clear();
char mainmenu();
int getkey(){ return key;}
void setkey(int k){ key=k; }
private:
student *head;
int key;
};
//录入函数
void school::input()
{
student *p,*p2=NULL;
p=head;
int n;
while(p->next)
p=p->next;
while(n)
{
p2=new student;
p2->input();
p->next=p2;
p2->next=NULL;
p=p->next;
school::setkey(1);
cout<>n;
}
}
//子查找函数
int school::find(student **p1,int num,char *pn)
{
student *p;
p=head;
while(p->next)
{
(*p1)=p;
if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) )
return 1;
p=p->next;
}
return 0;
}
//查找函数
void school::found()
{
student *p;
int num=-1,n=9;
char name[20]="^";
do
{
cout<>n;
}while(n<1||n>2);
if(n==1)
{
cout<>num;
}
if(n==2)
{
cout<>name;
}
if(!find(&p,num,name) )
{
coutoutput();
}
//删除函数
void school::del()
{
student *p,*p2;
int num;
cout<>num;
if( !find(&p,num,"^") )
{
coutoutput();
p2=p->next;
p->next=p2->next;
delete p2;
school::setkey(1);
}
//显示函数
void school::show()
{
student *p;
p=head;
while(p->next)
{
(p->next)->output();
p=p->next;
}
}
//修改函数
void school::mend()
{
student *p;
int num=-1,n;
char name[20]="^";
do
{
cout<>n;
}while(n<1||n>2);
if(n==1)
{
cout<>num;
}
if(n==2)
{
cout<>name;
}
if( !find(&p,num,name) )
{
coutoutput();
(p->next)->input();
school::setkey(1);
}
//保存函数
void school::save()
{ student *p;
p=head;
ofstream os("student.txt",ios::out);
if (school::getkey()==1)
{
while(p->next)
{
(p->next)->output(os);
p=p->next;
}
}
cout<>num;
is.seekg(t);
if(num<0)
{
is.close();
return;
}
p2=new student;
p2->input(is);
p->next=p2;
p2->next=NULL;
p=p->next;
}
}
//清空函数
void school::clear()
{
student *p,*p2;
p=head->next;
while( p )
{
p2=p;
p=p->next;
delete p2;
}
}
//统计函数
void school::count()
{
student *p;
p=head;
int n=0;
double g[5]={0,0,0,0,0};
float j[5]={0,0,0,0,0};
while(p->next)
{
p=p->next;
n++;
for(int i=0;i<5;i++)
{
g[i]=g[i]+( p->getscore(i) );
(p->getscore(i) )>=60? j[i]++ : 0 ;
}
}
cout<>n;
return n[0];
}
//主函数
void main()
{school pp;
int k=1;
char n;
pp.begin();
while(k==1)
{n=pp.mainmenu();
switch(n)
{case 1:pp.input(); break;
case 2:pp.show(); break;
case 3:pp.found(); break;
case 4:pp.del(); break;
case 5:pp.mend(); break;
case 6:pp.count(); break;
case 7:pp.save(); break;
case 0:
if(pp.getkey()==1)
{cout<>k;
if(k==1)
pp.save();
}
pp.clear();
k=0;
break;
}
}
}
//源程序结束