提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
题目:
任务:实现用户查询成绩的功能。
要求:
-
当用户选择考试科目时,获取键盘输入,实现 5 的功能;
-
当键盘输入的值为 5,调用 ExamManage 类的 show(name,pwd,users),将所需参数传入该方法中;
-
show 方法携带 3 个参数,分别为:用户名称、用户密码、用户数组,该方法实现了查询该用户成绩的功能;
-
mathExam 方法中首先输出:“用户名称 英语成绩 数学成绩”,分隔符为 tab 键;
-
查找该用户的成绩信息,输出格式:“x1 x2 x3”,这些值依次为:用户名称、英语成绩、数学成绩,保留 1 位小数,用 tab 分隔符分隔。
项目、包路径(文件位置)
提示:java项目名为step,包为step5,包含3个java文件、两个txt文件。(前面几个包都不用看,也不用建,是我用来测试的)
代码:
User.java文件(属性类)
package step5;
public class User {
private String name; // 用户姓名
private String pwd; // 密码
private double math; // 数学成绩
private double english; // 英语成绩
// 无参构造
public User() {
}
// 有参构造
public User(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
// 设置和获取用户属性信息
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public double getMath() {
return math;
}
public void setMath(double math) {
this.math = math;
}
public double getEnglish() {
return english;
}
public void setEnglish(double english) {
this.english = english;
}
}
ExamManage.java文件(方法类)
package step5;
public class ExamManage {
/**
* 功能:注册新用户
* 参数 name 用户名
* 参数 pwd 密码
* 参数 users 用户数组
*/
public void register(String name, String pwd, User[] users) {
// 判断用户名是否规范
if (name.matches("^[^0-9][\\w_]{5,9}$")){
// 判断用户名是否已存在
if (!findUser(name,users)){
// 判断密码是否规范
if (pwd.matches("^[\\w_]{6,10}$")){
User user = new User();
user.setName(name);
user.setPwd(pwd);
// 将对象放入对象数组中
for (int i = 0; i < users.length; i++) {
if (users[i] == null) {
users[i] = user;
break;
}
}
}else {
System.out.println("密码不合规范!");
}
}else {
System.out.println("用户名已存在!");
}
}else {
System.out.println("用户名不合规范!");
}
}
public boolean findUser(String name,User[] users){
boolean flag = false;
// 根据用户名查找用户数组中是否已存在该用户,
for (int i = 0; i < users.length; i++) {
if (users[i] != null && name.equals(users[i].getName())) {
flag = true;
break;
}
}
return flag;
}
/**
* 功能:用户登录
* 参数 name 用户名
* 参数 pwd 密码
* 参数 users 用户数组
* 返回值 boolean
*/
public boolean login(String name, String pwd, User[] users) {
// 查询用户名和密码是否正确
boolean flag = false;
for (User user : users) {
if (user != null && name.equals(user.getName()) && pwd.equals(user.getPwd())) {
flag = true;
break;
}
}
return flag;
}
/**
* 功能:模拟英语考试,计算得分
* 参数 name 用户名
* 参数 pwd 密码
* 参数 users 用户数组
* 参数 answers 用户试卷答案
*/
public void engExam(String answers, String name, String pwd, User[] users) {
// 切分用户的答案
double score = 0.0;
String[] split = answers.split(",");
// 对比正确答案,计算用户分数
if ("A".equals(split[0])){
score += 5;
}
if ("C".equals(split[1])){
score += 5;
}
// 最后所得分数为该用户的英语成绩
for (User z : users) {
if (z != null && name.equals(z.getName())&& pwd.equals(z.getPwd())) {
z.setEnglish(score);
break;
}
}
}
/**
* 功能:模拟数学考试,计算得分
* 参数 name 用户名
* 参数 pwd 密码
* 参数 users 用户数组
* 参数 answers 用户试卷答案
*/
public void mathExam(String answers, String name, String pwd, User[] users) {
// 切分用户的答案
double score = 0.0;
String[] split = answers.split(",");
// 对比正确答案,计算用户分数
if ("C".equals(split[0])){
score += 5;
}
if ("A".equals(split[1])){
score += 5;
}
// 最后所得分数为该用户的英语成绩
for (User z : users) {
if (z != null && name.equals(z.getName())&& pwd.equals(z.getPwd())) {
z.setEnglish(score);
break;
}
}
}
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
/**
* 功能:查询用户成绩
* 参数 name 用户名
* 参数 pwd 密码
* 参数 users 用户数组
*/
public void show(String name, String pwd, User[] users) {
System.out.println("用户名称\t英语成绩\t数学成绩");
// 查询用户的英语和数学得分
for (User z : users) {
if (z != null && name.equals(z.getName())&& pwd.equals(z.getPwd())) {
System.out.printf("%s\t%.1f\t%.1f\n",name,z.getEnglish(),z.getMath());
break;
}
}
}
/********** End **********/
}
MenuExam.java文件(测试类)
package step5;//有注册、登入、英语考试、数学考试、成绩查询、退出系统;
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("E:/java/step/src/step5/english.txt"));//路径为放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("E:/java/step/src/step5/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.out.println("退出系统成功!");
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("选择错误!");
}
}
}
}
english.txt文件
1. 求1+1的结果为:
A. 1 B. 0 C. 2 D. 以上都不正确
2. 下列选项中,哪个不属于偶数?
A. 1 B. 2 C. 0 D. 4
math.txt文件
1. 求1+1的结果为:
A. 1 B. 0 C. 2 D. 以上都不正确
2. 下列选项中,哪个不属于偶数?
A. 1 B. 2 C. 0 D. 4
效果截图:
提示:先注册,再登入;用户名和密码要有数字和字母,其他也行。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了简易考试系统,实现用户英语、数学考试,查询成绩的功能。