知识付费源码|知识付费网站搭建|知识付费小程序源码
设计一个在线教育知识付费源码系统(面向对象设计)。
解决方案:假设我们想要设计一个基本的内容付费阅读系统并带小程序,提供以下功能:
•查找知识数据库并阅读付费内容;
•用户成员的创建和扩展;
•基于用户分级权限管理,并且这个用户只能获权后阅读。
仓库完整源码: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一对一的类型的关系。
知识付费系统类图简单地描述了知识管理系统类的结构、属性、方法或操作、对象之间的关系。
知识付费源码|知识付费网站搭建|知识付费小程序源码相关推荐
- 小程序源码:网课查题微信小程序源码下载,题库资源丰富自动采集,支持语音拍照识别
这是一款网课查题微信小程序源码 题库资源丰富自动采集, 支持语音拍照识别 该款采用接口方式,所以题库自动全网采集 而且该款小程序无需服务器和域名即可搭建 大家解压源码然后使用微信开发者工具打开源码 然 ...
- 小程序源码:老年祝福短视频微信小程序源码下载支持流量主
这是一款相当于是老年人的一个短视频小程序 里面的视频内容基本都是那些老年人喜欢转发的 所以说可以用此来打入老年人的圈子让老年人看了基本都会转发 所以裂变还是挺不错的! 这一款小程序的视频是自动化的 视 ...
- thinkphp开发的活动报名小程序源码带后台管理完整的报名小程序源码
介绍: 活动报名小程序源码,基于thinkphp开发的报名小程序源码,带有后台管理,用户发布活动信息.报名可以后台管理,简单测试了一下,基本都还是可以的. 不过需要注意的是,用户注册部分是发送手机短信 ...
- 小程序源码:修复登录大河盲盒小程序源码,实现运营“玩法自由”,超多功能的盲盒型抽奖挖矿程序源码下载
程序介绍 应用支持哪些类型的商品? 1.实物需邮寄商品,用户领取时填写收货信息,后台发货. 2.虚拟商品,如:教程.课程.图文.图片.下载链接等等. 3.卡密商品,后台添加卡密商品,填写使用方法.批量 ...
- 小程序源码:端午送粽子祝福微信小程序源码下载支持打赏模式带背景音乐
端午节的时候很火的一款小程序 给亲朋好友送祝福也是一款引流非常不错的一款小程序 支持打赏小程序模式实现盈利模式 当然了,有能力的小伙伴也可以魔改一下做成别的小程序也是可以的 该小程序无需服务器和域名, ...
- 七夕节微信表白墙小程序源码/基于Laravel的表白墙微信小程序源码
七夕节微信表白墙小程序源码/基于Laravel的表白墙微信小程序源码 ☑️ 编号:ym499 ☑️ 品牌:无 ☑️ 语言:小程序 ☑️ 大小:11.2MB ☑️ 类型:微信表白墙小程序 ☑️ 支持:小 ...
- 小程序源码:后台版本趣味测试微信小程序源码下载支持自定义问题等等
这是一款有后台版本的趣味测试小程序 支持用户自定义添加和删除问题 支持流量主后台设置 支持用户个人中心等等 该程序是微擎框架的,所以后台需要有微擎 PS:该小程序的登录接口并未替换更新还是采用的旧版登 ...
- 小程序源码:AI智能配音助手微信小程序源码支持多种声音场景选择
大家好今天给大家带来一款配音小程序 这款小程序支持多种不同声音和场景的选择更人性化 比如说支持各地区的方言,英文,童声呀等等 另外也支持男声女声的选择,反正就是模板那些非常的多 当然啦音量,语调,语速 ...
- 【小程序源码】自动采集头像大全微信小程序源码支持多分类
这是一款以头像为主的一款微信小程序源码 该小程序内包含了各种分类,各种样式都有 可以说是目前最全的一款头像小程序源码 五大分类情侣,女生,男生,卡通,风景 每大分类下面都有N个小分类,每个小分类下面有 ...
- 小程序源码:自动采集头像大全微信小程序源码支持多分类-多玩法安装简单
这是一款以头像为主的一款微信小程序源码 该小程序内包含了各种分类,各种样式都有 可以说是目前最全的一款头像小程序源码 五大分类情侣,女生,男生,卡通,风景 每大分类下面都有N个小分类,每个小分类下面有 ...
最新文章
- Xshell远程登录Ubuntu
- vue click同时传入事件对象和自定义参数
- uml 继承_UML 完全解析和总结
- 树莓派实时(30fps)手势识别,从数据集采集开始,全部流程开源
- 欧式墙纸素材高清纹样图案,美观又大气
- 值从哪里来_内存频率是怎么算出来的?2133MHz这么奇怪的数字是怎么来的?
- sql 插入新数据 如何处理等字符_新手们还在到处找报表资料吗?Intouch SQL 数据库脚本给你安排...
- 多线程依次打印abcabc
- SQL语句之数据库之创建视图
- CANoe——CAPL
- C++ opencv人脸识别框
- 什么是驻点和拐点_极值点、驻点、拐点的区别
- 开心网(kaixin001)上的X世界小游戏
- ubuntu12.10 使用lync
- arcgis批量裁剪影像tif流程_【ArcGIS自定义脚本工具】批量裁剪中国多省份NDVI影像...
- c 语言 输入一个英文字母,判断该字母是大写还是小写,c语言从键盘输入一个字符,判断该字符是大写英文字母.小写英文字母还是数字....
- 中国区块链第一辩 | 老冒:区块链3.0应该让应用变得跟Web一样简单
- 荧光染料BDP FL maleimide/马来酰亚胺,CAS:773859-49-7
- 流量直升机-千牛插件功能列表
- Exception in thread main org.hibernate.TransientObjectException: object references an unsaved tran