文章目录
软件实习项目一——学生成绩档案管理系统(实验准备)
实验内容
-
学生信息录入,包括学号,姓名、专业、四门成绩、总分、名次;
-
系统可以对学生信息浏览、增加、删除和修改;
实验目标
-
按学生成绩确定名词级信息输出,双向冒泡排序、希尔排序、快速排序、堆排序。
-
要求可对学生信息查询,根据学号或姓名进行查找;
-
信息修改仅可修改四门成绩;
-
文件存取学生信息。
编程语言与开发环境的选择
-
由于对InteliJ IDEA比较熟悉,所系编程环境选择IntelliJ IDEA;
-
编程语言选择JAVA
实验思路
1、建立学生成绩档案集合
-
创建StudentDatebase类,在构造方法中对集合的数据进行初始化。
-
通过ArrayList方法将学生信息(姓名、学号、专业)添加至集合。
-
通过ArrayList方法江学生成绩添加至集合
2、编写学生信息录入函数
-
编写基本信息录入函数insert_Base(),通过调用学生信息集合中的方法进行对学生信息(姓名、学号、专业)的录入。
-
编写成绩录入函数insert_score(),通过学号匹配对学生四门课程成绩录入。
3、编写学生信息浏览及修改函数
-
浏览:编写print()函数,通过循环对学生信息集合进行遍历,打印输出。
-
增加:通过insert()函数,对集合中学生信息进行增加。
-
删除:编写delete()函数,通过学生的学号,对学生信息进行删除。
-
修改:编写modify_base()函数,通过学生学号查找到该学生,通过set_base方法,对该学生的基本信息(姓名、学号、专业)进行修改。
-
修改:编写modify_score()函数,通过学号匹配对学生成绩进行修改。
4、学生成绩排名及输出
-
排序
(1)双向冒泡排序:
①、传统冒泡气泡排序的双向进行,先让气泡排序由左向右进行,再来让气泡排由右往左进行,如此完成一次排序的动作;
②、使用left与right两个旗标来记录左右两端已排序的元素位置。
(2)希尔排序:
①、先取一个正整数d1<n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;
②、然后取d2<d1,重复上述分组和排序操作;
③、直至di=1,即所有记录放进一个组中排序为止。
(3)快速排序:
①、先从数列中取出一个数作为基准数;
②、区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边;
③、再对左右区间重复第二步,直到各区间只有一个数。
(4)堆排序:
①、创建一个堆 H[0……n-1];
②、把堆首(最大值)和堆尾互换;
③、把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;
④、重复第二个步骤 ,直到堆的尺寸为 1。 -
输出
通过排序方法,将名次结果放入RankList链表中,通过for循环对链表内容依次输出打印。
5、学生信息查询
-
编写findByID()函数,通过输入将要查询的学生的学号,系统遍历学生信息集合,找到相同的学号,打印输出该学生的信息。
-
编写findByName()函数,通过输入将要查询的学生的姓名,系统遍历学生信息集合,找到相同的姓名,打印输出该学生的信息。
6、文件存取学生信息
-
FileOutputStream:OutputStream的子类,用于存储文件当中的数据。
-
FileInputStream:InputStream的子类,用于读取文件当中的数据。