#include
#include
#include
class stu
{
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
friend void main();
};
void main()
{
cout<<"请选择您需要的操作!"<
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<
do{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout<<"请输入姓名"<
cout<<"请输入数学成绩:"<
cout<<"请输入语文成绩:"<
cout<<"请输入外语成绩:"<
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<
for(int q=0;q{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}
while(c=='y');
break;
}
case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<
for(int j=0;j{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}
while(c=='y');
break;
}
case '1':
{
char name[20];double math,chinese,english;
char c;
do
{
cout<<"请输入您要增加的学生的姓名:"<
cout<<"请输入数学成绩:"<
cout<<"请输入语文成绩:"<
cout<<"请输入外语成绩:"<
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}while(c=='y');
break;
}
case '2':
{
char name[20];bool flag3=0;char c;
do{
cout<<"请输入您要删除的学生姓名:"<
for(int h=0;h{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}while(c=='y');
break;
}
case '3':
{
char name[20];double mat,chin,eng;flag2=0;
char c;
do
{
cout<<"请输入您要修改的学生的姓名:"<
for(int h=0;h{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新的数学成绩:"<
cout<<"请输入新的语文成绩:"<
cout<<"请输入新的外语成绩:"<
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout<<"数据修改成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<
cout<<"想继续修改吗(y/n)"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}while(c=='y');
break;
}
case '6':
{
cout<<"本系统所有学生数据如下:"<
cout<<"管理系统中没有录入数据或者数据已经被删除!"<
cout<
"语文:"<<" "<chinese<<"数学:"<<" "<math
<<"外语:"<<" "<english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<
break;
}
case '7':
{
int t;stu b;
cout<<"本系统所以学生排名如下:"<
t=x;
for(int y=x+1;y{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k{
cout<
"语文:"<<" "<chinese<<"数学:"<<" "<math
<<"外语:"<<" "<english<<"总分:"<<" "<getsum()
<<"平均分:"<<" "<getaver()<
break;
}
case '8':
{
int t;stu b;
cout<<"本系统所以学生语文排名如下:"<
t=x;
for(int y=x+1;y{
if((s[t]->chinese)<(s[y]->chinese))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k{
cout<
"语文:"<<" "<chinese<<"数学:"<<" "<math
<<"外语:"<<" "<english<<"总分:"<<" "<getsum()
<<"平均分:"<<" "<getaver()<
break;
}
case '9':
{
int t;stu b;
cout<<"本系统所以学生数学排名如下:"<
t=x;
for(int y=x+1;y{
if((s[t]->math)<(s[y]->math))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k{
cout<
"语文:"<<" "<chinese<<"数学:"<<" "<math
<<"外语:"<<" "<english<<"总分:"<<" "<getsum()
<<"平均分:"<<" "<getaver()<
break;
}
case 'y':
{
int t;stu b;
cout<<"本系统所以学生英语排名如下:"<
t=x;
for(int y=x+1;y{
if((s[t]->english)<(s[y]->english))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k{
cout<
"语文:"<<" "<chinese<<"数学:"<<" "<math
<<"外语:"<<" "<english<<"总分:"<<" "<getsum()
<<"平均分:"<<" "<getaver()<
}
break;
}
cout<<"您想继续进行其他操作吗?(y/n)"<
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)"<
}while(w=='y');
for(int x=0;x{
delete s[x];
cout<<"delete all members!"<
}
#include
#include
#include
class
stu
{
char
name[20];
double
math,chinese,english,average,sum;
public:
stu()
{
}
stu(char
n[20],double
ma,double
chin,double
eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double
getsum()
{
sum=chinese+english+math;
return
sum;
}
double
getaver()
{
average=getsum()/3;
return
average;
}
friend
void
main();
};
void
main()
{
cout<<"请选择您需要的操作!"<
p;char
w;
stu
*s[50];
ofstream
*file[50];
int
i=0;
int
j=0;
bool
flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<
do{
switch(p)
{
case
'0':
{
char
c;
char
name[20];double
math,chinese,english;
do{
cout<<"请输入姓名"<
cout<<"请输入数学成绩:"<
cout<<"请输入语文成绩:"<
cout<<"请输入外语成绩:"<
file[j]=new
ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<
s[i]=new
stu(name,
math,
chinese,
english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case
'4':
{
double
t;char
c;
do
{
int
flag1=0;
cout<<"请输入你要查询学生的总成绩"<
for(int
q=0;q{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}
while(c=='y');
break;
}
case
'5':
{
char
n[20];int
j=0;char
c;
do{
int
flag=0;
cout<<"请输入你要查询的学生姓名"<
for(int
j=0;j{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}
while(c=='y');
break;
}
case
'1':
{
char
name[20];double
math,chinese,english;
char
c;
do
{
cout<<"请输入您要增加的学生的姓名:"<
cout<<"请输入数学成绩:"<
cout<<"请输入语文成绩:"<
cout<<"请输入外语成绩:"<
file[j]=new
ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<
s[i]=new
stu(name,
math,
chinese,
english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}while(c=='y');
break;
}
case
'2':
{
char
name[20];bool
flag3=0;char
c;
do{
cout<<"请输入您要删除的学生姓名:"<
for(int
h=0;h{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}while(c=='y');
break;
}
case
'3':
{
char
name[20];double
mat,chin,eng;flag2=0;
char
c;
do
{
cout<<"请输入您要修改的学生的姓名:"<
for(int
h=0;h{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新的数学成绩:"<
cout<<"请输入新的语文成绩:"<
cout<<"请输入新的外语成绩:"<
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout<<"数据修改成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<
cout<<"想继续修改吗(y/n)"<
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<
}
}while(c=='y');
break;
}
case
'6':
{
cout<<"本系统所有学生数据如下:"<
cout<<"管理系统中没有录入数据或者数据已经被删除!"<
k=0;k{
cout<
"<name<<
"语文:"<<"
"<chinese<<"数学:"<<"
"<math
<<"外语:"<<"
"<english<<"总分:"<<"
"<<(*s[k]).getsum()
<<"平均分:"<<"
"<<(*s[k]).getaver()<
break;
}
case
'7':
{
int
t;stu
b;
cout<<"本系统所以学生排名如下:"<
x=0;x
t=x;
for(int
y=x+1;y{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int
k=0;k{
cout<
"<name<<
"语文:"<<"
"<chinese<<"数学:"<<"
"<math
<<"外语:"<<"
"<english<<"总分:"<<"
"<getsum()
<<"平均分:"<<"
"<getaver()<
break;
}
case
'8':
{
int
t;stu
b;
cout<<"本系统所以学生语文排名如下:"<
x=0;x
t=x;
for(int
y=x+1;y{
if((s[t]->chinese)<(s[y]->chinese))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int
k=0;k{
cout<
"<name<<
"语文:"<<"
"<chinese<<"数学:"<<"
"<math
<<"外语:"<<"
"<english<<"总分:"<<"
"<getsum()
<<"平均分:"<<"
"<getaver()<
break;
}
case
'9':
{
int
t;stu
b;
cout<<"本系统所以学生数学排名如下:"<
x=0;x
t=x;
for(int
y=x+1;y{
if((s[t]->math)<(s[y]->math))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int
k=0;k{
cout<
"<name<<
"语文:"<<"
"<chinese<<"数学:"<<"
"<math
<<"外语:"<<"
"<english<<"总分:"<<"
"<getsum()
<<"平均分:"<<"
"<getaver()<
break;
}
case
'y':
{
int
t;stu
b;
cout<<"本系统所以学生英语排名如下:"<
x=0;x
t=x;
for(int
y=x+1;y{
if((s[t]->english)<(s[y]->english))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int
k=0;k{
cout<
"<name<<
"语文:"<<"
"<chinese<<"数学:"<<"
"<math
<<"外语:"<<"
"<english<<"总分:"<<"
"<getsum()
<<"平均分:"<<"
"<getaver()<
}
break;
}
cout<<"您想继续进行其他操作吗?(y/n)"<
flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"请输入操作代码(0
录入/4
按总分查询/5
按姓名查询/1
增加人员/2
删除人员/3
修改数据/6
显示所有成员数据/7
按总分排名/8
按语文排名/9按数学排名/y按英语排名)"<
}while(w=='y');
for(int
x=0;x{
delete
s[x];
cout<<"delete
all
members!"<
}
哎,本来想多跟你要点分的,但是看你那么穷,0分,就算了吧,但是我辛辛苦苦写的,你可得给个满意答案啊~~~··
#include
#define
N
50
struct
stu
{
int
num;
char
name[20];
float
score[3];
float
average;
};
int
count=0;
void
display(struct
stu
[]);
struct
stu
input();
void
sort(struct
stu
[]);
void
insert(struct
stu
infm[]);
void
search(struct
stu
infm[]);
void
del(struct
stu
infm[]);
void
main()
{
char
ch;
struct
stu
infm[N];
int
in_int;
do
{
printf("请输入要实现的功能:\n1、录入;2排序;3、显示;4、查找;5、插入;6、删除");
scanf("%d",&in_int);
switch(in_int)
{
case
1:{
do
{
infm[count]=input();
count++;
printf("是否继续录入?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
display(infm);
break;
}
case
2:
{
sort(infm);
break;
}
case
3:
{
display(infm);
break;
}
case
4:
{
search(infm);
break;
}
case
5:
{
insert(infm);
break;
}
case
6:
{
del(infm);
break;
}
default:{
printf("输入错误!");
}
}printf("是否继续?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
}
struct
stu
input()
{
struct
stu
in;
int
i;
printf("请输入学生学号:");
fflush(stdin);
scanf("%d",&in.num);
printf("请输入学生姓名:");
fflush(stdin);
scanf("%s",in.name);
for(i=0;i<3;i++)
{
printf("请输入学生第%d科成绩:",i+1);
fflush(stdin);
scanf("%f",&in.score[i]);
}
in.average=(in.score[0]+in.score[1]+in.score[2])/3;
return
in;
}
void
sort(struct
stu
infm[])
{
int
i,j;
struct
stu
temp;
printf("排序前的学生顺序为:");
display(infm);
for(i=0;i
for(j=i+1;j
if(infm[i].average
temp=infm[i];
infm[i]=infm[j];
infm[j]=temp;
}
}
}
printf("排序后的学生顺序为:");
display(infm);
}
void
display(struct
stu
out[])
{
int
i;
printf("学号\t姓名\t\t平均成绩\n");
for(i=0;i
printf("%d\t%s\t\t%3.1f\n",out[i].num,out[i].name,out[i].average);
}
}
void
search(struct
stu
infm[])
{
int
i,
num;
printf("请输入要查找学生的学号:");
scanf("%d",&num);
for(i=0;i
if(infm[i].num==num)
{
break;
}
}
printf("学号\t姓名\t\t平均成绩\n");
printf("%d\t%s\t%4.1f\t",infm[i].num,infm[i].name,infm[i].average);
}
void
insert(struct
stu
infm[])
{
int
i,j;
struct
stu
temp;
temp=input();
for(i=0;i
if(temp.average>infm[i].average)
{
break;
}
}
for(j=count;j>i;j--)
{
infm[j]=infm[j-1];
}
infm[i]=temp;
count++;
printf("插入后的学生顺序为:\n");
display(infm);
}
void
del(struct
stu
infm[])
{
int
i,j,number;
printf("请输入要删除学生的学号:");
scanf("%d",&number);
for(i=0;i
if(infm[i].num==number)
{
break;
}
}
for(j=i;j
infm[j]=infm[j+1];
}
count--;
printf("删除后的学生顺序为:\n");
display(infm);
}
#include
#include
#include
#include
using namespace std;
struct List
{
string m_Name;
string m_ID;//可能有的学号里有字母,所以用string类型。
short int m_Chinese;
short int m_Match;
short int m_English;
struct List *Next; //指针域。
};
typedef struct List Node;
typedef Node *Link;
//---------------函数声明-------------------
Link Create(Link Head);
Link Search(Link Head);
Link Search_front(Link Head);
void Release(Link Head);
void Display(Link Head);
void Display_One(Link Head);
void Display(Link Head,fstream& ofile);
Link AddInfo(Link Head);
Link DelInfo(Link Head);
Link Modify(Link Head);
void Grade_Stat(Link Head);
Link Sort(Link Head);
//---------------函数实现-------------------
Link Create(Link Head)
{
/*构造一个头节点*/
Head=(Link)new Node;
if(!Head)
{
cout<<"分配内存失败。"<
}
Head->m_Name="";
Head->m_ID="";
Head->m_Chinese=0;
Head->m_Match=0;
Head->m_English=0;
Head->Next=NULL;
return Head;
}
Link Search(Link Head)
{
cout<<" 1.按姓名查询 2.按学号查询 "<
cin>>select;
while(cin.fail())
{
cout<<"请选择正确的菜单项:";
cin.clear();
fflush(stdin);
cin>>select;
}
Link ptr;
ptr=Head;
if(select==1)
{
string name;
cout<<"请输入要查询的姓名:";
cin>>name;
while(ptr!=NULL)
{
if(ptr->m_Name==name)
{
Display_One(ptr);
return ptr;
}
ptr=ptr->Next;
}
cout<<"没找到,怎么办?"<
}
else if(select==2)
{
string ID;
cout<<"请输入要查询的学号:";
cin>>ID;
while(ptr!=NULL)
{
if(ptr->m_ID==ID)
{
Display_One(ptr);
return ptr;
}
ptr=ptr->Next;
}
cout<<"没找到,怎么办?"<
return ptr;
}
Link Search_front(Link Head)
{//返回前驱节点。
cout<<" 1.按姓名删除 2.按学号删除 "<
cin>>select;
while(cin.fail())
{
cout<<"请选择正确的菜单项:";
cin.clear();
fflush(stdin);
cin>>select;
}
Link ptr;
Link front;
ptr=Head->Next;
front=Head;
if(select==1)
{
string name;
cout<<"请输入要删除的姓名:";
cin>>name;
while(ptr!=NULL)
{
if(ptr->m_Name==name)
{
Display_One(ptr);
return front;
}
ptr=ptr->Next;
front=front->Next;
}
cout<<"没找到,怎么办?"<
}
else if(select==2)
{
string ID;
cout<<"请输入要删除的学号:";
cin>>ID;
while(ptr!=NULL)
{
if(ptr->m_ID==ID)
{
Display_One(ptr);
return front;
}
ptr=ptr->Next;
front=front->Next;
}
cout<<"没找到,怎么办?"<
return front;
}
void Release(Link Head)
{
Link ptr;
while(Head!=NULL)
{
ptr=Head;
Head=Head->Next;
delete ptr;
}
}
void Display(Link Head)
{
Link ptr;
ptr=Head->Next;
cout<<"----------------------------------------------------------------------"<
{
cout<
<
<
<
<
}
}
void Display(Link Head,fstream& ofile)
{
Link ptr;
ptr=Head->Next;
ofile<<"----------------------------------------------------------------------"<
{
ofile<
<
<
<
<
}
}
void Display_One(Link Head)
{
Link ptr;
ptr=Head;
cout<<"----------------------------------------------------------------------"<
<
<
<
<
Link AddInfo(Link Head)
{
Link ptr;
ptr=Head;
while(ptr->Next!=NULL)
{
ptr=ptr->Next;
}
Link ptr2;
char again;
do
{
ptr2=(Link)new Node;
if(!ptr2)
{
cout<<"内存分配失败!"<
}
//数据域
string Name,ID;
short int Chinese,Match,English;
cout<<"输入姓名:";
cin>>Name;
cout<
cout<
cout<
cout<
ptr2->m_Name=Name;
ptr2->m_ID=ID;
ptr2->m_Chinese=Chinese;
ptr2->m_Match=Match;
ptr2->m_English=English;
//指针域
ptr2->Next=NULL;//作为尾节点。
ptr->Next=ptr2;//连接入链表。
ptr=ptr2;//将ptr2作为下一次产生的节点的前驱节点.
cout<<"是否继续输入?(Y/N) ";
cin>>again;
}while(again=='Y'||again=='y');
return Head;
}
Link DelInfo(Link Head)
{
Link ptr;
Link ptr2;
ptr=Head;
Link f_ptr;//前驱节点。
f_ptr=Search_front(ptr);
ptr2=f_ptr->Next;
f_ptr->Next=f_ptr->Next->Next;
delete ptr2;
return Head;
}
Link Modify(Link Head)
{
Link ptr;
ptr=Head;
ptr=Search(ptr);
cout<<"修改前信息为:"<
//cout<<"请选择你要修改的选项:A:姓名 B:学号 C:语文成绩 D:数学成绩 E:英语成绩"<
float Chinese,Match,English;
cout<<"输入新姓名:";
cin>>name;
cout<
cout<
cout<
cout<
ptr->m_Name=name;
ptr->m_ID=ID;
ptr->m_Chinese=Chinese;
ptr->m_Match=Match;
ptr->m_English=English;
cout<
return Head;
}
void Grade_Stat(Link Head)
{//成绩统计。
Link ptr;
ptr=Head;
cout<<"请输入你要查询的课程名(chinese|match|english)和一个分数范围[min,max]."<
short int min,max;
int SwitchNum;
cout<<"课程名:";
cin>>name;
cout<
cout<
if(name=="chinese")
SwitchNum=1;
else if(name=="match")
SwitchNum=2;
else if(name=="english")
SwitchNum=3;
else
{
cout<<"请输入一个正确的课程名:"<
}
while(ptr!=NULL)
{
switch(SwitchNum)
{
case 1:
if(ptr->m_Chinese<=max&&ptr->m_Chinese>=min)
Display_One(ptr);
break;
case 2:
if(ptr->m_Match<=max&&ptr->m_Match>=min)
Display_One(ptr);
break;
case 3:
if(ptr->m_English<=max&&ptr->m_English>=min)
Display_One(ptr);
}
}
}
Link Sort(Link Head)
{//我创建的是带头节点的链表。用直接插入法。
cout<<"请输入你想排序的课程名(用中文):";
string course_name;
cin>>course_name;
if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步条件判断非常有价值。
{
cout<<"数据节点数少于2个,不用排序!"<
}
//-----------第二步;
Link ptr;
Link ptr_F;
Link ptr_N;
ptr=Head->Next->Next;
ptr_F=Head;
Head->Next->Next=NULL;//到此,分成了两个链表。
//第三步。
while(ptr)
{
ptr_N=ptr->Next;
ptr_F=Head;//ptr_F的归位。
while(ptr_F->Next)
{
if(course_name=="语文")
{
if(ptr->m_Chinese>ptr_F->Next->m_Chinese)
{
ptr->Next=ptr_F->Next;
ptr_F->Next=ptr;
break;
}//if
else
{
ptr_F=ptr_F->Next;
}
}
if(course_name=="数学")
{
if(ptr->m_Match>ptr_F->Next->m_Match)
{
ptr->Next=ptr_F->Next;
ptr_F->Next=ptr;
break;
}//if
else
{
ptr_F=ptr_F->Next;
}
}
if(course_name=="英语")
{
if(ptr->m_English>ptr_F->Next->m_English)
{
ptr->Next=ptr_F->Next;
ptr_F->Next=ptr;
break;
}//if
else
{
ptr_F=ptr_F->Next;
}
}
}//while(ptr_F->Next)
if(ptr_F->Next==NULL)
{
ptr->Next=ptr_F->Next;
ptr_F->Next=ptr;//表示插到有序链表的最后面了。
}
ptr=ptr_N;//归位,准备下一次排序。
}//while(ptr)
cout<<"从高到低,排序成功!"<
}
//----------主函数----------------------
int main()
{
fstream ofile;
ofile.open("e:\\student.txt",ios_base::out);
if(!ofile)
{
cout<<"文件打开失败。"<
}
Link head=0;
head=Create(head);
while(1)
{
cout<<"*****************************************************"<
int sel;
cin>>sel;
while(cin.fail())
{
cout<<"请选择正确的菜单项:";
cin.clear();
fflush(stdin);
cin>>sel;
}
switch(sel)
{
case 0:
exit(0);
case 1:
head=AddInfo(head);
break;
case 2:
head=Modify(head);
break;
case 3:
head=DelInfo(head);
break;
case 4:
Search(head);
break;
case 5:
Grade_Stat(head);
break;
case 6:
Sort(head);
break;
case 7:
Display(head);//在标准显示器上显示。
Display(head,ofile);//在文件中显示。
break;
default:
break;
}
}
Release(head);
return 0;
}
lz干脆去抢算了