简析数据结构与算法C语言 毕业设计.docx
- 文档编号:15738813
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:15
- 大小:22.94KB
简析数据结构与算法C语言 毕业设计.docx
《简析数据结构与算法C语言 毕业设计.docx》由会员分享,可在线阅读,更多相关《简析数据结构与算法C语言 毕业设计.docx(15页珍藏版)》请在冰点文库上搜索。
简析数据结构与算法C语言毕业设计
简析数据结构与算法(C语言)毕业设计
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统目录
引言1系统概述
1.1系统功能
1.2系统作用和特点2需求分析
功能要求
2.2性能要求
2.3数据需求
2.4开发环境
3详细设计
登陆界面与主界面的实现
3.2详细设计思想
3.3系统结构体的设计
3.3各种模块的实现
4所遇到的问题和分析
4.1系统存在的不足
4.2制作过程中遇到的问题
4.4问题分析
5系统特色及关键技术
6结论及心得体会
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统办学效率和现代化水平。
使学校对学生的成绩能够快速并准确的录入、修改和查询,更好地掌握每个学生的各科成绩,便于教师的管理。
使学生对个人的学习成绩进行快速的查询。
让老师能够更好、更快的了解学生的学习情况,使学校的教学质量进一步的提高。
本系统改变以往靠手工管理学生成绩的状况,可以树立良好的办学先锋,提高工作效率,节省人力和物力,在些高校建立了校园X,实现了办公自动化。
2
1系统概述
1.1系统功能
学生成绩管理系统主要以管理学生成绩信息为目的,。
主要功能包括登录用户、成绩录入管理、查询管理、修改管理、删除管理、统计管理、成绩排名等。
登录用户:
老师可以进行各种操作,学生只能进行查询操作。
成绩录入管理:
每次考试结束,都可录入学生成绩信息。
查询管理:
包括查询成绩和基本信息。
可以显示单独一条记录,也可以显示所有信息。
修改管理:
包括修改成绩和基本信息。
删除管理:
包括删除成绩和基本信息。
统计管理:
统计学生人数,优生率,不及格人数和平均成绩。
成绩排名:
按成绩的高低顺序排列。
1.2系统作用和特点
系统可以更快的使学生的成绩相加并且排名以及各种统计,这对老师来说是很好可以减少很多工作量,在多人多课考试时很有用,只要成绩出来,输入电脑就可以在几秒内是成绩相加,并知道了某学生在学校排名,对老师来说,考完试自由的时间就增加了许多。
功能强大,实用性很强,并且有较好的交互界面,方便用户使用,具有易操作性,覆盖面广。
2需求分析
2.1功能要求
使用中文菜单,界面设计和用户输入输出要人性化些;
将学生信息保存在文本文档中,
具有数据删除功能,能最终从文件中删除;
排序功能,根据自己设计的数据结构,设计排序算法
具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等)
学生信息的修改(修改学生姓名,修改学生某门课程的成绩)
2.2性能需求
系统的高速性、稳定性、安全性。
系统的体系结构能够方便使用功能,适应业务、办公的发展。
系统人机界面友好,易学易用。
3
系统维护成本较低。
2.3数据需求
基本数据维护功能
添加学生的信息。
修改学生的信息。
删除学生的信息。
查询学生的信息。
统计学生的信息。
存读的成绩信息。
学生数据结构
用户结构
4
2.4开发环境
开发环境是用VisualC++6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。
VisualC++是一个功能强大的可视化软件开发工具。
它是一种可视化的编程工具,它基于windows操作系统。
它有两种方式来建立应用程序,一种是通过VC6.0的可视化编程345678910
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统工具,另一种是通过visualc++6.0的代码编辑器,手工编写代码。
本系统所用的语言是C语言,C语言是目前世界上流行、使用最广泛的高级程序设计语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言
5
3详细设计
3.1登陆界面与主界面的实现
系统登录界面用了C选择控制语言。
用于对进入系统的用户进行安全检查,阻止非法用户的进入。
验证及,通过判断及是否符合申请的和,如果符合则允许登录,否则提示用户或不正确。
本系统的登录界面:
主界面:
在主界面中包括“①班级成绩添加②班级成绩显示③班级成绩统计④班级成绩查询⑤班级成绩修改⑥班级成绩表⑦班级成绩存档⑧⑨班级成绩读入⑩退出”等全部的功能,之所以设计这麽一个主界面,一是因为能使用户对程序操作的流程更加清晰简明,二是保证了用户同时只能对一个文件进行操作系统的要求,保证了系统的正确性和易用性。
6
3.2详细设计思想
3.2.1确定程序主要功能模块
这个就比较简单了,主要是根据系统设计的说明及要求来设计,从而设计了九大功能模块,有文件操作,有系统维护功能,排序和统计功能,有输入输出等基本功能,比较人性化,添加了较多的提示语。
这个程序的主要功能时输入学生的学号,姓名,学期和三科成绩来对其进行存储,在存储后可以对学生的成绩按学号及学期或姓名及学期来进行查询,同时输出此同学的平均分及总分,之后可以对某个同学的成绩进行各种操作,例如修改,删除等,同时还可以对学生们的成绩按照总分或单科成绩排序,在整个过程中所做的操作都会保存到;student.txt;文件中并显示。
3.2.2确定语言算法
由于之前都没有做过类似的设计,所以一时间不能够确定到底使用何种语言来设计本系统,所以在X上看了一些其他人设计的程序,链表的、数组的,各种各样的,也不知如何选择,但是仔细地看了其中的设计思想,最终还是用C和数组的来做,一是觉得本人对链表掌握的不是很熟练,那么在设计过程中容易产生不能理解的错误,耽误时间,二是想运用C,可以巩固一下所学的数据结构的知识,之前做实验的时候都没怎么用所学的知识,这时候想练练。
就这样确定了整体的结构算法
7
3.3系统结构体的设计
structStudent//结构体
{
intterm;//学期intnum;//学号charname[12];//姓名floatmark1;//成绩floatmark2;floatmark3;floatsum;//总分floataver345678910
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统age;//平均分}
3.3各种模块的实现
Main()函数的设计用Mvoidmain()来实现,主要是来显示主菜单,使用户选择操作。
在main()函数中主要运用do-(structStudentstud[],intn,inti)来实现。
主要功能是用来添加学生资料,成绩。
若有重号则提示重新输入,,就可以使用本模块来进行添加利用for循环进行输入新学生记录,输入完后,最后会有一个提示语句:
是否继续输入(y\n),y是继续输入,n是返回主菜单否则将返回主菜单,本模块功能到此结束。
在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文件中去
3.3.4查询,删除,修改模块
分别用三个函数来实现,删除箅修改模块是基于查询模块上的,要先查询你要进行操作的内容,然后再进行其它操作。
查询是用用函数intfind_stu(structStudentstud[],intn)来实现,它有两种方式,主菜单先5进入查询,会出现提示:
请选择您要查询的方式:
(1:
按学号2:
按名字;),用for和if语句,if(strcmp(stud[i].name,you_choice)!
=0)如果第i项与查找信息不匹配则查询失败,否则查询成功,调用显示函数,输出该学生信息,之后会出现提示:
是否进行1:
修改2:
删除3:
退出选项。
修改是用函数voidupdata_stu(structStudentstud[],intn,inty)来实现的,修改也可以进行任选一门课进行修改,会有提示:
请输入您要对哪一门成绩进行修改(0:
数据库;1:
算法;2:
C语言345678910
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统)之后输入该课程的成绩就可以了。
删除是用voiddelete_stu(structStudentstud[],intn,inty)来实现的,选择了以后,还会有判断提示:
确认您要进行删除吗(y/n),y是确定,之后就会回到主菜单,n是不删除。
退出是如果不进行任何操作后,返回到主菜单。
9
3.3.5统计模块
谇功能是用voidTJ_stu(structStudentstud[],intn,into)来实现的。
选3进入统计界面,首先有提示要统计的学科,有123供你选择,选择了以后,就可以显示出该课程的成绩表,按从高到低的顺序排列,算法是用冒泡排序方法。
以及各种统计,包括:
平均成绩、及格率、优生率、不及格人数\、优生人数。
排序代码如下:
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(stud[j].score[o]>stud[i].score[o])
{
temp=stud[i];
stud[i]=stud[j];
}stud[j]=temp;}}
10
3.3.6班级成绩表模块
该模块是用voidchenji_stu(structStudentstud[],intn,into)/函数实现,用到的算法是直接选择排序,是按总成绩从高到低排序的,显示是调用了显示模块的函数,使得函数的结构大的简化了。
主要程序如下:
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(stud[j].score[3]>stud[i].score[3])k=j;//score[3])表示总成绩
if(k!
=i){temp=stud[i];stud[i]=stud[k];stud[k]=temp;}}
11
4所遇到的问题和分析解决
4.1系统存在的不足
本学生成绩管理系统由九大模块组成,每个模块相互联系又相互独立。
这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。
只能实现学生管理系统最基本的功能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。
而且在每个模块也有不足的地方,比如在输入学生资料时,对每个信息项没有严格的规定,可以输入任何的字符。
感觉应用范围还是不容乐观。
这有待以后努力,更详尽的实现模块的功能。
4.2制作过程中遇到的问题
4.2.1do-while语句的位置问题
在查询学生记录此模块中,只能查询一次,若要进行多345678910
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统次查询的话就不行了,只能先到主菜单,再先查询选项,很是麻烦。
不能实现原有的功能。
所以要想清楚到底是哪里循环出问题,按照逻辑思路找到相应的语句正确添加就行了。
4.2.2system('cls')的使用问题
刚开始时对菜单的切换不是很了解,编写的程序运行的时候是一竖行向下的,很影响使用者的视觉范围,通过查询一些资料得知了system('cls')的作用,能够把一些暂时不用或不相关的信息通过清屏来处理。
4.2.3内存的分配问题
12
对于初学者的话对内存的分配和释放问题是比较抽象的和模糊的问题,在排序是之前就出现了交换数据困难的问题,以及内存分配空间繁琐释放空间不及时的问题,造成空间的浪费,使得程序运行时效率较低,因此最后采用了顺序存储记录的方式,这就能改变前面所出现的问题。
4.4问题分析
在自己动手写的时候才会发现有太多的问题,这些都是只有自已亲自去实践才会有的收获,例如在有些细节方面还是要特别注意啊,像分号的添加,是或还是与的的方向问题,函数的返回值等问题,虽然容易改掉,但是很容易养成不好的习惯,而且还会浪费时间,所以在一开始写的时候就要很仔细,这样才能保证程序编的精细,同时若出现很多这样的错误的话,在编写程序的时候也会心里烦的,所以在编程的时候要认真仔细。
就你在刚开始时对文件的操作不是很明白,一直不能很好的操作文件,直到快验收的时候,仍旧出现问题,就是对已经存在的文件读取问题,将数据从文件中读取,但是不能够正常的读出,最后把读文件的操作语句进行仔细检查后,发现语句的顺序有点问题,重新把fscanf()语句进行再修改后就发现能够正常的读取文件了。
其余的就没什么比较大的问题了,基本上只要细心一点的话就可以正确调试成功了。
。
5系统特色及关键技术
其实在本程序的设计过程当中,没有很吸引人的关键技术,因为我的C语言学的很好,所以当初设计的时候就只是想把功能都实现就好了,尽可能的把所要求的功能都编进程序,这样就觉得很满足了。
所以都是设计的比较简单易懂的语言,这样自己能够更明白一些,所以就没有时间去细细地去设计自己的程序。
本程序要说有什么值得说的,那就只有人性化这点了,在设计成学的时候,因为自己怕弄混了,所以添加了很详尽的提示,这样在编程的过程中或调试的时候都能够比较快的运行。
还有就是尽可能的应用了do-while语句和switch-case语句,这两个语句在之前不是很常用,所以在这个程序中试炼了一下,虽然在编写的过程中总是出错,但还是成功的用好了,也是程序有条理一些。
我也知道这些东西别人可能比我弄得还要好,但是我在我所学的知识中成功的应用了这些,我觉得就是好事,就是进步。
6结论及心得体会
学生成绩管理系统终于成功的验收了,从这最后的测试结果来看,基本上实现了成绩管理系统的几大功能:
成绩信息录入、成绩信息的管理。
并达到操作345678910
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统过程中的直观、方便、实用、安全等要求。
系统采用模块化程序设计的方法,既便于系统功能的组合和修改。
本系统经过测试,证明其运行是稳定、可靠的。
但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,
一周多的数据结构与算法课程设计虽然有些疲惫,但还是有很多的收获的,像13
数据库的课设一样,我又一次巩固了所学到的知识,之前的学习只是停留在理论基础上,现在自己动手操作试验后,才是真正的理解及体会。
编程也学了一年多了,有很多知识都是似懂非懂,通过平时上机操作,自己也了解了一些,但让我有了更深的理解和更好的认识,则是在这次的课设上,之前的困惑也通过这次的课设解决了一些,虽然还是不能够全面的理解,但是有进步就很高兴。
在课程设计之前,因为有以前实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输进去之后,并编译让其运行,发现通过不了,再来检查出问题,是很费费力的事情,因此分析和规划代码是很重要的,最重要的是要把逻辑结构写好,这样就不会出现大问题,写代码就要先找出核心的内容,用多种方法来实现核心部分,这样可以尽可能的避免发现逻辑或编译不支持的错误。
通过本次论文设计,我学会了怎样去借鉴别人的方法和经验,知道了如何整合资料和处理这些资料的能力,这位以后做毕设的论文打下了基础,使我感觉比较好的是有一种成功的喜悦,虽然在编译的时候会经常因为一些小的错误而心烦意乱,但是也不失为一件好事,失败的越多积累的经验越丰富,对人的考验也比较多,那么在最后编译成功时的喜悦就越浓烈,也是自己的能力有了进一步的提高。
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统.3265.0
001chen59.060.098.068.3205.0
007(structStudentstud[],intn,inti);//声明学号输入函数voidinput_name(structStudentstud[],intn,inti);//声明姓名输入函数voidinput_score(structStudentstud[],intn,inti);//声明成绩输入函数voidoutput_stu(structStudentstud[],intn,inti);//声明输出函数voidstat_stu(structStudentstud[],intn,into);//声明统计函数floatclass_avr(structStudentstud[],intn,into);//声明排序函数voidchenji_stu(structStudentstud[],intn,into);
voiddesc_stu(structStudentstud[],intn,into);//声明降序函数intfind_stu(structStudentstud[],intn);//声明查找函数voiddelete_stu(structStudentstud[],intn,inty);//声明删除函数voidamend_stu(structStudentstud[],intn,inty);//声明修改函数voidwrite_text(structStudentstud[],intn);345678910
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统//声明保存文件函数intadd_text(structStudentstud[],intn);//声明读取文件函数
structStudent/*声明结构体*/{
charnum[10];
charname[20];
floatscore[5];
};
voidmain()/*主函数,是程序的入口*/
{
structStudentstu[SIZE];//定义一个结构数组
intcount=0;//定义整型变量count用来存放学生信息的个数,初始化为0
intchoice;//定义choice用于存放用户对主菜单的选择inta;//用于接收主选单中scanf()函数的返回值charjudge;//用于帮助判断输入的选择是否正确
intflag_main;//用于判断主菜单用户输入的选择是否有误intstat_choice=0;//定义stat_choice用于用户对统计项目的选择,初始化为0
intflag_stat;//用于接收scanf()函数的返回值
intflag_find;//定义flag_find用于接收查寻函数的返回值charman_choice;//定义man_choice用于接收用户对是否进行修改删除的选择
intcon_choice;//定义con_choice用于接收用户对修改或删除的选择
15
charsign_main;//定义sign_main接收用户对是否离开程序的选择
charsign_input;//定义sign_main接收用户对是否继续输入的选择
inti;//定义i,j作为控制循环的变量
while
(1)//345678910
简析数据结构与算法(C语言)毕业设计_学生成绩管理系统导读:
数据结构与算法(C语言)毕业设计_学生成绩管理系统形成一个死循环
{
system(;color71;);//设置输出显示颜色
/*输出主选菜单*/
printf(;\n============================欢迎使用班级成绩管理系统============================\n\n;);
printf(;==============================请选择您要使用的功能==============================\n\n;);
printf(;\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-\n;);printf(;\t\t★※★\t\t1:
班级成绩录入★※★\n\n;);
printf(;\t\t★※★\t\t2:
班级成绩显示★※★\n\n;);
printf(;\t\t★※★\t\t3:
班级成绩统计★※★\n\n;);
printf(;\t\t★※★\t\t4:
班级成绩查询★※★\n\n;);
printf(;\t\t★※★\t\t5:
班级成绩修改★※★\n\n;);
printf(;\t\t★※★\t\t6:
班级成绩表★※★\n\n;);
printf(;\t\t★※★\t\t7:
班级成绩存档★※★\n\n;);
printf(;\t\t★※★\t\t8:
班级成绩读入★※★\n\n;);
printf(;\t\t★※★\t\t0:
退出★※★\n\n;);
printf(;\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-;);
printf(;================================================================================;);
/*输入对菜单的选择*/
do
{
flag_main=0;
printf(;\n\t\t\t请您选择需要的操作(0-6):
;);
fflush(stdin);
a=scanf(;%d%c;,choice,judge);
if(a<2||judge!
='\n')
{
printf(;\n\t\t\t您的选择有误,请重新输入!
\n;);
flag_main--;
}
}ain<0);
printf(;\n\t\t\t;);
system(;pause;);//令屏幕暂停234567891011
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简析数据结构与算法C语言 毕业设计 数据结构 算法 语言
![提示](https://static.bingdoc.com/images/bang_tan.gif)