Advertisement

航空管理系统

阅读量:

用户模块:

办事处模块

办事处模块

  1. 获取指定办事处的全体人员信息
    特别提示:管理员享有全部功能权限,而普通用户仅限于修改密码与查看个人信息。
    用户类(User):
    标识符、账户名、密码、出生日期、权限类型、电子邮箱、部门ID、状态标记
    办事处类(Office):
    ID码、办公地点名

在创建一个User类之前,在类中声明id字段、用户名(username)、密码(passord)、年龄(age)、角色(role)、邮箱(email)以及办事处ID(officeID)。将这些属性声明为私有字段,并实现无参和有参的构造方法;此外还需要重写toString方法(用于以字符串形式显示用户信息)。代码如下:

复制代码
     package com;
    
    public class User {
    	private int id;
    	private String username;
    	private int age;
    	private String role;
    	private String email;
    	private int officeID;
    	private String status;
    
    public User() {
    	// TODO Auto-generated constructor stub
    }
    
    public User(int id, String username, int age, String role, String email, int officeID, String status) {
    	super();
    	this.id = id;
    	this.username = username;
    	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 int getAge() {
    	return age;
    }
    
    public void setAge(int age) {
    	this.age = age;
    }
    
    public String getRole() {
    	return role;
    }
    
    public void setRole(String 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 String getStatus() {
    	return status;
    }
    
    public void setStatus(String status) {
    	this.status = status;
    }
    
    @Override
    public String toString() {
    	return "User [ID=" + id + ", 账户=" + username + ", 年龄=" + age + ", 角色=" + role + ", 邮箱=" + email
    			+ ", 办公ID=" + officeID + ", 状态=" + status + "]";
    }
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

编写一个名为Office类的代码段,并使其属性全部声明为私有;随后添加无参数和带有参数的构造函数;最后覆盖原有的toString方法以实现按字符串方式进行内容展示

复制代码
    package com;
    
    public class Office {
    	private int officeId;
    	private String officename;
    	
    public Office() {
    	// TODO Auto-generated constructor stub
    }
    
    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;
    }
    
    @Override
    public String toString() {
    	return "Office [办公ID=" + officeId + ", 办公室名=" + officename + "]";
    }
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

构建一个系统类,在其属性中声明两个数组:一个是用于存储用户的元数据(如个人信息、权限等),另一个则是用于存储办公室的元数据(如部门信息、办公地点等)。同时设计并实现了这样一个公共接口构造函数:通过该函数即可方便地访问内部私有方法以完成系统的功能交互。

复制代码
    import java.io.BufferedReader;
    import java.io.EOFException;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class AviationSystem {
    	private Scanner scanner;
    	private ArrayList<User> users= new ArrayList<User>();
    	private User user;
    	private ArrayList<Office> offices=new ArrayList<Office>();	
    
    public AviationSystem() {
    	this.scanner = new Scanner(System.in);
    	login();
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

由于不同功能的管理员与普通用户之间存在差异性需求,因此分别设置两个不同的管理员菜单和普通用户菜单

复制代码
    	// 管理员系统菜单
    	private void adminStemMenu() {
    		System.out.println("-----------系统菜单-----------");
    		System.out.print("1.用户登录\t");
    		System.out.println("2.用户添加");
    		System.out.print("3.用户删除\t");
    		System.out.println("4.用户列表");
    		System.out.print("5.修改用户角色\t");
    		System.out.println("6.账号状态修改");
    		System.out.print("7.密码修改\t");
    		System.out.println("8.个人信息查看");
    		System.out.print("9.办事处添加\t");
    		System.out.println("10.办事处列表");
    		System.out.print("11.查询员工\t");
    		System.out.println("12.退出");
    		System.out.print(">>>");
    		adminChoiseMenu();
    	}
    
    //菜单选择
    	private void adminChoiseMenu() {
    		String select = scanner.nextLine();
    		switch (select) {
    		case "1"://用户登录
    			login();
    			adminStemMenu();
    			break;
    		case "2"://用户添加
    			addUser();
    			adminStemMenu();
    			break;
    		case "3"://用户删除
    			deleteUser();
    			adminStemMenu();
    			break;
    		case "4"://用户列表
    			userList();
    			adminStemMenu();
    			break;
    		case "5"://修改用户角色
    			updateRole();
    			adminStemMenu();
    			break;
    		case "6"://账号状态修改
    			updateStatus();
    			adminStemMenu();
    			break;
    		case "7"://密码修改
    			adminStemMenu();
    			break;
    		case "8"://个人信息查看
    			persionView(user);
    			adminStemMenu();
    			break;
    		case "9"://办事处添加
    			addOffice();
    			adminStemMenu();
    			break;
    		case "10"://办事处列表
    			officeList();
    			adminStemMenu();
    			break;
    		case "11"://查询员工
    			searchEmploee();
    			adminStemMenu();
    			break;
    		case "12"://退出
    			System.out.println("您已成功退出系统!");
    			break;
    
    		}
    	}
    //普通用户
    	private void userMenu() {
    		System.out.println("-------普通用户菜单----------");
    		System.out.println("1.个人信息");
    		System.out.println("2.修改密码");
    		System.out.println("3.用户登录");
    		System.out.println("4.退出");
    		System.out.println(">>>");
    		userChoiseMenu();
    	}
    
    	private void userChoiseMenu() {
    		String select = scanner.nextLine();
    		switch (select) {
    		case "1":
    			persionView(user);
    			userMenu();
    			break;
    		case "2":
    			userMenu();
    			break;
    		case "3":
    			userMenu();
    			break;
    		case "4":
    			System.out.println("您已成功退出系统!");
    			break;
    		}
    	}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

登录方法:当系统启动时内部无用户记录,在初始化阶段将生成一个默认用户名并存储于动态数组中。随后将执行以下验证步骤:首先检查输入的密码和用户名是否正确;然后确定该用户名是否为被禁用账户;接着检查该账户是否有管理员权限。验证成功后将引导至相应的操作菜单****

复制代码
    // 用户登录
    	private void login() {
    		User user = new User(1, "admin", "admin123", 0, "1", "1554905265@qq.com", 123, "1");
    		users.add(user);
    		// 输入账号及密码
    		System.out.print("请输入账号>");
    		String username = scanner.nextLine();
    		System.out.print("请输入密码>");
    		String password = scanner.nextLine();
    		if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
    			// 判断是否是禁用账户
    			if (user.getStatus().equals("1")) {
    				if(user.getRole().equals("1")) {
    					adminStemMenu();
    					System.out.println(2);
    				}else {
    					userMenu();
    				}
    			}else {
    				System.out.println("您的账号已被禁用!");
    				login();
    			}
    
    		}else {
    			System.out.println("您输入的账号与密码不匹配,请重新输入");
    			login();
    		}
    	}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

用户添加:根据Scanner方法输入对应信息,并保存到动态数组即可。

复制代码
    //用户添加
    	private void addUser() {
    		User user=new User();
    		//int id, String username, String password, int age, String role, String email, int officeID,String status
    		System.out.print("请输入id>");
    		user.setId(Integer.parseInt(scanner.nextLine()));
    		System.out.print("请输入账号>");
    		user.setUsername(scanner.nextLine());
    		System.out.println("请输入密码");
    		user.setPassword(scanner.nextLine());
    		System.out.print("请输入年龄>");
    		user.setAge(Integer.parseInt(scanner.nextLine()));
    		System.out.println("请输入角色:管理员(1),普通用户(0)");
    		user.setRole(scanner.nextLine());
    		System.out.println("请输入邮箱>");
    		user.setEmail(scanner.nextLine());
    		System.out.println("请输入办公ID>");
    		user.setOfficeID(Integer.parseInt(scanner.nextLine()));
    		System.out.println("请输入用户状态>");
    		user.setStatus(scanner.nextLine());
    		users.add(user);
    		System.out.println("用户添加成功");
    	}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

用户删除成功:录入需要删除的用户id,并通过foreach循环遍历数组的方式查找该用户的相关信息。
以防止误操作为前提,在系统中提供确认删除的操作提示。
在所有条件满足后执行真正的人工干预完成最终的删除成功操作。
这种方式不仅提升了系统的安全性还可以有效减少误删的可能性。

复制代码
    //用户删除
    	private void deleteUser() {
    		System.out.println("请输入需要删除的用户id");
    		int id=Integer.parseInt(scanner.nextLine());
    		for(User u:users) {
    			if(u.getId()==id) {
    				System.out.println("确认删除请按y/Y,取消删除请按任意键");
    				String result=scanner.nextLine();
    				if("y".equals(result)&&"Y".equals(result)) {
    					users.remove(u);
    				}else {
    					System.out.println("您已取消删除");
    					deleteUser();
    				}
    				
    			}else {
    				System.out.println("您输入的id不存在,请重新输入");
    				deleteUser();
    			}
    		}	
    	}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

用户列表:直接用foreach循环遍历数组输出数组内的用户信息即可

复制代码
    	//用户列表
    private void userList() {
    	for(User u:users) {
    		System.out.println(u);
    	}
    }
    
    
      
      
      
      
      
      
    
    AI写代码

首先,请您提供需要变更的用户ID;随后,请我们使用foreach循环遍历数组以查找此用户的详细信息;最后,请您明确想要调整的用户的职责内容,并完成保存操作

复制代码
    //修改用户角色
    	private void updateRole() {
    		System.out.println("请输入需要修改的用户id");
    		int id=Integer.parseInt(scanner.nextLine());
    		for(User u:users) {
    			if(id==u.getId()) {
    				System.out.println("请输入需要修改的角色管理员(1),普通用户(0)");
    				String role=scanner.nextLine();
    				u.setRole(role);
    				System.out.println("角色修改成功!");
    			}else {
    				System.out.println("您输入的id"+id+"不存在");
    			}
    		}		
    	}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

账号状态修改:与角色修改同理

复制代码
    //账号状态修改
    	private void updateStatus() {
    		System.out.println("请输入需要修改的用户id");
    		int id=Integer.parseInt(scanner.nextLine());
    		for(User u:users) {
    			if(id==u.getId()) {
    				System.out.println("请输入需要修改的账号状态启用(1),禁用(0)");
    				String status=scanner.nextLine();
    				u.setRole(status);
    				System.out.println("账号状态修改成功!");
    			}else {
    				System.out.println("您输入的id"+id+"不存在");
    			}
    		}		
    	}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

密码修改:首先验证用户当前输入的主 password 是否与系统存储的一致。若上述验证成功,则要求用户按照指定流程依次按照以下步骤操作:(1) 输入新的临时 password;(2) 再次重复上一步骤中的临时 password。若上述步骤(2)中两次临时 passwords 输入相同,则对该账户的主 password 进行更新设置;若上述步骤(2)中临时 passwords 输入不一致,则向用户弹出提示信息并引导用户重新执行修改流程。

复制代码
    private void updatePassword() {
    		System.out.println("请输入需要修改的用户id");
    		int id=Integer.parseInt(scanner.nextLine());
    		for(User u:users) {
    			if(id==u.getId()) {
    				System.out.print("请输入原密码>");
    				String oldpassword=scanner.nextLine();
    				if(u.getPassword().equals(oldpassword)) {
    					System.out.print("请输入新密码>");
    					String newPassword=scanner.nextLine();
    					System.out.print("请再次输入新密码>");
    					String newPassword1=scanner.nextLine();
    					String status=scanner.nextLine();
    					if(newPassword.equals(newPassword1)) {
    						u.setPassword(newPassword);
    						System.out.println("账号状态修改成功!");			
    					}else {
    						System.out.println("您两次输入的密码不一致");
    					}
    
    				}else {
    					System.out.println("您输入的密码与原密码不一致,请重新输入");
    					updatePassword();
    				}
    				
    			}else {
    				System.out.println("您输入的id"+id+"不存在");
    			}
    		}
    	}
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

个人信息查看:直接将方法传入User类的参数user,然后输出即可

复制代码
    //个人信息查看
    private void persionView(User user) {
    		System.out.println(user);	
    }
    
    
      
      
      
      
    
    AI写代码

办事处添加

复制代码
    //办事处添加
    	private void addOffice() {
    		Office office=new Office();
    		System.out.print("请输入办公id>");
    		office.setOfficeId(Integer.parseInt(scanner.nextLine()));
    		System.out.print("请输入办公室名>");
    		office.setOfficename(scanner.nextLine());
    		offices.add(office);
    		System.out.println("添加成功");
    	}
    
    
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

办事处列表:直接用foreach循环遍历数组,输出数组中存储的信息

复制代码
    //办事处列表
    	private void officeList() {
    		if(offices.size()==0) {
    			System.out.println("没有任何办事信息!");
    		}else {
    			for(Office o:offices) {
    				System.out.println(o);
    			}
    		}		
    	}
    
    
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

为了获取所需数据, 此次操作将依据部门名称来进行筛选。由于办公记录和用户档案存于不同分类中, 不仅需要确认输入的部门名称是否真实存在, 还需核实该部门对应的员工编号是否存在于用户的档案里才能提供相应的人员资料。

复制代码
    //查询员工
    private void searchEmploee() {
    	System.out.print("请输入需要查询员工的办公室名称>");
    	String officeName=scanner.nextLine();
    	for(Office o:offices) {
    		if(o.getOfficename().equals(officeName)&&o.getOfficeId()==user.getOfficeID()) {
    			System.out.println(o);
    		}else {
    			System.out.println("没有"+officeName+"办公室名称的存在");
    		}
    	}
    
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

个人理解,请多多指教

全部评论 (0)

还没有任何评论哟~