1、 网络书店 一、课程设计(综合实验)的目的与要求 1.目的 1.1 开发背景 当代计算机网络发展非常迅速,越来越多的商品交易已成功的运用在电子商务上了。比较典型的电子商务网站有:易趣、亚马逊、阿里巴巴、当当网、淘宝网… 电子商务平台给企业带来更多的商业机会,同时也给客户的消费和交易带来很大的方便。所以电子商务系统的需求量将会越来越多。 1.2实验目的 通过本实验,深入了解电子商务系统的开发内容和运行过程。将所学的网络开发技术A 2.0运用到企业项目中去,后台使用数据库sql server 2005。同时开发过程要求运用软件工程方法和Case工具。 2
2、要求 开发工具:Visual Studio 2005 开发语言:C# 开发框架:A 2.0 数据库:sql server 2005 系统运行环境:Windows server 2003、IIS6、.NetFramework 2.0、CMailServer 二、设计(实验)正文 1. 使用UML进行系统建模 1.1 用例图 1.2 活动图(购物过程) 1.3类图 2. 利用SQL Sever2005设计数据库 2.1创建数据库:BookShopOnlineDB 2.2创建表:integerited security
3、数据库名:BookShopOnlineDB 表名:User 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 UserID int 4 0 √ √ 编号 2 RoleID smallint 2 0 角色 3 UserName nvarchar 100 0 用户名 4 UserPwd nvarchar 100 0 密码 5 RealName nvarchar 100 0 √ 收货人姓名 6 Email nva
4、rchar 100 0 √ 邮件 7 Address nvarchar 200 0 √ 地址 8 PostalCode varchar 10 0 √ 邮编 9 Phone varchar 50 0 √ 电话 10 IsLock bit 1 0 √ ((0)) 是否被锁定 表名:ShoppingCart 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 CartID bigint 8 0 √ √ 编
5、号 2 CartGuid varchar 50 0 3 BookID int 4 0 图书编号 4 Quatity smallint 2 0 √ 数量 5 DateAdded smalldatetime 4 0 √ (getdate()) 日期 表名:Role 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 RoleID smallint 2 0 √ √ 角色编号 2 RoleName nvarchar
6、 100 0 角色名 表名:OrderStatic 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 StaticID smallint 2 0 √ 订单状态编号 2 StaticName nvarchar 100 0 状态名 表名:Orders 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 OrderID varchar 50 0 √ 订单编号 2 UserID int
7、 4 0 用户编号 3 UserName nvarchar 100 0 √ 用户名 4 OrderDate smalldatetime 4 0 √ (getdate()) 订单日期 5 ReceiverName nvarchar 100 0 √ 收货人姓名 6 ReceiverAddress nvarchar 200 0 √ 收货人地址 7 ReceiverPostalCode varchar 10 0 √ 收货人邮编 8 ReceiverPh
8、one varchar 50 0 √ 收货人电话 9 TotalBookPrice money 8 4 √ ((0)) 订单总价 10 PortPrice money 8 4 √ ((0)) 运费 11 HasPayedPrice money 8 4 √ ((0)) 已付费 12 PortTypeID smallint 2 0 √ 13 PortTypeName nvarchar 100 0 √ 收货方式 14 PayTypeID small
9、int 2 0 √ 15 PayTypeName nvarchar 100 0 √ 付款方式 16 TipID smallint 2 0 √ 订单状态编号 17 TipName nvarchar 100 0 √ 订单状态 18 UpdateStaticDate smalldatetime 4 0 √ (getdate()) 更新状态日期 表名:OrderDetail 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1
10、 OrderDetailID bigint 8 0 √ √ 订单明细编号 2 OrderID varchar 50 0 订单编号 3 BookID int 4 0 图书编号 4 Quatity smallint 2 0 √ 数量 表名:Favorites 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 FavoritesID int 4 0 √ √ 2 UserID int 4 0 √
11、 3 BookID int 4 0 √ 4 DateAdded smalldatetime 4 0 √ (getdate()) 表名:BookType 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 BookTypeID int 4 0 √ √ 图书类别编号 2 BookTypeName nvarchar 100 0 图书类别名称 3 ParentID int 4 0 ((-1)) 父类编号 4 Or
12、derBy int 4 0 √ 顺序 表名:BookImg 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 ImgID int 4 0 √ √ 图片编号 2 ImgPath varchar 100 0 √ 图片路径 表名:Book 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 BookID int 4 0 √ √ 图书编号 2 BookName nvarchar 200 0
13、 图书名称 3 BookTypeID int 4 0 √ 类别编号 4 ImgID int 4 0 √ 图片编号 5 OriginalPrice money 8 4 √ 原价 6 SellPrice money 8 4 √ 售价 7 Description ntext 16 0 √ 描述 8 Quatity int 4 0 √ 总数量 9 Storage int 4 0 √ 当前库存 10 IsC
14、ommended bit 1 0 √ ((0)) 是否推荐 11 VisitedCount int 4 0 √ 浏览次数 12 DateAdded smalldatetime 4 0 √ (getdate()) 上架添加日期 13 Author nvarchar 200 0 √ 作者 14 Press nvarchar 100 0 √ 出版社 15 DatePressed smalldatetime 4 0 √ 出版日期 16 ISBN va
15、rchar 50 0 √ 2.3建立关联 2.4往部分表中插入数据 insert into [Role](RoleName) values('注册用户') insert into [Role](RoleName) values('后台管理员') insert into OrderStatic(StaticName) values('等待处理') insert into OrderStatic(StaticName) values('已处理') insert into OrderStatic(StaticName) values('等待发货')
16、insert into OrderStatic(StaticName) values('正在配货') insert into OrderStatic(StaticName) values('已发货') 2.5检查数据库的完整性 3. 使用Visual Studio 2005 创建解决方案 3.1 业务实体层:Model 3.2 数据访问助手:DBHelper 3.3 配置文件访问:WebConfig 3.4 Sql server数据库数据访问层:SQLServerDal 3.5 业务逻辑层:Bll 3.6 表示层(网站):Web 4.
17、体系结构 表示层Web 业务逻辑层Bll 数据访问层SqlServerDal 公共对象实体Model 辅助 操作 Utility、 DBHelper 数据库SqlServer2005 4.1 创建公共对象 Model:Book.cs、BookImg.cs、BookType.cs、Favorites.cs、OrderDetail.cs、Orders.cs、OrderStatic.cs、OrderStaticTip.cs、PayType.cs、PortType.cs、Role.cs、ShoppingCart.cs、User.cs 例如: p
18、ublic class BookImg { private int _ImgID; public int ImgID { get { return _ImgID; } set { _ImgID = value; } } private string _ImgPath; public string ImgPath { get { return _ImgPath; }
19、 set { _ImgPath = value; } } } 4.2 创建数据访问层 SqlServerDal:BookDAl.cs BookTypeDal.cs FavoritesDal.cs OrderDetailDal.cs OrdersDal.cs PayTypeDal.cs PortTypeDal.cs ShoppingCartDal.cs UserDal.cs DBAccess.cs 例如: public class FavoritesDal { public int Insert
20、Favorites(Favorites favorites) { SqlParameter[] parms ={ new SqlParameter("@UserID",favorites.UserID), new SqlParameter("@BookID",favorites.BookID) }; return base.ExecuteNonQuery(StoredProcedureName.sp_InsertFavorites, parms
21、); } } 4.3 创建业务逻辑层 Bll:BookBll.cs BookTypeBll.cs FavoritesBll.cs OrderDetailBll.cs OrdersBll.cs PayTypeBll.cs PortTypeBll.cs ShoppingCartBll.cs UserBll.cs 例如: public class BookBll { private static readonly IBook Dal = DataAccess.CreateBook(); public Da
22、taSet SelectTopSoldBooks() { DataSet ds = Dal.SelectTopSoldBooks(Config.TopSoldBooks); SetRowNum(ds); SetDefaultPic(ds); return ds; } } 4.4 创建辅助操作 DBHelper:SQLHelper.cs Utility:ErrorLog.cs MyEmail.cs Password.cs WebToo
23、l.cs 4.5 创建表示层 文件夹 BookImg:图书图片 Images:系统公用图片 Skins:网页样式default.css ErrorLog:系统错误日志errorlog.txt Controls:用户控件 Admin:管理员目录 其中有页面: AddBook.aspx 添加图书 AddBookType.aspx 添加图书类别 AdminLogin.aspx 管理员登录 AdminLogout.aspx 管理员退出 OrderList.aspx 订单列表 SearchOrder.aspx 搜索订单 CheckOrder.aspx 处理订
24、单 UserCenter:用户中心 其中有页面: EditPwd.aspx 修改密码 Favorites.aspx 收藏夹 ModifyOrder.aspx 修改订单 OrderList.aspx 订单列表 ShowOrder.aspx 查看订单 UpdateUser.aspx 更新用户信息 UserCenter.aspx 用户中心首页 168regpay:付款处理 其中有页面: payment.aspx 处理付款 PayResult.aspx 付款结果 根目录有页面: AddOrder.aspx 添加订单 AddToFavorites.aspx 添
25、加收藏夹 AddToShoppingCart.aspx 添加购物车 BookList.aspx 图书列表 BookListBySearch.aspx 图书搜索结果列表 Default.aspx 网站首页 ErrorPage.aspx 错误页面 Login.aspx 登录页面 Logout.aspx 退出页面 RegisterResult.aspx 注册结果 RegisterUser.aspx 注册页 ShowBookDetail.aspx 浏览图书 ShowShoppingCart.aspx 购物车 5. 核心业务分析 5.1 图书无限级分类
26、先获取根目录数据集,然后对该数据集进行循环获取对应的下级目录,其中获取下级目录采用递归方法。这样就要可参数无限级分类。 5.2 图书搜索并分页显示 用户输入关键字,且选择搜索类别:书名、作者、全文、出版社、ISDN。 以这两个条件进行记录的分页查询。由于前台的查询,容易造成特殊字符的查询或者SQL的注入,所以本系统采用存储过程(但存储过程中不使用动态查询语句)。 5.3 生成订单事务 订单事务包括:插入订单信息-》插入订单详细-》更新图书记录-》删除购物车。本系统采用的是ADO.net中的事务处理方法。 5.4 在线支付处理 本系统采用在线支付中介“贺喜支付平台”,它支持各大银行的在线支付:中国工商银行、中国建设银行、中国农业银行等等。该中介提供了很好的测试用例和详细的文档说明。 5.5处理废弃购物车 购物者添加购物车后由于各种原因未能生成订单,所有时间一长购物车表的记录数会很大,所以系统应该能够定期自动删除过期的购物车记录。该任务由Sql server 2005的代理服务器自动执行。 三、课程设计总结或结论 四、参考文献






