Controller
import java.util.Scanner;/*** 视图层* 完成用户登录,注册,修改,删除功能*/
public class Controller {/*** 字符输入*/private static Scanner scanner = new Scanner(System.in);/*** 业务处理层*/private static Service service = new Service();public static void main(String[] args) {boolean flag = true;while (flag) {try {System.out.println("---1.登录--2.注册---3.修改---4.删除---5.查看用户信息---6.退出");int number = scanner.nextInt();switch (number) {//1.登录case 1:service.longUser();break;//2.注册case 2:service.newUser();break;//3.修改case 3:service.updateUser();break;//4.删除case 4:service.deleteUser();break;//5.查看用户信息case 5:service.forEachUser();break;//6.退出case 6:flag = false;break;default:System.out.println("输入错误");break;}} catch (Exception e) {scanner = new Scanner(System.in);System.out.println("输入错误");}}System.out.println("----谢谢使用再见!----");}}
Service
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Scanner;class Service {private static final File file = new File("operate/src/operate418/silence/username.txt");private static final Properties properties = new Properties();private static final Scanner scanner = new Scanner(System.in);/*** 注册*/void newUser() throws IOException {listUser();//读取文件里的用户信息System.out.println("-----注册用户----");System.out.println("请输入用户名:");String username = scanner.nextLine();//这里判断是否有重复数据if (properties.containsKey(username)) {System.out.println("用户名:" + username + " 重复");return;}//输入两次密码,并判断是否一致String password = ifPassword();if (password == null) {System.out.println("两次输入的密码不一致");return;}//如果;一直,存储到数据文件properties.put(username, password);properties.store(new FileWriter(file), null);System.out.println("---注册成功----");}/*** 登录*/void longUser() {//获取用户信息listUser();User user = getUser();if (properties.containsKey(user.getUsername())) {String password = (String) properties.get(user.getUsername());if (user.getPassword().equals(password)) {System.out.println("----登录成功----");return;}}System.out.println("----用户名或密码错误,请重新输入----");}/*** 修改*/void updateUser() throws IOException {listUser();System.out.println("请输入用户名:");String username = scanner.nextLine();if (!properties.containsKey(username)) {System.out.println("----该用户不存在----");return;}//输入两次密码,并判断是否一致String password = ifPassword();if (password == null) {System.out.println("两次输入的密码不一致");return;}//判断密码是否正确,密码正确就存储if (!properties.get(username).equals(password)) {System.out.println("密码不正确,修改失败");return;}//密码正确,取新密码System.out.println("请输入新密码:");String newPassword = scanner.nextLine();//存储数据到文件,采用覆盖式存储properties.put(username, newPassword);properties.store(new FileWriter(file), null);}/*** 获取用户名和密码** @return User*/private static User getUser() {System.out.println("请输入用户名:");String username = scanner.nextLine();System.out.println("请输入密码:");String password = scanner.nextLine();return new User(username, password);}/*** @return 两次密码一致返回密码 不一致返回null*/private static String ifPassword() {System.out.println(" 请输入密码:");String password = scanner.nextLine();System.out.println("请确认密码:");String newPassword = scanner.nextLine();//这里判断两次密码是否一致if (password.equals(newPassword)) {return password;}return null;}/*** 遍历用户*/void forEachUser() {listUser();properties.forEach((key, value) -> System.out.println("用户名:" + key + " 密码:" + value));System.out.println("--------当前共有" + properties.size() + "个用户--------");}/*** 删除*/void deleteUser() throws IOException {//获取user对象listUser();User user = getUser();//判断是否存在这个用户if (properties.containsKey(user.getUsername())) {//如果用户名存在,判断密码是否正确String password = (String) properties.get(user.getUsername());if (password.equals(user.getPassword())) {//用户名和密码都正确 存储数据到文件,采用覆盖式存储properties.remove(user.getUsername());System.out.println(properties);properties.store(new FileWriter(file), null);System.out.println("删除用户:" + user.getUsername() + "成功");} else {System.out.println("用户名或密码错误");}} else {System.out.println("用户名或密码错误");}}/*** 从配置文件读取用户信息*/private void listUser() {//如果没有这个文件,不读取if (file.exists() && file.canRead()) {try (FileReader reader = new FileReader(file)) {properties.load(reader);return;} catch (IOException e) {e.printStackTrace();}}System.out.println("配置文件不存在,或不是可读的文件,请检查文件路径,程序退出!!!");System.exit(1);}
}
User
public class User {private String username;private String password;@Overridepublic String toString() {return "用户名:" + username + " 密码:" + password;}public User() {}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(String username, String password) {this.username = username;this.password = password;}
}