分类：教育/科学
问题：数据结构课程设计——学生成绩管理系统的源代码如题！！一定要是能够 
如题！！一定要是能够运行的源啊！
回答：#include <std.h>#include <stdlib.h>#include <string.h>struct student{char name[60];char ID[7];int score;};int dq(struct student st[]);void xianshi();void bc(struct student st[]);void add(); void select();void zz();void chazhao();void xhcz();void xmcz();void del();void xmsc();void xhsc();void tj();void px();void bjg();void xg();void xhxg(); void xmxg();void bca();void fh();struct student st[300]; //这个数组用来保存所有的学生信息 和文件里面的一致int Number=0; //记录总的学生人数 也就是数组/文件里面的学生人数void main(){int choose=0;FILE *fp=NULL;char yesorno;if((fp=fopen("C://student.dat","rb"))==NULL){printf("\n=========>提示：文件不存在，是否要创建一个?(y/n)\n");scanf("%c",&yesorno);if(yesorno=='y'||yesorno=='Y'){ //这里仅为了建立文件fp=fopen("C://student.dat","wb");fclose(fp);}elseexit(0);}else{Number=dq(st); //要是文件只能够已经有数据 将数据初始化到数组中}system("cls");while(true) { xianshi();printf("\t\t====>请选择：");scanf("%d",&choose);system("cls");switch(choose){case 0: exit(0);//退出 break; case 1: add();fh();//增加学生成绩break; case 2: select();fh();//查看学生成绩break; case 3: chazhao();fh();// 查找 break;case 4: del(); fh();//删除 break;case 5: tj();fh();//统计break;case 6: px();fh();//排序 break;case 7: bjg();fh();//输出不及格 break;case 8: xg();fh();//修改break; case 9:zz();fh();//作者break;case 10:bca();fh();//保存 break;default:break;}fflush(stdin);getchar();system("cls");}}void bca(){printf("\t=====程序在运行时已自动保存.....\n");}void fh(){printf("\t===>按Enter键返回主菜单\n");}void xg() //修改学生信息{int way=0;printf("请选择修改查找方式\n");printf("1 按姓名查找修改\n"); printf("2 按学号查找修改\n"); scanf("%d",&way);switch(way){case 1: xmxg();break;case 2: xhxg();break;default: printf("输入有误，结束!\n");break;} }//按姓名修改void xmxg() {FILE *fp=NULL;char name[60];int i=0;int changeIndex=0;int index=0;printf("请输入要修改的学生姓名：");scanf("%s",name);for (i=0;i<Number;i++){if (strcmp(name,st[i].name)){changeIndex=i; //保存要修改的人的下标}break;}printf("\t姓名\t学号\t成绩\n");printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);printf("请重新输入该学生信息");printf("姓名：");scanf("%s",st[changeIndex].name);printf("学号：");scanf("%s",st[changeIndex].ID);printf("成绩：");scanf("%d",&st[changeIndex].score);//信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen("C://student.dat","wb");for (i=0;i<Number;i++){fwrite(&st[i],sizeof(struct student),1,fp);}fclose(fp);}void xhxg()//按学号修改 {FILE *fp=NULL;char id[60];int i=0;int changeIndex=0;int index=0;printf("请输入要修改的学生学号：");scanf("%s",id);for (i=0;i<Number;i++){if (strcmp(id,st[i].ID)){changeIndex=i; //保存要修改的人的下标}break;}printf("\t姓名\t学号\t成绩\n");printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);printf("请重新输入该学生信息");printf("姓名：");scanf("%s",st[changeIndex].name);printf("学号：");scanf("%s",st[changeIndex].ID);printf("成绩：");scanf("%d",&st[changeIndex].score);//信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen("C://student.dat","wb");for (i=0;i<Number;i++){fwrite(&st[i],sizeof(struct student),1,fp);}fclose(fp);printf("\t=======>修改成功\n");}void bjg() //输出不及格人数 {int i=0;printf("以下是不及格:\n");printf("\t姓名\t学号\t成绩\n");for (i=0;i<Number;i++){if (st[i].score<60){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);}}}void px()//排序 {struct student temp;int wantNUmber=0;int i=0;int j=0;for(i=0;i<Number-1;i++){for(j=i;j<Number-1;j++){if(st[j].score>st[j+1].score){temp=st[j];st[j]=st[j+1];st[j+1]=temp;}} }printf("你想输出前几名的成绩：");scanf("%d",&wantNUmber);if (wantNUmber>Number){wantNUmber=Number;}printf("\t姓名\t学号\t成绩\n");for(i=0;i<wantNUmber;i++){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score); } }void tj()//统计 {int i=0;double sum=0.0;for(i=0;i<Number;i++){sum+=st[i].score;}printf("全班总分为：%f\n",sum);printf("平均分为：%f\n",sum/Number); } void del()//删除 {int n=0;printf("1 按姓名删除\n");printf("2 按学号删除\n");scanf("%d",&n);switch(n){case 1: xmsc();break;case 2: xhsc();break;}}void xmsc()//按姓名删除 {FILE *fp=NULL;char name[60];int i=0;int j=0;printf("请输入要删除的学生姓名：");scanf("%s",name);for(i=0;i<Number;i++){if (strcmp(name,st[i].name)==0) //如果查找到就删除{for (j=i;j<Number-1;j++){st[j]=st[j+1];}Number--;}}//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen("C://student.dat","wb");for (i=0;i<Number;i++){fwrite(&st[i],sizeof(struct student),1,fp);}fclose(fp);printf("删除成功;\n");}void xhsc()//按学号删除 {FILE *fp=NULL;char id[60];int i=0;int j=0;printf("请输入要删除的学生学号：");scanf("%s",id);for(i=0;i<Number;i++){if (strcmp(id,st[i].ID)==0) //如果查找到就删除{for (j=i;j<Number-1;j++){st[j]=st[j+1];}Number--;}}//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen("C://student.dat","wb");for (i=0;i<Number;i++){fwrite(&st[i],sizeof(struct student),1,fp);}fclose(fp);printf("删除成功;\n");}void chazhao()//查找学生 {int n=0;printf("1 按姓名查找\n");printf("2 按学号查找\n"); scanf("%d",&n);switch(n){case 1: xmcz();break;case 2: xhcz();break;default: printf("输入有误，结束!\n");break;} }void xhcz()//按学号查找 {char id[7];int i=0;printf("请输入要查找学生学号:");scanf("%s",id);system("cls");printf("\t姓名\t学号\t成绩\n");for (i=0;i<Number;i++){if (strcmp(id,st[i].ID)==0){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score); }}}void xmcz()//按姓名查找 { char name[7];int i=0;printf("请输入要查找学生姓名:");scanf("%s",name);system("cls");printf("\t姓名\t学号\t成绩\n");for (i=0;i<Number;i++){if (strcmp(name,st[i].name)==0){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);}}}void zz(){printf("\t**********************************************************\n\n");printf("\t^^^^^^^^^^ ^^^^^^^^^^\n\n");printf("\t^^^^^^^^^ ^^^^^^^^^\n\n");printf("\t^^^^^^^^ ^^^^^^^^\n\n");printf("\t^^^^^^^^^ ^^^^^^^^^\n\n");printf("\t^^^^^^^^^^ \n\n"); printf("\t**********************************************************\n\n");}void select()//查看学生 {int i=0;printf("以下是全部学生成绩\n");printf("\t姓名\t学号\t成绩\n");for(i=0;i<Number;i++){printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);}}void add()//增加学生 {int numberTemp=0;int i=0;struct student temp; //临时保存信息printf("请输入要增加学生成绩个数：");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++){printf("输入第%d个同学信息\n",i+1);printf("姓名：");scanf("%s", );printf("学号：");scanf("%s",temp.ID);printf("成绩：");scanf("%d",& ore);st[Number++]=temp; //将刚添加的写入到数组bc(&temp); //将刚添加的写入到文件}printf("添加成功\n");}void bc(struct student *st){FILE *fp=NULL;fp=fopen("C://student.dat","ab+");fwrite(st,sizeof(struct student),1,fp);fclose(fp);}int dq(struct student st[]){FILE *fp=NULL;int i=0;fp=fopen("C://student.dat","rb");while(fread(&st[i],sizeof(struct student),1,fp))i++;fclose(fp);return i;}void xianshi(){printf("\t*****************************************************************\n");printf("\t* *\n");printf("\t* 学生成绩管理系统 *\n");printf("\t* *\n");printf("\t* [1] 增加学生成绩 [2] 查看学生成绩 *\n");printf("\t* [3] 查找学生成绩 [4] 删除学生成绩 *\n");printf("\t* [5] 统计（总成绩和平均分） [6] 输出前N名学生成绩 *\n");printf("\t* [7] 输出不及格人数 [8] 修改学生信息 *\n");printf("\t* [9] 关于作者 [10] 保存数据 *\n");printf("\t* [0] 退出系统 *\n");printf("\t*****************************************************************\n");}