管理系统
我设计了一个简单的管理系统,可以实现登录,修改密码,用户信息录入,查看,权限分配等功能.
简介
某航空公司在其航班到达的不同的国家的不同地方设有不同的办事处,这个项目要求开发一个自动化软件系统,该系统将提供给这些办事处的管理者(role=1)和普通用户(role=0)用于管理航班信息。根据以上描述,要求实现系统的用户模块和办事处模块,包含以下功能(注:系统存在一个默认管理员 admin/admin123):
- 用户模块:
- 用户添加
- 密码修改
- 个人信息查看
- 账号状态修改(禁用0、启用1)
- 用户登录(被禁用账号无法登录并提示友好的消息)
- 修改用户角色(设置取消管理员)
- 用户列表
- 删除用户
- 办事处模块
- 办事处添加
- 办事处列表
- 查询指定办事处的所有员工
注意:管理员具备以上所有功能,普通用户只有密码修改和个人信息查看功能。
代码
package com.edu.hubu.test;
public class User {
private int id;
private String username = "admin";
private String password = "admin123";
private int age;
private int role = 1;
private String email;
private int officeID;
private int status = 1;
public User() {
}
public int getId() {
return id;
}
public void setId(int 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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getOfficeID() {
return officeID;
}
public void setOfficeID(int officeID) {
this.officeID = officeID;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public User(int id, String username, String password, int age, int role, String email, int officeID, int status) {
super();
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.role = role;
this.email = email;
this.officeID = officeID;
this.status = status;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", age=" + age + ", role="
+ role + ", email=" + email + ", officeID=" + officeID + ", status=" + status + "]";
}
}
package com.edu.hubu.test;
public class Office {
private int id;
private String officeName;
public Office() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getOfficeName() {
return officeName;
}
public void setOfficeName(String officeName) {
this.officeName = officeName;
}
public Office(int id, String officeName) {
super();
this.id = id;
this.officeName = officeName;
}
@Override
public String toString() {
return "Office [id=" + id + ", officeName=" + officeName + "]";
}
}
package com.edu.hubu.test;
import java.util.ArrayList;
public class UserManage{
static ArrayList<User> list = new ArrayList<>();
public ArrayList<User> findAll() {
return list;
}
public void add(User c) {
list.add(c);
}
public User refer(int id) {
User comm = null;
for (User c : list) {
if (c.getId() == id) {
comm = c;
break;
}
}
return comm;
}
public User refer1(String id) {
User comm = null;
for (User c : list) {
if (id.equals(c.getUsername())) {
comm = c;
break;
}
}
return comm;
}
public boolean delete(int id) {
User comm = refer(id);
if (comm != null) {
return list.remove(comm);
}
return false;
}
public boolean modifyStatus(String id, int status) {
User comm = refer1(id);
if (comm != null) {
comm.setStatus(status);
return true;
}
return false;
}
public boolean modifyRole(int id, int role) {
User comm = refer(id);
if (comm != null) {
comm.setRole(role);
return true;
}
return false;
}
}
package com.edu.hubu.test;
import java.util.ArrayList;
public class OfficeManage {
static ArrayList<Office> list = new ArrayList<>();
public ArrayList<Office> findAll() {
return list;
}
public void add(Office c) {
list.add(c);
}
public ArrayList<Office> find(int id) {
ArrayList<Office> comm = new ArrayList<>();
for (Office c : list) {
if (c.getId() == id) {
comm.add(c);
}
}
return comm;
}
public Office refer(int id) {
Office comm = null;
for (Office c : list) {
if (c.getId() == id) {
comm = c;
break;
}
}
return comm;
}
}
package com.edu.hubu.test;
import java.util.ArrayList;
import java.util.Scanner;
public class Test {
private Scanner sc;
private UserManage em = new UserManage();
private OfficeManage om = new OfficeManage();
private User m = new User();
public void menu1() {
msg("自动化系统");
msg("[1]用户添加");
msg("[2]密码修改");
msg("[3]个人信息查看");
msg("[4]账号状态修改");
msg("[5]修改用户角色");
msg("[6]用户列表");
msg("[7]删除用户");
msg("[8]办事处添加");
msg("[9]办事处列表");
msg("[10]查询指定办事处的所有员工");
msg("[11]切换账号");
msg("[0]退出系统");
msg("请输入操作指令");
start1();
}
public void menu2() {
msg("自动化系统");
msg("[1]密码修改");
msg("[2]个人信息查看");
msg("[3]切换账号");
msg("[0]退出系统");
msg("请输入操作指令");
start2();
}
private void start2() {
sc = new Scanner(System.in);
int i = sc.nextInt();
switch (i) {
case 1:
modifypassword();
break;
case 2:
add();
break;
case 3:
login();
break;
case 0:
exit();
break;
default:
msg("请输入正确的操作指令!!!");
break;
}
menu2();
}
public void login2() {
msg("登录系统");
msg("[1]登录");
msg("[2]退出");
msg("请输入操作指令");
login1();
}
public void login1() {
sc = new Scanner(System.in);
int i = sc.nextInt();
switch (i) {
case 1:
login();
break;
case 2:
exit();
break;
default:
msg("请输入正确的操作指令!!!");
break;
}
login2();
}
public void start1() {
sc = new Scanner(System.in);
int i = sc.nextInt();
switch (i) {
case 1:
add();
break;
case 2:
modifypassword();
break;
case 3:
queryById();
break;
case 4:
update();
break;
case 5:
update2();
break;
case 6:
list();
break;
case 7:
delete();
break;
case 8:
addO();
break;
case 9:
listO();
break;
case 10:
findO();
break;
case 11:
login();
break;
case 0:
exit();
break;
default:
msg("请输入正确的操作指令!!!");
break;
}
menu1();
}
private void findO() {
sc = new Scanner(System.in);
msg("请输入需要查询的办事处ID:");
int p = sc.nextInt();
ArrayList<Office> list = om.find(p);
msg("id 办公室名");
if (list.size() > 0) {
for (Office e : list) {
msg(e);
}
}
}
private void listO() {
msg("id 办公室名");
for (Office e : om.findAll()) {
msg(e);
}
}
private void addO() {
msg("请输入办事处信息(按以下格式:id 办公室名");
sc = new Scanner(System.in);
String s = sc.nextLine();
/** 根据" "截取办事处信息 */
String[] info = s.split(" ");
if (om.refer(Integer.parseInt(info[0])) != null) {
msg("该ID用户已存在,请重新输入");
addO();
return;
} else {
Office e = new Office(Integer.parseInt(info[0]), info[1]);
om.add(e);
msg("添加成功");
}
}
private void update2() {
sc = new Scanner(System.in);
msg("请输入用户的ID:");
int eno = sc.nextInt();
msg("请输入修改后的状态:");
int sal = sc.nextInt();
if (em.modifyRole(eno, sal)) {
msg("修改成功!");
} else {
msg("修改失败!");
}
}
private void update() {
sc = new Scanner(System.in);
msg("请输入账号:");
String eno = sc.next();
msg("请输入修改后的状态:");
int sal = sc.nextInt();
if (em.modifyStatus(eno, sal)) {
msg("修改成功!");
} else {
msg("修改失败!");
}
}
private void modifypassword() {
sc = new Scanner(System.in);
msg("输入新密码");
String op = sc.next();
m.setPassword(op);
System.out.println("修改密码成功,登录失效,请重新登录");
login();
}
private void exit() {
sc = new Scanner(System.in);
msg("是否确定退出?(Y/N)");
String op = sc.next();
if (op.equalsIgnoreCase("y")) {
msg("再你妈的见");
System.exit(1);
}
}
private void delete() {
sc = new Scanner(System.in);
msg("请输入用户的ID:");
int eno = sc.nextInt();
if (em.delete(eno)) {
msg("删除成功!");
} else {
msg("删除失败!");
}
}
private void queryById() {
sc = new Scanner(System.in);
msg("请输入需要查询的用户ID:");
int id = sc.nextInt();
User e = em.refer(id);
if (e == null) {
msg(id + "用户ID不存在,请重新输入");
queryById();
return;
}
msg("id 账号 密码 年龄 角色 邮箱 办事处 账户状态");
msg(e);
}
/** 员工列表的客户端实现 */
private void list() {
msg("id 账号 密码 年龄 角色 邮箱 办事处 账户状态");
for (User e : em.findAll()) {
msg(e);
}
}
/** 员工添加的客户端实现 */
private void add() {
msg("请输入用户信息(按以下格式:id 账号 密码 年龄 角色 邮箱 办事处 账户状态");
sc = new Scanner(System.in);
String s = sc.nextLine();
/** 根据" "截取用户信息 */
String[] info = s.split(" ");
if (em.refer(Integer.parseInt(info[0])) != null) {
msg("该ID用户已存在,请重新输入");
add();
return;
} else {
User e = new User(Integer.parseInt(info[0]), info[1], info[2], Integer.parseInt(info[3]),
Integer.parseInt(info[4]), info[5], Integer.parseInt(info[6]), Integer.parseInt(info[7]));
em.add(e);
msg("添加成功");
}
}
public void login() {
sc = new Scanner(System.in);
msg("请输入账号:");
String username = sc.nextLine();
sc = new Scanner(System.in);
msg("请输入密码:");
String password = sc.nextLine();
if (m.getUsername().equals(username) && m.getPassword().equals(password) && m.getStatus() == 1) {
if (m.getRole() == 1) {
System.out.println("管理员登录成功");
new Test().menu1();
} else {
System.out.println("普通用户登录成功");
new Test().menu2();
}
} else if (m.getUsername().equals(username) && m.getStatus() != 1) {
System.out.println("账号被禁用,返回登录系统");
login2();
} else if (m.getUsername().equals(username) && m.getStatus() == 1 && !m.getPassword().equals(password)) {
System.out.println("密码错误,返回登录系统");
login2();
}
}
public void msg(Object obj) {
System.out.println(obj);
}
public static void main(String[] args) {
new Test().login2();
}
}
运行结果
小结
这些代码还是有一个问题,切换账号的功能还是没完善好.