编程之前要分析,编写过程才不会漫无目的

这是c++吧的一维吧友保濟丸在回答另一位吧友的提问时给出的答复,让我第一次深刻感觉到,进行软件分析的重要性。


初步看了下,这系统的参与者有两个,一个是会员,一个是图书馆管理员。
会员只会借书和还书,(盈利机构的话可能还会充值啥的)
管理员有其他用列。
但是仔细想的话其实这个啥啥管理系统的真正使用者是管理员,会员只是委托管理员借书和还书。会员和管理员的关系应该是代理模式。
所以会员就扔掉吧···


用列作为基本接口绘制类图的话大概就这样,BookManage作为最高抽象层级就代表整个系统了,维护一个Book和一个Card列表。
Book类存储ISBN作为编号,应该存在一个书名列表,一本书通常有多个名字,译名或者爱称之类的。应该存在一个作者列表,作者也通常会有多个。
应该存在一个等级,比如18X啥的低等级的就不能借阅。
应该存在一个数量,图书馆不可能一种书只有一本·····

咦!????为啥类会描述自身的数量····



仔细看的话Book类实际上设计错误了,类的属性描述和本身的定位不符,属性实际上是在描述书的类型,改做BookType自己觉得会比较好。那用列图实际上也错了,应该是添加类型,虽然实际上可以判断如果是没有注册的书类型就添加否则就直接修改数量,但是同一个函数不应该做两件事,自己觉得还是分开比较好。
BookType储存书的信息,应该存在一个具体书类型的列表,但是单一的列表的话搜索是否有剩余书或者查找的时候用想的就觉得蛋疼。先分开试试好了。维护一个borrlist作为已借出列表,维护一个NowList作为现存列表,就是m_ReturnList,歹势,打错了。

Book类应该存在一个ID,表示实际上的每本书。应该存在一个列表存放曾经被什么卡借走过,应该存在一个变量表示现在被谁借走了(如果已借出的话)。应该存在一个状态表示现在书的情况(比如缺页,破损或者别的啥)

BorrInfo作为一次借阅的信息。应该存在一个CardID标示这次借阅是被谁借走了,应该存在一个时间变量标示借阅的时间,应该存在一个时间标示预定还书的时间,应该存在一个时间标示实际还书的时间,应该存在一个状态表示借出时书的状态,应该存在一个状态标示还书时的状态。

Card作为借书卡类,应该存在一个ID作为检索标示,一个Name标示持有人。
作为一个装备,借书卡应该存在一个等级标示权限(比如啥红宝石借书卡可以借阅所有书籍之类的)应该存在一个最大同时借书数量。
维护一个列表标示借书卡借阅书籍的历史记录。维护一个列表标示该借书卡现在同时借阅的书籍。

大概结构应该就这样了·
- -码字好累

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值