《ASPNET三层架构电子商务网站的设计.doc》由会员分享,可在线阅读,更多相关《ASPNET三层架构电子商务网站的设计.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流ASPNET三层架构电子商务网站的设计.精品文档.2012届本科毕业论文(设计)题目ASP.NET三层架构电子商务网站的设计与开发学 院 名 称计算机与信息工程学院专 业 名 称计算机科学与技术学 号0815050115学 生 姓 名李兴发指导教师姓名(职称)文瑛(讲师)教务处制二一 年五月目 录摘 要2第一章绪论31.1研究背景31.2研究目标31.3研究内容4第二章 网站总体设计52.1网站功能模块设计52.1.1商品展台82.1.2会员中心、购物车102.1.2.1修改个人信息142.1.2.2查看订单列表112.1.3后台功能112.
2、1.3.1管理员管理、用户列表、添加图书122.1.3.2图书列表、修改图书信息、订单管理132.1.3.2订单详情、公告管理142.1.3.3分类管理152.2数据库设计152.2.1数据库需求分析152.2.2数据库概念结构设计182.2.3数据库逻辑结构设计18第三章网站详细设计203.1公共类203.1.1对数据库链接打开关和闭校验工作的类203.1.2购物车公共类203.2.网站主要功能实现解析213.2.1数据库访问层设计与实现213.2.2 手动编写DIV模板223.2.3最新商品上架实现233.2.4页面传递参数实现定向信息输出233.2.5检索信息时的多表查询243.2.6页
3、面跳转时地址栏的变与不变263.2.7在类中查询数据库与取出字段Edit_users.asp.cs263.2.8两个DropDownList控件关联273.2.9智能化的搜索283.2.10软件工程的方法:小步前进303.2.11提示信息不出来的原因303.2.12上传图片自动加上当前系统时间303.2.13 GridView控件中插入连接和传递参数313.2.14多表查询语句直接用在GridView 等控件中333.2.15安全性保障343.2.16 网站导航35第四章 网站整体评估354.1用户体验度354.2可拓展性评估35第五章结束语39参考文献41作者简介:42声 明43ASP.NE
4、T三层架构电子商务网站的设计与开发信息管理与信息系统 蔡辉辉【摘 要】随着电子商务这种新型的商业运营模式的兴起,电子商务为企业与企业间创造了实现消费需求的新机会,为任何一种商品都带来了最直接的了解与周转渠道。同时,本系统在程序设计上采用三层架构的开发方式,这种应用程序的设计使用客户/服务器模式,各层可以同时开发也不会影响其他层;利用.NET的核心技术,Aspnetdb数据库等技术和提供程序方便快捷的建立属于自己的ASP.NET电子商务网站。本文将详细介绍本系统的设计开发过程。【关键词】ASP.NET 三层架构 电子商务 图书 购买Design and Implementation Of The
5、 3-tier Application E-commerceInformation management and information system CAI Hui-HuiAbstract: With the rise of the new commercial operation pattern E-commerce, it creates a new chance of realizing consumer demand for enterprises and makes direct understanding and flow channels for any kinds of go
6、ods. While, in program design this system based on the three-layer framework development mode. And, with this kind of application uses the design of client/server model, each layer can also develop will not affect other layers. Through makes use of the ASP.NET core technology, Aspnetdb data base Pro
7、vider, we can convenient establish own e-commerce sites. This paper introduced the design and development processes.Key words: ASP.NET, 3-tier Application, E-commerce, books, buy第一章 绪论1.1研究背景随着经济全球化合信息网络化的快速发展,信息产业成为全球经济中融合度最高、潜力最大、增长最快的领域。同时因特网以及电子商务的发展水平,也成为影响我国整体经济发展速度的重要因素,成为衡量我国21世纪竞争力强弱的重要指标。与
8、传统的书店相比,网上书店有着不可比拟的优势。首先是不再需要店面租金、实物成本、存储等费用。销售商只需与供货商达成供货协议,由供货商提过图书的图片和文字说明等信息,读者点击购买、下单后,即可将订单发给供货商,由供货商直接将图书发给客户。其次,小型的网上书店不需太多的维护和管理,一般只需一到三个人的小团队即可,适合家庭运作,进一步降低了成本。并且图书与其他类型的商品有着安全、运输方便、客户满意度高等优势。本学期我们开设了ASP.NET2.0动态网站开发、电子商务系统的分析与设计、软件工程三门与之相关的课程,希望通过这个设计达到综合运用所学知识的目的。1.2研究目标随着行业综合类网站的不断扩大,在正
9、常的运作中总是要面对大量的数据处理,如图书的产品图片收集,价格收集,内容介绍,下单,发货等。本论题就是通过开发具有完善功能的网上书店,以方便管理提高效率为原则,开发出一套实用的B2C的电子商务网站,以达到低成本、低风险、高品质的销售所代理的商品。而供货商通过代理网店的订单整体定向输出,能更好的拓展及管理好自己的货源分销代理渠道的目的。本系统属于综合型的网站购物系统,可以对图书销售的各个环节进行有效地管理。通过本系统可以达到以下目标:(1)支持匿名用户订购图书到购物车,然后实名化购买图书。(2)用户一旦提交购买订单,店主的订单列表中会显示最新下单情况,并提示执行状态。一旦执行,用户也会第一时间获
10、得执行信息。(3)创始管理员有添加管理员和删除、修改非创始管理员的权限。(4)加强数据的安全性,前台用户登录需输入验证码,后台非创始管理员权限受限,使用SQL防注入式攻击程序校验。(5)上传图书图片自动加上时间字符串,反正同名覆盖。(6)良好的数据库设计和数据搜索能力。(7)提供智能化的图书检索功能,根据用户输入情况自动选择搜索语句。(8)良好的用户购物体验、管理员维护体验1.3研究内容本文主要研究以下几个方面内容:(l)三层架构的电子商务网站分析。本文主要是对三层架构的电子商务网站的可行性及功能需求等进行理论研究,并通过系统需求分析和业务流程图等系统分析方法进行信息化条件下三层架构的电子商务
11、网站分析。(2) 三层架构的电子商务网站设计。本文首先基于上述分析结果,采用功能模块分析法进行系统功能模块化分析和设计;其次基于相关数据库设计理论,采用E-R图等方法进行信息化条件下电子商务网站设计。(3) 三层架构的电子商务网站实现。本文基于以上系统分析和设计,采用C#,ADO.NET,SQL Server 2005 Express Edition关系数据库为主要技术,实现三层架构的电子商务网站。第二章 网站总体设计2.1网站功能模块设计遵循模块化的原则进行系统模块分析和设计。采用模块化的原则可以使软件结构清晰,容易设计、阅读和理解,容易测试和调试,有助于提高网站系统的可靠性和可修改性。根据
12、上述系统功能需求分析和业务流程分析,本系统将系统划分为商品展台、购物车、用户信息管理、管理员功能模块、图书管理、分类管理、订单管理、搜索、公告管理九个模块,为了更好的了解本网站的总体结构及其所要实现的功能,下表相信列出网站整体设计。淘书网网站前台商品展台最新和最热图书展台index.aspx更多新书列表moreNewBooks.aspx更多最热图书列表moreHotBooks.aspx单本图书介绍/评论whichBook.aspx?id=购物车购书APP_Code/Class2.cs、shopcar.aspx查看所买图书的详细信息和送货信息shopcar.aspx管理购物车/删减/下订单用户订
13、单myorder.aspx用户订单详细myorder_list.aspx用户用户登录uc/lesf.ascx用户注册register.aspx修改用户信息edit_users.aspx公告公告滚动lesf.ascx公告详细notice.aspx?id=其他分类列表导航uc/top.ascx分类浏览/搜索结果列表search.aspx网站后台管理员管理员登录admin/adminpage.aspx添加管理员admin/add_admin.aspx修改/删除非创始管理员admin/edit_admin.aspx用户查看/删除用户admin/user_list.aspx图书管理添加图书admin/a
14、dd_book.aspx修改图书信息admin/edit_book.aspx图书信息列表/删除图书admin/boos_list.aspx分类分类管理admin/Type.aspx订单订单列表admin/index.aspx订单详细信息admin/sun_order_list.aspx?OrderID公告公告列表/删除公告admin/notice_list.aspx添加公告admin/add_notice.aspx其他菜单/控件uc/*.ascx导航Web.sitemap、SiteMapPath控件2.1.1商品展台 根据用户点击浏览的类别,分列表页,和内容页将所需信息呈现在用户眼前。展示如下
15、:(图2.1)首页图书列表页(图2.2)最推荐书目列表页(图2.3)类别图书列表页(图2.3)搜索列表页(图2.4)图书详细信息页2.1.2会员中心2.1.2.1用户注册 2.1.2.2修改个人信息 2.1.2.3查看购物车当用户购点击下订单时:用网格控件使搜出来的信息倒叙,以看到最新的订单。点击每个订单的即可看到订单的详细信息。2.1.3后台功能2.2数据库设计 2.2.1数据库需求分析 建立如此功能多样的网站,必须合理的建立好各项的数据表以及之间的关联,程序才能有效的对表进行写入和读出数据的操作。系统还要记录用户的资料,检验用户的登录身份并赋予相应的权限等。管理员可以对用户,图书类别进行查
16、询及相关增加和删除等管理。数据库的设计不但对数据的操作速度有影响,还直接关系到软件系统的质量和生存周期。本系统采用SQL Server 2005 Express Edition数据库构建myshop.mdb数据库,设计的数据项和数据结构如下:图书评论表:discuss公告信息表:tb_BBS商品信息表:tb_goods用户信息表:tb_member管理员信息表:tb_manager订单总表:tb_order订单详细表:tb_order_detail大分类表:tb_superType小分类表:tb_subType 2.2.2数据库概念结构设计在数据库概念设计中采用实体联系模型分析方法,它是一种自
17、顶向下的概念设计方法,根据系统分析报告、数据流程图和数据字典提供的信息,进一步进行数据分析,设计各个局部视图即局部E-R图。在此,基于上述业务流程分析、数据流程分析等结果设计出部分实体关系图,各个实体的E-R图及其关系描述如下。电子商务网站主要实体间关系E-R图 2.2.3数据库逻辑结构设计概念结构设计与数据模型无关,而一个数据库系统的实现是以具体的DBMS为基础的。在概念结构设计完成之后,要依据所选的DBMS和设计好的概念结构进行逻辑结构设计。逻辑结构设计的任务就是将概念结构设计阶段设计好的基本E-R图转换为与所选的数据库管理系统所支持的数据模型相符合的逻辑结构。本系统选Microsoft公
18、司的大型数据库管理系统的化简版SQL Server 2005 Express Edition,根据概念结构设计阶段的总体E-R图,把它转换为SQL Server 2005所支持的关系模式(即E-R图中的每一个实体和联系都转换成关系模式中对应的表),再经规范化处理后就可以得到所需的关系表。此系统数据库名称为myshop。数据库myshop中包含9张表。下面分别给出数据表关系概要说明及主要数据表结构。(1)tb_goods(商品信息表)表tb_goods用于保存图书的基本信息,该表的结构如表1所示。表1 图书信息表字 段 名数 据 类 型是否允许为空主 键 否描 述IDbigint主键图书编号Ty
19、peIDint否图书类别编号goodsNameVarchar(200)否书名authorVarchar(200)是否作者introducetext是否图书简介pricefloat 否原价nowpricefloat否现价pictureVarchar(100)否封面INTimeDatatime否入库时间hotgoodsint 否是否为推荐其他表的说明省略。第三章 网站详细设计3.1公共类3.1.1 对数据库链接打开关和闭校验工作的类public class DataBase private static SqlConnection dbstrcon; public DataBase() publi
20、c static DataSet ReDataSet(string FillSql) /P142 从配置文件中获取连接字符串创建新连接 dbstrcon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettingsccc); /连接之后打开 dbstrcon.Open(); /根据查询条件和连接产生数据适配器 SqlDataAdapter datapold = new SqlDataAdapter(FillSql, dbstrcon); /数据集对象 DataSet olddset = new DataSet
21、(); /数据集装入适配器中 datapold.Fill(olddset); /关闭连接 dbstrcon.Close(); /返回结果 return olddset;3.1.2 购物车公共类public class Class2 : System.Web.UI.Page public static DataSet godset=new DataSet();/定义购物的数据集 public static string hh;public Class2() public void godataset(string id) /向Hashtable表中添加购商品的id和数量 if (Sessionb
22、us = null) Hashtable ht = new Hashtable();/创建哈希表 ht.Add(id, 1); Sessionbus = ht; dafill(ht); else Hashtable ht = (Hashtable)Sessionbus;/从session中取值给新对象 if (htid = null) htid = 1; else htid = (int)htid + 1; Sessionbus = ht; dafill(ht); public void dafill(Hashtable ht) /查询商品信息添加到数据集中 godset.Clear(); f
23、oreach (DictionaryEntry de in ht)/foreach语句 hh = htde.Key.ToString().ToString(); SqlDataAdapter datap = new SqlDataAdapter(select * from tb_goods where id= + de.Key.ToString() + , System.Configuration.ConfigurationManager.AppSettingsccc); if (datap != null) datap.Fill(godset); public string showmess
24、age(string mes) /提示信息 return alert( + mes + );location=javascript:history.go(-1);3.2 网站主要功能实现解析3.2.1数据层访问层的设计与实现本系统的数据访问连接设置在web.config中, 当需要使用连接时使用dbstrcon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettingsccc);即可创建一个连接。如网站首页的index.aspx.cs的部分代码: SqlConnection strcon = new Sql
25、Connection(System.Configuration.ConfigurationManager.AppSettingsccc); protected void Page_Load(object sender, EventArgs e) /这里可设置查询最新几条新纪录 /新书 strcon.Open(); string newque = select top 8 * from tb_goods order by id desc;/查询结果倒叙排列 DataList1.DataSource = DataBase.ReDataSet(newque); DataList1.DataKeyFi
26、eld = id; DataList1.DataBind(); /推荐书 string newque2 = select top 8 * from tb_goods where hotgoods=1 order by id desc; DataList2.DataSource = DataBase.ReDataSet(newque2); DataList2.DataKeyField = id; DataList2.DataBind(); strcon.Close();3.2.2手动编写DIV模板很多时候控件生成的模板很不适合我们排版的需要,这个时候就得我们自己手动编写模板,但是在VS里的编辑有
27、着很大的局限性,我们了解控件的特性后才能更好地编辑出理想的模板。而对于DataList控件,只需在间插入我们想要的布局代码即可。 a href=whicheBook.aspx?id= asp:Image ID=Image1 runat=server Height=154px Width=98px ImageUrl= / a href=whicheBook.aspx?id= 作者: 上架时间: 原价: 现价: 然后通过后台代码的SqlConnection strcon = new SqlConnection(System.Configuration.ConfigurationManager.Ap
28、pSettingsccc);string newque = select top 8 * from tb_goods order by id desc;/查询结果倒叙排列DataList1.DataSource = DataBase.ReDataSet(newque);DataList1.DataBind();即可将所需的内容显示出来3.2.3最新上架商品的实现string newque = select top 8 * from tb_goods order by id desc;/查询结果倒序排列通过这个简单的倒序排列,我们即可将商品表中末八位的商品信息展示出来,这也是很多地方需要用到的技
29、巧。3.2.4页面传递参数实现定向信息输出许多时候,在浏览信息时我们希望点击即可看到更为详细的信息,如点击图书封面即可看到书本的相关信息,这个可以通过页面传递参数实现。在手动编辑模板中,我们用静态连接的形式,将相应的参数传递过去,如在图书详细页面中就是根据传递过来的bookID来查找对应书籍的相关信息的。模板里的连接代码:a href=whicheBook.aspx?id=WhicheBook.aspx.cs对应代码:strcon.Open();int message = Convert.ToInt32(Request.QueryStringID);/在地址栏里传递IDstring newqu
30、e = select * from tb_goods where id= + message;/查询图书信息DataList1.DataSource = DataBase.ReDataSet(newque);DataList1.DataBind();strcon.Close();3.2.5 检索信息时的多表查询关系型数据库着重减少数据冗余,所以设计的时候每个表保存的都是原始数据,在需要综合显示多个表的信息时,我们不可避免地会用到多表查询。如在订单功能中,客户看到的订单和管理员看到的订单不一样,管理员需要更详尽的订单信息以确保供货商能及时讲货物送到客户手中。管理员看到的订单:在服务器资源管理器的
31、数据库项目上右击新建查询,将需要的表添加进去,设置好它们的关联条件即可自动生成所需的SQL语句。选择tb_order的OrderID列,在下面的筛选中输入 =tb_order_detail.orderID 即可将两个表关联起来。同样的,选择tb_member的ID列,在下面的筛选中输入=tb_order_detail.goodsID。移除原来错误的关联,选上需要查找的信息,得到我们需要的关联自动生成的SQL语句SELECT tb_member.*, tb_order_detail.*, tb_order.*FROM tb_member INNER JOIN tb_order_detail ON
32、 tb_member.ID = tb_order_detail.goodsID INNER JOIN tb_order ON tb_order_detail.orderID = tb_order.OrderID将语句粘贴到代码里即可使用,在必要的时候加上查询条件。3.2.6 页面跳转时地址栏的变与不变/Server.Transfer(index.aspx);/相对于本文件所在的文件夹而言Response.Redirect(index.aspx);/使用上面的话地址栏不会发生改变3.2.7 在类中查询数据库与取出字段Edit_users.asp.cs在模板中取出查询的字段比较简单,但要通过后台代
33、码取出却有一定的难度。在修改个人信息时我们希望原来的信息会自动填好,等着我们去修改,实现的时候就得用代码自动填写了。strcon.Open(); /数据集对象 DataSet ds = new DataSet(); /根据查询条件和连接产生数据适配器 SqlDataAdapter sqlda = new SqlDataAdapter(select * from tb_member where username= + SessionmyshopUserName.ToString()+,strcon); /把适配器查到的结果给数据集 sqlda.Fill(ds); DataRow rows = d
34、s.Tables0.Select(); foreach (DataRow row in rows) TextBox2.Text = rowtrueName.ToString(); /TextBox3.Text = rowpassword.ToString(); TextBox5.Text = rowcity.ToString(); TextBox6.Text = rowaddress.ToString(); TextBox8.Text = rowcardNO.ToString(); TextBox7.Text = rowpostcode.ToString(); TextBox9.Text =
35、rowtel.ToString(); TextBox10.Text = rowemail.ToString(); strcon.Close();3.2.8 两个DropDownList控件关联,top.ascx在搜索栏和类别管理中都使用了两个DropDownList控件,我们希望的是第一个控件选择相应的选项后,后面一个控件发生相应的变化。/DropDownList1的字段绑定SqlDataAdapter sqlda = new SqlDataAdapter(select * from tb_supertype, strcon); sqlda.Fill(ds); DataRow rows = d
36、s.Tables0.Select(); ListItem newitem1 = new ListItem(); newitem1.Text = ; newitem1.Value =-1;/将这个值设为一个不可能的值,前面的条件就会出错了,不能为整数,否则也是个难办的事情 DropDownList1.Items.Add(newitem1); foreach (DataRow row in rows) ListItem newitem = new ListItem(); newitem.Text = rowTypeName.ToString();/把类别名称显示出来 newitem.Value =
37、 rowid.ToString(); /赋予id DropDownList1.Items.Add(newitem);/DropDownList2根据DropDownList1的值进行字段绑定SqlDataAdapter sqlda = new SqlDataAdapter(select * from tb_subtype where supertype= + DropDownList1.SelectedItem.Value, strcon);/下拉列表的重要部分 sqlda.Fill(ds); DataRow rows = ds.Tables0.Select(); ListItem newitem1 = new ListItem(); newitem1.Text = ;