《数据结构课程实践》_01_学生成绩档案管理系统_预习报告

一、实验题目与要求

  • 学生信息录入,信息包括学号、姓名、专业、四门课的成绩、总分、名次;

  • 系统可对学生信息浏览,增加,删除和修改;

  • 按学生成绩确定名次以及信息输出,双向冒泡排序、希尔排序、快速排序、堆排序;

  • 要求可对学生信息查询,根据学号或姓名进行查找;

  • 信息修改仅可修改四门课程的成绩

  • 文件存取学生信息

二、编程语言以及开发环境

1. 编程语言:
选择Java,因为在上学期 project 01中对Java进行了一次提高,现在习惯用Java来编写

2. 开发环境:
选择IntelliJ IDEA,使用起来更加方便

三、实验思路

1. 思考初始化数据处理

  1. 建立一个包data,里面包含类studentData来处理学生的信息数据问题,建立一个包Student,包含Student,来处理学生这个对象。

  2. 学生信息包括学号、姓名、专业、四门课的成绩、总分、名次共9类,所以可以用一个集合来处理,构造 集合studentList

  3. 建立包Dao,包含studentDao,用来处理数据的运算。

2. 学生对象处理

  1. 在Student类里面构造含参数的构造函数,并在studentData类中,初始化数据类型为学生的数据,填入链表 .add()方法 ,完成数据类的初始化。

  2. 学生对象的元素有9个,其中总分可以用四科目的成绩来代替。其中含参数的构造函数中,不包括排名和总分,这两个元素需要单独的方法进行计算。

  3. 在Dao中建立方法rankByScoreAll进行排名,在学生类构造函数中进行总分计算,此时总分不显示,但已经计算完成。

3. 操作处理

  1. 新建包serves用来展开操作服务,新建类serves,用做服务。

  2. 新建类main,来当作程序的启动开关。需要在该类里面将用到的其他类的数据实例化。

  3. 在serves类里面建造开关方法begin,初始界面显示已经初始化的数据,然后进行功能选择,通过switch语句进行功能跳转。

  4. 从开始方法,选择1跳转到增加学生信息功能,选择2跳转到删除学生信息功能,选择3跳转到修改学生信息功能,选择4跳转到排序学生信息功能,选择5跳转到查询学生信息功能,选择6跳转到打印学生信息功能,选择7跳转到退出系统功能。

4. 方法描述

  1. 增加学生信息:
    serves类 中添加方法:addStudent ,需要输入学生的相关信息,然后在 studentDao类 中添加方法,进行增加学生信息。然后在addStudent 方法中进行调用。

  2. 删除学生信息:
    serves类 中添加方法:deleteStudent ,需要输入要删除的学生的学号,可以以参数形式传入,然后在 studentDao类 中添加方法,进行删除学生信息。然后在deleteStudent方法中进行调用。

  3. 修改学生信息:
    serves类 中添加方法:modifyStudent ,需要输入要修改的学生的学号,可以以参数形式传入,然后在 studentDao类 中添加方法,进行删除学生信息。然后在modifyStudent 方法中进行调用。

  4. 排序学生信息:
    此功能中需要进行二次选择,四种排序方法。双向冒泡排序、希尔排序、快速排序、堆排序。依次在Dao中进行三个方法的书写,然后再在服务类里面进行选择,之后调用Dao中的方法就可以。

双向冒泡排序:此算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序,外层比较左右边界l<r,内层一个循环从左向右比,取高值置后;一个循环从右向左,取低值置前;效率上,O(N^2), 不比普通的冒泡快。

希尔排序:把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

快速排序:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

堆排序:指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

  1. 查询学生信息:
    在服务类中设置查询的函数,其中调用Dao中的查询方法,由两个选项,通过学号查询,通过姓名查询,同样需要进行选择。

  2. 打印学生信息:
    可以直接调用开始时候的主界面,因为是写在Dao里的通用函数,所以可以很方便的进行重复使用,不再重新写,使得代码更加简洁。

四、预习小结

在本次预习中,关于排序算法存在较大问题,需要进行查询才能做下去,同时也有一个很重要的认知,就是把重复多次使用的函数可以单独的放在一个类里面,可以方便后面反复多次的使用,而且代码会显得很工整简洁明了。

猜你喜欢

转载自blog.csdn.net/jsinszjjs/article/details/114022804
今日推荐