设计一个在线教育知识付费源码系统(面向对象设计)。
  
  解决方案:假设我们想要设计一个基本的内容付费阅读系统并带小程序,提供以下功能:
  
  •查找知识数据库并阅读付费内容;
  
  •用户成员的创建和扩展;
  
  •基于用户分级权限管理,并且这个用户只能获权后阅读。

仓库完整源码: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 Applicationpublic 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一对一的类型的关系。
  
  知识付费系统类图简单地描述了知识管理系统类的结构、属性、方法或操作、对象之间的关系。

知识付费源码|知识付费网站搭建|知识付费小程序源码相关推荐

  1. 小程序源码:网课查题微信小程序源码下载,题库资源丰富自动采集,支持语音拍照识别

    这是一款网课查题微信小程序源码 题库资源丰富自动采集, 支持语音拍照识别 该款采用接口方式,所以题库自动全网采集 而且该款小程序无需服务器和域名即可搭建 大家解压源码然后使用微信开发者工具打开源码 然 ...

  2. 小程序源码:老年祝福短视频微信小程序源码下载支持流量主

    这是一款相当于是老年人的一个短视频小程序 里面的视频内容基本都是那些老年人喜欢转发的 所以说可以用此来打入老年人的圈子让老年人看了基本都会转发 所以裂变还是挺不错的! 这一款小程序的视频是自动化的 视 ...

  3. thinkphp开发的活动报名小程序源码带后台管理完整的报名小程序源码

    介绍: 活动报名小程序源码,基于thinkphp开发的报名小程序源码,带有后台管理,用户发布活动信息.报名可以后台管理,简单测试了一下,基本都还是可以的. 不过需要注意的是,用户注册部分是发送手机短信 ...

  4. 小程序源码:修复登录大河盲盒小程序源码,实现运营“玩法自由”,超多功能的盲盒型抽奖挖矿程序源码下载

    程序介绍 应用支持哪些类型的商品? 1.实物需邮寄商品,用户领取时填写收货信息,后台发货. 2.虚拟商品,如:教程.课程.图文.图片.下载链接等等. 3.卡密商品,后台添加卡密商品,填写使用方法.批量 ...

  5. 小程序源码:端午送粽子祝福微信小程序源码下载支持打赏模式带背景音乐

    端午节的时候很火的一款小程序 给亲朋好友送祝福也是一款引流非常不错的一款小程序 支持打赏小程序模式实现盈利模式 当然了,有能力的小伙伴也可以魔改一下做成别的小程序也是可以的 该小程序无需服务器和域名, ...

  6. 七夕节微信表白墙小程序源码/基于Laravel的表白墙微信小程序源码

    七夕节微信表白墙小程序源码/基于Laravel的表白墙微信小程序源码 ☑️ 编号:ym499 ☑️ 品牌:无 ☑️ 语言:小程序 ☑️ 大小:11.2MB ☑️ 类型:微信表白墙小程序 ☑️ 支持:小 ...

  7. 小程序源码:后台版本趣味测试微信小程序源码下载支持自定义问题等等

    这是一款有后台版本的趣味测试小程序 支持用户自定义添加和删除问题 支持流量主后台设置 支持用户个人中心等等 该程序是微擎框架的,所以后台需要有微擎 PS:该小程序的登录接口并未替换更新还是采用的旧版登 ...

  8. 小程序源码:AI智能配音助手微信小程序源码支持多种声音场景选择

    大家好今天给大家带来一款配音小程序 这款小程序支持多种不同声音和场景的选择更人性化 比如说支持各地区的方言,英文,童声呀等等 另外也支持男声女声的选择,反正就是模板那些非常的多 当然啦音量,语调,语速 ...

  9. 【小程序源码】自动采集头像大全微信小程序源码支持多分类

    这是一款以头像为主的一款微信小程序源码 该小程序内包含了各种分类,各种样式都有 可以说是目前最全的一款头像小程序源码 五大分类情侣,女生,男生,卡通,风景 每大分类下面都有N个小分类,每个小分类下面有 ...

  10. 小程序源码:自动采集头像大全微信小程序源码支持多分类-多玩法安装简单

    这是一款以头像为主的一款微信小程序源码 该小程序内包含了各种分类,各种样式都有 可以说是目前最全的一款头像小程序源码 五大分类情侣,女生,男生,卡通,风景 每大分类下面都有N个小分类,每个小分类下面有 ...

最新文章

  1. Xshell远程登录Ubuntu
  2. vue click同时传入事件对象和自定义参数
  3. uml 继承_UML 完全解析和总结
  4. 树莓派实时(30fps)手势识别,从数据集采集开始,全部流程开源
  5. 欧式墙纸素材高清纹样图案,美观又大气
  6. 值从哪里来_内存频率是怎么算出来的?2133MHz这么奇怪的数字是怎么来的?
  7. sql 插入新数据 如何处理等字符_新手们还在到处找报表资料吗?Intouch SQL 数据库脚本给你安排...
  8. 多线程依次打印abcabc
  9. SQL语句之数据库之创建视图
  10. CANoe——CAPL
  11. C++ opencv人脸识别框
  12. 什么是驻点和拐点_极值点、驻点、拐点的区别
  13. 开心网(kaixin001)上的X世界小游戏
  14. ubuntu12.10 使用lync
  15. arcgis批量裁剪影像tif流程_【ArcGIS自定义脚本工具】批量裁剪中国多省份NDVI影像...
  16. c 语言 输入一个英文字母,判断该字母是大写还是小写,c语言从键盘输入一个字符,判断该字符是大写英文字母.小写英文字母还是数字....
  17. 中国区块链第一辩 | 老冒:区块链3.0应该让应用变得跟Web一样简单
  18. 荧光染料BDP FL maleimide/马来酰亚胺,CAS:773859-49-7
  19. 流量直升机-千牛插件功能列表
  20. Exception in thread main org.hibernate.TransientObjectException: object references an unsaved tran

热门文章

  1. 域名和SSL证书是什么关系
  2. python画图x轴文字斜着
  3. 小结:云架构中的IAAS层体系
  4. 重生后发现高冷女同桌暗恋我!(三)
  5. 电信传输_第六章_光纤接入网
  6. NOI2002 银河英雄传说
  7. php德育元素,的人如何使用tpl.php文件主题化drupal表单
  8. 测试姨妈哪一个软件准,哪款经期记录软件更准确 超多女生都在用的两款app
  9. chrome谷歌浏览器执行js脚本步骤
  10. MCTP协议和NCSI