第一篇:面向对象的设计与分析(网上商城的建模设计)
第4章江西师范大学“网上商城”建模实例
本文所要进行建模分析的系统是学校小型电子商务系统,以欲构建的江西师范大学的便利店和生活超市“网上商城”为例,是满足校园客户(主要在校学生)网购要求的综合性的应用系统,本文以Rational rose 2003为建模工具,并应用第三章提出的基于UML的电子商务系统建模过程,完成该系统的详细分析和设计。对系统进行需求分析,建立系统需求模型、静态结构视图、动态结构视图、数据库模型、物理模型。
4.1系统的需求分析 4.1.1系统的设计背景
江西师范大学瑶湖校区江西师范大学新校区,地处南昌市昌东镇,在校学生3万余人,由于学校占地面积很大,离市区比较远,周围设施还不是很齐全,该校区为解决师生日常生活需要,建设了商业街并且每个宿舍区都有便利超市,这些店是一个小型的生活用品采购区,在校学生平时的大部分消费都是在这些地方,包便利店和小型超市等生活服务的实体商店,满足了师生不出校门就能买到自己想要的东西。近些年,随着高校的扩招,该校区学生和老师的数量也不断增加,新的问题也随之而来,高校学生由于社会发展带来的的巨大压力,生活节奏也日益加快,空闲时间也越来越少。所以如果他们每次生活消费都要到实体店购买,就给他们的生活带来不便,因而如果能够网上购物就解决了这个矛盾。另外,据数据显示,该校学生80%是网民,该群体的素质较高,接受新事物速度快,而且他们的消费兴趣和倾向也有高度的相似性。该校区学生居住地也比较集中,大都住在学校统一安排的公寓或者学校周围的小区,使物流配送更加方便和及时。目前学校的实体商店很多,但是大多数商店还没有自己的电子商务系统,所以如果通过一个统一的网上购物平台,商店将这些商品都发布在网上商城上,师生就可以足不出户选购商品,非常方便。只要授予他们可以在平台上销售自己的商品,提高了商店的知名度,也提高了他们的服务能力和影响力。该网上商城具有一般网上购物系统的功能: 1.师生可以通过该网上商城注册为商城用户,浏览商品订购商品放入购物车;客户可以通过该商城发布评论信息;客户可以查看自己订单;客户可以支付商品货款。
2.商户可以通过该商城发布自己的商品信息、供师生购买;可以通过该商城管理自己的商品信息和员工信息;可以进行订单处理。3.系统管理员对商户申请信息进行审核;对评论信息管理:对系统日常的维护和数据备份;对用户信息管理。
除了以上三个一般购物系统的功能商城的系统管理员可以通过对历史订单信息进行数据挖掘,找出顾客购买商品间的关联关系,建议商户对其营销策略进行调整或者绑定销售一些商品,以提高商户的销售利润,达到在线交易和实体店双重赢利。该功能模块的设计将在第五章详细说明。4.1.2系统的模块设计
根据以上背景,本文欲构建一个具有上述功能的江西师范大学“网上商城”。该商城可以满足师生网上购物的要求,注册该商城用户都可以直接登录到该商城。该商城为校园的客户提供了一个统一的网上交易平台,该网上商城的业务流程图,如图4.1所示。
通过以上背景分析和业务流程的设计,根据一般网上购物系统的功能,并结合该“网上商城”的特殊功能需求,根据商城所涉及到的主要参与者将该商城主要功能描述如下: 1,商城维护:管理员可以对商城日常维护和数据备份。2.商户信息管理:管理员对申请加盟的商户等级管理和商户信息修改,添加等操作。
3.商城用户信息管理:对商城注册用户信息的管理,以及其应用权限
4.评论管理:管理员可以对评论信息进行处理,对于不符合要求的评论可以删除。
5.收集数据:系统管理员可以根据数据库中一段时间的订单历史记录查询分析,收集到分析数据。
6.订单分析:管理员可以对收集到的数据进行分析,得出商品之间的关联性。建议商户调整销售策略,从而提高商店利润。
7.商城注册:非家园网或非商城用户的客户可以注册为商城用户。8.修改个人资料:注册用户可以修改自己的注册资料。包括地址,电话等基本信息。
9.商城登录:系统管理员、用户、商户都可以登录商城相应的模块在相应权限内操作。
IO.查看商品信息:进入商城的师生都可以浏览商品信息,该商品信息包括商品的基本信息和商品的库存。
11.购物:如果商品有库存则客户可以购买,如果缺货则不能购买,客户将商品放入购物车,进行购物。客户可以对购物车里的商品随时修改,删除,添加和清空。
12.下订单:客户将商品加入购物车后,可以填写订单,对于订单,在未处理之前,客户也可以随时登录系统修改并提交。
13.支付:订单提交以后,客户可选择支付方式,如选择货到付款则订单完成,如选择网上支付,则客户要登录网上银行支付,支付完成则该订单完成。
14.订单查看:客户可以随时登录系统查看自己的历史订单信息,可以删除历史订单,可以查看订单状态,订单在未处理之前都可以修改然后再提交,也可以对取消未处理的订单。
15.评论:收到商品以后客户对商品和商户的服务是否满意可以对此订单进行评论。
16.申请加盟商城:商户申请加盟商城,资格审核通过后可以在商城建立自己的网上商店,拥有该商店的管理权限,可以进行网上交易。17.商品信息维护:商户可以随时添加、修改、删除商品的信息。18.配送员信息管理:商户可以对商店里的配送员信息进行添加、修改、删除,以更好的管理商店的配送工作。
19.订单处理:客户提交订单以后,商户接收订单并与客户确认订单以后对订单进行处理,根据订单所购买的商品,商户查询库存,确认库存中有该商品,对订单进行审批,审批完了后则打印配送订单,安排送货。
20.派遣配送员:商户点击相关功能,将输出配送员编号,商户把送货单和商品交予该配送员负责,配送员把商品送到客户指定的地点,如果无人收货,则在订单回执中填写“无人接货”,如果收货成功,则填写“收货成功”,如收货人推迟收货则填写“推迟收货”。并将订单回执交予商户。
21.库存管理:商户可以对商品库存进行定期清点,并修改商品信息中的库存信息。
22.配送订单管理:对已经处理的订单,商户打印出配送订单,并安排配送员配送,对配送订单的完成情况进行管理。
23.查看商品销售记录:商户可以对本商店的商品信息随时查看。24.查询分析结果:商户可以登录商城查询商品的关联分析结果,通过结果设置相应的销售捆绑包或交叉销售。
25.设置销售捆绑包:对分析到的关联商品,通过后台输入设置到捆绑包中。
满足上述需求的系统主要包括以下几个模块: 系统管理模块:该模块是系统提供给系统管理员的接口模块。主要包括对校园商户的加盟审核,对商店申请信息的管理,根据商户等级和信誉来决定删除和添加商户,另外对网站用户信息的管理。该模块可以对系统日常维护和数据备份,并且通过对订单信息进行数据分析,以帮助商户制定营销策略,赢得更大的利润。
用户接口模块:该模块为想购买该网站商品的学生提供的了入口,所有校园的师生都可以通过浏览器浏览该网站商品,可以注册为该系统用户并登录该系统订购自己喜爱的商品。
商户操作模块:该模块是“网上商城”的核心模块。主要包括接受客户完成的订单需求,指派特定的配送员,配送员根据订单所需提货,配送员送货上门,客户签收商品并生成回执单,商户可以查看最近一段时间某商品的销售记录,根据查看的商品订单分析结果制定相应的捆绑销售或者交叉销售策略。
4.2需求建模
该系统需求建模描述系统用户使用一个系统的方式,描述系统应该具备什么功能,是系统用户或者另一个系统与系统之间的一次交互过程,是系统分析和设一计的第一步,以系统全局的功能作为参考,把系统所涉及的参与者和他们从外部观察到的系统的功能描述出来,而并不描述这些功能在系统功能的实现形式。这个过程使用UML建立系统的用例图,分离出系统执行者和用例,以及用例之间的关系。4.2.1系统参与者
参与者是系统外部的一个实体,可以是系统用户、与所建造的系统交互的其他系统或者是一些可以运行的进程。第一,在每一个系统中,几乎都存在着最常用的参与者一真实的人(用户);第二,需要建立联系的其他外部应用程序,即其他系统;第三,一些可运行的进程,如时一间;通过上面对该系统的功能分析和系统功能模块的设计,系统参与者主要有:系统管理员、客户、商户和支付系统。4.2.2识别用例
确定用例最常用的方法是从分析系统参与者开始,把每个系统参与者如何使用系统的行为都考虑进来。根据上一节系统的需求分析功能模块,可以确定系统参与者有系统管理员、客户、商户和支付系统。根据上一小节的功能模块分析,得出系统的顶层用例图,如图4.2 0
下面分别对三个用例细化,系统管理所涉及到的用例有:商城登录,商户信息管理,用户信自、管理,评论管理,商城日常维护和订单分析。涉及到的参与者是系统管理员,系统管理的用例图如4.3所示。
用户接口用例细化有:商城注册,商城登录,查看商品信息,修改个人资料,购物,下订单,支付,评论,订单查看。用户接口的用例图如图4.4所示。
其中“购物”用例细化的用例有:清空购物车,修改购物车商品,添加商品到购物车,查看购物车信息,删除购物车中的商品。细化后的用例图如图4.5
“订单查看”用例细化的用例有:修改订单,提交订单.,删除订单,查看历史订单,订单状态查询,取消订单。细化后用例图如图4.6所示。
商户操作的细化用例有:申请加盟商城,商城登录,商品信息维护,配送信息管理,订单处理,配送订单管理,派遣配送员,查看商品销售记录,库存管理,查看订单分析结果,设置商品销售捆绑包。商户操作用例细化图,如图4.7所示。
商品信息维护的细化的用例有:增加商品信息,删除商品信息,修改商品信息。细化后的用例图如图4.8所示。
订单处理的细化用例有:确认订单,接收发货,查询商品库存。如图4.9
支付系统用例有:支付,网上支付,货到支付。支付系统的用例图,如图4.10所示。
根据以上对系统参与者的用例图分析与建模,得出系统的完整的用例图,如图4.11所示。
4.3静态结构建模
静态结构模型是对有关系统实现内部和应用领域的概念进行建模,本文通过分析上述需求建模中的用例和问题域,抽取相关的类,并将这些类之间的关系表示出来,以及类的内部结构,最后完成类图,反应了系统的一种静态关系。(1)抽取系统中的类
系统中存在三种类,一种是系统与外界的交界处,包括各种窗体和接口(与报表、打印机和扫描仪等硬件的接口或者与其他系统的接口);另一种是负责协调其他类工作的控制类,是控制使用事件的顺序的类;第三种是保存放入永久存储体的数据信息类,即实体类。本文将以“下订单”举例说明分析类的整个流程。
下订单用例的主要功能是:客户登录商品信息查看页面,系统验证客户注册信息,系统打开下订单页面,填写订单并提交订单信息,根据以上描述,该用例涉及到的类如下: 边界类:商品信息查看页面,填写订单页面。
控制类:下订单。
实体类:客户信息类,商品详细信息类,订单信息类。
据以上方法分析系统其它用例并经过整理合并,得出网上商城的类如下: 1.边界类:用户注册界面,用户登录界面,商品详细信息界面,商品查看界面,下订单界面,评论界面,支付界面,个人资料修改界面,订单查看界面,商品信息维护界面,查看订单分析结果界面,派遣配送员界面,设置商品销售捆绑包界面,订单处理界面,配送订单管理界面,配送员信息管理界面,库存管理界面,查看商品销售记录界面,商户信息管理界面,用户信息管理界面,商城维护界面,审核界面,评论管理界面,收集数据界面,订单分析界面。
2.控制类:用户注册,用户登录,浏览商品,下订单,评论,支付,个人资料修改,订单查看,商品管理,配送员管理,查看订单分析结果,派遣配送员,设置商品销售捆绑包,订单处理,配送订单管理,库存管理,查看商品销售记录,用户管理,商户管理,商城维护审核,评论管理,收集数据,订单分析。
3.实体类:用户信息类,商品信息,订单信息,配送员信息类,购物车信息类,配送订单信息类,商户信息类,商品销售记录信息类,评论信息类。管理员和客户都属于系统的非商业用户,所以将它们统称为用户信息类。电子商务配送系统在Internet中使用,所以为了安全起见,在分析实体类中,将经常使用的类所涉及操作和基本信息分别设计一个类。例如,客户信息类,客户涉及到的信息设计到客户信息类中,而客户所涉及到的方法操作则归为客户信息操作类。这样体现了而向对象的封装性和安全性,能更好的满足系统运作要求。
(2)生成类图
通过上述类的分析,要生成类图还需要弄清楚类与类之间的关系,并且要确定类的属性和方法。上文分析了与“下订单”用例相关的类,下面接着讨论类的属性和方法,并生成相关类图。
边界类:商品详细信息界面(GoodsDetailslnterface)填写订单页面(OrdersInterface),主要是打开新的界面。
控制类:下订单C Order)。协作类之间的工作,起到“中介”的作用。
实体类:用户信息类(ClientInformations),商品信息类(GoodsInformations)订单信息类(OrderInformations),用户信息操作类(ClientOP),商品信息操作类(GoodsOP),订单信息操作类(OrderOP)。ClientInfornlations类的重要属性有:用户ID号,用户名,注册日期,登录密码,电子邮件;ClientOP类的主要操作有:系统注册,系统登录,查看商品,订购商品,支付;GoodsInformations类主要属性有:商品ID号,商品名称,商品描述,商品价格,商品库存,商品类别;GoodsOP类的主要操作有:获取商品ID号、商品名称和价格;OrderInformations类主要属性有:订单ID号,商品ID号,商户ID号,用户ID号,客户姓名,订购日期,订购者地址,商品数量,商品价格;OrderOP类涉及的操作有:搜索订单,查看订单,处理订单,添加订单,删除订单。
根据以上分析,下订单的类图如图4.12。实线箭头表示的是关联关系,虚线箭头表示的是依赖关系。
由于电子商务配送系统涉及到类图比较庞大,而分析类图的过程可以通过上述方法一一得出用例的类图,本文只对系统中的实体类图进行建模。运用上文方法分析实体类所涉及到的信息类,实体类图4.13a
4.4动态结构建模
用例图和类图描述了系统的静态结构,接下来建立系统的动态行为模型,动态行为模型主要是建立系统的顺序图和活动图,川页序图主要来表示对一象之间的关系和对象之间传送消息的时间顺序。活动图则是描述活动的顺序的一种流程图,是从一个活动到另一个活动的控制流。
(1)顺序图
该商城系统涉及到的顺序图有很多,比如用户登录顺序图,下订单顺序图,删除订单顺序图,增加订单顺序图,订单处理顺序图。本文将通过“系统登录”顺序图和“下订单”顺序图建模为例来说明系统动态结构建模。
“商城登录”用例涉及到参与者是用户,包括管理员和其他用户,这里以客户登录系统为例,涉及到的对象有“登录界面”,“服务器”和“数据中心”,根据ROSE中的顺序图的建模方法,本文得到“商城登录”用例的顺序图如图4.14。
根据上文分析的“下订单”用例类图,“下订单”用例的顺序图参与者是客户,所涉及到的对象有“登录界面(login)”“商品信息查看界面(GoodsDetailsInterface)"“下订单界面(OrdersInterface“
“订单信息操作(OrderOP)”,用ROSE建模得出的“下订单”顺序图如图4.15所示。
(2)活动图
活动图表示一个事件正在运行的状态,事件是系统中某个对象的一个操作,主要表现一个活动到另一个活动控制流,是系统内部的驱动流程。一个系统涉及到的活动图很多,本文提到的系统活动图有:客户下订单的活动图,商城用户登录活动图,派遣配送员的活动图等,本文将以“下订单”活动图为例。根据活动图的组成元素,“下订单”包括很多活动状态,比如:查看商品,提交订单,订单处理等一系列状态,“下订单”就是从一个活动状态转换为另一个活动状态,直至完成该动作,活动图中涉及两个对象,客户和商户,根据以上描述,在ROSE中建模的“下订单”活动图如图4.16所示。
4.5数据库建模
在以上小节本文成功建立了江西师范大学网上商城的业务流程图、需求模型、静态模型和动态模型,接下来就要介绍如何通过已建立L1ML静态结构模型中的类图转换为数据库模型。在类图转换为数据库模型,控制类和边界类不需要转换为系统数据库模型,这些类是为了实现用例的流程而产生的类,所以只有那些持久存储信息的实体类需要转换为数据库模型。转换过程由于篇幅问题不再一一叙述,如图4.17系统实体类图转换的数据库模型图。
系统的数据库模型图建立之后,将模型图映射为数据表,此处数据库模型中的属性映射为数据表的列,系统的数据结构表如下表所示。4.6物理建模
完成系统的逻辑设计后,下一步要定义设计的物理实现,为了将逻辑设计图转化成实际的事物,面向对一象系统的物理建模有两种图:组件图和配置图。组件图是系统实现视图的图形表示,描述了系统的各种组件和组件之间的依赖关系。配置图是系统执行过程中资源元素的配置情况以及软件到这些资源元素的映射,描述了系统中硬件和软件的物理结构。(1)组件图
组件是表示将类、接口等打包而形成的物理模块。组件图是用来描述代码的物理模块之间的关系,显示了代码的结构。组件图能够帮助客户和系统开发人员理解最终的系统结构。根据上文对江西师范大学“网上商城”的逻辑视图的分析,在ROSE中得到系统的组件图,图4.18所示,组件图中只有用虚线表示的依赖关系。
2.配置图
配置图用来表示系统的运行结构或者系统软件和硬件组织之间的关系,由节点和节点之间的联系构成,配置建模就是将软件系统在互联网上的运作方式模式化,南昌大学“网上商城”是一个基于其数据库和校园网的应用系统,根据第三章中电子商务系统多层B/S体系结构,“网上商城”的系统配置图如图4.19。
4.7小结
电子商务系统是一个结构复杂、规模庞大的系统,根据本文提出的基于UML的系统建模过程,本章以江西师范大学“网上商城”为实例,对其进行了系统的需求分析,建立了系统的需求模型、系统的静态结构模型、系统的动态结构模型、系统的数据库模型、系统的物理模型。确立了系统的功能模块,分别建立了业务流程图、用例图、类图、顺序图和活动图、数据库模型和数据表、组件图和配置图。
第5章基于数据挖掘的商品订单分析
电子商务的迅速发展使其规模越来越复杂,客户获得有效商品信息的难度也在增加,因此如何增加商品信息的针对性,提高网站的可用性成为了现今电子商务研究的热点。国内对该热点的研究很少,但是也有了一些研究成果,比如王兆红((2005)利用关联规则提出了商品的最佳打包组合:金伟健,金文进(2010)从理论上提出了基于关联规则的商品推荐模型;章杰鑫,张烈平(2009)提出了时序关联规则挖掘算法,并通过模拟超市数据预测了顾客在时间单位内的商品关联规则,使企业更好的了解客户需求。本文应用数据挖掘的关联规则对商城的“订单分析”功能进行了分析和设计。首先对商城历史订单进行数据预处理,然后应用关联规则挖掘客户购买商品的关联关系,这样商户可以掌握客户的购物兴趣,设置相应的捆绑或交叉销售,使商户在降低成本的同时为广大师生提供更好的生活服务,增加现有客户的满意度。5.1数据挖掘技术 5.1.1数据挖掘的概念
1997年SAS研究所将数据挖掘定义为将大量相关数据进行探索,最后建立相关模型的方法;1999年Bhavani将数据挖掘定义为一个过程,即利用数学,统计和模式识别技术,在大量的数据中发现新的趋势、新关系和模式的过程;最后一种是最具有影响力且至今被广泛采用的Usama M.Fayyad等给出的,即数据挖掘(Data Mining)是从大量的、有噪声、模糊的、不完全的、随机的数据中挖掘出隐含的、未知的、用户可能感兴趣的但又有潜在价值的知识和信息的过程。5.1.2数据挖掘的功能一可以挖掘什么类型的模式
数据挖掘的目标从大量的数据中发现隐含的、有意义的知识并对现有数据记录进行分析,预测未来趋势和行为,做出基于知识的决策,主要有以下功能。
1.描述功能:将数据库中的对象通过数据分类、聚类分析、数据汇总与归纳、概括等过程最终获得数据简明、准确的描述。
第二篇:网上商城系统的分析及设计
论文(作业)题目:网上商城管理信息系统分析与设计
网上商城管理信息系统分析与设计
系 别: 计算机学院 专 业: 计算机科学与技术 班 别: 学 号: 姓 名: 赵叶欢 学 期: 春季上学期 指导老师:
2012年6月8日
论文(作业)题目:网上商城管理信息系统分析与设计
目录
1、概述.................................................................................................................................................3 1.系统开发背景与意义....................................................................................................................3 1.1 系统开发背景........................................................................................................................3 1.2 系统开发意义........................................................................................................................3 1.3网上购商城系统的技术现状分析.........................................................................................4 2.网上商城管理系统需求分析.....................................................................................................5 2.1可行性分析.............................................................................................................................5 2.2 系统功能需求........................................................................................................................5 3.网上商城管理信息系统分析........................................................................................................7 4.网上商城管理信息系统设计......................................................................................................11 4.1数据库设计...........................................................................................................................11 4.2界面设计...............................................................................................................................13 4.2.5.管理员登陆........................................................................................................................17 学习总结.............................................................................................................................................21
论文(作业)题目:网上商城管理信息系统分析与设计
1、概述
摘要:近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。网上购物系统作为B2B,B2C(Business to Customer,即企业对消费者),C2C(Customer to Customer,即消费者对消费者)电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。本文对如何开发出一个具有基本网上交易功能的B2C网上商城,给出了具体的指导。主要介绍基于UML的B2C网上商城系统分析与设计的基本内容。对B2C网上商城的例图、顺序图、活动图、类图数据库设计和jSP编程等,都提出了具有针对性的解决方法。
1.系统开发背景与意义
1.1 系统开发背景
随着计算机和网络的日趋普及,越来越多的商家在网上升起商店,向消费者展示出一片新鲜的购物大地。在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特、家庭仓储、科罗格、J.C培尼等纷纷跻身于网络经商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。
在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。如今,在北京、上海、深圳等大城市,已有200多家商场,专卖店开设了网上商店,还有一些正处在观望阶段。真正意义上的网上购物,即货款的结算在网上进行,已在国内实现。深圳无虹商场去年5月开办了我国第一家实行计单和支付一体上的网上商店,上网的消费者只要拥有一张招商银行的“一卡通”,便可轻松购物,24小时内商家送货上门。商家投资网上商店目的是赚钱。但从目前网上商店的运营情况来看,上网者不购物、购物者不上网的现象非常普遍,网上生意渗淡已是目前各大网上商店共同的困惑。上海首家网上商店——上海亿样购物中心由于经营不善,开业不到半年即关门停业,北京的一些大型零售商场,其网上商店“门庭冷落”。
结算方式的原始落后是网上购物致命的弱点。在国外,计算机一般都与银行的帐户相联,消费者和网络商店只需和网上银行打交道,不必当面直接支取现金。在我国目前除淘宝、拍拍等几家网上商店进行网上购物结算外,大部分商家结算只能采取 “送货上门、到货付款”或“邮寄上门、贷款邮资先付”的方式。这样不但浪费了时间和人力,而且限制了网络的覆盖范围和商品的结构种类。因此,安全、快捷、方便的电子支付手段将是今后网上商店健康发展的主要要素。
1.2 系统开发意义
从系统的背景来看,可以看出开发一个网上购物系统有以下几点重大的意义: 论文(作业)题目:网上商城管理信息系统分析与设计
a.投资少,回收快。一项针对中国中小企业的情况调查显示,个人在网下启动销售公司的平均费用至少5万元,而网上开店建店成本非常小。一般说,筹办一家网上的商店投入很小,不用去办营业执照,不用去租门面,不用囤积货品,所需资金不过1500元左右;网上商店比同等规模的地面商店“租金”要低得多,同时租金不会因为营业面积的增加而增加,投资者也不用为延长营业时间而增加额外的费用。
b.基本不需要占压资金。传统商店的进货资金少则几千元,多则数万元,而网上商店则不需要压资金。
c.24小时营业时间。网上商店延长了商店的营业时间,一天24小时、一年365天不停地运作,无须专人值班看店,都可照常营业。传统店铺的营业时间一般为8-12小时,遇上坏天气或者老板、店员有急事也不得不暂时休息。
d.不受店面空间的限制。哪怕只是街边小店,在网上却可以拥有百货大楼那么大的店面,只要投资者愿意,可以摆上成千上万种商品。目前国内最大的专业拍卖网站同时在线的商品要超过10万件,已超过一些大超市。
e.不受地理位置影响。不管客户离店有多远,也不管顾客是国内还是国外,在网上,客户一样可以很方便地找到并购买商品。这令消费群体突破了地域的限制,变得无限广阔了。
1.3网上购商城系统的技术现状分析
目前在国内购物系统的开发,PHP与ASP技术应用最为广泛。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。
采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。
首先,PHP缺乏规模支持。其次,缺乏多层结构支持,对于大负荷站点,解决方法只有一个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,组成二维阵列,而PHP则缺乏这种支持。还有上面提到过的一点,PHP提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。
ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统,即只能运行于微软的服务器产品,IIS(Internet Information Server)(windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。
JSP则没有以上缺陷,JSP可以通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。
三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet的WebSphere;西方另外一个非常著名的电子商务软件提供商Intershop,它原来的产品Intershop1,2,3,4占据了主要的电子商务软件份额。它们都是通过CGI来提供支持 的。但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统软件。
总的来说,ASP、PHP、JSP三者都有相当数量的支持者,而这三者也各有所长,在开发过程中,我们应该根据实际的需要来使用最合适的技术,本系统则采用较JSP技术,一方面JSP的安全性和跨平台性比较好,另一方面,我也希望能从开发该系统的过程中,深入学习一下这门编程语言。论文(作业)题目:网上商城管理信息系统分析与设计
2.网上商城管理系统需求分析
2.1可行性分析
经济可行性:小型的系统,只需要在网络上下载所需的软件设备,所需成本较低,同时前期准备相对充分,经济成本低。
技术可行性:软件技术可行性——本系统使用JSP.net语言编写网上商城的框架,后台数据库使用MySQL,服务器主要采用tomcat。现有的技术及软硬件设备都是实习对软件的开发,因此在软件技术上具备条件。同时,本系统中程序与数据集中存放,可以系统维护成本低,服务器处理任务的速度较快。
操作可行性:系统开发人员在具备一定的开发语言基础,同时对数据库的操作比较熟练,时间安排以及人员分工上配合较好。
2.2 系统功能需求
(1)用例图:系统的使用者主要有普通用户,顾客和后台管理员,主要用例如下。论文(作业)题目:网上商城管理信息系统分析与设计
通过对淘宝网,拍拍等网上购物的认识和分析,我对网上购物有了基本的了解,我觉得该系统至少应该具有以下的一些基本功能:
注册管理:能够对用户名,密码的简单验证。
商品浏览:分类显示商品;显示商品详情,提供购买链接;可以对商品进行模糊查询。浏览商品时不要求用户登录,但下订单前用户必须登录,对于浏览过的商品有历史记录。(前台用户的功能)
购物车管理:欲购买商品可以增添到购物车;也可以从购物车退回商品,清空购物车;对于同一件商品的多次购买只能在原来的商品上增添数量,还可以修改购物车中某个商品的数量,统计商品总金额。(前台用户的功能)
订单管理:只有登录的用户可下订单;用户可以查看自己的订单。管理员可以修改订单的状态。
商品管理:管理员可以增添商品分类;修改商品基本信息;增添商品时候可以上传图片。
统计信息管理:对所有信息的统计和分析,按照管理的需要生成各种报表。论文(作业)题目:网上商城管理信息系统分析与设计
基于上述分析,设计出该网上商城的系统功能模块图:
3.网上商城管理信息系统分析
(1)用户状态图分析
论文(作业)题目:网上商城管理信息系统分析与设计
未注册注册注册成功已注册过会员登录界面没有感兴趣的商品退出选择登录账号或密码有误付款成功取消订单输入账号密码选择拒绝输入正确查看商品付款确认订单普通用户进入系统选择浏览商品选择确认选择商品返回继续商品会员提交将商品放入购物车提交订单提交确定/取消商品修改订单修改订单信息提示请先登录再购买(2)时序图
会员下订单的时序图:
论文(作业)题目:网上商城管理信息系统分析与设计
登录界面商品界面订购模块后台数据模块 : 会员1 : 输入用户名和密码()2 : 提交用户ID()3 : 提示输入商品查询条件()4 : 输入查询条件()5 : 显示商品列表()6 : 选择商品放入购物车()7 : 结算()8 : 修改用户信息,提交订单()9 : 提示确认订单()10 : 确认订单()11 : 提示订购成功()管理员处理订单的时序图
论文(作业)题目:网上商城管理信息系统分析与设计
登录模块订单处理库存查询数据模块 : 管理员1 : 输入账号和密码()2 : 提交用户ID()3 : 返回待处理订单列表()4 : 提取用户ID()5 : 返回单个用户订单列表()6 : 提交订单商品ID()商品价格修改7 : 返回商品库存信息()8 :()9 : 更新客户订单状态()10 : 客户状态更新成功()11 : 提示处理成功()(3)类图分析:论文(作业)题目:网上商城管理信息系统分析与设计
SpecialGoods+getSalesCount()Products-_id: int-_name: char-_memberPrice: Double-_normalPrice: Double-_number: int-_category: char+getCategory()+geySalesCount()+n+chang()+1SalesItem-_id: int-_count: double-_orderId: char-_ProductsId: char-_unitPrice: double+nmanagementManager-_id: int-_adminname: char-_password: char+mmanagementShoppingCart-_unitPrice: double-_Productsid: int-_count: double+getTotalPrice()+mNormaProductsCategory-_id: int-_name: char-_descr: char+getProductsCounts()+change()+n+1SalesOrder-_id: int-_Productsid: int-_userid: int-_address: char-_orderdate: char+getotalprice()+save()+changeorder()+login()managementmanagement+nUser-_id: int-_username: char-_password: char-_address: char-_phone: char-_rdate: char+getOrders()+change()+search()+delete()+save()+nMemberUser+getmenberprice()buy+1NormalUser
4.网上商城管理信息系统设计
4.1数据库设计
User表
论文(作业)题目:网上商城管理信息系统分析与设计
Category表
Product表
Saleorder 表
Salesitem表 论文(作业)题目:网上商城管理信息系统分析与设计
4.2界面设计
4.2.1网站首页
.4.2.2.用户注册
论文(作业)题目:网上商城管理信息系统分析与设计
注册模块的IPO 1.功能
在首页点击“注册”超链接就进入用户注册页面。用户填写注册信息并提交,系统将用户的注册信息插入数据库,提示注册成功。2.输入
输入用户名、密码、确认密码、地址、联系电话。3.处理
(1)输入用户资料。在register.jsp页面显示等待用户输入的表单。用户填写相应的资料,点击“提交”按钮,数据被提交给register.jsp页面并传递参数。
(2)获取数据。register.jsp根据参数的值(add)判断当前为添加数据操作,register.jsp读取表单提交的数据。
(3)连接数据库。将用户填写的资料插入到数据库中。(4)系统显示用户注册成功信息。提示用户注册成功并在页面中显示用户的注册信息。4.输出
输出注册成功页面。
部分代码: <%
request.setCharacterEncoding(“GBK”);String action = request.getParameter(“action”);if(action!= null && action.trim().equals(“register”)){ String username = request.getParameter(“username”);String password = request.getParameter(“password”);//String password2 = request.getParameter(“password2”);
String phone = request.getParameter(“phone”);String addr = request.getParameter(“addr”);User u = new User();u.setUsername(username);u.setPassword(password);u.setPhone(phone);u.setAddr(addr);u.setRdate(new Date());论文(作业)题目:网上商城管理信息系统分析与设计
u.save();out.println(“注册成功!恭喜!”);return;} %> 4.2.3.会员登录
String username = request.getParameter(“username”);String password = request.getParameter(“password”);
try { User u = User.check(username, password);session.setAttribute(“user”, u);} catch(UserNotFoundException e){ out.println(e.getMessage());return;} catch(PasswordNotCorrectException e){ out.println(e.getMessage());return;}
String path = request.getContextPath();String basePath = request.getScheme()+“://”+request.getServerName()+“:”+request.getServerPort()+path+“/”;%>
论文(作业)题目:网上商城管理信息系统分析与设计
4.2.4.下单
购物车模块的IPO
1.功能
用户在查看商品详细信息页面点击“购买”按钮,该商品就被加入到用户的购物车中。用户在购物车页面可以查看已购买的商品、修改数量或删除商品。
2.输入
用户选择点击购物车页面的某个商品链接。
3.处理
(1)显示用户已购买的商品。显示商品的名称、数量、单价、和总价。
(2)获取数据。用户在修改商品数量或删除商品后,如果点击“继续购物”链接则返回到浏览商品页面继续购物,如果点击“确认订单”链接就将表单数据提交给confirmOrder.jsp进行处理。
(3)连接数据库。confirmOrder.jsp和数据库连接,然后生成SQL语句将数据插入到数据库中。之后清空用户购物车中的数据,生成订单。(4)显示提示信息。弹出对话框提示用户订单已经确认。
4.输出
输出显示已经生成的订单信息。
<%
request.setCharacterEncoding(“GBK”);User u =(User)session.getAttribute(“user”);if(u == null){
response.sendRedirect(“UserLogin.jsp”);
return;} Cart c =(Cart)session.getAttribute(“cart”);if(c == null){
c = new Cart();
session.setAttribute(“cart”, c);论文(作业)题目:网上商城管理信息系统分析与设计
} String addr = request.getParameter(“addr”);u.setAddr(addr);int orderId = u.buy(c);
session.removeAttribute(“cart”);%>
单已下!号: <%=orderId%> 4.2.5.管理员登陆
<%
String action = request.getParameter(“action”);if(action!= null && action.equals(“login”)){ String username = request.getParameter(“username”);String password = request.getParameter(“password”);if(!username.equals(“admin”)||!password.equals(“admin”)){
out.println(“username or password not correct!”);
return;} session.setAttribute(“admin” , “admin”);response.sendRedirect(“admin/AdminIndex.jsp”);} %> 论文(作业)题目:网上商城管理信息系统分析与设计
4.2.6.类别管理
4.2.7.产品管理
添加商品模块的IPO
1.功能
本模块主要实现管理员为商城添加新商品的功能。
2.输入
输入商品名称、商品规格、商品价格、折扣、商品库存、商品图片和详细说明。
3.处理
(1)输入商品资料。管理员在addProduct.jsp填写表单输入商品的相关资料,点击“提交”按钮将表单提交给addProduct.jsp页面。
(2)获取数据。addProduct.jsp读取表单数据和参数进行添加数据操作。(3)连接数据库。建立数据库连接,将数据插入到数据库中。(4)显示提示信息。显示商品添加成功页面。
4.输出
输出新商品添加成功页面。论文(作业)题目:网上商城管理信息系统分析与设计
<% List
4.2.8.订单管理
订单管理模块的IPO
1.功能
本模块主要实现网站订单管理功能,包括分页显示所有订单、查看订单信息、修改订单状态和删除订单。
2.输入
选择不同的订单。
3.处理
(1)显示所有订单。显示数据库中的所有订单信息供管理员浏览。
(2)获取查询的订单。ordersManage.jsp以分页的方式显示所有用户的订单信息,其中的“订单状态”是管理员可以修改的字段。管理员可以对订单进行修改和删除操作。
论文(作业)题目:网上商城管理信息系统分析与设计
(3)连接数据库。建立数据库连接,根据提交的订单id生成SQL语句执行查找或删除操作。
(4)显示操作结果。显示操作结果提示页面。
4.输出
输出操作结果提示页面。
<%!private static final int PAGE_SIZE = 2;%>
<%
String strPageNo = request.getParameter(”pageno“);int pageNo = 1;if(strPageNo!= null){ pageNo = Integer.parseInt(strPageNo);} if(pageNo < 1)pageNo = 1;%>
<%
//get all the users
List
int totalPages =(totalRecords + PAGE_SIZE-1)/ PAGE_SIZE;if(pageNo > totalPages)pageNo = totalPages;%> <%
int id = Integer.parseInt(request.getParameter(”id“));SalesOrder so = OrderMgr.getInstance().loadById(id);
String action = request.getParameter(”action“);if(action!= null && action.equals(”modify“)){ int status = Integer.parseInt(request.getParameter(”status"));so.setStatus(status);so.updateStatus();} %>
论文(作业)题目:网上商城管理信息系统分析与设计
学习总结
1.收获很大 案例+看书,反复几次,学的会更好
2.个人认为结构化分析方法长处在于系统分析,通过对数据流的把握,能够很好的定位系统功能。而面向对象的方法优势在设计,最终设计的结果就是类图,包括属性和方法,直接供程序员使用。
3.对于uml中的类图,顺序图可以用在系统分析,也可以用在系统设计。类图在系统分析阶段叫做概念类,在系统设计阶段叫设计类。顺序图可以分析用例图的一个功能概况,也可以分析程序类之间的消息调用。
第三篇:面向对象图书管理信息系统设计与实现
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
面向对象图书管理信息系统设计与实现
#include
const int Maxbor=5;//每位读者最多借五本书 //读者类,实现对读者的信息的描述 class Reader { private: int tag;//删除标记 1:已删 0:未删 int no;//读者编号 char name[10];//读者姓名 int borbook[Maxbor];//所借图书 public: Reader(){} char *getname(){return name;} //获取姓名 int gettag(){return tag;} //获取删除标记
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
int getno(){return no;} //获取读者编号 void setname(char na[])//设置姓名 { strcpy(name,na);} void delbook(){ tag=1;}//设置删除标记 1:已删 0:未删 void addreader(int n,char *na)//增加读者 { tag=0;no=n;strcpy(name,na);for(int i=0;i 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } } } int retbook(int bookid)//还书操作 { for(int i=0;i 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } };//读者类库,实现建立读者的个人资料 class RDatabase { private: int top;//读者记录指针 Reader read[Maxr];//读者记录 public: RDatabase()//构造函数,将reader.txt读到read[]中 { Reader s;top=-1;fstream file(“reader.txt”,ios::in);//打开一个输入文件 while(1){ file.read((char *)&s,sizeof(s));if(!file)break;top++;read[top]=s;} file.close();//关闭 reader.txt 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } void clear()//删除所有读者信息 { top=-1;} int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n);if(p==NULL){ top++;read[top].addreader(n,na);return 1;} return 0;} Reader *query(int readerid)//按编号查找 { for(int i=0;i<=top;i++)if(read[i].getno()==readerid && read[i].gettag()==0){ 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 return &read[i];} return NULL;} void disp()//输出所有读者信息 { for(int i=0;i<=top;i++)read[i].disp();} void readerdata();//读者库维护 ~RDatabase()//析构函数,将read[]写到reader.txt文件中 { fstream file(“reader.txt”,ios::out);for(int i=0;i<=top;i++)if(read[i].gettag()==0)file.write((char *)&read[i],sizeof(read[i]));file.close();} };void RDatabase::readerdata(){ char choice; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 char rname[20];int readerid;Reader *r;while(choice!='0'){ cout <<“nnttt读 者 维 护nnntt 1 新 增nntt 2 更 改nntt 3 删 除nntt 4 查 找nntt 5 显 示nntt 6 全 删nntt 0 退 出”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 if(r==NULL){ cout << “ 该读者不存在 ”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 cin >> readerid;r=query(readerid);if(r==NULL){ cout <<“该读者不存在”<< endl;break;} r->disp();break;case '5': disp();break;case '6': clear();break;default:cout<<“输入错误,请从新输入:”;break;} } } //图书类,实现对图书的描述,图书的编号,书名,借出,还入等class Book { 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 private: int tag;//删除标记 1:已删 0:未删 int no;//图书编号 char name[20];//书名 int onshelf;//是否再架 1:再架 2:已借 public: Book(){} char *getname(){ return name;}//获取姓名int getno(){ return no;}//获取图书编号 int gettag(){ return tag;}//获取删除标记 void setname(char na[])//设置书名 { strcpy(name,na);} void delbook(){ tag=1;}//删除图书 void addbook(int n,char *na)//增加图书 { tag=0;no=n;strcpy(name,na);onshelf=1;} 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 int borrowbook()//借书操作 { if(onshelf==1){ onshelf=0;return 1;} return 0;} void retbook()//还书操作 { onshelf=1;} void disp()//输出图书 { cout << setw(6)<< no << setw(18)<< name << setw(10)<<(onshelf==1? “在架”:“已借”)< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 private: int top;//图书记录指针 Book book[Maxb];//图书记录 public: BDatabase()//构造函数,将book.txt读到book[]中 { Book b;top=-1;fstream file(“book.txt”,ios::in);while(1){ file.read((char *)&b,sizeof(b));if(!file)break;top++;book[top]=b;} file.close();} void clear()//全删 { top=-1;} 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 int addbook(int n,char *na)//增加图书 { Book *p=query(n);if(NULL==p){ top++;book[top].addbook(n,na);return 1;} return 0;} Book *query(int bookid)//查找图书 { for(int i=0;i<=top;i++)if(book[i].getno()==bookid &&book[i].gettag()==0){ return &book[i];} return NULL;} void bookdata();//图书库维护 void disp() 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 { for(int i=0;i<=top;i++)if(book[i].gettag()==0)book[i].disp();} ~BDatabase()//析构函数,将book[]写到book.txt文件中 { fstream file(“book.txt”,ios::out);for(int i=0;i<=top;i++)if(book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i]));file.close();} };void BDatabase::bookdata(){ char choice;char bname[40];int bookid;Book *b;while(choice!='0'){ 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 cout <<“nnnttt图 书 维 护 ”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 cout << “输入新的书名:”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 break;} b->disp();break;case '5': disp();break;case '6': clear();break;default:cout<<“输入错误,请从新输入:”;} } } //main()函数的实现,程序的主界面的引导 void main(){ char choice;int bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 Book *b;while(choice!='0'){ cout < 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 { cout <<“ 不存在该图书,不能借书”<< endl;break;} if(b->borrowbook()==0){ cout << “ 该图书已借出,不能借书”<< endl;break;} r->borrowbook(b->getno());break;case '2': cout<<“还书n 读者编号:”;cin >>readerid;cout << “ 图书编号:”;cin >>bookid;r=ReaderDB.query(readerid);if(r==NULL){ cout <<“ 不存在该读者,不能还书” << endl;break;} 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 b=BookDB.query(bookid);if(b==NULL){ cout <<“ 不存在该图书,不能还书” < 精心收集 精心编辑 精致阅读 如需请下载! 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 面向对象分析与设计试题B卷 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分)3.下列不属于面向对象技术的基本特征的是()。 A.封装性 B.模块性 C.多态性 D.继承性 4.面向对象程序设计将描述事物的数据与()封装在一起,作为一个相互依存、不可分割的整体来处理。 A.信息 B.数据隐藏 C.对数据的操作 D.数据抽象 5.关于面向对象方法的优点,下列不正确的叙述是()。 A.与人类习惯的思维方法比较一致 B.可重用性好 C.以数据操作为中心 D.可维护性好 8.下列不属于类的成员函数的是()。 A.构造函数 B.析构函数 C.友元函数 D.拷贝构造函数 9.继承机制的作用是()。 A.信息隐藏 B.数据封装 C.派生新类 D.数据抽象 14.()是从用户使用系统的角度描述系统功能的图形表达方法。 A.类图 B.对象图 C.序列图 D.用例图 15.()是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。 A.对象图 B.组件图 C.类图 D.配置图 16.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B.协作图 C.状态图 D.序列图 17.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。 A.组件图 B.协作图 C.状态图 D.配置图 18.在用UML进行数据库的分析与设计过程中,()就是进行数据库的需求分析,使用用例图、类图、顺序图、活动图等建立业务模型。 A.逻辑数据模型设计 B 业务Use Case模型设计 C.物理数据模型设计 D.物理实现设计 19.使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” A.业务Use Case模型设计 B.逻辑数据模型设计 C.物理数据模型设计 C.物理实现设计 20.UML的动态建模表示包含()种图。 A.9 B.5 C.4 D.2 二、填空题(每空 1 分,共 20 分)1.面向对象开发方法一改过去传统的以_______________为基础的______________的结构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列_______的集合,其______________又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的______,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与____________在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的________、________、_________等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服____________。因此,它已成为成熟的广为采用的软件开发方法。 2.对象是客观实体的抽象表示,是由__________________________和________________________两部分组成。而______是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的___________。通过________关系又可形成一种类层次结构。 3.UML中用于描述系统的静态建模的视图称为静态视图,包括________、_________、_________、__________和__________。 四.简答题(每空4分,共 20 分)1.简述面向对象软件开发方法的优点。2.简述面向对象技术的三大机制。3.简述OOA模型的层次结构。 4.简述OOD模型的总体结构,并画图表示。 5.应用UML进行系统分析和设计所需建立视图有那几种? 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 五.试用UML对教学管理系统及相关的数据库系统进行分析和设计。学生选课系统一般包括(1)选课管理功能;(2)成绩管理功能。试完成下列工作:(1)建立系统静态结构模型—画出系统用例图和类图;(10分)(2)建立系统动态结构模型—画出系统序列图和协作图;(10分)(3)建立关系数据库逻辑模型。(10分) 面向对象分析与设计试题参考答案 一、单项选择题(每小题 1 分,共 20 分) 1.D 2.C 3.B 4.C 5.C 6.D 7.D 8.C 9.C 10.D 11.B 12.B 13.B 14.D 15.C 16.D 17.D 18.B 19.B 20.C 二、填空题(每空 1 分,共 20 分) 1.功能分析, 面向过程, 对象,面向对象的设计, 概念,解空间,封装, 继承, 多态, 软件危机 2.描述对象属性的数据,四.简答题 1.简述面向对象技术发展的动因。 答:为了超越程序复杂性障碍,克服软件危机,人们提出了面向对象软件开发方法。面向对象开发方法一改过去传统的以功能分析为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 2.简述面向对象技术的三大机制。答:(1)封装性(encapsulation) 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” , 类,实例,继承 3.用例图、类图、对象图、包图、构件图、配置图 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。(2)继承性 如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。(3)多态性 在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。3.简述OOA模型的层次结构。 答:OOA模型采用五层次结构,它们分别是:(1)对象-类层 划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。(2)属性层 定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通用类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。(3)服务层 表示对象的服务或行为,即是要定义类上的操作。(4)结构层 标识现实世界中对象之间的关系。当一个对象是另一个对象的一部分时,用“整体-部分”关系表示;当一个类属于另一个类时,用类之间继承关系表示。(5)主题层 可将相关类或对象划分为一个主题。4.简述OOD模型的总体结构,并画图表示。OOD体系结构的各个部分内容:(1)问题论域部分,在OOA模型的基础上,细化分析结果,设计一组构成底层应用模型的类和对象。 (2)人机交互部分:设计用户界面模型,该用户界面模型中的类和对象提供实现人机交互操作的接口函数。用户界面设计包括 菜单设计、窗口设计、输入/输出界面设计等等。 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” (3)任务管理部分:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。 (4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括: — 数据存放设计:数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。 — 设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。 class & object layer(类及对象层)attribute layer(类及对象层)service layer(服务层)问题论域部分人机交互部分任务管理部分数据管理部分类边界实例边界实例连接属性消息服务struct layer(结构层)subject layer(主题层)主题图1.5 OOD模型的总体结构5.(1)系统用例图如下 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 查询课程信息老师老师查询学生成绩选课注册学生学生查询课程成绩管理老师信息学生成绩管理管理学生信息管理员管理课程信息管理开设课程管理员成绩统计(b)成绩管理的用例图(a)选课管理的用例图 对象类图如下: 教师编号姓名地址电话1..*0..*课程课程名描述学时加入课程()1..*0..*学生编号姓名地址电话开设课程课程名授课日期授课时间地点指定老师()学生满否()选修课程学生名课程名学期增加记录()选课统计()(a)选课对象类图开设课程课程名授课日期授课时间地点指定老师()学生满否()学生成绩登记学生名学期课程名成绩加入成绩()打印()(b)成绩管理对象类图成绩统计学期课程名成绩按课程统计()按学生统计()打印() 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” (2)把需要持久存储的数据实体类及其联系,映射成为如下关系数据库表: 学生(学生号、姓名、出生日期、性别、籍贯、地址、电话、入学时间、专业、班级备注)教师(教师号、姓名、出生日期、性别、籍贯、地址、电话、职称、专长、备注)课程(课程号、课程名、描述、学分、学时、性质、备注) 开设课程(课程号、学期、授课日期、授课时间、地点、选修人数、备注) 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” PHP中面向对象设计的经验总结 你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。-----Arthur J.Riel 1.所有数据都应该隐藏在所在的类的内部。 2.类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。3.尽量减少类的协议中的消息。 4.实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 5.不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。6.不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。 7.类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。 8.类应该只表示一个关键抽象。包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响。9.把相关的数据和行为集中放置。设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。 10.把不相关的信息放在另一个类中(也即:互不沟通的行为)。朝着稳定的方向进行依赖。11.确保你为之建模的抽象概念是类,而不只是对象扮演的角色。 12.在水平方向上尽可能统一地分布系统功能,也即:按照设计,顶层类应当统一地共享工作。13.在你的系统中不要创建全能类/对象。对名字包含Driver、Manager、System、Susystem的类要特别多加小心。规划一个接口而不是实现一个接口。 14.对公共接口中定义了大量访问方法的类多加小心。大量访问方法意味着相关数据和行为没有集中存放。 15.对包含太多互不沟通的行为的类多加小心。这个问题的另一表现是在你的应用程序中的类的公有接口中创建了很多的get和set函数。 16.在由同用户界面交互的面向对象模型构成的应用程序中,模型不应该依赖于界面,界面则应当依赖于模型。 17.尽可能地按照现实世界建模(我们常常为了遵守系统功能分布原则、避免全能类原则以及集中放置相关数据和行为的原则而违背这条原则)。 18.从你的设计中去除不需要的类。一般来说,我们会把这个类降级成一个属性。19.去除系统外的类。系统外的类的特点是,抽象地看它们只往系统领域发送消息但并不接受系统领域内其他类发出的消息。 20.不要把操作变成类。质疑任何名字是动词或者派生自动词的类,特别是只有一个有意义行为的类。考虑一下那个有意义的行为是 否应当迁移到已经存在或者尚未发现的某个类中。 21.我们在创建应用程序的分析模型时常常引入代理类。在设计阶段,我们常会发现很多代理没有用的,应当去除。 22.尽量减少类的协作者的数量。一个类用到的其他类的数目应当尽量少。23.尽量减少类和协作者之间传递的消息的数量。 24.尽量减少类和协作者之间的协作量,也即:减少类和协作者之间传递的不同消息的数量。25.尽量减少类的扇出,也即:减少类定义的消息数和发送的消息数的乘积。26.如果类包含另一个类的对象,那么包含类应当给被包含的对象发送消息。也即:包含关系总是意味着使用关系。 27.类中定义的大多数方法都应当在大多数时间里使用大多数数据成员。 28.类包含的对象数目不应当超过开发者短期记忆的容量。这个数目常常是6。当类包含多于6个数据成员时,可以把逻辑相关的数据成员划分为一组,然后用一个新的包含类去包含这一组成员。 29.让系统功能在窄而深的继承体系中垂直分布。 30.在实现语义约束时,最好根据类定义来实现。这常常会导致类泛滥成灾,在这种情况下,约束应当在类的行为中实现,通常是在构造函数中实现,但不是必须如此。31.在类的构造函数中实现语义约束时,把约束测试放在构造函数领域所允许的尽量深的包含层次中。 32.约束所依赖的语义信息如果经常改变,那么最好放在一个集中式的第3方对象中。33.约束所依赖的语义信息如果很少改变,那么最好分布在约束所涉及的各个类中。34.类必须知道它包含什么,但是不能知道谁包含它。 35.共享字面范围(也就是被同一个类所包含)的对象相互之间不应当有使用关系。36.继承只应被用来为特化层次结构建模。 37.派生类必须知道基类,基类不应该知道关于它们的派生类的任何信息。 38.基类中的所有数据都应当是私有的,不要使用保护数据。类的设计者永远都不应该把类的使用者不需要的东西放在公有接口中。 39.在理论上,继承层次体系应当深一点,越深越好。 40.在实践中,继承层次体系的深度不应当超出一个普通人的短期记忆能力。一个广为接受的深度值是6。 41.所有的抽象类都应当是基类。42.所有的基类都应当是抽象类。 43.把数据、行为和/或接口的共性尽可能地放到继承层次体系的高端。 44.如果两个或更多个类共享公共数据(但没有公共行为),那么应当把公共数据放在一个类中,每个共享这个数据的类都包含这个类。 45.如果两个或更多个类有共同的数据和行为(就是方法),那么这些类的每一个都应当从一个表示了这些数据和方法的公共基类继承。 46.如果两个或更多个类共享公共接口(指的是消息,而不是方法),那么只有他们需要被多态地使用时,他们才应当从一个公共基类继承。 47.对对象类型的显示的分情况分析一般是错误的。在大多数这样的情况下,设计者应当使用多态。 48.对属性值的显示的分情况分析常常是错误的。类应当解耦合成一个继承层次结构,每个属性值都被变换成一个派生类。 49.不要通过继承关系来为类的动态语义建模。试图用静态语义关系来为动态语义建模会导致在运行时切换类型。 50.不要把类的对象变成派生类。对任何只有一个实例的派生类都要多加小心。 51.如果你觉得需要在运行时刻创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。 52.在派生类中用空方法(也就是什么也不做的方法)来覆写基类中的方法应当是非法的。53.不要把可选包含同对继承的需要相混淆。把可选包含建模成继承会带来泛滥成灾的类。54.在创建继承层次时,试着创建可复用的框架,而不是可复用的组件。 55.如果你在设计中使用了多重继承,先假设你犯了错误。如果没犯错误,你需要设法证明。56.只要在面向对象设计中用到了继承,问自己两个问题:(1)派生类是否是它继承的那个东西的一个特殊类型?(2)基类是不是派生类的一部分? 57.如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类。 58.在面向对象设计中如果你需要在包含关系和关联关系间作出选择,请选择包含关系。59.不要把全局数据或全局函数用于类的对象的薄记工作。应当使用类变量或类方法。60.面向对象设计者不应当让物理设计准则来破坏他们的逻辑设计。但是,在对逻辑设计作出决策的过程中我们经常用到物理设计准则。61.不要绕开公共接口去修改对象的状态。第四篇:面向对象系统分析与设计试卷与答案1
第五篇:PHP中面向对象设计的经验总结