网上商城购物系统毕业论文.doc
本科毕业论文(设计) 题 目 网上购物系统 院 (系) 计算机科学与技术学院 完成时间 2012年3月16号 网上购物系统摘 要随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与网技术为基础的信息系统正处于蓬勃发展的时期。网上购物系统,是在网络上建立一个虚拟的购物商场,避免了挑选商品的烦琐过程,使您的购物过程变得轻松、快捷、方便,很适合现代人快节奏的生活;同时又能有效的控制“商场”运营的成本,开辟了一个新的销售渠道。本系统是一个中小型的电子商务系统,可以为各类用户提供方便的在线购物环境,符合目前国内流行的电子商务模式。用户可以再系统中实现注册、登录、修改个人信息、分类查询商品信息、购物、管理购物车、结账和查看各种服务条款等功能。通过后台管理模块可以实现后台管理对会员、商品、物流、订单和系统的管理等功能。本系统采用Microsoft Visual C#/ASP.NET开发环境,以Microsoft Access为系统数据库开发,以IIS作为服务器运行,整个系统操作简便、界面友好、灵活实用。本论文主要介绍了本课题的开发背景、后台系统分析、后台系统的设计与实现。关键词 网上商城购物系统/系统管理/订单管理/物流管理/会员管理/商品管理目 录 中文摘要2英文摘要31. 绪论71.1开发背景 71.2 网上商城购物系统概述 71.3 开发运行环境81.3.1 硬件需求81.3.2 软件需求82. 后台系统设计92.1 后台系统目标 92.2 后台系统分析 92.2.1 后台系统功能结构 92.2.2 后台系统预览 102.2.3 后台设计流程图 152.3 开发工具选择 16 2.3.1 Microsoft Visual C# A介绍 16 2.3.2 Microsoft Access数据库工具介绍 173.后台系统功能实现183.1 C#后台连接数据库详细步骤183.2 后台主窗体设计193.3 后台登录窗口设计213.4 会员客户管理信息模块253.4.1 会员修改、删除模块253.4.2 会员/客户留言模块28 3.5商品管理信息模块303.5.1 商品栏目管理303.5.2 商品信息管理 323.5.3 添加商品信息 33 3.6 物流订单信息模块 363.6.1 物流管理模块 363.6.2 订单管理模块 37 3.7 系统管理员信息模块 383.7.1 管理员添加/删除、修改模块 38 3.8 系统信息管理模块 393.8.1 最新通知管理模块393.8.2 添加最新通知管理模块40 总结41 致谢 42 参考文献 43 附录 1 链接数据库类库44 1. 绪论 1.1 开发背景着计算机技术在各行各业日益广泛和深入的应用,网络的概念早已深入人心。网络在各行各业的发展战略中占据了重要的位置,成为商家不可分割的部分。商品的宣传已不只局限于电视与报纸,网络已成为商家展示自己的另一个舞台。商家建立网站,将商家各方面的宣传与服务展现于网络中,通过网络更可实现如网上购物、信息查寻等功能,这些在改变我们原有经营方式与经营理念的同时,也为商家带来了更高的效益。因此,对于商家来说,拥有一个属于自己的网站是至关重要的。“网上商城”实际上是运行在Web服务器中的一个Web运用程序。“网上商店”模拟一般的商店的经营模式。利用页面、脚本程序来实现“网上商城”的进货管理、销售管理、库存管理。互联网技术提供的不仅仅只是供需双方间的较低的交易成本,还有较低的选择费用和更多可供选择的商品。这些特点促使商家更多地通过使用网站来实现电子商务。1.2 网上商城购物系统描述 网上购物系统,是在网络上建立一个虚拟的购物商场,避免了挑选商品的烦琐过程,使您的购物过程变得轻松、快捷、方便,很适合现代人快节奏的生活;同时又能有效的控制“商场”运营的成本,开辟了一个新的销售渠道。本系统是一个中小型的电子商务系统,可以为各类用户提供方便的在线购物环境,符合符合目前国内流行的电子商务模式。用户可以再系统中实现注册、登录、修改个个人信息、分类查询商品信息、购物、管理购物车、结账和查看各种服务条款等功能。通过后台管理模块可以实现后台管理员对会员、商品、物流、订单和系统管理功能。1.3 开发运行环境 1.3.1 硬件需求q Cpu:1.5G以上的处理器q 内存:512GB,推荐1GB。q 硬盘:500MB以上剩余空间。 1.3.2 软件需求q 操作系统:Windows XPq 数据库工具:Microsoft Accessq 开发工具:Microsoft Visual Studio 20052.后台系统设计 2.1后台系统目标q 系统管理内容较多,需要完备的管理设置。q 添加大量商品栏目分类,商品信息、订单等内容管理。q 注册会员管理,系统管理员管理。q 最新商品通知管理。q 对基本信息、各种商品信息,会员的删除。q 广告,友情链接、导航目标等管理 2.2 后台系统分析 2.2.1 后台系统功能结构图如图所示:网上商城购物系统之后台主要功能模块对系统管理员的管理对会员管理对商品、订单管理对管理员的修改删除对管理员的添加对会员的修改删除对会员的添加管理对商品添加删除修改对商品的分类添加修改对商品订单的管理图2-1 后台系统功能模块图2.2.2 后台系统预览 后台管理系统由多个模块组成,包括商品管理、后台登陆、订单管理、注册会员以及系统管理员的管理等等,下面简单给出该系统的几个简单模块。 首先是后台登陆管理模块:图2-2 登录模块下面是后台系统主窗口的管理模块图:图2-3 主窗口商品管理相关图:图2-4 商品栏目管理图2-5 系统商品数据库前台管理图图2-6 添加商品管理系统其他相关信息图:图2-7 最新系统通知管理图2-8 添加通知管理图2-9系统留言管理物流订单管理:图2-10 物流订单管理图2-11 物流管理注册会员、系统管理员管理:图2-12 注册会员、管理员的管理2.2.3 后台系统设计流程图:管理员登陆后台管理系统对商品、系统信息的管理对会员的管理对系统管理员的管理商品添加删除修改管理商品订单管理系统相关信息管理对会员删除修改管理对管理员添加删除等图2-13后台系统设计流程图2.3 开发工具选择本系统的开发主要是用Microsoft Visual studio 2005的开发环境,利用Microsoft Access进行数据库的设计,以微软开发的IIS作为服务器运行。下面对它们分别进行简单的介绍。2.3.1 Microsoft Visual C#/A介绍q Microsoft Visual C#采用的是微软最新的开发工具Microsoft Visual studio 2005环境进行开发。C#是微软公司发布的一种面向对象的、运行于.NET FRAMEWORK之上的高级程序设计语言并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与JAVA有着惊人的相似;它包括了诸如单一继承、借口、与JAVA几乎同样的语法和变异成中间代码再运行的过程。但是C#与JAVA有着明显的不同,它借鉴了DELPHI的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET WINDOWS网络框架的主角。q C#(读做 "C sharp",中文译音暂时没有.专业人士一般读"C sharp",现在很多非专业一般读"C井"。C#是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。并且C#成为ECMA与ISO标准规范。C#看似基于C+写成,但又融入其它语言如Delphi、Java、VB等。q ASP 是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。 指 Active Server Pages(动态服务器页面) ,运行于 IIS 之中的程序 。ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。q IIS 指 Internet Information Services(因特网信息服务) ASP.net不仅仅是 Active Server Page (ASP) 的下一个版本,而且是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.net提供许多比现在的Web开发模式强大的优势。2.3.2 Microsoft Access 数据库工具介绍q Microsoft Office Access(前名 Microsoft Access)是由微软发布的关联式数据库管理系统。它结合了Microsoft Jet Database Engine和图形用户界面两项特点,是Microsoft Office的成员之一。其实Access也是微软公司另一个通讯程序的名字,想与ProComm以及其他类似程序来竞争。可是事后微软公司证实这是个失败的计划,数年后他们把名字重新命名于数据库软件。另外,Access还是C语言的一个函数名和一种交换机的主干道模式。q Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS,即Relational Database Management System),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。3.后台系统功能实现 3.1 C#后台连接数据库详细步骤q 通过C# Web.Config配置ConnectionStrings来连接后台的数据库后台新建一个连接数据库的类如图public OleDbConnection xm;/初始化数据库链接变量,表示数据源的链接打开状态public OleDbCommand cmd = new OleDbCommand();/表示数据的存储过程实例化数据存储命令 public DataSet ds = new DataSet();实例化数据集,表示数据在内存的缓存public OleDbDataAdapter adt = new OleDbDataAdapter();/实例化数据适配器,用于填充数据集和更新数据源 public Class1()/链接数据库的类1 xm = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath("/xmdata/%xm.mdb"); /第二个链接数据库的类public class condb2 :Page private OleDbConnection conn;初始化数据库链接变量 private OleDbDataAdapter oda = new OleDbDataAdapter();同上 private OleDbCommand cmd;同上 private DataSet myds=new DataSet();同上 public condb2()同上 conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("/xmdata/%xm.mdb"); public DataSet getDS(string strSQL)/通过数据集来进行数据在内存的缓存执行 myds = new DataSet(); oda = new OleDbDataAdapter(strSQL, conn); oda.Fill(myds); return myds; 然后通过C#程序语言using System.Data;using System.Configuration;using System.Collections;实例化所建的类来提取数据库 public Class1 xm = new Class1();/初始化数据库连接类public clsPublic s = new clsPublic();/初始化后台建的公共类,执行一些具备公共具备的简单功能 private DataSet mydsList = new DataSet();最后打开连接如示 conn.Open();/打开数据库链接 myds = new DataSet(); oda = new OleDbDataAdapter(strSQL, conn);/提取数据库 oda.Fill(myds, si, mi, "tab1");/填充数据源 conn.Close();/数据库连接关闭 return myds;/返回已经填充好的数据集通过DataSet获得提取后台数据库的数据,在前台显示。DataSet ds = new DataSet();ds = xm.getDataSet("SELECT * FROM menu");提取完数据库在关闭连接即完成数据库后台链接3.2 后台主窗体设计 网上商城购物系统后台管理主窗体效果如图:q 主窗体设计步骤如下:(1) 启动Visual studio 2005,选择“文件”点击“新建网站”对话框。将自己所要开发的项目名称填写以及保存路径。(2) 新建工作完成后,点击确定即进入项目开发编辑区。(3) 将所要开发的项目名称命名为“网上商城购物系统”。(4) 在该编辑页面右侧拉入一个PANEL控件,调整其大小,使其适合页面的大小,并在该控件上方植入一个小的table控件,定位两行两列,设置其大小,最后在里面植入所需的LABEL空间用于显示已经登录的用户。如图(5) 在开发区的工具栏“导航”项目中拉入控件”Menu”控件,然后在右键该控件在编辑区填写配置所需要的下拉菜单,命名为“商品内容配置“。如图所示(6) 在源代码中对下拉的名单进行代码连接配置,使前台下拉菜单形成一个下拉链接功能菜单如示<ul class="left_conten" id="oblog_2"><li><a href="shop_style.aspx" target="main" id="Tab201" onClick="javascript:switchTab('TabPage1','Tab201');">商品栏目配置</a></li><li><a href="shop.aspx" target="main" id="Tab206" onClick="javascript:switchTab('TabPage1','Tab206');">商品信息管理</a></li><li><a href="shop_add.aspx" target="main" id="Tab202a" onClick="javascript:switchTab('TabPage1','Tab202a');">添加商品信息</a></li>/其他类同省略</ul>(6)同样的控件在拉下建立三个,进行代码和控件配置,并命名为“用户配置”、“发货订单”、“版权信息“。(7)然后在后台写入代码即可在LABEL控件显示登录的用户如图 protected void Page_Load(object sender, EventArgs e) if (Session"isadminlogins" = null)/判断登录状态 Response.Redirect("./index.aspx"); this.Label1.Text = Session"isadminlogins".ToString();/将值赋给Label控件 3.3 后台登陆窗口设计后台登录窗体如图登录窗体用到的类如图/链接数据库的代码using System;using System.Data;/引用所有系统数据库类using System.Configuration;/引用系统配置using System.Collections;/引用系统所以链接using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;/引用系统的UI-WEBCONTROLS控件using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;/引用系统的UI-HTMLCONTROL控件 public Class1 xm = new Class1();/实例化化数据连接类 public clsPublic s = new clsPublic();实例化公关类/Class1类是后台新建的链接数据库的类public class Class1 : System.Web.UI.Page public OleDbConnection xm; public OleDbCommand cmd = new OleDbCommand(); public DataSet ds = new DataSet(); public OleDbDataAdapter adt = new OleDbDataAdapter(); public Class1() xm = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath("/xmdata/%xm.mdb"); 通过此类可以验证所登录的后台管理员用户。如示代码 protected void ImageButton1_Click(object sender, ImageClickEventArgs e) if (Page.IsValid = true) string webnz = this.webnz.Value.ToUpper(); if (webnz = Session"validateNum".ToString()/验证码验证 string webname = s.wipeScript(this.webname.Value.ToString(); string webpaw = FormsAuthentication.HashPasswordForStoringInConfigFile(this.webpaw.Value.ToString().Replace("'", "''"), "md5");/MD5加密 Class1 xm = new Class1(); DataSet ds = xm.getDataSet("select * from xm_admin where xm_name='" + webname + "'and xm_pwd='" + webpaw + "'"); int count = ds.Tables0.Rows.Count; if (count <= 0) s.rScript(this.GetType(), "<script>alert('帐号或密码错误!')</script>", this.Page);/验证用户 else Session"isadminlogins" = webname; Server.Transfer("index.html"); else s.rScript(this.GetType(), "<script>alert('验证码错误!')</script>", this.Page); 登录随机生成码设计:public partial class RandomNumImg : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) /生成随机生成器 Random random = new Random(); string validateNum = "" string s = "0123456789QWERTYUIOPASDFGHJKLZXCVBNM" for (int i = 0; i < 4; i+) validateNum += srandom.Next(s.Length); HttpContext.Current.Session"validateNum" = validateNum; / 在此处放置用户代码以初始化页面 Bitmap image = new Bitmap(int)Math.Ceiling(validateNum.Length * 12.5), 22); Graphics g = Graphics.FromImage(image); try /清空图片背景色 g.Clear(Color.White); Font font = new Font("Arial", 12, (FontStyle.Bold); LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.OrangeRed, Color.OrangeRed, 1.2f, true); g.DrawString(validateNum, font, brush, random.Next(1) + 1, random.Next(1) + 1); /画图片的边框线 /保存图片数据 MemoryStream stream = new MemoryStream(); image.Save(stream, ImageFormat.Jpeg); /输出图片 Response.Clear(); Response.ContentType = "image/jpeg" Response.BinaryWrite(stream.ToArray(); finally g.Dispose(); image.Dispose();/最后释放图片 3.4 会员客户管理信息模块会员客户管理信息模块包括对已经注册的会员信息修改、删除。3.4.1 会员修改删除模块该信息模块课对系统注册的会员客户进行密码修改,删除已经注册的客户。如图所示:q 该模块信息技术分析 在该信息模块中,我们首先利用实例化我们已经建立的数据库链接类Class1.CS来链接我们所需要的数据库。 然后我们通过protected void Page_Load来加载显示已经注册和数据库存着的数据库,并且显示到我们设置好的控件在前台显示。我们利用SELECT来提取后台数据库。Select column_list from table where条件 order by column_list 排序(DESC|ASC)Table:所需要查找的后台数据表名称。Where:后面根据自己的条件来查找出自己所需要的数据库。column_list:自己做需要查找的列名。order by子句 :确定是否将查询出的结果按一列或多列中的数据进行排序,DESC (降序)ASC(升序)下面如图就是代码实现的过程: DataSet ds = new DataSet(); ds = xm.getDataSet("SELECT * FROM user_a ORDER BY id DESC"); q 该模块实现过程 在该信息模块中使用到的数据表是:“user_a”表 (1) 新建一个动态页面,拉入一个表格table控件,在里面植入所需一个repeater控件、一个literal控件和一个checkbox控件,在表格顶端重新再拉入一个TABLE控件,将标题写为“注册用户管理”。控件ID控件别名TableTableCheckBoxCheckbox1LiteralLiteral1RepeaterList_Links (2)我们介绍一下Repeater控件:Repeater控件可用于显示重复的项目列表,使这些项目被限制在控件通过DataSet把数据绑定到该控件模块,显示到前台在Repeater控件里面配置修改模板ItemTemplate,在里面添加相应的TextBox控件和Button控件,TextBox用于显示后台的用户名和密码相关信息,Button用于实现功能修改和删除事件。将两个Button分别命名为“修改”、“删除”,TextBox密码框设置为密码属性。(3)然后编写相应的代码再后台,点击“修改”按钮编写事件代码如图 if (e.CommandName = "Button1") TextBox tbt = (TextBox)e.Item.FindControl("txtlinkTitle"); TextBox tbt1 = (TextBox)e.Item.FindControl("txtlinkTitles"); string bb = FormsAuthentication.HashPasswordForStoringInConfigFile(tbt1.Text, "md5"); Literal lt = (Literal)e.Item.FindControl("Literal2"); xm.setDS("UPDATE user_a SET user_pwd='" + bb + "' WHERE id=" + lt.Text); s.rScript(this.GetType(), "<script>alert('更新成功!');</script>", this.Page); 修改成功点击“删除”按钮编写相应代码如图:protected void list_links_ItemDataBound(object sender, RepeaterItemEventArgs e) Button btnDel = (Button)e.Item.FindControl("Button2"); btnDel.Attributes.Add("onclick", "return confirm('是否确定要删除此栏目?');");else if (e.CommandName = "Button2") Literal lt2 = (Literal)e.Item.FindControl("Literal2"); xm.setDS("DELETE FROM user_a WHERE id=" + lt2.Text); s.rScript(this.GetType(), "<script>alert('删除成功!');location='name.aspx?page=" + Session"lp".ToString() + "'</script>", this.Page); (4)利用Literal控件可实现客户端源脚本代码效率更加提高,通过CheckBox可以选择需要删除的项,通过删除链接直接删除。代码所示:if (Request.QueryString"ac" != null && Request.QueryString"ac".ToString().ToLower() = "delall") string lid = Request.Form"sLink".ToString().Split(','); for (int i = 0; i < lid.Length; i+) xm.setDS("DELETE FROM user_a WHERE id=" + lidi.ToString();