数据结构课设报告学生成绩管理系统.docx

上传人:b****5 文档编号:7557472 上传时间:2023-01-25 格式:DOCX 页数:14 大小:283.75KB
下载 相关 举报
数据结构课设报告学生成绩管理系统.docx_第1页
第1页 / 共14页
数据结构课设报告学生成绩管理系统.docx_第2页
第2页 / 共14页
数据结构课设报告学生成绩管理系统.docx_第3页
第3页 / 共14页
数据结构课设报告学生成绩管理系统.docx_第4页
第4页 / 共14页
数据结构课设报告学生成绩管理系统.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据结构课设报告学生成绩管理系统.docx

《数据结构课设报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课设报告学生成绩管理系统.docx(14页珍藏版)》请在冰豆网上搜索。

数据结构课设报告学生成绩管理系统.docx

数据结构课设报告学生成绩管理系统

课程设计(论文)说明书

题目:

学生成绩管理系统

学院:

计算机科学与工程学院

专业:

姓名:

学号:

指导教师:

 

2012年月日

摘要

随着科学的发展和社会的进步,许多过去由人工处理的繁杂事务开始交付计算机来完成。

明显地加快了经济信息化和社会信息化的进程。

因此,计算机教育在各国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。

本报告简单叙述了学生管理系统的现状,重点介绍了学生成绩管理系统的实现过程:

包括系统分析、数据流程分析、功能设计、系统实现、系统测试和调试。

C语言是一种通用的程序设计语言,c语言在很多方面继承和发展了以往许多高级程序设计语言的成果经验与特色,具有适应性强、应用范围广、书写格式自由、数据类型丰富、数据结构系统化、运行程序质量高、可移植性好和运行效率高等优点。

而《数据结构与算法》则是对数据进行一定的结构化,通过运用各种算法使系统的实现更简便易行。

关键词:

管理;需求;模块

 

引言…………………………………………………………………………3

1系统概述…………………………………………………………………3

2需求分析…………………………………………………………………3

2.1安全需求分析…………………………………………………………………3

2.2数据需求分析…………………………………………………………………4

2.3功能需求分析…………………………………………………………………4

2.4界面需求分析…………………………………………………………………4

2.5开发环境………………………………………………………………………4

3详细设计…………………………………………………………………4

3.1系统结构………………………………………………………………………4

3.2各模块功能……………………………………………………………………5

3.3功能模块的设计………………………………………………………………6

3.4数据结构设计…………………………………………………………………8

4所遇到的问题和分析解决………………………………………………9

5测试结果…………………………………………………………………9

6系统特色和关键技术……………………………………………………12

7结论………………………………………………………………………12

参考文献……………………………………………………………………13

 

引言

背景:

21世纪,科学技术突飞猛进,特别是信息技术和网络技术的迅速发展,各个学校的规模也随之不断增大,有关学生成绩管理工作所涉及的数据量越来越大,如若进行的仍是手工的学生成绩管理,学校就不得不靠增加人力、物力来进行学生成绩管理。

即使如此,手工管理仍具有效率低、管理复杂和易出错等诸多问题。

所以在学校这样一个具有超大数据量的机构中,通过应用信息技术和网络技术对学生成绩信息进行系统化的管理是必须的。

将计算机这一信息处理器应用于学生的个人信息管理已是势必所然,而且这也将为学生信息管理带来前所未有的改变。

采用计算机对学生的信息管理是信息科学化和现代的重要标志,它也给各大高校带来了明显的社会效益。

主要体现在:

极大地提高了管理工作人员的工作效率,大大地减少了以往的资料室所存在的各种弊端,同时也加强和规范学习对于学生信息的管理。

目的:

本系统运用c语言进行开发,c语言能够简单的进行编译一些程序,来实现对问题的解决。

它能够呈现出清晰的界面,使人们能够很好的理解,并能在一些方面给人们更好的服务,所以,它能够被大多数用户所接受。

经过这一个学期对《数据结构与算法》的学习,我们都学到了不少东西,可能学得还不够透彻,但无论如何这都为我们以后的学习打下一定坚实的基础。

在通过运用结构体和调用各种数据结构算法与c语言相结合来完成下面的学生成绩管理系统,一方面是为了检查我们一个学期以来的学习成果,另一方面是为了更进一步对数据结构与算法的掌握和运用,同时也让我们清楚的知道自己的掌握水平和不足之处。

1系统概述

学生成绩管理系统的主要功能是实现学生成绩和基本信息的管理。

如若还没有建立文件可以在运行界面新建文件,在重新运行程序即可进入登陆界面,输入正确的密码即可进入系统。

学生成绩信息有学号、姓名、学期、高数、英语、c语言和总分的显示。

学生成绩管理包括对学生各科成绩的输入、输出、删除、修改、按总分排序、查找和保存等多种功能。

查找有分为按学号和姓名进行查找,然后输出查找学生的全部信息;删除可以通过按姓名或者学号进行查找在进行删除,再对记录进行调整;排序有按学号排序,各科(高数、英语、c语言)成绩由高到低排序或者升序排序,还有总成绩排名等。

学生的基本信息的输入、输出与修改,而学生的基本信息则包含有学生的学号、姓名、性别、政治面貌、专业和家庭住址等信息。

以上就是对本系统的整个流程和功能的大概描述,管理系统主要突出了系统管理员的权威性,还有界面要简洁、清楚、功能齐全,使用方便,让使用的人一看就知道如何操作。

2需求分析

2.1安全需求分析

学生成绩管理系统功能的信息量大,数据安全性和保密性要求最高。

这就要求设计不同用户的操作权限和登陆方法:

①每个使用者都必须通过系统的身份验证才可以进入系统进行其他的操作;②系统管理员可以浏览、查询、添加、删除和修改学生信息,但是删除某个学生的基本信息记录时,应该实现对该条记录的相关信息也级联删除。

而学生等其他用户则只具有查询、浏览的功能;③还有系统的可靠性和可维护性。

2.2数据需求分析

本系统的主要数据是学生信息:

一是学生成绩信息,二是学生基本资料信息。

学生成绩信息包括:

数据类型为字符型的学生学号,姓名,学期,还有数据类型为整型c语言,英语,高数,平均成绩和总成绩等。

而学生资料信息包括:

数据类型为字符型的学生学号,姓名,性别,政治面貌,专业和家庭住址等。

2.3功能需求分析

(1)使用中文菜单,界面设计和用户输入输出要人性化些;

(2)将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。

(3)具有数据输入功能,输入的数据能最终保存在文件中;

(4)具有数据删除功能,能最终从文件中删除;

(5)具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;

(6)其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等等)

(7)学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩)

2.4界面需求

系统界面要具有广泛的实用性,便于移植。

界面友好,操作简便。

根据软件的使用环境、用户的要求,系统界面应该简单、友好、易于使用、方便查看、简洁明快。

而且系统是在Windows环境下的应用软件,软件产品的界面应该与操作系统的界面相切合,产品的主界面因该功能齐全,分类明确,让用户一眼看去就能明白大致的功能。

在人们的心理学角度来说,一样东西给人的印象是非常重要的。

本人想大家都希望看都本人们使用的东西都是令人神往的吧,还有友好的界面可以给人一种优越感和先进感,因为事情总是不断的完善的,一定是一代比一代好。

对于管理员这个特殊的用户的,需要提供各种功能来加强他对整个系统的管理和控制,尽量地使他的操作简便快捷,尤其是要提供给他对数据库进行的直接管理的权限。

2.5开发环境

操作系统:

MicrosoftWindowsXP

Professional版本2002

ServicePack3

c语言编程软件:

VisualC++6.0

3详细设计

3.1系统结构

此学生成绩管理系统主要利用单链表实现,从整体结构看,分为五大功能模块:

输入记录模块、查询记录模块、更新记录模块、统计记录模块和输出记录模块。

其系统模块构成如图3-1所示。

图3-1学生成绩管理系统功能模块图

本系统的各个模块都是相关联的,因为本系统只是一个简易学生成绩管理系统,系统要输入正确的密码才可以实现系统赋予的权限。

3.2各个模块功能

为了满足系统需求要求,系统所需的主要模块与功能如下:

(1)输入记录模块。

输入记录模块主要完成将数据存入单链表中的工作。

在此成绩管理系统中,记录可以从以二进制形式存储的数据文件中读入,也可以从键盘逐个输入学生记录。

学生记录由学生的基本信息和成绩信息字段构成。

当从数据文件中读入记录时,它就是以记录为单位存储的数据文件中,将记录逐条复制到链表中。

(2)查询记录模块。

查询记录模块主要完成在单链表中查找满足相关条件的学生记录。

在此管理系统中,用户可以按照学生的学号或姓名在单链表中进行查找。

若找到该学生的记录,则返回指向该学生记录的指针;否则,返回一个值为NULL的空指针,并输出没有找到该学生的信息。

(3)更新记录模块。

该模块主要完成对学生记录的维护。

在此系统中它实现了对学生记录的修改、删除、排序和插入等操作。

而进行了这些操作之后,需要将更新后的数据保存到数据文件中。

(4)统计记录模块。

完成了对全部学生记录总人数的统计。

(5)输出记录模块。

该模块主要完成两个任务:

一是实现对学生记录的存盘操作,即将单链表中的各节点中存储的学生记录信息写入数据文件中;二是实现将单链表中存储的学生成绩和基本信息在屏幕界面上输出来。

3.3功能模块的设计

1main()函数执行流程

本成绩管理系统执行主流程如图3-3所示。

它可以以读的方式打开数据文件,此文件默认为C:

\\student,若该文件不存在,则新建此文件。

当打开文件操作成功后,从文件中一次读入一条记录,添加到新建的单链表中,然后执行显示主菜单和进入主循环操作,进行功能选择。

在判断输入值时,有效输入为0~8之间的任意数值,其他输入均为错误输入。

若输入为0(即select==0),它会继续判断是否已对更新数据进行存盘,若未存盘,系统则会提示用户是否需要对更新数据存盘进行选择,然后在单击任意键退出系统。

若选择1,则调用Add()函数,执行添加学生记录的操作;若选择2,则调用Del()函数,执行删除学生记录操作;若选择3,则调用Qur()函数,执行查询学生记录操作;若选择4,则调用Modify()函数,执行修改学生记录操作;若选择5,则调用Disp()函数,执行显示学生成绩操作;若选择6,则调用Save()函数,执行保存更新操作;若选择7,则调用xueli()函数,执行显示学生基本信息操作;若选择8,则调用Tongji()函数,执行统计学生记录操作。

若输入为0~8之外的值,则调用Wrong()函数,给出按键输入错误的提示。

⑵输入记录模块

主要实现将数据存入单链表中。

当从数据文件中读出记录时,它调用了fread(p,sizeof(Node),1,fp)文件读取函数,执行一次从文件中读取一条学生记录存入指针变量p所指的节点中的操作,并且此操作在main()中执行,即当成成绩管理系统进入显示菜单界面时。

若该文件中没有数据,系统会提示单链表为空,没有任何学生记录可操作,此时,应选择1,调用Add()函数,进行学生记录的输入,即完成单链表1中的添加节点操作。

3查询记录模块

查询记录模块主要实现了在单链表中按学号或姓名查找满足相关条件的学生记录。

在查询函数Qur()中,l为指向保存了学生成绩信息的单链表的首地址的指针变量。

为了遵循模块化编程的原则,我们将在单链表中进行的指针定位操作设计成了一个单独的函数Node*Locate(Linkl,charfindmess[],charnameornum[]),参数finemess[]保存要查找的具体内容,nameornum[]保存要查找的字段(值为字符串类型的num或者name),若找到该记录,则返回指向该节点的指针;否则。

返回一个空指针。

图3-3主控函数执行流程图

4更新记录模块

此模块主要实现了对学生记录的修改、删除和插入操作。

因为学生记录是以单链表的结构形式存储的,所以这些操作都在单链表中完成。

以下介绍3个模块的详细设计。

1修改模块

修改记录操作需要对单链表中目标节点的数据域中的值进行修改,它分两步完成。

第一步,输入要修改的学号,输入后调用定位函数Locate()在单链表中逐个对节点数据域中学号字段的值进行比较,直到找到该学号的学生记录;第二步,若找到该学生记录,修改包括学号在内的各字段的值,并输入6,对修改后的数据进行保存。

2删除模块

删除记录操作完成删除指定学号或姓名的学生记录,它也分为两步完成。

第一,输入要删除的学号或姓名,输入后调用定位函数Locate()在单链表中逐个对节点数据域中学号字段的值进行比较,直到找到该学号或姓名的学生记录,返回指向该学生记录的节点指针;第二,若找到该学生记录,将该学生记录所在节点的前驱节点的指针域指向目标节点的后继节点。

3插入记录

插入记录操作完成在最后一条记录的位置后。

即输入记录。

4排序记录

在单链表中,实现插入排序的基本步骤如下:

第一、新建一个单链表l,用来保存排序结果,其初始值为待排序单链表的头节点。

第二、从待排序链表中取出下一个节点,将其总分字段值与单链表l中的各节点中总分字段的值进行比较,直到在链表l中找到总分小于它的节点。

若找到如此节点,系统将待排序链表中取出的节点插入此节点前,作为其前驱。

否则,将取出的节点放在单链表l的尾部。

第三、重复第二步,直到从待排序链表取出的节点的指针域为NULL,即此节点为链表的尾部节点,排序完成。

⑸统计记录模块

该模块的实现比较简单,它主要通过循环读取指针变量p所指的当前节点的数据域中各字段的值,并对各个成绩字段进行逐个判断的形式。

⑹输出记录模块

当把记录输出至屏幕界面时,调用VoidDisp(Linkl)函数,将单链表l中存储的学生记录信息以一定的格式形式在屏幕上输出。

3.3数据结构设计

1学生成绩信息结构体

structstudent

{

charnum[10];

charname[20];

charsex[4];

charedu[10];//政治面貌

charpro[10];//专业

charschool[20];//家庭住址

intpart;//高数

inttitle;//c语言

intID;//英语

inttime;//总分

};

结构体将用于存储学生的基本信息,它将作为单链表的数据域。

2单链表node结构体

typedefstructnode//定义链表

{

structstudentdata;//数据域

structnode*next;//指针域

}Node,*Link;//Node为node类型的结构变量,*Link为node类型的指针变量

这样定义了一个单链表的结构,结构标记为node,data为结构类型的数据,作为单链表结构中的数据域,next为单链表中的指针域,用来存储其直接后继节点的地址。

Node为node类型的结构变量,*Link为node类型的指针变量。

4所遇到的问题和分析解决

(1)如何打开新的界面以显示记录?

直接运用system("cls");函数建立新的界面,以便更简洁、清楚显示各种功能或结果。

(2)若尚未存在所需文件,应如何建立新文件?

应用fp=fopen("C:

\\student","rb");函数直接写成一个二进制文件。

(3)不清楚如何运用结构体与文件中的记录相连接起来?

应用文件数据块读函数fread(p,sizeof(Node),1,fp),则可以实现p指针指向输入数据存放在内存区的起始地址。

(4)如何按要求进行学号或姓名的查询?

在单链表中进行的指针定位操作设计成了一个单独的函数Node*Locate(Linkl,charfindmess[],charnameornum[]),参数finemess[]保存要查找的具体内容,nameornum[]保存要查找的字段(值为字符串类型的num或者name),若找到该记录,则返回指向该节点的指针;否则。

返回一个空指针。

5测试结果

当用户运行程序进入系统时,其主界面如图5-1所示。

此时系统已经将c:

\\student文件打开,若文件不为空,则将数据从文件中逐条记录读出,并写入单链表中。

用户可选择0~10之间的数值,调用相应功能进行操作。

当输入为0时,退出此管理系统。

图5-1主界面

当用户执行了输入记录或已经从数据文件中读取了学生记录之后,即可输入5选项,并按Enter键,查看当前单链表中的学生记录情况,学生成绩界面如图5-2所示,此时表中有6条记录。

图5-2显示成绩界面

当用户执行了输入记录或已经从数据文件中读取了学生记录之后,即可输入5选项,并按Enter键,查看当前单链表中的学生记录情况,学生基本信息表如下图5-3所示,此时表中有5条记录。

图5-3

当用户输入1并按Enter键后,即可进入数据输入界面,其输入过程如图5-4所示,当用户输入为0的学号时,它会结束输入过程,显示主菜单。

图5-4

当用户输入4并按Enter键后,即可进入记录修改界面,其修改学生成绩资料过程如图5-3:

图5-5

当用户输入2并按Enter键后,即可进入记录删除界面,然后在选择1或2进行按学号或姓名进行记录删除,再输入要删除的学号或姓名,这里按姓名删除了一条姓名为里了的记录,如图5-6所示:

图5-6

当用户输入0时,若系统没保存更新,则提示是否保存,输入y后按Enter键即可保存改动,如图5-7所示;若已经保存更新则直接提示已经退出系统,按任意键即可关闭运行界面。

图5-7

6系统特色和关键技术

(1)自定义数据结构体,用于存储学生的基本信息,然后定义一个单链表结构,并为该链表定义结构变量和指针变量。

(2)运用指针进行下一条记录的地址查找。

(3)运用了链表的插入排序法对学生成绩的总分进行了排序。

7结论

经过一段时间的紧张工作,从本设计开发的学生成绩管理系统从最后的测试结果来看,基本上实现了所要求的几大功能:

成绩信息的录入、输出和更新等操作,并达到操作过程中的直观、方便、实用、安全等要求。

系统采用模块化程序设计的方法,即便于系统组合和修改,又便于未参与系统开发的技术维护人员使用和补充。

通过本学期对数据结构这门课的学习,我了解到:

“数据结构与算法”是计算及机科学的基础课程,数据结构的研究不仅涉及到计算机硬件,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。

在研究信息检索时也必须考虑如何组织数据,以便使查找和存取数据元素更为方便。

可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一个核心内容,是从事计算机科学研究及其应用的科技工作者必须掌握的重要内容。

在课程设计中我体会到:

一个好的程序应该是一个所占空间小、运行时间短、其他性能也好的程序。

而要做出一个好的程序则应该通过对算法与其数据结构的时间复杂度和空间复杂度进行实现与改进。

然而,实际上很难做到十全十美,原因是各要求有时相互抵触,要节约算法的执行时间往往要以牺牲更多的存储空间为代价:

而为了节省存储空间又可能要以更多的时间为代价。

因此,只能根据具体情况有所侧重:

如果程序的使用次数较少,则应该力求算法简明易懂,而易于转换为上机程序;如果程序反复多次使用,则应该尽可能选用快速算法;如果解决问题的数据量极大,机器的内存空间较小,则在编写算法时应该考虑如何节省空间。

学习了数据结构与算法这门课,我们在编写程序时就应该注意到所编写程序的时间复杂度和空间复杂度,以及是否运用了良好的算法,而不是只是象以前编写程序时单纯使用c的知识。

我们要充分考虑程序的性能,争取编写出更好的程序。

 

参考文献

专(译)著:

[1498441]黄维通谢孟荣.c语言程序设计习题解析与应用案例分析[M].北京:

清华大学出版社,2010:

80~107.

[1475958]廖湖声叶乃文周珺.c语言程序设计案例教程[M].北京:

人民邮电出版社,2010:

246~252.

[1470568]王娣安剑孙秀梅.c语言程序开发范例宝典[M].北京:

人民邮电出版社,2010:

458~465.

[1485845]刘彬彬李伟明c语言开发实践宝典[M].北京:

清华大学出版社,2011:

310~314.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1