超好的学生成绩管理系统实验报告顺序表链表

上传人:s9****2 文档编号:563601753 上传时间:2023-07-18 格式:DOCX 页数:11 大小:433.11KB
返回 下载 相关 举报
超好的学生成绩管理系统实验报告顺序表链表_第1页
第1页 / 共11页
超好的学生成绩管理系统实验报告顺序表链表_第2页
第2页 / 共11页
超好的学生成绩管理系统实验报告顺序表链表_第3页
第3页 / 共11页
超好的学生成绩管理系统实验报告顺序表链表_第4页
第4页 / 共11页
超好的学生成绩管理系统实验报告顺序表链表_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《超好的学生成绩管理系统实验报告顺序表链表》由会员分享,可在线阅读,更多相关《超好的学生成绩管理系统实验报告顺序表链表(11页珍藏版)》请在金锄头文库上搜索。

1、数据结构实验报告一具体设计顺序表存储结构定义采用了两个结构体,其中Student结构体用于存储学生的各项信息,包括学号int num;姓名 char name20;英语成绩 float english;数学成绩 float math;数据结构成绩 float database;总分 float sum;平均分float average;顺序表的结构体sqlist中包含的数据项是Student结构体,还 有存储当前长度的int length;及当前分配的存储容量的int listsize;函数功能定义及具体功能介绍录入信息 int Input(sqlist *L)每次输入学生的所有信息,输入完后

2、提示是否继续输入显示所有学生信息int Display(sqlist *L)插入一条记录到表尾void Insert(sqlist *L)删除一条记录int Delete(sqlist *L)包括1.按姓名删除2.按学号删除统计成绩int Statistic(sqlist *L)包括全班平均成绩,各科平均成绩,总分最高分,总分最低 分,各科最咼分,各科最低分以及各科及格率查找int Search(sqlist *L)查找方法包括1.顺序查找2.二分查找按查找内容又包括1.按学号 查找2按姓名查找,若查找成功则显示查找到的学生信息,若查找失败则提示“查找失败” 排序int Sort(sqlist

3、 *L)排序方法包括1直接插入排序2折半插入排序3冒泡排序4直接选 择排序,排序内容包括1.按学号排序2.按英语成绩排序3.按高数成绩排序4.按数据结构成绩 排序5按总分排序(0)退出程序void tuichu(sqlist *匚)释放占用的内存空间,显示谢谢使用!,然后关闭所有文 件,终止正在进行的程序(9) 主菜单int menu(),每次进行完一次功能实现后再次弹出,方便用户使用(10) 主函数int main(),用switch语句根据用户的选择进行相应的操作具体设计思路及过程录入信息int Input(sqlist *L),初始length为0,每录入一个学生length加一,然后显

4、示提 示信息是否继续,若继续则要再录入,所以要把这个整体的外面再套一层while循环,但是 在写的过程中也遇到了一个困难,还没有输入继续y,就让输入学生信息,通过百度,知道 了 C有一个输入的缓冲区,所以在每次输入前都请空了缓冲区,防止读入缓冲区余下的内 容。运行截图如下:一理Bal.i二二二贵息绩 穂信所二咸 讐:Iy.fi蟲 皿覚3.4.5.6.?.& = 二 二 二 二自S亠一一1=1-1的峯y-1-0 即9 -夕 G3 主W:心.:-1 成让岸de歓备护你#R 3 I I AA 成成结继A: 41啣号名语竈不鑑号名 请任舉姓蒸冋蓉程舉姓:显示所有学生信息int Display(sqli

5、st *L)把存储在顺序表中的内容全部读出即可,但是当用户还没有输入数据的时候就选择了显示所 有学生信息,就显示一个提示信息请先输入数据!,然后回到主界面运行截图如下:高数成绩数据结构成绩913 : 柱9B.01378.67.89.88.130-生录录.学记记1 -12345670平均分英语成绩89.6?73.6?81.3389.0076.0B67.总分244,区柱:2下 择如 选息名 的信姓desrt测您学 入同 薯号插入一条记录到表尾void Insert(sqlist *L)即输入学生信息保存到数组下标为L-length,然 后让L-length加一即可运行截图如下:选 ts?8绩 的

6、;成 您;绩绩构 a:8:t成成结 输号名语鬣簣同学霭如観分平均分英语成绩高数成绩数据结构成绩3de269.0896?89. 90.(3093.006gt221.673.6?76.0078-00ISyy244.00SI.3367.0S389.8808tF212 醐70.6?56.00勰術删除一条记录int Delete(sqlist *L)包括1按姓名删除2按学号删除,所以要用一个int型变 量存储学生的选项。当用户还没有输入数据的时候如果选择了删除一条记录,就显示一个提 示信息请先输入数据!,然后回到主界面。若顺序表中存在数据就先用顺序查找法查找是 否存在这个学生,如果存在那么把后面的学生信

7、息前移一位,然后L-length-,如果没有找 到这个学生的信息就显示要删除记录不存在!,然后返回主界面。运行截图如下:m 二123456704=t 迤障=!J 的朗1名夕 你茗号姓功 入姓学择入成 请L请请ade-总汾.269.8244.00212.0生录录学记记 苜誉I绩 判毎“ 一成 肚录显查龍平均分英语成绩89.6781.3370.6789.0067.0056.高数成绩89.0078.数据结构成绩88.0078.00统计成绩int Statistic(sqlist *L),因为要统计的信息包含总分和3门课程,所以要设置多个 计数器,而且计算及格率的计数器应设为float,否则两个整数相

8、除是整数,结果会有误。实 现时从第一个学生信息开始依次加到最后一个即可,运行截图如下:灌老成绩0 退出查找int Search(sqlist *L)当用户还没有输入数据的时候如果选择了查找,就显示一个提示 信息请先输入数据!,然后回到主界面。如果顺序表中存在数据就开始查找,找方法包括 1.顺序查找2.二分查找按查找内容又包括1.按学号查找2.按姓名查找,所以要设置两个int 型的变量ch1,ch2来读入选择的内容,然后再通过switch语句进入选择的查找方法或查找的 内容。按学号查找的比较语句要用”=”,按姓名查找的比较语句就要用strcmp()函数,顺序 查找法当计数器大于等于L-lengt

9、h时,输出查找失败!,然后回到主界面,二分查找法当 lowhigh时就输出查找失败!,然后回到主界面。运行截图如下:排序int Sort(sqlist *L)排序方法包括1直接插入排序2折半插入排序3冒泡排序4直接选 择排序,排序内容包括1.按学号排序2.按英语成绩排序3.按高数成绩排序4.按数据结构成绩 排序5按总分排序,所以要设置两个int型的变量ch1,ch2来读入选择的内容,然后再通过 switch语句进入选择的排序方法然后进入要排序的内容再进行相应的排序。自己一开始写的 时候复制记录是把结构体中的所有内容按照相应的复制方法依次复制过去,后来意识到结构 体是可以直接复制的,所以又进行了

10、改进,而且把数组中的第一个空闲,当作监视哨。彎学霭分平均分英语成绩高数成绩数据結构成绩3de89.6?39.0690.3de269.089.6?9PJ.009S.003de269-6089.6?89.93.00(0)退出程序void tuichu(sqlist *L),最初自己只是显示出谢谢使用!,然后用exit(0)终止程序, 后来意识到还应释放存储学生信息的结构体,所以又增加了 if(!L-stu)free(L-stu);清输您的选择 张谢使用辛Press miny key to ccmt inue(9) 主菜单int menu(),显示标题,和大致功能,用户根据功能前的编号选择进入相应的

11、函数, 执行相应的功能,所以用一个int型的变量来录入用户的选择,并且这个函数的返回值类型 为int,以供main函数使用,为了防止用户的输入错误,加了一个while语句,当输入错误 时,提示输入错误!请重新输入:,直到用户输入正确为止。(10) main函数,先定义顺序表,然后初始化,并且为了查找、排序方便将第一个当哨兵,所 以LL-length初值为1,用一个 while和switch(menu()执行用户的选择操作,直到选择了 退出。II单链表存储结构定义采用了一个结构体表示单链表里面包含保存学生学号的int stuid,姓名的char name20,英 语成绩的float englis

12、h,数学成绩的float math,数据结构成绩的float database,总分的float sum,平均分的float average;指示结点地址的指针struct LNode *next。函数功能定义及具体功能介绍录入信息LinkList Input()每次输入学生的所有信息,先输入要输入的学生人数然后逆序建表、完后提示是否继续输入显示所有学生信息void Display(LinkList L)插入一条记录到表尾void Insert(LinkList L)删除一条记录void Delete(LinkList L)包括1按姓名删除2按学号删除顺序查找某个学生void Search(L

13、inkList L)按查找内容包括1.按学号查找2.按姓名查找,若 查找成功则显示查找到的学生信息,若查找失败则提示“没有该学生的信息”显示各科最高分void Max(LinkList L)各科平均分 void Average(LinkList L)(8) 排序void Sort(LinkList L)排序方法包括1.直接插入排序2冒泡排序3直接选择排序,排 序内容包括1.按学号排序2.按英语成绩排序3.按高数成绩排序4.按数据结构成绩排序5.按总 分排序(1)退出程序void tuichu()显示谢谢使用!,然后关闭所有文件,终止正在进行的程序(9) 主菜单void Menu(),每次进行完

14、一次功能实现后再次弹出,方便用户使用(10) 主函数int main(),用switch语句根据用户的选择进行相应的操作具体设计思路及过程录入信息LinkList Input(),先建立一带头结点的空单链表,然后逆序建立存储学生信息的 单链表,录入时,因为当时设计时想了两种录入方法,一种是顺序表中的每次输入一个学生 信息然后输出提示让用户判断是否还要输入,另一种是先确定了输入人数再建立,所以在单 链表中采用了第二中。先输入要输入的人数,所以要把这个整体的外面再套一层for循环, 依次用malloc生成新结点,再把把新结点插入到链表头部。运行截图如下:欢迎使用学生成绩管理系统Il生 、学 壷 息生个:1S: 信字某分? 生操生 学暑平舉 AX序科岀Its擅进A请输衣第2个学生的信息4C-M-一8967绩一 (:成“ 一 S业績綺构“ 一 ;成成結- 一号名语鬣一 一学姓英高数- 【J*TT r*TT r*TT r*TT r*TT 一生生生生生一 一宀无壬王元字- 一JA谈久K 一89 一 -请请请请请一请输我第1个学生的信息rte显示所有学生信息int Display(sqlist *L)把存储在顺序表中的内容全部读出即可,但是当用户还没有输入数据的时候就选择了显示所

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号