网上超市管理系统毕业设计.docx
《网上超市管理系统毕业设计.docx》由会员分享,可在线阅读,更多相关《网上超市管理系统毕业设计.docx(23页珍藏版)》请在冰豆网上搜索。
网上超市管理系统毕业设计
网上超市管理系统
第一章绪论
1.1开发背景
随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以及计算机与网络技术为基础的信息系统正处以蓬勃发展的时期。
网上超市系统,是在网络上建立一个虚拟的购物商场,避免了挑选商品的繁琐过程,是顾客的购物过程变得轻松,快捷。
网上超市管理系统是一个针对网上销售商品、管理商品的一个专门软件。
随着网络的广泛普及,网络支付手段的逐步完善,越来越多的人逐渐习惯于网上购物,习惯于鼠标点击下订单,送货上门的快捷便利的购物方式。
传统的购物观念正在被网上购物这种快捷的方式所冲击。
现在的网上超市,具有强大的功能,在线展示商品,在线购买商品,在线交易,在线网店的管理等,借助网络的跨地域特点,更是将传统的商店的地域限制加以突破,全国各地的顾客都可以通过网络在同一个网上超市购买商品,从而大大增加了客户的数量。
网上超市在线网站致力于提供商品展示及订购为核心的网上购物服务宣传自己商店的产品并将自己的产品展示给客户,让客户通过网站便能对自由的选择的购买商品。
该网站是通过用户登录浏览商品、购买、确定购买、查看订单、实现用户模块功能。
其中订单的生成,网站后台管理系统,团购系统管理员来管理商品、订单、用户来实现。
1.2开发运行环境
1.2.1软件需求
操作系统:
WindowsXP
数据库公交:
SQLServer2005
开发工具:
MicrosoftVisualStudio2008
1.2.2开发工具的选择
本系统的开发主要是用MicrosoftVisualStudio2008的开发环境,利用SQLServer2005进行数据库的设计。
下面对他们分别进行简单的介绍:
1.MicrosoftVisualc#/ASP.NET介绍:
VisualStudio2008是微软公司推出的开发环境。
是目前挺流行的Windows平台应用程序开发环境。
目前已经开发到10.0版本,也就是VisualStudio2010。
VisualStudio2008可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
VisualStudio2008版本特点:
VisualStudio2008在三个方面为开发人员提供了关键改进:
快速的应用程序开发
高效的团队协作
突破性的用户体验
VisualStudio2008提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。
VisualStudio2008包括各种增强功能,例如可视化设计器(使用.NETFramework3.5加速开发)、对Web开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。
VisualStudio2008为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持AJAX的Web应用程序。
开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的Web应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问ASP.NET应用程序服务和Microsoft平台。
2.SQLServer2005介绍:
SQLServer是一个关系数据库管理系统。
它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。
在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。
Sybase则较专注于SQLServer在UNIX操作系统上的应SQLServer安装界面用。
第二章功能需求
2.1功能模块划分
网上超市共分两个部分,一是前台管理部分,包括:
客户在线注册、浏览商品、购买商品、提交订单等操作;二是后台管理部分,包括:
商品的添加、查询、修改和删除,订单的管理、用户的管理、商品类别的管理等。
2.2功能模块描述
2.2.1前台功能
1.注册功能:
客户首先要注册为该商店的用户。
注册时要填写顾客的登录用户名,真实姓名,登录密码,详细家庭住址等信息即可。
注册后,用户可修改自己的信息或者对信息的补充。
2.选择商品功能:
顾客浏览网上商店的商品,将自己需求的产品放入到购物车中,可连续添加商品。
3.购物车的管理:
顾客选择完商品后可进入购物车也面,查看自己要购买的商品,可修改某一商品数量、取消购买某商品和情况整个购物车。
4.订单的生成:
当顾客选择完商品后,确定购买商品,根据客户选择的商品,产生订单,把商品的部分信息如数量,购买总价保存起来。
在并附上订单的详细信息。
2.2.2后台管理功能:
1.管理人员部分:
管理员拥有最高权限,可访问所有订单,订单处理,可浏览、查询、修改订单,可进行界面管理,可浏览、修改客户的一些资料。
2.订单的管理:
管理员根据客户的订单,修改订单的状态,是否已发货。
以及顾客收到商品后更改顾客的付款状态。
3.管理商品功能:
(1)添加新商品:
管理员可以通过这个功能向本商店录入新的商品,添加的信息包括:
商品的名称、商品册图片、商品的ISBN编号、商品的类别、商品的生产厂商、商品的单价、商品的生产日期、商品的有效截止日期(这里的有效截止日期可以为空,因为对于某些商品来说,如电子商品,就没有有效截止日期)、商品的卖出数量(这里商品的卖出数量是在顾客确定购买商品后,订单产生过后自动修改的)、还有商品的库存量。
(2)修改商品的信息:
管理员可以进行对商品信息的修改,如商品名称,库存量等。
(3)删除商品
管理员可以对过期的商品进行删除。
(4)商品类别的管理:
管理员可添加、修改、删除类别信息。
第三章业务流程设计
3.1系统功能模块
图3-1系统功能图
3.2网站前台功能图
图3-2前台功能图
3.3后台管理功能图
图3-3后台功能图
第四章逻辑设计
4.1数据库表的设计
1.顾客表(Customers)
顾客表是指网站的客户,主要在前台进行活动。
主要含有如下字段:
顾客的编号、顾客登录系统时的登录名(这里申请的用户登录名不能重复)、顾客的真实姓名、顾客的登录密码、顾客的详细的家庭住址、顾客的出生日期、顾客的性别、顾客的照片以及客户的权限所对应的权限编号。
序号
列名
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
CusID
Int
0
是
否
2
LoginName
varchar
50
0
是
3
CusName
varchar
50
0
是
4
CusPwd
varchar
20
0
是
5
Address
varchar
50
0
是
6
Birthday
Datetime
0
是
7
Gender
Char
2
0
是
8
Photo
Nvarchar
50
0
是
9
ReghtID
int
0
是
表4-1顾客表
2.一级商品类别表(FirstCategry)
一级商品类别表包括以下字段:
有商品的一级类别的类别编号、一级商品类别的类别名称。
序号
字段
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
firstCateID
Int
0
是
否
2
firstName
Varchar
30
0
是
表4-2一级商品类别表
3.二级商品类别表(SendCategry)
二级商品类别表包括以下字段:
有商品的二级类别编号、有商品的二级类别名称、以及二级类别所对应的一级类别的编号。
序号
字段
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
sendCateID
Int
0
是
否
2
SendName
Varchar
30
0
是
3
ParentId
Int
是
表4-3二级商品类别表
4.商品表(Goods)
商品表包括以下字段:
有商品的编号、商品的名称、商品册图片、商品的ISBN编号、商品的类别编号(这里指的的二级类别的类别编号)、商品的生产厂商、商品的单价、商品的生产日期、商品的有效截止日期(这里的有效截止日期可以为空,因为对于某些商品来说,如电子商品,就没有有效截止日期)、商品的卖出数量(这里商品的卖出数量是在顾客确定购买商品后,订单产生过后自动修改的)、还有商品的库存量。
序号
字段
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
GoodsID
Int
0
是
否
2
GoodsName
Varchar
50
0
是
3
Picture
Nvarchar
50
0
是
4
ISBN
Varchar
50
0
是
5
CategoryID
Int
0
是
6
Company
Varchar
50
0
是
7
UnitPrice
Float
0
是
8
PublishDate
Datetime
0
是
9
EndDate
Varchar
50
0
是
10
SellNum
Int
0
是
11
StoreNum
int
0
是
12
MemberPrice
float
0
是
13
IsHot
Int
0
是
14
DisCount
int
0
是
15
Description
text
0
是
表4-4商品表
5.管理员表(Managers)
管理员表是指登录系统的后台的人员,主要包括以下字段:
管理员的编号、管理员的真实姓名(可允许为空)、管理员的登录密码、管理员的照片等。
序号
字段
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
ManagersID
Int
0
是
否
2
ManaName
Varchar
20
0
是
3
ManaPwd
Varchar
50
0
是
4
RightID
Int
0
是
5
Photo
Varchar
50
0
是
6
LoginName
varchar
20
0
是
表4-5管理员表
6.订单表(Orders)
订单表主要包括以下字段:
订单编号、产生订单的日期、购买客户编号、购买的商品的总价格、购买的商品的总数量、标识该订单是否已经付过款以及店家是否发货的条件。
序号
字段
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
OrdersID
Int
0
是
否
2
PublishDate
Datetime
0
否
3
UserID
Int
0
否
4
TotalPrice
Float
0
否
5
TotalCount
Int
0
否
6
IsPay
Int
0
是
7
IsSend
int
0
是
表4-6订单表
7.订单详细表(OrderDetails)
订单详细表是对订单表的进一步补充,主要包括以下字段:
有详细订单的编号、所对应的订单编号、购买的商品的编号、购买某种商品的数量、商品的单价。
序号
字段
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
OrderDetailsID
Int
0
是
否
2
OrderID
Int
0
否
3
GoodsID
Int
0
否
4
Quantity
Int
0
否
5
UnitPrice
float
0
否
表4-7订单详细表
8.权限表(Right)
权限表主要包括以下字段:
有权限的编号、权限名称。
序号
字段
数据类型
长度
小数位
标识
主键
允许空
默认值
说明
1
RightID
Int
0
是
否
2
RightName
varchar
50
0
是
表4-8权限表
第五章系统实现
5.1首页(登录、注册、浏览商品)
图5-1系统首页图
功能介绍:
本系统的首页显示了本网店的一些商品的信息,用户可以在首页点击某商品显示商品的详细信息。
首页商品显示的代码,在本页面主要采用了数据源SqlDataSource和gridView:
数据源SqlDataSource的源代码如下:
SqlDataSourceID="HotGoodsData"runat="server"ConnectionString="DataSource=.;InitialCatalog=ShoppingManagerSystem;UserID=sa;Password=123456"
ProviderName="System.Data.SqlClient"SelectCommand="selecttop12*fromGoodsorderbySellNumdesc">
SqlDataSource>
5.2根据条件查询符合条件的相应商品
图5-2根据条件查找商品
图5-3查找到的商品
如图5-2所示,根据首页客户选择的商品类别以及在‘关键字’的文本框中输入的值,来搜索符合相应条件的商品列表(如图5-3所示),实现代码如下:
首先是在Default.aspx首页中要选择相应类别的“类别编号”和输入“文本框”中的信息,然后再跳转到SearchByKey.aspx也面;实现该功能的代码如下(在母版也得ImgButton按钮的事件):
protectedvoidImageButtonSearch_Click(objectsender,ImageClickEventArgse)
{
stringkey=txtSearchKey.Text.Trim();
intfirId=Convert.ToInt32(ddlFirCategry.SelectedValue);
Response.Redirect("SearchByKey.aspx?
firId="+firId+"&key="+key);
}
运行上述代码后,会跳转到SearchByKey.aspx页面,该页面要接受相应传过来的数据,并进行数据绑定,实现代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
intfirId=Convert.ToInt32(Request.QueryString["firId"]);
stringkeys=Request.QueryString["key"].ToString();
BindByKeys(firId,keys);
}
}
stringstrCon=ConfigurationManager.ConnectionStrings["MyCon"].ToString();
SqlConnectioncn=null;
SqlDataAdapterda=null;
DataSetds=newDataSet();
privatevoidBindByKeys(intfirId,stringkeys)
{
stringsql="selectdistinctGoods.*FROMGoods,SendCategry,FirstCategryWHEREGoods.CategoryID=SendCategry.SendCateIDandSendCategry.ParentId='"+firId+"'andGoods.GoodsNamelike'%"+keys+"%'";
cn=newSqlConnection(strCon);
cn.Open();
da=newSqlDataAdapter(sql,cn);
da.Fill(ds);
SearchByKeyWords.DataSource=ds.Tables[0];
SearchByKeyWords.DataBind();
}
5.3购物车的实现
图5-4选中某商品,查看某商品信息
图5-5某商品(图5-4)详细信息
图5-6购物车图
功能介绍:
当用户登录到系统的首页后,用户可浏览相应商品的信息,点击商品(如图5-4所示)查看商品的详细信息,即进入图5-5所示的见面,当用户确定购买商品后把商品添加到购物车中,然后可对购物车中的商品数量进行修改,也可以对已加入到“购物车”中,最后又不想购买的商品进行删除。
首先是把商品添加的购物车中代码的实现,要添加到购物车是,要对用户是否登录进行判断,若登录过后就进入购物车界面看到已选择的商品(如图5-6所示),否则,进入用户登录界面,实现代码如下:
5.3.1添加商品到购物车的实现
protectedvoidimgBtnBuy_Click(objectsender,ImageClickEventArgse)
{
if(Session["CurrentUser"]!
=null)
{
if(Session["Cart"]==null)
{
this.CreateCart();
}
else
{
DataTablecart=Session["Cart"]asDataTable;
if(this.ExistGoods(cart))
{
this.AddGoodsToSession(cart);
}
}
Response.Redirect("Cart.aspx");
}
else
{
Response.Redirect("UserLogin.aspx");
}
}
///新建购物车表
privatevoidCreateCart()
{
DataTablecart=newDataTable();
cart.Columns.Add("GoodsID");
cart.Columns.Add("GoodsName");
cart.Columns.Add("Quantity");
cart.Columns.Add("UnitPrice");
cart.Columns.Add("Picture");
this.AddGoodsToSession(cart);
}
///判断商品是否已经存在购物车中,若有某商品,数量加1
privateboolExistGoods(DataTablecart)
{
foreach(DataRowdrincart.Rows)
{
if(dr["GoodsName"].ToString().Equals(this.labGoodsName.Text.Trim()))
{
dr["Quantity"]=Convert.ToInt32(dr["Quantity"])+1;
Session["Cart"]=cart;
Response.Redirect("Cart.aspx");
}
}
returntrue;
}
///添加新商品
publicvoidAddGoodsToSession(DataTablecart)
{
DataRowdr=cart.NewRow();
dr["GoodsID"]=ViewState["GoodsID"].ToString();
dr["GoodsName"]=this.labGoodsName.Text.Trim();
dr["Quantity"]="1";
dr["UnitPrice"]=this.labPrice.Text.Substring(0,this.labPrice.Text.Length-1);;
dr["Picture"]=this.imgPhoto.ImageUrl;
cart.Rows.Add(dr);
Session["Cart"]=cart;
}
5.3.2对购物车商品的修改的实现
protectedvoidgvCart_RowCommand(objectsender,GridViewCommandEventArgse)
{
if(e.CommandName=="Add")
{
intgoodsId=Convert.ToInt32(e.CommandArgument);
foreach(DataRowdrin((DataTable)Session["Cart"]).Rows)
{
if(Convert.ToInt32(dr["GoodsID"])==goodsId)
dr["Quantity"]=Convert.ToInt32(dr["Quantity"])+1;
}
BindCart();
}
if(e.CommandName=="Minus")
{
intgoodsId=Convert.ToInt32(e.CommandArgument);
foreach(DataRowdrin((DataTabl