二叉树数据结构课程设计报告 下载本文

内容发布更新时间 : 2024/11/8 21:29:07星期一 下面是文章的全部内容请认真阅读。

广 西 科 技 大 学

课程设计报告

课程名称 《数 据 结 构》

学 院 计算机科学与通信工程学院

专 业 软 件 工 程 班 级 软件181班 学 号

姓 名 冯孔丽

成 绩

学 期 2019-2020-1

指导教师

1课题:.将学生信息以学号为关键字存储在二叉搜索树中,然后按照学号查询

和删除指定学生的信息。

2设计要求:

(1)从键盘输入学生的学号、姓名、英语和数学成绩,计算每个学生的成绩总分,存储在二叉排序树中。

(2)按照输入的学号查询指定的学生信息,若找到,则输出找到的学生信息,否则输出“查找失败”提示信息。

(3)按照输入的学号删除指定的学生信息,若二叉排序树中存储指定学号的学生信息,则删除此学生信息,否则,输出“删除失败”提示信息。

3 程序设计

(1)数据设计:二叉搜索树 (2)编码

○1Main.java

package com.gkd;

import com.binaryNode.BinaryNode; import com.binaryTree.BinaryTree; import java.util.Scanner; public class Main {

public static void main(String[] args) { Scanner scanner = new Scanner(System.in); BinaryTree binarytree=new BinaryTree(); boolean iscontinue=true; while(iscontinue) { printOperate();

int userInput=scanner.nextInt(); switch(userInput) { case 1:

System.out.println(\请输入学生的学号:\ int stuNumber = scanner.nextInt(); System.out.println(\请输入学生的姓名:\ String stuName = scanner.next();

1

System.out.println(\请输入学生的数学成绩:\

double math=scanner.nextDouble();

System.out.println(\请输入学生的英语成绩:\

double english=scanner.nextDouble(); binarytree.insertNode(stuNumber,stuName,math,english); System.out.println(\目前学生人数为:\ break; case 2:

System.out.println(\你要删除哪位学生的信息(请输入该学生的学号)\

int deleteKey = scanner.nextInt(); boolean

isDeleteNode=binarytree.removeNode(deleteKey); if (isDeleteNode){

System.out.println(\成功删除学生信息\

}

else {

System.out.println(\删除学生信息失败\

}

break; case 3:

System.out.println(\请输入你要查询学生的学号\

int key = scanner.nextInt();

BinaryNode node=binarytree.find(key); if(node==null){ break; }

System.out.println(node); break;

2

case 4:

System.out.println(\您已退出学生信息管理系统退出系统\

iscontinue=false; break; case 5:

binarytree.traversal(); break; default:

System.out.println(\请输入正确数字!\ break; } } }

public static void printOperate(){

System.out.println(\ System.out.println(\请输入操作 *\ System.out.println(\存储学生信息 *\ System.out.println(\删除学生信息 *\ System.out.println(\查询学生信息 *\ System.out.println(\退出系统 *\ System.out.println(\查找所有学生信息 *\ System.out.println(\ } } ○2BinaryTree.java

package com.binaryTree;

import com.binaryNode.BinaryNode; public class BinaryTree{

private BinaryNode root;//根节点的引用 private int nodeAmount;//二叉树节点数量 public BinaryTree() { }

private BinaryNode find(int stuNumber,BinaryNode node) {

3

if (node == null) { return null; }

if (stuNumber

return find(stuNumber,node.getLeftChild()); }

else if (stuNumber>node.getStuNumber()) {

returnfind(stuNumber,node.getRightChild()); }

else {

return node; } }

public BinaryNode find(int stuNumber) { return find(stuNumber, root); }

public boolean insertNode(int stuNumber,String stuName, double math, double english){ if(root==null){ root = new

BinaryNode(stuNumber,stuName,math,english);

root.setParent(null); nodeAmount++; return true; }

BinaryNode currentNode = root;//当前节点 BinaryNode insertedNode = root; while(currentNode!=null){

if(stuNumber==currentNode.getStuNumber()){ System.out.println(\已有该学号\); return false; }

insertedNode = currentNode;

if(stuNumber

4