1、网上商品订购系统目 录摘要. 2前言. 3第一章 概述. 4第二章 系统软件的需求分析.52.1 软件开发的过程. 52.2 网上商品订购系统的分析5第三章 系统设计与实现. 83.1 概要设计. 83.2 详细设计. 93.3 功能模块的程序实现. 12第四章 软件测试. 294.1 软件测试. 294.2 测试遇到的问题. 29结论31谢辞32参考文献33 摘 要Internet改变了许多人的生活习惯、交流方式、思想观念,同时也改变了企业的经营行为,其重要方式便是电子商务。目前最为流行的电子商务的形式是网上购物。本论文着力于网上商品订购系统的设计。网上商品订购系统具有交互功能,通过在网络上
2、建立一个虚拟的商场,使购物过程变得轻松、快捷、方便。首先,按软件开发的过程,确定系统目标和规模。从技术、社会因素等方面分析此系统的可行性。其次,明确用户要求、介绍网上商品订购系统的概要设计、详细设计以及数据库逻辑结构设计。通过对各模块的分析,了解模块的程序实现。最后,通过软件测试,发现问题,完善系统,保持系统的良好运作。 前言互联网技术的不断发展和普及,电子商务成为许多企业单位的发展方向。因此,构建互联网站、开发网络应用程序已经成为当前的热门技术之一。随着Internet的普及推广,Web技术得到了迅猛的发展,通过网络的连结,可以让人们随时随地地看到各种商品,有了接触的管道,自然就容易刺激购买
3、行为了。对公司来说,将会大大减少其他媒体的广告费用,增加净利。所以网上购物是目前研究十分热门的问题。 本论文通过对网上购物系统的开发,介绍了基于ASP,使用HTML(超文本标记语言)、JavaScript等脚本语言编写程序,也使用ASP的Request对象、Response对象、Server对象、Session对象和Application对象等内置对象构建订购系统。系统采用ASP和Access的组合,通过前台管理和后台管理两大部分,前台系统为注册用户提供查看商品、购买的页面,而后台系统则为管理用户提供对系统进行管理和维护的页面,从而构成一个完成的网页数据库系统。 论文从系统概述、系统软件的需求
4、分析、系统设计与实现以及系统测试四部分,阐述了软件系统从计划期到开发期的全过程。通过循序渐进的步骤,描述了网上购物系统构建的全过程及开发方法。 第一章 概 述1 系统开发的目标网上商品订购系统是网上商品的信息系统,主要的目标是使用户能在网上方便、快捷的进行商品的购买。用户通过网站能迅速了解商品信息,包括商品的畅销程度、新上柜的商品以及商品的生产厂家、价格等情况。为用户提供良好的网上服务。同时系统也要有利于管理维护,易于商品信息的添加、整理和归集;有利于客户信息的及时收集与处理;掌握有效的数据,合理进行采购。2系统实现的功能为实现以上目标网上商品订购系统的主要功能就是将各类商品的信息录入到数据库
5、中,记录商品的基本信息,允许对信息的查询、分类,根据商品的记入时间排序,统计商品的订购排名。查看客户资料、接收客户订购信息等,便于前台用户数据查询、录入与后台的信息管理。3系统开发的进程、时间安排确定了系统开发目标、实现功能后,就可以进行具体的系统开发阶段。第12周为开发的第一阶段,进行系统调研,查阅参考文献,确定相应的系统结构,确立功能模块的划分,对系统流程进行分析,为今后的详细设计打好基础。第38周为开发的第二阶段,完成系统的细化工作,对系统数据库的各项数据进行详细划分,确定数据库中的各表的表结构,组建数据库;建立各功能模块,细化完善各模块的功能,建立一个完整的系统。第912周为开发的第三
6、阶段,此阶段对以上所完成的系统进行错误检查,发现和排除错误,对系统进行最后的动态检查,完善系统的各模块,并对系统进行美化。第1314周为第四阶段,输入数据信息,对系统继续排错和修改扩充,最后交付验收。第二章 系统软件的需求分析2.1 软件开发的过程软件开发要经过可行性研究与计划、需求分析、设计、编程、测试、运行等阶段,每个阶段都有明确的任务,并需产生一定规格的文档资料。一个软件从被提出开始研制至软件最终被废弃不再使用为止的全过程,称为软件生命期。下图2-1为生命期模型:需求分析可行性研究与计划设 计测 试编 程运行与维护图2-1 下面将就以上几个阶段,阐述网上商品订购系统的的软件开发过程。本章
7、将首先就需求分析进行介绍。 在可行性研究与计划阶段中主要做两件事:问题定义和可行性研究。首先需要进一步分析和澄清问题定义,经过初步调查后,确定系统的规模和目标。在进行可行性研究时,应从技术性、经济性和操作性几个方面进行论证。 在软件工程中,所谓用户需求,是指软件系统必须满足的所有性质和限制。用户要求通常包括功能要求、性能要求、可靠性要求、安全保密要求以及可使用的资源等方面的限制,其中功能要求是做基本的,它又包括数据要求和加工要求两方面。下面说一下网上商品订购系统的分析。2.2 网上商品订购系统的分析针对我所选的课题,我阅读了相关的专业文献,并浏览了网上的相关网站。由于Microsoft对于网际
8、网络相关技术的大力发展,现在要制作网页与数据库结合的站点,已经不象以前那么困难了。同时,此类应用在Internet已十分广泛。需求分析的目的在于分析此类业务活动,明确在用户的业务环境中,系统应该“做什么”。如网站有许多商品分类,在每中分类中有许多种商品。有兴趣的人可以到网站来查看商品信息。如果是普通用户只能进行商品信息的查询,如要订购商品则必须成为注册会员。注册会员订购了商品首先要放置在用户的购物车中,直到用户再次确认后才送至收银台,最后提交订购单。此后网上商店管理人员确认订单,由仓库管理人员根据订单出货,最后由财务人员确认已结帐的订单。整个订单的处理情况,注册会员均可以实时跟踪查看。因此,系
9、统功能描述如下:网上商品订购系统分为前台管理和后台管理。前台管理包括浏览商品、商品查询、订购商品、购物车、用户信息维护等功能。后台管理包括公告管理、商品管理、订单管理、投诉管理和用户管理等模块。后台管理具体描述如下。1 公告管理 添加公告,包括公告标题和公告内容等; 修改公告; 删除公告2 商品管理 添加商品类别 修改商品类别 删除商品类别 添加商品信息,包括商品类别、名称、制造商等信息 修改商品信息 删除商品信息 查看商品信息3 订单管理 处理订单 办理发货 办理结帐 删除订单4 投诉管理 录入投诉的解决方法 删除已解决的投诉 查看投诉用户5 顾客用户管理 查看顾客用户信息 删除顾客用户信息
10、6 系统用户管理 添加系统用户,包括用户名、密码、是否是VIP会员等信息 修改系统用户信息 删除系统用户信息 对系统进行流程分析,在本系统中分为以下两个流程。 后台订单处理流程如图2-2所示。用户下订单按订单发货按订单结帐删除订单图2-2 前台客户购物流程如图2-3所示 浏 览 商 品 选 择 商 品 订 购 商 品未登录注册用户已登录注册用户 未注册用户 登 录 注 册 去购物车 去收银台 提交订购单 多用户系统的工作流程都是从用户登录模块开始的,之后对用户的身份进行认证,确认用户是否有效的注册用户以决定用户的操作权限,从而决定用户的工作界面。第三章 系统设计与实现3.1 概要设计 分析阶段
11、的工作结果是明确地描述了用户要求软件系统“做什么”。即建立一个符合用户要求的软件系统。为使开发工作能顺利进行,必须先为编程制定一个周密的计划,这项工作就称为设计,设计实际上是为用户要求到程序间的过渡架起一座桥梁。 设计要决定系统的结构,包括数据结构和程序结构。首先确立程序结构。“由外向里”是较合理的一种思考过程,所以通常先确定模块的外部特性,再确定其内部特性。因而软件的设计阶段要分成概要设计和详细设计两步进行。概要设计的任务是决定系统中各个模块的外部特性,即其输入输出和功能;详细设计的任务是决定每个模块的内部特性,即其内部的算法过程及使用的数据。现先讨论概要设计。概要设计又称总体设计,它的基本
12、任务是:将系统划分成模块;决定每个模块的功能;决定模块的调用关系;决定模块的界面,即模块间传递的数据。所以概要设计的主要工作就是完成模块分解,确定系统的模块层次结构。从功能描述的内容可以看到,本实例可以实现6个完整的功能。根据这些功能,设计出系统的功能模块,如图3-1所示。用户注册浏览商品查询商品前台管理网上商品订购系统购买商品浏览公告系统管理商品管理订单管理后台管理公告管理投诉管理图3-1在本系统中,用户管理模块的共能比较简单。在系统初始化时,要设定一个默认的系统管理用户。此用户可以创建其他管理信息;普通用户可以修改自己注册信息和密码。用户管理功能模块的关系如图3-2所示。系统用户信息管理修
13、改自身的密码管理用户创建、修改和删除管理员信息删除用户信息普通会员修改自身密码创建、修改自身信息图3-23.2 详细设计 概要设计将软件系统分解成许多个模块,并决定每个模块的外部特征,即功能和界面;详细设计确定每个模块的内部特征,即每个模块内部的执行过程。通过这样的设计过程,就成为编程制订了一个周密的计划,下面就可直接过渡到编程阶段了。 详细设计时,每个模块是单独考虑的。详细设计要确定模块内部的详细执行过程,包括:局部数据组织、控制流、每一步的具体加工要求及种种实现细节等。1 模块细化设计在后台的系统管理模块中管理员登录后可以删除管理员列表中用户,为确保管理员不为空,定义当前登录的管理员无法删
14、除自己。这样确保至少有一个管理员可以登录到管理系统,对后台数据进行相应的管理。在后台的投诉管理(或订单管理)模块中,当投诉已处理(或订单已结帐)后,管理员可以删除相关记录,为使得前台用户仍可查看到相关的记录内容,在后台数据库中此记录只做删除标记,这样在后台管理中管理员将不再看到此记录,而用户仍可查看其内容。2 数据库结构设计系统定义的数据库中包含了7张表:商品类别表Nsort、商品信息表hw、购物车表Basket、客户投诉表Complain、用户表Users和管理员表Admin.、公告信息表Board。下面分别介绍这些表的结构(1)商品类别表Nsort商品类别表Nsort用来保存商品类别的信息
15、结构如表所示。序号字段名称数据类型说明1Nsort_id自动编号2Nsort_name文本产品分类名3sort_id数字大类id (2)商品信息表hw商品信息表hw 用来保存商品的基本信息,结构如表所示。序号字段名称数据结构说明1hw_id自动编号2sort_id数字大类3nsort_id数字小类4hw_name文本货物名称5hw_cash数字会员价格6hw_content备注备注7hw_views数字显示次数8hw_buys数字购买次数9hw_date日期/时间加入日期10hw_pic文本图片11hw_pic2文本图片12chubsh文本出品公司13daili文本VIP会员价14pifa文
16、本公开报价15zhuang文本包装16hw_sn文本录入人员17company文本公司18yeshu文本颜色19data文本生产日期20kaiben文本规格21isbn文本产品编号22tuijian是/否是否推荐23jia是/否是否特价 (3)购物车表basket购物车表basket用来保存用户订购的商品的信息,结构如表所示序号字段名称数据结构说明1basket_id自动编号订单id编号2hw_id文本货物编号3user_name文本下单的用户名4basket_count文本货物数量5basket_date日期/时间下订单的日期6basket_check是/否加入购物车/正式下单7basket
17、admincheck是/否管理员处理订单8hw_name文本货物名9hw_cash文本价格10sub_number文本订单编号11daili文本(4)客户投诉表ts客户投诉表ts用来保存客户对订单的投诉信息,结构如表所示序号字段名称数据结构说明1ts_id自动编号2user_name文本投诉人姓名3sub_number文本投诉订单编号4ts_date日期/时间投诉日期(5)用户信息表member用户信息表member用来保存注册用户的基本信息,结构如表所示序号字段名称数据结构说明1user_id自动编号2user_name文本用户名3user_pass文本密码4user_mail文本邮件5u
18、ser_adds文本地址6user_tel文本电话7user_regtime日期/时间注册时间8user_regip文本注册ip9user_lasttime日期/时间最后登入时间10user_lastip文本最后登入ip11user_buymoney文本消费金额12user_postcode文本身份证13user_namec文本真实姓名14user_type文本用户类型(6)管理员表admin管理员表admin用来保存系统管理员的基本信息,结构如表所示序号字段名称数据结构说明1admin_id自动编号2admin_name文本用户名3admin_pass文本密码4quan数字(7)公告信息表p
19、ub公告信息表pub用来保存网站公告信息,结构如表所示。序号字段名称数据结构说明1ID自动编号2am_uid文本公告编号3title文本公告题目4msg文本公告内容5date日期/时间日期6time日期/时间时间 3.3功能模块的程序实现1 目录结构在运行前,在IIS中创建虚拟目录,将路径定位到shop目录所在位置,shop目录下包含下面的子目录: admin 用于存储系统管理员的后台操作脚本,包括商品类别管理、商品信息管理、站内公告管理、订单管理、系统用户管理等功能; images 用于存储网页中的图片文件; user 用于存储注册用户的前台操作脚本,包括用户投诉和注册用户管理等; shop
20、 用于存储与购物信息相关的脚本。其他ASP文件都保存在根目录下。2 通用模块本系统中包含一些通用模块,这些模块以文件的形式保存,可以在其他文件中使用#include语句包含这些模块,使用其中定义的功能。21 ConnDB.asp此模块的功能是实现到数据库的连接,因为在很多网页中都有连接数据库的操作,所以把它保存在文件ConnDB.asp中,这样可以避免重复变成。ConnDB.asp的代码如下:当在其他服务器上新建数据库时,更改Server(服务器名)等参数即可。在文件中引用此文件作为头文件就可以访问数据库,代码如下:2.2 IsAdmin.asp因为系统中有些功能只有Admin用户才有权限使用
21、所以在进入这些网页之前,需要判断用户是否是Admin.IsAdmin.asp的功能是判断当前用户是否上管理用户(即保存在表admin中的用户),如果不是,则跳转到Login.asp,要求用户登录;如果是,则不执行任何操作,直接进入包含它的网页。IsAdmin.asp的代码如下:从Session变量中读取用户信息 %AdminId = Trim(Session(admin_id) Passwd = Trim(Session(admin_pwd) 用户名是否为空 If AdminId Then sql = Select * From Admin Where AdminId= & AdminId
22、 And Passwd= & Passwd & 是否存在此用户名 Set rs = Conn.Execute(sql) If rs.EOF Then Response.Redirect Login.asp End If Else Response.Redirect Login.asp End If%2.3 IsUser.asp注册用户在确认订单、查看购物车、提交投诉等情况下,需要通过身份验证。IsUser.asp可以实现此功能,代码如下: 程序从Session变量中读取注册用户信息,并连接到数据库身份验证。如果是注册用户,则程序不执行任何操作(即通过验证,跳过此文件执行其他文件);否则显示提
23、示信息。3 管理主界面与登录程序设计系统分为前台系统和后台系统两个部分。前台系统为注册用户提供查看商品、购买商品的页面,而后台系统则为管理用户提供对系统进行管理和维护的页面。若数据库中没有任何数据,不便于查看和购买商品,所以先建立后台管理系统上有必要的。3.1 后台管理登录界面后台管理系统只有管理人员才有权限使用,所以在进入管理主界面前,需要登录信息来判断用户是否是管理员。在创建表admin的同时,已将默认的用户admin插入到表中,默认的密码为“admin”。管理员只要以此用户名、密码登录即可。后台管理系统登录界面为Login.asp,界面如图3-3-1所示。 图3-3-1代码如下:%根据录
24、入的用户信息查询数据 AdminId = Trim(Session(admin_id) AdminPwd = Trim(Session(admin_pwd) If AdminId Then sql=Select * From Admin Where AdminId= & AdminId & And Passwd= & AdminPwd & Set rsa = Conn.Execute(sql) 如果用户存在,则转向到AdminIndex.asp If Not rsa.EOF Then Response.Redirect(AdminIndex.asp)% alert(用户名或密码错误!);在开头
25、Include语句包含外部文件。因为Login.asp与ConnDB.asp不在同级目录中,所以需要使用./ConnDB.asp表示ConnDB.asp所在的位置。在adminLogin.asp中,定义表单的代码如下:form name=”myform” action=”putSession.asp” method=”Post当数据提交后,将执行PutSession.asp,把用户信息保存在Session变量中。当登录信息与管理员信息相符时,转到AdminIndex.asp页面,否则提示出错。32 管理主界面系统的管理主界面为AdminIndex.asp,它的功能是显示网络商店的管理链接和公
26、告等信息。AdminIndex.asp的界面如图3-3-2所示。 图3-3-2在Admin.asp中,使用框架将网页分成左右两个部分。分别为Left.asp和Welcome.asp两个网页。网站管理页面只有管理用户才能进入,所以在这些管理页面中都包含了IsAdmin.asp,以进行身份认证。如果管理用户还没有登录,将打开adminLogin.asp页面。4 公告信息管理公告信息管理可以实现以下功能 添加新的公告记录 修改公告记录 删除公告记录。只有管理用户才有权限进入公告信息管理模块。41 公告管理页面公告管理页面为manage.asp,公告的添加、修改和删除都在这里执行,如图3-3-3所示。
27、图3-3-3首先从数据库读取记录%设置SQL语句,查询表pub中的公告信息,读取到rs对象中 Dim rs Set rs = Server.CreateObject(ADODB.RecordSet) sql = Select * From Board Order By PostTime Desc Dim n 用来保存记录数量 rs.Open sql,Conn,1,1 如果rs为空,则显示提示信息 If rs.EOF Then Response.Write 目前还没有公告。 Else%然后,若有记录设置页码,每页显示记录数为15条% 设置每页记录数量为15rs.PageSize = 15设置并读
28、取页码参数pageiPage = CLng(Request(page)If iPage rs.PageCount Then iPage = rs.PageCountEnd If RowCount = rs.PageSize 依次显示公告信息 Do While Not rs.EOF And RowCount 0 n = n + 1% 接着,依次显示记录,在记录后显示修改链接和删除复选框 a href=./BoardView.asp?id= onClick=return BoardWin(this.href) a href=BoardEdit.asp?id= onClick=return Boar
29、dWin(this.href)修改 input type=checkbox name=Board id= style=font-size: 9pt 还要 显示页码链接 1 then Response.Write 分页: For i=1 to rs.PageCount Response.Write Response.Write & i & Next Response.Write End If End If%最后,显示功能按钮,在表格下面显示“添加公告”、“全选”、“清空”和“删除”按钮,代码如下: 5 商品类别管理商品类别
30、管理可以实现以下功能: 添加新的商品类别记录; 修改商品类别记录; 删除商品类别记录。只有管理用户才有权限进入商品类别管理模块,在AdminIndex.asp中,单击“类别管理”超级链接,可以打开类别管理页面GoodsType.asp.5.1 商品类别管理页面打开商品类别管理界面,如图3-3-4所示 图3-3-45.2 显示商品类别信息为了便于用户管理商品类别,addsort.asp以表格的形式显示商品类别名称,并在后面显示修改链接和删除复选框,见如下代码% Dim rs Set rs = Server.CreateObject(ADODB.RecordSet) 读取所有的商品类别数据到记录集
31、rs中 sql = SELECT * FROM GoodsType ORDER BY Id rs.Open sql,conn,1,1 If rs.EOF Then Response.Write 目前还没有记录。 Else Do While Not rs.EOF% a href=GoodsType.asp?Oper=update&id=&name=修改 input type=checkbox name=type id=可以看到,修改商品类别的页面也是addsort.asp。参数Oper的值为update,表示当前操作为修改商品类别;参数id表示要修改的商品类别编号;参数name表示要修改的商品类
32、别名称。商品类别后面的复选框名为type,它的ID值与对应商品类别的编号相同。53 添加商品类别 在执行addsort.asp时,如果参数Oper不等于update,页面的下方将显示添加数据的表单Aform。在文本域txttitle中输入商品类别的名称,然后单击“添加”按钮,将调用addsort.asp,参数Oper等于add,表示插入新记录。 在执行addsort.asp时,可以在url中包含参数,程序将根据参数Oper的值决定进行的操作,与添加数据相关的代码如下:% 处理添加、修改和删除操作 Dim Soperate 读取参数oper,决定当前要进行的操作 Soperate = Reque
33、st.QueryString(oper) Operid = Request.QueryString(id) 删除记录 If Soperate=delete Thensqldelt = Delete From GoodsType Where id In(&Cstr(Operid)&) Conn.Execute(sqldelt) Response.Write 商品类别已经成功删除! 添加记录 ElseIf Soperate=add Then newTitle = Trim(Request(txttitle) if newTitle = then Response.Write 类别不能为空 else
34、 判断数据库中是否存在此类别 sql = SELECT * FROM GoodsType WHERE Type= & newTitle & Set rsInsert = Conn.execute(sql) 如果没有此类别名称,则创建新记录 If Not rsInsert.EOF Then Response.Write 已经存在此商品类别,添加失败! Else sql = Insert into GoodsType(type) values(&newTitle&) Conn.Execute(sql) Response.Write商品类别已经成功添加! End if end if 修改记录 ElseIf Soperate = edit Then newTitle = Trim(Request(txttitle) orgTitle = Trim(Request(sOrgTitle) 如果新类别名称和旧的不同则执行 If newTitleorgTitle and newTitle Then 判断数据库中是否存在此类别 sql = Select * from GoodsType where Type=&newTitle& Set rsInsert = Conn.Execute(sql) If Not rsInsert.EOF Then Re