这是我今天做的一道考试题,觉得已经综合了员工管理系统的该有的基础功能,且管理员与用户在同一系统中实现不同功能,以下是这道题目
某航空公司在其航班到达的不同的国家的不同地方设有不同的办事处,这个项目要求开发一个自动化软件系 统,该系统将提供给这些办事处的管理者(role=1)和普通用户(role=0)用于管理航班信息。根据以上描述,要求实现系统的用户模块和办事处模块,包含以下功能(注:系统存在一个默认管理员admin/admin123):
1. 用户模块:
2. 办事处模块
注意:管理员具备以上所有功能,普通用户只有密码修改和个人信息查看功能。
参考类如下:
用户类(User):
id,账号(username),密码(passord),年龄(age),角色(role),邮箱(email),办事处id(officeId),账户状态 (status)
办事处类(Office):
officeId,办公室名(officeName)
这道题目与经典的员工管理系统、还有我以前写过的电商系统大同小异,逻辑基本相同,不同的是这道题目中管理员与用户的功能实现不同,普通用户只有登录系统、密码修改与个人信息查看功能,而管理员实现的功能更多,包含了普通用户的所有功能,那么这道题我是这么理解的:在用户管理类中实现所有方法,普通用户只调用需要的部分方法,而管理员则调用全部方法,可以实现管理员与普通用户的不同功能,同时不同用户所获得的功能菜单界面也是不同的,以下为不同用户功能菜单:
通过以上可以看出我给的实际上是两个菜单,通过if-else语句进行判别,管理员的Role为1,则输出菜单1;普通用户的Role为0,则输出菜单2
代码如下
User类
public class User {
private int id;
private String username;
private String password;
private int age;
private int role;
private String email;
private int officeId;
private int status;
public User() {
username = "admin";
password = "admin123";
role = 1;
}
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;
}
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;
}
}
UserManage类
import java.util.ArrayList;
public class UserManage {
static ArrayList list = new ArrayList<>();
User u = new User();
/**用户登录*/
public boolean sign(String username,String password) {
if(u.getUsername().equals(username) && u.getPassword().equals(password)) {
return true;
}
return false;
}
/**用户添加*/
public void add(User u) {
list.add(u);
}
/**密码修改*/
public boolean updatePassword(String password) {
if(u.getPassword()!= null) {
u.setPassword(password);
return true;
}
return false;
}
/** 个人信息查看*/
public User findById(int id) {
User user = null;
for(User u:list){
if(u.getId() == id){
user = u;
break;
}
}
return user;
}
/**账号状态修改*/
public boolean modifyStatus(int id,int status) {
User user = findById(id);
if(user != null) {
user.setStatus(status);
return true;
}
return false;
}
/**修改用户角色*/
public boolean setAdmin(int id,int role) {
User user = findById(id);
if(user != null){
user.setRole(role);
return true;
}
return false;
}
/**用户列表*/
public ArrayList findAll(){
return list;
}
/**删除用户*/
public boolean delete(int id){
User user = findById(id);
if(user != null){
return list.remove(user);
}
return false;
}
/**查询指定办事处的所有员工*/
public ArrayList findByOfficeId(int officeId){
ArrayList users = new ArrayList<>();
for(User u:list){
if(officeId == u.getOfficeId()){
users.add(u);
}
}
return users;
}
}
Office类
public class Office {
private int officeId;
private String officeName;
public Office() {
}
public Office(int officeId, String officeName) {
super();
this.officeId = officeId;
this.officeName = officeName;
}
public int getOfficeId() {
return officeId;
}
public void setOfficeId(int officeId) {
this.officeId = officeId;
}
public String getOfficeName() {
return officeName;
}
public void setOfficeName(String officeName) {
this.officeName = officeName;
}
}
OfficeManage类
import java.util.ArrayList;
public class OfficeManage {
static ArrayList list = new ArrayList<>();
Office o = new Office();
/**办事处添加*/
public void add(Office o) {
list.add(o);
}
/**办事处列表*/
public ArrayList findAll() {
return list;
}
/**根据id查询办事处*/
public Office findByOfficeId(int officeId) {
Office office = null;
for(Office o:list){
if(o.getOfficeId()== officeId){
office = o;
break;
}
}
return office;
}
}
Client类
import java.util.ArrayList;
import java.util.Scanner;
public class Client {
private UserManage um = new UserManage();
private OfficeManage om = new OfficeManage();
private Scanner sc;
public void window() {
msg("==================");
msg("欢迎使用MAX航空管理系统\n管理员请输入1\n普通用户请输入0");
msg("==================");
sc = new Scanner(System.in);
int m = sc.nextInt();
if(m == 1) {
signin1();
}else if(m == 0) {
signin2();
}else {
msg("您的输入有误,请重新输入");
window();
}
}
/**管理员登录*/
public void signin1() {
sc = new Scanner(System.in);
msg("===============");
msg("欢迎登录MAX航空系统");
msg("尊贵的管理员\n您已进入管理系统\n请输入管理员账户名:");
msg("===============");
String username = sc.next();
msg("请输入密码:");
String password = sc.next();
if(um.sign(username, password)) {
menu1();
}else {
msg("账户不存在或密码错误");
msg("请重新输入账户密码");
signin1();
}
}
/**普通用户登录*/
public void signin2() {
sc = new Scanner(System.in);
msg("===============");
msg("欢迎登录MAX航空系统");
msg("请输入用户账户名:");
msg("===============");
String username = sc.next();
msg("请输入密码:");
String password = sc.next();
if(um.sign(username, password)) {
menu2();
}else {
msg("账户不存在或密码错误");
msg("请重新输入账户密码");
signin2();
}
}
public void menu1() {
msg("============================");
msg("========MAX航空管理系统=========");
msg("====【1】用户添加===============");
msg("====【2】密码修改===============");
msg("====【3】个人信息查看===========");
msg("====【4】修改账号状态===========");
msg("====【5】修改用户角色===========");
msg("====【6】用户列表==============");
msg("====【7】删除用户==============");
msg("====【8】办事处添加=============");
msg("====【9】办事处列表=============");
msg("====【10】查询指定办事处员工======");
msg("====【0】退出系统==============");
msg("============================");
msg("请输入操作指令:");
start1();
}
public void menu2() {
msg("============================");
msg("========max航空系统===========");
msg("====【2】密码修改===============");
msg("====【3】个人信息查看===========");
msg("====【0】退出系统==============");
msg("============================");
msg("请输入操作指令:");
start2();
}
public void start1() {
sc = new Scanner(System.in);
int i = sc.nextInt();
switch(i){
case 1:
add();
break;
case 2:
modifyPwd();
break;
case 3:
queryById();
break;
case 4:
updateStatus();
break;
case 5:
updateRole();
break;
case 6:
list();
break;
case 7:
delete();
break;
case 8:
addOffice();
break;
case 9:
listOffice();
break;
case 10:
queryByOfficeId();
break;
case 0:
exit();
break;
default:
msg("请输入正确的操作指令!!!");
break;
}
menu1();
}
public void start2() {
sc = new Scanner(System.in);
int i = sc.nextInt();
switch(i){
case 2:
modifyPwd();
break;
case 3:
queryById();
break;
case 0:
exit();
break;
default:
msg("请输入正确的操作指令!!!");
break;
}
menu2();
}
/**用户添加*/
public void add() {
msg("请输入用户信息(按以下格式:用户id/账号名/密码/年龄/角色/邮箱/办事处id/账户状态)");
sc = new Scanner(System.in);
String s = sc.nextLine();
//根据“/”截取用户信息
String[] info = s.split("/");
if(um.findById(Integer.parseInt(info[0])) != null){
msg("该编号的用户已存在,请重新输入");
add();
return;
}else{
User u = 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])
);
um.add(u);
msg("添加成功");
}
}
/**修改管理员密码*/
public void modifyPwd() {
msg("请输入新密码:");
String password = sc.next();
if(um.updatePassword(password)) {
msg("修改成功");
}else {
msg("修改失败");
}
}
/**个人信息查看的客户端实现*/
public void queryById() {
sc = new Scanner(System.in);
msg("请输入个人id:");
int id = sc.nextInt();
User u = um.findById(id);
if(u == null) {
msg("您输入的用户id不存在");
queryById();
return;
}
msg("用户id/账号名/密码/年龄/角色/邮箱/办事处id/账户状态");
msg(u);
}
/**修改账户状态客户端实现*/
public void updateStatus() {
sc = new Scanner(System.in);
msg("请输入修改用户的id:");
int id = sc.nextInt();
msg("请修改用户的账户状态(禁用0/启用1):");
int status= sc.nextInt();
if(um.modifyStatus(id, status)) {
msg("修改成功");
}else {
msg("修改失败");
}
}
/**修改用户角色的客户端实现*/
public void updateRole() {
sc = new Scanner(System.in);
msg("请输入修改用户的id:");
int id = sc.nextInt();
msg("请输入修改用户的角色:(管理员1/普通用户0)");
int role = sc.nextInt();
if(um.setAdmin(id, role)) {
msg("修改成功");
}else {
msg("修改失败");
}
}
/**用户列表*/
public void list() {
msg("用户id/账号名/密码/年龄/角色/邮箱/办事处id/账户状态");
for (User u : um.findAll()) {
msg(u);
}
}
/**删除用户的客户端实现*/
public void delete() {
sc = new Scanner(System.in);
msg("请输入用户的id:");
int id = sc.nextInt();
if(um.delete(id)){
msg("删除成功!");
}else{
msg("删除失败!");
}
}
/**办事处添加*/
public void addOffice() {
msg("请输入办事处信息(按以下格式:办事处id/办公室名)");
sc = new Scanner(System.in);
String s = sc.nextLine();
String[] info1 = s.split("/");
if(om.findByOfficeId(Integer.parseInt(info1[0])) != null){
msg("该编号的办事处已存在,请重新输入");
addOffice();
return;
}else{
Office o = new Office(Integer.parseInt(info1[0]), info1[1]);
om.add(o);
msg("添加成功");
}
}
/**办事处列表*/
public void listOffice() {
msg("办事处id/办公室名");
for (Office o : om.findAll()) {
msg(o);
}
}
/**根据办事处id查询所有用户的客户端实现*/
public void queryByOfficeId() {
sc = new Scanner(System.in);
msg("请输入需要查询的办事处id:");
int officeId = sc.nextInt();
ArrayList list = um.findByOfficeId(officeId);
msg("用户id/账号名/密码/年龄/角色/邮箱/办事处id/账户状态");
if(list.size()>0){
for (User u : list) {
msg(u);
}
}
}
/**系统退出*/
public void exit() {
sc = new Scanner(System.in);
msg("是否确定退出?(Y/N)");
String op = sc.next();
if(op.equalsIgnoreCase("y")){
msg("谢谢使用,再见!");
System.exit(1);
}
}
public void msg(Object obj) {
System.out.println(obj);
}
public static void main(String[] args) {
new Client().window();
}
}
下面我就不给出运行结果了,有兴趣的朋友可以自己试着运行一下
写的不是很好,代码重复较多,希望各位朋友可以指点改进