基于java中Scanner实现用户管理

基于java中Scanner实现用户管理

1.具体功能如下:

这个项目要求开发一个自动化软件系统,该系统将提供给这些办事处的管理者(role=1)和普通用户(role=0)用于管理航班信息。根据以上描述,要求实现系统的用户模块和办事处模块,包含以下功能(注:系统存在一个默认管理员admin/admin123):

用户模块:用户添加;密码修改;个人信息查看;账号状态修改(禁用0、启用1);用户登录(被禁用账号无法登录并提示友好的消息);修改用户角色(设置取消管理员);用户列表;查询指定办事处的员工;删除用户

办事处模块:办事处添加;办事处列表

管理员具备以上所有功能,普通用户只有密码修改和个人信息查看功能。

参考类如下:

用户类(User):

​ id,账号(username),密码(passord),年龄(age),角色(role),邮箱(email),办事处id(officeID),账户状态(status)

办事处类(Office):

​ id,办公室名(officeName)

2.实现想法:

在窗口中实现功能之前,添加用户,这样的话要在运行的方法(menu,start等)中传入参数,不采用成员变量。用户有有多种属性,这就要创建一个用户类(User)和用户管理类(UserManager);同样办事处也要创建办事处类(Office)和办事处管理类(OfficeManager);最后创建功能实现类(Test)。在Test类中创建方法来调用用户管理类(UserManager)和办事处管理类(OfficeManager)的方法。

User类:(get,set方法就不展示

public class User {
	private int id;
	private String username;
	private String password;
	private int age;
	private int role; //0:普通用户/1:管理者
	private String email;
	private int officeID;
	private int status;//0:禁用/1:启用
	
	public User() {
		super();
	}
// 为了初始化管理员的账户、密码(admin/admin123),创建了一个
//只有username,password的构造器。
	
	public User(String username, String password) {
		super();
		this.username = username;
		this.password = password;
		
	}

	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;
	}

UserManager类:

//导包
import java.util.ArrayList;

public class UserManager {

	static ArrayList<User> list = new ArrayList<>();
	public UserManager(){
		list.add(new User("admin","admin123"));
	}
	/**用户添加*/
	public void add(User user){
		 list.add(user);
	}
	/**密码修改*/
	public boolean  updatePassword(User user,String password){
		user.setPassword(password);
		return true;
	}
	/**根据id查询商品*/
	public User findById(int id){
		User user = null;
		for(User u:list){
			//判断是否找到匹配id的商品
			if(u.getId() == id){
				user = u;
				break;
			}
		}
		return user;
	}
	/**个人信息查看*/
	public void findOneUser(User user){
		msg (user);
	}
	/**账号状态修改(禁用0、启用1)*/
	public boolean updateStatus(User user,int r){
		user.setStatus(r);
		return true;
	}
	/**用户登录(被禁用账号无法登录并提示友好的消息)*/
	public boolean login(String m ,String p){
		for(User u:list){
			if(u.getUsername().equals(m)||u.getPassword().equals(p)){
				return true;
			}
		}
		return false;
	}
	/**修改用户角色(设置取消管理员)*/
	public void updateRole(User user){
		user.setRole(0);
		msg("取消该用户管理员权限");
	}
	/**用户列表*/
	public ArrayList<User> findAllUser(){
		return list;
	}
	/**删除用户*/
	public boolean delete(int id){
		User user = findById(id);
		if(user != null){
			return list.remove(user);
		}
		return false;
		
	}
	/**输出语句*/
	public String msg(Object obj){
		return obj.toString();
	}

Office类:

public class Office {

	private int oid;
	private String officeName;
	
	public Office() {
		super();
	}
	public Office(int oid, String officeName) {
		super();
		this.oid = oid;
		this.officeName = officeName;
	}

OfficeManager类:

public class Office {

	private int oid;
	private String officeName;
	
	public Office() {
		super();
	}
	public Office(int oid, String officeName) {
		super();
		this.oid = oid;
		this.officeName = officeName;
	}

Test类:

package com.softeem.lesson12.Test2;

import java.util.ArrayList;
import java.util.Scanner;

public class Test {

	private OfficeManager om = new OfficeManager();
	private Scanner sc;
	
	public void menu(UserManager um){
		msg("============================");
		msg("======航空公司管理系统============");
		msg("===========登录 ==============");
		msg("============================");
		msg("请输入账号密码(按一下格式:id/账号/密码)");
		start(um);
	}
	
	public void menu1(UserManager um,User user){	
		msg("====航空公司管理系统 ==============");
		msg("====【1】 用户添加  ===============");
		msg("====【2】 修改密码  ===============");
		msg("====【3】 个人信息查看  =============");
		msg("====【4】 账号状态修改(禁用0、启用1)===");
		msg("====【5】 修改用户角色(设置取消管理员)===");
		msg("====【6】 用户列表 ================");
		msg("====【7】 删除用户================");
		msg("====【8】 办事处添加 ===============");
		msg("====【9】 办事处列表===============");
		msg("====【10】 查询指定办事处的所有员工======");
		msg("====【0】 退出系统=================");
		msg("=============================");
		msg("请输入操作指令:");
		start1(um,user);
	}
	
	public void menu2(UserManager um,User user){
		msg("============================");
		msg("======航空公司管理系统============");
		msg("======【1】密码修改 =============");
		msg("======【2】个人信息查看===========");
		msg("======【0】 退出系统=============");
		msg("============================");
		msg("请输入操作指令:");
		start2(um,user);
	}
	
	public void start(UserManager um){
		User u = null;
		sc = new Scanner(System.in);
		String s = sc.nextLine();
		//根据"/"截取信息
		String[] info = s.split("/");
		u = um.findById(Integer.parseInt(info[0]));
		System.out.println(u);
		if(u == null){
			msg("该账户不存在!!!");
			menu(um);	
		}else{
			if(u.getStatus() == 0){
				msg("该账户被禁用!!!");
				start(um);
			}else{
				if(info[1].equals("admin")||info[2].equals("admin123")){
					menu1(um,u);
				}else if(um.login(info[1],info[2])){
						menu2(um,u);
				}else{
					msg("账户或密码错误!!!");
					menu(um);
				}
				
			} 
			
		} 
	}
	
	public void start1(UserManager um,User user){
		sc = new Scanner(System.in);
		int i = sc.nextInt();
		switch(i){
		case 1:
			addUser(um);
			break;
		case 2:
			updatePassword(um,user);
			break;
		case 3:
			showOne(um,user);
			break;
		case 4:
			updateStatus(um,user);
			break;
		case 5:
			updateRole(um);
			break;
		case 6:
			list(um);
			break;
		case 7:
			delete(um);
			break;
		case 8:
			addOffice();
			break;
		case 9:
			list1();
			break;
		case 10:
			queryByOid();
			break;
		case 0:
			exit();
			break;
			default:
				msg("请输入正确的操作指令!!!");
				break;
		}
		menu1(um,user);
		
	}
	
	public void start2(UserManager um,User user){
		sc = new Scanner(System.in);
		int i = sc.nextInt();
		switch(i){
		case 1:
			updatePassword(um,user);
			break;
		case 2:
			showOne(um,user);
			break;
	    case 0:
		    exit();
		     break;
		     default:
			    msg("请输入正确的操作指令!!!");
			    break;
		}
	    menu2( um,user);
	}
	
	private void exit() {
		sc = new Scanner(System.in);
		msg("是否确定退出?(Y/N)");
		String op = sc.nextLine();
		if(op.equalsIgnoreCase("y")){
			msg("谢谢使用,再见!");
			System.exit(1);
		}
	}
	
	/** 查询指定办事处的所有员的客户端实现*/
	private void queryByOid() {
		sc = new Scanner(System.in);
		int oid = sc.nextInt();
		ArrayList<User> list = om.findUserByOid(oid);
		msg("id\t账号\t密码\t年龄\t角色\t邮箱\t办事处\t账户状态");
		if(list.size() > 0){
			for(User o:list){
				msg(o);
			}
		}	
	}
	
	/** 办事处列表的客户端实现*/
	private void list1() {
		msg("oid\t办事处)");
		for(Office o:om.findAllOffice()){
			msg(o);
		}	
	}
	
	/** 办事处添加的客户端实现*/
	private void addOffice() {
		msg("请输入办事处(按一下格式:oid/办事处)");
		sc = new Scanner(System.in);
		String s = sc.nextLine();
		//根据"/"截取员工信息
		String[] info = s.split("/");
		if(om.findByOid(Integer.parseInt(info[0])) != null){
			msg("该办事处已存在,请重新输入");
			addOffice();	
		}else{
			Office o = new Office(Integer.parseInt(info[0]),
			         info[1]);
			om.add(o);
	        msg("添加成功");
			}
	}
	
	/** 删除用户的客户端实现*/
	private void delete(UserManager um) {
		sc = new Scanner(System.in);
		int id = sc.nextInt();
		if(um.delete(id)){
			msg("删除成功!");
		}else{
			msg("删除失败!");
		}
	}
	
	/** 用户列表的客户端实现*/
	private void list(UserManager um) {
		msg("id\t账号\t密码\t年龄\t角色\t邮箱\t办事处\t账户状态");
		for(User u:um.findAllUser()){
			msg(u);
		}
		
	}
	
	/** 修改用户角色(设置取消管理员)的客户端实现*/
	private void updateRole(UserManager um) {
		sc = new Scanner(System.in);
		msg("请输入用户id:");
		int id = sc.nextInt();
		msg("设置取消管理员(格式:0:普通用户/1:管理者):");
		int r = sc.nextInt();
		User u = um.findById(id);
		if(um.updateStatus(u, r)){
			msg("修改成功");
		}else{
			 msg("修改失败");
		}
	}
	
	/** 账号状态修改的客户端实现*/
	private void updateStatus(UserManager um,User user) {
		
		sc = new Scanner(System.in);
		msg("请输入状态(按一下格式:0:禁用/1:启用):");
		int s = sc.nextInt();
		if(um.updateStatus(user,s)){
		      msg("修改成功");
		}else{
		     msg("修改失败");
		}
		
	}
	
	/**个人信息查看的客户端实现*/
	private void showOne(UserManager um,User u ) {
		msg("id\t账号\t密码\t年龄\t角色\t邮箱\t办事处\t账户状态");
		msg(u);
	}
	
	/**修改密码的客户端实现*/
	private void updatePassword(UserManager um,User u) {
		sc = new Scanner(System.in);
		msg("请输入原来密码:");
		String s = sc.nextLine();
		msg("请输入修改的密码:");
		String s1 = sc.nextLine();
		if(u.getPassword().equals(s)){
			if(um.updatePassword(u,s1)){
			      msg("修改成功");
			}
		}else{
			msg("修改失败");
		}
	}
	
	/**添加的客户端实现*/
	private void addUser(UserManager um) {
		msg("请输入商品信息(按一下格式:id/账号/密码/年龄/角色/邮箱/办事处/账户状态");
		sc = new Scanner(System.in);
		String s = sc.nextLine();
		//根据"/"截取员工信息
		String[] info = s.split("/");
		if(um.findById(Integer.parseInt(info[0])) != null){
			msg("该商品信息已存在,请重新输入");
			addUser(um);
			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 msg(Object obj){
		System.out.println(obj);
	}
	
	public static void main(String[] args) {
		User u1 = new User(1,"li01","113",23,0,"66",201,1);
		User u2 = new User(2,"li02","123",23,0,"66",201,1);
		User u3 = new User(3,"li03","133",23,0,"66",201,1);
		User u4 = new User(4,"admin","admin123",23,1,"66",201,1);
		User u5 = new User(5,"li05","153",23,0,"66",201,1);

		UserManager um = new UserManager();
		um.add(u1);
		um.add(u2);
		um.add(u3);
		um.add(u4);
		um.add(u5);
		System.out.println(um.msg(u1));
		
		new Test().menu(um);
	}

}

3.总结

在刚完成代码时,我在测试类中用的是全局变量,所以一直不能实现登录功能,连主要的功能页面都跳不过去,后来是朋友告诉我不要使用成员变量,不然就会产生两个对象,要用局部变量,传入参数到方法当中才能成功。后来我改动过后终于实现了所有功能。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值