[CareerCup] 8.5 Online Book Reader System 在线读书系统
8.5 Design the data structures for an online book reader system.
这道题OOB的题让我们设计一个在线读书系统,还是没有任何提示,所以发挥空间很大。根据书上的解答,我们设计一个具有基本功能的系统:
1. 用户会员的建立和延长
2. 搜索书库中的书
3. 在线读书
4. 每次只能有一个活跃用户
5. 每个读者只能读一本书
那么最基本的先实现书类Book,和用户类User,然后是书库类Library,用户管理类UserManager,显示类Display,最后是整合类OnlineReaderSystem,具体实现代码如下:
class Book { public:Book(int id, string det): _bookId(id), _details(det) {}int getID() { return _bookId; }void setId(int id) { _bookId = id; }string getDetails() { return _details; }void setDetails(string d) { _details = d; }private:int _bookId;string _details; };class User { public:User(int id, string details, int accountType): _userId(id), _details(details), _accountType(accountType) {}void renewMembership() {}int getID() { return _userId; }void setID(int id) { _userId = id; }string getDetails() { return _details; }void setDetails(string details) { _details = details; }int getAccountType() { return _accountType; }void setAccountType(int t) { _accountType = t; }private:int _userId;string _details;int _accountType; };class Library { public:Library() {}Book* addBook(int id, string details) {if (_books.find(id) == _books.end()) return nullptr;Book *book = new Book(id, details);_books[id] = book;return book;}bool remove(Book *b) { return remove(b->getID()); }bool remove(int id) {if (_books.find(id) == _books.end()) return false;_books.erase(id);return true;}Book* find(int id) {if (_books.find(id) == _books.end()) return nullptr;return _books[id];}private:unordered_map<int, Book*> _books; };class UserManager { public:UserManager() {}User* addUser(int id, string details, int accountType) {if (_users.find(id) == _users.end()) return nullptr;User *user = new User(id, details, accountType);_users[id] = user;return user;}bool remove(User *u) { return remove(u->getID()); }bool remove(int id) {if (_users.find(id) == _users.end()) return false;_users.erase(id);return true;}User* find(int id) {if (_users.find(id) == _users.end()) return nullptr;return _users[id];}private:unordered_map<int, User*> _users; };class Display { public:Display() {}void displayUser(User *user) {_activeUser = user;refreshUsername();}void displayBook(Book *book) {_pageNumber = 0;_activeBook = book;refreshTitle();refreshDetails();refreshPage();}void turnPageForward() {++_pageNumber;refreshPage();}void turnPageBackward() {--_pageNumber;refreshPage();}void refreshUsername() {} // ...void refreshTitle() {} // ...void refreshDetails() {} // ...void refreshPage() {} // ...private:Book *_activeBook;User *_activeUser;int _pageNumber = 0; };class OnlineReaderSystem { public:OnlineReader() {_userManager = new UserManager();_library = new Library();_display = new Display();}Library* getLibrary() { return _library; }UserManager* getUserManager() { return _userManager; }Display* getDisplay() { return _display; }Book* getActiveBook() { return _activeBook; }void setActiveBook(Book *book) {_activeBook = book;_display->displayBook(book);}User* getActiveUser() { return _activeUser; }void setActiveUser(User *user) {_activeUser = user;_display->displayUser(user);}private:Library *_library;UserManager *_userManager;Display *_display;Book *_activeBook;User *_activeUser; };
[CareerCup] 8.5 Online Book Reader System 在线读书系统相关推荐
- ots在线考计算机的word,ots在线考试系统1(OTS online examination system 1).doc
ots在线考试系统1(OTS online examination system 1) ots在线考试系统1(OTS online examination system 1) OTS online e ...
- python 模拟考试系统_Project-OTS: Online Exam System written on Python 3. 基于Python 3的在线考试系统。...
Project-OTS Online Exam System written on Python 3. Your can first try it on ots.icystal.top. 基于Pyth ...
- springboot+英语在线学习系统 毕业设计-附源码211714
spring boot英语在线学习系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难 ...
- SSM+基于Vue框架的在线投票系统的设计与实现 毕业设计-附源码221604
基于Vue框架的在线投票系统的设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了 ...
- SSM+基于Vue框架的在线投票系统的设计与实现 毕业设计-附源码
基于Vue框架的在线投票系统的设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于在线投票系统也是十分常见的.过去使用手工的管理方式对在线投票系统进行管理,造成了 ...
- (附源码)springboot公选课在线选课系统 毕业设计 142011
公选课在线选课系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用Ja ...
- (附源码)springboot 在线考试系统 毕业设计461317
Springboot在线考试系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术 ...
- (附源码)springboot在线考试系统 毕业设计 160935
在线考试系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...
- 毕设项目:基于BS模型的在线OJ系统
系列文章目录 文章目录 系列文章目录 前言 一.在线OJ系统描述 二.在线编译模块 1.搭建一个HTTP服务器完成在线编译 2.收到HTTP请求,进行数据格式转化(HTTP中body的内容转换为JSO ...
最新文章
- 视频教学动作修饰语:CVPR2020论文解析
- mvc手把手教你写excel导入
- git操作手册_基本的Git手册
- 细说进程、应用程序域与上下文之间的关系(一)——进程的概念与作用
- node 没有界面的浏览器_node.js爬虫入门(二)爬取动态页面(puppeteer)
- 分布式与人工智能课程(part5)--第五课
- Java—List集合详解
- linux c 程序崩溃日志,C:Linux:调用write()时TCP / IP程序崩溃
- CentOS软件包管理之RPM
- 《深入浅出统计学》读书笔记
- 自然语言处理之词袋模型Bag_of_words
- Linux 测试连接端口
- 优科Ruckus R610 AP刷Unleashed固件
- python获得字符串长度的函数_python字符串函数
- 微信公众号之微信认证
- OpenGL学习(七)通过assimp库读取多种格式的模型
- 电阻应用电路之运放如何消除偏置电流的影响
- 李飞飞、吴恩达、Bengio等人的15大顶级深度学习课程(转)
- cmd 执行html文件,cmd执行bat文件 cmd文件和bat文件有什么区别?
- 虚拟机安装打印服务器,虚拟机怎么添加打印机