0
点赞
收藏
分享

微信扫一扫

知识付费源码|知识付费网站搭建|知识付费小程序源码

幸甚至哉歌以咏志 2022-03-25 阅读 31

  设计一个在线教育知识付费源码系统(面向对象设计)。
  
  解决方案:假设我们想要设计一个基本的内容付费阅读系统并带小程序,提供以下功能:
  
  •查找知识数据库并阅读付费内容;
  
  •用户成员的创建和扩展;
  
  •基于用户分级权限管理,并且这个用户只能获权后阅读。
  
  完整源码:zs.xcxyms.top
  
  类OnlineReaderSystem代表程序的主体。我们可以实现这个类,让它存储有关所有涉及用户管理的权限分级的信息,并刷新显示,但这会使这个类变得相当庞大。相反,我们选择将这些组件拆分成Library、UserManager和Display类。
  
  类:
  
  1、用户
  
  2、知识
  
  3、UserManager
  
  4、OnlineReaderSystem


  代码如下:

  import java.util.HashMap;
  /*
  * This class represents the system
  */
  class OnlineReaderSystem {
  private Library library;
  private UserManager userManager;
  private Display display;
  private Book activeBook;
  private User activeUser;
  public OnlineReaderSystem()
  {
  userManager = new UserManager();
  library = new Library();
  display = new Display();
  }
  public Library getLibrary()
  {
  return library;
  }
  public UserManager getUserManager()
  {
  return userManager;
  }
  public Display getDisplay()
  {
  return display;
  }
  public Book getActiveBook()
  {
  return activeBook;
  }
  public void setActiveBook(Book book)
  {
  activeBook = book;
  display.displayBook(book);
  }
  public User getActiveUser()
  {
  return activeUser;
  }
  public void setActiveUser(User user)
  {
  activeUser = user;
  display.displayUser(user);
  }
  }
  /*
  * We then implement separate classes to handle the user
  * manager, the library, and the display components
  */
  /*
  * This class represents the Library which is responsible
  * for storing and searching the books.
  */
  class Library {
  private HashMap<Integer, Book> books;
  public Library()
  {
  books = new HashMap<Integer, Book>();
  }
  public Boolean addBook(int id, String details, String title)
  {
  if (books.containsKey(id)) {
  return false;
  }
  Book book = new Book(id, details, title);
  books.put(id, book);
  return true;
  }
  public Boolean addBook(Book book)
  {
  if (books.containsKey(book.getId())) {
  return false;
  }
  books.put(book.getId(), book);
  return true;
  }
  public boolean remove(Book b)
  {
  return remove(b.getId());
  }
  public boolean remove(int id)
  {
  if (!books.containsKey(id)) {
  return false;
  }
  books.remove(id);
  return true;
  }
  public Book find(int id)
  {
  return books.get(id);
  }
  }
  /*
  * This class represents the UserManager which is responsible
  * for managing the users, their membership etc.
  */
  class UserManager {
  private HashMap<Integer, User> users;
  public UserManager()
  {
  users = new HashMap<Integer, User>();
  }
  public Boolean addUser(int id, String details, String name)
  {
  if (users.containsKey(id)) {
  return false;
  }
  User user = new User(id, details, name);
  users.put(id, user);
  return true;
  }
  public Boolean addUser(User user)
  {
  if (users.containsKey(user.getId())) {
  return false;
  }
  users.put(user.getId(), user);
  return true;
  }
  public boolean remove(User u)
  {
  return remove(u.getId());
  }
  public boolean remove(int id)
  {
  if (users.containsKey(id)) {
  return false;
  }
  users.remove(id);
  return true;
  }
  public User find(int id)
  {
  return users.get(id);
  }
  }
  /*
  * This class represents the Display, which is responsible
  * for displaying the book, it's pages and contents. It also
  * shows the current user. * It provides the method
  * turnPageForward, turnPageBackward, refreshPage etc.
  */
  class Display {
  private Book activeBook;
  private User activeUser;
  private int pageNumber = 0;
  public void displayUser(User user)
  {
  activeUser = user;
  refreshUsername();
  }
  public void displayBook(Book book)
  {
  pageNumber = 0;
  activeBook = book;
  refreshTitle();
  refreshDetails();
  refreshPage();
  }
  public void turnPageForward()
  {
  pageNumber++;
  System.out.println("Turning forward to page no " +
  pageNumber + " of book having title " +
  activeBook.getTitle());
  refreshPage();
  }
  public void turnPageBackward()
  {
  pageNumber--;
  System.out.println("Turning backward to page no " +
  pageNumber + " of book having title " +
  activeBook.getTitle());
  refreshPage();
  }
  public void refreshUsername()
  {
  /* updates username display */
  System.out.println("User name " + activeUser.getName() +
  " is refreshed");
  }
  public void refreshTitle()
  {
  /* updates title display */
  System.out.println("Title of the book " +
  activeBook.getTitle() + " refreshed");
  }
  public void refreshDetails()
  {
  /* updates details display */
  System.out.println("Details of the book " +
  activeBook.getTitle() + " refreshed");
  }
  public void refreshPage()
  {
  /* updated page display */
  System.out.println("Page no " + pageNumber + " refreshed");
  }
  }
  /*
  * The classes for User and Book simply hold data and
  * provide little functionality.
  * This class represents the Book which is a simple POJO
  */
  class Book {
  private int bookId;
  private String details;
  private String title;
  public Book(int id, String details, String title)
  {
  bookId = id;
  this.details = details;
  this.title = title;
  }
  public int getId()
  {
  return bookId;
  }
  public void setId(int id)
  {
  bookId = id;
  }
  public String getDetails()
  {
  return details;
  }
  public void setDetails(String details)
  {
  this.details = details;
  }
  public String getTitle()
  {
  return title;
  }
  public void setTitle(String title)
  {
  this.title = title;
  }
  }
  /*
  * This class represents the User which is a simple POJO
  */
  class User {
  private int userId;
  private String name;
  private String details;
  public void renewMembership()
  {
  }
  public User(int id, String details, String name)
  {
  this.userId = id;
  this.details = details;
  this.name = name;
  }
  public int getId()
  {
  return userId;
  }
  public void setId(int id)
  {
  userId = id;
  }
  public String getDetails()
  {
  return details;
  }
  public void setDetails(String details)
  {
  this.details = details;
  }
  public String getName()
  {
  return name;
  }
  public void setName(String name)
  {
  this.name = name;
  }
  }
  // This class is used to test the Application
  public class AppTest {
  public static void main(String[] args)
  {
  OnlineReaderSystem onlineReaderSystem = new OnlineReaderSystem();
  Book dsBook = new Book(1, "It contains Data Structures", "Ds");
  Book algoBook = new Book(2, "It contains Algorithms", "Algo");
  onlineReaderSystem.getLibrary().addBook(dsBook);
  onlineReaderSystem.getLibrary().addBook(algoBook);
  User user1 = new User(1, " ", "Ram");
  User user2 = new User(2, " ", "Gopal");
  onlineReaderSystem.getUserManager().addUser(user1);
  onlineReaderSystem.getUserManager().addUser(user2);
  onlineReaderSystem.setActiveBook(algoBook);
  onlineReaderSystem.setActiveUser(user1);
  onlineReaderSystem.getDisplay().turnPageForward();
  onlineReaderSystem.getDisplay().turnPageForward();
  onlineReaderSystem.getDisplay().turnPageBackward();
  }
  }

  知识付费源码系统类图:聚合和多重性是设计类图时需要考虑的两个重要问题。让我们来详细了解一下。

 
  聚合,
  
  聚合只是表示一种关系,其中一件事可以独立于其他事存在。它意味着在定义类时创建或组合不同的抽象。聚合表示为类图中关系的一部分。在下面的图中,我们可以看到聚合是由一个指向超类的菱形末端的边表示的。“图书管理系统”是由各种类组成的超类。
  
  这些类是User、Book和Librarian。此外,对于“Account”类,“User”是一个超类。所有这些,共享一种关系,这些关系被称为聚合关系。
  
  多重性,
  
  多重性意味着一个类的元素数量与另一个类相关联。这些关系可以是一对一、多对多、多对一或一对多。用来表示我们使用的一个元素1,表示我们使用的零元素0,以及我们使用的许多元素*. 我们可以从图表中看到;许多用户与表示的许多书相关联*这表示多对多类型的关系。一个用户只有一个用1表示的帐户,这表示a一对一的类型的关系。
  
  知识付费系统类图简单地描述了知识管理系统类的结构、属性、方法或操作、对象之间的关系。

举报

相关推荐

0 条评论