生学成绩信息管理系统课程设计报告毕业设计.docx
- 文档编号:12340822
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:25
- 大小:258.66KB
生学成绩信息管理系统课程设计报告毕业设计.docx
《生学成绩信息管理系统课程设计报告毕业设计.docx》由会员分享,可在线阅读,更多相关《生学成绩信息管理系统课程设计报告毕业设计.docx(25页珍藏版)》请在冰豆网上搜索。
生学成绩信息管理系统课程设计报告毕业设计
滁州学院
课程设计报告
课程名称:
数据结构
设计题目:
学生成绩信息管理系统
系别:
计算机科学与技术
专业:
计算机科学与技术
组别:
第四组
起止日期:
11年5月20日~11年6月20日
指导教师:
杨斌
总体要求:
格式很不符合要求,请参照模板
计算机科学与技术系二0一一年制
目录
一、引言1
1.1、课程简介1
1.2、课程设计的背景1
1.3、课程设计的内容:
1
1.3.1、题目1
1.3.2、要求1
1.3.3、该功能的描述3
二、需求分析3
2.1、课程设计的题目3
2.2、课程设计任务3
2.3、课程设计要求3
2.4、课程设计思想3
2.5、软硬件运行环境4
2.6、开发工具4
三、概要设计4
3.1、课程设计图4
3.2、课程设计中的数据结构5
3.3、完成本课程设计所用的方法及原理6
四、详细设计6
4.1、程序源代码6
五、调试及操作说明17
5.1、成绩的合并后输出17
图
(二)、降序排列成绩17
5.1.1、成绩的降序输出17
5.1.2、成绩的升序输出18
5.1.3、不及格成绩学生的信息:
19
5.1.4、查找某个学生的成绩:
20
5.1.5、课件的价值20
5.1.6、参考文献20
六、课程设计总结与体会21
七、组员总结21
“图
(二)、降序排列成绩图”不要放在目录里,整体字体不对,。
。
。
,请按第三组的格式认真修改和模板的格式认真修改!
!
!
一、引言
1.1、课程简介
当今社会,计算机技术和通信技术已经不断发展,处理和传输的数据量越来越庞大。
文本文件存储的方式是普通人熟悉的数据管理的方式,我们要做的就是在文本中读取数据,在程序中处理数据,生成新的数据再保留在文本文档中,供其他人应用。
1.2、课程设计的背景
课程设计是为了让同学们了解学习数据结构的作用和意义。
数据结构是计算机科学与技术专业的专业基础课。
所有的计算机系统软件和应用软件都要用到各种类型的数据结构。
因此,想要更好地运用计算机来解决实际问题,仅仅掌握几门计算机程序设计语言是远远难以应付当前众多复杂的课题,想要有效地使用计算机,充分发挥它的性能,还必须学习和掌握好数据结构的有关知识,打好数据结构这门课的基础,对于学习计算机专业其它的课程,如操作系统、软件工程、编译原理、数据库、人工智能等十分有益。
1.3、课程设计的内容:
1.3.1、题目
学生成绩管理系统
1.3.2、要求
现有学生成绩信息文件1(1.txt),内容如下
姓名学号语文数学英语
张明明01677882
李成友02789188
张辉灿03688256
王露04564577
陈东明05673847
….......…
学生成绩信息文件2(2.txt),内容如下:
姓名学号语文数学英语
陈果31576882
李华明32889068
张明东33484256
李明国34504587
陈道亮35475877
…......(文件内容可根据测试要求,自行制定)
试编写一个管理系统,要求如下:
1)、实现对两个文件数据进行合并,生成新文件3.txt
2)、抽取出三科成绩中有补考的学生并保存在一个新文件4.txt
3)、对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)
4)、输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)
5)、要求使用结构体,链或数组等实现上述要求.
采用多种方法且算法正确者,可适当加分.
1.3.3、该功能的描述
1)、对学生的姓名、学号和各科成绩的录入;
2)、基本信息的查询;
3)、对每位同学的成绩进行分析,并对成绩进行降序排序;
二、需求分析
2.1、课程设计的题目
对学生成绩的管理。
2.2、课程设计任务
设计一个程序实现对学生成绩的分析并进行降序处理。
2.3、课程设计要求
要求使用结构体,链表或数组等实现学生成绩的查询、分类
和降序排序。
2.4、课程设计思想
利用文件对学生成绩等基本信息进行保存,并将其中的两文件合并成一个,生成新的文件;学生成绩的分析,将应补考的同学的基本信息保存在另一个文件中;利用合并进行降序。
2.5、软硬件运行环境
MicrosoftWindowsXP版本2002ServicePack3
或以上版本
MicrosoftWindows7旗舰版
2.6、开发工具
MicrosoftVisualC++6.0
三、概要设计
3.1、课程设计图
结束
图
(一)、分工图
3.2、课程设计中的数据结构
typedefstructdata
{
charname[10];
intXhao;
intchina;
intmath;
intenglish;
intsum;
}Data;
3.3、完成本课程设计所用的方法及原理
利用文件对学生成绩等基本信息进行保存,并将其中的两文件合并成一个,生成新的文件;对学生成绩的分析,将应补考的同学的基本信息保存在另一个文件中;利用合并进行降序。
四、详细设计
4.1、程序源代码
#include
#include
#include
#include
typedefstructdata【1】
{
charname[10];
intXhao;
intchina;
intmath;
intenglish;
intsum;
}Data;
intk;
///////////////////////////////////////////////////////////////////////////////
voidcreate(Datastu[])
{
inti=0;
【1】FILE*fp1,*fp2;
if((fp1=fopen("E:
\\c语言\\课程设计作业\\t1.txt","r"))==NULL)
{printf("FILEnotfound!
\n");
exit(0);
}
if((fp2=fopen("E:
\\c语言\\课程设计作业\\t2.txt","r"))==NULL)
{printf("FILEnotfound!
\n");
exit(0);
}
while(!
feof(fp1))
{
fscanf(fp1,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china,&stu[i].math,&stu[i].english);
stu[i].sum=stu[i].china+stu[i].math+stu[i].english;
i++;
};
i--;
while(!
feof(fp2))
{
fscanf(fp2,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china,&stu[i].math,&stu[i].english);
stu[i].sum=stu[i].china+stu[i].math+stu[i].english;
i++;
};i--;k=i;
printf("学号姓名语文数学英语总分\n");
for(intj=0;j
{
printf("%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
}
cout< } ///////////////////////////////////////////////////////////////////////////// //1、选择排序 voidhebing(Datastu[]) { intmax,jj,i; Datat; FILE*fp3; if((fp3=fopen("E: \\c语言\\课程设计作业\\t3.txt","w"))==NULL) {printf("FILEnotfound! \n"); exit(0); } for(jj=0;jj { max=jj; for(i=jj+1;i if(stu[max].sum {t=stu[max];stu[max]=stu[i];stu[i]=t;} } for(intj=0;j { fprintf(fp3,"%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum); printf("%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum); } } ///////////////////////////////////// //2、直接插入排序 voidhebing2(Datastu[]) { intt,i; Datatemp; FILE*fp5; if((fp5=fopen("E: \\c语言\\课程设计作业\\t5.txt","w"))==NULL) {printf("FILEnotfound! \n"); exit(0); } for(i=2;i<=k;i++) { stu[0]=stu[i]; t=i-1; while(stu[t].sum>stu[0]) { stu[t+1]=stu[t]; t=t-1; } stu[t+1]=stu[0]; } for(intj=1;j<=k;j++) { fprintf(fp5,"%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum); printf("%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum); } } /////////////////////////////////////////////////////////////////////////////// voidbukao(Datastu[]) { FILE*fp4; if((fp4=fopen("E: \\c语言\\课程设计作业\\t4.txt","w"))==NULL) {printf("FILEnotfound! \n"); exit(0); } for(inti=0;i { if(stu[i].china<60){ fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].china); printf("%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].china); fprintf(fp4,"%s\n","语文不及格: "); printf("%s\n","语文不及格: "); } if(stu[i].math<60){ fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].math); printf("%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].math); fprintf(fp4,"%s\n","数学不及格: "); printf("%s\n","数学不及格: "); } if(stu[i].english<60){ fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].english); printf("%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].english); fprintf(fp4,"%s\n","英语不及格: "); printf("%s\n","英语不及格: "); } } } /////////////////////////////////////////////////////////////////////////////// voidsearch(Datastu[]) { intj,flag=0; charname[10]; printf("输入一个学生的姓名: \n"); scanf("%s",name); fflush(stdin); for(inti=0;i { j=strcmp(name,stu[i].name); if(j==0) { flag=1; printf("%d--%s--%d--%d--%d--%d\n",stu[i].Xhao,stu[i].name,stu[i].china,stu[i].math,stu[i].english,stu[i].sum); } } if(flag==0) cout<<"notfound"< } /////////////////////////////////////////////////////////////////////////////// voidprf() { cout<<"#************************************************************#"< cout<<"#******输入“1”,降序排列成绩******结果见文本文件t3******#"< cout<<"#******输入“2”,升序排列成绩*****结果见文本文件t5****#"< cout<<"#******输入“3”,补考信息********结果见文本文件t4**#"< cout<<"#******输入“4”,查找学生信息***************#"< cout<<"#******输入“0”,结束服务***************#"< } voidmain() { intj=1; charch; Datastu[20]; DataA[20]; prf(); cout<<"请输入要执行的步骤(以1,2,3,4,5,0): "< scanf("%c",&ch); fflush(stdin); create(stu); for(inti=0;i A[j]=stu[i]; while(ch! ='0') { switch(ch) { case'1': {cout<<"降序排列"< hebing(stu);} break; case'2': {cout<<"升序排列"< hebing2(A);} break; case'3': {cout<<"补考信息"< bukao(stu);} break; case'4': {printf("查找信息"); search(stu);} break; } cout<<"请输入要执行的步骤(以1,2,3,4,0): "< ch=getchar(); fflush(stdin); } } 五、调试及操作说明 5.1、成绩的合并后输出 图 (二)、降序排列成绩 5.1.1、成绩的降序输出 学号姓名语文数学英语总分 2李成友789188257 32李华明889068246 1张明明677882227 31陈果576882207 3张辉灿688256206 34李明国504587182 35陈道亮475877182 4王露564577178 5陈东明673847152 33张明东484256146 5.1.2、成绩的升序输出 学号姓名语文数学英语总分 33张明东484256146 5陈东明673847152 4王露564577178 34李明国504587182 35陈道亮475877182 3张辉灿688256206 31陈果576882207 1张明明677882227 32李华明889068246 2李成友789188257 图(三)、成绩的升序排列 5.1.3、不及格成绩学生的信息: 31--陈果---57语文不及格: 3--张辉灿---56英语不及格: 34--李明国---50语文不及格: 34--李明国---45数学不及格: 35--陈道亮---47语文不及格: 35--陈道亮---58数学不及格: 4--王露---56语文不及格: 4--王露---45数学不及格: 5--陈东明---38数学不及格: 5--陈东明---47英语不及格: 33--张明东---48语文不及格: 33--张明东---42数学不及格: 33--张明东---56英语不及格: 图(三)、不及格学生信息 5.1.4、查找某个学生的成绩 : 图(五)、查找信息 5.1.5、课件的价值 通过对代码的调试,可以成功的实现要求的功能,可以对需求的信息生成文本文档,便于操作者直接对学生成绩进行管理。 可直观的看出学生的优越性和差距。 5.1.6、参考文献 何钦明。 [C语言程序设计]。 北京。 高等教育出版社。 2010/7版。 胡学刚。 [数据结构(C语言版)]。 北京。 高等教育出版社。 2010/12版。 六、课程设计总结与体会 在课程设计中,我们组的成员分工合作。 他们每个人遇到过不同程度的问题都会想着去解决去实现,当一个人解决不了的时候,团队的优越性就体现出来了。 我们一起探讨,研究终于完成了这次的课程设计,虽然这只是一个小的程序,没有牵涉到什么外围的人力和物理资源。 但是我们能够了解做课程设计的精髓,为以后的学术报告做好铺垫。 七、组员总结 见附表。 学生管理系统总结 ------第十组组长: 孙大成 时间过得很快,一个学期又过去了。 在期末,按照老师的要求,我们一组四个人设计了一个学生管理系统。 借此来考察我们的学习成绩。 在设计的过程中,我编写的是将文件中的数据读取到数组中,然后对数据进行总分的直接排序算法。 每个人都很认真的完成自己的那一份任务,但我遇到困难时,他们也会义无反顾的来帮助我。 比如,在实现排序的过程时我不知道怎样来利用三门功课的成绩来判断学生层次问题,他们想到用数组中加入成绩总分的方式来比较。 这样比较直接也很方便。 我采纳了他们的意见,问题很快就迎刃而解了。 编辑的过程中还有一个问题,就是当从文件中读取数据的时候读到最后一行后还要继续读取下一行,计数变量就多了一个。 所以我的调试总是有问题,经过我多次断点调试之后终于发现问题的所在,我成功的靠着自己的努力解决了这一难题。 和他们的交流的时光很美好,这次的团队编程让我了解到了什么是团队合作,集体的智慧是个人无法达到的,而且集体的交流中充满着各种各样的乐趣,让看似有些沉闷的程序变得很有乐趣。 这就是我的收获。 课程设计总结与心得 ------第十组组员: 陈凤霞 这次我们小组所抽到的题目是有关学生成绩信息管理系统的安排,原以为课程设计不怎么好做,但是很幸运的是也不是太难,经过本小组成员在一起商量后,给各成员均分配了相应的合适的任务,而我的任务是将数组中的成绩进行合并后输出,也就是整个原程序中的学生信息系统的创建。 这个部分的程序首先是读出文件一和文件二,两个文件中所显示的内容则是学生姓名、学号以及语文、数学和英语的成绩。 在编写时出现了以下几种情况: 第一,其中“fp1=fopen("E: \\c语言\\课程设计作业\\t1.txt","r")”的意思就是打开文本文件一进行只读,同理下面的也是一样。 程序的一开始利用两个if语句来判断文件是否存在,记得一开始在用“记事本”程序编辑文件时忘了进行保存,导致了磁盘上不能产生记事本数据文件,由于此为读文件,所以指定的文件必须存在,否则就出错,而这两个if语句则加强了程序的健壮性。 第二,在while循环中,一开始不知循环条件该怎么写,后看了c语言文件的那章内容,知道这里应该利用文件结尾函数feof()。 第三,程序中调用fscanf()函数将文件中的数据读入到变量name、xhao、china、math和english中,并通过printf()函数把结果输出到屏幕。 由于在一开始的编写过程中,不太熟悉文件,所以在调用fscanf()函数时却写成了scanf()函数,导致程序也无法正常运行。 第四,此问题是花时间最长的一个,也是相对不易想通的一个难题。 在while循环后,程序添加了i--,这是由于在一开始编写完后与其他程序组合在一起,运行时发现后产生一连串的乱码,然后与其他成员一起研究发现在第一个while循环中,由于i++的存在,导致了i直接到了6,而第二个while循环中的i则要从5开始进行循环,所以加一个i--,使得了6减1后得到想要的5,而后再运行时,则一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成绩 信息管理 系统 课程设计 报告 毕业设计