资源描述
基于ASP.NET的网上购物系统
摘 要:随着Internet技术和通讯技术的日新月异的发展,互联网正以它的高效性、丰富性、安全性得到越来越多人的喜爱,随之而来的巨大商机和眼光长远商人们的关注使得电子商务应运而生。网上购物系统是建立在Internet上,进行商务活动的虚拟网络空间和保障顺利运营的管理环境;是协调、整合信息流、物质流、资金流,使其有序、关联、高效流动的重要场所。本系统按照软件开发的基本流程,对网上购物系统进行了分析和结构设计。通过应用该系统,用户只需上网就能得到各种商品信息服务,可以通过网站BBS系统对网站提意见、写要求、以及和其他用户交流。网站管理人员也可以方便的通过数据库管理界面进行商品、留言、订单管理。同时实现商品管理、论坛管理、新闻管理等功能。
关键词:网络购物;ASP. NET技术;Access数据库
1 绪论
1.1 问题的提出
随着信息产业的迅猛发展,互联网以及各项相关技术日渐成熟,这些都推动了电子商务的发展,使人们对这个新兴产业有了一定的了解,也使电子商务在各个领域有了不同程度的应用,给世界各国带来了许多新的发展机会
1】。
电子商务与传统商务相比具有5方面主要优势。(1)无需店铺租金等,能使营业成本大大低于传统商店。(2)采用“零库存“管理方式,可大大缩短资金的周转周期。(3)互联网商务更有利于开拓全球市场。(4)实现24 h不间断营业,有利于提高营业额。(5)可使用多媒体手段进行促销活动,可依靠客户数据库提供全新个人服务。随着计算机与通信技术的飞速发展,电子商务的开展势在必行
2】。
1.2 网站的设计思想
通过讲述网上购物系统的设计与实现,对本站的功能进行全面的讲解,展示网上购物的便利、优点与特色。由于当代人的生活节奏不断加快,时间对于每个人来说都是最宝贵的,网上购物可以让每个用户,足不出户就可以享受在大商场里一样的购物乐趣,节省了大量的时间,方便、快捷、诚信的服务是本网站的一大特色。本网站按系统功能划分前台客户功能和后台管理员功能。
网站前台的基本功能:浏览商品、查询商品、购买商品、提交订单、查询订单、留言、站内搜索、管理与修改商品等。
网站后台的功能设计:商品管理(大类、小类、添加、删除)、购物车的管理(订单审查、修改)、论坛管理(审查、回复、删除)、新闻管理(添加、删除)等。
通过对网上购物流程的演示与管理员对店铺的管理,使大家对电子商务的发展及电子商务网站所涉及技术有更深刻的理解,结合电子商务网站的特点,对网站规划、概要设计、详细设计及代码编写进行分析与开发,使更多人接受网上购物。
1.3 网站研究的主要内容
本系统的电子商务模式主要是针对在后台添加商品进而在前台交易的B to C(Business to Customer)模式的网站。即商家企业对消费者的交易模式,主要是企业开设产品专卖电子商店,在互联网上向顾客出售企业产品,提高物流速度,节约商店的成本、管理、人员等费用
。
本网站采用ASP.NET技术与Access数据库技术,实现了购物网站首页的模块设计和顾客与商家的功能模块设计,介绍了网站后台功能的开发与管理,包括对管理员用户的管理和商品的查看、修改与新闻发布的管理以及网站的其它信息的设置,并且对数据库的开发设计进行了具体的研究。
本文主要论述构建电子商务网站的技术手段及其实现的关键方法。
2 购物网站的规划与概要设计
网站是否成功与建站前网站规划的有着重要的关系。在建站前应明确建站目的、确定网站的功能、规模与投入费用,进行必要的市场分析,并根据需要对网站建设中的技术、内容、费用、测试、维护等做出规划。只有进行详细的规划,才可能避免在网站建设中出现的问题,使网站建设能较为顺利的进行。它将对网站建设起到计划和指导作用,对网站的内容和维护起到定位的作用
4】。
2.1网站功能模块
购物网站按实现功能主要划分为四大模块: 商品管理模块、购物车实现模块、论坛管理模块、新闻管理模块。设计图解与说明如图1所示:
商品管理模块
购物网站
购物车实现模块块
论坛管理模块
新闻管理模块
图1 购物网站功能模块
(1)商品管理模块
该模块主要提供对商品及其种类的添加与删除,包括添加商品,产品管理,大类、小类管理等,管理员在后台对商品信息进行修改后,立即会在前台显示更新。
(2)购物车实现模块
客户在决定购买商品时,将商品添加到购物车中,并可以更改所购商品的数量,提交订单后,系统会返回一个商品订单号,用户可以对订单进行查询,管理员可以管理订单内容。
(3)论坛管理模块
用户论坛系统是网站提供的一种极为常见的互动交流服务。论坛可以向顾客与商家提供开放性的分类专题讨论区服务,大家可以在此发表自己的某些观点经验,商家亦可在此回答顾客提出的问题或发布消息等。
(4) 新闻管理模块
网站首页新闻发布系统,是将网站需要经常变动的信息,如网站动态、商家新闻、新产品发布、促销活动和行业动态等信息集中管理。
2.2 购物流程分析图
顾客的购物流程简介:顾客首先进入购物网站,开始挑选合适的商品,可以自行选择也可以进行搜索,当选中商品后,将商品放入购物车,此时可以选择是否继续购物,如果选择继续购物,则重复上述操作,如果不在进行购物,就去收银台结算,要先填写正确的地址,最后是选择完成订单,可以进行订单的查询。顾客购物流程如图2所示:
图2 顾客购物流程
2.3 网站的数据库设计
2.3.1 数据库需求分析
网站的需求重点体现在各种信息的提供、保存、更新和查询。这就要求数据库结构能够满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后的具体设计打下基础。
针对网站的需求,通过对客户及商品信息管理过程进行分析,可以设计出以下的客
户信息及商品信息的数据结构:
客户信息:客户编号、姓名、性别、省市、邮编、公司名称、公司地址、电话、传真、电子邮箱、密码、密码提示问题及答案等。
商品信息:商品编号、名称描述、价格特征、图片、库存、类别编号、类别、体积、重量、零售价格、特价显示、热卖显示。
2.3.2 数据库E-R图
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
E-R模型三个基本概念之间的联接关系:实体是概念世界中的基本单位,属性有属性域,每个实体可取属性域内的值。一个实体的所有属性值叫元组
5】。
E-R模型的图示法:(1)实体集表示法;(2)属性表法;(3)联系表示法。
商品实体E-R图如下图3所示:
商品编号
商品大类
商品小类
商品名称
商品说明
图片名称
上传日期
商品重量
商品产地
商品价格
商品
图3 商品实体E-R图
商家实体E-R图如图4所示:
顾客邮箱
备注
订单号
订单商品数量
量
订单状态
顾客姓名
顾客地址
顾客电话
订单
图4 商家实体E-R图
2.3.3 数据库表结构设计
表就是数据库中用来存放数据的场所。“表”都有一些共同的特性,一是表中可以存储数据,二是这些数据在表中都有很规则的行列位置。Access中的“表”和平常见的很多纸上的表格很像。各种数据在计算机中是按照串的方式存放的。只是现在Access将这些数据读取出来以后,按照通常所接触的纸上表格那种行列方式将它们显示在屏幕上。这比较适合我们的生活习惯,对数据进行操作也比较容易,是数据库中最基本、最重要的一个部分。所以要想建立一个数据库,必须先要建立表。一个数据库可以不只一个表,但是所有的数据表的名称必须是唯一的。同一数据库中的表可以是彼此相关联的,也可能是相互独立的
6】。
该系统包含多个表,每张表存储着该系统某项功能的数据信息,其中最重要的数据表是管理员信息表(Myusers)、分类表(fenlei)、订单信息表(orderForm)、商品信息表(products)。
下图为管理员信息表,记录了其属性信息。如下图5所示:
图5 管理员信息表
下图为分类信息表,记录了其属性信息。如下图6所示:
图6 分类信息表
下图为订单信息表,记录了其属性信息。如下图7所示:
图7 订单信息表
下图为商品信息表,记录了其属性信息。如下图8所示:
图8 商品信息表
3 购物网站的模块设计与开发
3.1电子购物网站前台总体结构
本站的首页页面充实美观、内容丰富、信息量大。网站首页文件名为:default.aspx。
网站的前台结构如下图9所示:
图9 网站前台结构
网站首页1如下图10所示.
图10 网站首页1
3.2 商品管理模块的设计与实现
3.2.1 商品的添加、查看与修改
商品的添加、查看与修改的功能如下:
(1)管理员可以添加商品及属性(商品类别、名称、品牌、规格、单位、价格、图片等)并选择商品在前台出现的位置(新品、推荐、特价),和商家拥有同样的出售商品的功能,这功能等同于B to C网站的功能。
(2)管理员还可以查看、修改商品属性,更好的管理商品。这些商品的信息都存放在后台数据中“Products”数据表中。
(3)为了在数据库中存储图片,可以把产品的图片存储在服务器上的一个固定文件夹(uploadpic)下,同时,表内字段的值填充为图片的存储路径,这样便完成了图片的存储与管理工作
7】。
上传产品图和略缩图的关键代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
try
{
if (imageUpload.PostedFile.FileName == "")
{
return;
}
else
{
string filePath = imageUpload.PostedFile.FileName;
string fileEx = filePath.Substring(filePath.LastIndexOf(".") + 1);
string serverpath1 = Server.MapPath(@"uploadpic\") + "."+fileEx;
string serverpath2 = Server.MapPath(@"uploadpic\") + "."+fileEx;
//判断图片格式
if (fileEx == "jpg" || fileEx == "bmp" || fileEx == "gif" || fileEx == "jpeg")
{ System.Drawing.Image image, newimage;
//保存大图
imageUpload.SaveAs(serverpath2);
//生成略图
image = System.Drawing.Image.FromFile(serverpath2);
System.Drawing.Image.GetThumbnailImageAbort callb = null;
newimage = image.GetThumbnailImage(130, 130, callb, new System.IntPtr());
//把略图保存到指定的虚拟路径
newimage.Save(serverpath1);
else
{
lblError.Text = "图片格式不正确!";
}
}
}
catch(Exception ex)
{
throw new Exception(ex.Message, ex);
// lblError.Text = "上传失败!";
}
}
商品的添加界面如下图11所示:
图11 商品的添加与管理
3.2.2 商品的类别管理
(l)为了区分商品类别,管理员会在后台对商品分出几大类(文体,服饰,数码等),这也是本网站主营的项目,管理员可以控制网站的业务范围,添加删除商品大类。
(2)对商品类别而言,每一个大类之中都会包含一些小类商品,例如“文体”大类之后就包含运动用品,书籍等。
(3)类别是通过Gridview控件链接数据库显示,在页面中,点击“添加新类”按钮,会将新类的相关信息加入数据库中,其添加分类的代码如下:
private void AddOrder(string sName,int nOrder)
{
string myConnectionString = ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING1"].ConnectionString + Server.MapPath("~") + ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING2"].ConnectionString;
OleDbConnection myConnection = new OleDbConnection(myConnectionString);
string cmdText = "INSERT INTO Fenlei(Name,OrderID) VALUES('" +sName + "'," +nOrder + ")";
OleDbCommand myCommand = new OleDbCommand(cmdText, myConnection);
try
{
myConnection.Open();
myCommand.ExecuteNonQuery();
}
catch (OleDbException ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
myConnection.Close();
}
}
商品大,小类的管理界面如下图12所示:
图12 商品大、小类的管理
3.3 购物车模块的设计与实现
3.3.1 购物车的设计
购物车的实现功能如下:
(1)购物车实现功能模块是网站中比较重要的模块,本系统的目的就是用来销售的,它和现实中超市的购物一样,客户会选择自己满意的商品放入购物车,并提交订单。
(2)顾客对所选商品数量的更改可直接在购物车内进行。
(3)顾客还可以清空购物车进行取舍,选购满意后支付,方便了顾客的选择,给顾客带来了便利。
(4) 购物推车能够记忆商品的编号与数量。每个用户应有自己的推车,此功能由Session完成。Session是和每个在线用户关联的一个对象,它是一个容器对象。用户可以把任意的“名称—值”对存在Session中 ,利用Session对象,可把用户在不同网页选购的商品放在一个“购物袋”中。此时的购物袋并不属于某一网页,而是所有网页共用的对象。以下程序段利用变量Session,完成把商品放入购物袋
8】。即:
//购买按钮
protected void ImageButton3_Click(object sender, ImageClickEventArgs e)
{
OrderItemInfo item = null;
OrderInfo order = null;
if (Session[Session.SessionID] == null)
{//当购物车中没有任何信息时
//创建订单信息
item = GetOrderItemInformation();
order = new OrderInfo();
order.OrderItemList.Add(item);
order.TotalMoney = item.Price;
order.TotalNumber = item.Number;
Session[Session.SessionID] = order;
}
else
{//当购物车已经存在该商品信息时,从Session中获取以前的商品信息
order = (OrderInfo)Session[Session.SessionID];
item = GetOrderItemInformation();
//判断是否已经添加该类型的商品
int i = 0;
for (i = 0; i < order.OrderItemList.Count; i++)
{//如果添加了,则数量加1
if (item.ProductID == ((OrderItemInfo)order.OrderItemList[i]).ProductID)
{
((OrderItemInfo)order.OrderItemList[i]).Number++;
((OrderItemInfo)order.OrderItemList[i]).ItemTotalMoney += item.ItemTotalMoney;
break;
}
}
//否则添加新的商品
if (i == order.OrderItemList.Count) { order.OrderItemList.Add(item); }
//更新订单信息
Session[Session.SessionID] = order;
}
Response.Redirect("Shopcar.aspx");
}
(5)显示购物车的代码如下:
private void ShowCarInfo()
{
int tempnum = 0;
decimal temprice = 0;
if (Session[Session.SessionID] == null) { return; }
OrderInfo order = (OrderInfo)Session[Session.SessionID];
GridView1.DataSource = order.OrderItemList;
GridView1.DataBind();
for (int i = 0; i < order.OrderItemList.Count; i++)
{
tempnum += ((OrderItemInfo)order.OrderItemList[i]).Number;
temprice += ((OrderItemInfo)order.OrderItemList[i]).ItemTotalMoney;
}
order.TotalNumber = tempnum;
order.TotalMoney = temprice;
txtnum.Text = order.TotalNumber.ToString();
txtprice.Text = order.TotalMoney.ToString();
}
购物车实现功能模块界面如下图13所示。
图13 购物车实现功能模块
3.3.2 订单管理子模块的设计与实现
订单管理是针对后台管理员商家对已收到订单的管理和前台订单的查询。
系统管理员可以对订单进行管理,这样顾客提交的订单才能经过处理并生效。订单管理模块包括以下功能:
·查看订单;
·处理订单
(1)查看订单信息
订单的查询功能是:顾客在购买商品后,系统自动向商家发出订单,这时顾客可以查询订单的状态,随时跟踪到款、发货的最新动态。当顾客与商家执行交易流程汇款发货时,顾客与商家就可以修改订单状态,直至完成交易
9】。
订单的查询界面如下图14所示。
图14 订单的查询与修改
(2)处理订单信息
在产品管理界面中,单击“订单管理”下面的超级链接,可以查看和修改订单的信息。订单在这里呈两种情况:未处理订单、已处理订单。
系统管理员对用户提交的订单进行操作,表OrderForm中字段state表示订单的状态。0表示用户尚未确认订购,1表示管理员已处理了该订单。
其中,订单利用GridView控件,并使用如下代码完成控件的绑定和取订单的操作即://绑定控件
private void BindOrderGridView()
{
DataSet ds = GetOrder();
OrderGridView.DataSource = ds.Tables["aa"].DefaultView;
OrderGridView.DataBind();
}
//取订单
public DataSet GetOrder()
{
string myConnectionString = ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING1"].ConnectionString + Server.MapPath("~") + ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING2"].ConnectionString;
OleDbConnection myConnection = new OleDbConnection(myConnectionString);
string cmdText = "SELECT * FROM OrderForm ORDER BY OrderDate DESC";
OleDbDataAdapter da = new OleDbDataAdapter(cmdText, myConnection);
DataSet ds = new DataSet();
try
{
myConnection.Open();
da.Fill(ds, "aa");
}
catch (OleDbException ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
myConnection.Close();
}
return ds;
}
订单的管理界面如下图15所示:
图15 订单的管理
3.4 论坛管理模块的设计与实现
(1)管理员的论坛管理
管理员登陆是指网站的管理者,通过登陆窗口,输入正确的密码后才能进入管理界面管理论坛,管理员还可以对密码进行修改。
其中,登陆时需输入用户名与密码,提交给服务器,服务器查询客户信息库,如无此用户,将重定向到重新登录界面
10】。若身份合法,将标识登录成功,实现方法是通过设置dr对象读取数据库的密码和输入密码对照,若相同,则进入论坛管理界面。登陆代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
string myname = txtUsername.Text.ToString().Trim();
string mypass = Myencode(txtPassword.Text.ToString().Trim());
//非空验证
if ((myname.Length < 1)||(mypass.Length<1))
{
return;
}
OleDbDataReader dr = Loginusername(myname);
string strtemp = "";
//登陆
if (dr.Read())
{
strtemp = dr["Mypassword"].ToString();
}
//设置登陆标志
if (strtemp==mypass)
{
Session["Leaveword"] = "pass";
dr.Close();
Response.Redirect("Viewleavwords.aspx");
}
else
{
lblNote.Text = "用户名和密码错误";
}
}
(2)论坛的主题与发贴
①论坛的主题页面包括帖子的标题、发言人、回复的次数与浏览的内容。
②当用户要浏览帖子的内容时,可以点击自己感兴趣的标题,这样会出现论题的全文。
查看留言的界面如下图所示:
图16 查看留言
③当用户要发表自己主题的时候可以点击界面上方的“发表留言”进入提交论题,窗口,在这里需要填写帖子的标题和内容,当用户提交时便在主题页面出现该帖子,方便用户之间的交流。其中的“提交留言”的实现代码如下:
string name = txtName.Text.ToString();
string email = txtEmail.Text.ToString();
string web=txtWeb.Text.ToString();
string QQ = txtQQ.Text.ToString();
string headurl = Session["Selecthead"].ToString();
int ifbaomi = chkHua.Checked == true ? 1 : 0;
string content = FreeTextBox1.Text.ToString();
string ip = Request.UserHostAddress;
int nResult = Savetodate(name, email, web, QQ, headurl, ifbaomi, content, ip);
Clearcontent();
Response.Write("<Script>alert('留言成功!')</Script>");
public int Savetodate(string sName,string sEmail,string sWeb,string sQQ,string sHeadurl,int nBaomi,string sContent,string sIP)
{
int nResult=-1;
string myConnectionString = ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING1"].ConnectionString + Server.MapPath("~") + ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING3"].ConnectionString;
OleDbConnection myConnection = new OleDbConnection(myConnectionString);
string cmdText = "INSERT INTO mydata(Visitorname,Visitoremail,Visitorweb,VisitorQQ,Headurl,ifBaomi,Content,VisitorIP,Createdate)VALUES(" + "'" + sName + "'," +
"'" + sEmail + "'," +
"'" + sWeb + "'," +
"'" + sQQ + "'," +
"'" + sHeadurl + "'," +
nBaomi + "," +
"'" + sContent + "'," +
"'" + sIP + "'," +
"Now())";
OleDbCommand myCommand=new OleDbCommand(cmdText,myConnection);
try
{
myConnection.Open();
nResult = myCommand.ExecuteNonQuery();
}
catch
{
Response.Redirect("Error.aspx");
}
finally
{
myConnection.Close();
}
return nResult;
}
(3)帖子的回复:用户可以对自己感兴趣的话题进行回复,使用户之间可以相互交流,使网站产生互动性。帖子的回复如下图17所示:
图17 帖子的回复
(4)管理员对帖子标题与用户的删除:对于非法的、扰乱网站规则的、发布虚假广告信息等的帖子标题和用户,管理员会删除,这样有利与论坛的秩序,给用户一个良好发表言论的空间。删除留言的实现代码如下:
//删除留言
private void DelLeavewords(int nID)
{
string myConnectionString = ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING1"].ConnectionString + Server.MapPath("~") + ConfigurationManager.ConnectionStrings["OLEDBCONNECTIONSTRING3"].ConnectionString;
OleDbConnection myConnection = new OleDbConnection(myConnectionString);
string cmdText = "DELETE FROM mydata WHERE LeavewordID=" + nID;
OleDbCommand myCommand = new OleDbCommand(cmdText, myConnection);
try
{
myConnection.Open();
myCommand.ExecuteNonQuery();
}
catch (OleDbException ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
myConnection.Close();
}
}
3.5 新闻管理模块的设计与实现
新闻专题功能如下:
(l)首页的网站新闻,是将网站需要经常变动的信息,如网站动态、商家新闻、新产品发布、促销活动和行业动态等信息集中管理,最后系统化、标准化的发布到网站上的应用程序
11】。
(2)使顾客和商家随时关注了解网站最新动态。
(3)网站信息通过一个操作简单的界面加入到数据库中,还可以对新闻内容及时更新与维护,管理员在后台输入、查询、修改、删除新闻专题。其中“添加新闻”的实现代码如下:
//添加记录
pr
展开阅读全文