学生成绩分布系统Word文档格式.docx
《学生成绩分布系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩分布系统Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段7
四、个人总结13
五、参考文献13
六、源程序13
一、需求分析
解决本题首先要解决两个问题:
首先是读取文件,读取文件这一步我们参照书上可用FILE*fp=fopen(),但是这一步又是非常麻烦,稍有不慎很可能就不能打开。
其次;
在读取文件时要先做一个循环,再构造一个主菜单的程序,即在用户界面首页输出简单的操作界面,为了能使用户在使用更加明了方便,可再构造子菜单。
本题除了读取文件较为困难外,其它所要编写程序都较为容易。
再有就是编写程序时要尽量考虑到程序简洁明了,为程序编写出现错误时修改提供方便,这也是非常重要的。
二、程序流程图
1、程序总体结构图
图2程序总体结构图
2、程序总体框图
图2程序总体框图
3、具体功能框图
Read()的框图
Check()的框图
Tongji()的框图
Chang()的框图
三、核心技术的实现说明及相应程序段
首要问题是解决读取文件score.txt的问题,并且注意在一些子函数中采用较好的表达方式使程序整体显得简洁准确,以及由于程序的繁琐而注意编程过程中的语法问题等。
如果能够解决好这几个问题,这个程序就能够编好了。
我认为以上几点是编写本程序过程中的关键。
1.查看函数(read)
该函数的核心内容主要是实现读取文件,我们可以参照书上可用FILE*fp=fopen()。
voidread()/*查看函数*/
{inti;
FILE*fp;
fp=fopen("
D:
\\score.txt"
"
r"
);
for(i=0;
i<
N;
i++)
{
fscanf(fp,"
%s\t%s\t%d\n"
stud[i].num,stud[i].name,&
stud[i].score);
printf("
stud[i].num,stud[i].name,stud[i].score);
}fclose(fp);
}
2.查询函数
该函数通过调用switch函数来选择查询的方式,
voidcheck()/*查询函数*/
{
inti,flag=0,a;
charb[100],x[20];
pleasechoosetheway:
1fornumand2forname\n"
scanf("
%d"
&
a);
switch(a)
case1:
printf("
enterthenum!
\n"
scanf("
%s"
x);
for(i=0;
if(strcmp(stud[i].num,x)==0)
{printf("
flag=1;
}
if(flag==0)printf("
Nothisperson!
break;
case2:
enterthename!
b);
if(strcmp(stud[i].name,b)==0)
{printf("
flag=1;
break;
}
if(flag==0)printf("
break;
3.统计函数
该函数的核心内容是通过循环if语句判断分值范围,并统计各分数段的人数。
voidtongji()/*统计函数*/
{inti,a=0,b=0,c=0,d=0,e=0;
if(stud[i].score>
=90)a++;
elseif(stud[i].score<
90&
&
stud[i].score>
=80)b++;
elseif(stud[i].score>
=70&
stud[i].score<
80)c++;
=60&
70)d++;
60)e++;
};
优秀/人:
\t%d\n良好/人:
\t%d\n中等/人:
\t%d\n及格/人:
\t%d\n不及格/人:
\t%d\n"
a,b,c,d,e);
}
4.修改信息函数
该函数的核心内容主要是对只写文件进行操作,通过switch语句进行分支选择,并调用for循环,if选择等函数以实现修改信息的功能。
voidchange()/*修改信息函数*/
{inta,flag=0;
charname[20];
charnum[20];
inti;
FILE*fp;
w"
);
1fornumand2fornametochange\n"
scanf("
num);
if(strcmp(stud[i].num,num)==0)
printf("
pleaseenterthenewscore!
stud[i].score=a;
fprintf(fp,"
case2:
name);
if(strcmp(stud[i].name,name)==0)
printf("
fclose(fp);
四、个人总结
这次为期一周的课程设计结束了,我想对于我们任何一个人来说都是一次挑战,通过这次课程设计,用C语言软件编写一个实际应用的程序,我深深的体会到编程是一个需要谨慎与严密精神的工作与认真钻研的重要性,同时我也感觉到做一名优秀程序员的不易。
在编程序过程中,我积极的和同学讨论,请教老师一些困难的问题和难点,最终编好和完善了程序。
使程序基本能完成编好和完善了程序,而且用户界面也比较友好,在运行过程中输出内容明了,循环顺畅,退出方便,很好的完成了任务。
通过此次课设我在独立思考问题方面的能力有很大的提高,也对C语言的知识有了进一步的了解。
尤其在C语言编程的问题上产生了极大的兴趣,让我们更加熟悉C语言的课程,使我们能用知识较好的,系统性的去解决一个看似很复杂的课程,,我将继续认真学习这方面的内容,不断丰富自己的知识,活跃自己的头脑。
希望能熟练的编译出程序,解决更多的实际问题。
这次课程设计检查我们对于知识的认知程度,使我们的思维更加的缜密,能够从一个整体去考虑某方面的问题,我想这是对我们的能力很好的锻炼。
通过这次课程设计让我获得了很多的知识,一个题目要求到最后的完整的程序虽不是一个奇迹,但是它毕竟是对自我能力的挑战,每个人需要去查找资料,去自己调试,发现在程序中的错误,同时在与同学的交流之中让我发现了很多的好的思路.。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include"
stdio.h"
string.h"
stdlib.h"
#defineN25
structstudent
{charnum[20];
charname[20];
intscore;
}stud[N];
voidread()/*查看函数*/
voidmain()/*菜单函数*/
#--***********************************--#\n"
#--*********学生成绩分布系统**********--#\n"
#--*制作人:
石磊磊*学号:
200604021163*--#\n"
#####################--***********************************--####################\n"
#--***欢迎进入学生成绩分布系统***--#\n"
#--***choose1:
读取数据***--#\n"
#--***choose2:
按学号或姓名查询成绩***--#\n"
#--***choose3:
修改成绩***--#\n"
#--***choose4:
统计各分数段人数***--#\n"
#--***choose5:
退出系统***--#\n"
do
{intch;
********************#--*********请输入你的选择1-5*********--#*******************\n"
ch);
switch(ch)
{
case1:
read();
break;
check();
case3:
change();
case4:
tongji();
case5:
exit(0);
default:
error,pleasepressentertocontinue!
}while
(1);