数据结构实践作业(一)学生成绩档案管理系统 预习报告
一、需求分析
学生成绩档案管理系统的主要实现有以下几点:
1.学生信息录入。
2.对学生信息的浏览、增加、删除和修改。
3.按照学生成绩确定名次并输出信息,其中将使用到排序算法。
4.要求可对学生进行信息查询,根据学号或姓名进行查找。
5.学生的信息修改仅可修改四门课成绩。
6.程序要能将学生信息导出为txt文件进行储存。
二、系统设计
1.菜单系统
菜单的作用是方便用户进行交互,显示程序的所有功能,菜单将在程序执行最开始进行显示,并在每一次操作结束后再次显示。
代码如下:
void menu()
{
System.out.println("**********学生档案管理系统**********");
System.out.println("1.浏览学生");
System.out.println("2.增加学生");
System.out.println("3.删除学生");
System.out.println("4.修改学生");
System.out.println("5.导出文件");
String choose=in.next();
switch(choose)
{
case "1":print();break;
case "2":add();break;
case "3":delete();break;
case "4":edit();break;
case "5":outputfile();break;
default:
System.out.println("输入错误,请重新输入");menu();break;
}
}
由于菜单系统只是简单的输出,不涉及具体函数的编写,所以在预习报告中先写出代码。
2.学生档案的查询。
查询功能是放置在浏览功能之中的,浏览会将所有学生按照排名降序排列,并显示每一位学生的姓名和总分,随后再显示查询子菜单,其中有按排名查询,按学号查询。查询结束后回到主菜单
3.文件导出系统
即将当前数据结构中存储的学生数据按照一定的格式导出到指定路径下txt文件中,若当前路径下不存在txt文件,则会创建一个txt文件,随后再将数据导出。
三.算法与数据结构
储存学生数据的数据结构将使用List中的ArrayList。
对学生按照排名进行排序的排序算法,我选择使用快速排序。
快速排序
基本方法:通过一趟排序将要排序的数据分割成独立的两个部分,其中一部分的所有数据,比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
排序流程
快速排序通过多次比较和交换来实现排序,其排序流程如下:
1.首先设定一个分界值,通过该分界值将数组分成左右两部分。
2.将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。
3.然后,左边和右边的数据可以独立排序。对于左侧数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数据也做类似处理。
4.重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排序好后,再递归排序右侧的部分的顺序。
四.编程语言
JAVA
五.开发平台
IntelliJ IDEA
总结
以上就是我的预习报告,本文仅仅简单的介绍了学生成绩档案管理系统的组成,和其中算法的介绍。
整个系统中稍微复杂一点的地方就在于快速排序以及文件导出部分的算法。其余部分都比较常规,只要细心编程,就能顺利的完成。