图书销售系统
图书信息表(bookInfo)、 订单详细表(orderPocduct)、 订单信息表(orders)、 图书类别表(bookClass)、 支付方式信息表(payInfo)、 管理员表(administrator) 在表中添加字段
14.8 数据访问层的实现
本例的主要代码是使用控件实现的,但是对 于访问数据库进行数据的插入、删除和更新等操作,使用 类库直接执行SQL语句更为方便。
在本系统开发过程中,引入了一个SqlHelper类,用以 简化数据库相关操作的编程实现。 3、创建SqlHelper类: 在网站目录App_Code下创建类SqlHelper.cs。 (如果网站中没有App_Code 目录,在网站名称处点击右键,
选择添加文件夹,选择App_Code 即可)
打开显示详细信息的DataList控件任务模板,单击“自动 套用格式”链接,如图14-52所示。选择一种需要的格式 后,
14.9.3 购物车页面设计
6、创建bookOrder.aspx页面, 页面功能:本页面为图书销售系统的核心页面,也是功能逻 辑最复杂的页面,主要涉及到两方面的功能,根据传递的商 品编号将一个商品添加到购物车和显示购物车中的全部商品 信息。 插入一个GridView控件,打开GridView控件的任务面板,
显示订单编号和支付方式 后台: 网站管理员:登录、密码修改、图书分类管理、图书信息
管理、图书订单管理
14.3 用 例 图
根据前面的需求分析,设计图书销售系统的用例图,如 图所示。
14.6 数据库结构
14.7 开发环境搭建
1、创建网站BookSell 2、创建数据库 在网站目录App_Data下创建数据库bookSell.mdf 在数据库中添加表
<ItemTemplate>
<asp:TextBox ID="TextBox1" Text='<%# Eval("count") %>'
ReadOnly Width="20 px" runat="server"></asp:TextBox>
<a href="bookOrder.aspx?op=subcount&isbn=<%#
if (op != null && op.Equals("add"))
//如果为添加商品事件,执行图书添加操作
{
string bid = Request.Params["bid"];
//接收参数传递的图书编号
ArrayList shopList = (ArrayList)Session["shopList"];
14.8.3 购物车物品对象
本例为了简单,购物车内容并不保存进数据库,而是保 存在客户端的Session中。下面是购物车对象的代码,程序 中将在Session里面保存该对象的列表:
public class shopObject
{ private string isbn;//书号
public string Isbn
选择“编辑列”选项,在“字段”对话框中取消“自动生 成字段”选项,添加2个BoundField字段和1个 TemplateField字段, 将第一个BoundField列绑定到bname字段,将标题文本设 置为“图书名称”,将第二个BoundField列绑定到bprice 字段,将标题设置为“单价”,
购物车模块的开发 订单与商品记录的级联保存、读取与删除 事务管理的用途与实现方式 GridView控件中ItemTemplate模板的使用
14.2 需 求 分 析
通过对一般电子商务网站功能的分析,总结电子商务网 站的核心功能为:
产品管理。 订单下达 订单处理。
前台用户可以按商品分类浏览商品信息,找到需要的商 品并将其加入购物车,购买商品完成后提交购物车,系统显 示出订单编号和支付方式,用户可以根据这些信息向网站汇 款。
{
((shopObject)shopList[i]).Count++;
//如果找到增加图书数量
break;
}
//如果没有找到,则添加商品
if (i == shopList.Count)
//得到保存在session的购物车列表
if (shopList == null)
//如果是第一次使用购物车,新建一个购物车对象
shopList = new ArrayList();
//查询购物车内是否存在该商品
int i;
for (i = 0; i < shopList.Count; i++)
if (bid == ((shopObject)shopList[i]).Isbn)
Eval("ISBN") %>">减一</a>
<a href="bookOrder.aspx?op=addcount&isbn=<%#
Eval("ISBN") %>">加一</a>
</ItemTemplate>
</asp:TemplateField> <asp:BoundField DataField="bprice" HeaderText="单价" />
第14章 图书销售系统 14.1 系统概述
本例开发的销售系统功能比较简单,接近于电子商务网 站刚刚兴起时,各种中小企业在其网站上提供的商品订购系 统。通过这样一个简单的例子,希望读者掌握使用Microsoft Visual Studio 2008在 3.5平台上开发网站购物车模 块的基本方法,为以后开发电子商务网站打下基础。 知识要点:
管理员后台实现的功能主要是对图书分类的管理、图书 信息的管理和图书订单的管理。包括对图书信息的添加、修 改和对订单的发货处理两个模块。
14.2 需 求 分 析
由需求分析所得结果,可将该系统的功能分为前台和后 台两个功能模块,每个模块实现的主要功能如下:
前台: 用户:浏览商品,加入购物车,提交购物车,
}
}
14.9 前台程序代码
前台主要包括下面几个文件。 Default.aspx:图书信息查询,可以显示全部图书类别, 也可以分类查询,有进入详细页面和加入购物车的链接。 bookInfo.aspx:图书详细信息查看,根据传递的书号 参数,显示一本书的详细信息。 bookOrder.aspx:购物车页面,这是本系统最为重要的 页面,实现订单系统的核心功能之一:添加一个商品到 购物车以及对购物车的管理。 payOrder.aspx:添加收货人信息,提交订单。 viewSuccessOrder.aspx:购买成功,显示订单编号和 支付方式信息。 OrderFind.aspx:查询订单状态。
因为需要实现的查询语句条件比较复杂,无法使用简单的 查询语句生成工具来生成,在这里选择“指定自定义SQL 语句或存储过程”选项,
打开查询生成器,设置查询语句为从图书表与图书分类表 中读取所有字段,并把ISBN字段的筛选器设置为 “=@ISBN”,单击确定,回到“定义自定义SQL语句或存 储过程”对话框,单击“下一步”,
将第二个链接控件的DataNavigateUrlFields属性设置为 “ISBN”,并且把该控件的DataNavigateUrlFormatString 属性设置为“bookOrder.aspx?op=add&bid={0}”, HeaderText属性设置为“加入购物车”,Text属性设置为 “加入购物车”;
进入代码视图,找到GridView控件的代码部分,增加管理 购物车中的商品数量的实现代码:
<Columns> <asp:BoundField DataField="bname" HeaderText="图书名称" />
<asp:TemplateField> <HeaderTemplate>购买量</HeaderTemplate>
再添加一个数据源控件到页面,设置为从分类表中读取所 有信息,
放置一个DataList控件到页面中,设置数据源为上一步配 置的数据源,进入DataList模板编辑状态,并删除系统生 成的所有内容,
从工具箱中拖放一个HyperLink控件到DataList中,插入 HyperLink控件后自动打开任务面板,单击“编辑 DataBindings”,打开绑定字段设置对话框,将 NavigateURL属性绑定到bcId属性,格式设置为 “?bcID={0}”,将Text属性绑定到bcName字段,单击 “确定”按钮,
public string Bname
{ get { return bname; }
set { bname = value; }
}
private double bprice;//单价
public double Bprice
{ get { return bprice; }
set { bprice = value; }
在页面的Page_Load事件中加入如下代码,实现分类查询:
if (!IsPostBack)//如果不是页面回送处理本消息
{
string bcId = Request.Params["bcId"];
//接收类别编号
if (bcId != null && bcId.Length > 0)
//如果类别编号不为空
{ get { return isbn; }
set { isbn = value; }