登陆管理系统
- 通过
IO
文件流,实现了多个用户注册登录,修改密码的基本功能,暂记录于txt文本中,并实现txt文本的删除行,替换行(思路:使用另一个txt文本暂存,通过再次读取,覆盖)
目录截图
UserDao
具体实现层
-
含有四个方法:分别实现登录,注册,登陆后的修改密码与注销
-
注册
public boolean userRegin(String userName, String pwd) throws IOException {//用户注册
boolean flag = false, tem = false;//tem用于判读那是否注册,flag用于判断是否注册成功
BufferedReader br = new BufferedReader(new FileReader("src/Homework/HomeWork01_IO/login.txt"));
String line = null;//io读入输出字符串
while ((line = br.readLine()) != null) {
if (line.equals(userName)) tem = true;
}
if (tem) {
System.out.println("用户名已经注册..");
br.close();
} else {
BufferedWriter bw = new BufferedWriter(new FileWriter("src/Homework/HomeWork01_IO/login.txt", true));
Scanner scanner = new Scanner(System.in);
System.out.println("请再确认一次你的密码...");//校验密码
String s = scanner.nextLine();
if (s.equals(pwd)) {//校验成功就返回真
flag = true;
}
if (flag) {
bw.write(userName + "\n");
bw.write(pwd + "\n");
}
bw.close();
}
return flag;
}
- 登录
public boolean userLogin(String userName, String pwd) throws IOException {//用户登录
boolean flag = false;//用于判断是否注册成功
BufferedReader br = new BufferedReader(new FileReader("src/Homework/HomeWork01_IO/login.txt"));
String line = null;
while ((line = br.readLine()) != null) {
if (line.equals(userName) && br.readLine().equals(pwd)) flag = true;
}
br.close();
if (flag) System.out.println("登录成功..");
else System.out.println("登录失败..");
return flag;
}
- 修改密码
public boolean changePwd(String userName, String oldPwd, String newPwd) throws IOException {//修改密码
boolean flag = false;
BufferedReader br = new BufferedReader(new FileReader("src/Homework/HomeWork01_IO/login.txt"));
String line = null;
Scanner scanner = new Scanner(System.in);
StringBuilder sb = new StringBuilder();//拼接字符串
BufferedWriter bw = new BufferedWriter(new FileWriter("src/Homework/HomeWork01_IO/login1.txt"));
//修改密码需要一个地方暂存修改的值,通过字符串拼接
while ((line = br.readLine()) != null) {
if (line.equals(userName)) {
sb.append(userName + "\n");
line =br.readLine();
if (line.equals(oldPwd)) {//如果校验的原来密码不正确那么就直接将拼接原来的密码
System.out.println("请再次输入新密码确认..");
String s = scanner.nextLine();
if (s.trim().equals(newPwd)) {//把原来的跳过,加入新密码
sb.append(newPwd + "\n");
flag = true;
}
} else sb.append(line + "\n");
}else sb.append(line+"\n");
}
bw.write(String.valueOf(sb));
bw.flush();
bw.close();
br.close();
//新曾两个流,分别读入修改的东西,和写入原来的地方
BufferedReader br1 = new BufferedReader(new FileReader("src/Homework/HomeWork01_IO/login1.txt"));
BufferedWriter bw1 = new BufferedWriter(new FileWriter("src/Homework/HomeWork01_IO/login.txt"));
String line1 = null;
while ((line1 = br1.readLine()) != null) {
bw1.write(line1 + "\n");
}
bw1.flush();
bw1.close();
br1.close();
return flag;
}
- 注销
public boolean withDraw(String userName) throws IOException {//用户注销
boolean flag = false;
Scanner scanner = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
System.out.println("请确认是否要注销你的用户Y/N");
BufferedReader br = new BufferedReader(new FileReader("src/Homework/HomeWork01_IO/login.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("src/Homework/HomeWork01_IO/login1.txt"));
if (scanner.next().toUpperCase().charAt(0) == 'Y') {//如果输入y就删除
String line = null;
while ((line = br.readLine()) != null) {
if (line.equals(userName)) {//还是通过拼接字符串
br.readLine();//上面是用户名,直接跳过密码
continue;
} else sb.append(line + "\n");
}
flag = true;
System.out.println("删除成功..");
} else {
System.out.println("你已取消注销..");
}
bw.write(String.valueOf(sb));
bw.flush();
br.close();
bw.close();
BufferedReader br1 = new BufferedReader(new FileReader("src/Homework/HomeWork01_IO/login1.txt"));
BufferedWriter bw1 = new BufferedWriter(new FileWriter("src/Homework/HomeWork01_IO/login.txt"));
String line1 = null;
while ((line1 = br1.readLine()) != null) {
bw1.write(line1 + "\n");
}
bw1.flush();
bw1.close();
br1.close();
return flag;
}
UsersServlet
调用层
public class UsersServlet {
public static void main(String[] args) throws IOException {
UsersServlet usersServlet = new UsersServlet();
usersServlet.show();
}
public void show() throws IOException {
boolean tem1 = true, tem2 = true;
UserDao user = new UserDao();
while (tem1) {
System.out.println("---登陆管理系统---");
System.out.println("请选择登录/注册");
System.out.println("1.登录..\t2.注册..\t3.退出..");
Scanner scanner = new Scanner(System.in);
int t1 = scanner.nextInt();
switch (t1) {
case 1: {
System.out.println("请输入你的用户名");
String userName = scanner.next();
System.out.println("请输入你的密码");
String pwd = scanner.next();
boolean flag = user.userLogin(userName, pwd);
if (flag) {
tem2 =true;
while (tem2) {
System.out.println("登录成功,你可以选择你的操作\t1.修改密码\t2.注销\t3.返回上一层");
int t2 = scanner.nextInt();
switch (t2) {
case 1: {
System.out.println("请输入你的原密码..");
String oldPwd = scanner.next();
System.out.println("请输入你的新密码..");
String newPwd = scanner.next();
boolean flag02 = user.changePwd(userName, oldPwd, newPwd);
if (flag02) System.out.println("修改密码成功");
else System.out.println("修改失败..");
break;
}
case 2: {
boolean b = user.withDraw(userName);
if (b) System.out.println("真的要离开了哦..");
tem2 = false;
break;
}
case 3: {
tem2 = false;
break;
}
}
}
}
break;
}
case 2: {
System.out.println("请输入你的用户名");
String userName = scanner.next();
System.out.println("请输入你的密码");
String pwd = scanner.next();
boolean flag = user.userRegin(userName, pwd);
if (!flag) System.out.println("注册失败");
else System.out.println("恭喜你,注册成功..");
break;
}
case 3: {
tem1 = false;
break;
}
}
}
}
}