在四则运算part1的基础上,增加登陆模块(至少需要2个用户,可以不实现注册功能),和记录具体某位用户的四则运算历史得分(需要有序号,第几次,得分时间),需要进行持久化存储(IO文件存储,或者数据库存储)用java
时间: 2024-03-05 11:51:12 浏览: 49
四则运算用java实现
4星 · 用户满意度95%
好的,这是一个相对复杂的题目,需要用到一些 Java 的基础知识和编程技巧。我会尽力解答,希望能对你有所帮助。
首先,我们需要设计一个 User 类来表示用户,其中包含用户名和密码两个属性。我们可以使用 Map 来模拟用户数据表,其中键是用户名,值是 User 对象。
```java
class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
Map<String, User> users = new HashMap<>();
users.put("user1", new User("user1", "password1"));
users.put("user2", new User("user2", "password2"));
```
接下来,我们需要设计一个 Score 类来表示某位用户的四则运算历史得分,其中包含序号、得分、时间三个属性。我们可以使用 List 来存储某位用户的得分记录。
```java
class Score {
private int id;
private int score;
private Date time;
public Score(int id, int score, Date time) {
this.id = id;
this.score = score;
this.time = time;
}
public int getId() {
return id;
}
public int getScore() {
return score;
}
public Date getTime() {
return time;
}
}
List<Score> scores = new ArrayList<>();
```
然后,我们需要编写一个登陆模块,让用户输入用户名和密码,来验证用户身份。如果验证成功,就可以开始进行四则运算。
```java
Scanner scanner = new Scanner(System.in);
System.out.print("请输入用户名:");
String username = scanner.nextLine();
System.out.print("请输入密码:");
String password = scanner.nextLine();
User user = users.get(username);
if (user == null || !user.getPassword().equals(password)) {
System.out.println("用户名或密码错误");
return;
}
System.out.println("登陆成功");
```
最后,我们需要编写一个四则运算模块,让用户可以进行加减乘除的运算。每次运算结束后,需要记录得分和时间,并将得分记录存储到某位用户的得分列表中。
```java
Random random = new Random();
int id = 0;
int totalScore = 0;
while (true) {
int a = random.nextInt(100);
int b = random.nextInt(100);
int operator = random.nextInt(4);
int result = 0;
String operatorStr = "";
switch (operator) {
case 0:
result = a + b;
operatorStr = "+";
break;
case 1:
result = a - b;
operatorStr = "-";
break;
case 2:
result = a * b;
operatorStr = "*";
break;
case 3:
result = a / b;
operatorStr = "/";
break;
}
System.out.print("请计算 " + a + operatorStr + b + " = ");
int answer = scanner.nextInt();
if (answer == result) {
totalScore++;
scores.add(new Score(++id, totalScore, new Date()));
System.out.println("回答正确,当前得分:" + totalScore);
} else {
System.out.println("回答错误,正确答案是:" + result);
break;
}
}
System.out.println("游戏结束,您的得分是:" + totalScore);
// 将得分记录存储到文件中
try {
FileWriter writer = new FileWriter(user.getUsername() + ".txt");
for (Score score : scores) {
writer.write(score.getId() + "," + score.getScore() + "," + score.getTime().getTime() + "\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
```
上面的代码中,我们使用 FileWriter 将某位用户的得分记录存储到文件中。每一行记录包含序号、得分和时间三个字段,使用逗号分隔。
以上就是基本的实现思路,你可以根据自己的需求进行修改和扩展。如果你想使用数据库来存储数据,可以使用 JDBC 或者 ORM 框架来简化操作。如果你想实现注册功能,可以在 User 类中添加一个构造方法,并在登陆模块中添加注册逻辑。
阅读全文