桂林电子科技大学课程设计编号:数据结构与算法课程设计说明书题目:学生成绩管理系统学院:计算机科学与工程学院专业:计算机科学与技术学生姓名:学号:指导教师:2012年09月21日桂林电子科技大学课程设计摘要随着科学的发展和社会的进步,许多过去由人工处理的繁杂事务开始交付计算机来完成。明显地加快了经济信息化和社会信息化的进程。因此,计算机教育在各国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。本说明书简单叙述了学生管理系统的现状,重点介绍了学生成绩管理系统的实现过程:包括系统分析、数据流程分析、功能设计、系统实现、系统测试和调试。C语言是一种通用的程序设计语言,C语言在很多方面继承和发展了以往许多高级程序设计语言的成果经验与特色,具有适应性强、应用范围广、书写格式自由、数据类型丰富、数据结构系统化、运行程序质量高、可移植性好和运行效率高等优点。而《数据结构与算法》则是对数据进行一定的结构化,通过运用各种算法使系统的实现更简便易行。关键词:C语言;数据结构;学生成绩管理系统;桂林电子科技大学课程设计目录1系统概述..............................................12需求分析..............................................22.1数据需求分析......................................22.2功能需求分析......................................22.3界面需求.........................................32.4输入输出形式......................................32.5开发环境.........................................33详细设计..............................................33.1系统结构.........................................33.2各个模块的功能....................................43.2.1模块功能的设计...............................53.3数据结构设计.....................................193.3.1学生成绩信息结构体..........................193.3.2单链表node结构体...........................194测试结果.............................................205结论.................................................23参考文献................................................241/25引言背景:21世纪,科学技术突飞猛进,特别是信息技术和网络技术的迅速发展,各个学校的规模也随之不断增大,有关学生成绩管理工作所涉及的数据量越来越大,如若进行的仍是手工的学生成绩管理,学校就不得不靠增加人力、物力来进行学生成绩管理。即使如此,手工管理仍具有效率低、管理复杂和易出错等诸多问题。所以在学校这样一个具有超大数据量的机构中,通过应用信息技术和网络技术对学生成绩信息进行系统化的管理是必须的。将计算机这一信息处理器应用于学生的个人信息管理已是势必所然,而且这也将为学生信息管理带来前所未有的改变。采用计算机对学生的信息管理是信息科学化和现代的重要标志,它也给各大高校带来了明显的社会效益。主要体现在:极大地提高了管理工作人员的工作效率,大大地减少了以往的资料室所存在的各种弊端,同时也加强和规范学校对于学生信息的管理。目的:本系统运用C语言进行开发,C语言能够简单地进行编译一些程序,来实现对问题的解决。它能够呈现出清晰的界面,使人们能够很好地理解,并能在一些方面给人们更好的服务,所以,它能够被大多数用户所接受。经过一个学期对《数据结构与算法》的学习,我们都学到了不少东西,可能学得还不够透彻,但无论如何这都为我们以后的学习打下一定坚实的基础。在通过运用结构体和调用各种数据结构算法与C语言相结合来完成下面的学生成绩管理系统,一方面是为了检查我们一个学期以来的学习成果,另一方面是为了更进一步对数据结构与算法的掌握和运用,同时也让我们清楚的知道自己的掌握水平和不足之处。1系统概述学生成绩管理系统的主要功能是实现学生成绩信息的管理。如若还没有建立文件可以在指定路径新建文件,学生成绩信息有学号、姓名、C++、高数、英语、总分、平均分和名次的显示。学生成绩管理包括对学生各科成绩的录入、查询、删除、修改、插入、统计、排序和保存等功能。查询分为按学号和按姓名进行查找,然后输出查找学生的全部信息;删除可以通过按姓名或者学号先进行学生信息记录定位,然后进行删除,最后对学生信息记录进行调整并保存;在进行修改处理时,系统会首先根据用户的要求先查找到此学生的记录,然后提示修改学号之外的值;插入学生记录,系统首先进行对插入结点位置的定位,然后在该结点后插入新的结点;统计可以对学生信息记录统计出各科不及格人数,单科及总分最高分的学生信息记录,并输出相关信息;学生信息记录排序处理,系统按照插入排序算法实现单链表的按总分字段的降序排序,并显示结果。以上就是对本系统的整个流程和功能的大概描述,管理系统界面简洁、清楚、功能齐全,使用方便,让使用的人一看就知道如何操作。2/252需求分析随着社会的发展,管理信息系统在各行各业都越来越重要,特别是教育事业。在经济发达的国家,许多教育机构都投入了大量的资金来开发信息管理系统,就是为了在以后激烈的竞争中立于不败之地。在我国,民办教育是一个新兴的行业,它是随着改革开放和中国特有的国情发展起来的。中国民办教育促进法的出台,从一定程度上促进和规范了民办教育事业的发展,这是一个很有前途的新兴产业。与发达国家相比,我国的民办教育机构信息技术的应用程度还比较低,信息管理系统能从各方面提高工作效率,为教育机构取得良好的经济效益和社会效益。近年来,虽然计算机技术发展迅速,网络已经普及到寻常百姓家庭,但是还有些学校还没有学生的成绩管理系统,所有的信息操纵基本都是手工完成,甚至有的还停留在纸介质基础上,这种种的管理手段会浪费许多的人力和物力,并且效率低下。现在已经进入21世纪,以后的社会是信息的社会,信息只有快、准、精才能实现其价值。传统的管理方法必然被计算机信息管理系统所替代,因为机器代替人力是必然的历史发展趋势。设计该学生成绩管理系统具有重要的意义:学生成绩管理是学校管理中最重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个教务管理的重要部分。能否实现这一步关系到学校整体办学效率的高低,应用该系统可以减少学校工作人员的工作量,缩小开支,提高学校的整体工作效率。2.1数据需求分析本系统的主要数据是学生的成绩信息,学生成绩信息包括:数据类型为字符型的学生学号,姓名;数据类型为整型的C++成绩,高数成绩,英语成绩,总分和名次;还有数据类型为浮点数类型的平均分等。2.2功能需求分析1.使用中文菜单,界面设计和用户输入输出要人性化些。2.将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。3.具有数据输入功能,输入的数据能最终保存在文件中。4.具有数据删除功能,能最终从文件中删除。5.排序功能,根据自己设计的数据结构。6.具有多种查询(如按学号查询、按姓名查询等)及相关信息的输出功能;7.其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的3/25平均分等)。8.学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩等,并将修改的结果存储在文件中)2.3界面需求系统界面要具有广泛的实用性,便于移植。界面友好,操作简便。根据软件的使用环境、用户的要求,系统界面应该简单、友好、易于使用、方便查看、简洁明快。而且系统是在Windows环境下的应用软件,软件产品的界面应该与操作系统的界面相切合,产品的主界面应该功能齐全,分类明确,让用户一眼看去就能明白大致的功能。2.4输入输出形式本系统是一个学生成绩管理系统,采用VC6.0编译器作为开发环境,这个环境是我们在学习C++的平台。输入数据类型主要是char、int、float等数据类型,输入内容包括:学号、姓名、C++成绩、高数成绩、英语成绩等数据。用户在输入学生数据时不需要保证输入数据格式的正确性,系统会自动检测输入的数据是否正确,输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,还可以选择显示计算好平均分后并排序后的记录,显示内容包括:学号、姓名、C++成绩、高数成绩、英语成绩、总分、平均分等数据。2.5开发环境VisualC++不仅仅是是一个C++编译器,而是一个基于Windows操作系统的可视化集成开发环境IDE,这种环境开发出来的软件稳定性好、可移植性强,可以编制各种各样的Windows应用程序。3详细设计3.1系统结构此学生成绩管理系统主要利用单链表实现,从整体结构看,分为五大功能模块:输入记录模块、查询记录模块、更新记录模块、统计记录模块和输出记录模块。其系统模块构成如图3-1所示。4/25图3-1学生成绩管理系统功能模块图3.2各个模块的功能为了满足系统需求要求,系统所需的主要模块与功能如下:(1)输入记录模块。输入记录模块主要完成将数据存入单链表中的工作。在此成绩管理系统中,记录可以从以二进制形式存储的数据文件中读入,也可以从键盘逐个输入学生记录。学生记录由学生的基本信息和成绩信息字段构成。当从数据文件中读入记录时,它就是以记录为单位存储的数据文件中,将记录逐条复制到链表中。(2)查询记录模块。查询记录模块主要完成在单链表中查找满足相关条件的学生记录。在此成绩管理系统中,用户可以按照学生的学号或姓名在单链表中进行查找。若找到该学生的记录,则返回指向该学生记录的指针;否则,返回一个值为NULL的空指针,学生成绩管理系统输入记录模块从文件读入从键盘输入查询记录模块按学号查询按姓名查询更新记录模块修改记录删除记录插入记录排序记录统计记录模块总人数统计不及格人数统计各科最高分统计输出记录模块输出到界面5/25并输出没有找到该学生的信息。(3)更新记录模块。该模块主要完成对学生记录的维护。在此系统中它实现了对学生记录的修改、删除、排序和插入等操作。而进行了这些操作之后,需要将更新后的数据保存到数据文件中。(4)统计记录模块。完成了对学生总人数、各科不及格人数的统计,单科成绩最高分以及总分最高分的统计(5)输出记录模块。该模块主要完成两个任务:一是实现对学生记录的存盘操作,即将单链表中的各节点中存储的学生记录信息写入数据文件中;二是实现将单链表中存储的学生成绩和基本信息在屏幕界面上输出来。3.2.1模块功能的设计主函数模块用函数voidmain()来实现。主要是来显示主菜单,让用户选择操作。首先进行的是打开文件的操作,只有打开文件或创建文件成功,才能进入主菜单。之后应用了while(1)永真循环和switch-case语句来进行选择,是个比较简单实现的模块。最后若选择“0”则是退出永真循环。退出此系统之前如若未进行更新数据之后的保存操作,则会提示用户是否进行更新数据后的保存,然后才退出系统。录入学生记录模块用函数voidType_in(Linkl);来实现。主要功能用来对学生的成绩进行收集和输入。函数首先进行的是对读取的数据文件的数据收集工作,如若在指定路径找不到数据文件,系统则会创建新的数据文件;如果找到数据文