软件设计大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一需求分析
此系统是一个类似于淘宝网的在线衣服销售系统,相当于淘宝网上的一个专门买衣服的网店,它具有用户注册,用户登录,修改密码,显示系统功能,查看订购历史以及订货。
1.1需求列表:
(1)用户管理:用户管理的需求包括用户注册,用户登录以及修改密码。
用户注册是添加一个我们网上衣店的新用户;用户登录是用户想要进
入系统时必须采取验证身份的步骤;修改密码是为了用户的安全性考
虑,当密码存在不安全的因素时,适时修改密码。
(2)商品衣服的管理:商品管理包括订购衣服和查看订购衣服的历史。订购衣服是当我们衣店的库存数量不足时必须采取的;查看订购衣服的
历史有助于我们更好地了解衣服的订购情况。
(3)显示系统功能:此功能是用来让用户能很清楚地了解此系统所实现的各种功能。
1.2系统用例图:
1.3用例分析及场景描述:
用户注册用例:
这部分主要是新用户进行注册的过程,首先用户进入到注册页面,填写
注册信息并提交,如果无误的话系统会给予注册成功的提示,如果注册失败会提示注册失败信息。
用户登录用例:
此功能模块针对的对象是本网站的会员既已经注册的会员,会员首先填写用户名和密码,然后点击登录按钮,如果网站数据库中存在此会员并且密码正确则提示登录成功提示,如果网站不存在此用户或密码不正确,系统会提示用户登录失败。
修改密码用例:
此用例针对注册会员进行操作。用户登录成功会可以进入网站主页面,如果用户想修改密码的话可以单击修改密码按钮,进行密码修改,用户输入新密码单击修改按钮即可完成密码修改。
显示系统功能用例:
此功能针对注册会员,会员首先登录到网站,进入主页,主页会有相关操作的按钮,显示系统所提供给会员操作的功能,用户可以针对自己的需要选择系统提供的功能。
订货衣服用例:
此功能针对注册登录会员,网站提供两种订购方案:单件订购和定制套装。用户可以根据自己的需求来选择。
单件订购方案:用户选择是上衣还是裤子,并填写订购的数量,确认无误后单击订购按钮即可,如果订购成功,系统会提示订购成功,失败则会提示订购失败。
定制套装方案:用户选择定制套装的档次(高、中、低),并填写订购的数量,确认无误后单击订购按钮即可,如果订购成功,系统会提示订购成功,失败则会提示订购失败。
显示订购历史用例:
此功能针对注册会员,用户登录到系统后,主页显示系统功能中包括历史查看选项,用户可以单击进入历史交易记录页面,页面将显示用户所有的交易记录。
二设计模式
2.1单件模式
2.1.1单件模式的定义
让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法。这就是单件模式。
2.1.2单件设计模式的意图
单件模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2.1.3单件设计模式的结构
单件模式结构图
单件模式的结构进包括Singleton。
Singleton:被调用的单件对象。
在单件模式中,通常由Instance(或GetInstance)方法负责对象的创建,该方法应保证每个需要(单件)对象的客户端均能访问它。
2.1.4单件模式在本程序中的应用与理解
在服装定制系统中,单件模式主要用于数据库部分。该类的基本结构如下:public class Connection
{
private static Connection newConn;
private static readonly object mylock=new object();
private Connection() {}
public static Connection getConn();
public int Insert(string str);
public int Insert(string Name, string Pwd);
public int Change(string Pwd,int ID);
}
本程序中单件模式的Singleton类的类名为Connection。通过getConn()方法获得该类的对象,保证了该类只有一个唯一实例。Mylock是为了多线程安全所做的一个object对象。通过Insert()方法可以向数据库插入客户基本信息以及客户订购的服装信息,通过change()方法,客户可以在登录该系统后修改自己的用户名和密码。
通过单件模式的使用,我们深刻地体会到了单件模式的作用和适用范围:
(1)当类只能有一个实例并且用户可以从一个众所周知的访问点来访问它时。(2)当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
2.2工厂模式
2.2.1工厂模式的定义:
工程模式是一种经常被用到的模式,根据工厂模式实现的类可以根据提供的类生成一组类中的某一类的实例,通常这一组类有一个公共的抽象父类,并且实现了相同的方法,但是这些方法对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以通过条件生成不同的子类实例。当得到
子类的实例后,开发人员可以调用基类中的方法而不用考虑返回的是哪个子类的实例。
2.2.2工厂模式的意图:
工厂模式又称虚构造机(Virtual Constructor)。它定义一个用于创建对象的接口,让子类决定实例化那一个类。工程模式使一个类的实例化延迟到其子类。
2.2.3工厂模式的结构:(结构图)
工厂模式的结构包括Factory、ConcreteFactory、Product和ConcreteProduct四部分,其中:
Factory——“抽象的工厂”角色,声明工厂的方法,该方法返回一个Product类型的对象。Factory也可以定义一个工厂方法的默认实现,它返回一个默认的ConcreteProduct对象。可以调用工厂方法以创建一个Product对象。
ConcreteFactory——具体的工厂角色,创建具体产品的子工厂,重写工厂方法以返回一个ConcreteProduct实例。
Product——产品角色,定义工厂方法所创建的对象的接口。
ConcreteProduct——具体产品角色,实现Product接口。
在工厂模式中,产品的创建都是由ConcreteFactory来完成的,通常每个ConcreteFactory负责一种具体产品的创建,各个子工厂之间相互独立、职责明确、互不影响。