一、问题定义
管理各参赛队伍信息
二、问题分析
此问题与学生管理系统类型,主要内容包括参赛队伍的基本信息(包含参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师),以及实现增删查改等操作
初始菜单 欢迎语句及其功能,选择对应功能
队伍类:
属性:参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师
其中,赛事类别包括(1)软件应用与开发;(2)微课与教学辅助;(3)物联网应用;(4)大数据应用;(5)人工智能应用;(6)信息可视化设计;(7)数媒静态设计;(8)数媒动漫与短片;(9)数媒游戏与交互设计;(10)计算机音乐创作;(11)国际生“学汉语,写汉字”
添加功能
键盘录入信息,并且参赛队伍编号唯一
删除功能
键盘录入需要删除的队伍编号,若存在,则删除;若不存在,则提示后回到初始菜单。
修改功能
键盘录入需要修改的队伍编号,编号存在,继续录入,不存在,提示后回到初始菜单
查询功能
在下一部分单独进行叙述
基本框架
欢迎页面:
switch(choose){
case1:添加队伍
case2:删除队伍
case3:修改队伍
case4:查询队伍
}
首先,需要构建一个队伍类,用来存放相关的属性
然后从外部获取一个值,返回这个值并设置给对应属性(以id为例)
接下来开始创建管理页面,创建一个测试类,写出代码的主要部分(增删查改和索引方法)(索引方法是为了查找并返回内容,便于修改)
三、具体模块
getindex方法
getindex()函数,用于构造指定类型的数组。此函数还用于获取特定索引处的数组元素
实际代码演示:(此处以id为例)
//通过id获取索引方法
public static int getIndex1(ArrayList<Team> list, String id) {
//遍历集合
for (int i = 0; i < list.size(); i++) {
//得到每一个队伍对象
Team tem = list.get(i);
//得到每一个队伍对象的id
String tid = tem.getId();
//拿着集合中队伍id和需要查询的id进行比较,若一样返回索引
if (tid.equals(id)) {
return i;
}
}
//循环结束后未找到,说明不存在
return -1;
}
菜单页面
为更好的实现人机交互,便于用户的理解和使用,需要设计合理的菜单页面 。下面是菜单页面的例子需要设计一个while循环,保证每进行完一个功能后都可以返回菜单进行下一步操作。用Switch来进行快速的运行
loop:
while (true) {
System.out.println("---------------欢迎来到计算机设计大赛管理系统 --------------");
System.out.println("1:添加队伍");
System.out.println("2:删除队伍");
System.out.println("3:修改队伍");
System.out.println("4:查询队伍");
System.out.println("5:BST查找");
System.out.println("6:叫号系统");
System.out.println("7:退出系统");
System.out.println("---------------请输入您的选择--------------");
Scanner sc = new Scanner(System.in);
String choose = sc.next();//next比nextin容错率更高
switch (choose) {
case "1" -> addTeam(list);
case "2" -> deleteTeam(list);
case "3" -> updateTeam(list);
case "4" -> queryTeam(list);
case "5" -> bstSearch(list);
case "6" -> call(list);
case "7" -> {
System.out.println("退出系统");
break loop;//否则只会跳出switch或者使用停止虚拟机运行System.exit(status:0);
}
default -> System.out.println("没有这个选项!");
}
}
增加信息模块
首先利用空参构造创建一个队伍对象t,然后根据提示,输入队伍编号。用String来存储键盘输入的队伍编号,调用getindex1方法,将输入的id与已存在的id比较,若id已存在,输出"此id已经存在,请重新录入",若不存在,用t.setName等方法依次将信息录入。//添加队伍
public static void addTeam(ArrayList<Team> list) {
//利用空参构造先创建队伍对象
Team t = new Team();
Scanner sc = new Scanner(System.in);
String id = null;
while (true) {
System.out.println("请添加参赛队编号");
id = sc.next();
boolean flag = contains(list, id);
if (flag) {
//表示id已经存在需要重新录入
System.out.println("此id已经存在,请重新录入");
} else {
//表示id不存在,可以录入
t.setId(id);
break;
}
}
t.setId(id);
System.out.println("请添加参赛作品名");
String name = sc.next();
t.setName(name);
System.out.println("请添加参赛学校");
String school = sc.next();
t.setSchool(school);
System.out.println("请添加赛事类别");
String type = sc.next();
t.setType(type);
System.out.println("请添加参赛者");
String member = sc.next();
t.setMember(member);
System.out.println("请添加指导老师");
String teacher = sc.next();
t.setTeacher(teacher);
//把学生对象添加至集合中
list.add(t);
//提示
System.out.println("队伍信息添加成功");
删除信息模块
删除信息和增加信息相差不大,首先用String来存储键盘输入的队伍编号,调用getindex1方法,
对index进行判断,若大于等于0则表示存在,直接删除。如果是-1,不存在,结束方法回到菜单。
//删除队伍
public static void deleteTeam(ArrayList<Team> list) {
System.out.println("删除队伍");
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要删除的队伍编号");
String id = sc.next();
//查询id 在集合中的索引
int index = getIndex1(list, id);
//对index进行判断
//若大于等于0则表示存在,直接删除
//如果是-1,不存在,结束方法回到菜单
if (index >= 0) {
//若大于等于0则表示存在,直接删除
list.remove(index);
System.out.println("参赛编号为" + id + "的参赛队伍删除成功");
} else {
System.out.println("编号不存在,删除失败!");
}
}
修改信息模块
前面与增加信息内容一致,根据提示,输入队伍编号。用String来存储键盘输入的队伍编号,调用getindex1方法,将输入的id与已存在的id比较,若id不存在,输出"要修改的队伍编号" + id + "不存在,请重新输入",若存在,用t.setName等方法依次将信息录入。
//修改队伍 public static void updateTeam(ArrayList<Team> list) { Scanner sc = new Scanner(System.in); System.out.println("请输入需要修该的队伍的编号"); String id = sc.next(); int index = getIndex1(list, id); if (index == -1) { System.out.println("要修改的队伍编号" + id + "不存在,请重新输入"); return; } //当代码执行到这里,表示当前id存在 //获取需要修改对象 Team tem = list.get(index); //输入其它信息并修改 System.out.println("请输入要修改的参赛作品名"); String newName = sc.next(); tem.setName(newName); System.out.println("请输入要修改的参赛学校"); String newSchool = sc.next(); tem.setSchool(newSchool); System.out.println("请输入要修改的赛事类别"); String newType = sc.next(); tem.setType(newType); System.out.println("请输入要修改的参赛者"); String newMember = sc.next(); tem.setMember(newMember); System.out.println("请输入要修改的指导老师"); String newTeacher = sc.next(); tem.setTeacher(newTeacher); System.out.println("该参赛队伍信息已修改完成!"); }