C语言学生成绩管理系统源程序.docx
C语言学生成绩管理系统源程序/ sdad.cpp : 定义控制台应用程序的入口点。 / #include"stdafx.h" #include"stdio.h" #include"string.h" #include"process.h" #include"ctype.h" typedef struct char num10; char name10; int math; int english; int physics; int programming; double all; Student; Student stu99; int shuru(Student stud,int n)/*输入若干条记录*/ int i=0; char sign,x10; double a=0.0; while(sign!='n'&&sign!='N') printf("输入学生学号:"); scanf("%s",stun+i.num); printf("输入学生姓名:"); scanf("%s",stun+i.name); printf("输入学生的高数、英语、大学物理、程序设计:"); scanf("%d%d%d%d",&stun+i.math,&stun+i.english,&stun+i.physics,&stun+i.programming); a=1.0*(stun+i.math+stun+i.english+stun+i.physics+stun+i.programming); stun+i.all=a; gets(x); /*清除多余的输入*/ printf("是否继续输入?(Y/N):n"); scanf("%c",&sign); i+; return(n+i); void xianshi(Student stud,int n) /*显示所有记录*/ int i ; printf("-n"); /*格式头*/ printf("学号 姓名 高数 英语 大学物理 程序设计 总成绩 n"); printf("-n"); for(i=0;i<n;i+) printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lfn",stui.num,stui.name,stui.math,stui.english,stui.physics,stui.programming,stui.all); void xiugai(Student stud,int n)/*修改*/ int i=0,choice=1; char x10; while(choice!=0) printf("请输入您要修改的学生的学号:n"); scanf("%s",x); for(i=0;i+) if(strcmp(stui.num,x)=0) break; printf("请选择您要修改的内容:n"); printf(" - n"); printf("| 姓名 请按 1 |n"); printf("| 高数 请按 2 |n"); printf("| 英语 请按 3 |n"); printf("| 大学物理 请按 4 |n"); printf("| 程序设计 请按 5 |n"); printf("| 退出 请按 0|n"); printf("+-+n"); printf("请输入您的选择:"); scanf("%d", &choice); switch(choice) case 0:break; case 1: printf("请输入新姓名:"); scanf("%s", stui.name); break; case 2: printf("请输入新的高数分数:"); scanf("%d", &stui.math); break; case 3: printf("请输入新的英语分数:"); scanf("%d",&stui.english); break; case 4: printf("请输入新的大学物理分数:"); scanf("%d", &stui.physics); break; case 5: printf("请输入新的程序设计分数:"); scanf("%d", &stui.programming); break; default: printf("n无效选项!"); break; break; return; int shanchu(Student stud,int n) /*按姓名查找,删除一条记录*/ char s20; int i; int j; i=0; printf("输入要删除记录的姓名:"); scanf("%s",s); while(strcmp(stui.name,s)!=0&&i<n) i+; if(i=n) printf("not find!n"); return(n); for(j=i;j<n-1;j+) /*删除操作*/ strcpy(stuj.num,stuj+1.num); strcpy(stuj.name,stuj+1.name); stuj.math=stuj+1.math; stuj.english=stuj+1.english; stuj.physics=stuj+1.physics; stuj.programming=stuj+1.programming; stuj.all=stuj+1.all; printf("Delete Successed!n"); return(n-1); void chaxun_num(Student stud,int n) /*按姓名查找并显示一个记录*/ char s20; int i=0; printf("输入学号:"); scanf("%s",s); while(strcmp(stui.num,s)!=0&&i<n) i+; /*查找判断*/ if(i=n) printf("not find!n"); /*输入失败信息*/ return; printf("他的姓名、学号是:%s %sn",stui.name,stui.num); /*输出该学生信息*/ printf("高数 英语 大学物理 程序设计 总成绩是:%d,%d,%d,%d,%lfn",stui.math,stui.english,stui.physics,stui.programming,stui.all); void paixu_xuehao(Student stud,int n) /*按学号排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(strcmp(studj.num,studj+1.num)>0) strcpy(t,studj.num); strcpy(studj.num,studj+1.num); strcpy(studj+1.num,t); strcpy(x,studj.name); strcpy(studj.name,studj+1.name); strcpy(studj+1.name,x); y=stuj.all;stuj.all=stuj+1.all;stuj+1.all=y; p=stuj.math;stuj.math=stuj+1.math;stuj+1.math=p; q=stuj.english;stuj.english=stuj+1.english;stuj+1.english=q; r=stuj.physics;stuj.physics=stuj+1.physics;stuj+1.physics=r; w=stuj.programming;stuj.programming=stuj+1.programming;stuj+1.programming=w; return; void paixu_all(Student stud,int n) /*按总成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(stuj.all>stuj+1.all) y=stuj.all;stuj.all=stuj+1.all;stuj+1.all=y; p=stuj.math;stuj.math=stuj+1.math;stuj+1.math=p; q=stuj.english;stuj.english=stuj+1.english;stuj+1.english=q; r=stuj.physics;stuj.physics=stuj+1.physics;stuj+1.physics=r; w=stuj.programming;stuj.programming=stuj+1.programming;stuj+1.programming=w; strcpy(x,stuj.name); strcpy(stuj.name,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return; void paixu_math(Student stud,int n) /*按高数成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(stuj.math>stuj+1.math) y=stuj.all;stuj.all=stuj+1.all;stuj+1.all=y; p=stuj.math;stuj.math=stuj+1.math;stuj+1.math=p; q=stuj.english;stuj.english=stuj+1.english;stuj+1.english=q; r=stuj.physics;stuj.physics=stuj+1.physics;stuj+1.physics=r; w=stuj.programming;stuj.programming=stuj+1.programming;stuj+1.programming=w; strcpy(x,stuj.name); strcpy(stuj.name,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return; void paixu_physics(Student stud,int n) /*按大学物理成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(stuj.physics>stuj+1.physics) y=stuj.all;stuj.all=stuj+1.all;stuj+1.all=y; p=stuj.math;stuj.math=stuj+1.math;stuj+1.math=p; q=stuj.english;stuj.english=stuj+1.english;stuj+1.english=q; r=stuj.physics;stuj.physics=stuj+1.physics;stuj+1.physics=r; w=stuj.programming;stuj.programming=stuj+1.programming;stuj+1.programming=w; strcpy(x,stuj.name); strcpy(stuj.name,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return; void paixu_english(Student stud,int n) /*按英语成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(stuj.english>stuj+1.english) y=stuj.all;stuj.all=stuj+1.all;stuj+1.all=y; p=stuj.math;stuj.math=stuj+1.math;stuj+1.math=p; q=stuj.english;stuj.english=stuj+1.english;stuj+1.english=q; r=stuj.physics;stuj.physics=stuj+1.physics;stuj+1.physics=r; w=stuj.programming;stuj.programming=stuj+1.programming;stuj+1.programming=w; strcpy(x,stuj.name); strcpy(stuj.name,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return; void paixu_programming(Student stud,int n) /*按程序设计成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(stuj.programming>stuj+1.programming) y=stuj.all;stuj.all=stuj+1.all;stuj+1.all=y; p=stuj.math;stuj.math=stuj+1.math;stuj+1.math=p; q=stuj.english;stuj.english=stuj+1.english;stuj+1.english=q; r=stuj.physics;stuj.physics=stuj+1.physics;stuj+1.physics=r; w=stuj.programming;stuj.programming=stuj+1.programming;stuj+1.programming=w; strcpy(x,stuj.name); strcpy(stuj.name,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return; int menu /*菜单函数*/ int c; do printf("tt*学生信息管理系统菜单*n"); printf("tt 1. 编辑 n"); printf("tt 2. 显示 n"); printf("tt 3. 查询 n"); printf("tt 4. 排序 n"); printf("tt 0. 退出 n"); printf("*n"); printf("ttt请选择(0-4):"); scanf("%d",&c); while(c<0|c>4); return(c-0); /*返回选择*/ int bianji printf("tt 1. 录入n"); printf("tt 2 .修改n"); printf("tt 3. 删除 n"); printf("tt 按其它数字键退出 n"); int i; scanf("%d",&i); return i; int chaxun printf("tt 1. 按学号查询n"); printf("tt 按其它数字键退出n"); int i; scanf("%d",&i); return i; int paixu printf("tt 1. 按学号n"); printf("tt 2 .按高数成绩n"); printf("tt 3 .按英语成绩n"); printf("tt 4 .按大学物理成绩n"); printf("tt 5 .按程序设计成绩n"); printf("tt 6 .按总成绩n"); printf("tt按其它数字键退出n"); int i; scanf("%d",&i); return i; void main /*主函数*/ int n=0; for(;) for(;) switch(menu) case 1: switch(bianji) case 1:n=shuru(stu,n);xianshi(stu,n); break; case 2:xiugai(stu ,n);xianshi(stu,n); break; case 3:shanchu(stu ,n);xianshi(stu,n); break; break; case 2:xianshi(stu,n);break; case 3: switch(chaxun) case 1:chaxun_num(stu,n);break; break; case 4: switch(paixu) case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_math(stu ,n);xianshi(stu,n);break; case 3:paixu_english(stu ,n);xianshi(stu,n); break; case 4:paixu_physics(stu ,n);xianshi(stu,n); break; case 5:paixu_programming(stu ,n);xianshi(stu,n); break; case 6:paixu_all(stu ,n);xianshi(stu,n); break; break; case 0: exit(0); /*结束程序*/