- 问题定义
管理各参赛队的基本信息
- 问题分析
【问题描述】
本次课程设计要求协助中国大学生计算机设计大赛江苏省组委会,设计一款赛事管理系统,实现赛务相关的数据管理及信息服务,该系统能够为省级赛事管理解决以下问题:
(1)能够管理各参赛队的基本信息(包含参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师),赛事类别共11项(参见大赛官网jsjds.blcu.edu.cn);包括增加、删除、修改参赛队伍的信息。
(2)从team.txt中读取参赛队伍的基本信息,实现基于二叉排序树的查找。根据提示输入参赛队编号,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和指导老师信息),同时,输出查找成功时的平均查找长度ASL;否则,输出“查找失败!”。
- 概要设计
数据结构设计:
结点信息的数据结构:类——EveMaSystem用于存储各参赛队的基本信息,如参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师,该类还提供了相应的setter和getter。
(1)创建存储各参赛信息的EveMaSystem类
public class EveMaSystem {
private String ID;
private String work;
private String school;
private String type;
private String competitor;
private String teacher;
public EveMaSystem(String ID, String work, String school, String type, String competitor, String teacher) {
this.ID = ID;
this.work = work;
this.school = school;
this.type = type;
this.competitor = competitor;
this.teacher = teacher;
}
(2)team.txt文档的读取
private static void Find() throws IOException {
String filePath = "team.txt";
BufferedReader buf = new BufferedReader(new FileReader(filePath));
String line;
//按行读取文件,当返回null表示文件读取完毕
while ((line = buf.readLine()) != null) {
System.out.println(line);
}
//关闭流(本身应该关闭FileReader 但是实际上只需要关闭BufferedReader)
buf.close();//底层会自动关闭节点流
}
(3)在文档中添加信息
private static void Add() {
EveMaSystem eveMaSystem = new EveMaSystem();
Scanner sc = new Scanner(System.in);
System.out.println("请输入参赛队编号:");
String ID = sc.next();
eveMaSystem.setID(ID);
System.out.println("请输入参赛作品名称:");
String work = sc.next();
eveMaSystem.setWork(work);
System.out.println("请输入参赛学校:");
String school = sc.next();
eveMaSystem.setSchool(school);
System.out.println("请输入赛事类别:");
String type = sc.next();
eveMaSystem.setType(type);
System.out.println("请输入参赛者:");
String competitor = sc.next();
eveMaSystem.setCompetitor(competitor);
System.out.println("请输入指导老师:");
String teacher = sc.next();
eveMaSystem.setTeacher(teacher);
try {
// 创建一个文件对象
File file = new File("team.txt");
// 创建文件输出流
FileOutputStream fos = new FileOutputStream(file);
//创建对象输入流
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(eveMaSystem);
// 关闭输出流
oos.close();
fos.close();
System.out.println("数据写入成功!");
} catch (IOException e) {
e.printStackTrace();
}
}