本关任务:实现用户查询成绩的功能。
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现用户查询成绩的功能,具体要求如下:
当用户选择考试科目时,获取键盘输入,实现 5 的功能;
当键盘输入的值为 5,调用 ExamManage 类的 show(name,pwd,users),将所需参数传入该方法中;
show 方法携带 3 个参数,分别为:用户名称、用户密码、用户数组,该方法实现了查询该用户成绩的功能;
mathExam 方法中首先输出:“用户名称 英语成绩 数学成绩”,分隔符为 tab 键;
查找该用户的成绩信息,输出格式:“x1 x2 x3”,这些值依次为:用户名称、英语成绩、数学成绩,保留 1 位小数,用 tab 分隔符分隔。
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
测试输入:
1
sunfeng
123456
2
sunfeng
123456
2
a,a
1
a,c
5
4
预期输出:
线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
请输入你要注册的用户名:
请输入你要注册的密码:
线上考试系统
**********
1. 新用户注册
2. 用户登录
3. 退出系统
**********
请输入选择的操作:
请输入你的用户名:
请输入你的密码:
选择考试科目
**********
1. 英语
2. 数学
3. 返回上一级菜单
4. 退出系统
5. 查询考试成绩
**********
请输入选择的操作:
欢迎参加数学考试,开始答卷
1. 求1+1的结果为:
A. 1 B. 0 C. 2 D. 以上都不正确
2. 下列选项中,哪个不属于偶数?
A. 1 B. 2 C. 0 D. 4
请输入答案,答案之间用英文逗号分开
选择考试科目
**********
1. 英语
2. 数学
3. 返回上一级菜单
4. 退出系统
5. 查询考试成绩
**********
请输入选择的操作:
欢迎参加英语考试,开始答卷
1. 阿拉伯数字“1”用英语怎么说:
A. one B. oen C. two D. onel
2. 阿拉伯数字“2”用英语怎么说:
A. tow B. oen C. two D. town
请输入答案,答案之间用英文逗号分开
选择考试科目
**********
1. 英语
2. 数学
3. 返回上一级菜单
4. 退出系统
5. 查询考试成绩
**********
请输入选择的操作:
用户名称 英语成绩 数学成绩
sunfeng 10.0 0.0
选择考试科目
**********
1. 英语
2. 数学
3. 返回上一级菜单
4. 退出系统
5. 查询考试成绩
**********
请输入选择的操作:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
// 此类为整个通讯录的总控制,负责启动
public class MenuExam {
public static void main(String[] args) {
User[] users = new User[50]; // 创建一个对象数组,用于存放所有的用户信息
// 实例化 Scanner 对象
Scanner sc = new Scanner(System.in);
// 实例化 ExamManage 对象
ExamManage examManage = new ExamManage();
while (true) {
System.out.println("线上考试系统");
System.out.println("**********");
System.out.println("1. 新用户注册");
System.out.println("2. 用户登录");
System.out.println("3. 退出系统");
System.out.println("**********");
System.out.println("请输入选择的操作:");
// 获取键盘输入
String str = sc.next();
// 实现注册功能
if ("1".equals(str)) {
// 获取键盘输入的用户名
System.out.println("请输入你要注册的用户名:");
String name = sc.next();
// 获取键盘输入的密码
System.out.println("请输入你要注册的密码:");
String pwd = sc.next();
// 将参数传入 register 方法中
examManage.register(name,pwd,users);
} else if ("2".equals(str)) {
System.out.println("请输入你的用户名:");
String name = sc.next();
System.out.println("请输入你的密码:");
String pwd = sc.next();
boolean flag = examManage.login(name, pwd, users);
if (flag){
while (true) {
System.out.println("选择考试科目");
System.out.println("**********");
System.out.println("1. 英语");
System.out.println("2. 数学");
System.out.println("3. 返回上一级菜单");
System.out.println("4. 退出系统");
System.out.println("5. 查询考试成绩");
System.out.println("**********");
System.out.println("请输入选择的操作:");
// 获取键盘输入
String s = sc.next();
if ("1".equals(s)) {
System.out.println("欢迎参加英语考试,开始答卷");
// 读取文件内容并打印出来
try {
BufferedReader in = new BufferedReader(new FileReader("/root/english.txt"));
String text;
while ((text = in.readLine()) != null) {
System.out.println(text);
}
System.out.println("请输入答案,答案之间用英文逗号分开");
// 获取键盘输入的答案,并将其转化为大写字母
String answers = sc.next().toUpperCase();
examManage.engExam(answers,name,pwd,users);
} catch (IOException e) {
e.printStackTrace();
}
}else if ("2".equals(s)){
System.out.println("欢迎参加数学考试,开始答卷");
// 读取文件内容并打印出来
try {
BufferedReader in = new BufferedReader(new FileReader("/root/math.txt"));
String text;
while ((text = in.readLine()) != null) {
System.out.println(text);
}
System.out.println("请输入答案,答案之间用英文逗号分开");
// 获取键盘输入的答案,并将其转化为大写字母
String answers = sc.next().toUpperCase();
examManage.mathExam(answers,name,pwd,users);
} catch (IOException e) {
e.printStackTrace();
}
}else if ("3".equals(s)){
break;
}else if ("4".equals(s)){
System.exit(0);
}else if ("5".equals(s)){
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 调用 show 方法,实现查询用户的功能
examManage.show(name,pwd,users);
/********** End **********/
}
}
}else {
System.out.println("用户名或密码错误,登录失败!");
}
} else if ("3".equals(str)) {
// 退出操作
System.out.println("退出成功!");
break;
} else {
System.out.println("选择错误!");
}
}
}
}