看到了你这个题目,奇思妙想是学习的动力源泉,很棒,我来说书我的看法。
1.根据你的想法有两个关键数据维度 学号 和 是否交作业,所以数据结构适合使用 key/value 形式,不适合使用数组
2.既然定位为一个管理系统,可以扩展一下让它有基础管理的功能
花点时间实现了一个供你参考参考,还可以扩展下功能,你可以尝试下:
1.动态录入学号
2.录入错误的数据还原状态
3.记录数据到硬盘(避免每次重启应用信息就丢了,可以把数据写入到一个文本文件里,每次程序启动读取文件并还原)
public class Demo7 {
private static final Map<String, Boolean> DATA_MAP = new LinkedHashMap<>();
private static final Scanner SCANNER = new Scanner(System.in);
private static final String END_FLAG = "exit";
public static void main(String[] args) {
//初始化数据
init();
//执行功能
while (true) {
//打印菜单
System.out.println("功能列表:");
System.out.println("1.初始化数据");
System.out.println("2.录入已交作业学生");
System.out.println("3.打印未交作业学生");
System.out.println("4.退出");
System.out.print("请选择功能:");
String next = SCANNER.next();
//检查输入
if (!next.matches("\\d")) {
System.out.println("输入有误,请输入正确的选择~");
continue;
}
//选择功能
int nextInput = Integer.parseInt(next);
switch (nextInput) {
case 1:
init();
break;
case 2:
inputData();
break;
case 3:
printData();
break;
case 4:
SCANNER.close();
System.exit(0);
default:
System.out.println("功能暂未开发哦,请输入正确的选择~");
}
}
}
/**
* 初始化数据
*/
public static void init() {
//清空已有数据
DATA_MAP.clear();
//初始化学号,根据需要修改,
//TODO 此处也可以改成输入学号的形式
for (int i = 1; i < 50; i++) {
DATA_MAP.put(i + "", false);
}
}
/**
* 录入数据
*/
public static void inputData() {
while (true) {
System.out.print("请输入:");
String next = SCANNER.next();
//exit退出
if (END_FLAG.equals(next)) {
break;
}
Boolean flag = DATA_MAP.get(next);
//学号不存在
if (flag == null) {
System.out.println("学号 " + next + " 未找到!");
continue;
}
//学号已标记,提示
if (flag == true) {
System.out.println("学号 " + next + " 已标记过交了作业哦");
continue;
}
//学号未标记,修改状态
DATA_MAP.put(next, true);
System.out.println("学号 " + next + " 成功标记为已交作业");
}
}
/**
* 打印数据
*/
public static void printData() {
if (DATA_MAP.isEmpty()) {
System.out.println("数据为空!");
}
System.out.println("未交作业的学生列表:");
//循环打印未交作业的学号
int i = 1;
for (String sno : DATA_MAP.keySet()) {
if (!DATA_MAP.get(sno)) {
System.out.print(sno + "\t");
}
//每行显示10个学号 超过换行
if (i % 10 == 0) {
System.out.println();
}
i++;
}
//最后换行
System.out.println();
}
}
运行结果如下:
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:3
未交作业的学生列表:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:2
请输入:1
学号 1 成功标记为已交作业
请输入:2
学号 2 成功标记为已交作业
请输入:1
学号 1 已标记过交了作业哦
请输入:exit
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:3
未交作业的学生列表:
3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:aaa
输入有误,请输入正确的选择~
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:4
Process finished with exit code 0 |