一.引言 (1)
二.系统开发的目标 (1)
三.可行性研究 (2)
四.系统需求分析 (2)
五.总体设计 (3)
六.概要设计 (4)
七.详细设计 (7)
八.软件测试 (8)
九.页面显示效果及代码分析 (13)
十.特别说明......................................................... ..20十一.参考资料.. (21)
一、引言
1.编写目的
本需求分析文档的目的是说明网上书店管理系统最终需要满足的条件和限制,为进一步设计和实现提供依据。本文档将用户的需求用文字的形式固定下来,是与用户沟通的成果,也是用户验收项目时的参考。
2. 项目背景
系统名称:《网上书店管理系统》
需求背景分析:随着互联网的迅速发展以及我国经济的稳定平衡发展,人们对于知识的追求也越来越高,因而市场场上出现了各类的图书,但由于各种各样的原因使得消费者在选购图书的时候不能找到自己合意的书籍,同时由于网络经济的迅速发展激生出了网上卖书的现象,由于网上书店里面的图书相当丰富,且价格较市场上的书店里的便宜,以致于越来越多的人上网购书,同时也使得越来越多的人在网上开设自己的书店,本系统即是在以上各种条件成熟的条件下,建立的一个可以让消费者登录本系统购买他们的图书的一个网上书店管理系统。
系统用途:本系统利用网络平台,使得消费者和销售者足不出户即可实现买书和卖书的行为,同时大大减少的人员的参与。
系统使用范围:网上想买书者。
二、系统开发的目标
管理员可以维护客户注册信息、维护图书信息、处订定单信息、维护系统公告、网上售书。查看图书调查报告、游客可以在线注册为会员、投票、购书。本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。
三、可行性研究
可行性研究是系统分析阶段的第二项活动。此活动的主要目标是:
进一步明确系统的目标、规模与功能,对系统开发背景、必要和意义进行调查分析并根据需要和可能提出开发系统的初步方案与计划。可行性研究是对系统进行全面、概要的分析。通过调查分析,新系统设计方案有以下三个可行性:
1.技术可行性:本系统采用Windows 作为操作平台。数据库系统选用SQL server2005,该数据库管理系统提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作,降低出错率,提高数据的可用性。本系统的开发平台选用visual studio 2005,这是目前web数据库应用软件的主流开发平台。
2.经济可行性:采用新的网上书店可取代原系统的工作,减少人工开支,节省资金,并且可大大提高信息量的取得,缩短信息处理周期提高员工信息的利用率,使销售质量更上一个台阶。
3.3.营运可行性(1).本系统操作简单,易于理解,只需通过简单培训,上手较快,营运环境要求低。(2).面对于系统设计还应该以“标准性、安全性、高效性、保密性、可维护性”为标准,在着眼于当前实用的基础上,为将来系统的扩展,升级留有余地。软件的开发应能在较长时间内满足学校的发展需要。
四、系统需求分析
1. 总体需求
?建立对图书提供全面管理信息的系统
?对所有的图书,客户提供全面管理
?对图书详细信息提供管理
2. 功能需求
?在Internet,客户可通过IE或其他浏览器浏览书目信息;
?在互联网,可提交订单;
?具有购物车功能;
?客户能通过书名来检索书籍;
?客户可在网上进行注册,成为会员;
?客户能查看当前订单和以往订单;
?书店员工能查找客户联系信息;
?书店员工在发货后能改写订单中的发货日期;
3. 性能需求
?网上书店系统与相关单位的链接;
?系统可以对图书的库存进行统计;
?易于维护和扩充;
?系统界面设计友好,操作方便、灵活;
?具有高可靠性和冗错能力,不允许系统在工作时间停机,不允许系统丢失图书信息,不允许在运行期间出现故障和错误;
?具有安全检查机制,非法用户不能使用系统,不能偷看系统信息,不能修改图书,防止随意删改,同时提供信息备份的服务;
?具有保密机制,各级使用者只能看到允许查看的系统信息;
五、总体设计
项目规划
网上书店管理系统是一个典型的web 数据库开发应用程序,由前台图书展示及销售、后台管理两部分组成。
1.1、前台商品展示及销售:该部分主要包括新书上架、购物车、会员管理、图书公告及订单查询、图书查询等。
1.2、后台管理:该部分主要对商城内的一些基础数据进行有效管理,包括图书管理、会员管理、订单管理、公告管理等。
2运行环境规定
六、概要设计
1功能分析层次图:
2.数据库结构设计
网上书店管理系统从管理员,用户(会员)出发,通过注册会员实现对图书的购买及款项的交付。其中通过对图书的分类查询来获取自己需要的图书,因而确定图书的分类表,通过对图书的分类,可以实现对实际图书的管理,进而确定有了图书的详细介绍表即图书表;但在消费者买书的时候需要将自己的订单整理好放到订单表中,故而有了用户的订单表,这是在确定订单的时候用的表,而之前则有一个购物车表,使得用户在网站浏览的时候能将自己喜欢的图书暂时保存
在自己的购物车表中,将确定是否购买时,可以将自己不购买的图书
随时移出购物车。还有就是在消费者买完图书后,卖家为了获得消费者们的评价,以及是否还需要在进这种书时,专门有一个用户评价的表格来表明消费者们对哪类书感兴趣,进而随时改变销售策略。
以下即为表的详细设计:
书籍的类别表:Category
书籍的详细信息列表:
消费者的注册信息列表:
消费者的订单列表:
消费者的订单书籍详细信息列表:消费者的购物车信息列表:
消费者对于购买的书籍的评价列表:
它们的数据之间的关系如图所示:
3.网站用例关系示意图:
通过对以上设计图的步骤分析,可以使购买者快速方便的学会在网上购书的流程。
4 设计测试方案:
为保证系统的数据安全性,进入本系统购书时需要使用自己的账号,密码,这样在以后的购书过程中就无需再输入账号或密码了,节省了很多时间。
本系统功能模块主要有三个:游客注册成为会员,将购买的书籍放进自己的购物车,结账等待收书。
七详细设计
1系统界面设计
1.1 进入网站显示的界面
当用户在URL中输入本网站管理系统的地址后,进入到本网站首页,若不想买书只是看看则是作为游客身份,这时可以看到网站推荐的最新书籍的信息,以及其他图书的信息。然而只能浏览,不能购买。若想买书则需要注册成为会员身份。
1.2注册登陆界面
注册登陆界面的主要功能就是让购书者将自己的信息写入数据库存储起来,当用户确认买书时,售书者根据用户的注册信息将
用户所购买的书籍发送到用户注册的地址。
1.3 书籍列表界面及详细详细书籍介绍界面
此界面通过对书籍的详细介绍使得用户对自己购买的书籍有一详细的了解。同时可以扩大自己对其他图书的了解,进一步购买做准备。
1.4 购物车页面:
此模块的主要功能是充当一个仓库,不过此仓库装的是想要购买的书籍,用户在网站浏览时可以随时将自己喜欢的图书放进进购物车,最后付账时可以将自己不买的图书移除购物车。
1.5账户页面
此页面主要是记录了会员购买的图书的列表,以及自己的总花费。可以让会员实时的知道自己的账单。
1.6 查找页面
此模块的主要功能是方便用户快速的找到自己需要的书籍,不必未来会寻找而烦心。
1.7 评论页面
此模块的主要功能为用户对自己购买的书籍作出评价,一方面让网站管理人员知道自己卖的书籍的好坏,一方面扩大自己网站的知名度。
2测试用例设计
每个系统都要有一定数量的测试用例来测试系统是否符合用户的要求,此书店管理系统也不例外。网上书店管理系统采用管理员admin极普通会员作为测试用例。
八软件测试
1测试目的:测试软件在设计及运行过程中出现的问题,以及得到对于问题改进的建议。
2 测试概要
2.1 测试采用的标准及技术表一:开始/中断/完成测试
表二:测试技术
表三:测试类型
2.1.1单元测试
利用visual studio 2005中自带的单元测试功能进行单元测试,测试各个类中的函数。按要求输入,测试与预期结果是否吻合,如果不吻合,单元测试结果将显示失败或其他的错误信息。
具体如下:
1测试ReviewDB.cs类下的AddReview(int productID, string customerName, string customerEmail, int rating, string comments) 函数声明如下:public void AddReview(int productID, string customerName, string customerEmail, int rating, string comments) 函数预期实现的功能:将用户评论的内容添加到用户书籍信息当中. 输入:用户评论
期望输出:评论内容
测试结果:通过
2测试ShoppingCartID.cs类下的函数GetShoppingCartId(),ShoppingCartID.cs在App_code目录下。
函数声明如下: public String GetShoppingCartId()
函数取其实现的功能:以用户ID作为购物车ID,实现对购物车的管理
输入:ID=1
期望输出:用户的购物车内容
测试结果:通过。
2.1.2集成测试
本系统的集成测试重点是页面间的跳转是否正确以及页面间的
参数传递是否正确。对于页面间跳转的测试,主要测试点击本系统中的各个页面的导航链接提示是否跳转到相应的页面,对于参数传递的测试,主要测试页面间传递参数所产生的结果是否正确。
1页面跳转测试
表四:页面跳转测试结果
2参数传递测试
参数传递主要测试的是页面间跳转的新页面依赖于所传递的参数的页面跳转。
表五:参数传递测试结果
2.1.3系统测试
系统测试是按照贴近实际的场景进行部署后对系统进行的一系列严格有效地测试。它主要包括两个方面,一是功能测试,二是性能测试。
1功能测试
表六:功能测试设计表
2对性能的测试
表七性能测试
九.页面显示效果及代码分析
1游客进入系统使得首页
如图所示:
public partial class BookList : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{ if (string.IsNullOrEmpty(BookTypeID))
return;
if (!IsPostBack)
BookList1.PageIndex = 1;
BindBookList(BookTypeID,BookOrderByFields.DateAdded);
BookList1.LblSearchCondition.Text = "搜索类别:"+ BookTypeName; } }
private string BookTypeID
get
{ if(BookTypeTreeNavigationExpanded1._SelectedNode==null) if (Request.QueryString["BookTypeID"] == null)
return null;
return Request.QueryString["BookTypeID"].ToString(); } else
{ return BookTypeTreeNavigationExpanded1._SelectedNode.Value } } }
private string BookTypeName
{ get { if (Request.QueryString["BookTypeName"] == null)
return null;
return Uri.UnescapeDataString( Request.QueryString["BookTypeName "].ToString());} }
2会员的登录注册信息
如图所示:
主要代码如下:
protected void RegisterClick(object sender, EventArgs e)
{ if (!Page.IsValid)
return; BookShopOnline.Model.User user = new User();
user.RoleID =(int) Role.RegisterUser; //必填项
user.UserName = RegisterUser1.TxtUserName.Text;
user.UserPwd = RegisterUser1.TxtUserPwd.Text;
user.Email = RegisterUser1.TxtEmail.Text; //选填项
user.RealName = RegisterUser1.TxtRealName.Text;
user.PostalCode = RegisterUser1.TxtPostalCode.Text;
user.Phone = RegisterUser1.TxtPhone.Text;
user.Address = RegisterUser1.TxtAddress.Text;
int result = new UserBll().InsertUser(user);
if (result == -2) { RegisterUser1.LblMsg.Text = "注册失败!该用户名已存在。"; return; }
if(result == -3) { RegisterUser1.LblMsg.Text = "注册失败!该Email 已存在。"; return; if (result==1)
{ Response.Redirect("RegisterResult.aspx?BackUrl=" + hyperFromUrl.NavigateUrl); } }
else { RegisterUser1.LblMsg.Text = "注册失败!检查输入并重试。"; } }
3图书分类及列表信息:如图所示:
主要代码如下:
protected void Page_Load(object sender, EventArgs e)
{ if (string.IsNullOrEmpty(BookTypeID)) return;
if (!IsPostBack) { BookList1.PageIndex = 1;
BindBookList(BookTypeID,BookOrderByFields.DateAdded);
BookList1.LblSearchCondition.Text = "搜索类别:" + BookTypeName; } } private string BookTypeID
{ get{if(BookTypeTreeNavigationExpanded1._SelectedNode==null) { if(Request.QueryString["BookTypeID"] == null) return null; return Request.QueryString["BookTypeID"].ToString();} else
{ return BookTypeTreeNavigationExpanded1._SelectedNode.Value;
}
}
} private string BookTypeName
{ get(if (Request.QueryString["BookTypeName"] == null) return null;
return
Uri.UnescapeDataString( Request.QueryString["BookTypeName"].ToS tring());
}
以下为图示的详细信息页面:
4查找图书页面如下:
主要代码为:
protected void Page_Load(object sender, EventArgs e) { BookDB bookDB = new BookDB();
MyList.DataSource =