实验任务
1.学生信息录入,信息包括学号、姓名、专业、四门课成绩、总分、名次;系统可对学生信息浏览、增加、删除和修改;
2.按学生成绩确定名次及信息输出,双向冒泡排序、希尔排序、快速排序、堆排序。
3.要求可对学生信息查询,根据学号或姓名进行查找;
4.信息修改仅可修改四门课成绩;
5.文件存取学生信息。
需求分析
• 新增学生信息(包括学号、姓名、专业、4门成绩)
• 浏览学生信息(对学生排序后信息进行浏览)
• 删除学生信息(删除指定学生的信息,可给用户选择检索指定项)
• 查找学生信息(查找符合条件的某条记录)
• 保存学生信息(保存学生成绩档案信息到文本文件)
• 加载学生信息(登录系统后将磁盘文件中保存的学生成绩信息读取到内存中)
开发环境
设计语言:java
开发工具:IDEA
设计思路
创建一个Java的Student类,Student类中包含学号、姓名、专业,四门课成绩,总分、名次。
用集合的方法对对象进行初始化。
将排序方法写在dao类中。
相关算法
双向冒泡排序:
传统冒泡气泡排序的双向进行,先让气泡排序由左向右进行,再来让气泡排序由右往左进行,如此完成一次排序的动作,使用两个旗标来记录左右两端已排序的元素位置。
希尔排序
希尔排序是将待排序的数组元素 按下标的一定增量分组 ,分成多个子序列,然后对各个子序列进行直接插入排序算法排序;然后依次缩减增量再进行排序,直到增量为1时,进行最后一次直接插入排序,排序结束。
快速排序
通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
堆排序
利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。