成都工业学院学生成绩管理制度系统专周报告.docx

上传人:b****6 文档编号:6667829 上传时间:2023-01-08 格式:DOCX 页数:26 大小:35.96KB
下载 相关 举报
成都工业学院学生成绩管理制度系统专周报告.docx_第1页
第1页 / 共26页
成都工业学院学生成绩管理制度系统专周报告.docx_第2页
第2页 / 共26页
成都工业学院学生成绩管理制度系统专周报告.docx_第3页
第3页 / 共26页
成都工业学院学生成绩管理制度系统专周报告.docx_第4页
第4页 / 共26页
成都工业学院学生成绩管理制度系统专周报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

成都工业学院学生成绩管理制度系统专周报告.docx

《成都工业学院学生成绩管理制度系统专周报告.docx》由会员分享,可在线阅读,更多相关《成都工业学院学生成绩管理制度系统专周报告.docx(26页珍藏版)》请在冰豆网上搜索。

成都工业学院学生成绩管理制度系统专周报告.docx

成都工业学院学生成绩管理制度系统专周报告

成都工业学院学生成绩管理制度系统专周报告

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

成都工业学院

课程设计报告

课程名称C语言课程设计

课题名称成绩管理系统

专业软件工程

(2)班

班级1506032班

学号150603236

姓名陈光超

指导教师杨明广

 

2016年2月26日

一.题目要求

1.问题描述:

对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.

2.要求:

(1)一个文件按以班为单位存储学生记录.

(2)将允许的操作分为8种,

1,录入学生成绩

2,查看学生成绩

3,修改学生成绩

4,删除学生成绩

5,学生成绩排序

6,写入五个默认成绩

7,查看本程序开发说明

0,退出管理系统

3.计算学生的总成绩.

4.按学号,各科成绩,总分排序输出学生成绩表

.

二.设计目的

根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.

三.总体设计

根据上面的需求分析,可以将这个系统分为以下模块:

输入模块,修改模块,删除模块,查找模块,显示模块.

4.程序总结

满足专周程序设计要求,程序抗干扰性强。

程序版本1-20添加功能,以及相应模块。

程序版本21-29修复BUG,以及界面UI调节。

五.详细设计

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)//成绩输出功能

{

FIL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1