news 2026/4/18 11:15:31

图书管理系统-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进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:38:35

小红书内容提取终极指南:一键获取无水印素材

小红书内容提取终极指南:一键获取无水印素材 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader 你是否曾…

作者头像 李华
网站建设 2026/4/18 5:41:11

基于Wan2.2-T2V-A14B的智能脚本可视化工具设计思路

基于Wan2.2-T2V-A14B的智能脚本可视化工具设计思路 在影视策划会议上,导演对着一页文字剧本反复解释:“这里主角应该是缓慢转身,灯光从冷蓝渐变到暖黄,情绪要压抑中带着希望。”然而团队成员脑海中浮现的画面却各不相同。这种“想…

作者头像 李华
网站建设 2026/4/18 7:02:26

10、单页应用结账工作流的实现与管理

单页应用结账工作流的实现与管理 在单页应用(SPA)的开发中,结账工作流是一个常见且重要的功能。本文将详细介绍如何构建一个基于 MobX 的结账工作流系统,包括可观察状态的建模、工作流步骤的管理、路由的处理以及 React 组件的实现。 1. 可观察状态建模 结账工作流的核心…

作者头像 李华
网站建设 2026/4/18 7:58:06

如何用京东抢购神器轻松秒杀心仪商品:新手必看的终极指南

在电商促销季,你是否也曾因为手速不够快而错过心仪的商品?京东抢购助手正是为解决这一痛点而生的自动化工具,它能帮你完成从登录到下单的全流程操作,让你在各种抢购活动中游刃有余。 【免费下载链接】jd-assistant 京东抢购助手&a…

作者头像 李华
网站建设 2026/4/18 7:42:54

DriverStore Explorer:Windows驱动管理的终极解决方案

Windows系统驱动管理长期以来都是技术用户面临的挑战,DriverStore Explorer作为专业的开源工具,通过直观的可视化界面彻底改变了传统命令行操作的复杂性。这款名为RAPR的软件让普通用户也能轻松进行系统驱动优化,实现磁盘空间的高效管理。 【…

作者头像 李华