网上书系统
中文摘要:网上书店系统要实现的功能非常多,最重要的当属图书的销售,也就是管理库房中的图书,以及管理用户的购物车,从而实现结帐等一系列功能。另外,网上书店系统还需要提供给用户查找数据库中图书相关记录的功能。同时,为了保证图书交易的正常进行,必须对用户的身份的身份进行验证。最后给系统还必须具有管理员的功能,允许管理员对整个系统的数据进行操作。
根据系统功能的要求,网上书店系统可以分为三个模块,可以分为用户管理系统、书店销售系统以及在线管理系统。
网上书店系统是目前Internet上广泛使用的在线系统之一,它要实现的功能非常多,最重要的当属图书的销售,也就是管理库房中的图书,以及管理用户的购物车,从而实现结帐的一系列功能。
关键词:ASP语言、Access数据库、 HTML语言、 SQL数据库
Abstrast: The on-line bookstore system must realize function extremely many, is most important when is the books the sale,
also is manages in the storehouse the books, as well as management user's shopping vehicle,
thus realization pay up and so on a series of functions. Moreover, the on-line bookstore system also needs to provide to the user in the search database the books correlation recording function.
At the same time, in order to guarantee the books transaction normally carries on, must carry on the confirmation to user's status status. Finally gives the system also to have to have manager's function,
allows the manager to carry on the operation basis system function to the overall system data the request,
the on-line bookstore system may divide into three modules, may divide into the user management system management system,
the bookstore sells the system as well as the on-line management system management system on-line bookstore system is on present Internet one of widespread use on-line systems,
it must realize function extremely many, is most important when is the books the sale, also is manages in the storehouse the books, as well as management user's shopping vehicle,
thus realization pay up a series of functions.
Key word:ASP language, Access database, HTML language, SQL database
目 录
第一章系统设计....................................
1.1目标设计.......................................
1.2系统功能设计...................................
第二章数据库设计与实现............................
2.1需求分析........................................
2.2逻辑设计........................................
2.3创建数据库和表..................................
第三章系统和数据库的配置...........................
3.1后台服务器配置..................................
3.2后台数据库的配置................................
3.3后台全局配置文件................................
第四章前端网络页面的开发与设计
4.1系统首页........................................
4.2主页面........................................
4.3注册检查页面....................................
4.4用户注册页面....................................
4.5修改用户注册信息页面............................
4.6图书查找页面...................................
4.7购买图书页面....................................
4.8订单检查页面....................................
4.9管理员首页.....................................
4.10浏览图书列表页面...............................
4.11浏览图书详细信息页面...........................
4.12修改图书信息页面...............................
4.13添加图书信息页面...............................
4.14删除图书页面...................................
5.0结束语................................... .....
1 系统设计
(1.1)目标设计
1用户登录及身份验证要求
系统用户注册
验证用户的注册信息
系统用户进入系统时的身份验证
系统用户在不同页面浏览是的身份验证
2网上书店系统要求
允许用户浏览所有图书
允许用户按图书种类进行查找
允许用户购物自己喜欢的图书
允许用户对购物车进行管理
系统实现订单的处理
系统完成整的购物流程
3图书销售系统的管理子系统要求
对管理员的身份进行验证
对数据库中的图书信息进行管理
对数据库中的用户信息进行管理
对数据库中的订单信息进行管理
(1.2)系统功能设计
根据系统功能的要求,网上书店系统可以分为3个模块:用户管理模块、图书销售系统以及在线管理系统。
对于用户管理模块,根据系统功能的分析,他具有的功能应该包括对用户的注册的检查、用户注册信息的添加以及用户注册信息的修改等。
对于图书销售系统,根据系统的功能分析,它应该具有 的功能包括允许用户查找图书信息、浏览图书信息、允许用户购买图书、对购物车进行管理,最后还能处理用户的订单记录、并发送到后台数据库。
对于系统附加的图书管理系统,根据系统的功能分析,它应该具有的功能包括允许管理员浏览整个系统的图书,对图书信息进行修改(包括删除某些图书),以及添加新的图书信息。
2数据库设计与实现
(2.1)需求分析
根据系统功能设计的要求以及功能模块的划分,下面给出网上书店系统的各个组成部分的数据项。
对于系统用户信息数据库,可以列出以下数据项:
用户信息:用户ID(自动编号)、用户昵称、用户姓名、密码、电话号码、E-mail地址、家庭地址、邮编。
对于系统的书籍信息(book)数据库,可以列出以下数据项:
书籍的记录信息:ID(自动编号)、名称、作者、的价格、出版社、数量、图片、所属类别、其他备注信息。
对于图书销售的交易订单记录(orders)数据库,可以列出以下数据项:
图书交易订单信息:交易的ID(自动编号)、顾客的名称、顾客的地址、顾客的邮编、顾客的电话号码、顾客购买的书籍、交易的日期。
2.2逻辑设计
根据系统功能设计的要求以及功能模块的划分,各个系统的具体逻辑实现如下:
对于系统用户信息数据库,可以列出以下数据项:
用户信息:用户ID(自动编号)、用户昵称、用户姓名、密码、电话号码、email地址、家庭地址、邮编。
它不需要外部数据支持。
对于书籍信息系统,可以列出以下数据项:
书籍记录信息:ID(自动编号)、名称、作者、价格、出版社、数量、图片、所属类别、备注信息。
需要外部数据支持:
用户的其他信息:昵称、密码等。
对于在线销售的交易部分内容,可以列出以下数据项:
图书交易订单:交易的ID(自动编号)、顾客的名称、顾客的地址、顾客的邮编、顾客的电话号码、顾客购买的书籍和交易的日期。
所需的外部数据支持:
用户的其他信息:昵称、密码等。
2.3创建数据库和表
(1)系统用户信息数据表(guest表)
(2)系统书籍信息表(book表),
(3)销售系统的订单(orders表),图
根据数据库需求的分析,建立3个数据表。因为订单表里面的bookname一项比较复杂,所以这里特别给出订单表的一些内容,以帮助读者更好地理解这个表,图
3后台系统和数据库的配置
3.1后台服务哭配置
本系统使用了Microsoft r IIS5.0作为系统服务哭。如果使用的是Windows 2000以上版本的操作系统,那么添加IIS 5.0服务哭非常简单,只需要打开“控制面板”里面的“添加/删除程序”选项,然后选择“添加/删除Windows 组件”,最后选中弹出对话框的“Internet信息服务(IIS)选项”,图,按系统提示进行安装即可。
因为网上书店系统的各个系统模块里都使用的ASP的Session(会话)对象和Application(应用程序)对象。这样,就必须创建一个ASP应用程序来处理用户登录次数信息。
一个ASP应用程序必须使用一个公用的目录结构,该目录包含了网站使用的亿有页面。页面的具体位置并不重要,但要让这些页在都存于一个公用的目录结构里。
创建ASP应用程序的具体步骤为:
打开IIS服务器,进入WEB根目录;单击鼠标右键,选择“属性”命令,弹出该属性对话框,在应用程序设置里,创建ASP应用程序;名称与WEB根目录同名。这样就创建了一个ASP应用程序,但真正具有该应用程序执行功能的是Global.asa的文件。
3.2后台数据库的配置
本章系统没有使用ODBC这种形式的数据库,而是直接采用了Access文件的相对路径来实现读取数据库的功能。
但需要强调,微软的Access数据库本身并不是一个数据库服务器,它不能用服务器来运行查询。对于数据庞大的情况,Access本身不是一个好的选择。另外一个要考虑的是数据库的安全性问题。Access比起SQL Server而言,总体的安全性能要差。
但是从应用的角度而言,Access数据库易于使用,而且在创建一配置上,Access数据库都比SQL Server要容易。
3.3后台全局配置文件
后台配置文件实际上是一个可选文件,程序编写者可以在该文件中指定事件脚本,并声明具有会话和应用程序作用域的对象。该文件的内容不是用来给用户显示的,而是用来存储事件信息和由应用程序全局使用的对象。该的名称必须是Global.asa且必须存放在应用程序的根目录中。每个应用程序只能有一个Global.asa文件。
在Global.asa文件中,如果包含的脚本没有用<SCRIPT>标记封装,或定义的对象没有会话或应用程序作用域,则服务器将返回错误。我们可以用任何支持脚本的语言编写Global.asa文件中包含的脚本。如果多个事件便用同一种脚本语言,就可以将它们组织在一组<SCRIPT>标记中。
Global.asa文件声明的过程只能从一个或多个与Application_OnSart,Application_OnEnd,Session_OnSart和Session_OnEnd事件相关的脚本中调用。在基于ASP的应用程序的ASP页中,它们是不可用的。如果要在应用程序之间共享过程,可在单独的文件中声明这些这程,然后便用服务器包容(SSI)语句将该文件包含在调用该过程的ASP程序中。通常,包含文件的扩展名应为.inc.
1.4前端网络页面的开发与设计
1.41系统首页
1页面示例
网上书店系统的首页效果如图
所示。从图中可以明显看出,这个页面是一个框架结构;它的上面是一个bookhead.html的文件,其目的是为了显示两张图片,也可以称之为广告;该页面的下方是一个boodhead.asp页面,实际上包含了首页的主要信息,包括各种登录提示,书籍浏览等。
因为系统首页的主要信息都在主页面中了,所以这里不给出该页面的数据库组件及HTML表单元素等信息,而直接给出这个页面简单的HTML源代码。
2页面的HTML代码
首先给出default.asp页面,即系统首页的HTML代码,从下面可以看出,这个页面非常简单,由一个框架将页面的上边和下边联系起来。
4.2 主页面
图1-11给出的bookright.asp页面,即首页下方页面的效果,从这个页面可以看出,该页面包含了两部分内容,一问好分是用户登录、用户注册、图书查找以及管理员登录组成的左边系统功能提示,另一部分则是右边给出的书籍浏览信息,当然也包括提示用户购买的重要信息。图如下:
2 页面所使用的数据库组件
因为页面左侧的功能提示页面的数据住处都是其他页面给出的,所以实际上系统主页面使用的仅仅是一个书籍信息book表,引用了该表的书名、作者、单价、简介以及含有图片介绍的图片信息等字段,将它们显示给顾客,方便顾客的浏览和购买。
3 页面的HTML表单元素
系统主页面有7个表单元素,如表1-1所示.
名称 |
表单元素类型 |
Value值 |
含义 |
User1 |
Text |
用户填写 |
用户登录名 |
Password |
Password |
用户填写 |
用户密码 |
B1 |
Submit |
登录 |
提交表单 |
User2 |
Text |
用户填写 |
用户登录名 |
Class2 |
Option |
图书分类 |
用户选择图书分类 |
T1 |
Text |
用户填写 |
管理员登录名 |
T2 |
Password |
用户填写 |
管理员密码 |
4.3 注册检查页面如果用户在图1-11的用户表单里面填写了呢称,系统道德就会调用newusercheck.asp页面来检查用户呢称的合法性,如果在系统数据库中查到了重名的记录,那么系统就会给出如图1-12的重名提示。否则,系统会直接进入到图1-13的注册页面。
(图)
如果用户在图1-11中填写的呢称经过检查,证明是合法的,那么系统就会进入到图1-13所示的注册页面了。用户需要在这个页面中填写自己的个人信息,包括姓名、联系电话、联系地址、E-mail地址、邮编、密码以及确认密码等信息。图1-13给出了编者自己填写的一些内容。
(图)
2页面所使用的数据库组件
系统注册检查页面是用了用户信息(guest)表,引用了这个表的用户昵称字段,用这个字段跟表单参数传来的昵称对比,从而判定顾客填写昵称的合法性。
3页面的HTML表单元素
系统注册检查页面有10个表单元素,如表1-2所示。
名称 |
表单元素类型 |
Value值 |
含义 |
Nickname |
Hidden |
用户填写的昵称 |
显示用户昵称 |
Name |
Text |
用户填写 |
用户名 |
Tel |
Text |
用户填写 |
联系电话 |
Addr |
Text |
用户填写 |
联系地址 |
|
Text |
用户填写 |
|
Zip |
Text |
用户填写 |
邮编 |
Password1 |
Password |
用户填写 |
用户密码 |
Password2 |
Password |
用户填写 |
确认密码 |
Login |
Submit |
登录 |
提交表单 |
reset |
reset |
全部重填 |
重设表单 |
4.4用户注册页面
1页面示例
用户将自己的信息填写完后,就可以单击“提交“按钮,,检查无误后,就将用户记录写到数据库中,同时回给出如图1-14的提示信息
(图)
当然,如果用户在填写姓名、地址等信息的时候出现错误,系统也会给出相应的提示。
2页面所使用的数据库组件
系统注册页面使用了用户信息(guest)表,引用了这个表的昵称、称名、联系电话、联系地址、邮编、E-mail地址、登录密码等字段,目的是为了将用户填写的信息写入到数据库中。
3 页面的HTML表单元素
系统注册页面有10个表单元素,如表1-3所示。
表1-3 系统注册页面所使用的表单元素
名称 |
表单元素类型 |
Value值 |
含义 |
Nickname |
Hidden |
用户填写的呢称 |
显示用户呢称 |
Name |
text |
用户填写 |
用户名 |
Tel |
text |
用户填写 |
联系电话 |
Addr |
text |
用户填写 |
联系地址 |
|
text |
用户填写 |
|
Zip |
text |
用户填写 |
邮编 |
Password1 |
Password |
用户填写 |
用户密码 |
Password2 |
Password |
用户填写 |
确认密码 |
Login |
Submit |
登录 |
提交表单 |
reset |
reset |
全部重填 |
重设表单 |
4页面的ASP代码
首先是向系统编译器说明脚本语言:
然后定义姓名、联系电话、联系地址、E-mail地址、邮编、密码、确认密码等变量,以及一个存储昵称的temp变量。另外,还需要定义一个判断表单信息是否正确的founderr变量和一个存储错误信息的errmsg变量。
4.5修改用户注册信息页面
1 页面示例
在线销售系统还应提供用户修改自己信息的功能。当用户在图1-10的用户登录页面中输入自己的用户名和密码之后,如果系统检查为合法身份,就会出现如图1-15所示的页面。
2页面所使用的数据库组件
系统的修改用户页面使用了用户记录(guest)表,引用这个表的昵称、姓名、联系电话、联系地址、邮编、E-mail地址以及密码等字段,将这些字段显示给用户,同时允许用户修改除昵称以外的所有字段,然后将新的信息写入到数据库中。
图:
3页面的HTML表单元素
系统修改用户信息页面有10个表单元素,如表1-4所示。
表1-4 系统修改用户信息页面所使用的表单元素
名称 |
表单元素类型 |
Value值 |
含义 |
Nickname |
Hidden |
用户填写的昵称 |
显示用户昵称 |
Name |
Text |
用户填写 |
用户名 |
Tel |
Text |
用户填写 |
联系电话 |
Addr |
Text |
用户填写 |
联系地址 |
|
Text |
用户填写 |
E-mail |
Zip |
Text |
用户填写 |
邮编 |
Password1 |
Password |
用户填写 |
用户密码 |
Password2 |
Password |
用户填写 |
确认密码 |
Login |
Submit |
修改 |
提交表单 |
reset |
reset |
全部重填 |
重设表单 |
4页面的ASP代码
首先是向系统编译器说明脚本语言:
在系统不出现错误的前提下,进行循环操作,读取数据库中记录。
定义连接字符串,返回数据集,以及sql语句等信息,并执行连接数据库的操。
在上面的修改页面中,系统所实现的功能仅仅是判断登录用户的身份是否合法,如果合法,则将该用户的读取出来,并按照格式显示给用户。当用户更改了这个页面的某些内容以后,就需要userchange.asp页面来处理剩下的工作了,如图1-16所示是一个正常更改后的页面。
图:
首先是向系统编译器说明脚本语言:
4.6图书查找页面
1页面示例
下面介绍网上书店系统的主要模块——图书销售子系统。
首先给出的图书分类查找功能的介绍,前面的系统首页中可以选择所要查找图书的分类,然后单击“提交”按钮。
比如其中选择了“烹饪类”图书,在单击“提交”按钮以后,系统就会跳转到图1-18所示的页面,给出“烹饪类“的所有图书信息,方便用户的阅读和购买。
2.页面所使用的数据库组件
系统图书查找页面使用了系统的书籍信息(book)表,引用了这个表的书名、作者、单价、简介等信息,还包括那些带有图片的书籍的图片信息。查找页面并没有对这些字段进行操作,只是把他们读取出来,然后显示给用户。
3.页面的HTML表单元素
图书查找结果页面没有使用任何的HTML表单。
4.页面的ASP代码
首先是向系统编译器说明脚本语言,然后在不出现错误的情况,执行循环操作。
《% on error resume next
定义连接字符串,返回数据集对象,查询SQL语句以及一个名为temp的用来获取图书类别信息的变量。同时将页面连接到数据库上。设定返回数据集。
从default.asp页面中获取图书类别的表单参数,判定temp变量是否为空,如果为空,将页面定向到default.asp页面,即系统首页。
如果类别不为空,那么 招待一条查找该类别所有图书的SQL查询操作,获取返回的数据集。
如果返回的数据集不为0,那么将数据集的游标移动到最前面,获取所有该类别图书的信息,并用HTML页面将它们显示出来。
下面是HTML页面的代码。这里特别强调的是该页面定义的一个script函数,如果用户想购买自己喜爱的图书,并单击了购买的超级链接,系统就会弹出一个购物车页面。
一次读取数据集的所有记录,按照给定的格式将它们显示出来,注意,这里没有给出衅书各个字段的信息的提示,而是为了节省空间,将它们合在一起显示了。
4.7购买图书(购物车)页面
1.页面示例
购物车是网上书让系统的核心部分。当用户在系统首页,或者分类查询页面中查询到自己喜爱的图书,并单击了“购买”的超级链接,那么系统就会弹了如图1-19所示的购物车页面,提示用户自己购买的图书的所有信息,包括数量、编号、图书名称、单价、该类图书的小计,以及购物车中所有图书的总价。
购物车页面给出了3个按追赶,一个是继续购物,一个是改变数量,一个是结帐。下面要介绍的改变数量按钮,顾客可以在数量的文本框里面改变自己购物图书数据量,然后单击“改变数量”按钮,也许顾客没有感觉页面有变化,实际上页面已经将顾客所做的修改写入到数据库中了。
当然,如果顾客还需要购买其他感兴趣的图书,也可以单击这个页面产“继续购物”按钮,或者直接在图书书籍页面单击“购买”某种图书的超级链接。如图所示,给出了购物车有两种图书的情形。
2.页面所使用的数据库组件
系统购物车页面使用了系统数据库的书籍信息(book)表,引用了这个表的书名、价格等字段,其中属名字段是用于查找和显示,而价格字段则是用于计算购物的某类图书小计和整个购物车总值用的。
3.页面的HTML表单元素
系统购物车页面有4个表单元素,如下表所示
系统购物车页面所使用的表单元素
名称 |
表单元素类型 |
Value值 |
含义 |
TxtItemQty |
Text |
系统读取以及用户填写 |
某种图书的数量 |
Close |
Submit |
继续购物 |
继续购物的按钮 |
cmdSubmit |
Submit |
改变数量 |
改变某种图书的数量 |
submit |
Submit |
结帐 |
结帐退出 |
4.页面的ASP代码
首先给出的HTML代码
接下来进入到ASP代码的分析,首先获取的是cartitemnumarray和cartitemqtyarray两个session变量的值
同时获取购物车处理程序模式的值,从而判断该页面应该进入到某个特定的操作,比如说添加商品,更改数量,或者是继续购物。
sMode=request.querystring(“mode”)
如果模式没有设置,那么我们需要获取shopcart.asp页面的cmdSubmit表单参数的值,来设定处理的模式。
下面进入到处理环节。如果处理模式是“添加商品”,那么就需要首先获取itemno变量的值,然后判断购物车中这种图书的数量是否大于0。如果大于0,则判断购物车中图书数量跟itemno变量的值是否相等,从而确定是否应该将nThisItemIndex的值设定为当前的循环值。
如果我们的nThisItemIndex值为0,就说明购物车没有这种商品,那么将这种商品的数量加1,同时将sCartItemNums这个数组的nThisItemIndex这项内容高能家为当前的sItemno的值。
如果有商品存在了,那么直接将该项商品的数量加
然后要做的就是设定两个session 变量的值。
如果处理模式为“添加数量”或者“结帐”或者“继续购物”之一,那么从表单参数中获取这个新数量的值,将它写入到nCartItemQtys()数组中。
下面就需要建立数据库的连接,同时打开数据库连接。
否则,处理表单的页面仍然是 shopcart.asp页面
如果购物车种商品的数量为0,给出“购物篮中没有商品”提示。
如果已经购买了商品,并且处理模式为“结帐”模式,那么就需要顾客填写自己的个人信息,包括姓名、密码,同时还需要顾客选择自己的结帐方式,这里提供了邮局汇款和信用卡两种结帐方式。
4.8订单检查页面
1.页面示例
实际上,当顾客在购物车页面里单击“结帐”按钮时,首先处理的是shopcart.asp页面,即购物车页面,这个页面要求顾客输入自己的姓名、密码,并选择自己的付款方式。
关于图1-22页面的窗帘在上面购物车页面已经做了详细的分析,这里不再赘述。而是直接进入到顾客单击“确定”按钮的情况,这时候,系统会调用ordercheck..asp页面来处理shopcart.asp页面的表单,首先检查的是顾客身份的合法性,如果数据库中没有检索到该顾客,那么系统会给出图1-23所示的提示信息。
反之,如果顾客的身份通过验证,那么系统就会给出交易成功的提示,如图所示,该页面显示顾客购买商品的信息,包括各种商品名称、数量、小计,以及最后总的价格,同时,页面还会给出感谢信息。
2.页面所使用的数据库组件
系统的订单检查页面使用了系统的用户信息(book)表,引用了这个表的姓名和密码两个字段,将这两上字段与shopcart.asp页面传递来的用户名和密码进行对比,以验证用户身份的合法性。
系统的订单检查页面还使用了系统的订单信息(book)表,引用了这个表的顾客的名称、顾客的地址、顾客的邮编、顾客的联系号码、顾客购买的书籍、交易的日期等字段内容,将顾客购物车的信息写入到这些字段中去。
3.页面的HTML表单元素
订单检查页面没有使用任何的HTML表单元素
4.页面的ASP代码
首先是向系统编译器说明脚本语言,然后从shopcart.asp的表单元素中获取用户名和密码两个变量。
建立数据库连接,设定返回的数据集对
判断顾客用户名的合法性,如果为空,则给出“姓名不能为空”,的提示,同时中止页面的执行。
如果用户合法,那么就需要带入到数据库中作检查。下面给出的是这条查询的SQL语句,以及打开数据集的操作
判断用户检查是否正确,如果能在数据库中检索到用户记录,说明用户身份合法,那么获取cartitemnumarray、cartitemqtyarray、以及sCartItemNums等三个session变量的值,同时设定一个名为temp的变量。
4.9管理员首页
1.页面示例
在系统首页的左下方,如图所示,用户可以在这里填写自己的身份和密码,并单击“提交”按钮,以管理员身份登录系统。
通过系统的验证后,出现图所示的网上商店管理首页。
2.页面所使用的数据库组件
系统管理员页面没有使用任何的数据库组件
3.页面的HTML表单元素
系统管理员页面也没有使用任何的HTML表单
4.页面的ASP代码
从图就可以看出系统管理员的首页是非常简单的,它实现的仅仅是功能提示,至于具体的功能实现还需要其他页面来完成,所以这个页面全部都是HTML代码的内容。
4.10浏览图书列表页面
1.页面示例
当管理员在图中选择了浏览图书的功能,就会出现下图所示的所有图书的列表信息。
2.页面所使用的数据库组件
浏览图书列表页面使用了系统的书籍信息(book)表,系统应用这个表的书名字段,将所有的书名查找出来,供管理员选择具体的图书。
3.页面的HTML表单元素
浏览图书列表页面有三个表单元素。具体的名称和值如下表所示。特别注意,所有的书名都是一个radio表单。
浏览图书列表所使用的表单元素
名称 |
表单元素类型 |
Value值 |
含义 |
Bookchange |
Radio |
书名1 书名2 书名3 书名4 ······ |
书籍1的名称 书籍2的名称 书籍3的名称 书籍4的名称 书籍N的名称 |
B1 |
Submit |
提交 |
用户提交 |
B2 |
Button |
返回 |
返回到管理员首页 |
4页面的ASP代码
首先是向系统编译器说明脚本语言:
在错误情况下,仍然继续操作。
定义连接字符串,返回数据集,查询SQL语句以及连接。
以书籍编号降序查找所有的书籍,执行这条SQL语句。