通过ArrayList实现对用户的增删改改查
用户类
package user_manage;
/**
* @author : 悠悠
* @create :2021/1/14 19:52
**/
public class User {
private String id;
private String username;
private String password;
public User(String id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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() {
}
}
接下来是实现类
package user_manage;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
/**
* @author : 悠悠
* @create :2021/1/14 19:54
**/
public class TestUser {
private Scanner sc = new Scanner(System.in);
private boolean flag;
private ArrayList<User> ts;
/*通过无参构造创建集合对象
* 添加用户对象到集合*/
public TestUser() {
ts = new ArrayList<>();
ts.add(new User("1", "admin", "admin"));
}
/*主启动类*/
public static void main(String[] args) {
new TestUser().menu();
}
/*主面板*/
public void showMenu() {
System.out.println("\t\t用户管理系统");
System.out.println("\t\t1.添加用户");
System.out.println("\t\t2.修改信息");
System.out.println("\t\t3.删除用户");
System.out.println("\t\t4.查看所有");
System.out.println("\t\t5.查询用户");
System.out.println("\t\t6.退出");
}
/*登录方法
* 通过键盘录入账号密码
* 与集合中的数据比较
* 如果相同就登录成功 否则一直循环
* */
private void login() {
System.out.println("请输入账号");
String username = sc.next();
System.out.println("请输入密码");
String password = sc.next();
for (int i = 0; i < ts.size(); i++) {
if (username.equals(ts.get(i).getUsername()) && password.equals(ts.get(i).getPassword())) {
System.out.println("登陆成功");
flag = true;
break;
}
}
}
/*选择指令
* 通过键盘录入
* 输入对应数字调用对应功能
* 输入其他数字会进入循环
* 重新输入*/
public void choose() {
System.out.println("请输入指令");
switch (sc.nextInt()) {
case 1:
add();
break;
case 2:
edit();
break;
case 3:
delete();
break;
case 4:
showAll();
break;
case 5:
showOne();
break;
case 6:
exitUser();
break;
default:
System.out.println("输入有误");
}
}
/*删除方法
* 找到对应下标 调用集合的remove方法
* 删除该下标对应的元素
* */
private void delete() {
System.out.println("请输入要查找的ID");
int id = findId(sc.next());
if (id != -1) {
ts.remove(id);
System.out.println("已删除");
} else {
System.out.println("查无此人");
}
}
/*退出
* 判断输入的第一位字符是不是y
* 不区分大小写
* 如果是的话 就退出程序
* 如果不是 就重新进入循环
* */
private void exitUser() {
System.out.println("确定要退出吗");
String choose = sc.next();
if (choose.substring(0, 1).equalsIgnoreCase("y")) {
System.exit(0);
System.out.println("欢迎下次登录");
}
}
/*添加方法
* 通过带参构造重新给对象赋值
* 之后添加到集合中
* */
private void add() {
System.out.println("请输入ID");
String id = sc.next();
System.out.println("请输入账号");
String username = sc.next();
System.out.println("请输入密码");
String password = sc.next();
int id1 = findId(id);
if (id1 == -1) {
System.out.println("该用户已存在");
} else {
ts.add(new User(id, username, password));
System.out.println("添加成功");
}
}
/*寻找下标
* 通过Arraylist的get()方法得到要找的id下标
* 提高代码复用性,
* */
private int findId(String id) {
int num = -1;
for (int i = 0; i < ts.size(); i++) {
if (id.equals(ts.get(i).getId())) {
num = i;
break;
} else {
return num;
}
}
return num;
}
/*、
* 修改用户
* 通过findId()方法找到对应下标
* 利用ArrayList中的独有的set方法修改该下标的信息
* */
private void edit() {
System.out.println("请输入要查找的ID");
int findId = findId(sc.next());
if (findId != -1) {
System.out.println("请输入ID");
String id = sc.next();
System.out.println("请输入账号");
String username = sc.next();
System.out.println("请输入密码");
String password = sc.next();
ts.set(Integer.valueOf(findId), new User(id, username, password));
System.out.println("修改成功");
} else {
System.out.println("查无此人");
}
}
/*
* 查看所有结果
* 通过增强for循环遍历集合
* 输出集合中的所有元素
* */
private void showAll() {
Collections.sort(ts, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
int x = Integer.valueOf(o1.getId()) - Integer.valueOf(o2.getId());
return x;
}
});
for (User u : ts
) {
System.out.println(u);
}
}
/*查询某个用户
* 首先会调用findId()方法得到要查找的下表
* 根据下表找到集合中对应的元素
* 然后输出结果*/
private void showOne() {
System.out.println("请输入要查找的ID");
int id = findId(sc.next());
if (id != -1) {
System.out.println(ts.get(id));
} else {
System.out.println("查无此人");
}
}
/*登录方法
如果返回的是true,
则说明登录成功 会调用showMenu()和choose()方法
* 来显示操作指令和功能面板
* 如果返回结果为false 则会重新登录 ,直到登陆成功为止
* */
private void menu() {
while (true) {
login();
if (flag) {
while (true) {
showMenu();
choose();
}
} else {
System.out.println("重新登录");
}
}
}
}