问题描述:
某航空公司在其航班到达的不同的国家的不同地方设有不同的办事处,这个项目要求开发一个自动化软件系统,该系统将提供给这些办事处的管理者(role=1)和普通用户(role=0)用于管理航班信息。根据以上描述,要求实现系统的用户模块和办事处模块,包含以下功能(注:系统存在一个默认管理员admin/admin123):
用户模块:
1. 用户添加
2. 密码修改
3. 个人信息查看
4. 账号状态修改(禁用0、启用1)
5. 用户登录(被禁用账号无法登录并提示友好的消息)
6. 修改用户角色(设置取消管理员)
7. 用户列表
8. 查询指定办事处的员工
9. 删除用户
办事处模块:
1. 办事处添加
2. 办事处列表
注意:管理员具备以上所有功能,普通用户只有密码修改和个人信息查看功> 能
参考类信息如下:
用户类(User):
id,账号(username),密码(passord),年龄(age),角色(role),邮箱> (email),办事处id(officeID),账户状态(status)
办事处类(Office):
id,办公室名(officeName)要求使用技术参数如下:
1.分支与循环
2.数组或ArrayList
3.方法
4.构造器
5.setter/getter
6.抽象类或接口
7.多态
8.Scanner类
用户(User)类创建
package com.softeem.lesson02.test01;
/**
* @author Jedi
*/
public class User {
/**用户编号*/
private int uid;
/**用户名*/
private String username;
/**用户密码*/
private String password;
/**用户类型1-->管理员 0--->普通用户*/
private int role;
/**用户状态1-->正常状态 0-->账户被禁用*/
private int status;
/**用户年龄*/
private int age;
/**用户邮箱*/
private String email;
/**办事处id*/
private int ono;
public User() {
}
public User(int uid, String username, String password, int role, int status, int age, String email, int ono) {
this.uid = uid;
this.username = username;
this.password = password;
this.role = role;
this.status = status;
this.age = age;
this.email = email;
this.ono = ono;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
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 getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getOno() {
return ono;
}
public void setOno(int ono) {
this.ono = ono;
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", role=" + role +
", status=" + status +
", age=" + age +
", email='" + email + '\'' +
", ono=" + ono +
'}';
}
}
办公室类(Office)创建
package com.softeem.lesson02.test01;
/**
* @author Jedi
*/
public class Office {
/**办公室编号*/
private int oid;
/**办公室名称*/
private String officeName;
public Office() {
}
public Office(int oid, String officeName) {
this.oid = oid;
this.officeName = officeName;
}
public int getOid() {
return oid;
}
public void setOid(int oid) {
this.oid = oid;
}
public String getOfficeName() {
return officeName;
}
public void setOfficeName(String officeName) {
this.officeName = officeName;
}
@Override
public String toString() {
return "Office{" +
"oid=" + oid +
", officeName='" + officeName + '\'' +
'}';
}
}
创建接口类
import java.util.List;
/**
* @author Jedi
*/
public interface InterfaceOffice {
public boolean addOffice(Office office);
public List<Office> officeList();
}
import java.util.List;
/**
* @author Jedi
*/
public interface InterfaceUser {
public User selectUserByuid(int uid);
public User selectUserByUsername(String username);
public boolean deleteUser(int uid);
public boolean addUser(User u);
public List<User> UserList();
public boolean alterPwd(int uid,String password);
public boolean alterRole(int uid,int role);
public boolean alterStatus(int uid,int status);
public List<User> selectByOid(int oid);
public boolean userLogin(String user,String password);
}
实现接口类
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author Jedi
*/
public class UserImpl implements InterfaceUser {
ArrayList<User> list = new ArrayList<User>();
public UserImpl() {
list.add(new User(100,"admin","admin123",1,1,23,"qwe@qq.com",200));
}
@Override
public User selectUserByuid(int uid) {
User user = null;
for (User u : list) {
if (u.getUid() == uid) {
user = u;
}
}
return user;
}
@Override
public User selectUserByUsername(String username) {
User user = null;
for (User u : list) {
if (u.getUsername().equals(username)) {
user = u;
}
}
return user;
}
@Override
public boolean deleteUser(int uid) {
boolean flag = false;
Iterator it = list.iterator();
while (it.hasNext()){
Object o = it.next();
User u = (User) o;
if (((User) o).getUid()==uid) {
it.remove();
return true;
}
}
return flag;
}
@Override
public boolean addUser(User u) {
for (User uu : list) {
if (uu.getUid() == u.getUid()) {
return false;
}
if (uu.getUsername().equals(u.getUsername())){
return false;
}
}
list.add(u);
return true;
}
@Override
public List<User> UserList() {
return list;
}
@Override
public boolean alterPwd(int uid, String password) {
boolean flag = false;
for (User u : list) {
if (u.getUid() == uid) {
u.setPassword(password);
flag = true;
}
}
return flag;
}
@Override
public boolean alterRole(int uid, int role) {
boolean flag = false;
for (User u : list) {
if (u.getUid() == uid) {
u.setRole(role);
flag = true;
}
}
return flag;
}
@Override
public boolean alterStatus(int uid, int status) {
boolean flag = false;
for (User u : list) {
if (u.getUid() == uid) {
u.setStatus(status);
flag = true;
}
}
return flag;
}
@Override
public List<User> selectByOid(int ono) {
ArrayList<User> list2 = null;
for (User u : list){
if (u.getOno() == ono){
list2.add(u);
}
}
return list2;
}
@Override
public boolean userLogin(String user, String password) {
boolean flag =false;
for (User u : list){
if (u.getUsername().equals(user) &&u.getStatus()!=0){
if (u.getPassword().equals(password)){
flag = true;
}
}
}
return flag;
}
}
import java.util.ArrayList;
import java.util.List;
public class OfficeImpl implements InterfaceOffice{
List<Office> list = new ArrayList<Office>();
@Override
public boolean addOffice(Office office) {
for (Office o:list){
if (o.getOid() == office.getOid()){
return false;
}
}
list.add(office);
return true;
}
@Override
public List<Office> officeList() {
return list;
}
}
创建测试类
import java.util.List;
import java.util.Scanner;
/**
* @author Jedi
*/
public class Test {
static Scanner sc = new Scanner(System.in);
static InterfaceUser user = new UserImpl();
static InterfaceOffice office = new OfficeImpl();
static String username;
static String password;
public static void main(String[] args) {
login();
}
public static void login() {
System.out.println("-----请登录-----");
System.out.println("请输入你的用户名和密码:");
username = sc.next();
password = sc.next();
if (user.userLogin(username, password)) {
System.out.println("登录成功");
guide();
} else {
System.out.println("登录失败!请重新登录");
login();
}
}
/**
* 判断是否是管理员
*/
public static boolean isRole( ) {
User u = null;
u = user.selectUserByUsername(username);
if (u.getRole() == 1) {
return true;
}
return false;
}
/**
* 指令指南
*/
public static int guide( ) {
int order;
if (isRole()) {
System.out.println("---请输入你要执行的指令---");
System.out.println("-1-->>添加用户---------");
System.out.println("-2-->>密码修改---------");
System.out.println("-3-->>个人信息查看------");
System.out.println("-4-->>账号状态信息修改---");
System.out.println("-5-->>修改用户角色------");
System.out.println("-6-->>用户列表----------");
System.out.println("-7-->>查询指定办事处的员工---");
System.out.println("-8-->>删除用户----------");
System.out.println("-9-->>办事处添加----------");
System.out.println("-10-->>办事处列表----------");
System.out.println("-0-->>退出----------");
order = sc.nextInt();
} else {
System.out.println("---请输入你要执行的指令---");
System.out.println("-2-->>密码修改---------");
System.out.println("-3-->>个人信息查看------");
System.out.println("-0-->>退出------");
order = sc.nextInt();
}
runAdmin(order);
return order;
}
public static void runAdmin(int order) {
User u = new User();
switch (order) {
case 0:{
login();
}
case 1: {
System.out.println("请输入用户编号");
u.setUid(sc.nextInt());
System.out.println("请输入用户账号");
u.setUsername(sc.next());
System.out.println("请输入用户密码");
u.setPassword(sc.next());
System.out.println("请输入用户年龄");
u.setAge(sc.nextInt());
System.out.println("请输入用户角色");
u.setRole(sc.nextInt());
System.out.println("请输入用户邮箱");
u.setEmail(sc.next());
System.out.println("请输入用户办事处id");
u.setOno(sc.nextInt());
System.out.println("请输入用户账户状态");
u.setStatus(sc.nextInt());
if (user.addUser(u)) {
System.out.println("添加成功!");
} else {
System.out.println("添加失败!你输入的编号或者用户名已被使用!");
}
guide();
break;
}
case 2: {
int uid;
String password;
System.out.println("请输入你要修改密码用户的编号");
uid = sc.nextInt();
System.out.println("请输入你要修改为的密码");
password = sc.next();
if (user.alterPwd(uid, password)) {
System.out.println("修改成功");
} else {
System.out.println("查无此用户");
}
guide();
break;
}
case 3: {
int uid;
System.out.println("请输入你要查询的用户的编号");
uid = sc.nextInt();
if (user.selectUserByuid(uid) != null) {
System.out.println(user.selectUserByuid(uid));
} else {
System.out.println("查无此用户!");
}
guide();
break;
}
case 4: {
int uid;
int status;
System.out.println("请输入你要修改的用户的编号");
uid = sc.nextInt();
status = sc.nextInt();
if (user.alterStatus(uid, status)) {
System.out.println("修改成功");
} else {
System.out.println("查无此用户");
}
guide();
break;
}
case 5: {
int uid;
int role;
System.out.println("请输入你要修改的用户的编号");
uid = sc.nextInt();
role = sc.nextInt();
if (user.alterRole(uid, role)) {
System.out.println("修改成功");
} else {
System.out.println("查无此用户");
}
guide();
break;
}
case 6: {
List<User> list3 = user.UserList();
for (User uu : list3) {
System.out.println(uu);
}
guide();
break;
}
case 7: {
int oid;
System.out.println("请输入要查询的办事处编号");
oid = sc.nextInt();
List<User> list = user.selectByOid(oid);
for (User uu : list) {
System.out.println(uu);
}
guide();
break;
}
case 8: {
int uid;
System.out.println("请输入你要删除的用户的编号");
uid = sc.nextInt();
if (user.deleteUser(uid)) {
System.out.println("删除成功");
} else {
System.out.println("查无此用户");
}
guide();
break;
}
case 9: {
Office o = new Office();
System.out.println("请输入你要添加办事处的编号");
o.setOid(sc.nextInt());
System.out.println("请输入你要添加办事处的办公室名称");
o.setOfficeName(sc.next());
if (office.addOffice(o)) {
System.out.println("添加成功");
} else {
System.out.println("以添加过");
}
guide();
break;
}
case 10: {
List<Office> list = office.officeList();
for (Office oo : list) {
System.out.println(oo);
}
guide();
break;
}
default:
System.out.println("你输入的指令有误!");
guide();
}
}
}
效果截图: