一种多商家网络商店的设计与实现
摘 要
21世纪是网络的世纪,电子商务随之将成为主流商业模式,多商家网络商店系统就是一个C2C型的电子商务系统。本文详细论述了采用ASP.NET 2005 和 SQL Server 2000等技术实现的一个多商家网络商店的过程。论文首先阐述了本设计题目的选题意义、背景,和网站的开发平台;其次根据网站需求对系统的数据库和功能模块做了详细设计,并在此基础上实现了用户管理模块、权限管理模块、购物订单模块,商家管理模块、商品管理模块、留言板和公告管理模块等功能。最后通过对网站进行的全面测试展现了网站界面简单、美观,网站功能丰富、操作方便等特点,完全符合多商家网络商店的需求,能够为用户网上购物提供一个很好的操作平台。
关键词:电子商务;多商家;网络商店;网上购物;SQL Server 2000;C#
T he Design and Implementation of a multi-merchant network shop
Abstract
The 21st century is the century of network, e-commerce will subsequently become the mainstream business model and multi-merchant network shop is a C2C e-commerce system. This article shows how to build a multi-merchant network shop by ASP.NET 2005 and SQL Server 2000 and so on. First, this thesis introduces the significance and background of the selected topic, and web development platform. Second, it has made the detailed design to the system database and the function modules based on the demand, and on this basis it carries out user management module, right management module, order list module, business management module, goods management module, message leaving board and news management module and so on. Finally, though completely test of website, it is found that interface is simple and beautiful, function is rich, and operation is easy, fully corresponding to the demand of network shop. It provides a wonderful operating platform for on-line shopping.
Key words: electronic commerce; multi-merchant network shop; on-line shopping; SQL Server 2000; C#
目 录
论文总页数:26页
1 引言
随着Internet的发展,电子商务将成为21世纪主流的商业模式。而作为时下最为热点的购物形式,网上购物已经逐渐被越来越多的人所接受和认可,网上购物使得消费者得以在足不出户的同时货比千万家,同时网站商品拥有陈列规模大、种类全、快捷、价格便宜等优势。互联网的普及,网络技术的发展为网上购物提供了极大的便利,作为交易平台的网络商店更呈现出广阔的前景。
在这一市场需求的推动下,企业会对商品零售的方式进行创新,而多商家网络商店给创新提供了重要支撑与平台。它通过人与电子通信方式的结合,依靠计算机网络,以通讯技术为基础,实现商品的网上交易。网站以VS.net 2005作为开发平台,使用C#语言设计操作控件和编写操作程序,完成对数据的输入、修改、存储等处理,采用SQL Server 2000数据库来存储数据。
想要建立一个网上商店首先要了解电子商务的概念,并对其现状和未来有进一步的了解。其次要掌握关于相关技术,并做好相关的需求分析,才能真正做好一个电子商务网站。
2 网站背景及意义
2.1 电子商务概要
2.1.1 电子商务简述
所谓电子商务,是指各种具有商业活动能力的实体(如生产企业、商贸企业、金融机构、政府机构、个人消费者等)利用网络和先进的数字化传媒技术进行的各项商业贸易活动。其中特别要强调的特点,一是其商业背景,而是网络化和数字化。简而言之,带脑子商务就是通过电子网络渠道达成的商务活动。
电子商务是计算机网络的第二次革命,它通过电子手段建立新的经济秩序,不仅涉及电子技术和商业交易本身,而且涉及诸如金融、税务、教育等社会其他层面。对电子商务的研究始于20世纪70年代末,而其实施则要更晚些。实施又分为两步,其中电子数据交换(Electronic Data Interchange,EDI)始于20世纪80年代中期,Internet上的电子商务始于20世纪90年代初期。
目前电子商务按照经济活动的类别大致可分为三大类别:
企业组织 - 企业组织(Business - Business,B2B)型,根据统计,目前电子商务活动中主要的收入属于B2B型商务活动,这是由于企业组织的信息化程度和技术水平比个体消费者明显要高。如:阿里巴巴。
企业组织 - 消费者(Business - Consumer,B2C)型,B2C则是我们最熟悉的,它直接面向终端的大众消费者。如:当当、卓越。
消费者 - 消费者(Consumer - Consumer,C2C)型,近年来C2C电子商务在世界范围内一直以很快的速度成长,在中国也是如此。这种电子商务模式迅速普及,个人开始在网上开店,拍卖自己的商品。如:淘宝、拍拍、易趣。
2.2 选题意义及背景
作为时下最为热点的购物形式,网上购物已经逐渐被越来越多的人所接受和认可,网上购物使得消费者得以在足不出户的同时货比千万家,同时网站商品拥有陈列规模大、种类全、快捷、价格便宜等优势。互联网的普及,网络技术的发展为网上购物提供了极大的便利,作为交易平台的网络商店更呈现出广阔的前景。
网络商店相较传统意义上的商店而言无疑为企业扩大了宣传、扩大了消费群,也增加了商机降低了成本,消费者也能得到更方便更快捷的服务。在这一市场需求的推动下,企业会对商品零售的方式进行创新,而多商家网络商店给创新提供了重要支撑与平台。
3 开发平台介绍
3.1 ASP.NET介绍
ASP.NET不仅仅是Active Server Page (ASP)的下一个版本,而且是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.NET提供许多比现在的Web开发模式强大的的优势。
ASP.NET构架是可以用Microsoft(R)公司最新的产品Visual Studio.NET开发环境进行开发,WYSIWYG(What You See Is What You Get所见即为所得)的编辑。这些仅是ASP.NET强大化软件支持的一小部分。
它的特点是:
1. 强大性和适应性。
2. 简单性和易学性。
3. 高效可管理性。
4. 多处理器环境的可靠性。
5. 自定义性,和可扩展性。
6. 安全性。
ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。
ASP.NET是一个已编译的、基于.NET的环境,把基于通用语言的程序在服务器上运行。将程序在服务器端首次运行时进行编译,比ASP即时解释程序速度上要快很多,而且是可以用任何与.NET兼容的语言创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
3.2 C#介绍
C#是一种面向对象的编程语言,它作为Visual Studio中的一部分推出。C#(发音为“C-Sharp”)既保持了C++中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。C#语言在保持C/C++灵活性的基础上为程序员带来更高效的RAD开发方式。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。
3.3 SQL Server 2000介绍
Microsoft SQL Server 2000是Microsoft公司继SQL Server 6.5和SQL Server 7.0以后,在新千年推出的又一改进的新版关系型数据管理系统。它能使用户快捷地管理数据库和开发应用程序。SQL Server 2000使用了先进的数据库结构,与Windows DNA紧密集成,具有强大的Web功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的Web站点和企业应用提供优良的扩展性和可靠性,使用户能够在Internet领域快速建立服务系统,为占领市场赢得宝贵的时间。同时,SQL Server 2000还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2000在数据库服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复杂的工作量,从而有精力处理更重要的问题,使用系统在商业战略上占得先机。
关系型数据库系统是当前最流行的数据库管理系统。它是一个非常复杂的系统软件,对数据库的所有操作,包括定义、查询、更新和各种运行控制最终都通过它来实现的,因此它是使数据库系统具有数据共享、并发访问、数据独立等特性的根本保证。目前,Microsoft SQL Server 2000是在成熟和强大的关系型数据库中最受欢迎、应用最广泛的一个。
4.1.1 管理员功能分析图
管理员功能分析图如下图4-1所示:
4.1.2 用户功能分析图
![]() |
用户功能分析图如下图4-2所示:
4.2 系统功能分析
1.浏览功能,一般游客或注册用户都可以浏览及查询商品,商店。
2.用户注册及登录功能,用户需注册帐号后才能登录及进行其他相应操作。
3.用户修改资料、购买商品以及查询订单功能。
4.商家添加删除商品、管理商品、查询卖出商品、修改店铺资料及查看买家留言等功能。
5.管理员对用户、商家、商品的管理功能
6.管理员对商品分类的添加、删除功能。
7.管理员发布修改公告及推荐商品。
4.3 系统模块分析
4.3.1 后台管理模块分析
此模块只对系统管理员开放。管理员可以对用户、商家、商品,以及公告推荐商品进行管理。
- 前台管理模块分析
此模块对普通用户及卖家开放。又分为买家模块和买家模块:
- 买家模块。买家可以对注册资料进行修改对订单进行查看。
- 卖家模块。卖家在买家的基础上还可以对商品和商店进行管理,以及对买家下的订单和买家留言进行查看。
5 数据库分析与设计
5.1 数据库分析
本课题开发的数据库包括三个方面:
- 用户数据表:存储注册用户有关数据。包括注册用户及卖家基本信息数据表、用户所属地区数据表。
- 商品数据表:包括商品基本信息数据表、商品分类数据表、商品评论数据表及订单数据表。
- 商店数据表:包括商店基本信息数据表、商店评论数据表和商店留言数据表。
- 公告数据表:存储公告内容等。
5.2 数据库设计
5.2.1 创建数据库
首先在SQL Server 2000的企业管理器中创建一个名为webmarket的数据库。
打开SQL Server 2000企业管理器àMicrosoft SQL ServersàSQL Server组à127.0.0.1(Windows NT)à数据库点右键à新建数据库(取名为webmarket)
数据库webmarket包含以下十三个表:用户表(web_user)、商店表(web_shop)、省级地区表(web_area_class1)、市级地区表(web_area_class2)、商品表(web_goods)、商品一级分类表(web_goods_class1)、商品二级分类表(web_goods_class2)、商品三级分类表(web_goods_class3)、商品评论表(web_goods_comment)、商店评论表(web_shop_comment)、订单表(web_list)、留言表(web_message)、网站公告表(web_notice)。
![]() |
用户表(web_user)用来保存用户的基本信息,表web_user结构如表5-1所示:
列名 |
数据类型(长度) |
中文说明 |
user_id |
int(4) |
用户ID |
user_name |
nvarchar(50) |
用户名 |
user_pwd |
nvarchar(50) |
用户密码 |
user_email |
nvarchar(50) |
用户E-mail |
user_truename |
nvarchar(50) |
用户真实姓名 |
user_idcard |
char(18) |
用户身份证号码 |
user_mobile |
char(20) |
用户手机 |
user_tel |
char(20) |
用户固定电话 |
area_class1 |
nvarchar(50) |
用户所在省 |
area_class2 |
nvarchar(50) |
用户所在市 |
user_address |
nvarchar(100) |
用户详细地址 |
user_postalcode |
char(6) |
用户邮编 |
user_date |
smalldatetime(4) |
用户注册日期 |
shop_audit |
smallint(2) |
商店是否通过审核 |
shop_id |
int(4) |
商店ID |
![]() |
商店表(web_shop)用来保存商店的基本信息,表web_shop结构如表5-2所示:
列名 |
数据类型(长度) |
中文说明 |
shop_id |
int(4) |
商店ID |
shop_class |
nvarchar(50) |
商店分类 |
shop_main |
nvarchar(100) |
商店主营 |
shop_name |
nvarchar(50) |
商店名 |
shop_img |
nvarchar(50) |
商店图片 |
shop_startdate |
smalldatetime |
开店日期 |
shop_notice |
nvarchar(300) |
商店公告 |
shop_hot |
int(4) |
商店受欢迎程度 |
shop_comment |
int(4) |
商店得到评分 |
user_name |
int(4) |
店主登录名 |
shop_goods_number |
int(4) |
商店商品数量 |
![]() |
省级地区表(web_area_class1)用来保存省名,表web_area_class1结构如表5-3所示:
列名 |
数据类型(长度) |
中文说明 |
area_class1_id |
smallint(2) |
省级地区ID |
area_class1 |
nvarchar(50) |
省名 |
市级地区表(web_area_class2)用来保存市名,表web_area_class2结构如表5-4所示:
列名 |
数据类型(长度) |
中文说明 |
area_class2_id |
smallint(2) |
市级地区ID |
area_class2 |
nvarchar(50) |
市名 |
area_class1 |
nvarchar(50) |
省名 |
商品表(web_goods)用来保存商品的基本信息,表web_goods结构如表5-5所示:
列名 |
数据类型(长度) |
中文说明 |
user_name |
nvarchar(50) |
商品所属卖家 |
goods_id |
int(4) |
商品ID |
goods_name |
nvarchar(50) |
商品名 |
goods_img |
nvarchar(50) |
商品图片 |
goods_class3 |
nvarchar(50) |
商品三级分类 |
goods_description |
nvarchar(300) |
商品描述 |
goods_price |
money(8) |
商品价格 |
goods_tranprice |
money(8) |
商品运费 |
goods_hot |
smallint(2) |
商品受关注程度 |
goods_brandtype |
nvarchar(50) |
商品品牌 |
goods_startdate |
smalldatetime(4) |
商品开始时间 |
goods_enddate |
smalldatetime(4) |
商品结束时间 |
goods_date |
smalldatetime(4) |
商品添加时间 |
goods_sellnum |
int(4) |
商品卖出数量 |
goods_audit |
smallint(2) |
商品是否审核 |
goods_vip |
smallint(2) |
商品是否被推荐 |
![]() |
商品一级分类表(web_goods_class1)用来保存商品的一级分类,表web_goods_class1如表5-6所示:
列名 |
数据类型(长度) |
中文说明 |
goods_class1_id |
smallint(2) |
商品一级分类ID |
goods_class1 |
nvarchar(50) |
商品一级分类 |
![]() |
商品二级分类表(web_goods_class2)用来保存商品的二级分类,表web_goods_class2如表5-7所示:
列名 |
数据类型(长度) |
中文说明 |
goods_class2_id |
smallint(2) |
商品二级分类ID |
goods_class2 |
nvarchar(50) |
商品二级分类 |
goods_class1 |
nvarchar(50) |
商品一级分类 |
商品三级分类表(web_goods_class3)用来保存商品的三级分类,表web_goods_class3如表5-8所示:
列名 |
数据类型(长度) |
中文说明 |
goods_class3_id |
smallint(2) |
商品三级分类ID |
goods_class3 |
nvarchar(50) |
商品三级分类 |
goods_class2 |
nvarchar(50) |
商品二级分类 |
商品评论表(web_goods_comment)用来保存其他用户对商品的评论信息,表web_goods_comment如表5-9所示:
列名 |
数据类型(长度) |
中文说明 |
comment_id |
int(4) |
评论ID |
comment_user |
nvarchar(50) |
评论的用户 |
comment_content |
nvarchar(200) |
评论内容 |
goods_id |
int(4) |
商品ID |
comment_com |
int(4) |
商品评分 |
comment_date |
smalldatetime(4) |
评论时间 |
商店评论表(web_shop_comment)用来保存其他用户对商店的评论信息,表web_shop_comment如表5-10所示:
列名 |
数据类型(长度) |
中文说明 |
comment_id |
int(4) |
评论ID |
comment_content |
nvarchar(200) |
评论内容 |
comment_username |
nvarchar(50) |
评论人 |
shop _id |
int(4) |
商店ID |
comment_com |
int(4) |
评分 |
comment_date |
smalldatetime(4) |
评论时间 |
订单表(web_list)用来保存用户的订单信息,表web_list如表5-11所示:
列名 |
数据类型(长度) |
中文说明 |
list_id |
int(4) |
订单ID |
buy |
nvarchar(50) |
买家 |
sell |
nvarchar(50) |
卖家 |
goods_id |
int(4) |
商品ID |
goods_name |
nvarchar(50) |
商品名 |
goods_price |
money(8) |
商品单价 |
list_price |
money(8) |
订单总价 |
list_date |
smalldatetime(4) |
订单时间 |
list_condition |
char(30) |
订单状态 |
留言表(web_message)用来保存用户给卖家的留言信息,表web_message如表5-12所示:
列名 |
数据类型(长度) |
中文说明 |
message_id |
int(4) |
留言ID |
message_content |
nvarchar(400) |
留言内容 |
shop_id |
int(4) |
商店ID |
message_username |
nvarchar(50) |
留言用户 |
message_date |
smalldatetime(4) |
留言时间 |
网站公告表(web_notice)用来保存网站的公告信息,表web_notice如表5-13所示:
列名 |
数据类型(长度) |
中文说明 |
notice_id |
int(4) |
公告ID |
notice_title |
nvarchar(50) |
公告标题 |
notice_content |
nvarchar(400) |
公告内容 |
notice_date |
smalldatetime(4) |
公告时间 |
6.1 用户浏览及搜索商品
所有用户及游客最先进入的是网站的首页,它包括推荐商品、商店排行等内容,也包括了商品的搜索功能。
首页界面如图6-1所示:
![]() |
导航栏上面关于用户登录注册部分会根据用户登录与否显示不同的信息,其代码如下:
public string gettop()
{
string htmlstr;
if (Session["webusername"] == null)//跟踪用户名,判断是否登录
{ htmlstr = "<td width='200' align='center'><span class='top1'>你好,欢迎来到零点商城!</span></td> <td width='70'><a href='user/register.aspx' class='top2'>[免费注册]</a></td> <td width='45'><a href='user/login.aspx' class='top2'>[登录]</a></td>"; }
else
{ htmlstr = "<td width='245' align='right'><span class='top1'>欢迎您," + Session["webusername"] + "</span></td> <td width='70'align='center'><a href='login_out.aspx' class='top2'>[退出]</a></td>"; }
return htmlstr;//返回htmlstr的值
}
如登录后界面如图6-2所示,未登录界面如图6-3所示。
显示最新商品代码如下:
public static string getnewgoods()
{
string sql = "select top 4 * from web_goods where goods_audit=1 order by goods_id desc";//查找出的结果按商品ID的降序排列,即最后添加的最先显示。
IDataReader drnew = common.GetDataReader(sql); //从数据库读出最新添加的商品
string ret = "";
int i = 1;
string goodsname = "";
while (drnew.Read())
{
if (drnew ["goods_name"].ToString().Length< 8) //判断商品名称长度,若小于8则直接将值赋给proname,若不是则赋给前八个字
{
goodsname = drnew ["goods_name"].ToString();
}
else
{
goodsname = drnew ["goods_name"].ToString().Substring(0, 8);
}
if (i != 3)
{
ret += "<td ><table height='150' border='0' align='center' cellpadding='0' cellspacing='0'><tr><td height='130' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'><img src='upload/" + drnew["goods_img"].ToString() + "' width='120' height='120' border='0'></a></td></tr><tr><td height='20' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'>" + goodsname + "</a></td> </tr> <tr> <td align='center'><span class='top2'>¥" + WebCommon.common.strFormatmoney(drnew["goods_price"].ToString()) + "</span></td> </tr> </table></td>";
}
else
{
ret += "</tr><tr><td ><table height='150' border='0' align='center' cellpadding='0' cellspacing='0'><tr><td height='130' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'><img src='upload/" + drnew["goods_img"].ToString() + "' width='120' height='120' border='0'></a></td></tr><tr><td height='20' align='center'><a href='goods.aspx?id=" + drnew["goods_id"].ToString() + "' class='top1' target='_blank'>" + goodsname + "</a></td> </tr> <tr> <td align='center'><span class='top2'>¥" + WebCommon.common.strFormatmoney(drnew["goods_price"].ToString()) + "</span></td> </tr> </table></td>";
}
i++;
} //从数据库读出数据并显示于页面
drnew.Close();//关闭数据库
return ret;
}
其中:
public static string strFormatmoney(string str)
{
str = str.Replace(".0000", ".00");
return str;
} //格式化货币
public static IDataReader GetDataReader(string sql)
{
Database db = DatabaseFactory.CreateDatabase();
IDataReader dr = db.ExecuteReader(CommandType.Text, sql);
return dr;
}//返回DataReader
6.2 用户管理页面
在用户管理的首页,我们可以看到用户的详细资料,界面如图6-4所示(此图为有商家权限用户的界面):
代码如下:
public string main()
{
string sql = "select * from web_user where user_name='" + Session["webusername"] + "'";
IDataReader dr = common.GetDataReader(sql);
dr.Read();
Label1.Text = dr["user_name"].ToString();
Label2.Text = dr["user_email"].ToString();
Label3.Text = dr["user_truename"].ToString();
Label4.Text = dr["user_idcard"].ToString();
Label5.Text = dr["user_mobile"].ToString();
Label6.Text = dr["user_tel"].ToString();
Label7.Text = dr["area_class1"].ToString();
Label8.Text = dr["area_class2"].ToString();
Label9.Text = dr["user_address"].ToString();
Label10.Text = dr["user_postalcode"].ToString();
Label11.Text = dr["user_date"].ToString();
int s = int.Parse(dr["shop_id"].ToString());
string str;
if (s == 0)
{
str = "<tr><td height='30' class='top1'>您还未注册为卖家,想要卖商品请点击左边的<span class='top2'>成为卖家</span></td></tr>";
}
else {
str = "<tr><td height='30' class='top1'>您已经是卖家了哦,想要卖商品请点击左边的<span class='top2'>添加商品</span></td></tr>";
}
return str;
dr.Close();
}
![]() |
卖家添加商品首先选择商品分类,其界面如图6-5所示: