数据库学生信息管理系统实验报告

  • 格式:doc
  • 大小:211.50 KB
  • 文档页数:9

题目四

D002H:设计一个学生信息管理系统,包括学生基本信息、成绩信息等。提供输入、编辑、删除、查询的操作界面。数据库类型自选。

1、问题分析。

由题意得,这是一道数据库类型的题目,需要实现插入,修改,删除,查询四个功能。

确立数据的存储结构,采取二叉树进行存储数据,每个结点包含学生的姓名与学生的成绩。

通过二叉查找树进行插入、删除和查询工作。

二叉查找树的特性是左子树关键字均小于根的关键字,而右子树的关键字均大于根的关键字。因此加入某一关键字只要逐一比较,依据关键字的大小往右或者往左,便可找到关键字插入的位置。

二叉查找树的删除,当删除某一结点时,若删除的是叶结点,则直接删除,假若删除的不是叶结点,则在左子树找到最大的结点或者在右子树找到最小的结点,取代将被删除的结点。

二叉查找树的查询,决定关键字X是否在二叉查找树中,首先X先与根去比较,若X等于根表示找到,如果X大于树根,则往右子树查找;否则,到左子树查找。

由于一个结点包含学生的姓名与成绩,题目要求要求编辑功能,学生的成绩具有可变性,所以结点的关键字选取为学生的姓名。

对二叉树的遍历,写入数据,采取先序遍历:先遍历树根,然后遍历左子树,再遍历右子树。

2、设计方案。

根据问题分析,设计程序:

1. 构造函数,使根结点为空,加载函数,将数据文件BinSearchTree.dat加载到程序中;

2. 定义载入与保存方法,结点的名字初始为空,学生成绩为0,由于BinSearchTree.Dat正常情况下能够使用,所以采取JAVA中对异常的处理方法。使用try-throw-catch组合替代if-else语句。

3. 定义一个search方法,用来搜索某个结点,定义一个结点,当此结点不为根结点时,如果目标结点小于此结点的关键字,向此结点的左子树搜索,否则向右子树搜索。

4. 定义一个search_re_r方法,用来搜索右子树的替代结点,当替代结点的不为空并且替代结点的左子树不为空时,使用替代结点的左子结点作为替代结点。

5. 定义一个search_re_l方法,用来搜索左子树替代结点,当替代结点不为空并且替代结点的右子树不为空时,使用替代结点的右子结点作为替代结点,

6. 定义一个search_p方法,用来搜索父节点,当结点小于父节点,向左搜索,直到搜索到位置,否则向右搜索。

7. 定义一个preorder方法,用来以先序法写入档案,采取递归方式,先遍历树根,然后遍历左子树,再遍历右子树。

8. 定义一个access方法,用来将数据增加到二叉查找树中,调用search方法,当增加的结点与树中结点重复时,显示结点已存在,否则,将学生姓名与成绩存入结点,当树根为空时,结点保存为树根,当树根不为空时,寻找数据插入点,小于关键字向左查找,大于关键字向右查找,直至找到插入位置,将结点两端与树中其他结点相连。

9. 定义一个connect方法,用来调整二叉树的链接,调用search_p方法,寻找到父结点,当结点为父结点的左子树时,使父结点的左端与结点的右端相连,否则,父结点的左端为空,当结点为父结点的右子树时,使父结点的右端与结点的左端相连,否则,父结点的右端为空。

10. 定义一个replace方法,用来寻找删除非叶结点的替代结点,调用search_re_r、search_re_l和connect方法,先搜索右子树寻找替代结点,当替代结点在右子树存在时,将右子树的最小结点作为替代结点,当不存在时,搜索结点的左子树,讲左子树的最大结点作为替代结点,调用connect方法,将结点间连接。

11. 定义一个removing方法,用来将数据从二叉查找树中删除,调用search和replace方法,当找不到删除结点时,显示无法找到此结点;否则当此结点不为叶节点时,利用replace方法,寻找替代结点,当此结点为叶结点时,直接删除。

12. 定义插入(insert)方法,方法中要求用户输入学生姓名与成绩,方法中调用access方法,讲输入数据存入。

13. 定义删除(delete)方法,当树根为空时,系统输出没有学生记录,否则调用replace方法删除结点。

14. 定义编辑(modify)方法,当树根为空时,系统输出没有学生记录,否则,调用search方法,找出结点,重新对结点中学生成绩赋值。

15. 定义查询展示(show)方法,当树根为空时,系统输出没有学生记录,否则,调用search方法,找出此结点,系统输出结点的姓名与成绩信息。

16. 设计友好的界面,提示用户输入数字,并对系统输出的结果进行说明。

17. 寻找检查程序中的BUG。 3、流程图。

4、测试数据、测试结果、结果分析。

File loading...OK!

*******Welcome to student score System**************

<1> insert

<2> delete

<3> modify

<4> search

<5> quit

*******Welcome to student score System**************

Enter your choice: 4

No student record

*******Welcome to student score System************** <1> insert 加载函数,写入档案

1.用户录入数据,insert方法

2.用户删除数据,delete方法

3.用户编辑数据,modify方法

4.用户查询数据,show方法

5.退出,save方法,保存数据 用户选择功能,调用相应方法 Access方法

Removing方法

Replace方法

Connect方法

preorder方法

Search方法

Search_re_r方法

Search_re_l方法

Search_p方法 <2> delete

<3> modify

<4> search

<5> quit

*******Welcome to student score System**************

Enter your choice: 1

======INSET INFORMATION======

Enter student's name: peter

Enter student's score: 100

*******Welcome to student score System**************

<1> insert

<2> delete

<3> modify

<4> search

<5> quit

*******Welcome to student score System**************

Enter your choice: 3

======MODIFY STUDENT INFORMATION======

Enter student name: peter

Original Student name: peter

Original Student score: 100

Enter new student: 200

Information of student peter modified

*******Welcome to student score System**************

<1> insert

<2> delete

<3> modify

<4> search

<5> quit

*******Welcome to student score System**************

Enter your choice: 4

======SHOW STUDENT INFORMATION======

Enter student name: peter

Student name: peter

Student score: 200

*******Welcome to student score System**************

<1> insert

<2> delete <3> modify

<4> search

<5> quit

*******Welcome to student score System**************

Enter your choice: 2

======DELETE STUDENT INFORMATION=====

Enter student's name: peter

Data of student peter deleted!

*******Welcome to student score System**************

<1> insert

<2> delete

<3> modify

<4> search

<5> quit

*******Welcome to student score System**************

Enter your choice: 5

File saving...OK!

当学生成绩为符点数时,系统无法识别,输入自然数能够满足题目中要求

5、相关运行界面。