欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构学生成绩管理系统.doc

    • 资源ID:1308598       资源大小:599KB        全文页数:22页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构学生成绩管理系统.doc

    1、桂林电子科技大学综合设计说明书用纸 数据结构与算法课程设计说明书题 目: 学生成绩管理系统 学 院: 计算机科学与工程学院 专 业: 姓 名: 学 号: 指导教师: 2014年10 月 20 日成绩评定标准及成绩1、 能按照格式进行写作,无抄袭现象(10分)2、 报告内容行文通畅,有条理性,无错别字,结构严谨。(10分)3、 能够按照数据结构课设的格式要求、排版要求和字数要求等,有需求分析,系统分析,详细设计,关键技术的介绍和参考文献。(10分)4、 在验收过程中,能合理的回答问题(20分)5、 软件能正常运行,实现所提出的功能(40分)6、 软件代码规范性较好(5分)7、 具有自己的创新或特

    2、色(5分) 总成绩: 摘 要 学生成绩管理系统是当今教育单位必不可少的一部分,对于学校管理者的作用是巨大的。它使得人们无需经过特别的训练就能够使用电脑完成许多复杂的工作。教师通过学生成绩管理系统对学生的信息进行轻松的管理,学生也可以通过它来查询自己的成绩信息。为此,根据用户各方面的实际需要开发设计了本学生成绩管理系统。本系统采用VC+6.0作为开发工具。系统的实现过程:包括系统需求分析,流程分析功能设计等。系统的主要功能有学生信息录入,数据查询等功能。 关键词:学生成绩管理、链表、Microsoft Visual C+6.0 目 录引言11 系统概述22 需求分析22.1 系统需求32.2 开

    3、发环境33 详细设计54系统测试.145 所遇到的问题和分析解决156 系统特色及关键技术167 结论178 谢辞.18参考文献19桂林电子科技大学综合设计说明书用纸 第 17 页 引言一、设计目的通过本课程设计的实践,全面总结程序设计与问题求解课程与数据结构与算法课程学习中的的数据类型、程序结构、数组、函数、指针、结构体、链表等基本概念,掌握其使用方法。掌握数据结构与算法课程中的各种排序算法,单链表的创建、插入、查找、删除、修改等方法。掌握面向对象程序设计中有关输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。培养使用面向对象的程序设计方法编写计

    4、算机程序的能力。通过设计一个学生成绩统计管理,进一步熟悉数据结构与算法链表的各种实现方式。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对数据结构与算法的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。二、背景 在如今的高校日常管理当中,学生成绩管理系统有着重要意义。当前学校学生数量规模大,课程门类多,校区分散等,学生成绩管理系统更具有实际应用意义。但是,我们目前看到的学生成绩管理系统在很多方面还不够

    5、完善,功能也有些欠缺。学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生成绩管理系统对学校加强学生成绩管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生成绩数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进

    6、入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。因此,开发设计这样一套学生成绩管理软件成为很有必要的事情。该学生成绩管理系统采用C语言开发研制,针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩

    7、管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。1 系统概述 通过上网调查了解,以及和同学老师积极交流,建立学生成绩信息管理系统,采用计算机对学生成绩信息进行管理,进一步提高学校现代化水平。帮助广大成绩信息管理者提高工作效率、减少工作时间,实现学生及其家长信息查询工作流程的系统化、公平化、规范化和自动化,也为广大在教师提供便利快捷的成绩录入功能。为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统将达到以下几个功能:(1) 能完成学生成绩的插入、查询、修改、删除、排序、输出等功能;(2)采用单链表存储结构实现;(3) 所有数据以外部文件方式保存。2 需求分析 成绩

    8、管理成为学校教学管理中十分重要又相当复杂的管理工作之一,单纯的采用传统的手工处理已经不符合教育和管理的要求,而计算机具有运算速度快,处理能力强等特点,很自然地进入到这一应用领域中。因此为了保证学校的信息流畅,工作高效,有必要设计一个学生成绩管理系统。这不但能使教务人员从复杂的成绩管理中解脱出来,而且对于推动教学的发展也起到非常重要的作用。学校学生成绩管理工作都是采用传统的手工管理,这各传统人工的管理方式存在着许多缺点,如:效率低,保密性差,一方面导致教师,学生成绩情况不了解,教师对成绩管理工作倍感头痛,因为时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来了不少的困难,耗费大量劳动

    9、力,难于避免错误的产生。选择VC来开发学生成绩管理系统,由于以上的优点,帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化,所以选择VC来开发学生成绩管理系统。2.1 系统需求2.1.1 系统处理的准确性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足高校对信息处理的需求。2.2.2系统处理的及时性 由于学生非常关心自己的信息正确与否以便及时接受来自学校的学习成绩信息,学生成绩信息管理功能对于整个系统的功能和性能完成举足轻重。在系统开发过程中,必须采用一定的方法保证系统的准

    10、确性。2.2.3 系统的开放性和可扩充性 学生成绩信息管理系统在开发过程中,应该充分考虑以后的可扩充性。例如学生成绩信息管理的方式的改变,学生成绩信息的需求也会不断的更新和完善。2.2.4功能需求:1.用中文菜单,界面设计和用户输入输出要人性化些;2. 将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。3具有数据输入功能,输入的数据能最终保存在文件中;4具有数据删除功能,能最终从文件中删除;5排序功能,根据自己设计的数据结

    11、构,设计排序算法6具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;7其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等等)8学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩)针对上述功能要求,本系统设置了如下几个函数 插入函数AppendNode():将学生成绩信息插入到链表中; 查询函数Find();:分别可以按学号和按姓名进行学生成绩查询; 删除函数DelNode():按学号删除对应的学生记录; 修改函数Change():分别可以按学号和按姓名进行学生成绩修改; 输出函数DisLink():输出全部学生成绩信息; 排序函数Com()

    12、:分别可按学号、学期和学生平均分排序输出; 读取数据函数ReadData():从外部文件读取学生成绩信息; 保存数据函数SaveData():将学生成绩保存到外部文件中。2.2.5使用范围:各大中小学校的老师与教务科。2.2.6用户界面:良好的中文界面环境,可以通过不同数字的选择来实现不同的系统功能。2.2.7输出要求:中文输出格式。当用户有非法输入时会有良好的输出提示语,提示用户按正确输入格式输入。2.2 开发环境 Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开

    13、发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。C语言适用范围大,适合于多种操作系统,如Windows、linux、DOS、UNIX等等;也适用于多种机型。 C语言已先后被移

    14、植到大、中、小及微机型上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。 它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件。2.3系统性能分析2.3.1硬件环境处理器:CPU主频在500MHz以上 内存:128MB以上硬盘空间:10MB。2.3.2软件环境操作系统: Windows XP/Window 7(推荐使用Windows XP)。

    15、调试环境: Visual C+6.0及以上版本。分辨率1024*768,Microsoft Visual C+ 6.0。3 详细设计3.1系统的结构设计 通过对学生成绩信息管理系统的功能分析,可以定义出系统的总体结构模块图,如图3.1所示。学生成绩管理系统 学生成绩插入学生成绩查询学生成绩删除学生成绩修改学生成绩排序学生成绩输出学生成绩保存图3.1学生成绩管理系统总体结构设计3.2系统管理流程图 前面的分析中已经定义了系统各个模块,属于静态建模的范围。在系统运行时刻的动态模型应该由系统的流程决定。当用户运行该系统后可以来进行学生成绩信息插入管理、学生成绩信息查询管理、学生成绩信息删除管理、学生

    16、成绩信息修改管理、学生成绩信息排序管理及学生成绩信息输出等操作,具体的流程如图3.2所示。进入系统数据读入查询修改删除输出数据保存退出系统不保存YN图3.2.1系统流程图 主模块应负责应用程序的主界面,由它调用其他模块.因此主模块应具有操作性好、界面清晰的特点,使用户能够很方便地找到所需功能。本成绩管理系统可以先以可读写的方式打开数据文件,若该文件不存在,则提醒用户新建此文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的单链表中,然后执行显示主菜单和进入主循环操作,进行按键判断。根据功能需求的结果分析,主界面应该由学生成绩信息插入管理,学生成绩信息查询管理、学生成绩信息修改管理

    17、、学生成绩信息删除管理、学生成绩信息的排序和学生成绩信息输出管理组成,可以通过输入相应的数字进入相应的功能模块。接下来是系统详细设计和系统实现。系统总体设计完成后,就可以根据需求对各个模块来进行实现了。在本系统中需要编码实现的主要有学生成绩信息插入、学生成绩信息查询、学生成绩信息修改、学生成绩信息删除、学生成绩的排序和学生成绩信息输出等6个模块。(1) 学生成绩插入模块 用到的数据结构与算法知识为结构体,该系统创建了学生成绩结构体,结构体又由数据域和指针域构成。数据域中包含学期、学号、姓名、语文成绩、数学成绩、外语成绩和平均分等信息。 添加的信息包括学期(取值范围只能1-8)、学号、姓名(输入

    18、数字和其他字符时为不合法输入)、语文成绩、数学成绩和外语成绩(各科成绩的取值范围大于0小于100)。流程图如下图3.3.2所示。开始插入数据输入学生成绩信息调用类成员函数采用单链表保存数据结束图3.3.2使用到的存储结构是单链表,线性表的链接存储结构称为单链表,单链表使用一组任意的存储单元存放线性表的元素,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。为了正确表示元素之间逻辑关系,每个存储单元在存储数据元素的同时,还必须存储其后继元素所在地址信息,这个地址信息称为指针,这两部分组成了数据元素的存储映像,称为结点,结点结构如图3.3.3所示。图3.3.3单链表的结点构造设

    19、p是一个指针变量,则p的值是一个指针。设指针p指向某个结点,则该结点用*p表示,在单链表中,结点p由两个域组成:存放数据元素的部分和存放后继结点地址的指针部分,分别用p-data和p-next来标识,p-next指向结点ai+1,其指针与结点之间关系如图3.3.4所示。图3.3.4指针与结点之间关系的示意图 本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程描述如下:初始化创建两个节点,第一个节点pr=head,第二个节点p设置为空。如果head为空,则p=head,否则,用while循环,查找到尾节点,即当pr-next不为空时,pr=pr-next。找到尾节点后,令

    20、pr-next=p,然后pr=p,这就完成了在尾节点新增加一个节点p。(2)学生成绩查询模块按姓名和学号查找学生成绩的流程图分别如下图3.3.5所示。结束输入查找姓名学号学号学号判断抱歉没有该学生输出该学生的信息按姓名或学号查找查找开始NY图3.3.5按姓名查找学生成绩信息流程图在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。当p指向某个结点时判断是否为第i个结点,判断条件即比较数据域中p-name与输入的name是否一致,是的话则查找成功;否则,将工作指针p后移,即将p指向原来所指结点的后继结点。

    21、直到p为NULL时查找失败。单链表查找过程如图3.3.6所示。图3.3.6单链表查找过程的示意图按学号查询学生成绩信息同按姓名查找学生成绩信息,由于过程差别不大,此处就不再用示意图详细列出了。(3)学生成绩修改模块学生成绩修改功能,可以按学号首先要查找与要修改数据相匹配的信息,如果找到了匹配的信息,则让用户按接下来的输出提示依次输入要修改的信息,(学号作为主码不能修改,然后再将重新输入新的数据并保存到单链表)然后保存到指定文件当中去。若没有匹配的学生成绩信息,则返回失败,然后把相应的提示信息输出,让用户重新选择操作。Student *Change(Student *head)Student *

    22、p;int term; int ID; char name20; int c1; int c2; int c3;int k=1;p=head;printf(请输入要查找的学号:n);scanf(%d,&ID);while(p!=NULL)if(p-ID=ID)printf(已找到该学生,请输入修改信息:n); while(1) printf(请输入学期:); scanf( %d,&term); if(term8|term100|c1term=term; /数据修改 strcpy(p-name,name); /数据修改 p-c1=c1; /数据修改 p-c2=c2; /数据修改 p-c3=c3;

    23、 /数据修改 printf(修改成功!n); SaveData(head); k=0; p=p-next;if(k)printf(没有该学生,请核对学号n); return head;(4)学生成绩删除模块当选择删除功能时,可以选择按学号或名字进行删除操作。首先要求输入要删除的同学的学号或姓名,如果该同学存在并且学号或姓名匹配的上的话,则进行删除操作,然后输出提示语,提示用户操作成功。否则返回失败。并提示用户操作失败,然后让用户重新选择操作功能。其流程图3.3.7如下:开始输入姓名输入学号学号存在执行删除功能返回主菜单NY图3.3.7删除学生信息模块流程图删除操作定义为将单链表的第i个结点删去

    24、。因为在单链表中结点ai存储地址在其前驱结点ai-1的指针域,所以必须首先找到ai-1的存储地址p,然后令p的next域指向ai 的后继结点,即把结点ai 从链上摘下来,最后释放结点ai的存储空间,如图3.3.8所示。 图3.3.8在单链表中删除结点指针的变化情况(5) 学生成绩排序模块学生成绩排序方法,数据结构与算法书中有很多种排序方法,各种各样的排序方法都有其优点和缺点,由于本人能力有限,所以只选择了一种自己比较熟悉的排序方法:冒泡排序。依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类

    25、推则将最大的数滚动到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置.第n-1(n为无序数据的个数)趟即能完成排序。该算法的平均时间复杂度:O(n2)空间复杂度:O(1) (用于交换)稳定性:稳定以平均成绩为例:while(p-next!=NULL) p=p-next; i+; p=head; for(j=1;jnext; for(k=0;kc1+pr-c2+pr-c3)/3.0c1+p-c2+p-c3)/3.0) temp1=*pr; temp1.next=p-next; *pr=*p; *p=temp1; pr-next=p; p=p-next; pr=pr-next; p=head;

    26、 pr=head; return head;(6) 学生成绩输出模块输出为从文件读入数据,然后依次输出各项数据。若文件为空,则输出提示,说明文件为空,提示用户从键盘输入数据。对文件的操作为:使用了函数 fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。返回值 若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。fopen(打开文件)函数说明 参数path字符串包含欲打开的文件路径及文件名。返回值 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno

    27、中。Student *p=NULL; 4 系统测试主界面:如图4.1显示。在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作(例如:选择1 ,即可进入输入学生数据页面)所有操作均有提示语,比较人性化的管理,易懂,简单。图4.15 所遇到的问题和分析解决在本系统设计和开发过程中遇到的问题和困难很多,现在就挑几个比较突出的问题来说明。第一个问题是所有数据都要从外部文件读入和最后的数据也要保存到外部文件当中。在之前的编程学习中,对文件的各种操作都不是太熟悉,基本没怎么用过,为了解决这个问题,我到图书馆和网上查找并学习了流与文件的操作的相关知识,经过一番研究,我了解流与文件的基本操作方法,所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件(头文件)等。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文


    注意事项

    本文(数据结构学生成绩管理系统.doc)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开