学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能
学生成绩管理系统C源代码
学生成绩管理系统C源代码搜集者:海水发布时间:06-01-27 浏览次数:23242 [大中小]#include<malloc.h>#include<stdio.h>#include<stdlib.h>#define LEN sizeof(struct scorenode)#define DEBUG#include<string.h>struct scorenode{int number;/*学号*/char name[10];/*姓名*/float yuwen;/*语文成绩*/float yingyu;/*英语成绩*/float shuxue;/*数学成绩*/struct scorenode*next;};typedef struct scorenode score;int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*//*==============================================================================================*/score*creat2311(void)/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/{score*head;score*p1,*p2,*p3,*max;int i,j;float fen;char t[10];n=0;p1=p2=p3=(score*)malloc(LEN);head=p3;/*开辟一个新单元*/printf("请输入学生资料,输0退出!\n");repeat1:printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/scanf("%d",&p1->number);while(p1->number<0){getchar();printf("输入错误,请重新输入学生学号:");scanf("%d",&p1->number);}/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/if(p1->number==0)goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/else{p3=head;if(n>0){for(i=0;i<n;i++){if(p1->number!=p3->number)p3=p3->next;else{printf("学号重复,请重输!\n");goto repeat1;/*当输入的学号已经存在,程序报错,返回前面重新输入*/}}}}printf("请输入学生姓名:");scanf("%s",&p1->name);/*输入学生姓名*/printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/scanf("%f",&p1->yuwen);while(p1->yuwen<0||p1->yuwen>100){getchar();printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/scanf("%f",&p1->yuwen);}printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/scanf("%f",&p1->yingyu);while(p1->yingyu<0||p1->yingyu>100){getchar();printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/scanf("%f",&p1->yingyu);}printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/scanf("%f",&p1->shuxue);while(p1->shuxue<0||p1->shuxue>100){getchar();printf("输入错误,请重新输入数学成绩");scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/head=NULL;while(p1->number!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(score*)malloc(LEN);printf("请输入学生资料,输0退出!\n");repeat2:printf("请输入学生学号(学号应大于0):");scanf("%d",&p1->number);/*输入学号,学号应大于0*/while(p1->number<0){getchar();printf("输入错误,请重新输入学生学号:");scanf("%d",&p1->number);}/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/if(p1->number==0)goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/else{p3=head;if(n>0){for(i=0;i<n;i++){if(p1->number!=p3->number)p3=p3->next;else{printf("学号重复,请重输!\n");goto repeat2;/*当输入的学号已经存在,程序报错,返回前面重新输入*/}}}}printf("请输入学生姓名:");scanf("%s",&p1->name);/*输入学生姓名*/printf("请输入语文成绩(0~100):");scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/while(p1->yuwen<0||p1->yuwen>100){getchar();printf("输入错误,请重新输入语文成绩");scanf("%f",&p1->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100):");scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/while(p1->yingyu<0||p1->yingyu>100){getchar();printf("输入错误,请重新输入英语成绩");scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/ printf("请输入数学成绩(0~100):");scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/while(p1->shuxue<0||p1->shuxue>100){getchar();printf("输入错误,请重新输入数学成绩");scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/}end:p1=head;p3=p1;for(i=1;i<n;i++){for(j=i+1;j<=n;j++){max=p1;p1=p1->next;if(max->number>p1->number){k=max->number;max->number=p1->number;p1->number=k;/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/strcpy(t,max->name);strcpy(max->name,p1->name);strcpy(p1->name,t);/*交换前后结点中的姓名,使之与学号相匹配*/fen=max->yuwen;max->yuwen=p1->yuwen;p1->yuwen=fen;/*交换前后结点中的语文成绩,使之与学号相匹配*/fen=max->yingyu;max->yingyu=p1->yingyu;p1->yingyu=fen;/*交换前后结点中的英语成绩,使之与学号相匹配*/fen=max->shuxue;max->shuxue=p1->shuxue;p1->shuxue=fen;/*交换前后结点中的数学成绩,使之与学号相匹配*/}}max=head;p1=head;/*重新使max,p指向链表头*/}p2->next=NULL;/*链表结尾*/printf("输入的学生数为:%d个!\n",n);return(head);}/*==============================================================================================*//*==============================================================================================*/score*load2311(score*head)/*函数load2311,功能:从文件读入学生记录*/{score*p1,*p2;int m=0;char filepn[10];FILE*fp;printf("请输入文件路径及文件名:");scanf("%s",filepn);/*输入文件路径及名称*/if((fp=fopen(filepn,"r+"))==NULL){printf("不能打开文件!\n");return0;}fscanf(fp,"考试成绩管理系统\n");fscanf(fp,"作者:周纯钢班级:信息023学号:11\n");fscanf(fp,"-----------------------------------------\n");fscanf(fp,"|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");fscanf(fp,"-----------------------------------------\n");/*读入表格域*/printf("考试成绩管理系统\n");printf("作者:周纯钢班级:信息023学号:11\n");printf("-----------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");printf("-----------------------------------------\n");/*打印表格域*/m=m+1;if(m==1){p1=(score*)malloc(LEN);/*开辟一个新单元*/fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);/*文件读入与显示*/head=NULL;do{n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(score*)malloc(LEN);/*开辟一个新单元*/fscanf(fp,"%d%s%f%f%f\n",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);/*文件读入与显示*/}while(!feof(fp));p2->next=p1;p1->next=NULL;n=n+1;}printf("-----------------------------------------\n");/*表格下线*/fclose(fp);/*结束读入,关闭文件*/return(head);}/*==============================================================================================*//*==============================================================================================*/score*add2311(score*head,score*stu)/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/{score*p0,*p1,*p2,*p3,*max;int i,j;float fen;char t[10];p3=stu=(score*)malloc(LEN);/*开辟一个新单元*/printf("\n输入要增加的学生的资料!");repeat4:printf("请输入学生学号(学号应大于0):");scanf("%d",&stu->number);/*输入学号,学号应大于0*/while(stu->number<0){getchar();printf("输入错误,请重新输入学生学号:");scanf("%d",&stu->number);}/*输入错误,重新输入学号*/ /******************************************************/if(stu->number==0)goto end2;/*当输入的学号为0时,转到末尾,结束追加*/else{p3=head;if(n>0){for(i=0;i<n;i++){if(stu->number!=p3->number)p3=p3->next;else{printf("学号重复,请重输!\n");goto repeat4;/*当输入的学号已经存在,程序报错,返回前面重新输入*/}}}}/******************************************************/printf("输入学生姓名:");scanf("%s",stu->name);/*输入学生姓名*/printf("请输入语文成绩(0~100):");scanf("%f",&stu->yuwen);/*输入语文成绩,成绩应在0-100*/while(stu->yuwen<0||stu->yuwen>100){getchar();printf("输入错误,请重新输入语文成绩");scanf("%f",&stu->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100):");scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/while(stu->yingyu<0||stu->yingyu>100){getchar();printf("输入错误,请重新输入英语成绩");scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/printf("请输入数学成绩(0~100):");scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/while(stu->shuxue<0||stu->shuxue>100){getchar();printf("输入错误,请重新输入数学成绩");scanf("%f",&stu->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/p1=head;p0=stu;if(head==NULL){head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/else/*原来链表不为空*/{if(p1->next==NULL)/*找到原来链表的末尾*/{p1->next=p0;p0->next=NULL;/*将它与新开单元相连接*/}else{while(p1->next!=NULL)/*还没找到末尾,继续找*/{p2=p1;p1=p1->next;}p1->next=p0;p0->next=NULL;}}n=n+1;p1=head;p0=stu;for(i=1;i<n;i++){for(j=i+1;j<=n;j++){max=p1;p1=p1->next;if(max->number>p1->number){k=max->number;max->number=p1->number;p1->number=k;/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/strcpy(t,max->name);strcpy(max->name,p1->name);strcpy(p1->name,t);/*交换前后结点中的姓名,使之与学号相匹配*/fen=max->yuwen;max->yuwen=p1->yuwen;p1->yuwen=fen;/*交换前后结点中的语文成绩,使之与学号相匹配*/fen=max->yingyu;max->yingyu=p1->yingyu;p1->yingyu=fen;/*交换前后结点中的英语成绩,使之与学号相匹配*/fen=max->shuxue;max->shuxue=p1->shuxue;p1->shuxue=fen;/*交换前后结点中的数学成绩,使之与学号相匹配*/}}max=head;p1=head;/*重新使max,p指向链表头*/}end2:printf("现在的学生数为:%d个!\n",n);return(head);}/*==============================================================================================*//*==============================================================================================*/score*search2311(score*head)/*函数search2311,功能:查询学生成绩*/{int number;score*p1,*p2;printf("输入要查询的学生的学号,");scanf("%d",&number);while(number!=0){if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}printf("-----------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");printf("-----------------------------------------\n");/*打印表格域*/p1=head;while(number!=p1->number&&p1->next!=NULL){p2=p1;p1=p1->next;}if(number==p1->number){printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);printf("-----------------------------------------\n");}/*打印表格域*/elseprintf("%d不存在此学生!\n",number);printf("输入要查询的学生的学号,");scanf("%d",&number);}printf("已经退出了!\n");return(head);}/*==============================================================================================*//*==============================================================================================*/score*del2311(score*head)/*函数del2311,功能:删除学生资料*/{score*p1,*p2;int number;printf("输入要删除的学生的学号(输入0时退出):");scanf("%d",&number);getchar();while(number!=0)/*输入学号为0时退出*/{if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}p1=head;while(number!=p1->number&&p1->next!=NULL)/*p1指向的不是所要找的首结点,并且后面还有结点*/{p2=p1;p1=p1->next;}/*p1后移一个结点*/if(number==p1->number)/*找到了*/{if(p1==head)head=p1->next;/*若p1指向的是首结点,把地二个结点地址赋予head*/elsep2->next=p1->next;/*否则将下一个结点地址赋给前一结点地址*/printf("删除:%d\n",number);n=n-1;}elseprintf("%d不存在此学生!\n",number);/*找不到该结点*/printf("输入要删除的学生的学号:");scanf("%d",&number);getchar();}#ifdef DEBUGprintf("已经退出了!\n");#endifprintf("现在的学生数为:%d个!\n",n);return(head);}/*==============================================================================================*//*==============================================================================================*/void print2311(score*head)/*函数print2311,功能:显示学生成绩*/{score*p;if(head==NULL){printf("\n没有任何学生资料!\n");}else{printf("%d\n",n);printf("-----------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");printf("-----------------------------------------\n");/*打印表格域*/p=head;do{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue);printf("-----------------------------------------\n");/*打印表格域*/p=p->next;}while(p!=NULL);/*打印完成了*/}}/*==============================================================================================*//*==============================================================================================*/score*statistics2311(score*head)/*函数statistics2311,功能:统计学生成绩*/{float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;score*p;int x,y=0,i=0;p=head;printf("1个人总分和平均分\t2单科平均分\t3总分最高分\t4总分最低分\n");scanf("%d",&x);getchar();switch(x)/*用switch语句实现功能选择*/{case1:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/else{printf("---------------------------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|总分\t|平均分\t|\n");printf("---------------------------------------------------------\n");/*打印表格域*/while(p!=NULL){sum1=p->yuwen+p->yingyu+p->shuxue;/*计算个人总分*/ave1=sum1/3;/*计算个人平均分*/printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue,sum1,ave1);/*打印结果*/printf("---------------------------------------------------------\n");/*打印表格域*/p=p->next;}}return(head);break;case2:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/while(p!=NULL){sum1=sum1+p->yuwen;sum2=sum2+p->yingyu;sum3=sum3+p->shuxue;/*计算总分*/y=y+1;ave1=sum1/y;ave2=sum2/y;ave3=sum3/y;/*计算平均分*/p=p->next;/*使p指向下一个结点*/}printf("语文平均分是%.1f\n",ave1);printf("英语平均分是%.1f\n",ave2);printf("数学平均分是%.1f\n",ave3);/*打印结果*/return(head);break;case3:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/max=p->yuwen+p->yingyu+p->shuxue;while(i<n){i=i+1;sum1=p->yuwen+p->yingyu+p->shuxue;/*计算个人总分*/if(max<sum1)max=sum1;p=p->next;}printf("总分最高分:%.1f",max);printf("\n");return(head);break;case4:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/while(p!=NULL){min=p->yuwen+p->yingyu+p->shuxue;while(p!=NULL){sum2=p->yuwen+p->yingyu+p->shuxue;if(min>sum2)min=sum2;p=p->next;}}printf("总分最低分:%.1f",min);printf("\n");return(head);break;default:printf("输入错误,请重试!\n");}return(head);}/*==============================================================================================*//*==============================================================================================*/save2311(score*p1)/*函数save2311,功能:保存学生的资料*/{FILE*fp;char filepn[20];/*用来存放文件保存路径以及文件名*/printf("请输入文件路径及文件名:");scanf("%s",filepn);if((fp=fopen(filepn,"w+"))==NULL){printf("不能打开文件!\n");return0;}fprintf(fp,"考试成绩管理系统\n");fprintf(fp,"作者:周纯钢班级:信息023学号:11\n");fprintf(fp,"-----------------------------------------\n");fprintf(fp,"|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");fprintf(fp,"-----------------------------------------\n");/*打印表格域*/while(p1!=NULL){fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);p1=p1->next;/*下移一个结点*/}fclose(fp);printf("文件已经保存!\n");return0;}/*==============================================================================================*//*==============================================================================================*/score*taxis2311(score*head)/*定义排序函数。
C语言课程设计 学生成绩管理系统 源代码
//学生成绩管理系统//用户名:xdxy 密码:700619#include<stdio.h>#include<conio.h> /*清屏*/#include <stdlib.h> /*显示目录*/#include<string.h>#define MAX 1000void menu();void input(); /*输入数据函数*/ void sort(); /*排序数据函数*/ void display(); /*显示数据函数*/ void display1(); /*显示各科成绩函数*/ void insert(); /*插入数据函数*/ void del(); /*删除数据函数*/ void average(); /*平均值函数*/void find(); /*查找数据函数*/ void save(); /*保存数据函数*/ void read(); /*读出数据函数*/ void del_file(); /*删除文件函数*/void modify(); /*修改文件函数*/int now_no=0;struct student //定义学生信息{int no; // 学号char name[20]; //姓名char sex[4]; //性别float score1; //成绩1float score2; //成绩2float score3; //成绩3float sort; //排序成绩float ave; //平均分float sum; //总分};void main(){int h,flag1,flag2;char name[20]="xdxy",password[10]="700619";char person[20],password1[10];printf ("\t\t ******** 欢迎进入学生成绩管理系统!********\n\n");printf ("\t\t\t 用户登录\n\n");for(h=0;h!=5;){printf("\t\t\t\t 用户名:");gets(person);flag1=strcmp(person,name);printf("\t\t\t\t 密码:");gets(password1);flag2=strcmp(password,password1);if(flag1==0 && flag2==0){printf("\t\t\t\t 登陆成功!\n\n");menu();break;}else{printf ("\t\t\t 用户名或密码错误!\n\n");printf ("\t\t\t 请注意:您还剩%d次机会!\n\n",4-h);h++;}}if (h=5)printf ("对不起,您输入的用户名或密码有误,已被强制退出。
学生成绩管理系统(数据结构C语言版源代码)
让结局不留遗憾,让过程更加完美。
#include<stdio.h>#include<string.h>#include<stdlib.h>struct students{char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *next; /*用与构建连表指向下一结点*/};FILE *fp; /*定义全局变量fp*/void Revisemenu();/*修改菜单*/void Sortmenu();/*排序菜单*/void menu();/*主菜单*/void secret();/*安全验证*/struct students * Input();/*新建学生信息*/void fprint(struct students *head);/*将信息导入文件可追加*/void fprint_(struct students *head);/*将信息导入文件并覆盖*/void Browse(struct students *head);/*浏览全部学生信息*/struct students * create(struct students *headint *n);/*从tushu_list中读取数据构建链表*/void FindofNum(struct students *head);/*按学号查询学生信息*/void FindofNname(struct students *head);/*按姓名查询学生信息*/void SortEnglish(struct students * head);/*按英语成绩排序*/void SortJava(struct students * head);/*按Java成绩排序*/void SortSjjg(struct students * head);/*按数据结构成绩排序*/void SortSzdl(struct students * head);/*按数字逻辑电路成绩排序*/ void SortJsj(struct students * head);/*按计算机组成原理成绩排序*/ struct students * Delete(struct students * headchar m[15]);/*按学号删除学生成绩信息*/struct students * Revise();/*修改学生信息(按编号修改)*//*主菜单*/void menu(){printf("\n\n");printf("***************************************************\n");printf(" 学生成绩管理系统 \n");printf("---------------------------------------------------\n");printf(" 1-添加新同学 2-浏览学生信息 \n");printf(" 3-按学号查询 4-按姓名查询 \n");printf(" 5-按成绩排序 6-修改学生信息 \n");printf(" 7-删除学生信息 0-退出系统 \n");printf("---------------------------------------------------\n");printf("___________________________________________________\n"); }/*排序菜单*/void Sortmenu(){printf("\n\n");printf("***************************************************\n");printf(" 按成绩排序 \n");printf(" 1-大学英语 2-JAVA编程 \n");printf(" 3-数据结构 4-数字逻辑电路 \n");printf(" 5-计算机组成原理 0-返回上级菜单 \n");printf("***************************************************\n"); }/*修改菜单*/void Revisemenu(){printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf(" 1--修改学生姓名 2--修改学生学号 \n"); printf(" 3--修改学生性别 4--修改英语成绩 \n"); printf(" 5--修改JAVA成绩 6--修改数据结构 \n"); printf(" 7--修改数字电路 8--修改计算计 \n");printf(" 0--返回上级菜单 \n"); printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); }/*安全验证*/void secret(){char a[20];printf("**欢迎来到学生信息管理系统进入系统前请先进行密码验证---");printf(" ");do{gets(a); /*输入密码*/system("cls"); /*调用库函数清屏*/printf("对不起!您输入的密码有误请重新输入---");}while(strcmp(a"0605")!=0); /*单一密码"0605"*/system("cls");}/*新建学生信息*/struct students * Input(){struct students *p1*p2*head; /*建立辅助结点及头结点*/char Name;int n=0x;printf("\n请按对应项输入学生信息以#结束:\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机组成原理\n");p1=(struct students *)malloc(sizeof(struct students));head=p2=p1;do{ /*使用do while语句输入学生信息*/scanf("%s"&p1->Name);if(strcmp(p1->Name"#")==0)break; /*判断结束符*/elsescanf("%s%s%lf%lf%lf%lf%lf"p1->Nump1->Sex&p1->English&p1->Java&p1->Sjjg&p1->Szdl&p1->Jsj);Name='#';p1=(struct students *)malloc(sizeof(struct students));p2->next=p1;p2=p1;n++;}while(1);p1->next=NULL;printf("学生信息输入结束!\n");getchar();printf("是否保存学生信息?(1.是/2.否):");scanf("%d"&x);if(x==1)fprint(head); /*调用函数保存至文件*/ elseprintf("\n文件没有被保存!\n");return head; /*返回头指针*/}/*将信息导入文件可追加*/void fprint(struct students *head){struct students *p1;if((fp=fopen("students_list.txt""a"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1->next!=NULL;p1=p1->next) /*遍历*/fprintf(fp"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p1->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/printf("\n学生信息已成功保存到文件 students_list.txt 中!\n");getchar();}/*将信息导入文件并覆盖*/void fprint_(struct students *head){struct students *p1;if((fp=fopen("students_list.txt""w"))==NULL)printf("File open error!\n");exit(0);}for(p1=head;p1!=NULL;p1=p1->next) /*遍历*/fprintf(fp"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p1->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/;getchar();}/*浏览全部学生信息*/void Browse(struct students *head){char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/if((fp=fopen("students_list.txt""a+"))==NULL){printf("File open error!\n");exit(0);}printf("-------------------------------------------------------------\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(!feof(fp))/*读取并输出*/{fscanf(fp"%s%s%s%lf%lf%lf%lf%lf"NameNum&English&Java&Sjjg&Szdl&Jsj);printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"NameNumSexEnglishJavaSjjgSzdlJsj);};if(fclose(fp)){printf("Can not close the file!\n");exit(0);}}/*从tushu_list中读取数据构建链表*/struct students * create(struct students * headint *n){FILE *fp;struct students*p*p1*p2;if((fp=fopen("students_list.txt""a+"))==NULL){printf("File open error!\n");exit(0);}while(!feof(fp)){(*n)++;p=(struct students *)malloc(sizeof(struct students));fscanf(fp"%s%s%s%lf%lf%lf%lf%lf"p->Namep->Nump->Sex&p->English&p->Java&p->Sjjg&p->Szdl&p->Jsj);if(head==NULL){head=p;p1=p;}else{p1->next=p;p2=p1;p1=p;}}p2->next=NULL;free(p);(*n)--;fclose(fp);return head;}/*按姓名查询学生信息*/void FindofName(struct students *head) {int i=0n=0;char b[20];struct students *p;head=create(head&n);p=head;printf("\n请输入要查询的学生姓名:");scanf("%s"b);while(p!=NULL){if(strcmp(p->Nameb)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到名为"%s"的学生信息!\n"b);}/*按学号查询学生信息*/void FindofNum(struct students *head){int i=0n;char b[20];struct students *p;head=create(head&n);p=head;printf("\n请输入要查询的学生学号:");scanf("%s"b);while(p!=NULL){if(strcmp(p->Numb)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到学号为"%s"学生信息!\n"b);}/*按英语成绩排序*/void SortEnglish(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double English;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;English=p->English; /*将链表中第一个成绩赋给English*/while(p!=NULL){if((p->English)>English)/*比较*/English=p->English;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->English==English){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->English==English){ /*分数相同时无需比较*/ printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/ printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按英语成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按JAVA成绩排序*/void SortJava(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Java;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Java=p->Java; /*将链表中第一个成绩赋给Java*/while(p!=NULL){if((p->Java)>Java)/*比较*/Java=p->Java;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Java==Java){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Java==Java){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按Java成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数据结构排序*/void SortSjjg(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Sjjg;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Sjjg=p->Sjjg; /*将链表中第一个成绩赋给Sjjg*/while(p!=NULL){if((p->Sjjg)>Sjjg)/*比较*/Sjjg=p->Sjjg;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Sjjg==Sjjg){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Sjjg==Sjjg){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按数据结构成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数字电路排序*/void SortSzdl(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Szdl;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Szdl=p->Szdl; /*将链表中第一个成绩赋给Szdl*/while(p!=NULL){if((p->Szdl)>Szdl)/*比较*/Szdl=p->Szdl;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Szdl==Szdl){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Szdl==Szdl){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按数字电路成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按计算机组成原理排序*/void SortJsj(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Jsj;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Jsj=p->Jsj; /*将链表中第一个成绩赋给Jsj*/while(p!=NULL){if((p->Jsj)>Jsj)/*比较*/Jsj=p->Jsj;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Jsj==Jsj){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Jsj==Jsj){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按学号删除学生成绩信息*/struct students * Delete(struct students * headchar m[15]){struct students *ptr1*ptr2;int n;printf("\n所有学生信息如下:\n");Browse(head);printf("\n请输入想要删除的学生学号:");scanf("%s"m);head=create(head&n);if(head==NULL){printf("无学生信息!\n");return head;}if((strcmp(head->Numm)==0)&&head!=NULL){ptr2=head;head=head->next;free(ptr2);}if(strcmp(head->Numm)!=0){ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(strcmp(ptr2->Numm)==0){ptr1->next=ptr2->next;free(ptr2);}elseptr1=ptr2;ptr2=ptr1->next;}}fprint_(head);printf("\n学号为' %s '学生信息已被删除并保存至文件!\n"m);return head;}/*修改学生信息(按编号修改)*/struct students * Revise(){int n=0t;char num[10];char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *head=NULL;struct students *p;printf("\n所有学生信息如下:\n");Browse(head);head=create(head&n);printf("\n输入需要修改的学生的学号:");scanf("%s"num);p=head;while(head!=NULL){if(strcmp(p->Numnum)==0){system("cls");Revisemenu();printf("编号为%s的学生信息如下:\n"num);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);while(1){printf("请选择需要修改的信息:");scanf("%d"&t);switch(t){case 1:printf("请输入新姓名:");scanf("%s"Name);strcpy(p->NameName);break;case 2:printf("请输入新学号:");scanf("%s"&Num);strcpy(p->NumNum);break;case 3:printf("请输入新性别:");scanf("%s"Sex);strcpy(p->SexSex);break;case 4:printf("请输入新英语成绩:");scanf("%lf"&English);p->English=English;break;case 5:printf("请输入新Java成绩:");scanf("%lf"&Java);p->Java=Java;break;case 6:printf("请输入新数据结构成绩:");scanf("%lf"&Sjjg);p->Sjjg=Sjjg;break;case 7:printf("请输入新数字电路成绩:");scanf("%lf"&Szdl);p->Szdl=Szdl;break;case 8:printf("请输入新计算机组成原理成绩:");scanf("%lf"&Jsj);p->Jsj=Jsj;break;case 0:system("cls");menu();goto lab;break;default:printf("对不起输入有误!");break;}}}elsep=p->next;}lab:fprint_(head);printf("修改完成并储存至文件!\n");return head;}/*主函数*/void main(){int choicech;char m[15];struct students *head=NULL;secret();menu();while(1){printf("请输入选项:");scanf("%d"&choice);switch(choice){case 1:Input();break;case 2:system("cls");menu();Browse(head);break;case 3:system("cls");menu();FindofNum(head);break;case 4:system("cls");menu();FindofName(head);break;case 5:system("cls");Sortmenu();do{printf("请输入您的选择:");scanf("%d"&ch);switch(ch){case 1:system("cls");Sortmenu();SortEnglish(head);break;case 2:system("cls");Sortmenu();SortJava(head);break;case 3:system("cls");Sortmenu();SortSjjg(head);break;case 4:system("cls");Sortmenu();SortSzdl(head);break;case 5:system("cls");Sortmenu();SortJsj(head);break;}}while(ch!=0);system("cls");menu();break;case 6:system("cls");menu();Revise();break;case 7:system("cls");menu();head=Delete(headm);break;case 0:system("cls");printf("\t\t欢迎下次再来!");exit(0);default:printf("对不起输入有误!");break;}}return ;}。
c语言学生成绩管理系统(含源代码)
{int i,j,k;
STU t;
total();
avergescore();
system("cls”);
for(i=0;i<n—1;i++)
{for(k=i,j=i+1;j<n;j++)
if(stu[j].aver>stu[k].aver)
k=j;
if(k!=j)
char name[20];
float score[M];
float aver;
float total;
}STU;
STU stu[N];
int n;
void inputscore(void);
void savescore(void);
void avergescore(void);
void total(void);
printf(”平均分低于60的学生名单\n");
for(i=0;i〈n;i++)
{
if(stu[i].aver〈60)
printf(”%s\n”,stu[i]。name);
}/*统计不及格学生名单*/
}
/***************修改学生成绩*****************/
void modify(void)
printf("菜单\n");
printf("输入成绩-———-----—-————-—-——-—-——-—--—-—————-1\n");
printf(”查看成绩及成绩排序—---—--——-—-———---—--—--———2\n”);
C语言课程设计 200行代码 -学生成绩查询系统.doc
功能:查询修改统计成绩。
#include <stdio.h>struct student /*成绩表的结构声明*/{int num;char name[15];char sex;float WuLi;float ShuXue;float YingYu;float KuaiJi;float totle;};/*定义6个学生的信息:*/#define STU_NUMBER 6 /*宏定义学生数为6*/struct student Stu[STU_NUMBER]={{101,"yuchen", 'F', 98,85,96,89,0},{102,"xiaotong", 'F', 99,91,90,93,0},{103,"likanglong",'M', 76,83,74,82,0},{104,"yinger", 'F', 88,76,89,77,0},{105,"fengjiao", 'F', 97,100,94,96,0},{106,"sunyao", 'M', 87,89,66,84,0} };int SelectMainMenu(); /*显示并选择主菜单。
返回:被选择的菜单项*//*所有的函数声明:*/void Show(); /*成绩查询模块*/void Modify(); /*成绩修改模块*/void Stat(); /*成绩统计模块*/void StatAve(float *AveWuLi,float *AveShuXue,float *AveYingYu,float *AveKuaiJi);/*统计平均分*/int FindStudent(int num); /*根据学号查找某一学生*/void SetAllTotle(); /*计算所有学生总分*/void SetTotle(int No); /*计算第No个学生总分*/void ShowAllStudent(); /*显示所有成绩*/void ShowTitle(); /*显示表头信息*/void ShowStudent(int No); /*显示第No个的学生信息*/void main(){int isend=0,password=0; /*程序结束标志量,0表示不结束,1表示结束*/SetAllTotle(); /*计算所有学生总分*/while(password!=666){printf("qing shu ru mi ma:\n");scanf("%d",&password);}{switch(SelectMainMenu()) /*显示并选择主菜单*/{case 1: /*成绩查询*/Show(); /*调用成绩查询函数*/break;case 2: /*成绩修改*/Modify(); /*调用成绩修改函数*/break;case 3: /*成绩统计*/Stat(); /*调用成绩统计函数*/break;case 4: /*退出系统*/printf("\nxie xie nin de shi yong,zai jian!\n\n");isend = 1; /*设置程序结束标志*/break;}if(isend) break; /*程序结束*/}}int SelectMainMenu() /*显示并选择主菜单。
C语言课程设计-学生成绩管理系统-完整版
#include<stdio.h> #include<stdlib.h>#include<io.h> #include<string.h> /* strcmp 函数原型包含 */#define N 100 /* 定义最大学生人数为 100*/ struct student /* 学生结构体定义 */ char no[11]; /* 学号 ,10 位 */ char name[10];/* 姓名, 3 个汉字 */ char grade[10];/* 班级 */ char pro[20];/* 专业 */float score[5];/* 储存 5 门功课的成绩 */ float ave;/* 储存平均分 */ int year;/* 入学年 *//* 通过 i 的值,判断信息要查找的信息是否存在 *//* 输出学生成绩函数(公共函数) */ /* 系统初始化函数 */ /* 建立新的数据文件 *//* 从数据文件中读取数据 */ /* 维护界面函数 */ /* 新增一个学生成绩函数 */ /* 修改学生成绩 */ /* 修改成绩 *//* 删除学生信息函数 */ /* 统计界面函数 */ /* 计算每个学生平均分 */ /* 计算每门课程的平均分 */ /* 排序函数 */ /* 按学号排序 */ /* 按平均分排序 */ /* 按单科成绩排序 *//* 交换结构体数组中的两个记录 *//* 选择输出单科成绩 */ /* 查找界面函数 */ /* 按学号查找 */ int findname(char cname[]);/* 按姓名查找 */ void findyear(int cyear); /* 按入学年查找 */ void save(); /* 保存文件 */ void stop(); /* 停顿函数 */void stop()/* 停顿函数 (公共函数) */{printf("Press Any Key To Continue...\n"); getchar();}}stu[N]; int num; void panduani(int); void output(); voidinit(); void newfile(); void read1(); void weihu(); void new1(); void xiugai(); void xgcj(int); void delete1(); void tongji(); void tongji1(); void tongji2(); void paixu1(); void paino(); void paiave(); void paidkcj(); voidchange(int,int); void outputx(int); void find1(); int find(char sno[]);void output() /* 输出学生成绩函数(公共函数) */{int i,j;printf("===================================================================\n");printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("===================================================================\n");for(i=0;i<num;i++){printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year) Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /* 系统初始化函数*/{if(access("stu.dat",0)) /* 判断文件是否存在*/newfile(); /* 若不存在,新建数据文件*/elseread1(); /* 若存在,读取数据*/}void newfile() /* 建立新的数据文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}printf(" 初次运行,进行数据初始化...\n");/* 显示" 初次运行,进行数据初始化..."*/ stop();printf(" 请输入学生人数:");/* 显示"请输入学生人数:"*/ scanf("%d",&num);for(i=0;i<num;i++){printf(" 请输入第%d 个学生的学号:",i+1); /* 显示"请输入第i+1 个学生的学号:"*/ getchar(); /* 吃回车*/gets(stu[i].no);printf(" 姓名:"); /* 显示"姓名:"*/gets(stu[i].name);printf(" 班级:"); /* 显示"班级:"*/gets(stu[i].grade);printf(" 专业:"); /* 显示"专业:"*/gets(stu[i].pro);printf(" 入学年n:");/* 显示" 入学年"*/scanf("%d",&stu[i].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[i].score[0]);printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[i].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[i].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[i].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /* 把第i+1 名学生成绩写入文件*/ }fclose(fp);printf("========================\n");printf(" 刚才输入的%d 个数据为:\n",num); /*显示"刚才输入的num 个数据为:"*/ printf("========================\n\n");output();}void read1() /* 从数据文件中读取数据*/{FILE *fp;num=0; /*num 为数据文件中实际存储的学生人数*/fp=fopen("stu.dat","r");if(fp==NULL) /* 数据文件不存在*/{printf(" 文件打开失败!重新运行程序\n"); /* 显示"文件打开失败!重新运行程序"*/ exit(0);}while(!feof(fp)) /* 文件结束检测"*/{fread(&stu[num],1,sizeof(struct student),fp); num++;}num--; fclose(fp); printf("\t\t\t=======================================\n"); printf(" \t\t\t现有 %d 个学生的成绩: \n",num); /* 显示 "现有 NUM 个学生的成绩: "*/printf("\t\t\t=======================================\n\n"); output();}void weihu() /* 维护界面函数 */{char c1; while(1){getchar(); if(c1=='9') break; switch(c1) { case '1': new1(); break; case '2': delete1(); case '3': xiugai(); break; default:printf(" 选择有误,请重选! \n");/*" 选择有误,请重选! "*/} } }void new1() /* 新增一个学生成绩函数 */{printf(" 请输入学号 :"); /* 显示 "请输入学号 :"*/ gets(stu[num].no);printf("\t\t\t* 维护*\n");printf("\t\t\t* 1. 新增 *\n"); /*新增 */printf("\t\t\t* 2. 删除 *\n"); /* 删除(按学号)*/printf("\t\t\t* 3. 修改 *\n"); /* 修改 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\t\t\t************************\n");printf("\t\t\t 请选\n");/* 请选*/printf("\n\n\n\t\t\t* ********************* **\n"); c1=getchar();printf(" 姓名:"); /* 显示"姓名:"*/ gets(stu[num].name);printf(" 班级:"); /* 显示" 班级:"*/ gets(stu[num].grade);printf(" 专业:"); /* 显示"专业:"*/ gets(stu[num].pro);printf(" 入学年:");/* 显示"入学年"*/ scanf("%d",&stu[num].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[num].score[0]); printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[num].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[num].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[num].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/ scanf("%f",&stu[num].score[4]);num++; printf("\n======================================\n");"*/ printf(" 现有%d 个学生的成绩:\n",num); /* 显示"现有NUM 个学生的成绩:printf("======================================\n\n");output();}void xiugai() /* 修改学生成绩*/{char xg[11];int i;printf("\n 请输入要修改学生的学号 :\n\n"); gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break; if(i==num){printf("\n 数据文件无该生信息 !\n\n 请重新输入学号 .\n\n"); stop(); return;}xgcj(i);} void xgcj(int x)/* 修改成绩 */{ char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10],c; int j,k; p=xueke; for(;;){**\n\n"); printf("\t\t\t 成绩 printf("\t\t\t 1.C 语言 printf("\t\t\t 2.高数printf("\t\t\t 3.物理 printf("\t\t\t 4.电路 printf("\t\t\t5.模电 printf("\t\t\t9.返回printf("\n");printf("\t\t\t** ******************************** printf("\t\t\t** ******************************** \n");\n"); /*C 语言 */ \n"); /*高数 */\n"); /* 大学物理 */ \n"); /*电路 */ \n"); /*模电 */ \n\n"); /* 返回上级 */**\n\n"); printf("\t 请选择要修改的成绩 (按 1.2.3.4.5.9):\n"); c=getchar(); getchar();if(c=='9')break; else if (c>='1'&&c<='5'){k=c-49;printf("\n 请输入 %s 成绩 :\n",p+k); scanf("%f",&stu[x].score[k]); printf("\n 修 息为 :\n");printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物电路模电printf("===================================================================\n");printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].ye ar);for(j=0;j<5;j++)printf(" %.1f",stu[x].score[j]);printf("\n");}else printf("\n 选择有误,请重选!\n\n");stop();}}int find(char sno[]) /* 按学号查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /* 判断两个字符串相等*/return i;/* 查找成功*/return -1;/* 查找失败*/}void delete1() /* 删除学生信息函数*/{char cno[11];int i,j;printf(" 请输入要删除的学生学号:"); /*" 请输入要删除的学生学号"*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf(" 现有%d 个学生的成绩:\n",num); /* 显示" 现有NUM 个学生的成绩:"*/ output();}else {printf(" 请输入正确的学号. \n");stop();}}void tongji(){int i;char c2; while(1) {printf("\t\t\t 请选择 :\n");/* 请选择: */ c2=getchar(); getchar(); if(c2=='9') break; switch(c2){case '1': tongji1();printf("\n\n 学生平均分为 :\n");printf("===========================================\n"); printf(" 学号 姓名 入学年 平均分 \n");printf("===========================================\n"); for(i=0;i<num;i++)printf("%s %s %d %.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop(); break; case '2': tongji2(); break; default:printf(" 选择有误,请重选 \n");/*" 选择有误,请重选! "*/ }} }void tongji1() /* 计算每个学生平均分 */ { int i,j;for(i=0;i<num;i++){stu[i].ave=0; for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j]; stu[i].ave=stu[i].ave/5;}}void tongji2()/* 计算每门课程的平均分 */{int i,j; float sum;printf("\t\t\t* 统计 *\n");printf("\t\t\t*1. 学生平均分 *\n"); /* 计算学生平均分 */ printf("\t\t\t*2. 课程平均分 *\n"); /* 计算每门课程平均分 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\n\n\n\t\t\t ***************************** **\n"); printf("\t\t\t* **************************** **\n"); /* 统计界面函数 */float avec[5]; /* 储存每门课的平均分*/ for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n 各科平均分:\n");/*" 各科平均分:"*/printf("===================================\n"); printf("C 语言高数大物电路模电\n"); printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /* 排序界面*/{char c3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t* 排序* \n");printf("\t\t\t* 1. 按学号排序* \n"); /* 按学号排序*/printf("\t\t\t* 2. 按平均分排序* \n"); /* 按平均分排序*/printf("\t\t\t* 3. 按单科成绩排序* \n"); /* 按单科成绩排序*/printf("\t\t\t* 9. 返回* \n"); /* 返回*/printf("\t\t\t***********************************\n\n");printf("\t 请选(按 1.2.3.9):\n");/* 请选择:*/c3=getchar();getchar();if(c3=='9') break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break; default:printf("\n 选择有误,请重选!\n\n");/* 选择有误,请重选!*/ stop();}}}void paino() /* 按学号排序*/{ /* 按学号从低到高冒泡法排序*/int i,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0) change(j,j+1);printf("\n 排序后为:\n"); /*" 排序后为:"*/output();}void paiave() /* 按平均分排序*/{ /* 按平均分从高到低冒泡法排序*/int i,j;tongji1(); /* 计算平均成绩*/ for(i=0;i<num;i++) for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave) change(j,j+1);printf("\n\t 排序后为:\n"); /*" 排序后为:"*/printf("\t===============================================\n"); printf("\t 学号姓名入学年平均分排名\n");printf("\t===============================================\n"); for(i=0;i<num;i++) printf("\t%s %s %d %.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1); stop();void paidkcj() /* 按单科成绩排序*/ {char c;int i,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 单科成绩\n");printf("\t\t\t 1.C 语言\n"); /*C 语言*/printf("\t\t\t 2.高数\n"); /*高数*/printf("\t\t\t 3.物理\n"); /* 大学物理*/printf("\t\t\t 4.电路\n"); /*电路*/printf("\t\t\t 5.模电\n"); /*模电*/printf("\t\t\t 9.返回\n\n"); /* 返回上级*/printf("\t\t\t************************************\n\n");( 按 1.2.3.4.5.9):\n");printf("\t 请选择:c=getchar();getchar();else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++) for(j=0;j<num-1-i;j++) if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\n 选择有误,请重选!\n\n"); stop();}}void change(int i,int j)/* 交换结构体数组中的两个记录*/{struct student temp; temp=stu[i]; stu[i]=stu[j]; stu[j]=temp;}void outputx(int k) /* 选择输出单科成绩*/char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10]; /* 定义一个指向包含 10 个字符型元素的一维数组的指针变量 */int i;p=xueke;printf("\n\t 排序后为 :\n");printf("\t===============================================\n"); printf("\t 学号 姓名入学年 %s 排名 \n",p+k);printf("\t===============================================\n"); for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no, stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /* 查找界面函数 */{char c4;char cno[11],cname[10]; int i,cyear; while(1){printf("\t\t\t* ************************************\n"); printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t请选择 :\n");/* 请选择:*/ c4=getchar();getchar(); if(c4==57) break; switch(c4){case '1':printf(" 输入学号 :\n");/*" 输入学号: "*/ gets(cno); i=find(cno); panduani(i); break; case '2':printf(" 输入姓名 :\n");/*" 输入姓名: "*/ gets(cname);i=findname(cname); panduani(i); break; case '3':printf(" 输入入学年 :\n");/*" 输入入学年 "*/ scanf("%d",&cyear);查找1. 按学号查找2. 按姓名查找3. 按入学年查找 9. 返回************************************\n");*\n");*\n"); /* 按学号查找 */ *\n"); /* 按姓名查找 */ *\n"); /* 按入学年查找 */findyear(cyear);stop();break;default:printf(" 选择有误,请重选!\n");/*" 选择有误,请重选!"*/}}} int findname(char cname[]) /* 按姓名查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /* 判断两个字符串相等*/return i; /* 查找成功*/return -1; /* 查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf(" 要查找的学生不存在\n");stop(); }else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");for(i=0;i<num;i++){if(stu[i].year==cyear) /* 判断两个数值相等*/{printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year); for(j=0;j<5;j++) printf(" %.1f",stu[i].score[j]); printf("\n");}}}}void panduani(int i) /* 通过i 的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf(" 要查找的学生不存在\n");/* 要查找的学生不存在*/ stop();}else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/ printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year)Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");stop();}}void save() /* 保存文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /* 将I+1 名学生成绩写入文件*/ fclose(fp);}void main() /* 主控菜单*/{char c;init();while(1){printf("\t\t 请选择 :\n");/* 请选择: */ c=getchar(); getchar(); switch(c){case '1': weihu(); break; case '2': tongji(); break; case '3': paixu1(); break; case '4': find1(); break; case '9': save(); exit(0); break; default:printf(" 选择有误,请重选 !\n");/*" 选择有误,请重选! "*/printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,****\n"); printf("\n\t\t*************************************************\n");printf("\t\t* 、 t t • I 、/, 主菜单*\n");printf("\t\t* 1. 维护 *\n"); /* 维护 */ printf("\t\t* 2. 统计 *\n"); /* 统计 */ printf("\t\t* 3. 排序 *\n"); /* 排序 */ printf("\t\t*4. 查找*\n"); /* 排序 */ printf("\t\t*9. 存盘退出*\n"); /* 存盘退出printf("\t\t************* 欢迎登陆学生成绩管理系统 ************\n"); printf("\t\t** ********************************************* **\n");。
学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能
/*4. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,编写一程序。
应用简单菜单和子函数调用方式实现下面的功能:(1)从键盘输入10个学生的以上内容,存入文件stud.txt(2)浏览显示成绩表(要求显示格式成绩时,格式较规范)(3)将10个学生按照平均分数从高到低进行排序,结果存入文件stud1.txt (4)输入任意的一个课程名,分数从高到低进行排序,结果存入文件stud2.txt (5)向文件stud1.txt中插入一个记录,成绩排序不变,结果存入文件stud1.txt */#include "stdio.h" /*头文件名*/#include "stdlib.h" /*头文件名,因为程序中用到了exit(结束程序)和函数*/ #include "string.h" /*头文件名,因为程序中用到了字符串函数*/#define N 1000/******************************************************************** *****************************//*****************************************定义结构体模块******************************************/struct student {long num; /*定义学生学号为长整型*/char name[20]; /*定义姓名为字符型,占12个字符*/float math,English,physics,total,average;float TOT_math,TOT_English,TOT_physics,TOT_total,TOT_aver;float aver_math,aver_English,aver_physics,aver_total,aver_average;}student; /*定义结构体名称为student*//******************************************************************** *****************************//****************************************输入初始值模块*******************************************/void input(struct student *p,int size){int i;for(i=0;i<size;i++){printf("请输入学号:");while(1){scanf("%ld",&p[i].num);if(long(p[i].num)!=p[i].num||long(p[i].num)<=0){ /*输入判断*/printf("输入错误,学号必须为整数,请重新输入: ");fflush(stdin);}else{break;}}printf("请输入姓名:");scanf("%s",p[i].name);printf("请输入数学成绩:");while(1){scanf("%f",&p[i].math);if(float(p[i].math)!=p[i].math||float(p[i].math)<=0||p[i].math>100||p[i].math <0){printf("输入错误,数学成绩必须为0~100之间的数,请重新输入: ");fflush(stdin);}else{break;}}printf("请输入英语成绩:");while(1){scanf("%f",&p[i].English);if(float(p[i].English)!=p[i].English||float(p[i].English)<=0||p[i].English>100||p[i ].English<0){printf("输入错误,英语成绩必须为0~100之间的数,请重新输入: ");fflush(stdin); }else{break;}}printf("请输入物理成绩:");while(1){scanf("%f",&p[i].physics);if(float(p[i].physics)!=p[i].physics||float(p[i].physics)<=0||p[i].physics>100||p[ i].physics<0){printf("输入错误,英语成绩必须为0~100之间的数,请重新输入: ");fflush(stdin);}else{break;}}printf("\n");}printf("信息录入成功!\n\n");}/******************************************************************** ****************************************//*************************************保存初始值到"初始二进制值.txt"模块*************************************/void save(struct student *p,int size){ /*保存模块*/ FILE *fp;int i;if((fp=fopen("初始值二进制值.txt","wb+"))==NULL){ /*建立文件*/printf("cannot open the file\n");}for(i=0;i<size;i++){fwrite(&p[i],sizeof(student),1,fp);} /*快写函数,写到磁盘中为二进制数*/ fclose(fp); /*关闭文件*/}/******************************************************************** ****************************************//*************************************保存初始值到"初始二进制值.txt"模块*************************************/void save0(struct student *p,int size){ /*保存模块*/ FILE *fp;int i;if((fp=fopen("初始值二进制值1.txt","ab+"))==NULL){ /*建立文件*/printf("cannot open the file\n");}for(i=0;i<size;i++){fwrite(&p[i],sizeof(student),1,fp);} /*快写函数,写到磁盘中为二进制数*/ fclose(fp); /*关闭文件*/}/******************************************************************** ****************************************//******************************************保存初始值到可浏览文件模块****************************************/void SAVE(struct student *p,int size){FILE *fp;int i,b=0;char name[20];printf("请输入保存初始值的可浏览文件名: ");scanf("%s",name);if((fp=fopen(name,"w+"))==NULL){printf("文件名输入错误!!\n");}fprintf(fp,"\n\t\t----------------------------------------------------------\n");fprintf(fp,"\t\t序号学号姓名数学英语物理\n");fprintf(fp,"\t\t----------------------------------------------------------");fprintf(fp,"\n" );for(i=0;i<size;i++) {b++;fprintf(fp,"\t\t %-6d%-12d%-12s%-8.2f%-8.2f%-8.2f\n",b,p[i].num,p[i].name,p[ i].math,p[i].English,p[i].physics);fprintf(fp,"\t\t----------------------------------------------------------\n");}fclose(fp);printf("\n文件保存成功!\n\n");}/******************************************************************** ****************************************//******************************************读取初始值模块****************************************************/int read(struct student *p,int size){FILE *fp;int i,n=0;if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){printf("文件名输入错误!!\n");}for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}fclose(fp);return n;}/******************************************************************** ****************************************//******************************************读取输出初始值模块************************************************/void read_print(struct student *p,int size){FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){printf("文件名输入错误!!\n");} printf("\n\t\t----------------------------------------------------------\n");printf("\t\t序号学号姓名数学英语物理\n");printf("\t\t----------------------------------------------------------\n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}for(i=0;i<n;i++) {b++;printf("\t\t %-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].math,p[i]. English);printf("%-8.2f\n",p[i].physics);printf("\t\t----------------------------------------------------------\n");}printf("\n\n");fclose(fp);}/******************************************************************** ****************************************//*********************************************计算总分和平均分模块*******************************************/void total_average(struct student *p,int size){ /*求每位同学的总分和平均分模块*/int i;for(i=0;i<size;i++){ /*循环,从第一个同学开始计算到最后一个同学*/p[i].total=p[i].math+p[i].English+p[i].physics;/*每个同学的总分等于三科成绩之和*/p[i].average=p[i].total/3; /*每个同学的平均分等于总分的1/3*/}}/******************************************************************** ****************************************//**************************************输出初始值总分和平均分模块*******************************************/void read_print1(struct student *p,int size){void total_average(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){printf("文件名输入错误!!\n");} printf("\n\t---------------------------------------------------------------------------\n");printf("\t序号学号姓名数学英语物理总分平均分\n");printf("\t---------------------------------------------------------------------------\n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}total_average(p,n);for(i=0;i<n;i++) {b++;printf("\t %-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].math,p[i].E nglish);printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);printf("\t---------------------------------------------------------------------------\n");}printf("\n\n");fclose(fp);}/******************************************************************** ****************************************//***************************************将初始值按平均分排序模块*********************************************/void range(struct student *p,int size){ /*所有同学的成绩按平均分由高到低排序模块*/int i,j,k;struct student temp; /*定义一个student类型的变量备用*/ for(i=0;i<size;i++){ /*用选择排序法进行排序*/k=i;for(j=i+1;j<size;j++)if(p[k].average<p[j].average){temp=p[k];p[k]=p[j];p[j]=temp;}}}/******************************************************************** ****************************************//************************************输出初始值按平均分排序的结果模块****************************************/int read_print2(struct student *p,int size){void total_average(struct student *p,int size);void range(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){printf("文件名输入错误!!\n");} printf("\n\t---------------------------------------------------------------------------\n");printf("\t学号姓名数学英语物理总分平均分名次\n");printf("\t---------------------------------------------------------------------------\n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}total_average(p,n);range(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t---------------------------------------------------------------------------\n");}printf("\n\n");fclose(fp);return n;}/******************************************************************** ****************************************//********************保存初始值按平均分排序后结果到"初始值按平均分排序二进制值.txt"模块**********************************/void save1(struct student *p,int size){ /*保存模块*/ FILE *fp;int i;if((fp=fopen("按平均分排序二进制值.txt","wb+"))==NULL){ /*建立文件*/printf("cannot open the file\n");}for(i=0;i<size;i++){fwrite(&p[i],sizeof(student),1,fp);} /*快写函数,写到磁盘中为二进制数*/ fclose(fp); /*关闭文件*/}/******************************************************************** ****************************************//******************************************读取排序后结果模块************************************************int read1(struct student *p,int size){FILE *fp;int i,n=0;if((fp=fopen("按平均分排序二进制值.txt","r+"))==NULL){printf("文件名输入错误!!\n");}for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}fclose(fp);return n;}/******************************************************************** ****************************************//*******************************保存初始值按平均分排序后结果到可浏览文件模块*********************************/void SAVE1(struct student *p,int size){FILE *fp;int i,b=0;char name[20];printf("请输入保存排序结果的文件名: ");scanf("%s",name);if((fp=fopen(name,"w+"))==NULL){printf("文件名输入错误!!\n");}fprintf(fp,"\n\t---------------------------------------------------------------------------\n");fprintf(fp,"\t学号姓名数学英语物理总分平均分名次\n");fprintf(fp,"\t---------------------------------------------------------------------------\n");fprintf(fp,"\n" );for(i=0;i<size;i++) {b++;fprintf(fp,"\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].Englis h);fprintf(fp,"%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);fprintf(fp,"\t---------------------------------------------------------------------------\n");}fclose(fp);printf("\n文件保存成功!\n\n");}/******************************************************************** ****************************************//***********************************************科目选择模块*************************************************/int choose(){system("color B1 ");system("cls");printf("\n\t************请选择按成绩从高到低排序的科目******************\n\n");printf("\t\t\t查看数学成绩排序请输入(数学)\n\n");printf("\t\t\t查看英语成绩排序请输入(英语)\n\n");printf("\t\t\t查看物理成绩排序请输入(物理)\n\n");printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* =*\n");printf("\t\t请输入科目名称: ");int a;char str1[]="数学",str2[]="英语",str3[]="物理";char str[20];scanf("%s",str);if(strcmp(str1,str)==0){a=1;}else{if(strcmp(str2,str)==0){a=2;}else{if(strcmp(str3,str)==0){a=3;}else{printf("\n输入错误,请重新输入!!\n\n");system("pause");}}}return(a);}/******************************************************************** ****************************************//*******************************所有同学的成绩按数学成绩由高到低排序模块*************************************/void range1(struct student *p,int size){int i,j,k;struct student temp;for(i=0;i<size;i++){ /*用选择排序法进行排序*/k=i;for(j=i+1;j<size;j++)if(p[k].math<p[j].math){temp=p[k];p[k]=p[j];p[j]=temp;}}}/******************************************************************** ****************************************//*******************************所有同学的成绩按英语成绩由高到低排序模块*************************************/void range2(struct student *p,int size){int i,j,k;struct student temp;for(i=0;i<size;i++){ /*用选择排序法进行排序*/k=i;for(j=i+1;j<size;j++)if(p[k].English<p[j].English){temp=p[k];p[k]=p[j];p[j]=temp;}}}/************************************************************************************************************//*******************************所有同学的成绩按物理成绩由高到低排序模块*************************************/void range3(struct student *p,int size){int i,j,k;struct student temp;for(i=0;i<size;i++){ /*用选择排序法进行排序*/k=i;for(j=i+1;j<size;j++)if(p[k].physics<p[j].physics){temp=p[k];p[k]=p[j];p[j]=temp;}}}/******************************************************************** ****************************************//****************************************输出按数学科目排序结果模块*****************************************/int read_print31(struct student *p,int size){void total_average(struct student *p,int size);void range1(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("按平均分排序二进制值.txt","rb+"))==NULL){printf("文件名输入错误!!\n");} printf("\n\t---------------------------------------------------------------------------\n");printf("\t学号姓名数学英语物理总分平均分名次\n");printf("\t---------------------------------------------------------------------------\n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}total_average(p,n);range1(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t---------------------------------------------------------------------------\n");}printf("\n\n");fclose(fp);return n;}/******************************************************************** ****************************************//****************************************输出按英语科目排序结果模块*****************************************/int read_print32(struct student *p,int size){void total_average(struct student *p,int size);void range2(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("按平均分排序二进制值.txt","rb+"))==NULL){printf("文件名输入错误!!\n");} printf("\n\t---------------------------------------------------------------------------\n");printf("\t学号姓名数学英语物理总分平均分名次\n");printf("\t---------------------------------------------------------------------------\n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}total_average(p,n);range2(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t---------------------------------------------------------------------------\n");}printf("\n\n");fclose(fp);return n;}/******************************************************************** ****************************************//****************************************输出按物理科目排序结果模块*****************************************/int read_print33(struct student *p,int size){void total_average(struct student *p,int size);void range3(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("按平均分排序二进制值.txt","rb+"))==NULL){printf("文件名输入错误!!\n");} printf("\n\t---------------------------------------------------------------------------\n");printf("\t学号姓名数学英语物理总分平均分名次\n");printf("\t---------------------------------------------------------------------------\n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}total_average(p,n);range3(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t---------------------------------------------------------------------------\n");}printf("\n\n");fclose(fp);return n;}/******************************************************************** ****************************************//*******************************************保存按科目排序结果模块*******************************************/void SAVE2(struct student *p,int size){FILE *fp;int i,b=0;char name[20];printf("请输入保存科目排序后的文件名: ");scanf("%s",name);if((fp=fopen(name,"w+"))==NULL){printf("文件名输入错误!!\n");}fprintf(fp,"\n\t---------------------------------------------------------------------------\n");fprintf(fp,"\t学号姓名数学英语物理总分平均分名次\n");fprintf(fp,"\t---------------------------------------------------------------------------\n");fprintf(fp,"\n" );for(i=0;i<size;i++) {b++;fprintf(fp,"\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].Englis h);fprintf(fp,"%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);fprintf(fp,"\t---------------------------------------------------------------------------\n");}fclose(fp);printf("\n文件保存成功!\n\n");}/******************************************************************** ****************************************//************************************输出所有值按平均分排序的结果模块****************************************//******************************************************************** ****************************************//************************************输出所有值按平均分排序的结果模块****************************************/int read_print3(struct student *p,int size){void total_average(struct student *p,int size);void range(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值1.txt","rb+"))==NULL){printf("文件名输入错误!!\n");} printf("\n\t---------------------------------------------------------------------------\n");printf("\t学号姓名数学英语物理总分平均分名次\n");printf("\t---------------------------------------------------------------------------\n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}total_average(p,n);range(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t---------------------------------------------------------------------------\n");}printf("\n\n");fclose(fp);return n;}/******************************************************************** ****************************************//***************************************查找模块************************************************************/void search(struct student *p,int size){void total_average(struct student *p,int size);char str[20]; long c;int i,a,flag=0,n=0;printf("\n\t********************查找某位同学的成绩*********************\n\n");printf("\t\t\t按学号查找请输入(学号)\n\n");printf("\t\t\t按姓名查找请输入(姓名)\n\n");printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* =*\n");char str1[]="学号",str2[]="姓名";char str3[20];while(1){printf("\t\t请输入查找方式: ");scanf("%s",str3);if(strcmp(str1,str3)==0){a=1;break;}else{if(strcmp(str2,str3)==0){a=2;break;}else{printf("\n输入错误,请重新输入!!\n\n");}}}switch(a){case 1: printf("\n\t请输入学号: ");scanf("%s",str);c=strtol(str,NULL,0);FILE *fp;if((fp=fopen("初始值二进制值1.txt","rb+"))==NULL){printf("文件名输入错误!!\n");}for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0)n++;}total_average(p,n);for(i=0;i<n;i++)if(p[i].num==c){ flag=1;printf("\n\t---------------------------------------------------------------------------\n");printf("\t学号姓名数学英语物理总分平均分\n");printf("\t---------------------------------------------------------------------------\n");printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);printf("\t---------------------------------------------------------------------------\n\n");break;}if(flag==0){printf("输入学号错误!!\n");}break;case 2: printf("\n\t请输入姓名: ");scanf("%s",str);if((fp=fopen("初始值二进制值1.txt","rb+"))==NULL){printf("文件名输入错误!!\n");}for(i=0;i<size;i++){if(fread(&p[i],sizeof(struct student),1,fp)!=0)n++;}total_average(p,n);for(i=0;i<n;i++)if(strcmp(str,p[i].name)==0){ flag=1;printf("\n\t---------------------------------------------------------------------------\n");printf("\t学号姓名数学英语物理总分平均分\n");printf("\t---------------------------------------------------------------------------\n");printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);printf("\t---------------------------------------------------------------------------\n\n");break;}if(flag==0){printf("输入姓名错误!!\n");}break;}}/******************************************************************** ****************************//*************************************。
C语言程序设计-学生成绩管理系统源码
#include〈stdio.h>#include<conio。
h>#include<malloc.h>#include<string.h>struct STUDENT{char studentNumber[10];/*学生学号*/char studentName[20];/*学生姓名*/char className[20];/*班级名称*/float mark1;/*第1门成绩*/float mark2;/*第2门成绩*/float mark3;/*第3门成绩*/struct STUDENT *next;};struct STUDENT *headLink;/*链表表头指针*//*以下是函数声明*/void ReadInfoFormFile(void);/*读入信息形成文件*/void DisplayMenu(void);void CreateHeadLink(void);struct STUDENT *MallocNode(void);void GetInformation(struct STUDENT *t);void OutputInformation(void);void DisplayInfoBystudentName(void);void DisplayInfoBystudentNumber(void);void DisplayOneNode(struct STUDENT *t);void InsertOneNode(struct STUDENT *t);void DeleteNodeBystudentNumber(void);void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DisplayMarkSegment(void);/*显示各分数段的学生成绩*/ void CompositorByTotalMark(void);/*按总成绩排序*/int choose;/*用于接受用户的选择*//*主函数*/int main(){CreateHeadLink();ReadInfoFormFile();DisplayMenu();return 0;}/************************************函数功能:从文件中读学生信息到链表中************************************/void ReadInfoFormFile(void){FILE *fp;STUDENT *p;fp=fopen(”student。
c语言学生成绩管理系统代码
include<stdio.h>include<string.h>include<stdlib.h>define MAXN 100 //一个班最多的人数define MAXM 2 //成绩的课程门数int R;void input; //1.学生成绩新建void sort; //2.学生成绩插入void load; //3.学生成绩修改void print; //4.学生成绩删除void total; //5.学生成绩统计void search; //6.学生成绩查询void save; //7.学生成绩保存void end; //8.结束struct student{char name20; //保存全班姓名char num12; //保存全班学号float scoreMAXM; //保存全班所有课程成绩float sum; //保存全班每个人的总成绩float avg; //保存每个人的平均成绩};struct student sMAXN;struct http{char subject20; //保存全班所有课程};struct http cMAXM;void main //欢迎首界面{int select;l;system"color fC";printf"\n";printf"\n";printf"\n";printf"\n";printf" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n";printf" \n";printf" \n";printf" 欢迎进入终极一班学生管理系统\n";printf" \n";printf" ︻┳═一 cf ... \n";printf" ┈━═☆甘总管的多塔生活∝╬══→ \n";printf" \n";printf" 凸^-^凸凸^-^凸凸^-^凸凸^-^凸凸^-^凸凸^-^凸凸^-^凸 \n";printf" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n";printf" ╭v╮ ╔══╗╔╗ ╔╗╔╗╭'''╮\n";printf" ^o^╚╗╔╝║║╔═╦╦╦═╗║╚╝╠═╦╦╗~ : ~\n";printf" ~ : ~╔╝╚╗║╚╣║║║║╠╣╚╗╔╣║║║║~v ~\n";printf" ╚══╝╚═╩═╩═╩═╝╚╝╚═╩═╝ \n";printf"\n";printf"\n";printf" 请按任意键进入下一界面\n";printf"------------------------------------------------------------------\n";system"pause";system"color f2";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color f5";system"color f9";system"color f6";system"color fD";system"pause";system"color fC";system"cls"; //上面是第一个界面while1{system"cls";printf" 欢迎进入终极一班学生管理系统\n";printf" \n";printf" ∝╬══→ 1.学生成绩新建囧rz 欢\n";printf" ::======>> 2.学生成绩插入迎\n";printf" ┈━═☆ 3.学生成绩修改来\n";printf" ∝╬══→ 4.学生成绩删除到\n";printf" ∝╬══→ 5.学生成绩统计英\n";printf" ∝╬══→ 6.学生成绩查询雄\n";printf" ▄︻┻═┳ 7.学生成绩保存联\n";printf" ∝╬══→ 8.退出/撒拉嘿盟\n";printf" ⊙_⊙⊙_⊙⊙_⊙⊙_⊙⊙_⊙⊙_⊙ \n"; printf" \n";printf"\n"; printf"\n 请输入您的选择编号;回车键继续:\n";printf" ---------------------------------------------------------------------------\n";scanf"%d";&select;do{ifselect<1||select>8{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&select;}l=select;}whilel<1||l>8;switchselect{case 1:input;break; //1.学生成绩新建case 2:sort; break; //2.学生成绩插入case 3:load; break; //3.学生成绩修改case 4:print; break; //4.学生成绩删除case 5:total;break; //5.学生成绩统计case 6:search;break; //6.学生成绩查询case 7:save;break; //7.学生成绩保存case 8: end;break; //8.结束default:printf" 请按相应数学选择系统功能:";}}}void input //1学生成绩输入成绩模块{int i;j;b;float a=0;printf" 请输入该班同学的人数:\n";printf" 班同学的人数在1~%d之间:\n";MAXN;scanf"%d";&R;do{ifR<1||R>100{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&R;}b=R;}whileb<1||b>100;fori=0;i<MAXM;i++{printf" 请输入该班同学的第%d门课程名称为:\n";i+1;scanf"%s"; &ci.subject;}fori=0;i<R;i++{printf" 请输入第%d个同学的姓名:\n";i+1;scanf"%s";&;printf" 请输入第%d个同学的学号:\n";i+1;scanf"%s";&si.num;printf" 请依次输入%d门学科的成绩:\n";MAXM;forj=0;j<MAXM;j++{printf" 请输入课程%s的成绩为:\n";cj.subject;scanf"%f";&si.scorej;a=a+si.scorej;}si.sum=a;si.avg=si.sum/MAXM;a=0;}}void sort //2学生成绩插入成绩模块{int i;j;k;b;float a=0;printf" 请输入要插入的学生的位置1~%d号:\n";R;printf" 第几个学生的位置之后:\n";scanf"%d";&k;do{ifk<1||k>R{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&k;}b=k;}whileb<1||b>R;R=R+1;fori=R;i>k;i--{;;strcpysi.num;si-1.num;si.sum=si-1.sum;si.avg=si-1.avg;forj=0;j<MAXM;j++{si.scorej=si-1.scorej;}}printf" 请输入第%d个同学的姓名:\n";k+1;scanf"%s";&;printf" 请输入第%d个同学的学号:\n";k+1;scanf"%s";&sk.num;printf" 请依次输入%d门学科的成绩:\n";MAXM;forj=0;j<MAXM;j++printf" 请输入课程%s的成绩为:\n";&cj.subject;scanf"%f"; &sk.scorej;a=a+sk.scorej;}sk.sum=a;sk.avg=sk.sum/MAXM;}void load //3学生成绩修改{float a=0;hMAXM;int i;j;b;printf" 请输入修改学生的位置1~%d 号: \n";R;scanf"%d";&i;do{ifi<1||i>R{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&i;}b=i;}whileb<1||b>R;printf" 请输入%d号的新学号: \n";i;scanf"%s";&;printf" 请输入%d号的新姓名: \n";i;scanf"%s";&si-1.num;forj=0;j<MAXM;j++{printf" 请输入课程%s的成绩为:\n";&cj.subject;scanf"%f";&hj;si-1.scorej =hj;a=a+si-1.scorej;si-1.sum=a;si-1.avg=si-1.sum/MAXM;}void print //4学生成绩删除{int i;j;k;b;printf" 请输入删除学生的位置1~%d 号:\n";R;scanf"%d";&k;do{ifk<1||k>R{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&k;}b=k;}whileb<1||b>R;i=k-1;fori;i<R;i++{;si+;strcpysi.num;si+1.num;si.sum=si+1.sum;si.avg=si+1.avg;forj=0;j<MAXM;j++{si.scorej=si+1.scorej;}}R=R-1;printf"删除成功 \n";}void total //5.学生成绩统计{int i;j;float aMAXM;b=0;printf"学号:姓名:课程%s的分数:课程%s的分数: 总成绩:平均成绩:\n";c0.subject;c1.subject;fori=0;i<R;i++{printf"%s%10.2s%16.2f%16.2f%16.2f%16.2f\n";si.num;;si.score0 ;si.score1;si.sum;si.avg;}fori=0;i<MAXM;i++{forj=0;j<R;j++{b=b+sj.scorei;}ai=b/R;b=0;}fori=0;i<MAXM;i++{printf" 全班课程%s的平均分为:%f\n";ci.subject;ai;}printf"排序完毕.\n";system"pause";}void search //6查询成绩模块{int search1;int search2;int select;index;b;while1{printf" \n";printf" 1.按学号查询\n";printf" 2.按姓名查询\n";printf" 0.返回\n";printf" 请输入您的选择编号:\n";printf" \n";scanf"%d";&select;do{ifselect<0||select>2{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&select;}b=select;}whileb<0||b>2;switchselect{case 1:index=search1; break;case 2:index=search2;break;case 0:return;}ifindex=-1{int i;printf" \n";printf" 学号:%s \n"; sindex.num;printf" 姓名:%s \n"; ;printf" 总成绩:%f \n"; sindex.sum;printf" 平均成绩:%f \n"; sindex.avg;fori=0;i<MAXM;i++printf" 课程%s的成绩为:%f \n"; ci.subject;sindex.scorei;printf" \n";}else printf"没有这个同学..\n";}}int search1 //按学号查询模块{int i;char s_num12;printf" 请输入要查询的学号:";scanf"%s";&s_num;fori=0;i<MAXN;i++ifstrcmpsi.num;s_num==0break;ifi<MAXNreturn i;else return -1;}int search2 //按姓名查询模块{int i;char s_name10;printf" 请输入要查询的姓名:";scanf"%s";&s_name;fori=0;i<MAXN;i++;s_name==0break;ifi<MAXNreturn i;else return -1;}void save//7保存成绩模块{FILE fp;int i;j;k=0;char filename20;printf"请输入文件名请以 .txt 结束: ";scanf"%s";filename;iffp=fopenfilename; "w"==NULL{printf"打开文件失败.\n";return;}fprintffp; "该班学生数和所修课程数分别为:%d;%d\n\n";R;MAXM; fprintffp; "该班所修的课程有:\n";forj=0;j<MAXM;j++fprintffp; "课程%d:%s\n";1+j;cj.subject;fprintffp; "下面是该班学生信息:\n\n";fori=0;i<R;i++{fprintffp; "学号:%s 姓名:%s\n";si.num;;forj=0;j<MAXM;j++{fprintffp; "%s:%5.2f\n";cj.subject;sk.scorej;}fprintffp; "学生总成绩:%5.2f\n学生平均成绩:%5.2f\n\n";si.sum;si.avg;k++;}fclosefp;printf"\n\n 保存成功\n\n\n\n";fclosefp;printf"保存完毕.\n";}void end //8.结束{system"cls";system"color f4";printf"\n";printf"\n";printf"\n";printf" █◣◢█◣◢█◣◢█▁▁\n";printf"█████████████\\//\n";printf"\n";printf"◢█████████████◣//\\\n";printf"\n";printf"◢███████████████◣ ̄▌ ̄\n";printf"\n";printf" ██●███●██▌ \n";printf"\n";printf" ██◣◢███◣◢██▌\n";printf"\n";printf" ◥█████◤^◥█████◤▌\n";printf"\n";printf" ◥████◣/\◢████◤◢██\n";printf"\n";printf"◢█████████████◢██◤\n";printf"\n";printf"◢████████████████ \n";printf"\n";printf" ██◤◢███◤◥███◣\n";printf"\n";printf" ◢███◤◥███◣\n";printf"\n";printf" ████████ \n";printf"\n";printf"\n";printf"\n\n 谢谢您的使用..BYE\n\n\n\n\n\n\n\n";system"color f2";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color f5";system"color f9";system"color f6";exit0;}。
c语言学生成绩信息管理系统源代码
C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。
为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。
本文将介绍该系统的源代码,并对其进行详细的解释和讲解。
二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。
c语言学生成绩管理系统源代码
printf(" \n");
printf("请输入您要操作的编号:");
}
}
}
void mima(void) //密码函数
{
int i,x;//i代表密码位数(限6位)x代表在初始登陆界面亲您已经输入密码的次数(限3次)
printf (" ∵ 3.修改学生信息 ∵ \n");
printf (" ∵ 4.删除学生信息 ∵ \n");
printf (" ∵ ∵ \n");
printf (" ∵ ∵ \n");
printf(" \n");
printf(" ---- 电信1102班 \n");
printf(" \n");
printf("\n");
printf("\n");
for (x=1;x<=3;x++)
{
printf("\n");
printf(" 亲,请输入密码:");//当程序执行此处时,与密码的次数已经输入的初值相等,为1。
for (i=0;i<6;i++)//循环逐渐输入密码
printf(" ** ** ** \n");
printf(" ** 欢 ** \n");
void main()
{
void mima(void); //密码
学生成绩管理系统C语言课程设计源代码
#include<stdio.h>#include<string.h>#include<math.h>#include<conio.h>#include<stdlib.h>struct chengji /* 成绩结构体*/ {int point;char subject[20];};struct student /* 学生结构体*/ { int w;char name[20];int number;struct chengji cheng[30];float sum;float average;}stu[40];void pjun(); /*按平均分排序*/void pfen(); /*按总分排序*/ void addnew(); /*录入学生成绩*/void pall(); /*显示所有成绩*/ void check(); /*查询菜单*/ void pnum(); /*按学号排序*/ void pjing(); /*精确查找*//****************************************************************************** *************************//*主菜单*/main(){char choose;while(1){printf("\n\t\t**************************************");printf("\n\t\t* 欢迎使用成绩管理系统*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 录入学生成绩*");printf("\n\t\t* 2. 查询学生成绩*");printf("\n\t\t* 3. 清屏*");printf("\n\t\t* 0. 退出程序*");printf("\n\t\t* *");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': addnew(); break;case '2': check(); break;case '3': system("cls"); break;case '0': exit(0); break;default: printf("输入错误,请从新输入!\n\n");}}}/****************************************************************************** **********************//*录入学生成绩*/void addnew(){int n,m,i,p;float sum;float average;FILE *file;sum=0.00000;average=0.00000;if((file=fopen("c:\\student.dat","rb"))==NULL){file = fopen("c:\\student.dat", "wb+"); /* 创建一个文件*/}printf("请输入需要录入的学生人数: ");scanf("%d",&n);for(i=0;i<n;i++){printf("输入第%d个同学信息:\n",i+1);printf("姓名:");scanf("%s",&stu[i].name);printf("学号:");scanf("%d",&stu[i].number);printf("输入科目个数:");scanf("%d",&m);stu[i].w=m;printf("按科目(回车)成绩(回车)……的顺序输入:\n"); /* 录入成绩*/for(p=0;p<m;p++){scanf("%s",&stu[i].cheng[p].subject);scanf("%d",&stu[i].cheng[p].point);stu[i].sum=stu[i].sum+stu[i].cheng[p].point;stu[i].average=stu[i].sum/m;}/* printf("总分%f , 平均分%f\n ",stu[i].sum,stu[i].average);*/fwrite(&stu[i],sizeof(stu),1,file); /* 把stu写入文件*/}fclose(file); /* 关闭文件*/fflush(stdin);system("cls");}/****************************************************************************** **********************//*查询菜单*/void check(){while(1){ char choose;printf("\n\t\t**************************************");printf("\n\t\t* 查询菜单*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 按学号排列*");printf("\n\t\t* 2. 按总分排列*");printf("\n\t\t* 3. 按平均分排列*");printf("\n\t\t* 4. 精确查询*");printf("\n\t\t* 5. 显示所有学生成绩*");printf("\n\t\t* 6. 清屏*");printf("\n\t\t* 0. 返回*");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': pnum(); break;case '2': pfen(); break;case '3': pjun(); break;case '4': pjing(); break;case '5': pall(); break;case '6': system("cls"); break;case '0': main(); break;}}}/****************************************************************************** **********************//*显示所有成绩*/void pall(){int i=0,m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error!!\n");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0)/* 循环整个文件*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++)/*显示各科成绩*/{printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);}/****************************************************************************** *************************//*按学号排序*/void pnum(){ FILE *file;int j;int i=0;int n=0;int m=0;struct student bm; /*创建一个‘中间’结构体,用于交换*/if((file=fopen("c:\\student.dat","rb"))==NULL) /* 打开文件*/ { printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].number>stu[i+1].number) /*对比学号,对换stu*/{ bm=stu[i]; /*交换位置*/stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++)/* 交换后从新排序*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*按总分排序*/void pfen(){ FILE *file;int j;int i=0;int n=0;int m;struct student bm;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].sum<stu[i+1].sum){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n"); /*显示到屏幕*/printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/*******************************************************************************************************//*按平均分排序*/void pjun(){ FILE *file;int j;struct student bm;int i=0;int n=0;int m;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].average<stu[i+1].average){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*精确查找*/void pjing(){int n;int i=0;int m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}printf("请输入要查询的学生的学号:");scanf("%d",&n);getchar();fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){ if(n==stu[i].number) /*输出对应的学号的学生成绩*/{printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}break;}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);fflush(stdin);}/******************************************结束*******************************************************/。
学生成绩管理系统C语言(附完整源代码)
学生成绩管理系统C语言(附完整源代码)课程设计报告学生成绩管理系统院系: 专业: 班级: 完成日期: 2009年1月03日设计题目:学生成绩管理系统目录1、题目描述2、算法设计/设计思想3、结构框图、各模块的功能描述4、主体思想:5、程序的,,,流程图6、源代码1.题目描述设计一个简单的学生成绩管理系统,要求有简单的界面,程序段要分清模块,该程序应该:(1)输入学生成绩,求总分,平均分,以及排序。
(2)查询学生单科成绩,总分和平均成绩;(3)添加、修改学生成绩具有下列功能:(4)实现保存与查看功能2.算法设计/设计思想利用二维数组——定义stu[][]存储学生学号、各科成绩,总分,平均分,名次,利用文件来存储,读取数据。
具体分工是:: 负责inputx(),print1(),input();:负责文件的存储和读取,main(),System(),Idea()以及各调用函数之间的连;: 负责find1(),find2(),find3(),find31(),Find();: 负责del(),add(),change1(),Change();后期调试由小组共同负责。
3. 结构框图、各模块的功能描述3.1 创建成绩表3.1.1 input()功能是输入学生的信息,便于以后的查询、浏览。
3.2 添加3.2.1 add( )功能是向inputy()添加新的内容。
3.3.2 chance( )对单科成绩进行修改。
3.3 查询3.3.1 可根据学号,科目,名次,进行查询。
3.3.2 查询内容包括:该学生的各课成绩、、平均分。
3.4 删除3.4.1可以输入学号删除一名学生的一课成绩。
3.5 浏览成绩单3.5.1 通过此print1()可以查看所有学生的各课成绩、总分、平均分和名次。
3.6 文件()3.6.1 保存以上所输入的信息以达到既是关闭窗口信息也不会丢失信息的目的。
3.6.2 随时打开,修改文件。
3.7.退出功能是退出主菜单退出系意见评述功能菜单统输入添加及改查找功能退出功能菜单成绩功能查输排查找学学添修某某生生加改段生成成成某成成绩绩科绩绩绩成绩按按按名学科次号目查查查找找找四、主体思想:1、考虑到此程序量大代码多,所以用函数调用,分几个人去完成。
学生成绩管理系统的设计与实现代码
学生成绩管理系统的设计与实现代码本系统有增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对学生进行排序、退出系统6大功能。
能够对学生的姓名,学号,c语言成绩做相应的操作。
在检测到输入成绩大于55时,会自动加上5。
该管理系统设计功能模块图:下面是源代码:#include "stdio.h"#include "string.h"/*定义学生结构体*/struct Student{char ID[20]; //学号char Name[20]; //姓名float C_Mark; //C语言成绩};/*声明学生数组及学生数量*/struct Student students[1000];int num=0;/*通过学号返回数组下标*/int Student_SearchByIndex(char id[]) {int i;for (i=0;i<num;i++){if (strcmp(students[i].ID,id)==0) {return i;}}return -1;}/*通过姓名返回数组下标*/int Student_SearchByName(char name[]) {int i;for (i=0;i<num;i++){if (strcmp(students[i].Name,name)==0){return i;}}return -1;}/*显示单条学生记录*/void Student_DisplaySingle(int index){printf("%10s%10s%8s\n","学号","姓名","C语言成绩");printf("-------------------------------------------------------------\n");printf("%10s%10s%8.2f\n",students[index].ID,students[index] .Name,students[index].C_Mark);}/****1、增加学生记录*****/void Student_Insert(){while(1){printf("请输入学号:");scanf("%s",&students[num].ID);getchar();printf("请输入姓名:");scanf("%s",&students[num].Name);getchar();printf("请输入C语言成绩:");scanf("%f",&students[num].C_Mark);getchar();if (54<students[num].C_Mark && students[num].C_Mark< 60) //把55~59分之间的成绩都加上5分{students[num].C_Mark += 5;}num++;printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/******2、修改学生信息**********/void Student_Modify(){while(1){char id[20];int index;printf("请输入要修改的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("该学生不存在!\n");}else{printf("你要修改的学生信息为:\n");Student_DisplaySingle(index);printf("-- 请输入新值--\n");printf("请输入学号:");scanf("%s",&students[index].ID);getchar();printf("请输入姓名:");scanf("%s",&students[index].Name);getchar();printf("请输入C语言成绩:");scanf("%f",&students[index].C_Mark);getchar();}printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/****3、删除学生信息****/void Student_Delete(){int i;while(1){char id[20];int index;printf("请输入要删除的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要删除的学生信息为:\n");Student_DisplaySingle(index);printf("是否真的要删除?(Y/N)");if (getchar()=='Y'){for (i=index;i<num-1;i++){students[i]=students[i+1];//把后边的对象都向前移动}num--;}getchar();printf("已删除\n");}printf("是否继续删除?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/****4、按姓名查询******/void Student_Select(){while(1){char name[20];int index;printf("请输入要查询的学生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if (index==-1){printf("学生不存在!\n");}else{printf("你要查询的学生信息为:\n");Student_DisplaySingle(index);}printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/******5、按C语言成绩排序*******/void Student_SortByAverage(){int i,j;struct Student tmp;for (i=0;i<num;i++){for (j=1;j<num-i;j++){if (students[j-1].C_Mark<students[j].C_Mark){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}/*显示学生信息*/void Student_Display(){int i;printf("%10s%10s%8s\n","学号","姓名","成绩");printf("-------------------------------------------------------------\n");for (i=0;i<num;i++){printf("%10s%10s%8.2f\n",students[i].ID,students[i].Name ,students[i].C_Mark);}}/*将学生信息从文件(Database.txt)中读出*/void IO_ReadInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","rb"))==NULL){printf("不能打开文件!\n");return;}if (fread(&num,sizeof(int),1,fp)!=1){num=-1;}else{for(i=0;i<num;i++){fread(&students[i],sizeof(struct Student),1,fp);}}fclose(fp);}/*将学生信息写入文件(Database.txt)*/void IO_WriteInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","wb"))==NULL){printf("不能打开文件!\n");return;}if (fwrite(&num,sizeof(int),1,fp)!=1){printf("写入文件错误!\n");}for (i=0;i<num;i++){if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1){printf("写入文件错误!\n");}}fclose(fp);}/***********主程序*********/void main(){int choice;IO_ReadInfo(); //读取文件while(1){/*主菜单*/printf("\n------ 学生成绩管理系统------\n");printf("1. 增加学生记录\n");printf("2. 修改学生记录\n");printf("3. 删除学生记录\n");printf("4. 按姓名查询学生记录\n");printf("5. 按C语言成绩排序\n");printf("6. 退出\n");printf("请选择(1-6):");scanf("%d",&choice);getchar();switch(choice){case 1:Student_Insert();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Select();break;case 5:Student_SortByAverage();Student_Display();break;case 6:exit(0);break;}IO_WriteInfo();}}1234567891011121415161718192021222324252627282930313233343637383940414243444546474849505152535455565859606162636465666768697071727374757677788081828384858687888990919293949596979899 100102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320322323324325326327328329330331332333334335336337338运行结果:测试第一个功能,输入四个学生的成绩:测试第二个功能,修改学生记录:测试第三个功能,删除学生记录:测试第四个功能,按姓名查询学生记录:测试第五个功能,显示所有学生的成绩,按照C语言成绩由高到底排序:我们可以看到,各项功能的实现,在第2个步骤中,将赵的成绩改为80,而第3个步骤删除了李的成绩。
c语言课程设计学生成绩管理系统代码
学生成绩管理系统是一个常见的C语言入门项目,可以帮助初学者了解循环、条件控制、结构体、文件操作等基本知识。
以下是一个简单的C语言学生成绩管理系统示例,实现了查询、添加、修改和删除学生成绩等功能。
您可以修改和扩展该代码以满足您的需求:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct {int id;char name[20];float score;} Student;void display_menu();void add_student();void find_student();void edit_student();void delete_student();void save_data();void load_data();int student_count = 0;Student students[100];int main() {load_data();while (1) {display_menu();int choice;printf("请输入您的选择:");scanf("%d", &choice);switch (choice) {case 1:find_student();break;case 2:add_student();break;case 3:edit_student();break;case 4:delete_student();break;case 5:save_data();printf("数据已保存。
\n");exit(0);default:printf("无效的选项!\n");}}return 0;}void display_menu() {printf("学生成绩管理系统\n");printf("====================\n");printf("1. 查询学生成绩\n");printf("2. 添加学生成绩\n");printf("3. 修改学生成绩\n");printf("4. 删除学生成绩\n");printf("5. 退出系统\n");printf("====================\n");}void add_student() {printf("请输入学生ID:");scanf("%d", &students[student_count].id); printf("请输入学生姓名:");scanf("%s", students[student_count].name); printf("请输入学生成绩:");scanf("%f", &students[student_count].score); student_count++;printf("学生已添加成功!\n");}void find_student() {int id;printf("请输入要查询的学生ID:");scanf("%d", &id);for (int i = 0; i < student_count; ++i) {if (students[i].id == id) {printf("ID:%d, 姓名:%s, 成绩:%.2f\n", students[i].id, students[i].name, students[i].score);return;}}printf("未找到该学生。
c课程设计学生成绩管理系统源代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int n=5;/*全局变量*/ struct student /*定义结构体数组*/ { char num[10];char name[10];int score;}stu[3];int menu_select() /*菜单选择函数*/ { char a;do{system("cls");printf("\t************学生成绩管理系统****************\n");printf("\t\t1.输入学生成绩\n");printf("\t\t2.显示学生成绩\n");printf("\t\t3.学生成绩排序\n");printf("\t\t4.插入学生记录\n");printf("\t\t5.删除学生记录\n");printf("\t\t6.查询学生成绩\n");printf("\t\t7.修改学生成绩\n");printf("\t\t0.退出\n");printf("\t*********************************************\n");printf("\n");printf("给出你的选择(0-7):");a=getchar();}while(a<'0'||a>'7');return(a);}void input() /*定义输入函数*/char c;void menu();FILE *fp;if((fp=fopen("student message","w"))==NULL){printf("cannot open the file\n");exit(0);}printf("学号姓名分数(需要终止输入时请在该行结尾输入n)\n");for(i=0;;i++){ scanf("%s %s %d",stu[i].num,stu[i].name,&stu[i].score);fwrite(&stu[i],sizeof(struct student),1,fp);c=getchar();if(c=='n')break;}n=i+1;fclose(fp);system("pause");menu();}void display() /*定义显示函数*/ { int i;void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){printf("cannot open the file\n");exit(0);}printf("\t学号\t姓名\t分数\n");for(i=0;i<n;i++){ fread(&stu[i],sizeof(struct student),1,fp);printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score); }fclose(fp);system("pause");}void sort() /*定义排序函数*/ { int i,j;struct student temp;void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){ printf("cannot open the file:\n");exit(0);}for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++)if(stu[i].score<stu[i+1].score){temp=stu[i];stu[i]=stu[i+1];stu[i+1]=temp;}for(i=0;i<n;i++)printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score);fclose(fp);system("pause");menu();}void insert() /*定义插入函数*/ { int i;struct student st;void menu();FILE *fp;if((fp=fopen("student message","a"))==NULL){ printf("cannot open the file:\n");exit(0);}for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);printf("输入要插入学生的信息:\n");printf("学号:");scanf("%s",st.num);printf("姓名:");scanf("%s",);printf("分数:");scanf("%d",&st.score);n++;fwrite(&st,sizeof(struct student),1,fp);fclose(fp);system("pause");menu();}void delet() /*定义删除函数*/ { int i,t;char name[10];void menu();FILE *fp,*fp1;if ((fp=fopen("student message","r"))==NULL){ printf("can not open file!\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);if ((fp1=fopen("student message","w"))==NULL){ printf("can not open file!\n");exit(0); }printf("请输入要删除学生的姓名:");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)for(i=0;i<t;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);for(i=t+1;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);printf("该学生信息已删除!\n\n");fclose(fp);fclose(fp1);system("pause");menu();}void query() /*定义查询函数*/ { int i;char a[10];void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){ printf("cannot open file\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);printf("输入要查询学生的姓名:");scanf("%s",a);for(i=0;i<n;i++)if(strcmp(stu[i].name,a)==0)printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score);fclose(fp);system("pause");menu();}void revise() /*定义修改函数*/char name[10];void menu();FILE *fp,*fp1;if((fp=fopen("student message","r"))==NULL){ printf("cannot open file\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);if ((fp1=fopen("student message","w"))==NULL){ printf("can not open file!\n");exit(0); }printf("请输入要修改学生的姓名:");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)t=i;printf("依次输入要修改学生的学号、姓名、分数:");scanf("%s %s %d",stu[t].num,stu[t].name,&stu[t].score);for(i=0;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);printf("该学生信息已修改成功!");fclose(fp);fclose(fp1);system("pause");menu();}void quite() /*退出*/ {printf("再见!!!\n\n");}void menu() /*定义菜单函数*/{ switch(menu_select()){ case '1': input();break;case '2': display();break;case '3': sort();break;case '4': insert();break;case '5': delet();break;case '6': query();break;case '7': revise();break;case '0': quite();break;}}void main() /*主函数*/ {menu();}。
完整代码+学生成绩管理系统
学生成绩管理系统完整版(C语言版能运行有截图)源程序代码#include<iostream.h>#include<stdlib.h>#include<ctype.h>#include<stdio.h>#include<string.h>typedef struct{char class_0[20];int number;char name[20];float electrics;float c_program;float multimedia;float english;float math;float sport;float polity;float summary;float average;}Student;Student stu[100];int menu(){char c;do{system("cls");cout<<"********************************学生成绩管理系统********************************"<<endl;cout<<"【1】输入数据"<<endl;cout<<"【2】显示所有数据"<<endl;cout<<"【3】按平均分降序排列"<<endl;cout<<"【4】查找并显示一组数据"<<endl;cout<<"【5】插入一组数据"<<endl;cout<<"【6】修改一组数据"<<endl;cout<<"【7】删除一组数据"<<endl;cout<<"【8】从文件中读入数据"<<endl;cout<<"【9】将所有记录写入文件"<<endl;cout<<"【0】退出本系统\n"<<endl;cout<<"**********************作者:孟强0611103班2011212423************************"<<endl;cout<<"请你选择操作(0-9):"<<endl;c=getchar();}while(c<'0'||c>'9');return(c-'0');}int Input(Student stud[],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){cout<<"请输入学生的班级:";cin>>stud[n+i].class_0;cout<<"请输入学生的学号:";cin>>stud[n+i].number;cout<<"请输入学生的姓名:";cin>>stud[n+i].name;cout<<"请输入该学生『电子电路』的成绩:";cin>>stud[n+i].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:";cin>>stud[n+i].c_program;cout<<"请输入该学生『多媒体技术』的成绩:";cin>>stud[n+i].multimedia;cout<<"请输入该学生『大学英语』的成绩:";cin>>stud[n+i].english;cout<<"请输入该学生『高等数学』的成绩:";cin>>stud[n+i].math;cout<<"请输入该学生『大学体育』的成绩:";cin>>stud[n+i].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:";cin>>stud[n+i].polity;stud[n+i].summary=stud[n+i].electrics+stud[n+i].c_program+stud[n+i].multimedia+stud[n+i].en glish+stud[n+i].math+stud[n+i].sport+stud[n+i].polity;stud[n+i].average=stud[n+i].summary/7;cout<<"该学生的总分为:"<<stud[n+i].summary<<"平均分为:"<<stud[n+i].average<<endl; gets(x);cout<<"=====>提示:继续写入成绩?(Y/N)";cin>>sign;i++;}return(n+i);}void Display(Student stud[],int n){int i;if(!stud)cout<<"没有记录";else{cout<<"--------------------------------------------------------------------------------"<<endl;cout<<"班级学号姓名电子C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;for(i=1;i<n+1;i++){stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].engli sh+stud[i-1].math+stud[i-1].sport+stud[i-1].polity;stud[i-1].average=stud[i-1].summary/7;cout<<stud[i-1].class_0<<" "<<stud[i-1].number<<" "<<stud[i-1].name<<" "<<stud[i-1].electrics<<" "<<stud[i-1].c_program<<" "<<stud[i-1].multimedia<<" "<<stud[i-1].english<<" "<<stud[i-1].math<<" "<<stud[i-1].sport<<" "<<stud[i-1].polity<<" "<<stud[i-1].summary<<" "<<stud[i-1].average<<endl;}cout<<"\t\t\t"<<endl; }system("pause");}void Sort(Student stud[],int n){int i,j,k;float s;char t[20];for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(stud[j].average<stud[j+1].average){strcpy(t,stud[j+1].class_0);strcpy(stud[j+1].class_0,stud[j].class_0);strcpy(stud[j].class_0,t);k=stud[j+1].number;stud[j+1].number=stud[j].number;stud[j].number=k;strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);s=stud[j+1].electrics;stud[j+1].electrics=stud[j].electrics;stud[j].electrics=s;s=stud[j+1].c_program;stud[j+1].c_program=stud[j].c_program; stud[j].c_program=s;s=stud[j+1].multimedia;stud[j+1].multimedia=stud[j].multimedia; stud[j].multimedia=s;s=stud[j+1].english;stud[j+1].english=stud[j].english;stud[j].english=s;s=stud[j+1].math;stud[j+1].math=stud[j].math;stud[j].math=s;s=stud[j+1].sport;stud[j+1].sport=stud[j].sport;stud[j].sport=s;s=stud[j+1].polity;stud[j+1].polity=stud[j].polity;stud[j].polity=s;s=stud[j+1].summary;stud[j+1].summary=stud[j].summary; stud[j].summary=s;s=stud[j+1].average;stud[j+1].average=stud[j].average;stud[j].average=s;}cout<<"--------------------------------------------------------------------------------"<<endl;cout<<" 班级学号姓名电子C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;for(i=1;i<n+1;i++){stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].engli sh+stud[i-1].math+stud[i-1].sport+stud[i-1].polity;stud[i-1].average=stud[i-1].summary/7;cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_p rogram<<stud[i-1].multimedia<<stud[i-1].english<<stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl ;}}int Insert(Student stud[],int n){char x[10];cout<<"请输入学生的班级:"<<endl;cin>>stud[n].class_0;cout<<"请输入学生的学号:";cin>>stud[n].number;cout<<"请输入学生的姓名:";cin>>stud[n].name;cout<<"请输入该学生『电子电路』的成绩:";cin>>stud[n].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:";cin>>stud[n].c_program;cout<<"请输入该学生『多媒体技术』的成绩:";cin>>stud[n].multimedia;cout<<"请输入该学生『大学英语』的成绩:";cin>>stud[n].english;cout<<"请输入该学生『高等数学』的成绩:";cin>>stud[n].math;cout<<"请输入该学生『大学体育』的成绩:";cin>>stud[n].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:";cin>>stud[n].polity;stud[n].summary=stud[n].electrics+stud[n].c_program+stud[n].multimedia+stud[n].english+ stud[n].math+stud[n].sport+stud[n].polity;stud[n].average=stud[n].summary/7;gets(x);n++;Sort(stu,n);cout<<"=====>提示:插入成功!"<<endl;return(n);}int Delete(Student stud[],int n){int s;int i=0,j;cout<<"输入需要删除学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无法找到改学号……"<<endl;return(n);}for(j=i;j<n-1;j++){strcpy(stud[j].class_0,stud[j+1].class_0);stud[j].number=stud[j+1].number;strcpy(stud[j].name,stud[j+1].name);stud[j].electrics=stud[j+1].electrics;stud[j].c_program=stud[j+1].c_program;stud[j].multimedia=stud[j+1].multimedia;stud[j].english=stud[j+1].english;stud[j].math=stud[j+1].math;stud[j].sport=stud[j+1].sport;stud[j].polity=stud[j+1].polity;}cout<<"=====>提示:已成功删除!"<<endl;return(n-1);}void Search(Student stud[],int n){int s;int i=0;cout<<"输入需要查找学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; return;}cout<<"---------------------------"<<endl;cout<<"班级:"<<stud[i].class_0<<endl;cout<<"学号:"<<stud[i].number<<endl;cout<<"姓名:"<<stud[i].name<<endl;cout<<"电子电路:"<<stud[i].electrics<<endl;cout<<"C语言程序设计:"<<stud[i].c_program<<endl;cout<<"多媒体技术:"<<stud[i].multimedia<<endl;cout<<"大学英语:"<<stud[i].english<<endl;cout<<"高等数学:"<<stud[i].math<<endl;cout<<"大学体育:"<<stud[i].sport<<endl;cout<<"马克思主义基本原理:"<<stud[i].polity<<endl;cout<<"总分:"<<stud[i].summary<<endl;cout<<"平均分:"<<stud[i].average<<endl;}void Modify(Student stud[],int n){int s;int i=0;cout<<"输入需要修改成绩学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无该学生的成绩……"<<endl;return;}cout<<"-----------------------------------该学生的信息---------------------------------"<<endl;cout<<" 班级学号姓名电子C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+ stud[i].math+stud[i].sport+stud[i].polity;stud[i].average=stud[i].summary/7;cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_p rogram<<stud[i-1].multimedia<<stud[i-1].english<<stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl ;cout<<"请输入学生的班级:"<<endl;cin>>stud[n+i].class_0;cout<<"请输入学生的学号:"<<endl;cin>>stud[n+i].number;cout<<"请输入学生的姓名:"<<endl;cin>>stud[n+i].name;cout<<"请输入该学生『电子电路』的成绩:"<<endl;cin>>stud[n+i].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:"<<endl;cin>>stud[n+i].c_program;cout<<"请输入该学生『多媒体技术』的成绩:"<<endl;cin>>stud[n+i].multimedia;cout<<"请输入该学生『大学英语』的成绩:"<<endl;cin>>stud[n+i].english;cout<<"请输入该学生『高等数学』的成绩:"<<endl;cin>>stud[n+i].math;cout<<"请输入该学生『大学体育』的成绩:"<<endl;cin>>stud[n+i].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:"<<endl;cin>>stud[n+i].polity;stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+stud[i]. math+stud[i].sport+stud[i].polity;stud[i].average=stud[i].summary/7;cout<<"该学生的总分为:"<<stud[i].summary<<"平均分为:"<<stud[i].average;}int Read(Student stud[],int n){int i=0,num;FILE *fp;char filename[20];cout<<"输入文件名:"<<endl;cin>>filename;if((fp=fopen(filename,"rb"))==NULL){cout<<"=====>提示:无法打开这个文件!"<<endl;cout<<"\t\t\t";system("pause");return(n);}fscanf(fp,"%d",&num);while(i<num){fscanf(fp,"%s%d%s%f%f%f%f%f%f%f%f%f",stud[n+i].class_0,&stud[n+i].number,stud[n+i].n ame,&stud[n+i].electrics,&stud[n+i].c_program,&stud[n+i].multimedia,&stud[n+i].english,&stu d[n+i].math,&stud[n+i].sport,&stud[n+i].polity,&stud[n+i].summary,&stud[n+i].average);i++;}n+=num;fclose(fp);cout<<"=====>提示:读入数据成功,可选择【显示所有成绩】查看"<<endl;cout<<"\t\t\t";system("pause");return(n);}void Save(Student stud[],int n){int i=0;FILE *fp;char filename[20];cout<<"输入文件名:";cin>>filename;if((fp=fopen(filename,"w"))==NULL){cout<<"=====>提示:无法打开这个文件!"<<endl;system("pause");return;}fprintf(fp,"%d\n",n);while(i<n){fprintf(fp,"%-8s%-8d%-6s%-6.1f%-7.1f%-7.1f%-6.1f%-6.1f%-6.1f%-7.1f%-8.1f%-6.2\n",stud[i ].class_0,stud[i].number,stud[i].name,stud[i].electrics,stud[i].c_program,stud[i].multimedia,stud[ i].english,stud[i].math,stud[i].sport,stud[i].polity,stud[i].summary,stud[i].average);i++;}fclose(fp);cout<<"=====>提示:已成功写入数据!"<<endl;}void main(){int n=0;for(;;){switch(menu()){case 1:cout<<endl<<"====>> 输入成绩<<===="<<endl;n=Input(stu,n);break;case 2:cout<<endl<<"====>> 显示所有记录<<===="<<endl;Display(stu,n);break;case 3:cout<<endl<<"====>> 按平均分降序排列<<===="<<endl; Sort(stu,n);cout<<"排序成功!"<<endl;cout<<"\t\t\t";system("pause");break;case 4:cout<<endl<<"====>> 查找并显示一组成绩<<===="<<endl; Search(stu,n);cout<<"\t\t\t";system("pause");break;case 5:cout<<endl<<"====>> 插入一组成绩<<===="<<endl;n=Insert(stu,n);cout<<"\t\t\t";system("pause");break;case 6:cout<<endl<<"====>> 修改一组成绩<<===="<<endl; Modify(stu,n);cout<<"\t\t\t";system("pause");break;case 7:cout<<endl<<"====>> 删除一组成绩<<===="<<endl;n=Delete(stu,n);cout<<"\t\t\t";system("pause");break;case 8:cout<<endl<<"====>> 从文件中读入数据<<===="<<endl;n=Read(stu,n);break;case 9:cout<<endl<<"====>> 将所有记录写入文件<<===="<<endl;Save(stu,n);cout<<"\t\t\t";system("pause");break;case 0:cout<<endl<<"====>> 谢谢您的使用!<<===="<<endl;cout<<"\t\t\t";system("pause");exit(0);}}}界面截图1、程序主菜单运行界面2、成绩录入界面3、成绩修改界面4、成绩数据删除界面5、插入数据界面6、将数据写入文件界面参考文献[1] 谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:高等教育出版社,2006[2] 谭浩强,C程序设计题解与上机指导(第3版)[M]. 北京: 清华大学出版社,2006。
c语言成绩管理系统源代码+流程图
#include<stdio.h>#include<string.h>#include<stdlib.h>void frist_print(){printf("\t\t********************************\n\n"); //欢迎信息printf("\t\t\t欢迎进入学生成绩系统\n");printf("\t\t\t\t\t\t\t\t 此程序合作完成由");printf("\n\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * \n");printf("\t\t\t\t\t\t\t\t * 王杨* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 李淼鑫* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 孙天顺* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * \n");}//***************************************************************************************************************************************************************************** ******void menu(){printf("\n\t\t***********************************\n"); //管理菜单printf("\n\t\t==========1.录入学生成绩===========\n\t\t+\n");printf("\t\t==========2.显示学生成绩===========\n\t\t+\n");printf("\t\t==========3.查询学生成绩===========\n\t\t+\n");printf("\t\t==========4.添加学生成绩===========\n\t\t+\n");printf("\t\t==========5.修改学生成绩===========\n\t\t+\n");printf("\t\t==========6.删除学生成绩===========\n\t\t+\n");printf("\t\t==========7.清空页面===========\n\t\t+\n");printf("\t\t==========8.退出系统===========\n");printf("\n\t\t***********************************\n");printf("please choise 1--8:\t");putchar(10);}//************************************************************************************** *************************************************************************************** ******struct MM // 结构体定义变量{char num[20];char name[10];float sco,sco2,sco3,sco4;int many;}mm;//************************************************************************************** *************************************************************************************** ******void scanf_1() //第一次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","wb+"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入学生的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("总成绩:\t");scanf("%f",&mm.sco);printf("平时成绩:\t");scanf("%f",&mm.sco2);printf("作业成绩:\t");scanf("%f",&mm.sco3);printf("考试成绩:\t");scanf("%f",&mm.sco4);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||ch=='Y');fclose(fp);}//************************************************************************************** *************************************************************************************** ******void find() //查询成绩的信息{ int a,b=0;char ch[20];FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要查询的成绩的方式\n\t1.编号2.姓名:\n\t请选择1 or 2 \t"); scanf("%d",&a);if(a==1){ getchar();printf("请输入学生的编号:\t");gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(mm.num,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("对不起!没有找到相关信息:\n");}else if(a==2){ printf("请输入学生的姓名:\t");getchar();gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("input error!\n");}fclose(fp);}//************************************************************************************** *************************************************************************************** ******void scanf_2() //第二次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","ab"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入要添加成绩的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("成绩:\t");scanf("%f",&mm.sco);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||ch=='Y');fclose(fp);}//************************************************************************************** *************************************************************************************** ******void print() //输出文档中的信息{FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");return ;}printf("编号\t姓名\t成绩\t\t学号\n");while(fread(&mm,sizeof(struct MM),1,fp)==1)printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);fclose(fp);}//************************************************************************************** *************************************************************************************** ******void change(){ //修改信息的函数,定义另一个文件,把要修改的信息放到该文件中struct XX //然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名{ //把原来的文件移除;char num[20];char name[10];float sco;int many;}xx;FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do{if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要修改成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1){if((strcmp(mm.num,ch)==0)){b++;//b的值如果一直没有改变说明,没有找到相关的信息;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);getchar();printf("请输入成绩的新编号:\t");gets(xx.num);printf("请输入成绩的新姓名:\t");gets();printf("请输入成绩的新成绩:\t");scanf("%f",&xx.sco);printf("请输入成绩新学号:\t");scanf("%d",&xx.many);getchar();fwrite(&xx,sizeof(struct XX),1,fp2);}if(strcmp(mm.num,ch)!=0)fwrite(&mm,sizeof(struct MM),1,fp2);}if(b==0){printf("\t没有找到相关信息!\n");getchar();}rewind(fp); //如果要继续修改的话,要把标记返回到文件的开头;printf("是否继续修改?enter 'y' or 'n' \t");ck=getchar();fclose(fp);fclose(fp2);remove("dd.dat");rename("temp.dat","dd.dat");}while(ck=='y'||ck=='Y');if(b!=0)//如果没有找到相关信息就不能输出printf("\t修改成功:\n");}//************************************************************************************** *************************************************************************************** ******void del(){ //删除函数(和修改很相似) FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do {if((fp=fopen("dd.dat","rb"))==NULL) //判断以读二进制的方式打开文件dd.dat,文件句柄保存到fp,fp是否为空如果为空,就是打开文件失败,否则打开文件成功{printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要删除成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1) //fread()成功的返回值就是参数里读取的数据块个数,这里就是1; sizeof中是每一项的长度,{if((strcmp(mm.num,ch)==0)) //设这两个字符串为str1,str2,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*4. 定义一个结构体数组,存放 10 个学生的学号,姓名,三门课的成绩,编写一程序。
应用简单菜单和子函数调用方式实现下面的功能:(1)从键盘输入 10 个学生的以上内容,存入文件 stud.txt(2)浏览显示成绩表(要求显示格式成绩时,格式较规范)(3)将 10 个学生按照平均分数从高到低进行排序,结果存入文件 stud1.txt( 4)输入任意的一个课程名,分数从高到低进行排序,结果存入文件stud2.txt ( 5)向文件 stud1.txt 中插入一个记录,成绩排序不变,结果存入文件 stud1.txt#include "stdio.h" /* 头文件名*/*/#inelude "stdlib.h" /*头文件名,因为程序中用到了exit(结束程序)和函数*/ #include "string.h"/*头文件名,因为程序中用到了字符串函数 */#define N 1000定义结构体模块struct student {long num; /* 定义学生学号为长整型 */char name[20]; /* 定义姓名为字符型,占 12 个字符*/float math,English,physics,total,average;float TOT_math,TOT_English,TOT_physics,TOT_total,TOT_aver;float aver_math,aver_English,aver_physics,aver_total,aver_average;}student; /* 定义结构体名称为 student*/输入初始值模块void input(struct student *p,int size){int i;for(i=0;i<size;i++){printf("请输入学号 :");while(1){scanf("%ld",&p[i].num);if(long(p[i].num)!=p[i].num||long(p[i].num)<=0){ /* 输入判断*/printf("输入错误,学号必须为整数 ,请重新输入 : ");fflush(stdin);}else{break;}}printf("请输入姓名 :");scanf("%s",p[i].name);printf("请输入数学成绩 :");保存初始值到 "初始二进制值 .txt"模************************************while(1){scanf("%f",&p[i].math);if(float(p[i].math)!=p[i].math||float(p[i].math)<=0||p[i].math>100||p[i].math <0){printf("输入错误 ,数学成绩必须为 0~100 之间的数 ,请重新输入 : "); fflush(stdin);} else{break;}}printf("请输入英语成绩 :");while(1){scanf("%f",&p[i].English);if(float(p[i].English)!=p[i].English||float(p[i].English)<=0||p[i].Eng lish>100||p[i ].English<0){printf("输入错误 ,英语成绩必须为 0~100 之间的数 ,请重新输入 : ");fflush(stdin); } else{break;}}printf("请输入物理成绩 :");while(1){scanf("%f",&p[i].physics);if(float(p[i].physics)!=p[i].physics||float(p[i].physics)<=0||p[i].phy sics>100||p[ i].physics<0){printf("输入错误 ,英语成绩必须为 0~100 之间的数 ,请重新输入 : "); fflush(stdin);} else{break;}} printf("\n");}printf("信息录入成功 !\n\n");}void save(struct student *p,int size){/* 保存模块 */FILE *fp;int i;if((fp=fopen("初始值二进制值 .txt","wb+"))==NULL){ /* 建立文件 */ printf("cannot open the file\n");}for(i=0;i<size;i++){ fwrite(&p[i],sizeof(student),1,fp);} /* 快写函数, 写到磁盘中为二进制数 */ fclose(fp); /* 关闭文件 */}*/ 块保存初始值到 "初始二进制值 .txt"模******************************************************************************************************void save0(struct student *p,int size){ /* 保存模块 */FILE *fp;int i;if((fp=fopen("初始值二进制值 1.txt","ab+"))==NULL){ /* 建立文件 */printf("cannot open the file\n");}for(i=0;i<size;i++){ fwrite(&p[i],sizeof(student),1,fp);} /* 快写函数, 写到磁盘中为二进制数 */ fclose(fp); /* 关闭文件 */ }保存初始值到可浏览文件模块void SAVE(struct student *p,int size){FILE *fp;int i,b=0; char name[20];printf("请输入保存初始值的可浏览文件名 : "); scanf("%s",name); if((fp=fopen(name,"w+"))==NULL){ printf("文件名输入错误 !!\n");}fprintf(fp,"\n\t\t -------------------------------- \n"); fprintf(fp,"\t\t 序号 学号 姓名 数学 英语 物理 \n"); fprintf(fp,"\t\t --------------------------------- "); fprintf(fp,"\n"); for(i=0;i<size;i++) {b++;fprintf(fp,"\t\t %-6d%-12d%-12s%-8.2f%-8.2f%-8.2f\n",b,p[i].num,p[i].n ame,p[ i].math,p[i].English,p[i].physics);fprintf(fp,"\t\t -------------------------------- \n"); }fclose(fp);printf("\n 文件保存成功!\n\n");*/ 块读取初始值模块int read(struct student *p,int size){FILE *fp;int i,n=0;if((fp=fopen("初始值二进制值 .txt","rb+"))==NULL){ printf("文件名输入错误 !!\n");}for(i=0;i<size;i++) { if(fread(&p[i],sizeof(structstudent),1,fp)!=0){n++;}} fclose(fp);return n;}I********************************************************************读取输出初始值模块void read_print(struct student *p,int size){ FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值 .txt","rb+"))==NULL){printf("文件名输入错误 !!\n");} printf("\n\t\t ------------------------------------ \n");printf("\t\t 序号学号姓名数学英语物理 \n");printf("\t\t --------------------------------- \n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}} for(i=0;i<n;i++) {b++;printf("\t\t %-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].mat h,p[i]. English);printf("%-8.2f\n",p[i].physics);printf("\t\t ---------------------------------- \n");}printf("\n\n");fclose(fp);}计算总分和平均分模块*****************************************'void total_average(struct student *p,int size){ /* 求每位同学的总分和平均分模块*/int i;for(i=0;i<size;i++){ /* 循环,从第一个同学开始计算到最后一个同学*/p[i].total=p[i].math+p[i].English+p[i].physics;/* 每个同学的总分等于三科成绩之和 */ p[i].average=p[i].total/3; /* 每个同学的平均分等于总分的 1/3*/ }}I********************************************************************输出初始值总分和平均分模块void read_print1(struct student *p,int size){void total_average(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值 .txt","rb+"))==NULL){printf("文件名输入错误 !!\n");} printf("\n\t ------------------------------------------------- \n");printf("\t 序号学号姓名数学英语物理总分平均分 \n");printf("\t --------------------------------------------- \n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}} total_average(p,n);for(i=0;i<n;i++) {b++;printf("\t %-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].math, p[i].E nglish);printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);printf("\t --------------------------------------------- \n");}printf("\n\n"); fclose(fp);}I***********************************************************************************************************************************************将初始值按平均分排序模块void range(struct student *p,int size){ /* 所有同学的成绩按平均分由高到低排序模块 */int i,j,k;struct student temp; /* 定义一个 student 类型的变量备用 */ for(i=0;i<size;i++){ /* 用选择排序法进行排序 */ k=i;for(j=i+1;j<size;j++) if(p[k].average<p[j].average){ temp=p[k];p[k]=p[j]; p[j]=temp;}}}输出初始值按平均分排序的结果模块int read_print2(struct student *p,int size){void total_average(struct student *p,int size);void range(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值 .txt","rb+"))==NULL){printf("文件名输入错误 !!\n");} printf("\n\t ------------------------------------------------- \n");printf("\t 学号姓名数学英语物理总分平均分名次 \n");printf("\t --------------------------------------------- \n");for(i=0;i<size;i++) { if(fread(&p[i],sizeof(structstudent),1,fp)!=0){n++;}} total_average(p,n); range(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].En glish);printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t ---------------------------------------------- \n");}printf("\n\n");"初始值按平均分排保存初始值按平均分排序后结果到可浏览文件模块 ******************************** */ fclose(fp); return n;}/******************** 保存初始值按平均分排序后结果到 序二进制值 .txt"模块void save1(struct student *p,int size){/* 保存模块 */FILE *fp;int i;if((fp=fopen("按平均分排序二进制值 .txt","wb+"))==NULL){ /* 建 立文件 */ printf("cannot open the file\n");}for(i=0;i<size;i++){ fwrite(&p[i],sizeof(student),1,fp);} /* 快写函数, 写到磁盘中为二进制数 */ fclose(fp); /* 关闭文件 */}读取排序后结果模块 ************************************************ int read1(struct student *p,int size){FILE *fp;int i,n=0;if((fp=fopen("按平均分排序二进制值 .txt","r+"))==NULL){ printf("文件名输入错误 !!\n");} for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}} fclose(fp); return n;}void SAVE1(struct student *p,int size){FILE *fp;int i,b=0; char name[20];printf("请输入保存排序结果的文件名 : ");scanf("%s",name); if((fp=fopen(name,"w+"))==NULL){ printf("文件名输入错误 !!\n");}fprintf(fp,"\n\t -------------------------------------------- \n");fprintf(fp,"\t 学号姓名数学英语物理总分平均分名次 \n");fprintf(fp,"\t --------------------------------------------- \n");fprintf(fp,"\n"); for(i=0;i<size;i++) {b++;fprintf(fp,"\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i ].Englis h);fprintf(fp,"%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average ,b); fprintf(fp,"\t --------------------------------------- \n");} fclose(fp); printf("\n 文件保存成功 !\n\n");}科目选择模块int choose(){system("color B1 ");system("cls");printf("\n\t************ 请选择按成绩从高到低排序的科目******************\n\n");printf("\t\t\t 查看数学成绩排序请输入 (数学 )\n\n");printf("\t\t\t 查看英语成绩排序请输入 (英语 )\n\n");printf("\t\t\t 查看物理成绩排序请输入 (物理 )\n\n");printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* =*\n");printf("\t\t 请输入科目名称 : ");int a;char str1[]="数学",str2[]="英语",str3[]="物理";char str[20];scanf("%s",str);if(strcmp(str1,str)==0){a=1;}else{if(strcmp(str2,str)==0){a=2;}else{if(strcmp(str3,str)==0){a=3;}else{printf("\n 输入错误 ,请重新输入 !!\n\n"); system("pause");}} }return(a);所有同学的成绩按数学成绩由高到低排序}模块void range1(struct student *p,int size){int i,j,k;struct student temp;for(i=0;i<size;i++){ /* 用选择排序法进行排序 */ k=i;for(j=i+1;j<size;j++) if(p[k].math<p[j].math){ temp=p[k]; p[k]=p[j];p[j]=temp;}}所有同学的成绩按英语成绩由高到低排序}模块void range2(struct student *p,int size){int i,j,k;struct student temp;for(i=0;i<size;i++){ /* 用选择排序法进行排序 */ k=i;for(j=i+1;j<size;j++) if(p[k].English<p[j].English){ temp=p[k];p[k]=p[j]; p[j]=temp;}}}**************************************所有同学的成绩按物理成绩由高到低排序模块void range3(struct student *p,int size){int i,j,k;struct student temp;for(i=0;i<size;i++){ /* 用选择排序法进行排序 */ k=i;for(j=i+1;j<size;j++) if(p[k].physics<p[j].physics){ temp=p[k];p[k]=p[j]; p[j]=temp;}}}输出按数学科目排序结果模块int read_print31(struct student *p,int size){void total_average(struct student *p,int size);void range1(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("按平均分排序二进制值 .txt","rb+"))==NULL){printf("文件名输入错误 !!\n");} printf("\n\t ------------------------------------------------- \n");printf("\t 学号姓名数学英语物理总分平均分名次 \n");printf("\t --------------------------------------------- \n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}} total_average(p,n);range1(p,n); for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].En glish);printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t ---------------------------------------------- \n");}printf("\n\n");fclose(fp);return n;}输出按英语科目排序结果模块int read_print32(struct student *p,int size){void total_average(struct student *p,int size);void range2(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("按平均分排序二进制值 .txt","rb+"))==NULL){printf("文件名输入错误 !!\n");} printf("\n\t ------------------------------------------------- \n");printf("\t 学号姓名数学英语物理总分平均分名次 \n");printf("\t --------------------------------------------- \n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}} total_average(p,n);range2(p,n); for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].En glish);printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t ---------------------------------------------- \n");}printf("\n\n"); fclose(fp);return n;}输出按物理科目排序结果模块int read_print33(struct student *p,int size){ void total_average(struct student *p,int size); void range3(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("按平均分排序二进制值 .txt","rb+"))==NULL){printf("文件名输入错误 !!\n");} printf("\n\t ------------------------------------------------- \n");printf("\t 学号姓名数学英语物理总分平均分名次 \n");printf("\t --------------------------------------------- \n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}} total_average(p,n);range3(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].En glish);printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t ---------------------------------------------- \n");}printf("\n\n"); fclose(fp);return n;}保存按科目排序结果模块void SAVE2(struct student *p,int size){FILE *fp;int i,b=0;char name[20];printf("请输入保存科目排序后的文件名 : "); scanf("%s",name);if((fp=fopen(name,"w+"))==NULL){ printf("文件名输入错误 !!\n");}fprintf(fp,"\n\t -------------------------------------------- \n");fprintf(fp,"\t 学号姓名数学英语物理总分平均分名次 \n");fprintf(fp,"\t --------------------------------------------- \n");fprintf(fp,"\n"); for(i=0;i<size;i++) {b++;fprintf(fp,"\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i ].Englis h);fprintf(fp,"%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average ,b); fprintf(fp,"\t --------------------------------------- \n");} fclose(fp); printf("\n 文件保存成功 !\n\n");}输出所有值按平均分排序的结果模块输出所有值按平均分排序的结果模块int read_print3(struct student *p,int size){void total_average(struct student *p,int size);void range(struct student *p,int size);FILE *fp;int i,n=0,b=0;if((fp=fopen("初始值二进制值 1.txt","rb+"))==NULL){ printf("文件名输入错误 !!\n");} printf("\n\t ------------------------------------------------- \n");printf("\t 学号姓名数学英语物理总分平均分名次 \n");printf("\t --------------------------------------------- \n");for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}} total_average(p,n);range(p,n);for(i=0;i<n;i++) {b++;printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].En glish);printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);printf("\t ---------------------------------------------- \n");}printf("\n\n");fclose(fp);return n;}查找模块void search(struct student *p,int size){ void total_average(struct student *p,int size);char str[20]; long c;printf("\n\t* ******************* 查找某位同学的成绩int i,a,flag=0,n=0;*********************\n\n");printf("\t\t\t 按学号查找请输入 (学号 )\n\n"); printf("\t\t\t 按姓名查找请输入 (姓名 )\n\n");printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*==*\n");char str1[]="学号",str2[]="姓名";char str3[20];while(1){printf("\t\t 请输入查找方式 : ");scanf("%s",str3);if(strcmp(str1,str3)==0){a=1;break;}else{if(strcmp(str2,str3)==0){a=2;break;}else{printf("\n 输入错误 ,请重新输入 !!\n\n");}}}switch(a){case 1: printf("\n\t 请输入学号 : ");scanf("%s",str);c=strtol(str,NULL,0);FILE *fp;if((fp=fopen("初始值二进制值 1.txt","rb+"))==NULL){printf("文件名输入错误 !!\n");}for(i=0;i<size;i++) {if(fread(&p[i],sizeof(struct student),1,fp)!=0)n++;}total_average(p,n);for(i=0;i<n;i++)if(p[i].num==c){ flag=1;\n");物理总分printf("\t 学号平均分\n");姓名数学英语printf("\n\t ---------------------------------------------- \n");printf("\t 学号姓名数学英语物理总分平均分 \n");printf("\t ---------------------------------------------- \n");printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].Englis h);printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);printf("\t ---------------------------------------------- \n\n");break;}if(flag==0){printf("输入学号错误 !!\n");}break;case 2: printf("\n\t 请输入姓名 : "); scanf("%s",str);if((fp=fopen("初始值二进制值 1.txt","rb+"))==NULL){printf("文件名输入错误 !!\n");for(i=0;i<size;i++){if(fread(&p[i],sizeof(struct student),1,fp)!=0)n++;}total_average(p,n);for(i=0;i<n;i++)if(strcmp(str,p[i].name)==0){ flag=1;printf("\n\tprintf("\t ---------------------------------------------- \n");printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].Englis h);printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);printf("\t ---------------------------------------------- \n\n");break;}if(flag==0){printf("输入姓名错误 !!\n");}break;}**************************}void correct(struct student *p,int size){void input(struct student *p,int size);int i,a=0,flag=0; FILE *fp;if((fp=fopen("初始值二进制值 1.txt","r+"))==NULL){printf("不能打开文件 \n");}printf("请输入需要修改人的学号进行修改 ,修改后将自动计算总分和平均分并排序 !!\n");printf("\n\t 请输入需要修改学生的学号 : ");scanf("%ld",&p[N].num);for(i=0;fread(&p[i],sizeof(struct student),1,fp)!=0;i++){a++;}for(i=0;i<a;i++)if(p[i].num==p[N].num){flag=1;printf("请输入新的信息 !!\n\n");printf("请输入学号 :");while(1){scanf("%ld",&p[i].num);if(long(p[i].num)!=p[i].num||long(p[i].num)<=0){ /* 输入判断*/printf("输入错误,学号必须为整数 ,请重新输入 : ");fflush(stdin);} else{break;}} printf("请输入姓名 :");scanf("%s",p[i].name);printf("请输入数学成绩 :");while(1){scanf("%f",&p[i].math);if(float(p[i].math)!=p[i].math||float(p[i].math)<=0||p[i].math>100||p[ i].math <0){printf("输入错误,数学成绩必须为0~100 之间的数,请重新输入: ");fflush(stdin);}else{break;}}printf("请输入英语成绩 :");while(1){scanf("%f",&p[i].English);if(float(p[i].English)!=p[i].English||float(p[i].English)<=0||p[i].Eng lish>100||p[i ].English<0){printf("输入错误 ,英语成绩必须为 0~100 之间的数 ,请重新输入 : ");fflush(stdin); } else{break;}} printf("请输入物理成绩 :"); while(1){scanf("%f",&p[i].physics);if(float(p[i].physics)!=p[i].physics||float(p[i].physics)<=0||p[i].phy sics>100||p[i].physics<0){printf("输入错误,英语成绩必须为0~100 之间的数,请重新输入: ");fflush(stdin);} else{break;}}}if((fp=fopen("初始值二进制值 1.txt","w+"))==NULL){printf("不能打开文件 \n");exit(0); }for(i=0;i<a;i++){ fwrite(&p[i],sizeof(struct student),1,fp);}fclose(fp);if(flag==0){printf("对不起 !! 没有查找到您所输的学号 !!\n");}}删除void delite (struct student *p,int size){int i,a=0,flag=0; FILE *fp;printf("请输入需要删除的学号进行查找后,该项将自动删除并自动计算总分和平均分及排序 !!\n");if((fp=fopen("初始值二进制值 1.txt","rb+"))==NULL){ printf("不能打开文件 \n");}printf("\n\t 请输入需要删除学生的学号 : "); scanf("%ld",&p[N].num);for(i=0;fread(&p[i],sizeof(struct student),1,fp)!=0;i++){a++;}for(i=0;i<a;i++){if(p[i].num==p[N].num){ for(i=i;i<a;i++){ p[i]=p[i+1];}if((fp=fopen("初始值二进制值 1.txt","w+"))==NULL){ printf("不能打开文件 \n");exit(0);} for(i=0;i<a-1;i++){ fwrite(&p[i],sizeof(struct student),1,fp);} fclose(fp);flag=1;break;}} if(flag==0){ printf("对不起 !! 没有你找到你想删除的人 !!\n");system("pause");*/\n\n");printf("\t |***| (6)插入新的成绩 \n\n");|***| (7)查找某位|=*=| (8)按学号修改|===| (9)按学号删除|=*=| (0)浏览所有同|===| (10)退出程序*/ ******************************************************* int menu(){int a;system("color 9F"); /* 改变输出框字体和背景的颜色 */ system("cls");/* 运行前清屏 */printf("\n");printf("\t===============成绩 *=*=*=*=*=*=* 处理=*=*=*=*=*=*=* 系统===============\n");printf("\n\t 作者:卢荣盼 班级 :计本 102 学号:1018014052\n\n");printf("\t 此程序具有以下功能: \n"); printf("\t =========\n");printf("\n\t |***| (1)输入同学的相关信息同学的成绩 \n\n"); printf("\t |=*=| (2)浏览初始学生信息某位同学的成绩 \n\n"); printf("\t |===| (3)求初始学生总分及平均分某位同学的信息 \n\n"); printf("\t |=*=| (4)查看初始学生平均分排序 学的信息及排名 \n\n"); printf("\t |===| (5)按科目排序存入所有成绩printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");printf("\t 请选择操作序号 (0-7):"); /* 选择操作项 */scanf("%d",&a); /* 输入选择项 */ return a;}主函数******************************************************* void main(){int b=0,n;struct student p[N];}while(1){switch(menu()){case 1:system("color B0 ");system("cls");printf("请输入要保存的初始数据的个数 : ");while(1){scanf("%d",&n);if(int(n)!=n||long(n)<=0){ /* 输入判断 */ printf("输入错误,个数必须为整数 ,请重新输入 : "); fflush(stdin);}else{break;}} input(p,n); /* 输入初始同学信息 */save(p,n);save0(p,n);SAVE(p,n); /* 保存初始同学信息 */system("pause"); /* 程序运行至此暂停,然后按任意键可继续运行*/break;case 2:system("color F9");system("cls");printf("\n\n 读取数据如下 :\n");read_print(p,N); /* 读取并输出初始值数据 */system("pause");break;case 3:system("color d0 ");system("cls");printf("\n\n\n\n 录入初始学生的总分平均分如下表 : \n");read_print1(p,N); /* 输出初始值每位同学的总分和平均分*/system("pause");break;case 4:system("color F0 ");system("cls");printf("\n\n\n\n 录入初始学生成绩按平均分由高到低排序如下\n\n");SAVE1(p,read_print2(p,N)); /* 输出和保存初始值每位同学的平均分排名*/save1(p,read(p,N)); system("pause");break;case 5:switch(choose()){case 1: printf("\n 所有同学的成绩按数学成绩由高到低排序如下 :\n\n");/* 保存输出SAVE2(p,read_print31(p,N));模块*/system("pause");break;case 2: printf("\n 所有同学的成绩按英语成绩由高到低排序如下 :\n\n");SAVE2(p,read_print32(p,N)); /* 保存输出模块*/system("pause");break;case 3: printf("\n 所有同学的成绩按英语成绩由高到低排序如下 :\n\n");SAVE2(p,read_print33(p,N)); /* 保存输出模块*/system("pause");break;}break;case 6: system("color d0 "); system("cls");printf("插入前学生信息如下 :\n"); read_print3(p,N);printf("请输入插入学生信息 :\n\n"); input(p,1);save0(p,1);printf("插入后学生信息如下 :\n");SAVE1(p,read_print3(p,N)); system("pause"); break;case 7:system("color fc "); system("cls"); search(p,N);system("pause");break;case 8: system("color E0 "); system("cls"); printf("修改前学生信息如下 :\n"); read_print3(p,N); correct(p,N);printf("修改后学生信息如下 :\n"); SAVE1(p,read_print3(p,N));system("pause");break;case 9:system("color A0 "); system("cls"); printf("删除前学生信息如下 :\n"); read_print3(p,N); delite(p,N);printf("删除后学生信息如下 :\n"); SAVE1(p,read_print3(p,N));谢谢使用程序,谢 /* 程序终止 system("pause");break;case 0: system("color e0 "); system("cls"); printf("读取数据如下 :\n"); read_print3(p,N); system("pause");break;case 10:system("color E0 ");{printf("\n谢!!\n\n");}system("pause");exit(O);*/default: system("color fc ");{printf("\n菜 单 选 择 错 误 ,请 重 新 选择!!\n\n");}system("pause");break;}}}。