网上购物系统实验报告.docx
《网上购物系统实验报告.docx》由会员分享,可在线阅读,更多相关《网上购物系统实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
网上购物系统实验报告
南京晓庄学院
网上购物系统设计实验报告
所在院(系):
数学与信息学院
学号:
08413432
学生姓名:
张飞红
年级专业:
08级计算机专业指导教师:
谢静老师
提交日期:
2010年6月
南京晓庄学院
网上购物系统的设计与实现
作者:
张飞红指导教师:
谢静
1系统分析与设计
1.1需求分析
随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。
个性化已逐渐成为当今Web应用的潮流。
本文研究了一种基于数据关联规则采集技术的用户个性化页面动态生成方案,此方案与现今网上已采用的方案相比,具有用户使
用更简单、反映用户更明显细致等优点。
网上购物是电子商务的典型应用之一,网上商场是实现网上购物的安全、便捷的途径。
通过网上商场,用户可以到网上商场浏览选购自己喜欢的商品,安全地实现网上实时支付,安坐家中便完成购物的过程。
对商家而言,通过网上商场可以非常方便地将自己的商品上网销售,维护十分简单(甚至不需要建立自己的网站)而只须付出低廉的费用。
网络是网上商店的存在载体。
网上商店向网上购物者传递商品信息,网上购物者通过网上商店
进香商品和款项的交易。
服装鞋帽商城采用PHP技术和SQL数据库,以DreamweaverMX2004为开发环境进行商城站点的构建,并选择Xampp作为服务器,进行系统分析,为将来进一步的实施打下
一个坚实的技术基础。
此系统分为前台管理和后台管理。
前台管理是友好的操作界面,供用户浏览、查询使用。
包括:
浏览商品、查询商品、订购商品、购物车、用户维护等功能;后台管理是提供给管理员的,其中包括:
商品管理、用户管理、订单管理等。
使管理员从繁琐的手工操作中解脱出来,并提高了办公准备效率。
经过前期的深入调查和研究,总结出该系统需要完成的一些具体功能,分析如下:
1.用户管理:
能够完成用户基本信息录入的注册、登录和注销。
2.管理呗管理:
能够完成管理员对网站的商品订单的处理。
1.2总体设计
根据网上购物的功能需求,进行系统分析设计。
系统功能模块图如图1-1所示:
1
南京晓庄学院
1.2.1用户模块
图1-1系统功能模块图
用户模块又分为三个子模块:
注册、登录及注销模板;选择商品并添加到购物车模块;付款结算模块。
首先,用户登录后可以查看购物网站上所有的商品,根据个人爱好、需要,选择商品,用户可以通过查看主页上显示的商品进行选择,也可通过分类即菜单栏的导航进行选择商品。
然后,选择好商品后,可通过添加到购物车,在购物车后也可以再继续购物或者删除不需要的商品。
最后就是进行付款结算。
结算完成后,注销用户,以便下次继续使用(模块图如图1-2所示)。
图1-2用户模块图
2
南京晓庄学院
1.2.2管理员模块
管理员模块:
管理员管理模块也就是网站的后台,包括丙个子模块:
登录及注销和处理商品与订单。
登录及注销模块是控制管理员登录与注销。
处理商品及订单模块的主要工作是负责对商品信息和订单信息的管理与维护,包括对商品的添加与删除即上架下架功能、订单信息确认与管理功能等。
(模块图如图1-3所示)
1.3数据库设计与实现
图1-3管理员模块图
数据库在系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
另外,合理的数据库结构将非常有利于程序的实现。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。
1.3.1数据库设计原则
在动态网站的设计中,数据库设计的重要性不言而喻。
如果设计不当,查询起来就非常吃力,程序的性能也会受到影响。
无论使用的是MySQL或者Oracle数据库,通过进行正规化的表格设计,可以令PHP代码更具可读性,更容易扩展,从而也会提升应用的性能。
1、规范命名
所有的库名、表名、域名必须遵循统一的命名规则,并进行必要说明,以方便设计、维护、查
询。
2、控制字段的引用
在设计时,可以选择适当的数据库设计管理工具,以方便开发人员的分布式设计和数据小组的集中审核管理。
采用统一的命名规则,如果设计的字段已经存在,可直接引用;否则,应重新设计。
3
南京晓庄学院
3、库表重复控制
在设计过程中,如果发现大部分字段都已存在,开发人员应怀疑所设计的库表是否已存在。
通过对字段所在库表及相应设计人员的查询,可以确认库表是否确实重复。
4、并发控制
设计中应进行并发控制,即对于同一个库表,在同一时间只有一个人有控制权,其他人只能进行查询。
5、必要的讨论
数据库设计完成后,应与指导老师进行讨论,通过讨论来熟悉数据库,从而对设计中存在的问题进行控制或从中获取数据库设计的必要信息。
1.3.2数据库概念结构设计
数据库的E-R图反映了实体、实体的属性和实体之间的联系。
下面的图1-4至图1-9显示的是各个实体以及实体的属性。
图1-4管理员实体及属性
图1-5用户实体及属性
4
南京晓庄学院
图1-6订单实体及属性
图1-7订单条目实体及属性
图1-8类别实体及属性
5
南京晓庄学院
图1-9商品实体及属性
图1-10管理员实体及属性
下面的图1-11显示的是系统E-R图:
1.3.3数据库逻辑结构设计
图1-10系统E-R图
本系统数据库为:
shoppingcart,其中包含了6个MySQL数据表来实现对数据的存储、调用。
以下为具体数据表模式:
⑴【admins表】(username、password)
⑵【categories表】(id、name)
⑶【customers表】(id、username、password、add1、add2、add3、postcode、phone、email)
⑷【orderitems表】(id、order_id、product_id、quantity)
⑸【orders表】(id、customer_id、registered、payment_type、date、status、total)
⑹【products表】(id、cat_id、name、description、image、price)
其中,用下划线和粗体标记的属性为表的主键属性。
各表的具体设计如表4-1~表4-9所示。
根据E-R图,设计每张表的变量名,变量的类型及主键。
6
南京晓庄学院
1、admins表
admins表存放管理员ID、登录名和密码。
表1-1admins表
2、categories表
Categories的信息都存放在个表中。
表1-2categories表
3、orderitems表
Orderitems表存放所有订单条目的信息。
表1-3orderitems表
4、orders表
Orders表存放订单的详细信息。
表1-4orders表
7
南京晓庄学院
5、products
表
Products
表存放商品的名称,描述,图片,价格等。
表1-5products
表
6、custermers表
Custermers表存放教师上传的文件的信息。
表1-6custemers表
1.4本章小结
本章介绍了网上购物系统的总体构想,以及实现的主要功能。
根据需求分析对模块功能作了较为详细的介绍。
最后介绍了数据库的设计原则,分析了数据库的概念与逻辑结构设计。
8
南京晓庄学院
2系统功能的具体实现
2.1系统功能设计
在系统进行整体设计的过程中,将系统中的公用代码部分分离了出来,避免了系统中出现代码冗余,同时也提高了系统的开发效率。
2.1.1数据分页功能
当要显示的数据比较多,一个页面无法完全显示,此时便需要进行数据的分页处理(如图2-1)。
用以下代码实现的简单分页,非常简单,具体实现主要代码如下:
$pagesize=3;
$validid=$_GET['id'];
$sql="SELECT*FROMproducts";
$result=mysql_query($sql);
$number=mysql_num_rows($result);//取记录的条数
if($number%$pagesize==0){//取余数,看是否等于0
$total=$number/$pagesize;
}
else{
$total=(int)($number/$pagesize)+1;
}
if(isset($_GET['page']))//判断是否是第一页
{
$page=(int)($_GET['page']);
}
else
$page=1;
$start=($page-1)*$pagesize;//计算起始位置
$prodcatsql="select*fromproductslimit$start,$pagesize";//根据页码$page计算出起始位置$start取值,以$start为起点,个数为$pagesize
$prodcatres=mysql_query($prodcatsql);
9
南京晓庄学院
2.1.3分类导航功能
图2-1分页显示
对所有商品进行分类,方便用户查找商品。
通过导航来实现产品的分类显示。
如图2-2所示。
图2-2分类导航显示
在PHP文件中,我们只需要传递4个变量给Smart对象:
1.记录总数;2.每页记录起始数;3.
每页记录结束数;4.分页标签;
2.1.4会话管理
用户可以根据身份进行选择登录,在系统用户登录的时候,用户需要输入用户名和密码及验证码进行数据库登录验证。
用户必须输入用户名和密码以及验证码。
否则将弹出对话框进行提示。
在进行用户身份识别时,需要对用户的一些信息参数进行传递与保存,这就要使用到SESSION
或者COOKIE技术。
服务器端的SESSION和客户端的COOKIE是两种重要的参数传递与保存的技术,它们有各自的优点与不足,但都在Web系统中发挥着很大的作用。
SESSION:
在计算机中是存在服务器端的,在网络应用中,称为“会话”。
“会话”可以简单的理解为浏览器与服务器的一次对话过程,这个过程从第一次服务器收到浏览器的页面请求开始到最后
一次请求为止。
一次会话对应着一个SESSION,每个访问者都有自己的一个SESSION,所以像用户信息等全局性的数据非常适合放在SESSION中,以供整个访问过程使用。
COOKIE是客户端(浏览器)支持的存储区,当一个页面访问请求发出时,浏览器会查找是否
有有效的COOKIE可用,如果找到的话COOKIE中的信息将被一起传递到服务器,这样PHP程序就可以获取和分析COOKIE里的数据。
客户端出于安全和性能的考虑,不会给COOKIE很大的存储空间,COOKIE也可以被客户端的其他程序访问和修改,用户也可以禁用COOKIE功能,总的来说并不可靠,但是它可以长期存放在客户端脚本共享里面的数据,适合于存放一些不太重要的个性化
信息。
SESSION与COOKIE不同的是它不需要每次都要从客户端传来,它的数据保存在服务器上,也不会自传给客户端。
根据客户端发来的页面请求中的SESSIONID来查找是否有对应的SESSION可用。
如果有,则为PHP提供这个SESSION,如果没有则创建一个供PHP使用。
直到这次会话的结束,SESSION才会被清除。
鉴于此本系统采用的是SEEION技术。
10
南京晓庄学院
2.2用户模块功能的实现
2.2.1用户注册
在注册用户时,需要填写用户名,密码,地址,邮编,电话号码,以及邮箱等(每个信息都不
能为空,否则将弹出对话框进行提示)。
填写完提交后写入数据库并判断是否注册成功。
主要代码如下:
if(empty($username))//判断用户名是否为空。
die("");//弹出对话提示并回到注册
$sql="INSERTINTOcustomersVALUES('','$username','$userpassword','$add1','$add2','$add3','$postcode','phone','$email');";//SQL语句,把注册信息加入到customers表中,但还并未执行
if(mysql_query($sql))//只有通过mysql_query()才能在数据库上执行操作,使用if来判断是否已经执行来决定注册成功与否。
图2-3用户注册
2.2.2用户登录
在系统用户登录的时候,用户需要输入用户名和密码及验证码进行数据库登录验证。
界面如图
2-4所示,用户必须输入用户名和密码以及验证码。
否则将弹出对话框进行提示。
原代码如下所示:
$loginsql="select*fromcustomerswhereusername='".$_POST['userBox']."'ANDpassword='".
$_POST['passBox']."'";
$loginres=mysql_query($loginsql);
$numrows=mysql_num_rows($loginres);
11
南京晓庄学院
if(empty($numrows))
die("");
2.2.3购物车功能
图2-4用户登录
在系统中,购物车是整个网上购物系统中最核心的部分。
主要功能是用户选择商品添加到购物
车,并能在下次登录时显示购物车中的待结算的商品(界面如图2-5和图2-6所示)。
核心代码具体如下:
$sql="INSERTINTOorders(customer_id,registered,date,status)VALUES(".
$_SESSION['SESS_USERID'].",1,NOW(),'pay')";
mysql_query($sql);//把用户号等信息写入数据库中
session_register("SESS_ORDERNUM");//生成会话变量
$_SESSION['SESS_ORDERNUM']=mysql_insert_id();把订单ID附给会话变量
$itemsql="INSERTINTOorderitems(order_id,product_id,quantity)VALUES(".
$_SESSION['SESS_ORDERNUM'].",".$validid.",".
$_POST['amountBox'].")";mysql_query($itemsql);require("showcart.php");
图2-5添加商品到购物车
$quantitytotal=$itemsrow['price']*$itemsrow['quantity'];//产品的总价格
12
南京晓庄学院
echo"
";echo"
| ";echo"".$itemsrow['name']." | ";//获取商品名称echo"
".$itemsrow['quantity']." | ";echo"
£".sprintf('%.2f',$itemsrow['price'])." | ";echo"£".sprintf('%.2f',$quantitytotal)." | ";echo"
[ id=".$itemsrow['itemid']."'>X] | ";echo"
";
$total=$total+$quantitytotal;
$totalsql="updateorderssettotal=".$total."whereid=".$_SESSION['SESS_ORDERNUM'];
$totalres=mysql_query($totalsql);//更新总价格
2.2.4结算功能
图2-6购物车显示
用户选择好商品后,加入购物车后,就可以进行结算了。
结算分两种,一种是网上银行,另一种是货到付款。
如下图2-7所示:
13
南京晓庄学院
2.2.5用户注销
图2-7结算
用户完成商品选购及结算后,就可以注销用户以便不被其他人使用,等下使用时再进行登录。
只要通过如下代码,注销会话变量。
session_unregister("SESS_LOGGEDIN");session_unregister("SESS_USERNAME");session_unregister("SESS_USERID");
2.3管理员模块功能的实现
2.3.1管理员登录
管理员根据用户名admin和初始密码admin选择身份后登录进行后台管理,如图2-8所示。
图2-8管理员登录
14
南京晓庄学院
2.3.2管理员管理
管理员管理功能主要是查看订单,处理订单,如图2-9所示。
图2-9未解决的订单
可以通过点击查看按钮,查看订单的详细内容,如图2-10所示。
15
南京晓庄学院
图2-10订单详情
2.3.3管理员注销
管理员处理好订单后,退出管理员即注销。
也是通过注销会话变量来注销管理员用户。
2.4本章小结
本章介绍系统模块的功能的实现并详细介绍了网上购物系统的几个主要模块的设计思想、
SESSION和COOKIE等相关技术,介绍了各功能模块并分析了核心功能的主要实现代码。
还分析了数据分页功能。
并提供了样图进行展示。
16
南京晓庄学院
5总结
由于在此之前对于PHP知识的掌握不是很牢固,所以从一开始就碰到许多困难。
在整个设计阶段,我觉得对系统进行需求分析,系统的总体设计和详细设计是非常重要的阶段。
当这些工作完成系统,才是编写代码,实现功能的过程。
在整个系统开发的过程中,一开始我没有严格按照这个流程来,我是先写代码。
这个造成了一个很大的弊端,就是当我对系统功能进行扩展和完善时,就不得不修改原来的代码以适应现在的功能,浪费了很多时间。
后来,我严格按照这个流程来进行系统开发,提高了工作效率。
通过这次网上购物系统的开发,让我对PHP编程、MYSQL数据库和超文本标记语言HTML等有了更深的了解,应用起来更加得心应手。
在网站开发方面我也积累了一些经验,取得了一些进步,
但是在某些方面还存在一些不足。
比如:
系统功能太过单一,页面美工设计还有一些不足,跟一些
知名网站还是有一定的差距。
在以后的学习道路上,我还要不断的学习,努力的学习,对PHP还要继续钻研下去。
17