学生成绩管理系统
2015-12-14 22:04
232 查看
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<conio.h>
struct sdu
{
char name[20];
char num[10];
float ke[6];
float zongfen;
float pingjun;
struct sdu *next;
};
struct sdu_head
{
struct sdu*head;
};
struct sdu_head*head_create()
{
struct sdu_head*singlelink;
singlelink=(struct sdu_head*)malloc(sizeof(struct sdu_head));
if(singlelink==NULL)
{
printf("分配空间失败\n");
exit(0);
}
if(singlelink!=NULL)
singlelink->head=NULL;
return singlelink;
}
struct sdu*node_create()
{
struct sdu*node;
node=(struct sdu*)malloc(sizeof(struct sdu));
if(node==NULL)
{
printf("分配空间失败\n");
exit(0);
}
if(node!=NULL)
{
node->next=NULL;
}
return node;
}
void nodeapp(struct sdu_head*singlelink)
{
struct sdu*node=NULL;
struct sdu*cur=NULL;
node=node_create();
if(singlelink->head==NULL)
{
singlelink->head=node;
}
else
{
cur=singlelink->head;
while(cur!=NULL&&cur->next!=NULL)
{
cur=cur->next;
}
cur->next=node;
}
return;
}
void node_print(struct sdu_head*singlelink,int a,char kemuleixing[6][10])//a为科目门数//
{
struct sdu*iter=singlelink->head;
int h,i;
h=a*10+a+33;
for(i=0;i<h;i++)
printf("_");
printf("\n");
printf("xingming |xuehao |");
for(i=0;i<a;i++)
printf("%-10s|",kemuleixing[i]);
printf("zongfen |");
printf("\n");
for(i=0;i<h;i++)
printf("_");
printf("\n");
while(iter!=NULL)
{
printf("%-10s|%-10s|",iter->name,iter->num);
for(i=0;i<a;i++)
printf("%-10.2f|",iter->ke[i]);
printf("%-10.2f|",iter->zongfen);
printf("\n");
iter=iter->next;
}
return;
}
void node_destroy(struct sdu*node)
{
if(node!=NULL)
{
node->next=NULL;
free(node);
}
return;
}
void singlelink_destroy(struct sdu_head*singlelink)
{
struct sdu*iter=singlelink->head;
struct sdu*next=NULL;
while(iter!=NULL)
{
next=iter->next;
node_destroy(iter);
iter=next;
}
singlelink->head=NULL;
free(singlelink);
return;
}
void print()
{ printf(" ___________________________________\n");
printf(" |请输入一个数字,选择您要进行的进程|\n");
printf(" ___________________________________\n");
printf("___________________________________________________________\n");
printf("|1 .从文件读入学生信息,并显示读入个数,不成功提示出错信息 |\n");
printf("|2 .增量式手动输入学生信息 |\n");
printf("|3 .计算每门课程的总分和平均分 |\n");
printf("|4 .计算每个学生的总分和平均分 |\n");
printf("|5 .根据每个学生总分由高到低排出名次表 |\n");
printf("|6 .根据每个学生总分由低到高排出名次表 |\n");
printf("|7 .按学号从小到大排出成绩表 |\n");
printf("|8 .按姓名字典序排出成绩表 |\n");
printf("|9 .按学号查询学生排名及其考试成绩 |\n");
printf("|10.按姓名查询学生排名及其考试成绩 |\n");
printf("|11.按优秀(100-90)良好(89-80)中等(79-70)及格(69-60)|\n");
printf("| 不及格(59-0)统计人数以及百分比 |\n");
printf("|12.将数据写入文件中 |\n");
printf("___________________________________________________________\n");
return;
}
int main()
{
int menshu;
char kemuleixing[6][10],chazhao[20],fanhui,k[1];
int n,i,stucount,d,s,flag=0,h;
struct sdu jiaohuan;
float sum[6]={0},pingjun[6]={0};
while(1)
{
printf("请输入您要读入的学生人数:\n");
scanf("%s",k);
if((k[0]<='9'&&k[0]>='0')&&(k[1]<='9'&&k[1]>='0'))
stucount=(k[0]-48)*10+(k[1]-48);
if((k[0]<='9'&&k[0]>='0')&&(k[1]=='\0'))
stucount=k[0]-48;
if((k[0]>'9'||k[0]<'0'))
{
printf("输入错误,请重新输入\n");
continue;
}
break;
}
struct sdu_head*singlehead=head_create();
struct sdu*node,*paixu,*regain;
for(i=1;i<=stucount;i++)
nodeapp(singlehead);
node=singlehead->head;
while(1)
{
printf("请输入学习门课数量\n");
scanf("%s",k);
if((k[0]<='9'&&k[0]>='0')&&(k[1]=='\0'))
menshu=k[0]-48;
if((k[0]>'9'||k[0]<'0'))
{
printf("输入错误,请重新输入\n");
continue;
}
break;
}
printf("请输入科目类型\n");
for(i=0;i<menshu;i++)
scanf("%s",kemuleixing[i]);
while(n!=0)
{
extern void print();
print();
while(1)
{
scanf("%s",k);
if((k[0]<='9'&&k[0]>='0')&&(k[1]<='9'&&k[1]>='0'))
n=(k[0]-48)*10+(k[1]-48);
if((k[0]<='9'&&k[0]>='0')&&(k[1]=='\0'))
n=k[0]-48;
if((k[0]>'9'||k[0]<'0'))
{
printf("输入错误,请重新输入\n");
continue;
}
break;
}
switch(n)
{
case 1:
{
system("cls");
char duru[20];
printf("请输入您要读取的文件名\n");
scanf("%s",duru);
FILE*fp;
fp=fopen(duru,"r");
if((fp=fopen(duru,"r"))==NULL)
{
printf("读取信息失败\n");
exit(0);
}
for(i=1;i<=stucount;i++)
{
fscanf(fp,"%s",node->name);
fscanf(fp,"%s",node->num);
for(d=0;d<menshu;d++)
fscanf(fp,"%f",&node->ke[d]);
regain=node;
node=node->next;
}
fclose(fp);
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 2:
{
system("cls");
printf("请输入要输入的学生人数\n");
scanf("%d",&d);
for(i=1;i<=d;i++)
nodeapp(singlehead);
regain=regain->next;
for(i=1;i<=d;i++)
{
scanf("%s",regain->name);
scanf("%s",regain->num);
for(s=0;s<menshu;s++)
scanf("%f",®ain->ke[s]);
regain=regain->next;
}
stucount=stucount+d;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 3:
{
system("cls");
node=singlehead->head;
for(i=1;i<=stucount;i++)
{
for(d=0;d<menshu;d++)
{
sum[d]=sum[d]+node->ke[d];
}
}
int i;
for(i=0;i<38;i++)
printf("_");
printf("\n");
printf("kemuleixing |zongfen |pingjunfen|");
printf("\n");
for(i=0;i<menshu;i++)
{
printf("%-15s|",kemuleixing[i]);
printf("%-10.2f|",sum[i]);
printf("%-10.2f|\n",sum[i]/stucount);
}
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 4:
{
system("cls");
node=singlehead->head;
for(i=0;i<33;i++)
printf("_");
printf("\n");
printf("xingming |zongfen |pingjun |");
printf("\n");
for(i=0;i<33;i++)
printf("_");
printf("\n");
for(i=1;i<=stucount;i++)
{
node->pingjun=0;
node->zongfen=0;
for(d=0;d<menshu;d++)
{
node->zongfen=node->zongfen+node->ke[d];
}
node->pingjun=node->zongfen/menshu;
printf("%-10s|%-10.2f|%-10.2f|\n",node->name,node->zongfen,node->pingjun);
node=node->next;
}
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 5:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(paixu->zongfen>node->zongfen)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 6:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(paixu->zongfen<node->zongfen)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 7:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(strcmp(paixu->num,node->num)<0)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 8:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(strcmp(paixu->name,node->name)<0)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 9:
{
system("cls");
node=singlehead->head;
printf("请输入您要查找的学号");
printf("\n");
scanf("%s",chazhao);
printf("xingming \txuehao \t");
for(i=0;i<menshu;i++)
printf("%-10s\t",kemuleixing[i]);
printf("\n");
for(i=1;i<=stucount;i++)
{
if(strcmp(chazhao,node->num)==0)
{
printf("%-10s\t",node->name);
printf("%-10s\t",node->num);
for(i=0;i<menshu;i++)
printf("%-10.2f\t",node->ke[i]);
printf("\n");
flag=1;
}
node=node->next;
}
if(flag==0)
printf("查无此人");
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 10:
{
system("cls");
node=singlehead->head;
printf("请输入您要查找学生的姓名");
printf("\n");
scanf("%s",chazhao);
printf("xingming xuehao ");
for(i=0;i<menshu;i++)
printf("%-10s",kemuleixing[i]);
printf("\n");
for(i=1;i<=stucount;i++)
{
if(strcmp(chazhao,node->name)==0)
{
printf("%-10s",node->name);
printf("%-10s",node->num);
for(i=0;i<menshu;i++)
printf("%-10.2f",node->ke[i]);
printf("\n");
flag=1;
}
node=node->next;
}
int a;
printf("是否重名?是输入1,不是输入0");
printf("\n");
scanf("%d",&a);
if(a==1)
{
node=singlehead->head;
printf("请输入学号具体查询");
printf("\n");
scanf("%s",chazhao);
for(i=0;i<=stucount;i++)
{
if(strcmp(chazhao,node->num)==0)
{
printf("%-10s",node->name);
printf("%s",node->num);
for(i=0;i<menshu;i++)
printf("%.2f",node->ke[i]);
printf("\n");
}
node=node->next;
}
}
if(flag==0)
printf("查无此人");
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 11:
{
system("cls");
node=singlehead->head;
int youxiu[6]={0},lianghao[6]={0},zhongdeng[6]={0},jige[6]={0},bujige[6]={0};
for(d=0;d<menshu;d++)
{
for(i=1;i<=stucount;i++)
{
if(node->ke[d]>=90&&node->ke[d]<=100)
youxiu[d]++;
if(node->ke[d]<90&&node->ke[d]>=80)
lianghao[d]++;
if(node->ke[d]>=70&&node->ke[d]<80)
zhongdeng[d]++;
if(node->ke[d]>=60&&node->ke[d]<70)
jige[d]++;
if(node->ke[d]<60)
bujige[d]++;
}
}
for(d=0;d<menshu;d++)
{
printf("%s \n",kemuleixing[d]);
printf("优秀人数 :%3d,百分比:%.2f%\n",youxiu[d],(float)(youxiu[d])/stucount*100);
printf("良好人数 :%3d,百分比:%.2f%\n",lianghao[d],(float)(lianghao[d])/stucount*100);
printf("中等人数 :%3d,百分比:%.2f%\n",zhongdeng[d],(float)(zhongdeng[d])/stucount*100);
printf("及格人数 :%3d,百分比:%.2f%\n",jige[d],(float)(jige[d])/stucount*100);
printf("不及格人数:%3d,百分比:%.2f%\n",bujige[d],(float)(bujige[d])/stucount*100);
}
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 12:
{
system("cls");
node=singlehead->head;
for(i=1;i<=stucount;i++)
{
node->pingjun=0;
node->zongfen=0;
for(d=0;d<menshu;d++)
{
node->zongfen=node->zongfen+node->ke[d];
}
node->pingjun=node->zongfen/menshu;
node=node->next;
}
node=singlehead->head;
char duru[20];
printf("请输入您要读取的文件名\n");
scanf("%s",duru);
FILE*dp;
if((dp=fopen(duru,"w+"))==NULL)
{
printf("写入信息失败\n");
exit(0);
}
int p;
p=menshu*10+menshu+33;
for(i=0;i<p;i++)
fprintf(dp,"_");
fprintf(dp,"\n");
fprintf(dp,"xingming |xuehao |");
for(i=0;i<menshu;i++)
fprintf(dp,"%-10s|",kemuleixing[i]);
fprintf(dp,"zongfen |");
fprintf(dp,"\n");
for(i=1;i<=stucount;i++)
{
fprintf(dp,"%-10s|",node->name);
fprintf(dp,"%-10s|",node->num);
for(d=0;d<menshu;d++)
fprintf(dp,"%-10.2f|",node->ke[d]);
fprintf(dp,"%-10.2f|",node->zongfen);
fprintf(dp,"\n");
node=node->next;
}
fclose(dp);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
}
}
}
return 0;
}
#include <stdlib.h>
#include<string.h>
#include<conio.h>
struct sdu
{
char name[20];
char num[10];
float ke[6];
float zongfen;
float pingjun;
struct sdu *next;
};
struct sdu_head
{
struct sdu*head;
};
struct sdu_head*head_create()
{
struct sdu_head*singlelink;
singlelink=(struct sdu_head*)malloc(sizeof(struct sdu_head));
if(singlelink==NULL)
{
printf("分配空间失败\n");
exit(0);
}
if(singlelink!=NULL)
singlelink->head=NULL;
return singlelink;
}
struct sdu*node_create()
{
struct sdu*node;
node=(struct sdu*)malloc(sizeof(struct sdu));
if(node==NULL)
{
printf("分配空间失败\n");
exit(0);
}
if(node!=NULL)
{
node->next=NULL;
}
return node;
}
void nodeapp(struct sdu_head*singlelink)
{
struct sdu*node=NULL;
struct sdu*cur=NULL;
node=node_create();
if(singlelink->head==NULL)
{
singlelink->head=node;
}
else
{
cur=singlelink->head;
while(cur!=NULL&&cur->next!=NULL)
{
cur=cur->next;
}
cur->next=node;
}
return;
}
void node_print(struct sdu_head*singlelink,int a,char kemuleixing[6][10])//a为科目门数//
{
struct sdu*iter=singlelink->head;
int h,i;
h=a*10+a+33;
for(i=0;i<h;i++)
printf("_");
printf("\n");
printf("xingming |xuehao |");
for(i=0;i<a;i++)
printf("%-10s|",kemuleixing[i]);
printf("zongfen |");
printf("\n");
for(i=0;i<h;i++)
printf("_");
printf("\n");
while(iter!=NULL)
{
printf("%-10s|%-10s|",iter->name,iter->num);
for(i=0;i<a;i++)
printf("%-10.2f|",iter->ke[i]);
printf("%-10.2f|",iter->zongfen);
printf("\n");
iter=iter->next;
}
return;
}
void node_destroy(struct sdu*node)
{
if(node!=NULL)
{
node->next=NULL;
free(node);
}
return;
}
void singlelink_destroy(struct sdu_head*singlelink)
{
struct sdu*iter=singlelink->head;
struct sdu*next=NULL;
while(iter!=NULL)
{
next=iter->next;
node_destroy(iter);
iter=next;
}
singlelink->head=NULL;
free(singlelink);
return;
}
void print()
{ printf(" ___________________________________\n");
printf(" |请输入一个数字,选择您要进行的进程|\n");
printf(" ___________________________________\n");
printf("___________________________________________________________\n");
printf("|1 .从文件读入学生信息,并显示读入个数,不成功提示出错信息 |\n");
printf("|2 .增量式手动输入学生信息 |\n");
printf("|3 .计算每门课程的总分和平均分 |\n");
printf("|4 .计算每个学生的总分和平均分 |\n");
printf("|5 .根据每个学生总分由高到低排出名次表 |\n");
printf("|6 .根据每个学生总分由低到高排出名次表 |\n");
printf("|7 .按学号从小到大排出成绩表 |\n");
printf("|8 .按姓名字典序排出成绩表 |\n");
printf("|9 .按学号查询学生排名及其考试成绩 |\n");
printf("|10.按姓名查询学生排名及其考试成绩 |\n");
printf("|11.按优秀(100-90)良好(89-80)中等(79-70)及格(69-60)|\n");
printf("| 不及格(59-0)统计人数以及百分比 |\n");
printf("|12.将数据写入文件中 |\n");
printf("___________________________________________________________\n");
return;
}
int main()
{
int menshu;
char kemuleixing[6][10],chazhao[20],fanhui,k[1];
int n,i,stucount,d,s,flag=0,h;
struct sdu jiaohuan;
float sum[6]={0},pingjun[6]={0};
while(1)
{
printf("请输入您要读入的学生人数:\n");
scanf("%s",k);
if((k[0]<='9'&&k[0]>='0')&&(k[1]<='9'&&k[1]>='0'))
stucount=(k[0]-48)*10+(k[1]-48);
if((k[0]<='9'&&k[0]>='0')&&(k[1]=='\0'))
stucount=k[0]-48;
if((k[0]>'9'||k[0]<'0'))
{
printf("输入错误,请重新输入\n");
continue;
}
break;
}
struct sdu_head*singlehead=head_create();
struct sdu*node,*paixu,*regain;
for(i=1;i<=stucount;i++)
nodeapp(singlehead);
node=singlehead->head;
while(1)
{
printf("请输入学习门课数量\n");
scanf("%s",k);
if((k[0]<='9'&&k[0]>='0')&&(k[1]=='\0'))
menshu=k[0]-48;
if((k[0]>'9'||k[0]<'0'))
{
printf("输入错误,请重新输入\n");
continue;
}
break;
}
printf("请输入科目类型\n");
for(i=0;i<menshu;i++)
scanf("%s",kemuleixing[i]);
while(n!=0)
{
extern void print();
print();
while(1)
{
scanf("%s",k);
if((k[0]<='9'&&k[0]>='0')&&(k[1]<='9'&&k[1]>='0'))
n=(k[0]-48)*10+(k[1]-48);
if((k[0]<='9'&&k[0]>='0')&&(k[1]=='\0'))
n=k[0]-48;
if((k[0]>'9'||k[0]<'0'))
{
printf("输入错误,请重新输入\n");
continue;
}
break;
}
switch(n)
{
case 1:
{
system("cls");
char duru[20];
printf("请输入您要读取的文件名\n");
scanf("%s",duru);
FILE*fp;
fp=fopen(duru,"r");
if((fp=fopen(duru,"r"))==NULL)
{
printf("读取信息失败\n");
exit(0);
}
for(i=1;i<=stucount;i++)
{
fscanf(fp,"%s",node->name);
fscanf(fp,"%s",node->num);
for(d=0;d<menshu;d++)
fscanf(fp,"%f",&node->ke[d]);
regain=node;
node=node->next;
}
fclose(fp);
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 2:
{
system("cls");
printf("请输入要输入的学生人数\n");
scanf("%d",&d);
for(i=1;i<=d;i++)
nodeapp(singlehead);
regain=regain->next;
for(i=1;i<=d;i++)
{
scanf("%s",regain->name);
scanf("%s",regain->num);
for(s=0;s<menshu;s++)
scanf("%f",®ain->ke[s]);
regain=regain->next;
}
stucount=stucount+d;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 3:
{
system("cls");
node=singlehead->head;
for(i=1;i<=stucount;i++)
{
for(d=0;d<menshu;d++)
{
sum[d]=sum[d]+node->ke[d];
}
}
int i;
for(i=0;i<38;i++)
printf("_");
printf("\n");
printf("kemuleixing |zongfen |pingjunfen|");
printf("\n");
for(i=0;i<menshu;i++)
{
printf("%-15s|",kemuleixing[i]);
printf("%-10.2f|",sum[i]);
printf("%-10.2f|\n",sum[i]/stucount);
}
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 4:
{
system("cls");
node=singlehead->head;
for(i=0;i<33;i++)
printf("_");
printf("\n");
printf("xingming |zongfen |pingjun |");
printf("\n");
for(i=0;i<33;i++)
printf("_");
printf("\n");
for(i=1;i<=stucount;i++)
{
node->pingjun=0;
node->zongfen=0;
for(d=0;d<menshu;d++)
{
node->zongfen=node->zongfen+node->ke[d];
}
node->pingjun=node->zongfen/menshu;
printf("%-10s|%-10.2f|%-10.2f|\n",node->name,node->zongfen,node->pingjun);
node=node->next;
}
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 5:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(paixu->zongfen>node->zongfen)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 6:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(paixu->zongfen<node->zongfen)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 7:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(strcmp(paixu->num,node->num)<0)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 8:
{
system("cls");
node=singlehead->head;
paixu=node->next;
for(i=1;i<stucount;i++)
{
d=i+1;
for(;d<=stucount;d++)
{
if(strcmp(paixu->name,node->name)<0)
{
jiaohuan.zongfen=paixu->zongfen;
paixu->zongfen=node->zongfen;
node->zongfen=jiaohuan.zongfen;
jiaohuan.pingjun=paixu->pingjun;
paixu->pingjun=node->pingjun;
node->pingjun=jiaohuan.pingjun;
strcpy(jiaohuan.name,paixu->name);
strcpy(paixu->name,node->name);
strcpy(node->name,jiaohuan.name);
strcpy(jiaohuan.num,paixu->num);
strcpy(paixu->num,node->num);
strcpy(node->num,jiaohuan.num);
for(s=0;s<menshu;s++)
{
jiaohuan.ke[s]=paixu->ke[s];
paixu->ke[s]=node->ke[s];
node->ke[s]=jiaohuan.ke[s];
}
}
paixu=paixu->next;
}
node=node->next;
paixu=node->next;
}
node_print(singlehead,menshu,kemuleixing);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 9:
{
system("cls");
node=singlehead->head;
printf("请输入您要查找的学号");
printf("\n");
scanf("%s",chazhao);
printf("xingming \txuehao \t");
for(i=0;i<menshu;i++)
printf("%-10s\t",kemuleixing[i]);
printf("\n");
for(i=1;i<=stucount;i++)
{
if(strcmp(chazhao,node->num)==0)
{
printf("%-10s\t",node->name);
printf("%-10s\t",node->num);
for(i=0;i<menshu;i++)
printf("%-10.2f\t",node->ke[i]);
printf("\n");
flag=1;
}
node=node->next;
}
if(flag==0)
printf("查无此人");
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 10:
{
system("cls");
node=singlehead->head;
printf("请输入您要查找学生的姓名");
printf("\n");
scanf("%s",chazhao);
printf("xingming xuehao ");
for(i=0;i<menshu;i++)
printf("%-10s",kemuleixing[i]);
printf("\n");
for(i=1;i<=stucount;i++)
{
if(strcmp(chazhao,node->name)==0)
{
printf("%-10s",node->name);
printf("%-10s",node->num);
for(i=0;i<menshu;i++)
printf("%-10.2f",node->ke[i]);
printf("\n");
flag=1;
}
node=node->next;
}
int a;
printf("是否重名?是输入1,不是输入0");
printf("\n");
scanf("%d",&a);
if(a==1)
{
node=singlehead->head;
printf("请输入学号具体查询");
printf("\n");
scanf("%s",chazhao);
for(i=0;i<=stucount;i++)
{
if(strcmp(chazhao,node->num)==0)
{
printf("%-10s",node->name);
printf("%s",node->num);
for(i=0;i<menshu;i++)
printf("%.2f",node->ke[i]);
printf("\n");
}
node=node->next;
}
}
if(flag==0)
printf("查无此人");
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 11:
{
system("cls");
node=singlehead->head;
int youxiu[6]={0},lianghao[6]={0},zhongdeng[6]={0},jige[6]={0},bujige[6]={0};
for(d=0;d<menshu;d++)
{
for(i=1;i<=stucount;i++)
{
if(node->ke[d]>=90&&node->ke[d]<=100)
youxiu[d]++;
if(node->ke[d]<90&&node->ke[d]>=80)
lianghao[d]++;
if(node->ke[d]>=70&&node->ke[d]<80)
zhongdeng[d]++;
if(node->ke[d]>=60&&node->ke[d]<70)
jige[d]++;
if(node->ke[d]<60)
bujige[d]++;
}
}
for(d=0;d<menshu;d++)
{
printf("%s \n",kemuleixing[d]);
printf("优秀人数 :%3d,百分比:%.2f%\n",youxiu[d],(float)(youxiu[d])/stucount*100);
printf("良好人数 :%3d,百分比:%.2f%\n",lianghao[d],(float)(lianghao[d])/stucount*100);
printf("中等人数 :%3d,百分比:%.2f%\n",zhongdeng[d],(float)(zhongdeng[d])/stucount*100);
printf("及格人数 :%3d,百分比:%.2f%\n",jige[d],(float)(jige[d])/stucount*100);
printf("不及格人数:%3d,百分比:%.2f%\n",bujige[d],(float)(bujige[d])/stucount*100);
}
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
break;
}
case 12:
{
system("cls");
node=singlehead->head;
for(i=1;i<=stucount;i++)
{
node->pingjun=0;
node->zongfen=0;
for(d=0;d<menshu;d++)
{
node->zongfen=node->zongfen+node->ke[d];
}
node->pingjun=node->zongfen/menshu;
node=node->next;
}
node=singlehead->head;
char duru[20];
printf("请输入您要读取的文件名\n");
scanf("%s",duru);
FILE*dp;
if((dp=fopen(duru,"w+"))==NULL)
{
printf("写入信息失败\n");
exit(0);
}
int p;
p=menshu*10+menshu+33;
for(i=0;i<p;i++)
fprintf(dp,"_");
fprintf(dp,"\n");
fprintf(dp,"xingming |xuehao |");
for(i=0;i<menshu;i++)
fprintf(dp,"%-10s|",kemuleixing[i]);
fprintf(dp,"zongfen |");
fprintf(dp,"\n");
for(i=1;i<=stucount;i++)
{
fprintf(dp,"%-10s|",node->name);
fprintf(dp,"%-10s|",node->num);
for(d=0;d<menshu;d++)
fprintf(dp,"%-10.2f|",node->ke[d]);
fprintf(dp,"%-10.2f|",node->zongfen);
fprintf(dp,"\n");
node=node->next;
}
fclose(dp);
node=NULL;
printf("按enter返回主菜单\n");
fanhui=getch();
system("cls");
}
}
}
return 0;
}
相关文章推荐
- sizeof 运算符
- iOS_开发中遇到的那些问题_5
- 九度oj 1380 lucky number + 二进制
- Java多线程-新特征-锁(下)
- Dropping and creating tables in read only tablespaces?!
- for循环练习
- What is Chromatic Aberration?
- iOS开发之GData
- Kurento应用开发指南(以Kurento 5.0为模板) 之二:示例教程helloworld
- Spinner的使用
- logHelp日志代码分析
- URL之Linux相关资源整理
- JQuery 如何选择带有多个class的元素
- [leetcode] 134. Gas Station
- mysql数据库的一些基本操作
- Android-JNI(1)-简介
- OTO电子商务商业模式探析
- 以软件开发生命周期来说明不同的测试使用情况
- 中点算法绘制椭圆_程序
- Mac下配置PHP+Apache+phpMyAdmin+MySql远程链接