/*本学生成绩管理系统适合在win-TC 下运行*/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*其它说明*/ #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #include "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*/ #include "alloc.h" /*动态地址分配函数*/ struct student /*使用结构体定义学生系统成员*/ { long num; /*输入学生的学号,但不能多于8个数字且开头不能为0*/ char name[20]; /*输入学生的名字,但不能多于20个字符并且姓名之间不能有空格*/ int s[5]; /*输入学生的5科成绩,用数组表示*/ int as; /*算学生的5科成绩总和*/ int qs; /*算学生的5科加权成绩总和*/ }stu[100]; struct student t; /*将t定义为结构题*/ main() {char ch; int i,j,N; int yw,sx,yy,hx,wl;/*这是语文 数学 英语 化学 物理各科占有的权重*/ printf("\nInput How many student:"); scanf("%d",&N); /*输入有多少个学生*/ printf("\nInput quanzhong(yuwen,shuxue,yingyu,huaxue,wuli):"); /*输入各科所战的权重*/ scanf("%d,%d,%d,%d,%d",&yw,&sx,&yy,&hx,&wl);/*注意输出的格式为(3,4,5,6,7),括号内为输出格式*/ for(i=0;i<N;i++) /*输入每个学生的资料*/ {printf("\nInput scores of student %d\n",i+1); printf("Name:"); scanf("%s",stu[i].name); printf("No:"); scanf("%ld",&stu[i].num); for(j=0;j<5;j++) { printf("score %d:",j+1); scanf("%d",&stu[i].s[j]); } } clrscr(); for(i=0;i<N;i++) {stu[i].qs=stu[i].s[0]*yw+stu[i].s[1]*sx +stu[i].s[2]*yy+stu[i].s[3]*hx+stu[i].s[4]*wl; /*计算每个学生的加权总成绩*/ stu[i].as=stu[i].s[0]+stu[i].s[1]+stu[i].s[2]+stu[i].s[3]+stu[i].s[4]; /*计算每个学生的总成绩*/ } while(1) { clrscr(); /*清屏幕*/ gotoxy(1,1); /*移动光标*/ textcolor(YELLOW); /*设置文本显示颜色为黄色*/ textbackground(BLUE); /*设置背景颜色为蓝色*/ window(1,1,99,99); /* 制作显示菜单的窗口,大小根据菜单条数设计*/ clrscr(); printf("*************************welcome to use student manage**************************\n"); printf("*************************************menu***************************************\n"); printf("* =============================================================================*\n"); printf("* 1>yuwen paiming 2>shuxue paiming *\n"); printf("* 3>yingyu paiming 4>huaxue paiming *\n"); printf("* 5>wuli paiming 6>xuehao shuchu *\n"); printf("* 7>xuehao chaxun 8>xingming chaxun *\n"); printf("* 9>zongfen 0>jiaquan zongfen *\n"); printf("* e>exit *\n"); printf("* *\n"); printf("* -----------------------------------------------------------------------------*\n"); printf(" Please input which you want(0-9):"); /*输入数字,查询你所需要的信息*/ ch=getch(); /*吸收空格键*/ switch(ch) /*进行菜单操作*/ { case '1' : ywpm(N,stu); break; case '2' : sxpm(N,stu); break; case '3' : yypm(N,stu); break; case '4' : hxpm(N,stu); break; case '5' : wlpm(N,stu); break; case '6' : xhsc(N,stu); break; case '7' : xhcx(N,stu); break; case '8' : xmcx(N,stu); break; case '9' : zf(N,stu); break; case '0' : jqzf(N,stu); break; case 'e' : exit(0); default: continue; } } } ywpm(int m,struct student stu[]) /*语文排名的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].s[0]<stu[i+1].s[0]) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\nshu chu yuwen paiming\n"); printf(" Name No yuwenpaiming\n"); for(i=0;i<m;i++) printf("%14s%11ld%10.2d\n",stu[i].name,stu[i].num,stu[i].s[0]); printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } sxpm(int m,struct student stu[]) /*数学排名的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].s[1]<stu[i+1].s[1]) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\nshu chu shuxue paiming\n"); printf(" Name No shuxuepaiming\n"); for(i=0;i<m;i++) printf("%14s%11ld%10.2d\n",stu[i].name,stu[i].num,stu[i].s[1]); printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } yypm(int m,struct student stu[]) /*英语排名的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].s[2]<stu[i+1].s[2]) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\nshu chu yingyu paiming\n"); printf(" Name No yingyupaiming\n"); for(i=0;i<m;i++) printf("%14s%11ld%10.2d\n",stu[i].name,stu[i].num,stu[i].s[2]); printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } hxpm(int m,struct student stu[]) /*化学排名的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].s[3]<stu[i+1].s[3]) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\nshu chu huaxue paiming\n"); printf(" Name No huaxuepaiming\n"); for(i=0;i<m;i++) printf("%14s%11ld%10.2d\n",stu[i].name,stu[i].num,stu[i].s[3]); printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } wlpm(int m,struct student stu[]) /*物理排名的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].s[4]<stu[i+1].s[4]) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\nshu chu wuli paiming\n"); printf(" Name No wulipaiming\n"); for(i=0;i<m;i++) printf("%14s%11ld%10.2d\n",stu[i].name,stu[i].num,stu[i].s[4]); printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } xhsc(int m,struct student stu[]) /*按学号从大到小的顺序输出的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].num<stu[i+1].num) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\n an xuehao cong da dao xiao shuchu:\n"); printf(" Name No yw sx yy hx wl\n"); for(i=0;i<m;i++) printf("%14s%11ld%5d%5d%5d%5d%5d\n",stu[i].name,stu[i].num,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].s[3],stu[i].s[4]); printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } xhcx(int m,struct student stu[]) /*输入学号查询学生成绩的操作*/ {long search1; int i; printf("\nQing shuru chazhao xuehao:"); scanf("%ld",&search1); clrscr(); for(i=0;i<m;i++) { if(search1==stu[i].num) { printf("\n Name No yw sx yy hx wl\n"); printf("%14s%11ld%5d%5d%5d%5d%5d\n",stu[i].name,stu[i].num,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].s[3],stu[i].s[4]); } } printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } xmcx(int m,struct student stu[]) /*输入姓名查询学生成绩的操作*/ {char search1; int i; printf("\nQing shuru chazhao xingming:"); scanf("%s",search1); clrscr(); for(i=0;i<m;i++) { if(strcmp(search1,stu[i].name)==0) { printf("\n Name No yw sx yy hx wl\n"); printf("%14s%11ld%5d%5d%5d%5d%5d\n",stu[i].name,stu[i].num,stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].s[3],stu[i].s[4]); } } printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch();} zf(int m,struct student stu[]) /*总分从大到小显示的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].as<stu[i+1].as) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\n Name No zongfen \n"); for(i=0;i<m;i++) { printf("%14s%11ld%10.2d\n",stu[i].name,stu[i].num,stu[i].as); /*输出每个学生的姓名,学号,总成绩*/ } printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); } jqzf(int m,struct student stu[]) /*加权总分从大到小显示的操作*/ {int i,j; for(j=0;j<m;j++) for(i=0;i<m-j;i++) if(stu[i].qs<stu[i+1].qs) {t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } printf("\n Name No jiaquanzongfen \n"); for(i=0;i<m;i++) { printf("%14s%11ld%10.2d\n",stu[i].name,stu[i].num,stu[i].qs); /*输出每个学生的姓名,学号,加权总成绩*/ } printf("press any key continue ......\n");/*按任意键重新开始选择*/ getch(); }

评论