📄 kaohe.cpp
字号:
system("cls");
return (phead);
}
//--------------高数排名---------------
void range1(struct Student *phead)
{
int i;
int j;
int n1=0;
struct Student *pnew[34];
struct Student*p;
struct Student*temp;
p=phead;
for(i=0; i<34; i++)
{
if(p != NULL)
{
pnew[i]=p;
p=p->next;
n1++;
}
}
for(i=0; i<n1-1; i++)
{
for(j=i+1; j<n1; j++)
{
if(pnew[j]->math < pnew[i]->math)
{
temp=pnew[j];
pnew[j]=pnew[i];
pnew[i]=temp;
}
}
}
printf("高数成绩排名如下:\n\n");
printf("\n排名 姓名 高数成绩\n\n");
for(i=0; i<n1; i++)
{
printf(" %d %s %4d\n", i+1, pnew[i]->name, pnew[i]->math);
}
}
//---------------英语排名------------
void range2(struct Student *phead)
{
int i;
int j;
int n1=0;
struct Student *pnew[34];
struct Student*p;
struct Student*temp;
p=phead;
for(i=0; i<34; i++)
{
if(p != NULL)
{
pnew[i]=p;
p=p->next;
n1++;
}
}
for(i=0; i<n1-1; i++)
{
for(j=i+1; j<n1; j++)
{
if(pnew[j]->English < pnew[i]->English)
{
temp=pnew[j];
pnew[j]=pnew[i];
pnew[i]=temp;
}
}
}
printf("英语成绩排名如下:\n\n");
printf("\n排名 姓名 英语成绩\n\n");
for(i=0; i<n1; i++)
{
printf(" %d %s %5d\n", i+1, pnew[i]->name, pnew[i]->English);
}
}
//=============C语言排名
void range3(struct Student *phead)
{
int i;
int j;
int n1=0;
struct Student *pnew[34];
struct Student*p;
struct Student*temp;
p=phead;
for(i=0; i<34; i++)
{
if(p != NULL)
{
pnew[i]=p;
p=p->next;
n1++;
}
}
for(i=0; i<n1-1; i++)
{
for(j=i+1; j<n1; j++)
{
if(pnew[j]->c < pnew[i]->c)
{
temp=pnew[j];
pnew[j]=pnew[i];
pnew[i]=temp;
}
}
}
printf("c成绩排名如下:\n\n");
printf("\n排名 姓名 c成绩\n\n");
for(i=0; i<n1; i++)
{
printf(" %d %s %5d\n", i+1, pnew[i]->name, pnew[i]->c);
}
}
//---------------线代排名------------------
void range4(struct Student *phead)
{
int i;
int j;
int n1=0;
struct Student *pnew[34];
struct Student*p;
struct Student*temp;
p=phead;
for(i=0; i<34; i++)
{
if(p != NULL)
{
pnew[i]=p;
p=p->next;
n1++;
}
}
for(i=0; i<n1-1; i++)
{
for(j=i+1; j<n1; j++)
{
if(pnew[j]->xiandai < pnew[i]->xiandai)
{
temp=pnew[j];
pnew[j]=pnew[i];
pnew[i]=temp;
}
}
}
printf("线代成绩排名如下:\n\n");
printf("\n排名 a 姓名 线代成绩\n\n");
for(i=0; i<n1; i++)
{
printf(" %d %s %3d\n", i+1, pnew[i]->name, pnew[i]->xiandai);
}
}
//--------------------物理排名------------
void range5(struct Student *phead)
{
int i;
int j;
int n1=0;
struct Student *pnew[34];
struct Student*p;
struct Student*temp;
p=phead;
for(i=0; i<34; i++)
{
if(p != NULL)
{
pnew[i]=p;
p=p->next;
n1++;
}
}
for(i=0; i<n1-1; i++)
{
for(j=i+1; j<n1; j++)
{
if(pnew[j]->physics < pnew[i]->physics)
{
temp=pnew[j];
pnew[j]=pnew[i];
pnew[i]=temp;
}
}
}
printf("物理成绩排名如下:\n\n");
printf("\n排名 姓名 物理成绩\n\n");
for(i=0; i<n1; i++)
{
printf(" %d %s %5d\n", i+1, pnew[i]->name, pnew[i]->physics);
}
}
//-----------------查找学生信息------------------------
struct Student *find(struct Student *phead)
{
int m;
char stu[30];
struct Student *p1;
struct Student *p2;
if(phead == NULL)
{
printf("此表为空...\n\n");
return (phead);
}
printf("请输入您要查找人的姓名:\n");
scanf("%s", stu);
p1=phead;
while( (m=strcmp(stu,p1->name) )!=0 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if( (m=strcmp(stu,p1->name) ) == 0)
{
printf("\n \n");
printf("姓名: %s\n", p1->name);
printf("高数: %d\n", p1->math);
printf("英语: %d\n", p1->English);
printf("C语言: %d\n", p1->c);
printf("线代: %d\n", p1->xiandai);
printf("物理: %d\n", p1->physics);
}
else printf("没有您要查找的人的信息: \n\n");
return (phead);
}
//----------------------超过两科不及格的学生名单---------------
struct Student *unget(struct Student *phead)
{
int n1=0;
int n2=0;
int n3=0;
int n4=0;
int n5=0;
int n6=0;
struct Student *p;
p=phead;
if(phead == NULL)
{
printf("此表为空...\n\n");
return (phead);
}
printf("\n超过两科不及格的学生名单及其不及格的科目如下:\n\n");
if(phead != NULL)
{
while(p != NULL)
{
if(p->math < 60)
{
n1=1;
}
if(p->English < 60)
{
n2=1;
}
if(p->c < 60)
{
n3=1;
}
if(p->xiandai < 60)
{
n4=1;
}
if(p->physics < 60)
{
n5=1;
}
n6=n1+n2+n3+n4+n5;
if( n6 >= 2)
{
printf("%s", p->name );
if(n1>0)
printf(" 高数 %d ", p->math );
if(n2>0)
printf(" 英语 %d ", p->English );
if(n3>0)
printf(" C语言 %d ", p->c );
if(n4>0)
printf(" 线代 %d ", p->xiandai );
if(n5>0)
printf(" 物理 %d ", p->physics );
printf("\n");
}
n1=0, n2=0, n3=0, n4=0, n5=0, n6=0;
p=p->next;
}
}
return (phead);
}
//---------------------修改学生信息----------------------
struct Student *modify(struct Student *phead)
{
int m;
int j;
int i=1;
char stu[30];
struct Student *p1;
struct Student *p2;
if(phead == NULL)
{
printf("此表为空...\n");
return (phead);
}
printf("请输入你要查找人的姓名:\n");
scanf("%s", stu);
p1=phead;
while((m=strcmp(stu,p1->name))!=0 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if( ( m=strcmp(stu,p1->name) ) == 0)
{
printf("\n \n");
printf("姓名: %s\n", p1->name);
printf("高数: %d\n", p1->math);
printf("英语: %d\n", p1->English);
printf("c语言: %d\n", p1->c);
printf("线代: %d\n", p1->xiandai);
printf("物理: %d\n", p1->physics);
}
else
{
printf("没有您想找的人的信息:\n\n");
return (phead);
}
printf("\n\n");
while(i)
{
printf(" 1.修改姓名 \n");
printf(" 2.修改高数成绩 \n");
printf(" 3.修改英语成绩 \n");
printf(" 4.修改C语言成绩 \n");
printf(" 5.修改线代成绩 \n");
printf(" 6.修改物理成绩 \n");
printf(" 7.退出 \n");
scanf("%d", &j);
getchar();
switch(j)
{
case 1:
printf("请输入修改后的姓名:\n");
gets(stu);
strcpy(p1->name, stu);
break;
case 2:
printf("请输入修改后的高数成绩:\n");
scanf("%d", &p1->math);
while(p1->math<0 && p1->English>100)
{
printf("输入错误,请重新输入:\n");
getchar();
scanf("%d", &p1->math);
}
break;
case 3:
printf("请输入修改后的英语成绩:\n");
scanf("%d", &p1->English);
while(p1->English<0 && p1->English>100)
{
printf("输入错误,请重新输入:\n");
getchar();
scanf("%d", &p1->English);
}
break;
case 4:
printf("请输入修改后的C语言成绩:\n");
scanf("%d", &p1->English);
while(p1->c<0 && p1->c>100)
{
printf("输入错误,请重新输入:\n");
getchar();
scanf("%d", &p1->c);
}
break;
case 5:
printf("请输入修改后的线代成绩:\n");
scanf("%d", &p1->xiandai);
while(p1->xiandai<0 && p1->xiandai>100)
{
printf("输入错误,请重新输入:\n");
getchar();
scanf("%d", &p1->xiandai);
}
break;
case 6:
printf("请输入修改后的物理成绩:\n");
scanf("%d", &p1->physics);
while(p1->physics<0 && p1->physics>100)
{
printf("输入错误,请重新输入:\n");
getchar();
scanf("%d", &p1->physics);
}
break;
case 7:
i=0;
break;
return (phead);
default:
printf("输入错误,请重新输入\n\n");
break;
}
printf("修改后的信息是:\n\n");
printf("姓名 高数 英语 C语言 线代 物理 \n");
printf(" \n");
printf("%-15s%4d%10d%12d%12d%12d\n", p1->name, p1->math, p1->English, p1->c, p1->xiandai,p1->physics);
}
return (phead);
}
void save(struct Student *phead)
{
char file[15];
struct Student *p;
FILE *fp;
int i;
p=phead;
printf("请输入要保存的文件名:");
scanf("%s",file);
if((fp=fopen("file","w+"))==NULL)
{
printf("cannot open file\n");
return;
}
while(p!=NULL)
{
i=0;
fwrite(p,sizeof(struct Student),1,fp);
p=p->next;
i++;
}
fclose(fp);
}
void read(struct Student *phead)
{
char file[15];
FILE *fp;
struct Student *p1,*p2;
printf("请输入您要打开的文件名:");
scanf("%s",file);
while((fp=fopen("file","r+"))==NULL)
{
printf("\n文件不存在!\n请重新输入:");
scanf("%s",file);
}
fp=fopen("file","r+");
p1=(struct Student *)malloc(sizeof(struct Student));
fread(p1,sizeof(struct Student),1,fp);
phead=p1;
printf("姓名 高数 英语 C语言 线代 物理 \n");
printf(" \n");
printf("%-15s%4d%10d%12d%12d%12d\n", p1->name, p1->math, p1->English, p1->c, p1->xiandai,p1->physics);
while(p1->next!=NULL)
{
p2=p1;
p1=(struct Student *)malloc(sizeof(struct Student));
fread(p1,sizeof(struct Student),1,fp);
printf(" \n");
printf("%-15s%4d%10d%12d%12d%12d\n", p1->name, p1->math, p1->English, p1->c, p1->xiandai,p1->physics);
//p1=p1->next;
p2->next=p1;
}
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -