从零开始实现一个电子商务网站----编码实现之N层类目结构(七)
2010-08-03 23:38
375 查看
编码实现之N层类目结构
在解决了碰到的问题后,编码变的异常简单。但依然耗时很长,与开发之初决定使用快速原型法来获取需求有很大的差距。现在这种开发情况更像增量法。无论现在使用的什么方法,我们都能看到胜利的光芒,因为这是个能实现的系统。我们需要实现的关键对象为:Category类--------对应于UML类图中的类目Commodity类--------商品CommodityImage类--------商品细节图片ContactAddress类--------联系地址CustCommodity类--------可选某些特征的商品CustCommodityAttribute类--------商品特征Customer类--------顾客DiscountMessage类--------促销信息Message类--------信息Order类--------订单OrderItem类--------订单细节ShoppingCart类--------购物车ShoppingItem类--------购买项User类--------用户这些类的大部分功能都是更新某项属性或向数据库添加记录或向数据库中查询记录(这些代码我将会把它们发布出来)下面就来聊聊几个关键方法的设计:N层类目机制:如何体现出Category类中类目层次结构,我们知道类目是用来对商品进行分类的,一般会有多层。例如: ------------第二层类目 第一层类目----------------第二层类目 -----------------第三层类目 ------------第二层类目-----------------第三层类目 -----------------第三层类目 当然如果你的商品分类不多的话,你完全可以将他们硬性设计为两层或三层结构。但如果以后要向在现有的类目层次上再添加几层的话将会变的十分的困难。在我们的这个系统中我们将实现一个能描述N层类目结构的机制。我们来看看数据库中Category表的情况:
子目录的CategoryId字段指向父目录的Id字段,以这样的方式传递下去,最终形成类目树的结构。要实现这种N层类目结构的机制有三个关键步骤:步骤一:类目数据录入的时候要严格按照类目树的结构进行录入,否则插入的数据会成为孤立数据。步骤二:如何将这种逻辑上体现出的树形类目结构实际的呈现出来。步骤三:如何来维护这种N层类目机制。 我们做到步骤一并不难,关键在于怎么设计步骤二。步骤二的实现代码(涉及Category类中的属性与方法在后面以经列出):
在解决了碰到的问题后,编码变的异常简单。但依然耗时很长,与开发之初决定使用快速原型法来获取需求有很大的差距。现在这种开发情况更像增量法。无论现在使用的什么方法,我们都能看到胜利的光芒,因为这是个能实现的系统。我们需要实现的关键对象为:Category类--------对应于UML类图中的类目Commodity类--------商品CommodityImage类--------商品细节图片ContactAddress类--------联系地址CustCommodity类--------可选某些特征的商品CustCommodityAttribute类--------商品特征Customer类--------顾客DiscountMessage类--------促销信息Message类--------信息Order类--------订单OrderItem类--------订单细节ShoppingCart类--------购物车ShoppingItem类--------购买项User类--------用户这些类的大部分功能都是更新某项属性或向数据库添加记录或向数据库中查询记录(这些代码我将会把它们发布出来)下面就来聊聊几个关键方法的设计:N层类目机制:如何体现出Category类中类目层次结构,我们知道类目是用来对商品进行分类的,一般会有多层。例如: ------------第二层类目 第一层类目----------------第二层类目 -----------------第三层类目 ------------第二层类目-----------------第三层类目 -----------------第三层类目 当然如果你的商品分类不多的话,你完全可以将他们硬性设计为两层或三层结构。但如果以后要向在现有的类目层次上再添加几层的话将会变的十分的困难。在我们的这个系统中我们将实现一个能描述N层类目结构的机制。我们来看看数据库中Category表的情况:
子目录的CategoryId字段指向父目录的Id字段,以这样的方式传递下去,最终形成类目树的结构。要实现这种N层类目结构的机制有三个关键步骤:步骤一:类目数据录入的时候要严格按照类目树的结构进行录入,否则插入的数据会成为孤立数据。步骤二:如何将这种逻辑上体现出的树形类目结构实际的呈现出来。步骤三:如何来维护这种N层类目机制。 我们做到步骤一并不难,关键在于怎么设计步骤二。步骤二的实现代码(涉及Category类中的属性与方法在后面以经列出):
生成后的类目树如下: 有这个类目树,我们就能根据它来设计出供顾客浏览且具有友好界面的类目了。 步骤三:维护涉及的过程无非就是添加,更新,删除。添加在步骤一已经解决了,现在我们来看看更新和删除怎么办。更新: 如果想将某一类目的父类目更新为其他的类目,只需更新这一个类目,而不需要更新其的子孙类目。删除: 如果要删除某一类目,则必须将在该类目下的所有子孙类目都删除。删除过程的实现代码为: public static bool DelCategory(Guid id) { int result = 0; StringBuilder delCmd; StringBuilder strBuilder = new StringBuilder(); Stack<Category> stack = new Stack<Category>(); Category temp; stack.Push(new Category(id)); strBuilder.Append("("); while (true) { if (stack.Count == 0) break; temp=stack.Pop(); strBuilder.AppendFormat("'{0}',", temp.ID.ToString()); foreach (Category c in temp.ChildCategories) { stack.Push(c); } } strBuilder.AppendFormat("'{0}')", id.ToString());//再添加一次,省的等下用字符拼接来去掉最后一个逗号 delCmd = new StringBuilder(); delCmd.AppendFormat("delete from Category where Id in {0}", strBuilder.ToString()); SqlConnection conn = new SqlConnection(MAMAWEBSYSTEM.CONNECTIONSTRING); SqlTransaction tran; SqlCommand cmd = new SqlCommand(delCmd.ToString(), conn); conn.Open(); tran = conn.BeginTransaction(); cmd.Transaction = tran; try { result = cmd.ExecuteNonQuery(); } catch { tran.Rollback(); } tran.Commit(); conn.Close(); return result == 0 ? false : true; }解决上面三个步骤后,我们的N层类目机制也初具形态了。
相关文章推荐
- 从零开始实现一个电子商务网站----UI的设计布局(八)
- 从零开始实现一个电子商务网站----一切从需求开始(二)
- 从零开始实现一个电子商务网站----错误比想象中来得更快(五)
- 从零开始实现一个电子商务网站----解决碰到的问题(六)
- 从零开始实现一个电子商务网站----数据库的设计(四)
- 从零开始实现一个电子商务网站
- 一个电子商务网站的系统结构及功能实现分析
- 从零开始实现一个电子商务网站----整理需求(三)
- 怎样把网站js文件合并成一个?几种方法可以实现
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- 从零开始,用react全家桶撸一个个人网站项目
- 一个常用网站点赞动画功能实现
- 电子商务网站中“购物车的实现原理”
- 从零开始搭建一个网站
- 从零开始搭建一个完善的MVP开发框架(五),通过组件化开发优化项目的结构
- java实现以树结构打印一个文件目录结构
- 设计实现一个简易通讯录,要求使用结构体
- 从零开始用 Flask 搭建一个网站(二)
- JS+CSS实现电子商务网站导航模板效果代码
- 实验----实现基于LNMP的电子商务网站