数据结构实践一:项目准备与设计

一. 实践内容

学生成绩档案管理系统

(1)实践任务
  • 学生信息录入,信息包括学号、姓名、专业、四门课成绩、总分、名次;
  • 系统可对学生信息浏览、增加、删除和修改;
  • 按学生成绩确定名次及信息输出,双向冒泡排序、希尔排序、快速排序、堆排序。
  • 要求可对学生信息查询,根据学号或姓名进行查找;
  • 信息修改仅可修改四门课成绩;
  • 文件存取学生信息。
(2)项目需求
  • 新增学生信息(包括学号、姓名、专业、4门课成绩……)
  • 浏览学生信息(对学生排序后信息进行浏览)
  • 删除学生信息(删除指定学生的信息,可给用户选择检索指定项)
  • 查找学生信息(查找符合条件的某条记录)
  • 保存学生信息(保存学生成绩档案信息到文本文件)
  • 加载学生信息(登录系统后将磁盘文件中保存的学生成绩信息读取到内存中)

二. 开发环境

实现语言:Java
开发平台:IntelliJ IDEA

三. 项目设计

(1)类定义
  • 学生信息类
 stuNum  //学号
 stuName  //姓名
 stuMajor  //专业
 stuScore1  //课程1成绩
 stuScore2  //课程2成绩
 stuScore3  //课程3成绩
 stuScore4  //课程4成绩
 stuTotalScore  //总成绩
 stuRank  //排名
  • 系统用户类
accountNum  //用户账号
accountPassword  //账户密码
  • 数据库类
accountList  //用户列表
stuList  //学生列表
  • 文本交互类
学生信息写入导出
  • 系统用户方法类
系统用户信息增删改查
  • 学生信息方法类
学生信息增删改查
  • 账户登录系统类
系统登录界面及具体方法
  • 学生信息管理类
学生信息管理界面及具体方法
  • 主系统类
系统入口界面及具体方法
(2)排序算法
  • 双向冒泡排序
比较相邻两个元素的大小。如果前一个元素比后一个元素大,则两元素位置交换;
对数组中所有元素的组合进行第1步的比较;
奇数趟时从左向右进行比较和交换;
偶数趟时从右向左进行比较和交换;
当从左端开始遍历的指针与从右端开始遍历的指针相遇时,排序结束。
  • 希尔排序
先取一个小于n的步长d1,把表中全部元素怒分成d1个组,所有距离为d1的倍数的记录放在同一个组中,在各组中进行直接插入排序;
取第二个步长d2<d1,重复上述过程,直到所取到的d=1,即所有元素已放在同一组中,再进行直接插入排序。
  • 快速排序
先从数列中取出一个数作为基准数;
将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边;
再对左右区间重复上述二步,直到各区间只有一个数。
  • 堆排序
首先将待排序的数组构造成一个大根堆,此时,整个数组的最大值就是堆结构的顶端;
将顶端的数与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个数为n-1;
将剩余的n-1个数再构造成大根堆,再将顶端数与n-1位置的数交换,如此反复执行,便能得到有序数组。

猜你喜欢

转载自blog.csdn.net/u014174973/article/details/114261080