1、显示一系列功能模块 N输入n,判断n是否是0-7 Y根据n的值调用各功能模块函数2. 录入功能int entry();单独输入各项信息,有益于提示用户操作情况。将输入的信息存储在全局变量中,有益于对数据进行操作。3. 查询模块int check(int);传入查询参数,根据参数返回学生序号4. 删除模块int del(int);先调用查询模块返回学生序号,根据序号删除学生,并返回删除执行情况5. 修改模块(集成于void change_ui();)先调用查询模块返回学生序号,再根据序号执行删除功能,最后执行录入功能6. 排序功能void sort(float *,int,int);对某一科逐个
2、排序,同时对学生信息排序,排序完成,重新写入文件。7. 输出功能int pscore(int);传入学生序号,根据序号输出学生信息。6 程序原代码注释:源代码下载地址/*/*成绩管理系统,软件版本 29 */* 班上学号 */* 此版本修复各种BUG */#includeint pscore(int);/成绩输出功能void menu();/主界面菜单void entry_ui();/录入界面int entry();/录入功能void check_ui();/查看界面int check(int);/查看功能void change_ui();/修改成绩界面void del_ui();/删除界面i
3、nt del(int);/删除功能void sort_ui();/排序界面void sort(float *,int,int);/排序功能(仅数据)void defs();/写入程序自带成绩,五个成绩void dscreen();/清屏函数,清空缓存区,再输出当前学生数int dask();/是否执行操作判断void about();/关于本程序struct student char name20; int id; float chinese; float math; float english; float sum; float average;P101;float sa101;/临时储存浮
4、点型数据(排序使用)void main() while(1) menu(); void menu()/菜单界面 dscreen(); printf(*n);* 学生成绩管理系统 *n* 1,录入学生成绩 *n* 2,查看学生成绩 *n* 3,修改学生成绩 *n* 4,删除学生成绩 *n* 5,学生成绩排序 *n* 6,写入五个默认成绩 *n*7,查看本程序开发说明*n* 0,退出管理系统 *n int n; scanf(%d,&n); fflush(stdin); switch(n) case 0:exit(0);break; case 1:entry_ui(); case 2:check_u
5、i(); case 3:change_ui(); case 4:del_ui(); case 5:sort_ui(); case 6:defs(); case 7:about(); default: printf(提示(主界面):输入错误,按任意键继续。n fflush(stdin); getchar();void entry_ui()/成绩录入界面 FILE *fp; fp=fopen(,a+ dscreen();当前功能:录入学生成绩*n请输入 姓名 学号 语文 数学 英语n if(!entry() break; fwrite(&P0,sizeof(P0),1,fp); fclose(fp
6、);成绩录入成功!按任意键继续。void check_ui()/查看成绩界面 int acheck=-1;/赋初值,防止循环时,读取上一个值学生成绩查询*n 1,按照姓名查询n 2,按照学号查询n 3,语文不及格查询n 4,数学不及格查询n 5,英语不及格查询n 6,全部学生成绩查询n 0,返回管理系统n提示(查询):请输入选择项: scanf(acheck); if(acheck=0)/返回管理系统 if(acheck6) printf(输入错误! else switch(acheck) case 1:if(!pscore(check(1) printf(没有这个姓名! else查询成功!
7、break; case 2:pscore(check(2)没有这个学号! case 3:check(3);printf( case 4:check(4); case 5:check(5); case 6:check(6); void change_ui()/修改成绩界面 int achange=-1,bchange=-1; FILE *fpch; fpch=fopen(学生成绩修改*n 1,输入学生序号修改n 2,输入学生姓名修改n 3,输入学生学号修改n提示(修改):bchange); if(bchange=0) if(bchange3) else/根据check()函数返回学生序号,赋值给
8、bchang if(bchange=1) check(6); printf(请输入学生序号: fflush(stdin); scanf(achange); if(0=achange|achangepscore(-3) achange=0;没有这个序号! if(bchange=2) if(!(achange=check(1) if(bchange=3)(achange=check(2) if(achange)正在执行修改操作! break; if(dask()/删除check()函数返回的学生序号bchange,并重新写入成绩 del(achange); fwrite(&P0,sizeof(P0
9、),1,fpch);/重新写入成绩成绩修改成功! fclose(fpch);void del_ui()/删除界面 int a=5,bdel=-1; FILE *fp;学生成绩删除*n 1,删除全部学生成绩n 2,输入学生序号删除n 3,输入学生姓名删除n 4,输入学生学号删除n提示(删除):a); if(a=0) if(a4) if(a=0&a0;i-)/pscore(-3)数据有变动,从后向前删除, del(i);成绩删除成功! else if(a=2)/根据序号删除 check(6); fflush(stdin); scanf(bdel); if(!(0bdel&bdelpscore(-3
10、) bdel=0; printf( if(a=3)/根据姓名删除(bdel=check(1) if(a=4)/根据学号删除(bdel=check(2) if(bdel) if(dask()/ 删除check()函数返回的学生序号bdel,并且bdel不能为O。 del(bdel); else操作取消,void sort_ui()/排序界面 student ssort100; int asort=-1,i=1,j=pscore(-3);r while(!feof(fp) fread(&ssorti,sizeof(P0),1,fp); i+;学生成绩排序n 1,学号排序n 2,语文成绩排序n 3,
11、数学成绩排序n 4,英语成绩排序n 5,总成绩排序n提示(排序):asort); if(asort=0)/返回管理系统 if(asort5) pscore(-1); if(asort=1)/学号成绩排序 for(i=1;i=j;i+) sai=(float)(ssorti.id); sort(sa,j,0); if(asort=2)/语文成绩排序 sai=ssorti.chinese; sort(sa,j,1); if(asort=3)/数学成绩排序 sai=ssorti.math; if(asort=4)/英语成绩排序 sai=ssorti.english; if(asort=5)/总成绩排
12、序 sai=ssorti.sum; fp=fopen(w for(i=1;i+)/重新写入排序后的成绩 fwrite(&Pi,sizeof(P0),1,fp); fclose(fp); pscore(-2);/输出所有成绩排序成功!int check(int a)/成绩查询功能 student Pcheck100; int i=1; fp=fopen( while(! fread(&Pchecki,sizeof(P0),1,fp); i+; if(a=1)/按照姓名查询 char an20;请输入姓名:%s,an); for(i=1;=pscore(-3); if(strcmp(an,Pche
13、cki.name)=0) return i; if(a=2)/按照学号查询 int a=0;请输入学号: if(a=Pchecki.id) if(a=3)/语文不及格学生 语文不及格学生信息n pscore(-1); if(Pchecki.chinese60) pscore(i); if(a=4)/数学不及格学生数学不及格学生信息n if(Pchecki.math if(a=5)/英语不及格学生 if(Pchecki.english if(a=6)/全部学生成绩 n pscore(-2); fclose(fp); return 0;int entry()/成绩录入功能正在输入学生成绩.输入eo
14、f取消操作。请输入 姓名:,P0.name);strcmp(P0.name,eof)/判断是否退出输入请输入 学号:P0.id);请输入 语文:%fP0.chinese);请输入 数学:P0.math);请输入 英语:P0.english); P0.sum=P0.chinese+P0.math+P0.english; P0.average=P0.sum/3; return 1;/成绩录入完成/取消成绩输入int pscore(int n)/成绩输出功能 FILE *fpp; fpp=fopen(/以前版本出现文件读取错误(打开方式为r)。 if(n0)/指定输出某人成绩|%-6d| |%-6s| |%-6d| |%| |%| |%| |%| |%|n,n,Pn.name,Pn.id,Pn.chinese,Pn.math,Pn.english,Pn.sum,Pn.average); return 1; if(n=-1)/输出界面|序 号| |姓 名| |学 号|
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1