news 2026/1/3 9:45:56

图书管理系统-user

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图书管理系统-user

图书系统项目

一.模块划分介绍

Book-书籍相关模块

Constant-常量值模块

User-用户模块

Utils-工具相关模块

其中,LibrarySystem是程序入口

二.user模块

角色上,把图书系统分为管理员模块与普通用户模块,同时支持多普通用户进行登录。

每个用户的属性包括:姓名、ID、角色

2.1菜单方法的处理

public abstract class User { protected String name; // ⽤⼾名 protected int userID; // ⽤⼾ID protected String role; // ⽤⼾⻆⾊(管理员或普通⽤⼾) // 构造函数 public User(String name, int userID, String role) { this.name = name; this.userID = userID; this.role = role; } public String getName() { return name; } public int getUserID() { return userID; } public String getRole() { return role; } /** * 定义菜单⽅法 该⽅法打印菜单同时 输出菜单的选择 * @return */ public abstract int display(); }

2.2AdminUser对象

public class AdminUser extends User{ public AdminUser(String name,int userID) { super(name,userID,"管理员"); } @Override public int display() { System.out.println("管理员 " + name + " 的操作菜单:"); 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. 查看最后欢迎的前K本书"); System.out.println("9. 查看库存状态"); System.out.println("10. 检查超过⼀年未下架的图书"); System.out.println("请选择你的操作:"); return scanner.nextInt(); } //其他操作⽅法 //上架图书 public void addBook() { } //图书修改 ⽀持修改书名 作者 类别 public void updateBook() { } //删除书籍 public void removeBook() { } //统计每本书的借阅次数 public void borrowCount() { } //查询最受欢迎的前n本书 public void generateBook() { } //查看库存状态 public void checkInventoryStatus() { } //并移除上架超过⼀年的图书 public void checkAndRemoveOldBooks() { } public void exit() { } }

2.3NormalUser对象

public class NormalUser extends User { //如果是普通⽤⼾,这⾥写死 public NormalUser(String name, int userID) { super(name, userID, "普通⽤⼾"); } private void loadBorrowedBook() { } private void storeBorrowedBook() { } @Override public int display() { System.out.println("普通⽤⼾ " + name + " 的操作菜单:"); 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("请选择你的操作:"); return scanner.nextInt(); } //借阅图书 public void borrowBook() { } //归还图书 public void returnBook() { } // 查看个⼈借阅情况 public void viewBorrowBooks() { } }

2.4LibrarySystem中整合当前⽤⼾相关信息

LibrarySystem类中每次通过new关键字来创建对象,如果有多个普通⽤⼾这⾥需要同样的代码new 很多次,代码会有⼀些重复。

public class LibrarySystem{ public static void main(String[] args) { // 直接创建管理员⽤⼾ User adminUser = new AdminUser("刘备", 1); // 直接创建普通⽤⼾ User normalUser1 = new NormalUser("关⽻", 2); User normalUser2 = new NormalUser("张⻜", 3); } }

三.User模块-引⼊⼯⼚⽅法模式

在user包下创建factory包

1.创建⼯⼚接⼝

public interface IUserFactory { User createUser(String name, int userID); }

2.创建具体的⼯程

public class AdminUserFactory implements IUserFactory{ @Override public User createUser(String name, int userID) { return new AdminUser(name,userID); } } public class NormalUserFactory implements IUserFactory{ @Override public User createUser(String name, int userID) { return new NormalUser(name,userID); } }

3.修改LibrarySystem

public class LibrarySystem{ public static void main(String[] args) { IUserFactory adminUserFactory = new AdminUserFactory(); User adminUser = adminUserFactory.createUser("刘备",1); IUserFactory normalUserFactory = new NormalUserFactory(); User normalUser1 = normalUserFactory.createUser("关⽻",2); User normalUser2 = normalUserFactory.createUser("张⻜",3); } }

四.User模块-引⼊代理模式控制对象权限

通过代理真实的⽤⼾realUser通过构造⽅法进⾏传递。每⼀个操作通过权限检查进⾏调⽤。

public class ProxyUser { //被代理的真实⽤⼾ private User realUser; public ProxyUser(User user) { //对被代理的对象进⾏赋值 realUser = user; } public User getRealUser() { return realUser; } //其他操作 //调⽤菜单 public int display() { } //添加书籍操作 public void addBook() { } //更新书籍操作 public void updateBook() { } //移除图书 public void removeBook() { } //查看图书的借阅次数 public void borrowCount( ) { } //查看最受欢迎的前K本书 public void generateBook() { } //查看库存状态 public void checkInventoryStatus() { } //移除上架超过1年的书籍 public void checkAndRemoveOldBooks() { } //--------------普通相关⽅法---------------// //借阅图书 public void borrowBook() { //归还图书 public void returnBook() { } //查看个⼈借阅情况 public void viewBorrowHistory() { } }

LibrarySystem类中进⾏整合

public class LibrarySystem{ public static void main(String[] args) { IUserFactory adminUserFactory = new AdminUserFactory(); User adminUser = adminUserFactory.createUser("刘备",1); IUserFactory normalUserFactory = new NormalUserFactory(); User normalUser1 = normalUserFactory.createUser("关⽻",2); User normalUser2 = normalUserFactory.createUser("张⻜",3); /** * 1.4 使⽤代理模式来管理权限 * 使⽤代理模式来控制 对象的访问 */ ProxyUser proxyUserAdmin = new ProxyUser(adminUser); ProxyUser proxyUserNormalG = new ProxyUser(normalUser1); ProxyUser proxyUserNormalZ = new ProxyUser(normalUser2); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/23 5:50:41

Wan2.2-T2V-A14B在AI导游系统中的实景融合生成能力探索

Wan2.2-T2V-A14B在AI导游系统中的实景融合生成能力探索 你有没有想过,站在敦煌莫高窟前,眼前突然浮现出千年前画师执笔作画的场景?或者漫步故宫太和殿广场时,亲眼目睹一场恢弘的清代登基大典缓缓上演?这不再是科幻电影…

作者头像 李华
网站建设 2025/12/29 11:29:01

终极解决方案:XiaoMusic让小爱音箱变身全能音乐管家

终极解决方案:XiaoMusic让小爱音箱变身全能音乐管家 【免费下载链接】xiaomusic 使用小爱同学播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱的音乐播放限制而烦恼吗?…

作者头像 李华
网站建设 2025/12/23 2:37:03

Wan2.2-T2V-A14B在社交媒体梗图视频生成中的传播潜力

Wan2.2-T2V-A14B在社交媒体梗图视频生成中的传播潜力技术演进与内容生产的范式转移 当一条“打工人周一综合征”的段子在微博热搜上刚冒头,不到一小时,抖音和小红书就已经出现了十几个风格各异但主题一致的短视频——主角在床上翻滚挣扎、闹钟响了八百遍…

作者头像 李华
网站建设 2025/12/27 12:21:52

[SAP MM] 常规外部采购业务流程SAP操作练习

练习案例数据公司代码1010工厂1010库存地点0001采购组织1010采购组001供应商代码799974物料代码696常规外部采购业务流程: 创建采购订单 --> 过账收货 --> 录入发票1.创建采购订单 ME21N使用事务码ME21N创建采购订单向供应商799974采购20个单价为1000 CNY的物料696&#…

作者头像 李华
网站建设 2025/12/24 4:31:43

Windows热键冲突诊断专家:快速定位占用程序的终极解决方案

Windows热键冲突诊断专家:快速定位占用程序的终极解决方案 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 在数字工作环境中&#xf…

作者头像 李华