某航空公司在其航班到达的不同的国家的不同地方设有不同的办事处,这个项目要求开发一个自动化软件系
统,该系统将提供给这些办事处的管理者(role=1)和普通用户(role=0)用于管理航班信息。根据以上描述,要
求实现系统的用户模块和办事处模块,包含以下功能(注:系统存在一个默认管理员admin/admin123):
- 用户模块:
- 用户添加
- 密码修改
- 个人信息查看
- 账号状态修改(禁用0、启用1)
- 用户登录(被禁用账号无法登录并提示友好的消息)
- 修改用户角色(设置取消管理员)
- 用户列表
- 删除用户
参考类如下:
用户类(User):
账号(username),密码(passord),年龄(age),角色(role),邮箱(email),办事处id(officeID),账户状态
(status)
我们在写这个的系统,首先就是写用户类,在写的过程中,因为要写入本地,则用户类要实现序列化,且用户类中有get和set方法,主要代码如下:
public class User implements Serializable{
private String userName;
private String password;
private int age;
private int role;
private String email;
private int status;
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 getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
@Override
public String toString() {
return "User [userName=" + userName + ", password=" + password + ", age=" + age + ", role=" + role + ", email="
+ email + ", status=" + status + "]";
}
}
在用户登录模块中,因为我使用链表保存用户信息,则我用for each遍历循环比对用户名字的密码,成功则能登录,然后再判定是否被禁用。功能实现的类代码如下:
package A;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;
public class Function {
private User user;
private Scanner scanner;
private ArrayList<User> users;
private ArrayList<Office> office;
public Function() {
this.scanner = new Scanner(System.in);
getSystemUser();
this.office = new ArrayList<Office>();
login();
}
private void login() {
String userName;
String password;
System.out.println("登录");
System.out.print("请输入你的用户名:");
userName = scanner.nextLine();
System.out.print("请输入你的密码:");
password = scanner.nextLine();
for (User user : users) {
if(userName.equals(user.getUserName()) && password.equals(user.getPassword())) {
this.user = user;
}
}
if(this.user != null) {
if (user.getStatus() == 1) {
System.out.println("登录成功");
System.out.println(this.user.getPassword());
if (user.getRole() == 0) {
selectFromMiniMenu();
} else {
selectFromMenu();
}
} else {
System.out.println("该用户目前处于被禁用状态,此次登录失败");
}
}else {
System.out.println("密码或用户名错误,请确认后重新登录");
login();
}
}
//得到系统中的信息
private void getSystemUser() {
File file = new File("./user.txt");
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(file);
ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
if(obj instanceof ArrayList) {
this.users = (ArrayList<User>) obj;
}
} catch(EOFException e) {
this.users = new ArrayList<User>();
this.user = new User();
user.setUserName("admin");
user.setPassword("admin123");
user.setRole(1);
user.setStatus(1);
users.add(user);
writeUsers();
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(ois != null) {
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fis != null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//保存用户信息
public void writeUsers() {
FileOutputStream fis = null;
ObjectOutputStream ois = null;
try {
fis = new FileOutputStream("./user.txt");
ois = new ObjectOutputStream(fis);
ois.writeObject(users);
ois.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(ois != null) {
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fis != null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
private String printMiniMenu() {
System.out.println("▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄");
System.out.println("1.密码修改");
System.out.println("2.个人信息查看");
System.out.println("3.退出系统");
System.out.println("▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄");
System.out.print("请选择你要执行的功能:");
return scanner.nextLine();
}
private String printMenu() {
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("▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄");
System.out.print("请选择你要执行的功能:");
return scanner.nextLine();
}
private void selectFromMiniMenu() {
String str = printMiniMenu();
switch(str) {
case "1":
changePassword();
selectFromMiniMenu();
break;
case "2":
showUser();
selectFromMiniMenu();
break;
case "3":
System.out.println("系统退出成功");
break;
default:
break;
}
}
private void selectFromMenu() {
String str = printMenu();
switch (str) {
case "1":
changePassword();
selectFromMenu();
break;
case "2":
addUser();
selectFromMenu();
break;
case "3":
showUser();
selectFromMenu();
break;
case "4":
changeStatus();
selectFromMenu();
break;
case "5":
changeRole();
selectFromMenu();
break;
case "6":
showAllUsers();
selectFromMenu();
break;
case "7":
deleteUser();
selectFromMenu();
break;
case "8":
System.out.println("系统退出成功");
break;
default:
break;
}
}
//修改密码
private void changePassword() {
String lastpassword;
String newpassword1;
String newpassword2;
System.out.print("请输入你的原密码:");
lastpassword = scanner.nextLine();
if(this.user.getPassword().equals(lastpassword)) {
System.out.print("请输入你要修改后的密码:");
newpassword1 = scanner.nextLine();
System.out.print("请确认你要修改后的密码:");
newpassword2 = scanner.nextLine();
if(newpassword1.equals(newpassword2)) {
System.out.println("修改成功");
this.user.setPassword(newpassword1);
writeUsers();
}else {
System.out.println("两次密码不一样,修改失败,返回菜单");
}
}
}
//添加用户
private void addUser() {
User user = new User();
System.out.print("请输入用户名:");
user.setUserName(scanner.nextLine());
System.out.print("请设置用户密码:");
user.setPassword(scanner.nextLine());
System.out.print("请输入用户年龄:");
user.setAge(Integer.parseInt(scanner.nextLine()));
System.out.print("请输入用户权限(0是普通用户,1是管理者):");
user.setRole(Integer.parseInt(scanner.nextLine()));
System.out.print("请输入用户邮箱:");
user.setEmail(scanner.nextLine());
System.out.print("请输入用户账号禁用状态(0是禁用,1是启用):");
user.setStatus(Integer.parseInt(scanner.nextLine()));
users.add(user);
writeUsers();
System.out.println("添加成功!");
}
//个人信息查看
private void showUser() {
System.out.println(this.user);
}
//用户列表
private void showAllUsers() {
for (User user : users) {
System.out.println(user);
}
}
//账号状态修改
private void changeStatus() {
System.out.print("请输入你要修改账号状态的用户名:");
String name = scanner.nextLine();
for (User user : users) {
if(name.equals(user.getUserName())) {
System.out.println(user);
System.out.print("请输入你将修改的状态(0或1):");
String str = null;
str = scanner.nextLine();
user.setStatus(Integer.parseInt(str));
writeUsers();
}
}
}
//修改用户角色
private void changeRole() {
System.out.print("请输入你要修改账号角色的用户名:");
String name = scanner.nextLine();
for (User user : users) {
if(name.equals(user.getUserName())) {
System.out.println(user);
System.out.print("请输入你将修改的角色(0是普通用户或1是管理员):");
String str = null;
str = scanner.nextLine();
user.setStatus(Integer.parseInt(str));
writeUsers();
}
}
}
//删除用户
private void deleteUser() {
System.out.print("请输入你要删除账号的用户名:");
String name = scanner.nextLine();
User u;
for (User user : users) {
if(name.equals(user.getUserName())) {
u = user;
System.out.println(user);
System.out.print("是否确认删除此用户(Y确定 ,输入其他则取消):");
String str = null;
str = scanner.nextLine();
if("y".equals(str.toLowerCase())) {
users.remove(u);
writeUsers();
break;
}else {
System.out.println("取消删除");
}
}
}
}
}