数据结构基础-学生成绩管理系统-c语言_第1页
数据结构基础-学生成绩管理系统-c语言_第2页
数据结构基础-学生成绩管理系统-c语言_第3页
数据结构基础-学生成绩管理系统-c语言_第4页
数据结构基础-学生成绩管理系统-c语言_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学位:Xxxxx数据结构基础课程报告主题学生成绩管理系统大学XXX专家XXX班级XXX姓名XXX指导教师XXX2016年11月亮27日目录目录2一.任务和目的32 .主题说明33 .设计目的3四.需求分析35 .问题分析和算法设计45.1问题分析45.2算法设计4六.系统设计方案46.1系统功能46.2程序设计和执行结果5(1)主函数模块设计5(2)“屏幕”-显示函数模块设计6(3)结构体定义6(5)信息输入模块7(6)显示模块及结果8(7)检索模块及结果9(8)删除模块11(9)插入函数模块11(10 )排序函数模块13(十一)修正模块147总结158参考文献169附录16代码16数据结构基础课程报告成绩评价表291 .任务和目的数据结构基础大任务要求学生对所选主题进行问题分析、数据结构比较选择、数据结构存储方法和算法分析和编程。 本课程的主要目的是加强、强化常用数据结构的使用方法,综合利用学到的知识,培养分析和解决实际问题的能力。 通过大工作的完成,将数据结构的理论方法与实际应用相结合,使学生能够比较全面、辩证地分析和处理问题,确立正确的算法设计思想,熟练掌握常用数据结构的具体实现方法和分析方法,软件开发的基本技术和工作过程,认真的科学态度和实践性工作2 .主题说明学生成绩管理:实现功能:输入、输出、插入、删除、检索、显示、保存、排序、修改、结束等。用户使用该系统主要是实现学生信息的创建、修改、保存等操作。3 .设计目的(一)基本掌握程序设计的基本思路、方法和技能;(二)达成和应用能把握数据结构的基本知识;(3)利用学到的基本知识和技能,可以解决简单的编程问题(4)加强和加强常用数据结构的使用,综合利用学到的知识,培养分析和解决实际问题的能力4 .需求分析作为基本的程序,由于显示接口是美观的,在编程时必须考虑程序输出时的格式,因此在编程时经过从显示接口到各部的详细的计划和编制,例如在下一程序中设计的学生信息管理系统必须完成学生信息的创建、显示、检索、插入、删除、保存、排序、修改、退出等基本功能,编程基础建设在已学过的数据结构、c语言等知识水平上,可以自行提高程序难度。 我想设计的程序主要应用于c编程方法学1和数据结构2的主要知识。 基本要求是编译、链接、调试和执行程序。 主要解决的问题是程序的编制,平台是VC 6.05 .问题分析和算法设计5.1问题分析该程序设计的整体思想是模块化编程。 多个功能被集成在一起,并且恰当的子模块响应于用户输入的请求来执行,以实现这些功能。 主函数通过switch结构实现,可以分别对每个功能记述模块函数。5.2算法设计经过问题分析,程序的大致构造决定了,必须认为应该使用那些算法。 该程序存储一系列的学生信息并包含多个数据项,因此可以通过数组、结构、顺序表、单链表等来实现,但是为了实现检索、排序、删除等各种功能,单链表看起来更加适当,同时还可以锻炼我们链表的使用技术,因此考虑到单链表编程6 .系统设计方案6.1系统功能首先确定学生信息包括学号、名字、科目、成绩业等。 其次,学生信息管理系统应提供的功能包括:(1)系统显示菜单(2)学生信息输入功能是必要的(3)学生信息阅览功能(4)学生信息用文件保存(五)按学号查询,按姓名查询(6)可按学号、科目成绩等排序(七)学生信息的删除修正;(八)学生信息的修正;(九)退出根据实际情况和自己的能力,决定了上述制作和应该实现的功能。6.2程序的设计和执行结果(1)主函数模块设计以前确定的主函数可以通过switch结构实现,只需分析系统功能并写入主函数的各case即可,因此主函数可以描述如下3。/主函数int main(void) )menu (); /调用显示函数while(1)装模作样printf(tt请选择适当的功能:);scanf(%d”,a );switch(a )装模作样退出case 0: /系统case 1: /学生信息输入case 2: /信息显示case 3: /搜索信息case 4: /删除学生信息case 5 : /插入学生信息(尾插入法)case 6: /学生信息排名case 7 : /修改信息case 8 : /将成绩保存到文件default: /输入其他内容,然后重复重新输入break;system(pause );return 0;以下称为相应地,主函数将是易于理解的,使得读者可以看一眼而不是杂乱的,并且,当存在主函数时,可以向主函数添加子模块。(2)“屏幕”-显示函数模块的设计为了显示画面即向用户提供功能选择的主接口明确且整齐,实现用户感觉系统的操作简单的效果,编译后的接口效果如下图所示由上图可知,只要用户根据自己的需求进行操作,就能够实现其功能。 程序设计的函数是void menu ()。(3)结构体的定义结构名称用作结构类型的标记,也称为结构标记。 声明结构类型的典型格式如下:结构结构名称成员名单;大括号内是该结构体的各个成员,由它们构成一个结构体。 每个成员都必须进行类型声明类型名称成员名称我在结构中定义了两个字符数组和三个整形变量,存储了学号、名字和三个科目的成绩,在结构中定义了一个指针,为了一个链接表格所需,用于指向下一个节点。typedef struct student /创建学生班级装模作样char num20; /学号char name20; /名称int math; /几分钟int English; /英语int Data; /数据结构struct student *next; /指针student;student *head=NULL; /头针(5)信息输入模块相应的函数是void create (),可以在链接表中创建学生信息,因此首先创建头节点P1=(student * ) malloc (sizeof (student ) ); /创建头节点接着,将指针指向下一个节点,根据用户输入的学生数量依次制作链接表(学生信息)。主要的循环是whilewhile(numnum,p2-name,p2-math,p2-English,p2-Data) /输入学生资讯if(p2-num=0)装模作样printf (信息输入成功 n );break;以下称为长度; /链接表的长度p1-下一步=p 2;p2-next=NULL; /节点相继移动p1=p1-next;number; /记录输入的学生人数以下称为printf (信息输入成功 n ); /返回成功功能选择是用户根据选择模块-屏幕提示进行的操作,系统在执行以下操作之前清除屏幕并显示此操作的结果。(6)显示模块及结果void display ()此模块输出最终结果,而不是每个操作结果的输出函数,输入学生信息,然后运行此功能,系统将输出所有结果。 请参见下图。 可知系统清除了上次的操作,根据输入的2个功能进行了显示操作。 输出循环输出,指针指向链表的各数据依次输出。 主要的代码是while(p!=NULL )装模作样printf (tt %-13 s %-11 s %-9 d %-9 d % dn ,p-num,p-name,p-math,p-English,p-Data ); p=p-next;以下称为(7)模块及结果的检索编程时,不是用单一的学号和名字进行检索的方法,而是用学号进行检索,也可以用名字进行检索,因此制作voidasearcher1()和void search2()这两个检索函数,在输入的学号和名字没有被记录的情况下,“这个人主要代码如下所示,通过字符串比较函数4判断链接表不空时循环检索是否成功。while(p!=NULL )装模作样if(strcmp(p-num,xh)=0) /搜寻成功,并显示搜寻资讯装模作样/显示找到的信息以下称为以下称为if(p=NULL) /完成链表遍历并返回搜索信息printf (此人不在n );(八)删除模块为了删除模块函数,void Delete ()按照输入的学号删除信息,首先根据用户输入的学号检索与该学号对应的信息,如果记录中没有该人则返回,如果检索成功则删除该学生的所有信息,代码与检索相同(9)插入函数模块void insert ()是插入函数,主要使用后缀插入学生信息。 主要代码包括void insert () q=(student * ) malloc (sizeof (student ) ); /创建新节点. /输入学生信息while(p!=NULL) /循环装模作样if(strcmp(p-num,q-num)=0) /确定在链表中是否已经存在该序列号装模作样printf (此学号已存在,无法插入 n );return;如果链接表中已经有该学号,则返回p=p-next; 以下称为p=头;for(i=0; inext;q-next=p-next;p-next=q;长度; /插入后的链表长度增加printf (插入成功 n ); /返回成功插入函数的难点是建立新节点、输入信息、将信息插入链接表等步骤的链接、节点的移动等核心算法。(10 )排序函数模块排序模块是我面临的最大课题,不仅整形数比的大小,学号这个字符串比的大小在编译时也总是错误的,考虑了好几天,在同学和老师的帮助下解决了问题。 重要的是在字符串比较函数中的应用if(strcmp(p-num,p-next-num)0)。排序模块主要按学习顺序排序,按科目排序。 按学习顺序排序时,使用的排序方法是节点交换的排序方法,主

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论