成都工业学院学生成绩管理系统专周报告.docx
- 文档编号:8103183
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:25
- 大小:56.73KB
成都工业学院学生成绩管理系统专周报告.docx
《成都工业学院学生成绩管理系统专周报告.docx》由会员分享,可在线阅读,更多相关《成都工业学院学生成绩管理系统专周报告.docx(25页珍藏版)》请在冰点文库上搜索。
成都工业学院学生成绩管理系统专周报告
成都工业学院-学生成绩管理系统-专周报告
五.详细设计
1.主函数(以及其它界面UI函数):
主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.其他界面UI函数和主函数类似。
流程图:
显示一系列功能模块
N
输入n,判断n是否是0-7
Y
根据n的值调用各功能模块函数
2.录入功能intentry();
单独输入各项信息,有益于提示用户操作情况。
将输入的信息存储在全局变量中,有益于对数据进行操作。
3.查询模块intcheck(int);
传入查询参数,根据参数返回学生序号
4.删除模块intdel(int);
先调用查询模块返回学生序号,根据序号删除学生,并返回删除执行情况
5.修改模块(集成于voidchange_ui();)
先调用查询模块返回学生序号,再根据序号执行删除功能,最后执行录入功能
6.排序功能voidsort(float*,int,int);
对某一科逐个排序,同时对学生信息排序,排序完成,重新写入文件。
7.输出功能intpscore(int);
传入学生序号,根据序号输出学生信息。
6.程序原代码
注释:
源代码下载地址
/********************************/
/***成绩管理系统,软件版本29***/
/*******班上学号150603236*****/
/***此版本修复各种BUG***/
/********************************/
#include
#include
#include
intpscore(int);//成绩输出功能
voidmenu();//主界面菜单
voidentry_ui();//录入界面
intentry();//录入功能
voidcheck_ui();//查看界面
intcheck(int);//查看功能
voidchange_ui();//修改成绩界面
voiddel_ui();//删除界面
intdel(int);//删除功能
voidsort_ui();//排序界面
voidsort(float*,int,int);//排序功能(仅数据)
voiddefs();//写入程序自带成绩,五个成绩
voiddscreen();//清屏函数,清空缓存区,再输出当前学生数
intdask();//是否执行操作判断
voidabout();//关于本程序
structstudent
{
charname[20];
intid;
floatchinese;
floatmath;
floatenglish;
floatsum;
floataverage;
}P[101];
floatsa[101];//临时储存浮点型数据(排序使用)
voidmain()
{
while
(1)
{
menu();
}
}
voidmenu()//菜单界面
{
dscreen();
printf("**************************\n");
printf("***学生成绩管理系统***\n");
printf("***1,录入学生成绩***\n");
printf("***2,查看学生成绩***\n");
printf("***3,修改学生成绩***\n");
printf("***4,删除学生成绩***\n");
printf("***5,学生成绩排序***\n");
printf("***6,写入五个默认成绩***\n");
printf("***7,查看本程序开发说明***\n");
printf("***0,退出管理系统***\n");
printf("**************************\n");
intn;
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case0:
exit(0);break;
case1:
entry_ui();break;
case2:
check_ui();break;
case3:
change_ui();break;
case4:
del_ui();break;
case5:
sort_ui();break;
case6:
defs();break;
case7:
about();break;
default:
printf("提示(主界面):
输入错误,按任意键继续。
\n");
fflush(stdin);
getchar();
}
}
voidentry_ui()//成绩录入界面
{
while
(1)
{
FILE*fp;
fp=fopen("score.dat","a+");
dscreen();
printf("当前功能:
录入学生成绩**\n");
printf("请输入姓名学号语文数学英语\n");
if(!
entry())
break;
fwrite(&P[0],sizeof(P[0]),1,fp);
fclose(fp);
printf("成绩录入成功!
");
printf("按任意键继续。
\n");
fflush(stdin);
getchar();
}
}
voidcheck_ui()//查看成绩界面
{
while
(1)
{
intacheck=-1;//赋初值,防止循环时,读取上一个值
dscreen();
printf("当前功能:
学生成绩查询**\n");
printf("1,按照姓名查询\n");
printf("2,按照学号查询\n");
printf("3,语文不及格查询\n");
printf("4,数学不及格查询\n");
printf("5,英语不及格查询\n");
printf("6,全部学生成绩查询\n");
printf("0,返回管理系统\n");
printf("提示(查询):
请输入选择项:
");
scanf("%d",&acheck);
fflush(stdin);
if(acheck==0)//返回管理系统
break;
if(acheck<0||acheck>6)
printf("输入错误!
");
else
{
switch(acheck)
{
case1:
if(!
pscore(check
(1)))
{
printf("没有这个姓名!
");
}
else
printf("查询成功!
");
break;
case2:
if(!
pscore(check
(2)))
{
printf("没有这个学号!
");
}
else
printf("查询成功!
");
break;
case3:
check(3);printf("查询成功!
");break;
case4:
check(4);printf("查询成功!
");break;
case5:
check(5);printf("查询成功!
");break;
case6:
check(6);printf("查询成功!
");break;
}
}
printf("按任意键继续。
\n");
fflush(stdin);
getchar();
}
}
voidchange_ui()//修改成绩界面
{
while
(1)
{
intachange=-1,bchange=-1;
FILE*fpch;
fpch=fopen("score.dat","a+");
dscreen();
printf("当前功能:
学生成绩修改**\n");
printf("1,输入学生序号修改\n");
printf("2,输入学生姓名修改\n");
printf("3,输入学生学号修改\n");
printf("0,返回管理系统\n");
printf("提示(修改):
请输入选择项:
");
scanf("%d",&bchange);
fflush(stdin);
if(bchange==0)
break;
if(bchange<0||bchange>3)
printf("输入错误!
");
else//根据check()函数返回学生序号,赋值给bchang
{
if(bchange==1)
{
check(6);
printf("请输入学生序号:
");
fflush(stdin);
scanf("%d",&achange);
fflush(stdin);
if(0>=achange||achange>pscore(-3))
{
achange=0;
printf("没有这个序号!
");
}
}
if(bchange==2)
{
if(!
(achange=check
(1)))
{
printf("没有这个姓名!
");
}
}
if(bchange==3)
{
if(!
(achange=check
(2)))
{
printf("没有这个学号!
");
}
}
if(achange)
{
printf("正在执行修改操作!
\n");
if(!
entry())
break;
if(dask())//删除check()函数返回的学生序号bchange,并重新写入成绩
{
del(achange);
fwrite(&P[0],sizeof(P[0]),1,fpch);//重新写入成绩
printf("成绩修改成功!
");
}
}
}
printf("按任意键继续。
\n");
fclose(fpch);
fflush(stdin);
getchar();
}
}
voiddel_ui()//删除界面
{
while
(1)
{
inta=5,bdel=-1;
FILE*fp;
fp=fopen("score.dat","a+");
dscreen();
printf("当前功能:
学生成绩删除**\n");
printf("1,删除全部学生成绩\n");
printf("2,输入学生序号删除\n");
printf("3,输入学生姓名删除\n");
printf("4,输入学生学号删除\n");
printf("0,返回管理系统\n");
printf("提示(删除):
请输入选择项:
");
scanf("%d",&a);
fflush(stdin);
if(a==0)
break;
if(a<0||a>4)
printf("输入错误!
");
if(a>=0&&a<=4)
{
if(a==1)//删除全部
{
if(dask())
{
inti=pscore(-3);
for(;i>0;i--)//pscore(-3)数据有变动,从后向前删除,
del(i);
printf("成绩删除成功!
");
}
}
else
{
if(a==2)//根据序号删除
{
check(6);
printf("请输入学生序号:
");
fflush(stdin);
scanf("%d",&bdel);
fflush(stdin);
if(!
(0 { bdel=0; printf("没有这个序号! "); } } if(a==3)//根据姓名删除 { if(! (bdel=check (1))) printf("没有这个姓名! "); } if(a==4)//根据学号删除 { if(! (bdel=check (2))) printf("没有这个学号! "); } if(bdel) { if(dask())//删除check()函数返回的学生序号bdel,并且bdel不能为O。 { del(bdel); printf("成绩删除成功! "); } else printf("操作取消,"); } } } printf("按任意键继续。 \n"); fclose(fp); fflush(stdin); getchar(); } } voidsort_ui()//排序界面 { while (1) { studentssort[100]; intasort=-1,i=1,j=pscore(-3); FILE*fp; fp=fopen("score.dat","r"); while(! feof(fp)) { fread(&ssort[i],sizeof(P[0]),1,fp); i++; } fclose(fp); dscreen(); printf("当前功能: 学生成绩排序\n"); printf("1,学号排序\n"); printf("2,语文成绩排序\n"); printf("3,数学成绩排序\n"); printf("4,英语成绩排序\n"); printf("5,总成绩排序\n"); printf("0,返回管理系统\n"); printf("提示(排序): 请输入选择项: "); scanf("%d",&asort); fflush(stdin); if(asort==0)//返回管理系统 break; if(asort<0||asort>5) printf("输入错误! "); else { pscore(-1); if(asort==1)//学号成绩排序 { for(i=1;i<=j;i++) sa[i]=(float)(ssort[i].id); sort(sa,j,0); } if(asort==2)//语文成绩排序 { for(i=1;i<=j;i++) sa[i]=ssort[i].chinese; sort(sa,j,1); } if(asort==3)//数学成绩排序 { for(i=1;i<=j;i++) sa[i]=ssort[i].math; sort(sa,j,1); } if(asort==4)//英语成绩排序 { for(i=1;i<=j;i++) sa[i]=ssort[i].english; sort(sa,j,1); } if(asort==5)//总成绩排序 { for(i=1;i<=j;i++) sa[i]=ssort[i].sum; sort(sa,j,1); } fp=fopen("score.dat","w"); fp=fopen("score.dat","a+"); for(i=1;i<=j;i++)//重新写入排序后的成绩 { fwrite(&P[i],sizeof(P[0]),1,fp); } fclose(fp); pscore(-2);//输出所有成绩 printf("排序成功! "); } printf("按任意键继续。 \n"); fclose(fp); fflush(stdin); getchar(); } } intcheck(inta)//成绩查询功能 { studentPcheck[100]; inti=1; FILE*fp; fp=fopen("score.dat","r"); while(! feof(fp)) { fread(&Pcheck[i],sizeof(P[0]),1,fp); i++; } if(a==1)//按照姓名查询 { charan[20]; printf("请输入姓名: "); fflush(stdin); scanf("%s",an); for(i=1;i<=pscore(-3);i++) if(strcmp(an,Pcheck[i].name)==0) { returni; } } if(a==2)//按照学号查询 { inta=0; printf("请输入学号: "); scanf("%d",&a); fflush(stdin); for(i=1;i<=pscore(-3);i++) if(a==Pcheck[i].id) { returni; } } if(a==3)//语文不及格学生 { printf("语文不及格学生信息\n"); pscore(-1); for(i=1;i<=pscore(-3);i++) { if(Pcheck[i].chinese<60) pscore(i); } } if(a==4)//数学不及格学生 { printf("数学不及格学生信息\n"); pscore(-1); for(i=1;i<=pscore(-3);i++) { if(Pcheck[i].math<60) pscore(i); } } if(a==5)//英语不及格学生 { printf("数学不及格学生信息\n"); pscore(-1); for(i=1;i<=pscore(-3);i++) { if(Pcheck[i].english<60) pscore(i); } } if(a==6)//全部学生成绩 { printf("<**全部学生成绩查询**>\n"); pscore(-1); pscore(-2); } fclose(fp); return0; } intentry()//成绩录入功能 { while (1) { printf("正在输入学生成绩...输入eof取消操作。 \n"); printf("请输入姓名: "); scanf("%s",P[0].name); fflush(stdin); if(! strcmp(P[0].name,"eof"))//判断是否退出输入 break; printf("请输入学号: "); scanf("%d",&P[0].id);fflush(stdin); printf("请输入语文: "); scanf("%f",&P[0].chinese);fflush(stdin); printf("请输入数学: "); scanf("%f",&P[0].math);fflush(stdin); printf("请输入英语: "); scanf("%f",&P[0].english);fflush(stdin); P[0].sum=P[0].chinese+P[0].math+P[0].english; P[0].average=P[0].sum/3; return1;//成绩录入完成 } return0;//取消成绩输入 } intpscore(intn)//成绩输出功能 { FILE*fpp; fpp=fopen("score.dat","a+");//以前版本出现文件读取错误(打开方式为r)。 if(n>0)//指定输出某人成绩 { printf("|%-6d||%-6s||%-6d||%-6.1f||%-6.1f||%-6.1f||%-6.1f||%-6.2f|\n",n,P[n].name,P[n].id,P[n].chinese,P[n].math,P[n].english,P[n].sum,P[n].average); return1; } if(n==-1)//输出界面 printf("|序号||姓名||学号||语文||数学||英语||总成绩||平均分|\n"); if(n==-2)//输出所有成绩 { for(inti=1;i<=pscore(-3);i++) { fread(&P[i],sizeof(P[0]),1,fpp); pscore(i); } return1; } if(n==-3)//返回学生人数,pscore(-3),(可能出现未知错误,原因未知),原因为文件打开出现错误 { inti=1; while(! feof(fpp))//根据读取文件中的学生的次数,从而获得学生人数 { if(! feof(fpp)) fread(&P[i],sizeof(P[0]),1,fpp); i++; } fclose(fpp); returni-2; } fclose(fpp); re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成都 工业学院 学生 成绩管理系统 周报