资源描述
系 专业 班 学号 姓名
┉┉┉┉┉┉┉┉┉┉┉密┉┉┉┉┉┉┉┉┉┉封┉┉┉┉┉┉┉┉┉┉线┉┉┉┉┉┉┉┉┉┉
试卷类型: A
苏州科技学院 软件设计与体系结构 试题
使用专业年级 软件外包1311-1312 考核方式: 考查 共 1 页
题号
一
合计
得分
内容:
一、自选一个软件项目,软件项目类型不限。采用面向对象技术进行分析和设计,在设计环节必须使用设计模式,要求至少使用4种设计模式。设计文档中应包括:需求分析、每个类的类图、类之间的相互关系,使用了哪些设计模式,遵循了哪些面向对象设计原则。每位同学必须独立完成,设计结果以打印文档的方式提交,文档格式可参考毕业设计文档格式。
《软件设计与体系结构》
非卷面试题
设计题目 书籍订购系统
院 系 电子与信息工程学院
专 业 计算机科学与技术
学生姓名 闫自立
学生学号 13200126132
任课教师 倪 启 东
目录
第1章 绪论 1
1.1 引言——系统意义 1
1.2 系统简介 1
1.3 主要研究内容 1
第2章 需求分析 1
2.1 总体需求 1
2.2 用户群体描述 1
第3章 概要设计 1
3.1 总体功能模块设计 1
3.2 模块功能概要设计 1
3.2.1 会员用户信息管理模块 1
3.2.2 书籍信息管理模块 1
3.2.3订单管理 1
4.1 复合模式 1
4.2 简单工厂模式 1
4.3 组合模式 1
4.4 观察者模式 1
4.5 迭代器模式 1
4.6 适配器模式 1
第5章 面向对象设计原则 1
5.1 单一职责原则 1
5.2 开闭原则 1
5.3 Liskov里氏替换原则 1
5.4 接口分离原则 1
4
第1章 绪论
1.1 引言——系统意义
图书订购系统网站应该能够为用户和读者提供充足的书源和图书快捷方便上架与查询的方法,但是一直以来消费者必须到书店去选择图书、商家使用传统的方式对书籍进行管理,这种模式有着诸多的缺点不足,如:效率低下、查询困难、不能及时准确获取想要的有效图书信息。因此根据书店、出版社之、读者三者之间相互需求互补,将读者需求、书店购买、出版商销售业务管理纳入图书订购系统网络管理,方便消费者订购自己想要的图书以及得到相关的图书信息、方便书店的书籍定购与出版社的书籍市场销售、出版数量决定,提高书店与出版社的购书和卖书工作效率,更好的方便信息交流。
1.2 系统简介
书籍信息是本系统的重要组成部分用户可以通过书籍的种类或者书店等条件查看自己感兴趣的书籍,便于用户在选择书籍的时候能够更加得心应手。
书籍订购系统的功能是系统管理员添加店铺并授权给店铺,使得店铺可以添加自己的书籍,普通用户可以使用浏览器或者移动端进行书籍的检索、查看书籍信息并且可以查看已经购买的用户对本书籍的评价。除了这个查看功能之外,作为书籍订购软件,旗下拥有大量的会员,会员可以对自己喜爱的书籍进行下单 ,支付。图书订购系统注册者可以对自己买得到的书籍进行评价打分(包括可以评价书籍的内容价格质量、书店的服务态度环境、物流时间价格服务态度等)。
1.3 主要研究内容
利用Java开发制作一个前台页面,用于展示书籍的信息与书店的信息,让用户可以进行根据类别查询书籍信息,收藏或下单购买。
在后台可以通过Web窗体的相关控件来实现,适当的添加SQL Server数据库,这样可以简便的完成后台管理的操作。
从用户信息管理的视角看,主要是用户注册之后审核用户信息的录入,密码,修改,查询。
从书籍信息管理的视角看,主要是书籍信息的录入,删除,修改,查询。
从书籍订单信息管理的视角看,主要是订单信息的录入,删除,修改,查询。
第2章 需求分析
2.1 总体需求
书籍管理系统的设计与开发所要达到以下的总目标要求,即主要要实现功能:
1、 会员登录功能:会员在前台页面根据用户名与密码实现安全登录,没有注册的用户可以通过手机号或者邮箱进行验证注册,然后可以登录系统。。
2、 书籍查询功能:游客与会员可以通过书籍的类别(书名、价格、出版社、书籍作者、书籍类型、语言等关键字)进行查询,用户可以得到书籍的名称、价格、出版日期、库存等信息。
3、 书籍添加:系统管理员分配书店用户权限(不同的权限可以使用不同的功能),用户可以推荐图书然后书店可以添加读者订购热度高的,质量好书籍,系统管理员在审核成功将会发布到系统上。
4、 订单管理:会员可以搜索自己想买的书籍,添加到自己的购物车中,会员可以选择购物车中的图书在线付款购买下单。
5、 收藏功能:用户可以对自己喜欢的书籍与店铺加入收藏夹,每次打开收藏夹就可以查看到。
6、 系统操作主要流程
开始
注册用户登陆在线图书订购系统
游客(未注册用户)判断
浏览书店、出版社信息,搜索并查询图书信息等
判断用户角色
书店用户添加图书业务出版社用户处理销售业务
结束
系统用户
基础信息管理
系统基础信息管理
2.2 用户群体描述
1、游客
游客可以通过前台的页面浏览书籍与书店的信息,如果浏览到中意的书籍可以进行收藏或者下单购买,游客就必须进行登录。
2、会员
会员拥有游客的一切功能,查看书籍与店铺的信息。会员在登录成功之后可以实现店铺与书籍的收藏,会员在找到书籍的时候可以实现下单、付款,当然用户发现自己买错书的时候也可以实现退单的功能。
会员也可以实现订单评价功能,当用户在收到自己购买的书籍的时候可以对本次订单进行评价。如果购买的书籍与自己看到的不符合,会员可以实现申请退单。
3、书店管理员
书店管理员需要向本公司提出申请,在书店管理员的申请成功后,将会得到系统管理员赋予自己的权限:销售书籍、添加书籍等功能。用户添加销售的书籍需要通过管理员的审核。
4、系统管理员
系统管理员对申请店铺的书店进行审核成功之后,将会授予该店铺售书的权限,当然系统管理员也会对书店销售的书籍进行审核,以确保书籍的质量。
图 2.2 用户群体图
第3章 概要设计
3.1 总体功能模块设计
图3.1 系统总体模块图
3.2 模块功能概要设计
3.2.1 会员用户信息管理模块
该模块会员使用账号密码登录,新会员需要注册,注册后个人信息就会保存到数据库中,系统管理员审核通过后会员合格,会员可以修改自己的密码、修改查看完善个人信息,上传头像,可以查看书籍信息、收藏、购买书籍。如图3.2.1
图3.2.1 会员功能图
3.2.2 书籍信息管理模块
该模块书店当管理员添加书籍时填写:书籍名称、类型、价格、封面图片、出版时间、出版商、书籍库存,同时还要上传书籍的目录图片便于会员查看。
图3.2.3 书籍信息图
3.2.3订单管理
在该模块中,会员用户在选择好自己喜欢的书籍的时候,可以进行下订单(会员已经登录,否则登陆)。在书店发送订单之前,用户可以修改订单上快递的信息,如收货人,手机号,地址。当然如果会员觉得订单下达出错的时候,用户可以申请退单。
图3.2.2 订单管理图第4章 系统所用到的设计模式
4.1 复合模式
图4.1复合模式
4.2 简单工厂模式
简单工厂模式属于类创建型模式。简单工厂模式就是根据参数的不同返回不同的类的实例。简单工厂模式特地定义了一个工厂类创建其他类的实例,被创建的实例一般都是相同的父类派生而来。
图 4.2简单工厂模式
在上图中,Factory是工厂类,负责实现创建所有实例的功能。工厂类可以被直接调用以创建所需的对象实例。用户使用系统,系统根据用户所分配到的权限调用UserFactory创建用户实例:游客、会员、书店管理员与系统管理员,根据不同的类别的用户,系统将会分配不同的权限与功能。
4.3 组合模式
组合模式有时候又叫做部分—整体模式, 它使我们属型结构的问题中,模糊了解了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素。组合模式可以优化实现递归和分级数据结构,当表示对象的部分—整体层次结构或忽略组合对象与单个对象的不同时,然后可以无差别统一地使用组合结构中的对象。
图 4.3组合模式
在上图中,OrderFlock是订单集合类,用户调用registerObserver函数添加新的订单;调用deleteObserver函数删除废弃的订单 ;调用notifyObservers函数使用迭代器依次获取订单的信息;调用pay函数用户对订单在线付款。
4.4 观察者模式
在观察者模式中,目标实例管理所有依附它的观察者实例,并且主动在它的状态改变时发出通知,经常透过呼叫各观察者所提供的函数来实现。观察者模式经常用在实现事件处理系统的情况。
图 4.4观察者模式
在上图中, 将会对每个订单的支付事件进行监测,获取每张订单的支付功能。
4.5 迭代器模式
聚合对象拥有两个职责:一是存储内部数据;二是遍历内部数据。从依赖性看,存储内部数据为聚合对象的根本功能,属于相互依存、互不可少、同时存在关系;而后者既可以是可变化的,又是可分离的。因此可以将遍历行为专门地抽象为一个迭代器,特别用以实现遍历聚合内部数据对象功能,这是迭代器模式的最基本属性。
迭代器模式(Iterator Pattern)提供了一种方法来访问聚合对象中各个元素,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。它是一种对象行为型模式。
图 4.5迭代器模式图
在上图中,用户调用notifyObservers,ArrayList集合将会使用迭代器Iterator遍历订单信息。
4.6 适配器模式
适配器模式用以把一个类的接口改变为希望的另一种接口,实现因接口不匹配而无法适应在一起工作的类能在一起工作。
s
图 4.6适配器模式
在上图中,当系统用户使用order方法的时候,将使用addShopUser的方法;当书店用户调用order的方法的时候,将会使用addBooks的方法。
第5章 面向对象的设计原则
5.1 单一职责原则
总体目标为:一个类只做一个职责,只有极少的外面实例能够改变它的状态。可以看做低耦合、高内聚在面向对象原则方面的扩展,职责引起变化,提高内聚性来减少降低耦合度。职责和引起改变的原因相关,职责依赖、相互之间产生影响,最终破坏其内聚性和耦合度。 基本的单一职责,有极少的函数,不为类具体或不相关的功能函数,以保证实体只有一个引起它变化的原因。
5.2 开闭原则
其核心思想是:软件功能可以扩展但是不能随便修改变化。主要实现在:(1) 对外扩展开放,需求增加或变化,允许对现行代码进行扩展,满足新情况;(2) 对修改封闭,表示类在设计结束后,能够自己运行,而不需要对其有其他改变。
开放封闭原则总体目标是面对抽象编程,而不是不对具体实现编程,因为抽象是稳定的,具体的实现需求是变化的。
5.3 Liskov里氏替换原则
其核心思想是:子类可以用作基类。表现为对继承复用的规则,在子类能够被当做基类时,才实现系统在运行时识别子类,实现了继承复用。建立在对抽象和多态建立在继承的基础上,主要继承机制的设计原则,保证系统对外开放的扩展性,实现基于多态的抽象机制,减少代码冗余实现代码简洁,规避了在运行期的类型判别。
5.4 接口分离原则
其核心思想是:使用许多小的特定接口,而不是使用包含所有功能的总接口。
接口隔离原则:接口是高内聚的,一个类所依赖的类的接口是最小的,避免依赖无用的的方法,这是接口破坏。
分离的手段:1、委托分离2、多重继承分离
参 考 文 献
[1] 黄梯云. 《Head First》. 中国电力出版社,2007年9月第一版
18
展开阅读全文