会计培训网站,陕西省建设造价协会网站,中国建设教育网官网是什么网站,推荐手机网站建设图书系统项目一.模块划分介绍Book-书籍相关模块Constant-常量值模块User-用户模块Utils-工具相关模块其中#xff0c;LibrarySystem是程序入口二.user模块角色上#xff0c;把图书系统分为管理员模块与普通用户模块#xff0c;同时支持多普通用户进行登录。每个用户的属性包…图书系统项目一.模块划分介绍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); } }