日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

武汉理工大学桂林老师java_武汉理工大学-Java面向对象与多线程综合实验-(1)封装、继承与多态...

發布時間:2023/12/31 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 武汉理工大学桂林老师java_武汉理工大学-Java面向对象与多线程综合实验-(1)封装、继承与多态... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗目標

實現一個檔案管理系統的用戶管理模塊的初步模型。功能包括:密碼機制的登錄界面;普通用戶對自身信息的查詢、修改;管理員用戶對其他用戶信息的增添、刪除、修改。

模塊解析

用戶分為:Administrator 檔案管理員,負責管理所有用戶的信息;Browser 檔案瀏覽員,負責文件的上傳與下載;Operator 檔案錄入員,可進行文件的下載與瀏覽。三者對應初始用戶分別為 kate、rose、jack,密碼均為123。

模塊結構圖:

模塊具體實現:

1)完成了用戶類 User 各屬性的封裝,并構造 setter()、getter() 方法實現屬性訪問;

2)不同的角色類 Administrator、Operator、Browser 繼承于用戶類 User;

3)通過多態實現不同菜單的展示,根據用戶角色的不同,系統自動調用對應角色的 showMenu() 方法;

4)本實驗未涉及數據庫,故使用 DataProcessing 類的成員 users 存儲用戶信息 (數據類型為 Hashtable 哈希表),且類內部有一系列方法可對 users 進行增刪查改。每次角色類需要對用戶進行操作時,調用 DataProcessing 類中的方法實現操作。

5)本實驗未涉及I/O流,故對文件操作時僅打印語句。

源代碼

·DataProcessing

import java.util.*;

public class DataProcessing {

// 哈希表

// 存儲模式類似于python的字典,以鍵值對方式存儲

static Hashtable users;

// 三個初始化用戶

static {

users = new Hashtable();

users.put("rose", new Browser("rose", "123", "browser"));

users.put("jack", new Operator("jack", "123", "operator"));

users.put("kate", new Administrator("kate", "123", "administrator"));

}

// 查找用戶

public static User searchUser(String name) {

if (users.containsKey(name)) {

return users.get(name);

}

return null;

}<

24000

/span>

// 密碼查找用戶

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 getAllUser() {

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

}

}

DataProcessing 類負責用戶信息的管理,需要注意的是 Hashtable 結構的用法:例如 put() 加入新的鍵值對,get() 返回對應鍵的值,containsKey() , remove() 等等,需要了解熟悉。

·User

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 String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getRole() {

return role;

}

public void setRole(String role) {

this.role = role;

}

public abstract void showMenu();

public boolean downloadFile(String fileID) {

System.out.println("下載文件... ...");

System.out.println("下載成功!");

return true;

}

public void showFileList() {

System.out.println("列表... ...");

}

public boolean changeSelfInfo(String password) {

if (DataProcessing.update(name, password, role)) {

this.password = password;

return true;

} else

return false;

}

public void exitSystem() {

System.out.println("系統退出, 謝謝使用 ! ");

System.exit(0);

}

}

·Administrator

import java.util.Map.Entry;

import java.util.Scanner;

public class Administrator extends User {

public Administrator(String name, String password, String role) {

super(name, password, role);

}

// 刪除用戶

public void delUser(String input_name) {

if (DataProcessing.delete(input_name)) {

System.out.println("刪除成功!");

} else {

System.out.println("刪除失敗!查找不到用戶名!");

}

}

// 添加用戶

public void addUser(String input_name, String input_password, String input_role) {

if (DataProcessing.insert(input_name, input_password, input_role)) {

System.out.println("添加成功!");

} else {

System.out.println("刪除失敗!用戶名已存在!");

}

}

// 列出用戶

public void listUser() {

for (Entry u : DataProcessing.users.entrySet()) {

String print_name = u.getValue().getName();

String print_password = u.getValue().getPassword();

String print_role = u.getValue().getRole();

System.out.println("Name:" + print_name + " Password:" + print_password + " Role:" + print_role);

}

}

@SuppressWarnings("resource")

public void showMenu() {

Scanner scan1 = new Scanner(System.in);

Scanner scan2 = new Scanner(System.in);

Scanner scan3 = new Scanner(System.in);

Scanner scan4 = new Scanner(System.in);

// 控制界面的開關

boolean administrator_isopen = true;

// 記錄用戶的選擇

String administrator_choice;

while (administrator_isopen) {

// 界面顯示

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("請輸入選項:");

administrator_choice = scan1.next();

if (administrator_choice.equals("1")) {

// 輸入用戶信息

System.out.print("請輸入用戶名:");

String input_name = scan2.next();

System.out.print("請輸入密碼:");

String input_password = scan3.next();

// 密碼查找用戶

if (DataProcessing.search(input_name, input_password) != null) {

System.out.print("請輸入身份:");

String input_role = scan4.next();

// 修改用戶

if (DataProcessing.update(input_name, input_password, input_role)) {

System.out.println("修改成功!");

} else {

System.out.println("修改失敗!查找不到用戶名!");

}

} else {

System.out.println("用戶名與密碼不符!");

}

} else if (administrator_choice.equals("2")) {

System.out.print("請輸入用戶名:");

String input_name = scan2.next();

// 刪除用戶

this.delUser(input_name);

} else if (administrator_choice.equals("3")) {

System.out.print("請輸入用戶名:");

String input_name = scan2.next();

System.out.print("請輸入密碼:");

String input_password = scan3.next();

System.out.print("請輸入身份:");

String input_role = scan4.next();

// 添加用戶

this.addUser(input_name, input_password, input_role);

} else if (administrator_choice.equals("4")) {

// 列出用戶

System.out.println("用戶列表");

this.listUser();

} else if (administrator_choice.equals("5")) {

System.out.print("請輸入文件名:");

String filename = scan2.next();

// 下載文件

super.downloadFile(filename);

} else if (administrator_choice.equals("6")) {

// 列出文件

System.out.println("文件列表");

super.showFileList();

} else if (administrator_choice.equals("7")) {

System.out.print("請輸入新密碼:");

String newpassword = scan2.next();

// 修改密碼

if (this.changeSelfInfo(newpassword)) {

System.out.println("修改成功!");

} else {

System.out.println("修改失敗");

}

} else if (administrator_choice.equals("8")) {

// 界面關閉

administrator_isopen = false;

} else {

System.out.println("輸入格式有誤!請重新輸入!");

}

}

}

}

選項數字采用的是 String 字符串類型而不是 int 整形,這樣做是為了防止手賤輸入字母出現類型不匹配的異常。showMenu() 方法是通過 while 循環 + 布爾型 isopen 變量實現界面的不斷顯示,當選擇退出選項時 isopen 置為 false,實現界面的退出。

·Browser

import java.util.Scanner;

public class Browser extends User {

public Browser(String name, String password, String role) {

super(name, password, role);

}

@SuppressWarnings("resource")

public void showMenu() {

Scanner scan1 = new Scanner(System.in);

Scanner scan2 = new Scanner(System.in);

// 控制界面的開關

boolean browser_isopen = true;

// 記錄用戶的選擇

String browser_choice;

while (browser_isopen) {

// 界面顯示

System.out.println("=======歡迎進入檔案瀏覽員菜單=======");

System.out.println(" 1.下載文件");

System.out.println(" 2.文件列表");

System.out.println(" 3.修改密碼");

System.out.println(" 4.退 出");

System.out.println("====================================");

System.out.print("請輸入選項:");

browser_choice = scan1.next();

if (browser_choice.equals("1")) {

System.out.print("請輸入檔案號:");

String fileID = scan2.next();

// 下載文件

super.downloadFile(fileID);

} else if (browser_choice.equals("2")) {

// 列出文件

System.out.println("文件列表");

super.showFileList();

} else if (browser_choice.equals("3")) {

System.out.print("請輸入新密碼:");

String newpassword = scan2.next();

// 修改密碼

if (this.changeSelfInfo(newpassword)) {

System.out.println("修改成功!");

} else {

System.out.println("修改失敗");

}

} else if (browser_choice.equals("4")) {

// 關閉頁面

browser_isopen = false;

} else {

System.out.println("輸入格式有誤!請重新輸入!");

}

}

}

}

· Operator

import java.util.Scanner;

public class Operator extends User {

public Operator(String name, String password, String role) {

super(name, password, role);

}

// 上傳文件

@SuppressWarnings({ "resource", "unused" })

public void uploadFile() {

Scanner scan1 = new Scanner(System.in);

Scanner scan2 = new Scanner(System.in);

Scanner scan3 = new Scanner(System.in);

System.out.println("上傳文件");

System.out.print("請輸入文件名:");

String filename = scan1.next();

System.out.print("請輸入檔案號:");

String fileID = scan2.next();

System.out.print("請輸入檔案描述:");

String fileDescrption = scan3.next();

System.out.println("上傳成功!");

}

@SuppressWarnings({ "resource" })

public void showMenu() {

Scanner scan1 = new Scanner(System.in);

Scanner scan2 = new Scanner(System.in);

// 控制頁面的開關

boolean operator_isopen = true;

// 記錄用戶的選擇

String operator_choice;

while (operator_isopen) {

// 顯示頁面

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("====================================");

System.out.print("請輸入選項:");

operator_choice = scan1.next();

if (operator_choice.equals("1")) {

// 上傳文件

this.uploadFile();

} else if (operator_choice.equals("2")) {

System.out.print("請輸入文件名:");

String filename = scan2.next();

// 下載文件

super.downloadFile(filename);

} else if (operator_choice.equals("3")) {

// 列出文件

System.out.println("文件列表");

super.showFileList();

} else if (operator_choice.equals("4")) {

System.out.print("請輸入新密碼:");

String newpassword = scan2.next();

// 修改密碼

if (this.changeSelfInfo(newpassword)) {

System.out.println("修改成功!");

} else {

System.out.println("修改失敗");

}

} else if (operator_choice.equals("5")) {

// 關閉界面

operator_isopen = false;

} else {

System.out.println("輸入格式有誤!請重新輸入!");

}

}

}

}

·Main

import java.util.Scanner;

public class Main {

@SuppressWarnings({ "resource" })

public static void main(String[] args) {

Scanner scan1 = new Scanner(System.in);

Scanner scan2 = new Scanner(System.in);

Scanner scan3 = new Scanner(System.in);

// 控制界面的開閉

boolean main_isopen = true;

// 用于記錄用戶的選擇

String main_choice;

while (main_isopen) {

// 界面顯示

System.out.println("=======歡迎進入檔案系統=======");

System.out.println(" 1.登 錄 ");

System.out.println(" 2.退 出 ");

System.out.println("==============================");

System.out.print("請輸入選項:");

main_choice = scan1.next();

if (main_choice.equals("1")) {

// 輸入用戶信息

System.out.print("請輸入用戶名:");

String input_name = scan2.next();

System.out.print("請輸入密碼:");

String input_password = scan3.next();

// 對密碼正確性的檢查

User user = DataProcessing.search(input_name, input_password);

if (user == null) {

System.out.println("用戶名與密碼不符!");

} else {

// 打開對應身份的界面

user.showMenu();

}

} else if (main_choice.equals("2")) {

// 退出情況,將界面關閉

main_isopen = false;

} else {

// 格式輸入錯誤的情況

System.out.println("輸入格式有誤!請重新輸入!");

}

}

System.out.println("系統退出,感謝使用!");

}

}

寫在最后

聲明:本文內容來源于武漢理工大學2019-2020學年Java編程實驗,僅供學習參考。如有不足錯誤地方,還請指出。

代碼不要無腦抄,很多細節沒有詳細講解,需要讀者自行理解。編程是實踐練出來的,祝愿讀者在編程之路上不斷進步!

點贊

收藏

分享

文章舉報

-Kingzy-

發布了12 篇原創文章 · 獲贊 0 · 訪問量 604

私信

關注

總結

以上是生活随笔為你收集整理的武汉理工大学桂林老师java_武汉理工大学-Java面向对象与多线程综合实验-(1)封装、继承与多态...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩视频在线 | 青青精品 | 蜜臀av一区二区三区有限公司 | 欧美性第一页 | 婷婷色图| 婷婷久久久久 | 国产色婷婷一区二区三区竹菊影视 | 欧美卡一卡二卡三 | 国产睡熟迷奷系列精品视频 | 久久久精品美女 | 国产黄色录像 | 三上悠亚一区二区在线观看 | 国产内射一区二区 | 日日操夜夜撸 | 麻豆电影网站 | 午夜av导航 | 亚洲乱码久久 | 日韩中文在线一区 | 成人一级黄色片 | 欧美巨乳在线观看 | 9cao| 亚洲第一天堂久久 | 久久亚洲一区二区三区四区五区 | 欧美福利第一页 | 久久综合婷婷 | 欧美自拍第一页 | 黑人极品ⅴideos精品欧美棵 | 成人久久久久 | 亚洲熟女乱色一区二区三区 | 91丨porny丨成人蝌蚪 | 欧美二区在线观看 | 波多野结衣在线一区 | 日本一区二区三区在线播放 | 久久亚洲精品国产精品黑人v | 久久新网址 | 国产最爽的乱淫视频国语对白 | 精品自拍视频 | 9999免费视频| 久久婷婷综合色丁香五月 | 午夜激情男女 | 深爱开心激情网 | 成人做爰69片免费看 | 91黄色免费版 | 精品人妻无码一区二区三 | 国内精品久久久久久久影视简单 | 国产不卡在线观看视频 | 欧美一区久久 | 夜夜操综合 | 中文字幕久久久 | 91粉色视频 | 熊猫av| 91精品啪在线观看国产 | 制服丝袜av电影 | 日本一区视频在线观看 | 久久精品99久久久久久 | 欧美激情15p| 中文亚洲欧美 | 男人天堂综合网 | 亚洲免费在线观看视频 | 在哪里看毛片 | 天天射天天草 | 小sao货水好多真紧h无码视频 | 制服师生在线 | 亚洲四区 | 国产成人无码精品久久久性色 | 成年免费视频黄网站在线观看 | av影视网| 精品视频一区二区三区四区五区 | 国产成人主播 | 久久久久久久福利 | 少妇粉嫩小泬白浆流出 | 欧美精品一区二区性色a+v | 美女啪啪网址 | 精品无码久久久久 | 亚洲熟女乱色综合亚洲av | 中国少妇初尝黑人巨大 | 黄色av免费播放 | 日韩色综合网 | 18视频在线观看网站 | 欧美成人高清在线 | 四季av一区二区三区免费观看 | 69国产在线| 天堂av免费观看 | 免费观看黄色的网站 | 极品美女销魂一区二区三区 | www.在线观看av | 最新中文字幕在线观看视频 | 日本免费一区二区在线 | 伊人国产在线视频 | 成人精品国产免费网站 | 日本一区二区三区久久 | 精品人妻一区二区三区视频 | 久久99精品久久久久久国产越南 | 男女av在线 | 欧美黄网站在线观看 | 狠狠干超碰 | av一区二区三 | 精品国产成人av在线免 | 国产免费一区二区三区免费视频 |