××大学本科毕业生学士学位论文
if(数据库连接处于关闭状态)
{
打开数据库连接dbStrCon; }
声明一个数据库命令对象 cmd ;
指定cmd的数据库连接对象为dbStrCon,命令文本为FillSql,命令类型为文本型;
if (commandParameters 不为空) { }
foreach (声明一个临时Sql参数 in commandParameters) {
为Sql命令对象添加commandParameters中的所有Sql参数 }
声明一个Sql数据适配器ada,并指定其Sql命令为cmd; 声明一个DataSet数据集 dsResul;
利用数据适配器ada填充数据集 dsResul 清空Sql命令cmd里面的所有Sql参数; if(数据库连接处于打开状态) {
关闭数据库连接dbStrCon; }
返回执行查询后的数据集 dsResult;
}
public static DataSet ReDataSet(传入的Sql语句参数 FillSql) {
为dbStrCon新分配一个数据库连接对象;
if(数据库连接处于关闭状态)
{
打开数据库连接dbStrCon; }
声明一个数据适配器ada,并指定其Sql语句为FillSql,数据库连接对象为dbStrCon;
声明一个DataSet数据集 dsResul; 利用数据适配器ada填充数据集 dsResul if(数据库连接处于打开状态)
{
第22 页
××大学本科毕业生学士学位论文
关闭数据库连接dbStrCon;
}
返回执行查询后的数据集 dsResult;
} }
4.1.2 购物车类的实现
在线购物网站中购买者可以在不同的页面进行购物,而在不同页面所选购的货物最终都是放到同一个购物车里。所以要编写一个购物车类进行处理用户的购物过程,这样可以节省不必要的重复编写代码的时间,有利于维护和功能上的扩充。当用户在购物页面点击了”购买”按钮之后,将该商品的ID传入类中进行处理,根据用户单击的次数和商品的ID确定要购买的数量和商品,同样可以直接在购物车页面中编辑所需货物的数量。系统将这些信息使用Hashtable类进行存储,在用户提交购物车信息之前,Hashtable中的数据将暂时保存在Session会话变量中。在提交购物车之后,将写入数据库,实现过程的伪代码如下所示: public class ShopCar : System.Web.UI.Page {
声明一个购物的DataSet数据集goodSet; 声明一个静态的String对象hh;
public void godataset(string id) //向Hashtable中添加购商品id和数量
{ if (如果Session会话中变量bus的值为空) {
声明一个哈希表变量 ht;
往ht中加入一个”键为id、值为1”的键值对; 将ht赋值给Session会话中的变量bus; 调用dafill()方法将商品信息添加到ht中; } else {
定义一个哈希表ht,并将其赋值为Session会话中的变量bus;
if (哈希表ht中键为id的键值对为空) {
将ht中键为id的键值对的值设定为1;
第23 页
××大学本科毕业生学士学位论文
}
else
{
将ht中键为id的键值对的值+1 }
将ht赋值给Session会话中的变量bus; 调用dafill()方法将商品信息添加到ht中; } }
public void dafill(Hashtable ht) //查询商品信息添加到数据集中
{
清空购物的DataSet数据集 goodSet; foreach (字典键值对de in ht) {
将hh赋值为字典键值对de中键;
声明一个数据适配器datap,并指定其Sql语句为”从商品信息表中查出”,数据库连接对象为根据web.config文件中的连接字符串新建的数据库连接对象;
} } }
if (如果数据适配器datap不为空) { }
用datap填充DataSet数据集goodSet;
4.2 销售模块的实现
系统销售模块主要包括:商品展台、购物车、会员管理、新闻管理、注销登录等子模块。在本节中将以首页、购物车和特价商品的展示为例介绍系统销售模块各个子模块的实现过程。 4.2.1 销售模块基本框架的实现
本系统采用户控件来保持每个页面风格的一致性,其中销售模块首页布局如图4-1所示。
第24 页
××大学本科毕业生学士学位论文
图4-1销售模块首页界面图
首页的顶端导航条部分,左侧登录界面、销售排行、动态新闻部分,右侧商品分类导航条、在线调查、广告招商位部分,以及底端的版权信息部分 分别是四个不同的用户控件。下面以右侧的用户控件right.ascx为例论述一下其使用方法:
用户控件里面的所有需要从数据库动态读取信息的显示控件的数据绑定代码全部放在相应的用户控件后台代码中,例如right.ascx中商品分类信息导航树的伪代码如下:
构造从商品大类信息表中检索所有记录的Sql语句supertype; 构造从商品小类信息表中检索所有记录的Sql语句subtype; 定义DataSet数据集dssuper,赋值为根据supertype调用公共数据库操作类中静态函数后返回的数据集;
定义DataSet数据集dssub,赋值为根据subtype调用公共数据库操作类中静态函数后返回的数据集;
定义DataRow数据行rows存放dssuper数据集的首行; 定义DataRow数据行subrows存放dssub数据集的首行; if (当前页面是第一次加载) {
foreach (数据行row in rows)
第25 页
××大学本科毕业生学士学位论文
{
声明一个树节点nd,将其Text属性设置为数据行row中字段名为typename的列,值设置为数据行row中字段名为id的列; 将nd加到导航树的节点集中;
foreach (数据行subrow in subrows) {
声明一个树节点subnd,将其Text属性设置为数据行subrow中字段名为typename的列,值设置为数据行subrow中字段名为id的列;
if (subrow[\row[\
{
} } }
4.2.2 销售模块特价商品功能的实现
运行网站的主页,可以看到四条特价商品的信息,单击”More…”按钮可以进入到特价商品网页,该页中包括商品的图片、名称、原价、现价、市场价格、库存数量等信息。单击”购买”按钮可以将该商品自动添加到购物车中去。另外可通过单击”查看详细信息...”按钮进入相应商品的详细信息显示页面。特价商品模块在网站首页的设计效果如图4-2所示。
将subnd加到父节点的节点集中去; }
图4-2销售模块特价商品展示界面图 第26 页
基于ASP.NET的在线购物系统的设计与实现 - 图文



