软件工程课程设计文档格式.docx
《软件工程课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
因特网发展的速度已经超出了人类的想象,人们利用因特网的方式也越来越丰富多彩,网上购物,视频点播,网页浏览。
。
因特网的交互方式也从传统的CLIENT/SERVER逐渐演变成为BROWSER/SERVER模式,BROWSER/SERVER业已成为互连网上最主要的交互模式,针对此模式的商业开发工具以及现成的组件层出不穷。
各大软件公司都开发了独具特色的针对此模式的语言,开发环境,并有各种中间件作为强大的支持,使得此类开发相当简单,可以说是想什么就可以直接作出什么。
1.1目标
1.模拟阿里巴巴旗下购物网站淘宝网的交互模式
2.为销售者提供商品发布平台;
3.消费者能够方便地浏览商品;
4.方便快速的网上支付;
5.对消费者的用户名、密码进行管理。
2用户需求分析
这个网站以上面的业务需求为基础,进一步提出网站需要完成的以下任务:
网站需要让供应商、客户以及浏览者能看到商城的信息及动态,另一个重要的内容就是能够显示出该商城现有的各类型商品及其详细信息;
由于消费者的需求在增长和变化,商城在面对面销售的基础上也要随之发展出相应的服务,如在线订购等技术。
另外,企业营销商除了能与普通客户一样浏览网站之外,还需要对网站进行管理。
企业需要定期更新现有商品的详细信息、商城动态和联系方式,必要时还要对企业的介绍做更改。
对于消费者通过网站提交的各种订单能够进行处理以方便销售。
2.1功能需求分析
根据上面的需求分析,需要设计出网站的前台与后台。
用户在前台所浏览的内容,网站的后台需要能相应的做出更新或修改。
根据以上的想法,设计出网站的功能:
前台用户相关功能主要包括:
客户
1)注册/登陆/忘记密码/管理个人信息
2)查询货物
3)购物车管理
4)提交订单
5)信用卡支付
6)查询历史购物记录
后台管理相关功能主要包括:
货物商店
1)接受/处理订单消息
2)手工接受/拒绝订单
3)用E-mail来通知客户
4)发订单给供应商
5)销售统计供应商
6)接受订单
7)派送货物给用户
8)提供一个基于web的库存管理
9)维护库存数据库
将以上这些功能制作成网页以后,在其中分别互相建立连接,基本完成商城及用户对网站的要求。
3业务流程分析
将上面的需求分析进行归纳。
得出网站的两个业务主角,即用户与管理员。
然后制定他们的相关活动。
对应网站的功能可以确定,用户活动对应网站前台业务流程;
管理员活动对应网站的后台业务流程。
在对业务流程分析中,尽量把业务主角的活动考虑全面,使系统的功能尽量完整。
3.1前台业务流程分析
图3.1前台业务流程图
3.2后台业务流程分析
在网站设计中,管理员完成对网站的维护与管理的工作。
使用数据库中权限的功能对管理员设置权限,管理员可以对商品及商品分类的信息进行新增,修改及删除,也可以对订单信息进行查看、撤销、发货、完成等处理,同时管理员也可以对用户信息进行管理。
流程图如图3.2所示。
管理员
查询
取出订单
维护网站
销售统计
受理订单
网站信息
拒单
订单
库存
提交
存档
3.3数据流程分析
在分析了系统的业务流程之后,就要分析系统的数据流,为后面设计网站的数据库做好基础。
这里主要利用数据流程图来说明数据流程。
数据流程图是一个图示工具,容易理解,容易在开发和用户方之间进行交流,以及在开发组织内部交流。
因此数据流程图作为一种模型工具已经广泛使用在软件工程的实践中[5]。
根据前台业务流程,可以将用户的活动分为两类。
用户浏览所使用到的数据归纳为站内信息,如商品信息等。
而用户提交的订单则作为网站的订单数据。
相应的,根据后台业务流程,管理员对网站内容的添加、更新和删除等所操作的数据定义为商城信息。
网站数据流的总体图如图所示。
进一步分析网站的数据流程,得到网站数据流程的零级
4系统总体设计
根据业务流程,需要将网站划分为前台、后台和数据库。
前台中,客户在登录网站主页后即可链接查看到商品等信息,还可以做订购商品等活动。
为了方便客户搜索感兴趣的商品信息,将商品搜索嵌入到主页面中。
数据库将要作为网站后台重要的组成部分,管理员的主要操作几乎全部围绕数据库,最后将更新的数据要显示给前台。
前台是一个比较大的功能群,它所包含的信息不仅数量多,而且种类不同。
将它设计成比较优化的结构形式能组织好网站的信息内容并将其归类,方便用户获得所需要的信息。
其中每一部分都以尽量少的内容显示,以免浏览者看的眼花缭乱而失去耐心。
除了这些作用外,设计好前台的结构形式,也是为后面程序的编写做出了框架。
在为系统划分功能模块,并以模块为单位来实现设计时也是以这个结构为根基的。
系统的后台要对整个网站的信息和数据进行维护。
网站前台所显示的信息在后台都应该有对应的维护。
这样,除了设计后台的各个管理界面外,为了方便管理员的工作,可以将各个管理的界面结合到一个页面中。
因此,各个管理的界面会作为主管理界面的分支。
在设计好网站前台与后台的结构以后,就将数据库加入到结构中。
后台将更新的数据写入到数据库中,前台再将数据库中的信息取出来并显示。
4.1功能模块设计
层次模块结构是将系统划分为若干子系统,子系统下再划分为若干的模块。
而模块是指具备有输入输出、逻辑功能、运行程序和内部数据四种属性的一组程序。
在结构化系统设计中,模块一般都是按功能划分的,通常称为功能模块。
合理的功能模块的划分能够极大限度地减少重复劳动、提高开发工作的效率并增大系统的可维护性。
以前面的系统分析为基础,将系统分为两大模块,即前台模块和后台模块。
网络购物中心的功能结构如图所示
4.2E-R图
E-R图是一种概念模型。
概念模型实际上是现实世界到机器世界的一个中间层次。
概念模型用于信息世界的建模,是显示世界到信息世界的第一层抽象,使数据库设计人员进行数据库设计的有利工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面应该具有较强的语义表达能力,能够方便、直接的表达应该用众的各种语义知识,另一方面他还应该简单、清晰并且易于用户理解[7]。
以下是各个数据表的实体图。
商品信息表tb_Ware的实体图
(2)用户信息表tb_User的实体图
(3)订单生成表tb_Sub的实体图
(4)订单商品表tb_Shop的实体图
(5)管理员信息表tb_Admin的实体图
4.3基本表设计
(1)表的设计是这次设计的一个核心内容。
根据前面对网站前台与后台功能模块的分析和对数据库中实体关系的设计,可以看到网站中所用到的数据信息基本包括:
商品信息、用户信息、留言信息、订单信息、超级链接信息、管理员信息、公告信息等。
下面是为数据库设计的表
(2)商品信息表tb_Ware
字段名称
数据类型
长度
是否允许空
是否为主键
字段描述
Wareid
Int
4
否
是
货物编号
Warename
Varchar
50
货物名称
Wareprice
Bigint
8
货物价格
Waretype
20
货物类型
Wareintro
Text
16
货物介绍
Wareimage
图片路径
Wareif
是否推荐
Dattime
Datetime
发布时间
(1)用户信息表tb_User
Userid
用户ID
Username
用户名
Rname
40
真实姓名
Userpass
用户密码
Email
Address
80
用户地址
Photo
30
联系电话
Question
密码问题
Result
答案
注册时间
(1)订单生成表tb_Sub
Sub
订单编号
Spdate
订购日期
地址
Post
邮编
Payment
Char
12
付款方式
联系方式
Carry
运送方式
Spif
订单核对
Other
其它
订单商品表tb_Shop
Subid
订单id
Price
Wsum
货物数量
Wcount
统计
管理员信息表tb_Admin
Id
管理员ID
Admin
管理员名
Adminpass
管理员密码
5系统实现
5.1前台功能模块的实现
整个系统分为了前台功能模块和后台功能模块。
下面详细讨论主要的几个功能模块的程序实现。
在每个模块的介绍中,将具体说明一些涉及要点。
前台功能模块分为用户管理模块、订单查询模块、购物车模块、修改个人资料模块、留言板模块5个部分。
前台首页主要有以下几个部分:
(1)网站导航:
主要用户显示网站的旗帜广告、各功能模块导航;
(2)用户登录:
用户在此注册、登录或找回密码;
(3)商品分类搜索:
用户按商品类别进行搜索显示;
(4)销售排行榜:
按照商品的销售数量显示销售排行信息;
(5)商品展示区:
按后台添加商品的时间顺序展示商品;
(6)友情链接:
显示友情链接信息;
(7)后台登录入口:
管理员可以通过该入口登录后台
5.2用户管理模块
用户管理模块主要实现用户的注册、登录、找回密码等功能。
用户注册
当用户第一次登录时首先要在网站上注册,成为会员用户才可以在网站上购物,注册页面必须填写一些用户的基本信息,如用户名、密码、联系电话等信息。
要注意的是,在用户注册页面user/index.htm中用户自定义JavaScript检验用户注册信息不允许为空。
用户注册页面user/index.htm如图所示
为了便于网站对用户的管理,在index.htm用户注册页面接收到的注册信息要经过严格的过滤,保证注册用户名的唯一性,在提交表单后需要对数据表中的数据进行查询,如果没有找到,则在插入数据表时提示注册成功,否则提示此用户已被占用请重新注册。
2、用户登录
用户登录窗口设置在首页上,主要用来接收用户录入的用户名及密码。
单击“注册”按钮时,会提交到user/index.htm页面执行;
单击“登录”按钮时,系统将对输入的用户名和密码进行验证,如果数据表中用户名和密码存在就显示登陆成功,并返回首页,否则弹出错误提示信息
3、找回密码
密码以外丢失会给用户带来不必要的麻烦,重新注册一个新的用户即浪费了时间,也浪费网站的资源,如果用户只记住自己注册的用户名及电子邮箱名并提供密码提示的问题和答案就可以找回密码。
找回密码页面user/pass.htm如图5.5所示。
用户单击“查找”按钮,系统会将伤表中所示的数据表单提交到user/res.jsp中。
user/res.jsp页用来验证提交过来的四个条件是否完全符合数据库中的查找条件,只有符合才能显示密码结果,否则弹出“你输入信息有误”的提示对话框。
5.3用户资料修改模块
个人信息修改完毕后,要将修改后的数据信息更新到注册数据表中,单击“修改”按钮,如果提交的数据无误,将弹出“数据更新成功”的消息对话框;
否则将弹出“更新失败”的消息对话框。
5.3购物车模块
购物车模块中,主要包含以下几个功能,即:
添加购物车、查看购物车、生成订单和清空购物车
添加购物车
添加购物车就是把用户选中的商品暂时存放在购物车中,当用户在前台首页中单击商品展示区的“购买”按钮时,系统会将该商品的详细信息展示在查看物品清单页面中。
用户在单击物品清单页面下方的“放入购物车”链接,便可以将该商品放入购物车中。
添加商品的代码流程是从session中读取shop对象,如果为空则说明还没有进行购物或者已经清空了购物车,需要新建购物车对象;
将商品名称与购物车列表中的商品名称对比,如果已经存在,则把商品数量加1。
在这段代码流程中,还使用了集合类型。
集合类型在Java中又称为向量,是一元集合,可以加入重复数据,它的作用和数组相同,可以保存一系列数据,但集合类型也有它独特的优点,就是可以方便地对集合内的数据进行查找、增加、删除和修改等操作。
1.查看购物车
为了方便用户随时查看购物情况,在网站的首页加入了查看购物车的链接,通过它可以将用户所有选中的商品信息放入购物车中显示出来。
在程序中使用了一组文本框记录用户购买的商品数量,用户可以在文本框中输入想要购买的数量然购单击“修改”按钮。
如果欲删除该商品,可以在数量文本框里输入“0”,并需要单击“修改”按钮来更新购物车中商品的数量。
系统每次只会将1个商品放入购物车中,如果用户需要多个同种商品,可以通过修改商品信息右侧相应文本框的值来完成。
操作完成后需要通过单击“修改”按钮来保存操作。
2.生成订单
生成订单时网上购物商城的最终目的,前面所有功能的实现都是为最后生成一个用户满意的订单作基础,在此要生成一个可供用户随时查询的订单号,还要保存用户订单中所购买的商品信息。
当用户确认对购物车不再改变以后,就可以到收银台结帐并生成订单。
结帐的流程为:
从购物车中读取商品名称,商品数量,商品价格信息,生成一个唯一的订单号,同时也把用户注册的基本信息读取出来,形成一个完整的订单写入数据库。
订单生成后,用户单击“提交”按钮,便可以将录入的订单信息保存到数据库中。
3.清空购物车
清空购物车是指当用户订单生成后,倘若还想继续购物一定要清空购物车再进行选购商品,这样防止重复购物,其实清空购物车实现起来非常简单,只需要将session中存储的shop对象清空即可。
购物车模块流程图如图5.9所示。
5.4订单查询模块
5.5后台功能模块的实现
5.5.1管理员登录模块
5.5.2添加商品模块
单击导航区中的“添加商品”超链接,系统将打开添加商品页面,该页面主要用于将商品信息添加到数据库中,以提供前台首页商品展示所需要的数据依据。
用户单击“添加”按钮后添加商品如图
为了减少人为错误,在提交商品信息时,需要对数据的合法性进行验证,输入的商品价格不能使字符型,而输入的图片只支持Gif格式等,这些任务由脚本语言JavaScript的函数check()来完成。
代码如下。
functioncheck(){
……
if(form1.image.value=="
"
){
alert("
请输入展示图片的路径"
);
form1.image.focus();
returnfalse;
}
if(isNaN(form1.wareprice.value)){
商品价格输入不正确"
form1.wareprice.focus();
为了确保商品在数据表中的唯一性,在用户提交表单时,需要先根据用户输入的商品名称对数据表进行查询,确保此商品在数据表中不存在后,方可执行插入操作。
这一功能由admin/wcheck.jsp来完成。
流程图如图
5.5.3订单信息管理模块
用户在前台购物所产生的订单并不能立即执行,需要系统管理员在后台进行订单信息管理审核以确认它的执行性。
用户单击导航区中的“订单信息管理”超链接进入用户订单处理页面,该页面上会显示近期所有没被处理的订单。
用户订单处理页面显示的是用户基本信息,要想知道订单中所涉及的商品,需要单击对应订单号的超链接打开商品订购详单页面才行。
商品订购详单主要通过提交的订单号从tb_Shop表中查询处对应的商品并显示在页面中,管理员审核后可通过复选框来设置订单是否执行。
程序中利用admin/shop.jsp来完成这些功能。
当选中“是/否”复选框时,系统会根据提交的订单号更新数据表,如果更新成功,则转到spif.jsp也执行
5.5.4查询用户信息模块
查询用户信息模块用来完成对注册用户的浏览及删除功能。
如果用户蓄意性注册或者在很长时间内没有订单产生,管理员就可以将该用户信息删除。
单击导航区中的“查询用户信息”超链接进入用户信息页面,就可以看到用户信息。
在这一部分的设计中,也使用了分页显示功能。
对于一些失信用户只需要单击右侧的“删除”超链接,即可转到admin/deluser.jsp页中做删除处理。
6系统调试与实施
6.1系统测试原理及测试原则
在完成某一功能模块后,都要进行一下系统测试。
检验所完成的这一模块是否能实现预计的功能。
其目的是方便整个系统的实现。
6.2系统测试原理
测试主要依据是被试系统的研制任务书和技术规格书,是对软件雄体功能和性能的综合测试与评估。
测试原理是软件测试活动的理论基础,测试方法是铡试原理的实际应用和获得测试数据的手段。
基于软件的共性,对于软件的测试要遵循一般软件的测试原理和方法。
同时,针对软件的特性,必须找到合适的测试方法。
测试用例的合理性对于软件的测试与评估具有关键作用,而如何使设计的用例、合理并且典型有效并不容易。
所以应该与软件的研制人员以及最终用户一起,有针对性地研究实际操作环境并加以描述,形成合理的测试用例集。
另一方面,软件运行环境的复杂程度对软件评估具有重要作用,所以应产生尽量逼真的运行背景以便于研究。
软件测试的周期如图:
6.3系统测试的方法
软件测试的方法和技术是多种多样的。
对于软件测试技术,可以从不同的角度加以分类:
从是否需要执行被测软件的角度,可分为静态测试和动态测试。
从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。
(1)黑盒测试
黑盒测试也称功能测试或数据驱动测试或基于规范的测试,它是在己知产品所应具有的功能的前提下,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者对程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等。
“黑盒”法着眼于程序外部结构,不考虑内部逻辑结构,只是针对软件的界面和软件需求规格说明中规定的功能进行测试。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
(2)白盒测试
白盒测试也称结构测试或逻辑驱动测试或基于实现的测试,它是知道产品内部工作过程。
可通过测试来检测产品内部动作是否按照规格说明书的规定止常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
白盒测试的主要方法有程序逻辑驱动测试、基本路径测试和数据流测试等。
“白盒”法需要全面了解程序的内部逻辑结构、对所有逻辑路径进行测试。
因此,白盒”法是穷举路径测试。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
6.4本系统测试
这个网站系统要实现的功能有用户注册登陆、浏览商城信息、用户购物并填写订单、管理员对网站信息的各方面操作和维护等。
根据上面介绍的测试原则,使用测试用例文档分别对系统进行测试。
测试部分包括网站对数据库的访问和更新测试;
对网站查询功能的测试;
系统容错功能的测试。
7结论
现在越来越多的中小型企业已经成为未来经济增长的关键动力。
企业的发展需要跟随现代科技的进步。
建设一个具有电子商务功能的网站不仅能打破时空的界限,而且能有效的降低销售成本,提高企业的竞争能力。
因此设计并开发一个具有电子商务功能的门户网站具有非常重要的意义。
通过这次本科毕业设计,使我对网站开发有了更为深刻的理解,积累了一定的网站建设经验。
虽然在去年的生产实习中接触到了网页制作,但是只是比较单一页面的设计,没有综合一个完整的应用项目的各情况。
而在这次毕业设计中,通过实际调查研究与编写程序,使自己理论与实践相结合,熟悉了编程环境,掌握了一些社会经验和编程经验,对自己今后的工作和学习有着良好的促进作用。
在开发过程中遇到了许多不可预知的困难,但最终在老师和同学的帮助下一一解决了。
在解决了各种难题的同时,我也学到了许多技术知识和开发技巧,相信这些知识和技巧将在我的以后工作和学习中发挥作用。
当然