获取项目源文件,学习交流联系Q:1415736481,可指导毕设,课设
伴随着计算机技术在各行各业日益普及和深入的应用,Internet的迅速崛起,网络的概念早已深入人心。网络在各行各业发展战略中占据了重要的位置,成为了商家不可分割的一部分。
商家对商品的宣传已不只是局限于电视与报纸,网络已成为商家展示商品的另一个平台。通过网络可以实现新闻发布、网上购物、信息查询等功能,给顾客带来极大便利。电子商务在改变我们原有经营方式和经营理念的同时,也为商家带来了极大利益。因此,对于商家来说,拥有一个属于自己的网站是至关重要的。
本购物网站实现了网上购物的基本功能。包括:新闻发布、商品搜索、商品浏览、商品订购、查看订单、订单维护、会员管理(注册、修改)、访客留言、站内投票、客户服务…等功能模块。
系统使用ASP.NET(C#语言)+SQL Server 2005及其它辅助软件(PhotoShop,Flash,Dreamweaver)进行开发。
关键词:ASP.NET C#语言 SQL Server 2005
第一章 引 言
1.1本系统研究的意义
随着市场经济和计算机软、硬件技术的迅速发展,网络技术的推广普及,Internet已成为人们生活、工作中不可或缺的一部分。网上购物也将成为市场主流,本购物系统为广大购物爱好者提供一个不用出门便可轻松购物的平台,即省时又方便。
客户可查看商城中的所有商品信息,可很好的进行价格对比,挑选合适自己的商品,经网上订购、付款便可购得各类物美价廉的商品。
网上购物平台的诞生给人们带来购物的便利,也给商家带来了前所未有的效益。购物网站同时也为商家提高了知名度,达到推销效果,也能把销售区城扩大,有一举多得的功效。
网络销售已成为了商家提高经济效益的一种途径。本系统即能为客户提供便利也能为商家提高效益,相信购物网站在商业界肯定占据重要地位。
1.2设计《购物系统》的可行性
网上购物已成为商业主流,购物系统给商家带来效益的同时也给客户带来便利。本系统主要实现普遍的购物功能(商品展示、商品挑选、商品订购等),系统页面设计充分地满足使用者的需求,达到一般购物系统的水平。
第二章 系统分析
2.1需求分析
《购物系统》主要为购物者提供一个方便购物的平台,同时也能给商家带来经济效益。通过充分的调查研究,结合一般的购物系统功能,本系统的功能需求如下:
商品管理: 客户可挑选网站内所有商品并订购,管理员对商品进行添加、维护;
会员管理: 会员可以注册并对自己的注册信息进行修改,管理员有提升权限;
新闻管理: 新闻显示,新闻发布,新闻维护;
商品订购: 包括商品挑选,填写货单,核对订单,结账付款等功能;
订单管理: 订单维护,修改订单,删除订单;
留言管理: 留言维护、删除、回复;
数据处理需求:凡是与客户交互的信息都要经过检测分析,合法的数据才可存入数据库,不合法的数据拒绝操作。对重要数据可进行备份,防止重要数据丢失。
2.2数据流程分析
《购物系统》主要实现购物功能,本购物系统包括商品展示,商品分类,商品检索,商品订购,订单生成,结账等功能。本网站用简洁明了的方式展示商品,有销售分类显示、性质分类显示功能,顾客挑选商品放入购物车,登陆后才能进入结账系统,核对订单填写配送信息后便可完成购物操作。
流程图
打开网站 |
商品展示 |
选择商品 |
放入购物车 |
结账 |
会员登陆 |
是否登陆
|
是 |
否 |
填写配送信息 |
选择送货方式 |
选择付款方式 |
核对信息 |
完成订单 |
继续购物
|
2.3开发环境
计算机操作系统:Windows XP,
开发工具:Microsoft Visual Studio 2005
开发语言:C#语言
数据库管理系统: SQL Server 2005
辅助软件:Flash、Dreamweaver、PhotoShop
第三章 系统数据库结构
3.1数据库分析设计
购物系统数据量庞大,数据处理复杂,数据表间要进行多个关联。本购物系统共设计15个数据表,表表间建立相应外键关系,以实现复杂的系统需求,完成商品罗列显示、商品订购、付款配送等功能。
3.2数据库表结构
为了实现购物系统物应有的功能,结合本系统对有关数据的存储的需要,现将本系统数据库设计成15个数据库表:
(1) 调查表 存储用户对网站服务要求的反馈信息
(2) 订单表 存储用户订单信息,记录订购商品各种信息
(3) 付款类型表 存储用户支付款类型。
(4) 留言表 存储浏览者的心声之言反馈给网站管理员
(5) 商品表 存储商品信息以显示给浏览者浏览
(6) 商品类别表 存储商品类别信息
(7) 商品评论表 存储用户对商品的评价信息
(8) 商品收藏表 存储用户的商品收藏信息
(9) 商品子类别表 存储商品子类别信息
(10) 送货信息表 存储送货信息
(11) 销售类别表 存储商品的销售类别信息
(12) 新闻表 存储网站新闻信息
(13) 新闻类别表 存储新闻的类别信息,以便分类显示新闻
(14) 用户表 存储网站会员用户信息
(15) 用户类别表 存储用户类别信息,以便分配使用网站的权限
3.2.1调查表
列名 |
数据类型 |
是否为空 |
说明 |
调查编号 |
int |
NOT NULL |
主键、自增变量1 |
调查内容 |
varchar(100) |
NULL |
|
票数 |
int |
NULL |
|
票率 |
varchar(20) |
NULL |
|
3.2.2订单表
列名 |
数据类型 |
是否为空 |
说明 |
订单编号 |
int |
NOT NULL |
主键、自增变量1 |
商品编号 |
int |
NULL |
|
货单编号 |
int |
NULL |
与送货信息表外键关联 |
商品名称 |
varchar(100) |
NULL |
|
商品单价 |
decimal(18,2) |
NULL |
|
订购数量 |
int |
NULL |
|
用户名 |
varchar(20) |
NULL |
|
订购日期 |
datetime |
NULL |
|
处理标志 |
bit |
NULL |
|
3.2.3付款类型表
列名 |
数据类型 |
是否为空 |
说明 |
付款编号 |
int |
NOT NULL |
主键、自增变量1 |
付款类型 |
varchar(20) |
NULL |
|
类别权重 |
int |
NULL |
用于自定义排序 |
3.2.4留言表
列名 |
数据类型 |
是否为空 |
说明 |
留言编号 |
int |
NOT NULL |
主键、自增变量1 |
留言内容 |
varchar(100) |
NULL |
|
留言日期 |
datetime |
NULL |
|
留言用户 |
varchar(20) |
NULL |
|
回复用户 |
varchar(20) |
NULL |
|
回复内容 |
text |
NULL |
|
回复日期 |
datetime |
NULL |
|
3.2.5商品表
列名 |
数据类型 |
是否为空 |
说明 |
商品编号 |
int |
NOT NULL |
主键、自增变量1 |
商品名称 |
varchar(100) |
NULL |
|
市场价 |
decimal(18,2) |
NULL |
|
会员价 |
decimal(18,2) |
NULL |
|
商品数量 |
int |
NULL |
|
上架日期 |
datetime |
NULL |
|
商品介绍 |
text |
NULL |
|
商品图片 |
varchar(50) |
NULL |
|
商品类别 |
int |
NULL |
与商品类别表外键关联 |
商品子类别 |
int |
NULL |
与商品子类别表外键关联 |
销售类别 |
int |
NULL |
与销售类别表外键关联 |
查看次数 |
int |
NULL |
|
销售数量 |
int |
NULL |
|
3.2.6商品类别表
列名 |
数据类型 |
是否为空 |
说明 |
商品类别编号 |
int |
NOT NULL |
主键、自增变量1 |
商品类别 |
varchar(50) |
NULL |
|
类别权重 |
int |
NULL |
用于自定义排序 |
3.2.7商品评论表
列名 |
数据类型 |
是否为空 |
说明 |
评论编号 |
int |
NOT NULL |
主键、自增变量1 |
评论内容 |
text |
NULL |
|
评论用户 |
varchar(20) |
NULL |
|
评论时间 |
datetime |
NULL |
|
商品编号 |
int |
NULL |
与商品表外键关联 |
3.2.8商品收藏表
列名 |
数据类型 |
是否为空 |
说明 |
收藏编号 |
int |
NOT NULL |
主键、自增变量1 |
商品编号 |
int |
NULL |
与商品表外键关联 |
收藏用户 |
varchar(20) |
NULL |
|
收藏日期 |
datetime |
NULL |
|
失效日期 |
datetime |
NULL |
|
3.2.9商品子类别表
列名 |
数据类型 |
是否为空 |
说明 |
商品子类别编号 |
int |
NOT NULL |
主键、自增变量1 |
商品子类别 |
varchar(50) |
NULL |
与商品类别表外键关联 |
商品类别编号 |
int |
NULL |
|
类别权重 |
int |
NULL |
用于自定义排序 |
3.2.10送货信息表
列名 |
数据类型 |
是否为空 |
说明 |
货单编号 |
int |
NOT NULL |
主键、自增变量1 |
支付方式 |
varchar(20) |
NULL |
|
运送方式 |
varchar(20) |
NULL |
|
用户名 |
varchar(20) |
NULL |
|
真实姓名 |
varchar(20) |
NULL |
|
联系电话 |
varchar(20) |
NULL |
|
[E-Mail] |
varchar(20) |
NULL |
|
邮政编码 |
varchar(10) |
NULL |
|
收货地址 |
varchar(100) |
NULL |
|
下单日期 |
datetime |
NULL |
|
3.2.11销售类别表
列名 |
数据类型 |
是否为空 |
说明 |
销售类别编号 |
int |
NOT NULL |
主键、自增变量1 |
销售类别 |
varchar(20) |
NULL |
|
类别权重 |
int |
NULL |
用于自定义排序 |
3.2.12新闻表
列名 |
数据类型 |
是否为空 |
说明 |
新闻编号 |
int |
NOT NULL |
主键、自增变量1 |
新闻标题 |
varchar(100) |
NULL |
|
新闻内容 |
text |
NULL |
|
新闻类别 |
int |
NULL |
与新闻类别表外键关联 |
添加时间 |
datetime |
NULL |
|
点击率 |
int |
NULL |
|
3.2.13新闻类别表
列名 |
数据类型 |
是否为空 |
说明 |
类别编号 |
int |
NOT NULL |
主键、自增变量1 |
类别名称 |
varchar(20) |
NULL |
|
类别权重 |
int |
NULL |
用于自定义排序 |
3.2.14用户表
列名 |
数据类型 |
是否为空 |
说明 |
用户编号 |
int |
NOT NULL |
主键、自增变量1 |
用户名 |
varchar(100) |
NOT NULL |
|
真实姓名 |
varchar(20) |
NULL |
|
密码 |
varchar(20) |
NOT NULL |
|
用户地址 |
varchar(100) |
NULL |
|
电话 |
varchar(20) |
NULL |
|
邮件地址 |
varchar(20) |
NULL |
|
邮政编号 |
varchar(20) |
NULL |
|
注册日期 |
datetime |
NULL |
|
身份标志 |
int |
NULL |
|
3.2.15用户类别表
列名 |
数据类型 |
是否为空 |
说明 |
类别编号 |
int |
NOT NULL |
主键、自增变量1 |
类别名称 |
varchar(20) |
NULL |
|
类别权重 |
int |
NULL |
用于自定义排序 |
3.3数据表关系图
第四章 系统功能模块
4.1系统各功能模块划分
《在线购物系统》属综合性系统,数据量大,数据间的处理复杂。为了更好的实现购物系统所需的功能,将本系统划分为6个系统模块:
·商品管理系统: 客户可挑选网站内所有商品并订购,
管理员对商品进行添加、维护;
·会员管理系统: 会员可对自己的账户信息进行修改,
管理员有提升权限(把普通会员提升为管理员);
·新闻管理系统: 新闻显示,新闻发布,新闻维护;
·商品订购系统: 包括商品挑选,填写货单,核对订单,结账付款等功能;
·订单管理系统: 订单维护,修改订单,删除订单;
·留言管理系统: 留言维护、删除、回复;
4.2系统功能结构图
商品展示 |
商品分类 |
商品详情 |
商品评论 |
同类商品展示 |
商城新闻 |
商城动态 |
新闻分类 |
详细新闻 |
会员系统 |
会员注册 |
会员登陆 |
信息修改 |
购物车 |
商品选购 |
填写订单 |
生成订单 |
在线客服 |
电话在线 |
QQ在线 |
Email联系 |
网内投票 |
后台管理 |
商品管理 |
订单管理 |
新闻管理 |
用户管理 |
留言管理 |
基础维护 |
商品添加 |
商品维护 |
新闻发布 |
新闻维护 |
添加用户 |
用户维护 |
评论管理 |
查看留言 |
留言维护 |
订单维护 |
新闻类别 |
商品类别 |
商品子类别 |
付款类别 |
用户类别 |
评论维护 |
调查顶目 |
前台功能 |
访客留言 |
票率展示 |
留言信息 |
第五章 系统功能实现
根据软件开发的基本流程,在完成了系统需求、系统分析、系统设计后,就进入系统实现阶段了,本系统使用三层架构进行开发,以下是整个系统的功能实现,包括前台的页面展示和后台的代码剖析。
5.1数据访问层
public class DB
{
private SqlConnection con;
public DB()
{
con = new SqlConnection();
con.ConnectionString = ConfigurationManager.AppSettings["conStr"].ToString();
}
public void open()
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
}
public void close()
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
public DataTable DT(string sqlStr)
{
SqlDataAdapter sda = new SqlDataAdapter(sqlStr, con);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[0];
}
public DataSet DS(string sqlStr)
{
SqlDataAdapter sda = new SqlDataAdapter(sqlStr, con);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds; }
public bool ExeSql(string sqlStr)
{
open();
SqlCommand cmd = new SqlCommand(sqlStr, con);
int i = cmd.ExecuteNonQuery();
close();
if (i > 0)
{
return true;
}
return false;
}
public bool ExeCount(string sqlStr)
{
open();
SqlCommand cmd = new SqlCommand(sqlStr, con);
int i = Convert.ToInt32(cmd.ExecuteScalar());
close();
if (i > 0)
{
return true;
}
return false;
}
public string FirstStr(string sqlStr)
{
open();
SqlCommand cmd = new SqlCommand(sqlStr, con);
string Str = Convert.ToString(cmd.ExecuteScalar());
close();
return Str;
}
public DataTable DT(string SqlStr, SqlParameter[] prm, CommandType type)
{
SqlCommand cmd = new SqlCommand(SqlStr, con);
cmd.CommandType = type;
cmd.Parameters.AddRange(prm);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[0];}
5.2前台功能
5.2.1登录模块
系统将会根据登录用户的类型进入不同的操作页面。(普通会员登陆进入购物网首页;管理员登陆进入网站后台管理)
会员登陆进入页面:会员登陆后就可以购物,还可挑选商品进行收藏
5.2.2商品分类
5.2.3商品结账
5.2.4会员订单
5.3后台管理
5.3.1商品添加
实现代码:
protected void btnAdd_Click(object sender, EventArgs e)
{
string FileName = FUImg.PostedFile.FileName;//上传文件路径
string subFileName = FileName.Substring(FileName.LastIndexOf(".") + 1);//后缀名
string path = Server.MapPath("~\\images\\products");
string ImgName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + "." + subFileName;
string FilePath = path + "\\" + ImgName;
if (FUImg.HasFile)
{
if (subFileName.ToUpper() == "JPG" || subFileName.ToUpper() == "BMP" || subFileName.ToUpper() == "GIF")
{
FUImg.PostedFile.SaveAs(FilePath);
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "");
return ;
}
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "");
return ;
}
string SqlStr = "insert into 商品表(商品名称,市场价,会员价,商品数量,上架日期,商品介绍,商品图片,商品类别,商品子类别,销售类别) values('" + txtProName.Text + "','" + txtMarPrice.Text + "','" + txtVipPrice.Text + "','" + txtProNum.Text + "','" + DateTime.Now.ToString() + "','" + txtContext.Text + "','" + ImgName + "','" + DLProType.SelectedValue.ToString() + "','"+DLProSubType .SelectedValue .ToString () + "','" + DLType.SelectedValue.ToString() + "')";
if (n.ExeSql(SqlStr))
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "");
clear();
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "");
}
}
5.3.2商品维护
实现代码:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string ProID = GridView1.DataKeys[e.RowIndex].Value.ToString();
string SqlStr = "delete from 商品表 where 商品编号='"+ProID +"'";
if (n.ExeSql(SqlStr))
{
string ImgName = ((Label)GridView1.Rows[e.RowIndex].FindControl ("LBImg")).Text.Trim();
string path = Server.MapPath("~\\images\\products\\")+ImgName;
if (File.Exists(path))
{
File.Delete(path);
}
GridView1.EditIndex = -1;
databind();
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "");
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
databind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string ProductID, ProName, MarPrice, VipPrice, ProNum, DateTime, Context, ImgName;
ProductID = GridView1.DataKeys[e.RowIndex].Value.ToString();
ProName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtProName")).Text.Trim();
MarPrice = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls [0]).Text.Trim();
VipPrice = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.Trim();
ProNum = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.Trim();
DateTime = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.Trim();
Context = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtProContext")).Text.Trim();
ImgName = ((TextBox)GridView1.Rows[e.RowIndex].FindControl ("txtImg")).Text.Trim();
string SqlStr = "update 商品表 set 商品名称='" + ProName + "',市场价='" + MarPrice + "',会员价='" + VipPrice + "',商品数量='" + ProNum + "',上架日期='" + DateTime + "',商品介绍='" + Context + "',商品图片='" + ImgName + "' where 商品编号='" + ProductID + "'";
bool flag = n.ExeSql(SqlStr);
if (flag == false)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "");
}
GridView1.EditIndex = -1;
databind();
}
5.3.3订单维护
实现代码:
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "Select")
{
DataList1.SelectedIndex = e.Item.ItemIndex;
databind();
GridView GV = (GridView)DataList1.Items[e.Item.ItemIndex].FindControl("GV");
string SqlStr = "select * from 订单表 where 货单编号='" + DataList1.DataKeys[e.Item.ItemIndex].ToString() + "'";
GV.DataSource = n.DT(SqlStr);
GV.DataBind();
}
if (e.CommandName == "Del")
{
string ID = DataList1.DataKeys[e.Item.ItemIndex].ToString();
string SqlStr;
SqlStr = "delete from 送货信息表 where 货单编号='" + ID + "'";
n.ExeSql(SqlStr);
SqlStr = "delete from 订单表 where 货单编号='" + ID + "'";
n.ExeSql(SqlStr);
databind();
}
}
5.3.4留言管理
实现代码:
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
if (Session["admin"] != null)
{
TextBox T = ((TextBox)DataList1.Items[e.Item.ItemIndex].FindControl("txtEdit"));
string SqlStr = "update 留言表 set 回复内容='" + T.Text + "',回复日期='" + DateTime.Now + "',回复用户='" + Session["admin"].ToString() + "' where 留言编号='" + DataList1.DataKeys[e.Item.ItemIndex].ToString() + "'";
n.ExeSql(SqlStr);
DataList1.EditItemIndex = -1;
databind();
}
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "ReSent")
{
DataList1.EditItemIndex = e.Item.ItemIndex;
databind();
}
else if (e.CommandName == "Del")
{
string SqlStr = "delete from 留言表 where 留言编号='" + DataList1.DataKeys[e.Item.ItemIndex].ToString() + "'";
n.ExeSql(SqlStr);
databind();
}
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (Session["admin"] == null)
{
Button btnReSent = (Button)e.Item.FindControl("btnReSent");
Button btnDel = (Button)e.Item.FindControl("btnDel");
btnReSent.Visible = false;
btnDel.Visible = false;
}
}