编写一个程序,实现档案管理系统中的用户管理模块。要求模块中实现用户的模拟登录过程。通过用户输入,获取用户名和口令;与事先记录在程序中的用户信息进行对比,通过口令验证后才能使用系统。用户分为系统管理人员、档案录入人员,档案浏览人员三类,相关类图如下所示。
(1)要求在用户类中实现封装,并构造setter、getter方法实现属性的访问。
(2)通过继承方式加以实现上述类。
(3)通过多态,实现用户菜单项的展示,根据用户角色不同,系统自动调用对应showMenu()方法。
(4)在未讲数据库之前,系统中已存在用户的信息放置在Hashtable中。提供DataProcessing类实现数据的查找、插入、更新和删除。(此类可提供给学生直接使用)
(5)在未讲I/O之前,系统中的文件操作的方法可虚化,只用打印语句即可。
public abstract class User {
private String name;
private String password;
private String role;
User(String name,String password,String role){
this.name=name;
this.password=password;
this.role=role;
}
public abstract void showMenu();
public void showFileList() {
System.out.println("以下是文件列表:");
}
public void downloadFile() {
System.out.println("下载文件成功!");
}
public boolean changeSelfInfo(String password) {
if(DataProcessing.update(name,password,role)) {
this.password=password;
System.out.println("修改成功!");
return true;
}
else {
System.out.println("修改失败!");
return false;
}
}
public void exitSystem() {
System.out.println("系统退出,谢谢使用!");
System.exit(0);
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setPassword(String password) {
this.password=password;
}
public String getPassword() {
return password;
}
public void setRole(String role) {
this.role=role;
}
public String getRole() {
return role;
}
}
import java.util.Enumeration;
import java.util.Hashtable;
public class DataProcessing {
static Hashtable<String,User> users;
static {
users=new Hashtable<String,User>();
users.put("hjy", new Operator("hjy","111","operator"));
users.put("cr", new Browser("cr","000","browser"));
users.put("myk", new Administrator("myk","250","administrator"));
}
public static User searchUser(String name) {
if(users.containsKey(name)) {
return users.get(name);
}
return null;
}
public static User search(String name,String password) {
if(users.containsKey(name)) {
User temp=users.get(name);
if(temp.getPassword().equals(password))
return temp;
}
return null;
}
public static Enumeration<User> getAllUser(){
Enumeration<User> e=users.elements();
return e;
}
public static boolean update(String name,String password,String role) {
User user;
if(users.containsKey(name)) {
if(role.equalsIgnoreCase("administrator"))
user=new Administrator(name,password,role);
else if(role.equalsIgnoreCase("operator"))
user=new Operator(name,password,role);
else
user=new Browser(name,password,role);
users.put(name, user);
return true;
}
else return false;
}
public static boolean insert(String name,String password,String role) {
User user;
if(users.containsKey(name))
return false;
else {
if(role.equalsIgnoreCase("administrator"))
user=new Administrator(name,password,role);
else if(role.equalsIgnoreCase("operator"))
user=new Operator(name,password,role);
else
user=new Browser(name,password,role);
users.put(name, user);
return true;
}
}
public static boolean delete(String name) {
if(users.containsKey(name)) {
users.remove(name);
return true;
}
else return false;
}
}
import java.util.Enumeration;
import java.util.Scanner;
public class Administrator extends User{
private Scanner sc;
Administrator(String name, String password, String role) {
super(name, password, role);
}
public void changeUserInfo() {
System.out.println("请输入要修改的用户姓名:");
String cn=sc.next();
System.out.println("请输入新的用户密码:");
String cm=sc.next();
System.out.println("请输入新的用户角色:");
String cr=sc.next();
if(DataProcessing.update(cn, cm, cr)) {
System.out.println("修改用户信息成功!");
}
else System.out.println("修改失败!");
}
public void delUser() {
System.out.println("请输入要删除的用户姓名:");
String dn=sc.next();
if(DataProcessing.delete(dn)) {
System.out.println("删除成功!");
}
else System.out.println("删除失败!该用户不存在");
}
public void addUser() {
System.out.println("请输入要增加的用户姓名:");
String an=sc.next();
System.out.println("请输入要增加的用户密码:");
String am=sc.next();
System.out.println("请输入要增加的用户角色:");
String ar=sc.next();
if(DataProcessing.insert(an, am, ar)) {
System.out.println("增加用户"+an+"成功!");
}
else System.out.println("增加用户"+an+"失败!");
}
public void listUser() {
Enumeration<User> e=DataProcessing.getAllUser();
User user;
while(e.hasMoreElements()) {
user=e.nextElement();
System.out.println("姓名:"+user.getName()+"密码:"+user.getPassword()+"角色:"+user.getRole());
}
}
public void showMenu() {
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.退出");
sc=new Scanner(System.in);
int i=sc.nextInt();
switch(i) {
case 1:{
changeUserInfo();
break;
}
case 2:{
delUser();
break;
}
case 3:{
addUser();
break;
}
case 4:{
listUser();
break;
}
case 5:{
downloadFile();
break;
}
case 6:{
showFileList();
break;
}
case 7:{
System.out.println("请输入新密码:");
String psd=sc.next();
changeSelfInfo(psd);
break;
}
case 8:{
exitSystem();
}
default:{
System.out.println("输入非法!请重新输入!");
break;
}
}
showMenu();
}
}
import java.util.Scanner;
public class Operator extends User{
private Scanner sc;
Operator(String name, String password, String role) {
super(name, password, role);
}
public void showMenu() {
System.out.println("欢迎进入档案操作员菜单!");
System.out.println("1.上传文件");
System.out.println("2.下载文件");
System.out.println("3.文件列表");
System.out.println("4.修改密码");
System.out.println("5.退出");
Scanner sc = new Scanner(System.in);
int i=sc.nextInt();
switch(i) {
case 1:{
uploadFile();
break;
}
case 2:{
downloadFile();
break;
}
case 3:{
showFileList();
break;
}
case 4:{
System.out.println("请输入新密码:");
String psd=sc.next();
changeSelfInfo(psd);
break;
}
case 5:{
exitSystem();
}
default:{
System.out.println("输入非法!请重新输入!");
break;
}
}
showMenu();
}
public void uploadFile() {
//上传文件
System.out.println("上传成功!");
}
}
import java.util.Scanner;
public class Browser extends User{
Browser(String name, String password, String role) {
super(name, password, role);
}
public void showMenu() {
System.out.println("欢迎进入档案浏览员菜单!");
System.out.println("1.下载文件");
System.out.println("2.文件列表");
System.out.println("3.修改密码");
System.out.println("4.退出");
System.out.print("请选择:");
Scanner sc = new Scanner(System.in);
int i=sc.nextInt();
switch(i) {
case 1:{
downloadFile();
break;
}
case 2:{
showFileList();
break;
}
case 3:{
System.out.println("请输入新密码:");
String psd=sc.nextLine();
changeSelfInfo(psd);
break;
}
case 4:{
exitSystem();
}
default:{
System.out.println("输入非法!请重新输入!");
break;
}
}
showMenu();
}
}
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
while(true) {
System.out.println("欢迎进入档案管理系统!");
System.out.println("1.登录");
System.out.println("2.退出");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
if(i==1) {
System.out.println("请输入用户名:");
String name=sc.next();
if(DataProcessing.searchUser(name)!=null) {
System.out.println("请输入密码:");
String password=sc.next();
if(DataProcessing.search( name ,password)!=null)
DataProcessing.search(name, password).showMenu();
else System.out.println("密码错误!");
}
else {
System.out.println("用户不存在!");
}
}
else if(i==2) {
System.exit(0);
}
else {
System.out.println("输入非法!请重新输入。");
}
}
}
}
以下是需要完成的结果展示:Java面向对象与多线程综合实验(一)之封装、继承与多态