全国计算机等级考试班级成绩管理系统设计任务书文档格式.docx
《全国计算机等级考试班级成绩管理系统设计任务书文档格式.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试班级成绩管理系统设计任务书文档格式.docx(39页珍藏版)》请在冰豆网上搜索。
2)建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;
3)班级成绩管理系统应能提供以下功能:
(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)学生成绩显示:
完成班级全部学生成绩的显示,显示时按表格的形式,且应有表头;
(3)学生成绩追加:
完成新增一个(或多个)学生的成绩记录,要求在追加过程中有相应的提示信息,完成追加后能重新计算学生平均成绩并显示;
(4)学生成绩修改:
要求能按学号和按姓名两种定位方式,且可以按用户要求修改记录中除学号和姓名以外的指定内容,并重新计算学生的平均成绩;
(5)学生成绩信息的查询;
要示系统能按学号、按姓名查询以及能查询总分在某一指定范围内的学生信息,且能显示符合条件的所的记录,若所需查询的信息不存在时应有相应的提示信息。
(6)学生成绩信息的删除;
要求可按指定的学号和指定的姓名两种定位方式删除学生的成绩记录。
(7)要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。
(8)成绩排序:
按学生平均成绩进行排序;
(9)成绩统计:
①统计并以表格的形式显示所有课程的平均分;
②统计并显示选定的某门课程的平均分以及超过该平均分的人数,同时能将超过该平均分的学生记录以表格的形式显示出来。
4)说明:
(1)要求将修改后的数据写入到一个新的数据文件nwejck.txt中。
(2)对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。
5)班级成绩管理系统采用一个结构体数组,学生成绩数据库结构如下:
intxh/*学号*/
charname[10]/*姓名*/
doubleyy/*英语*/
doublemat/*数学*/
doublejsj/*计算机*/
doublewl/*物理*/
doublezf/*总分*/
注意:
学号不能重复且不少于4位数字,各项字符串的长度要求在4~10之间,数据库应有10条或多于10条以上的记录。
6)要求:
1要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;
2要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;
3设计报告的完整格式应包括以下部分的内容:
1系统设计总体思路;
2系统的主要功能;
3系统功能模块的划分(要求画出总体模块框图);
4主要功能的实现和各个程序模块说明(每个功能模块的框图、系统主模块的流程图,各个功能模块至少要有一个主要的流程图);
5程序调试过程及各模块调试中相应的部分截图;
6课程设计总结与体会(不少于500字)。
7课程设计参考文献;
8程序清单;
4课程设计周内,凡规定的集中上机时间必须到机房调试程序;
5设计完成后必须参加答辩,并按要求演示程序,提交课程设计报告和有关电子文档。
7)分组及安排
所选题目根据学生班号和学号确定,(班号+学号)%6+1。
如你的班号为01班、学号为01,则所选题目号为:
(1+1)%6+1=3,即课题号为3。
8)成绩评定
①系统设计方案是否合理;
②程序设计是否正确;
③调试结果;
④设计说明书的质量高低;
⑤答辩时回答问题情况;
⑥课程设计周表现情况;
总评成绩记入“课程设计成绩评分表”。
二、进度安排
第17周星期三14:
00——17:
00讲课、布置任务
星期五8:
00——12:
00机房上机调试程序
第18周星期三19:
00——22:
星期四14:
00——18:
00机房上机调试程序、答辩
附:
课程设计报告排版、打印和装订要求
1.课程设计报告装订顺序:
封面、任务书、目录、正文、附件、评分表。
按A4大小的纸张排版和打印。
2.设计报告的页码从目录之后开始使用;
3.正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;
行距为22磅。
正文中程序清单(英文)用英文字体TimesNewRoman,单倍行间距。
4.正文的内容:
一、课题的主要功能;
二、课题的功能模块的划分(要求画出模块图);
三、主要功能的实现(至少要有一个主要模块的流程图);
四、程序调试(各模块至少有一个程序调试的截图);
五、总结(不少于500字);
六、参考文献;
t、附件(包含所有程序的原代码,且程序中应有必要的注释)。
八.正文总字数要求在5000字以上(不含程序原代码)。
5.设计报告中任务书和评分表不需重新排版。
1、课题的主要功能…………………………………………………
二、课题的功能模块的划分………………………………………
总体框架:
三、主要功能的实现……………………………………………………
四、程序调试…………………………………………………………………
部分截图:
五、总结………………………………………………………………………
六、参考文献…………………………………………………………………
七、附件………………………………………………………………………
正文
1、课题的主要功能
(1)主菜单界面设计。
(2)学生成绩显示:
(3)学生成绩追加:
(5)学生成绩信息的查询;
(6)学生成绩信息的删除;
(7)要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。
按学生平均成绩进行排序。
(9)成绩统计:
②统计并显示选定的某门课程的平均分以及超过该平均分的人数,同时能将超过该平均分的学生记录以表格的形式显示出来。
2、课题的功能模块的划分
1)程序的模块组成:
主函数:
intmain()
文件打开函数:
voidRe_file()
文件关闭函数:
oidWr_file()
判断函数:
panduanyn()
计算总分函数:
voidJs()
排序函数:
voidSort()
显示函数:
voidDisp()
统计函数:
voidTotal()
追加函数:
voidAppe()
修改函数:
voidModi()
删除函数:
voidDele()
查询函数:
voidQuery()
退出函数:
voidQuit()
2)各个函数的主要功能:
判断。
计算总分。
班级全部学生成绩的显示。
①统计所有课程的平均分;
②统计选定的某门课程的平均分以及超过该平均分的人数,同时能将超过该平均分的学生记录以表格的形式显示出来。
新增一个(或多个)学生的成绩记录。
修改记录中除学号和姓名以外的指定内容。
删除学生的成绩记录。
①方便学生查找自己的成绩;
②查询总分在某一指定范围内的学生信息。
退出。
总体框架:
3、主要功能的实现
函数明细:
整个系统除了主函数外,另外还有14个函数,实现八大功能:
显示功能、追加功能、修改功能、删除功能、查询功能、排序功能、统计功能、退出功能。
各个函数的详细设计说明分别如下:
主函数main()
利用无限次循环for(;
;
)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
panduanyn()
判断模块,用于判断用户输入的Y和N,经过if(a=='
Y'
)return1;
elseif(a=='
N'
)return0;
判断得到相应信号输出。
panduanyn(chara)/*判断模块,用于判断用户输入的Y和N*/
{
if(islower(a))a=toupper(a);
if(a=='
elseif(a=='
elseprintf("
\n你输入的信息有误!
请重新输入:
"
);
a=getchar();
panduanyn(a);
}
voidJs()
用s[i].zf计算每个同学各科成绩总分。
voidJs()/*计算总分*/
{inti;
for(i=0;
i<
N;
i++)
s[i].zf=s[i].yy+s[i].mat+s[i].jsj+s[i].wl;
voidSort()
用ave[k]=s[k].zf/4计算每个同学的平均分,并经过if(ave[k]<
ave[j])判断,比较大小,按平均分对学生成绩进行整体排序。
voidSort()/*排序模块*/
{intj,k;
doubleave[20],t;
structstum;
Js();
for(k=0;
k<
k++)
ave[k]=s[k].zf/4;
/*计算平均分*/
N-1;
for(j=k+1;
j<
j++)
if(ave[k]<
ave[j])
{t=ave[k];
ave[k]=ave[j];
ave[j]=t;
/*对平均分排序*/
m=s[k];
s[k]=s[j];
s[j]=m;
}/*按平均分整体排序*/
}
voidDisp()
用for(i=0;
i++)函数循环按学号显示每个同学的各科成绩。
voidDisp()/*显示模块*/
chark;
doubleave[20];
Sort();
for(i=0;
ave[i]=s[i].zf/4;
system("
color20"
cls"
printf("
========================欢迎使用学生成绩显示系统=========================="
\n\n\n班级成绩管理"
\n\n\t学号姓名英语数学计算机物理总分平均分\n"
\n\t%-8d%-8s%-8.2lf%-8.2lf%-8.2lf%-8.2lf%-8.2lf%-8.2lf\n"
s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl,s[i].zf,ave[i]);
puts("
\n\n输入任意值返回主菜单!
k=getchar();
流程图如下:
\n\t%-8d%-8s%-8.2lf%-8.2lf%-8.2lf%-8.2lf%-8.2lf%-8.2l
voidTotal()
成绩统计:
①统计并以表格的形式显示所有课程的平均分;
②统计并显示选定的某门课程的平均分以及超过该平均分的人数,同时通过switch(sele)能将超过该平均分的学生记录以表格的形式显示出来。
voidAppe()
通过while(panduanyn(k))完成新增一个(或多个)学生的成绩记录,然后N=N+1;
要求在追加过程中有相应的提示信息,如:
\n\n请问还要继续追加吗?
继续追加请输入:
Y;
不追加请输入:
\n"
),完成追加后能重新计算学生平均成绩并显示。
voidModi()
要求能按学号和按姓名两种定位方式,printf("
\n\n\n\t输入选择修改方式号"
\n\n\t\tY.按姓名\t\tN.按学号。
\n\t"
且可以按用户要求修改记录中除学号和姓名以外的指定内容,printf("
\n\n\n\t\t需修改学生的成绩信息"
\n\n项目序号:
\t1-------2-------3--------4-------5------\n"
\n\n\t学号姓名英语数学计算机物理总分\n"
然后用switch(sele)输入,再对应修改,并重新计算学生的平均成绩。
voidDele()
\n\n\n\t输入选择删除方式号"
提示删除成功,printf("
\n\n\n\t\t\t\t数据删除成功!
\n\n"
)。
voidQuery()
要示系统能按学号、按姓名查询以及能查询总分在某一指定范围内的学生信息,把总分范围分为printf("
\n\t总分范围:
280以下280~300300~320320~340340~360360以上\n"
且能根据switch(sele)输入范围后显示符合条件的所的记录,若所需查询的信息不存在时应有相应的提示信息printf("
\n\n你的输入有误,请重新输入!
voidQuit()
退出程序。
voidQuit()/*退出*/
{printf("
******Thankyoubye******\n"
4、程序调试
由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。
在用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。
刚开始把显示模块做好后,程序调试没问题,后来在做几个模块,就有错误了,我也找不到错误在哪里,后来就把程序全部编完,每个模块都做好后,再运行的。
解决的这个问题的办法是调整。
然后我一个错误,一个错误慢慢试着去更正,那天晚上我搞到凌晨三点,最后全部被我找到了,程序可以调试运行了,只是没有错误但是又有其它问题,例如,不能计算平均数,不知道怎么表示总分在一个段内的成绩,等。
后来第二天上机,老师告诉我的那个模块要计算平均分,就把计算平均分的函数放进去,这样果然就可以了,总分在一个段内的可以自己先列出总分段,在要读者选择。
经过老师的讲解,后来我都自己编出来了。
还有就是
出现两次是因为一次输入值,一次按Enter键。
部分截图
主菜单:
统计函数:
五、总结
课程设计是培养学生综合运用所学知识;
发现,提出,分析和解决实际问题的最好机会,是提高实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说是无处不在。
因此,作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,经过一周的课程设计,我学到了许多,不仅巩固了以前所学过的知识,而且学到了很多在书上所没有学到过的知识,使我自己对C语言有了重新的认识,觉得它十分的重要,但掌握它又不是一件容易的事。
只要通过自己不停的思考,不断的上机实践。
才能够比较熟练的掌握好,在其中我们遇到了比较多的困难,因为其中有些知识我们并没有学到过,要自己去查找资料问同学和老师来完成。
在设计过程中遇到问题,可以说是困难重重,因为毕竟是第一次做的,难免会遇到各种各样的问题,同时在设计过程中发现了自己的不足之处,对以前的所学过的知识理解的不够深刻,掌握的不够牢固,比如说结构体,数据库,新生成的文件夹……通过这次课程设计之后,觉得以前学过的知识要重新温习。
毕竟第一次自己动手搞程序,对每一次微小的进步都感到非常的兴奋,当真正沉入程序中一步一步思考,推导,编出程序时,心里真的会很高心,很有成就感,我也从中尝到了成功的快乐,我相信,只要付出了就一定会有回报的,我也从中找到了快乐。
这次课程设计的题目是班级成绩管理系统,看起来十分的容易.但做起来还是有些手忙脚乱.
这次课程设计终于完成了,在设计中遇到了许多的问题,但在自己的思考和老师和同学的指导与帮助下,终于游刃而解,同时在老师的身上我学到了很多实用的知识。
在此我表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢。
六、参考文献
《C语言程序案例分析》人民邮电出版社
《C语言程序设计》(第2版)北京邮电大学出版社
《C程序设计》(第三版)清华大学出版社
《C语言程序设计案例分析》人民邮电出版社
《全国计算机等级考试教程二级C语言》中国科学文化音像出版社
7、附件
#include"
stdio.h"
string.h"
conio.h"
stdlib.h"
ctype.h"
intN=0;
structstu
intxh;
/*学号*/
charname[10];
/*姓名*/
doubleyy;
/*英语*/
doublemat;
/*数学*/
doublejsj;
/*计算机*/
doublewl;
/*物理*/
doublezf;
/*总分*/
}s[20];
voidRe_file()
FILE*fp;
fp=fopen("
bjcjk.txt"
"
r"
while(fscanf(fp,"
%d\n%s\n%lf\n%lf\n%lf\n%lf\n%lf\n"
&
s[N].xh,s[N].name,&
s[N].yy,&
s[N].mat,&
s[N].jsj,&
s[N].wl,&
s[N].zf)!
=EOF)N++;
fclose(fp);
voidWr_file()
nwejck.txt"
w"
fprintf(fp,"
s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl,s[i].zf);
}
doubleave[20],t;
structstum;
Js();
for(k=0;
ave[k]=s[k].zf/4;
for(j=k+1;
if(ave[k]<
{t=ave[k];
ave[i]=s[i].zf/4;
system("