*教学成绩管理系统* *说明:《教学成绩管理系统》基本信息包括班级、学号、姓名 及语文、数学、外语、物理、化学五科成绩的信息,可以根据实际情况有所增减* 教学成绩管理系统* *说明:《教学成绩管理系统》基本信息包括班级、学号、姓名 及语文、数学、外语、物理、化学五科成绩的信息,可以根据实际情况有所增减* #include"stdio. h" /*控制台I/O的头文件考 #include "string. h /*字符串函数的头文件* #include "stdlib h" /+exiO函数的头文件* #define max 100 *定义最多可以输入的学生数 int Interface( char(*x)(20), int n); /*操作界面* int Add(int start, struct student *p); /*增加学生数* oid Display (struct student*p, int start, int end) /显示已存在的数据* void SortName(struct student*p, int n) /按姓名排序* void Sort Total(struct student*p, int n); /*按总分排序(由高到低) void SortChinese(struct student*p, int n); /*按语文排序(由高到低) void SortMath( struct student*p, int n); /*按数学排序(由高到低)* void Sort ForeignLanguage(struct student*p, int n /*按外文排序(由高到低)* void SortPhysics(struct student*p, int n) /*按物理排序(由高到低)* void SortChemistry (struct student*p, int n); /*按化学排序(由高到低)* int Search(struct student*p, char*t, int n) 信息检索* int Find(struct student*p, int n); /信息查找* void Modify(struct student*p, int n); /*信息修改* int Delete(struct student*p, int n) 信息删除* void Swap(struct student*pl, struct student*p2) *学生信息互换* oid SaveFile(struct student*p, int n) *文件保存* char password 8="765432 *设置系统管理员密码* struct student char Class 301 char Name 20] 主函数
/*教学成绩管理系统*/ /*说明:《教学成绩管理系统》基本信息包括班级、学号、姓名 及语文、数学、外语、物理、化学五科成绩的信息,可以根据实际情况有所增减*/ /*教学成绩管理系统*/ /*说明:《教学成绩管理系统》基本信息包括班级、学号、姓名 及语文、数学、外语、物理、化学五科成绩的信息,可以根据实际情况有所增减*/ #include "stdio.h" /*控制台 I/O 的头文件*/ #include "string.h" /*字符串函数的头文件*/ #include "stdlib.h" /*exit()函数的头文件*/ #define Max 100 /*定义最多可以输入的学生数*/ int Interface(char (*x)[20],int n); /*操作界面*/ int Add(int start, struct student *p); /*增加学生数*/ void Display(struct student *p, int start, int end); /*显示已存在的数据*/ void SortName(struct student *p, int n); /*按姓名排序*/ void SortTotal(struct student *p, int n); /*按总分排序(由高到低)*/ void SortChinese(struct student *p, int n); /*按语文排序(由高到低)*/ void SortMath(struct student *p, int n); /*按数学排序(由高到低)*/ void SortForeignLanguage(struct student *p, int n); /*按外文排序(由高到低)*/ void SortPhysics(struct student *p, int n); /*按物理排序(由高到低)*/ void SortChemistry(struct student *p, int n); /*按化学排序(由高到低)*/ int Search (struct student *p, char *t, int n); /*信息检索*/ int Find(struct student *p, int n); /*信息查找*/ void Modify(struct student *p, int n); /*信息修改*/ int Delete(struct student *p, int n); /*信息删除*/ void Swap(struct student *p1, struct student *p2); /*学生信息互换*/ void SaveFile(struct student *p,int n); /*文件保存*/ char password[8]="7654321"; /*设置系统管理员密码*/ struct student { char Class[30]; char StudentNumber[20]; char Name[20]; int Score[5]; int Total; }; /**********************************************************\ 主函数 \**********************************************************/ void main()
struct student stu[ Max 体定义结构数组* FILE * fp /*结构数组,即可输入的最大学生数,最大值为声明中预定义的Max S, /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数* int n=0. /整型变量* char choice. char menu[20}={"添加","显示"’"按姓名排序""按总分排序”按语文成绩排序 按数学成绩排序","按外语成绩排序","按物理成绩排序""按化学成绩排序", 检索”,"修改”"删除","存盘""返回"}; /***********系统密码管理**幸春***** char pass[ 81: int flag=0 int w=3 char openfile[10]; do f printf("请输入管理员密码:n"); if(lstrcmp(pass, password)) printf("PASSIninIn") printf("密码错误,请重新输入n") while(w>0) if(I flag printf("你已连续三次输入错误,请确认后再使用本系统,谢谢!n") system("cls"); /*用 system调用dos命令,清屏* /***事客*幸幸*幸**打开已有文件幸***春*** printf("in打开已有的文件" d: \student. txt\"?y/n)"), canf("%s",openfile)
{ struct student stu[Max]; /*定义结构数组*/ FILE *fp; /*结构数组,即可输入的最大学生数,最大值为声明中预定义的 Max*/ int s; /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数*/ int n=0; /*整型变量*/ char choice; char menu[][20]={"添加","显示","按姓名排序","按总分排序","按语文成绩排序", "按数学成绩排序","按外语成绩排序","按物理成绩排序","按化学成绩排序", "检索","修改","删除","存盘","返回"}; /**********************系统密码管理********************/ char pass[8]; int flag=0; int w=3; char openfile[10]; do{ printf("请输入管理员密码:\n"); scanf("%s",pass); if(!strcmp(pass,password)) { printf("PASS\n\n\n"); flag = 1; break; } else { printf("密码错误,请重新输入:\n"); w--; } } while(w>0); if(!flag) { printf("你已连续三次输入错误,请确认后再使用本系统,谢谢!\n"); exit(0); } system("cls"); /*用 system 调用 dos 命令,清屏*/ /**********************打开已有文件********************/ printf ("\n 打开已有的文件\"d:\\student.txt\"?(y/n)"); scanf("%s",openfile);
if(strcmp(openfile, y)==NULL)) if((fp=fopen("d: \\student. txt","r))==NULL) printi("不能打开文件!m") while(feof(fp)==0) fscanf(fp, %s %s %s%d%d %d %d %d %d\n", stu[n]. Class, stun].Student Number, stu[ &stu[n]. Total, &stu[]. Score[0], &stu(n]. Score[ 1), &stu(n)Score[2], &stu[n]. Score[3], &stu[n]. Score[4); fclose(fp) else printi("请创建一个新文件" student txt"m") system("cls") /*用 system调用dos命令,清屏* printf("-wwwwwwmItttltht printf("ht欢迎进入教学成绩管理系统Ⅶn") printf("%%%%%%%%%‰%%‰%8‰%%%%%%%%%%%%%%ttit%%%%%%%%%%% %%%%%%%%%%%%%%%%n") printf( printf("\nInInIn") printf("单位:北京三零九中学n”) printf("地址:北京市海淀区mn") printi("电话:010-700000 printf("InininIn") printf( n") printf("本系统由“天地人和软件有限公司”开发n") printi("地址:北京市海淀区学院路ln") printi("编制人:天天n"); printf( printf("\nin"); printf("t请任意输入一个值并回车进入系统ln") exit(1) system("cls") /*用 system调用dos命令,清屏*
if((strcmp(openfile,"y")==NULL)) { if((fp=fopen("d:\\student.txt","r"))==NULL) { printf("不能打开文件!\n"); exit(0); } while (feof(fp)==0) { fscanf(fp,"%s %s %s %d %d %d %d %d %d\n",stu[n].Class,stu[n].StudentNumber,stu[n].Na me, &stu[n].Total,&stu[n].Score[0],&stu[n].Score[1],&stu[n].Score[2], &stu[n].Score[3],&stu[n].Score[4]); n++; } fclose(fp); } else printf("请创建一个新文件\"student.txt\".\n"); system("cls"); /*用 system 调用 dos 命令,清屏*/ printf("~~~~~~~~~~~~~\t\t\t\t\t~~~~~~~~~~~~~\n"); printf("~~~~~~~~~~~~~\t\t\t\t\t~~~~~~~~~~~~~\n"); printf("\t\t 欢迎进入教学成绩管理系统\n"); printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\t\t\t\t\t%%%%%%%%%%% %%%%%%%%%%%%%%%%\n"); printf("-------------------------------------------------------------"); printf("\n\n\n\n"); printf("单位:北京三零九中学\n"); printf("地址:北京市海淀区\n"); printf("电话:010-70000000"); printf("\n\n\n\n"); printf("==============\t\t==============\n"); printf("本系统由“天地人和软件有限公司”开发\n"); printf("地址:北京市海淀区学院路\n"); printf("编制人:天天\n"); printf("==============\t\t==============\n"); printf("\n\n"); printf("\t\t 请任意输入一个值并回车进入系统\n"); scanf("%s",&choice); if(choice=='n'||choice=='N') exit(1); system("cls"); /*用 system 调用 dos 命令,清屏*/ do
sInter face( menu, 14) /*调用 Interface(函数* switch(s) 转向语句,选择以实现不同的功能* case 1: Display (stu, O, n-1), break; case 2: SortName(stu, n); break; ase 3: Sort Total(stu, n); break; case 4: Sort Chinese(stu, n); break case 5: SortMath(stu, n); break case 6: Sort ForeignLanguage(stu, n); break case 7: SortPhysics(stu, n); break case 8: Sort Chemistry (stu, n); break case 9: Find(stu, n); break; case 10: Modify(stu, n); break; case 11: n=Delete(stu, n); break; case 12: Save File(stu, n) les>=0&&sn+1) return(int)i-I 幸率幸本本本本******春幸本本本幸春客家举幸本本*******亲幸* 添加信息函数
{ s=Interface(menu,14); /*调用 Interface()函数*/ switch (s) /*转向语句,选择以实现不同的功能*/ { case 0: n=Add(n,stu);break; case 1: Display(stu,0,n-1);break; case 2: SortName(stu,n);break; case 3: SortTotal(stu,n);break; case 4: SortChinese(stu,n);break; case 5: SortMath(stu,n);break; case 6: SortForeignLanguage(stu,n);break; case 7: SortPhysics(stu,n);break; case 8: SortChemistry(stu,n);break; case 9: Find(stu,n);break; case 10: Modify(stu,n);break; case 11: n=Delete(stu,n);break; case 12: SaveFile(stu,n); } } while(s>=0&&sn+1); return (int)i-1; } /**********************************************************\ 添加信息函数
****亲*亲本本***家幸本本***亲本本**客*春本本****幸本**/ int Add(int start, struct student"p) Int n for(n=start; nClass, e"==0)break printi("学号:"); scanf("%s", (p+n)->StudentNumber) printi("姓名:") printi("语文:") scanf("%d", &((p+n)->Score[OD) printi("数学:") scanf("%od", &((p+n)->Score[lD); printi("外语:"); scanf("%d", &((p+n)->Score[2D); printi("物理:") scanf("%od", &((p+n)->Score3D) printi("化学: scanf("%d", &((p+n)->Score[4D) (p+n)->Total=0 (p+n)->Total=((p+n)->Total+(p+n)->Score[0(p+n)->Score[l +(p+n)->Score[21+(p+n)->Score[3]+(p+n)->Score[4]), return n 显示信息函数 *春家举幸**********本本本**幸本*****亲***幸本****/ void Display(struct student*p, int start, int end printi("n%9s%10s%l0s","班级”,"学号""姓名") *显示标题* printf("%8s%8%685%85%8s%8s","总分","语文""数学","外语","物理""化学") printf("n
\**********************************************************/ int Add(int start,struct student *p) { int n; for (n=start;nClass); if (strcmp((p+n)->Class,"e")==0)break; printf("学号:"); scanf("%s",(p+n)->StudentNumber); printf("姓名:"); scanf("%s",(p+n)->Name); printf("语文:"); scanf("%d",&((p+n)->Score[0])); printf("数学:"); scanf("%d",&((p+n)->Score[1])); printf("外语:"); scanf("%d",&((p+n)->Score[2])); printf("物理:"); scanf("%d",&((p+n)->Score[3])); printf("化学:"); scanf("%d",&((p+n)->Score[4])); (p+n)->Total=0; (p+n)->Total=((p+n)->Total+(p+n)->Score[0]+(p+n)->Score[1] +(p+n)->Score[2]+(p+n)->Score[3]+(p+n)->Score[4]); } return n; } /**********************************************************\ 显示信息函数 \**********************************************************/ void Display(struct student *p, int start, int end) { int i; printf("\n%9s%10s%10s","班级","学号","姓名"); /*显示标题*/ printf("%8s%8s%8s%8s%8s%8s","总分","语文","数学","外语","物理","化学"); printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~\n");
end; i++) printf("%9S%10s%10s" (p+i)->Class, (p+i)->Student Number, (p+i)->Name printf("%8d%8d%8d%8d%8d%8d", (p+i)->Total, (p+i)->Score[0), (p+i)->Score[1] i)->Score2](p+i)->Score{3(p+i)->Score4]) \n"); 按姓名排序函数 void SortName(struct student*p, int n) int i,j, k; for(i=0;1Name(p+j)>Name)>0)k=j;/交换学生姓名* printf("n完成姓名排序!ln"), 本本本春幸***幸本本幸*****本本本亲***幸幸幸举率 按总分排序函数 孝水***水客水常客水凇布客*幸客 yoid Sort Total(struct student*p, int n k f((p+k)->TotalTotal)k if(il=k)Swap(p+k, p+i) /交换总分* printf("n完成总分排序(由高到低)hn") 幸率幸本本本本******春幸本本本幸春客家举幸本本*******亲幸*
for(i=start;iClass,(p+i)->StudentNumber,(p+i)->Name); printf("%8d%8d%8d%8d%8d%8d",(p+i)->Total,(p+i)->Score[0],(p+i)->Score[1], (p+i)->Score[2],(p+i)->Score[3],(p+i)->Score[4]); printf("\n"); } } /**********************************************************\ 按姓名排序函数 \**********************************************************/ void SortName(struct student *p,int n) { int i,j,k; for (i=0;iName,(p+j)->Name)>0)k=j; /*交换学生姓名*/ if(i!=k)Swap(p+k,p+i); } printf("\n 完成姓名排序!\n"); } /**********************************************************\ 按总分排序函数 \**********************************************************/ void SortTotal(struct student *p,int n) { int i,j,k; for (i=0;iTotalTotal)k=j; if(i!=k)Swap(p+k,p+i); /*交换总分*/ } printf("\n 完成总分排序(由高到低)!\n"); } /**********************************************************\
按语文成绩排序函数 客水 *客客水**客水水凇客*水容客水涂常 void Sort Chinese(struct student*p, int n for(=0;Score[0KScore[o]k= f(il=k )Swap(p+k, p+i); /交换语文成绩* printf("hn完成语文成绩由高到低排序!n"), 按数学成绩排序函数 率本幸本**举幸率****幸率本幸本幸**/ void SortMath( struct student*p, int n) int i,j, k; for(=0;Score[1]Score[l])k= il=k)Swap(p+k, p+i); /*交换数学成绩* printf("hn完成数学成绩由高到低排序!n") 按外语成绩排序函数 *水客水客客水客水客*涂水*客水 *****本本本本本本本本本率本本幸**/ void Sort ForeignLanguage(struct student*p, int n) int i,j, k; for(=0;<n-1;i++) 1 for (=i+l: j<n: j++)
按语文成绩排序函数 \**********************************************************/ void SortChinese(struct student *p,int n) { int i,j,k; for (i=0;iScore[0]Score[0])k=j; if(i!=k)Swap(p+k,p+i); /*交换语文成绩*/ } printf("\n 完成语文成绩由高到低排序!\n"); } /**********************************************************\ 按数学成绩排序函数 \**********************************************************/ void SortMath(struct student *p,int n) { int i,j,k; for (i=0;iScore[1]Score[1])k=j; if(i!=k)Swap(p+k,p+i); /*交换数学成绩*/ } printf("\n 完成数学成绩由高到低排序!\n"); } /**********************************************************\ 按外语成绩排序函数 \**********************************************************/ void SortForeignLanguage(struct student *p,int n) { int i,j,k; for (i=0;i<n-1;i++) { k=i; for (j=i+1;j<n;j++)
f((p+k)->Score[2]Score(2])k= il=k)Swap(p+k, p+i); /*交换外语成绩* printf("n完成外语成绩由高到低排序!n"), /******幸本幸春**春幸本容率*幸**春春***幸春******料 按物理成绩排序函数 \**幸*亲亲幸本***家本客率** 水*客水水本*水客幸*水市*客水 void SortPhysics(struct student*p, int n) int i, j, k; for(i=0; iScore[3]ScoreB])k= f(il=k)Swap(p+k, p+i) 交换物理成绩* printf("n完成物理成绩由高到低排序!n"), 按化学成绩排序函数 void Sort Chemistry (struct student*p, int n) int i, i. k, for(=0;Score[4]Scorel4 ]k= if(il=k)Swap(p+k,p+i) /*交换化学成绩* printf("hn完成化学成绩由高到低排序!hn"); 按姓名检索函数
if((p+k)->Score[2]Score[2])k=j; if(i!=k)Swap(p+k,p+i); /*交换外语成绩*/ } printf("\n 完成外语成绩由高到低排序!\n"); } /**********************************************************\ 按物理成绩排序函数 \**********************************************************/ void SortPhysics(struct student *p,int n) { int i,j,k; for (i=0;iScore[3]Score[3])k=j; if(i!=k)Swap(p+k,p+i); /*交换物理成绩*/ } printf("\n 完成物理成绩由高到低排序!\n"); } /**********************************************************\ 按化学成绩排序函数 \**********************************************************/ void SortChemistry(struct student *p,int n) { int i,j,k; for (i=0;iScore[4]Score[4])k=j; if(i!=k)Swap(p+k,p+i); /*交换化学成绩*/ } printf("\n 完成化学成绩由高到低排序!\n"); } /**********************************************************\ 按姓名检索函数 \**********************************************************/
int Find(struct student*p, int n) printf("hn请输入学生姓名") /*调用 Searchi函数* if(i==-1) e/e printf没有匹配信息,请重试%slm,s) 修改信息函数 void Modify(struct student*p, int n) =Find(p, n) /*调用 Findo函数* if(>=0) *若找到匹配信息,则修改* printf("请输入新信息:n"); printi("班级:") scanf("%s" (p+1)->Class) print("学号: scanf("%s" (p+i)->StudentNumber) printi("姓名"); canf("%s" (p+1)->Name) print"语文:") scanf("%d", &((p+i)->Score[OD); printi("数学:") scanf("%od", &((p+i)->Score[lD); printi("外语:") scanf("%d", &( (p+i)->Score[2D); printf(("物理:"); scanf("%d", &((p+1)->Score3D printi("化学:") scanf("%d", &((p+i)->Score[ 4D) (p+1)->Total=0 (p+i)->Total=((p+i)->Total+(p+i)->Score[0]+(p+i)->Score[1]
int Find(struct student *p,int n) { int i; char str[20]; printf("\n 请输入学生姓名:"); scanf("%s",str); i=Search(p,str,n); /*调用 Search()函数*/ if(i==-1) printf("没有匹配信息,请重试 %s!\n",str); else Display(p,i,i); getchar(); return i; } /**********************************************************\ 修改信息函数 \**********************************************************/ void Modify(struct student *p,int n) { int i; i=Find(p,n); /*调用 Find()函数*/ if(i>=0) /*若找到匹配信息,则修改*/ { printf("请输入新信息:\n"); printf("班级:"); scanf("%s",(p+i)->Class); printf("学号:"); scanf("%s",(p+i)->StudentNumber); printf("姓名:"); scanf("%s",(p+i)->Name); printf("语文:"); scanf("%d",&((p+i)->Score[0])); printf("数学:"); scanf("%d",&((p+i)->Score[1])); printf("外语:"); scanf("%d",&((p+i)->Score[2])); printf("物理:"); scanf("%d",&((p+i)->Score[3])); printf("化学:"); scanf("%d",&((p+i)->Score[4])); (p+i)->Total=0; (p+i)->Total=((p+i)->Total+(p+i)->Score[0]+(p+i)->Score[1]
+(p+i)->Score[2]+(p+i)->Score 3]+(p+i)->Score[4] printf("hn修改已完成!n"); 删除信息函数 **亲幸本本**春本率**幸**幸*率*幸率本李率**幸**/ int Delete(struct student*p, int n) i=Find(p, n) /*调用Find函数* if(>=0) /*若找到匹配信息,则删除* pil=pn-1] n=n-1; printi("hn信息已删除!n") oid Swap( struct student"pl, struct student*p2) struct student temp int Search(struct student*p, char *t, int n) nt I for(i=0 iName, t)) return 1, urn-I 保存文件函数 void Save File(struct student*p, int n)
+(p+i)->Score[2]+(p+i)->Score[3]+(p+i)->Score[4]); printf("\n 修改已完成!\n"); } } /**********************************************************\ 删除信息函数 \**********************************************************/ int Delete(struct student *p,int n) { int i; i=Find(p,n); /*调用 Find()函数*/ if(i>=0) /*若找到匹配信息,则删除*/ { p[i]=p[n-1]; n=n-1; printf("\n 信息已删除!\n"); } return n; } void Swap(struct student *p1,struct student *p2) { struct student temp; temp=*p1; *p1=*p2; *p2=temp; } int Search(struct student *p,char *t,int n) { int i; for (i=0;iName,t)) return i; return -1; } /**********************************************************\ 保存文件函数 \**********************************************************/ void SaveFile(struct student *p,int n)