网上商城购物系统毕业论文
三门峡职业技术学院
毕业设计(论文)
题目:姓
学
系
专名号部业[1**********]7_信息工程系指导教师2013年5月5日
网上商城购物系统
摘要
随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与网技术为基础的信息系统正处于蓬勃发展的时期。网上购物系统,是在网络上建立一个虚拟的购物商场,避免了挑选商品的烦琐过程,使您的购物过程变得轻松、快捷、方便,很适合现代人快节奏的生活;同时又能有效的控制“商场”运营的成本,开辟了一个新的销售渠道。
本系统是一个中小型的电子商务系统,可以为各类用户提供方便的在线购物环境,符合目前国内流行的电子商务模式。用户可以再系统中实现注册、登录、修改个人信息、分类查询商品信息、购物、管理购物车、结账和查看各种服务条款等功能。通过后台管理模块可以实现后台管理对会员、商品、物流、订单和系统的管理等功能。本系统采用MicrosoftVisualC#/ASP.NET开发环境,以MicrosoftAccess为系统数据库开发,以IIS作为服务器运行,整个系统操作简便、界面友好、灵活实用。本论文主要介绍了本课题的开发背景、后台系统分析、后台系统的设计与实现。
关键词网上商城购物系统,系统管理,MicrosoftVisualC#/ASP.NET,MicrosoftAccess
ONLINESHOPPINGSYSTEM
ABSTRACT
Withthedevelopmentoftherapiddevelopmentofsocialeconomyandscienceandtechnology,therapiddevelopmentofcomputerindustry,informationsystembasedoncomputerandnetworktechnologyasthefoundationisinaperiodofvigorousdevelopment.Onlineshoppingsystem,istobuildavirtualshoppingontheInternet,toavoidthecumbersomeprocessofselectionofgoods,makeyourshoppingprocesseasy,fast,convenient,verysuitableforthefastpaceofmodernlife;whileeffectivecontrol"themarket"theoperationcost,openanewsaleschannels.
Thissystemisasmallandmedium-sizede-commercesystem,canprovideconvenientonlineshoppingenvironmentforalltypesofusers,inlinewiththecurrentdomesticpopulare-commercemode.Userscanregister,login,modifypersonalinformation,classifiedquerycommodityinformation,shopping,shoppingcart,checkoutandmanagementviewthevarioustermsofservicefunctionandsystem.Throughthebackgroundmanagementmodulecanrealizebackstagemanagementofmembership,goods,logistics,orderandsystemmanagementfunctions.ThesystemusestheMicrosoftVisualC#/ASP.NETdevelopmentenvironment,usingMicrosoftAccessasthedatabasedevelopmentsystem,usingIISastheserverisrunning,thesystemhastheadvantagesofsimpleoperation,friendlyinterface,flexibleandpractical.Thispapermainlyintroducedthistopicdevelopmentbackground,thesystemanalysis,systemdesignandimplementation.
KEYWORDSonlinemallshoppingsystem,systemmanagement,MicrosoftVisualC#/ASP.NET,MicrosoftAccess
目录
前言..............................................................................................................V
第1章绪论..................................................................................................1§1.1开发背景......................................................................................1§1.2网上商城购物系统描述..............................................................1§1.3开发运行环境..............................................................................1§1.3.1硬件需求............................................................................1§1.3.2软件需求............................................................................1
第2章系统概要设计..................................................................................3§2.1后台系统目标...............................................................................3§2.2后台系统分析..............................................................................3§2.2.1后台系统功能结构图如图所示:...................................3§2.2.2后台系统预览....................................................................4§2.2.3后台系统设计流程图:....................................................8§2.3开发工具选择..............................................................................8§2.3.1MicrosoftVisualC#/Asp.net介绍............................9§2.3.2MicrosoftAccess数据库工具介绍...........................10
第3章子系统详细设计与实现................................................................11§3.1C#后台连接数据库详细步骤....................................................11§3.2后台主窗体设计........................................................................12§3.3后台登陆窗口设计....................................................................14§3.4会员客户管理信息模块............................................................17
§3.4.1会员修改删除模块..........................................................17§3.4.2会员客户留言模块..........................................................20§3.5商品管理信息模块....................................................................22§3.5.1商品栏目管理..................................................................22§3.5.2商品信息管理..................................................................24§3.5.3添加商品信息..................................................................24§3.6物流订单信息模块....................................................................27§3.6.1物流管理模块..................................................................27§3.6.2订单管理模块..................................................................29§3.7系统管理员信息模块................................................................31§3.7.1管理员修改、删除、添加模块.....................................31§3.8系统信息管理模块....................................................................31§3.8.1最新通知管理模块..........................................................32结论............................................................................................................34参考文献......................................................................................................35致谢............................................................................................................36附录............................................................................................................37
前言
网上商城是为了精简商业活动中场所所带来的成本以及地理位置所带来的商业活动不便所开发的,依托互联网来进行商业活动的平台。它提供一套基于互联网的商品采购与交易模式,打破商城和用户之间由于场所限制带来的购物不便,同时,它能够降低商场场地所带来的成本,将更大的实惠反馈给购买者。从而为购买者和商家开辟一条共赢的道路。本设计的最终目标是建立一个基于互联网的平台,它能够分别为商品的购买者和商场提供不同的服务。其中,商品购买者能够通过此平台来进行商品浏览、选购;商场可以通过此平台来进行订单处理和库存处理。
本设计共3章,各章节的主要内容如下:
第1章主要介绍了网上商城购物系统的开发背景、系统描述以及运行环境。
第2章介绍的是后台系统目标、后台系统分析及开发工具(MicrosoftVisualC#/Asp.net、MicrosoftAccess)的选择。
第3章讲述的是子系统详细的设计与实现,分别介绍了C#后台连接数据库详细步骤、后台主窗体设计、后台登陆窗口设计、会员客户管理信息模块(会员修改删除模块、会员客户留言模块)、商品管理信息模块(商品栏目管理、商品信息管理、添加商品信息)、物流订单信息模块(物流管理模块、订单管理模块)、系统管理员信息模块(管理员修改、删除、添加模块)及系统信息管理模块(最新通知管理模块)。
由于编写时间有限,文中难免有不足之处,敬请各位读者批评指正。
第1章绪论
1.1开发背景
本着计算机技术在各行各业日益广泛和深入的应用,网络的概念早已深入人心。网络在各行各业的发展战略中占据了重要的位置,成为商家不可分割的部分。商品的宣传已不只局限于电视与报纸,网络已成为商家展示自己的另一个舞台。商家建立网站,将商家各方面的宣传与服务展现于网络中,通过网络更可实现如网上购物、信息查寻等功能,这些在改变我们原有经营方式与经营理念的同时,也为商家带来了更高的效益。因此,对于商家来说,拥有一个属于自己的网站是至关重要的。“网上商城”实际上是运行在Web服务器中的一个Web运用程序。“网上商店”模拟一般的商店的经营模式。利用页面、脚本程序来实现“网上商城”的进货管理、销售管理、库存管理。互联网技术提供的不仅仅只是供需双方间的较低的交易成本,还有较低的选择费用和更多可供选择的商品。这些特点促使商家更多地通过使用网站来实现电子商务。
1.2网上商城购物系统描述
网上购物系统,是在网络上建立一个虚拟的购物商场,避免了挑选商品的烦琐过程,使您的购物过程变得轻松、快捷、方便,很适合现代人快节奏的生活;同时又能有效的控制“商场”运营的成本,开辟了一个新的销售渠道。本系统是一个中小型的电子商务系统,可以为各类用户提供方便的在线购物环境,符合目前国内流行的电子商务模式。用户可以再系统中实现注册、登录、修改个人信息、分类查询商品信息、购物、管理购物车、结账和查看各种服务条款等功能。通过后台管理模块可以实现后台管理员对会员、商品、物流、订单和系统管理功能。
1.3开发运行环境
1.3.1硬件需求
1.Cpu:1.5G以上的处理器
2.内存:512GB,推荐1GB。
3.硬盘:500MB以上剩余空间。
1.3.2软件需求
1.操作系统:WindowsXP
2.数据库工具:MicrosoftAccess
3.开发工具:MicrosoftVisualStudio2005
第2章系统概要设计
2.1后台系统目标
1.系统管理内容较多,需要完备的管理设置。
2.添加大量商品栏目分类,商品信息、订单等内容管理。
3.注册会员管理,系统管理员管理。
4.最新商品通知管理。
5.对基本信息、各种商品信息,会员的删除。
6.广告,友情链接、导航目标等管理
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开发工具选择
本系统的开发主要是用MicrosoftVisualstudio2005的开发环境,利用MicrosoftAccess进行数据库的设计,以微软开发的IIS作为服务器运行。下面对它们分别进行简单的介绍。
2.3.1MicrosoftVisualC#/Asp.net介绍
1.MicrosoftVisualC#采用的是微软最新的开发工具MicrosoftVisualstudio2005环境进行开发。C#是微软公司发布的一种面向对象的、运行于.NETFRAMEWORK之上的高级程序设计语言并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员AndersHejlsberg的最新成果。C#看起来与JAVA有着惊人的相似;它包括了诸如单一继承、借口、与JAVA几乎同样的语法和变异成中间代码再运行的过程。但是C#与JAVA有着明显的不同,它借鉴了DELPHI的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETWINDOWS网络框架的主角。
2.C#(读做"Csharp",中文译音暂时没有.专业人士一般读"Csharp",现在很多非专业一般读"C井"。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。并且C#成为ECMA与ISO标准规范。C#看似基于C++写成,但又融入其它语言如Delphi、Java、VB等。
3.ASP是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。指ActiveServerPages(动态服务器页面),运行于IIS之中的程序。ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。
4.IIS指InternetInformationServices(因特网信息服务)ASP.net不仅仅是ActiveServerPage(ASP)的下一个版本,而且是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.net提供许多比现在的Web开发模式强大的优势。
2.3.2MicrosoftAccess数据库工具介绍
1.MicrosoftOfficeAccess(前名MicrosoftAccess)是由微软发布的关联式数据库管理系统。它结合了MicrosoftJetDatabaseEngine和图形用户界面两项特点,是MicrosoftOffice的成员之一。其实Access也是微软公司另一个通讯程序的名字,想与ProComm以及其他类似程序来竞争。可是事后微软公司证实这是个失败的计划,数年后他们把名字重新命名于数据库软件。另外,Access还是C语言的一个函数名和一种交换机的主干道模式。
2.Access是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS,即RelationalDatabaseManagementSystem),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。
第3章子系统详细设计与实现
3.1C#后台连接数据库详细步骤
通过C#Web.Config配置ConnectionStrings来连接后台的数据库后台新建一个连接数据库的类
publicOleDbConnectionxm;//初始化数据库链接变量,表示数据源的链接打开状态
publicOleDbCommandcmd=newOleDbCommand();//表示数据的存储过程实例化数据存储命令
publicDataSetds=newDataSet();实例化数据集,表示数据在内存的缓存
publicOleDbDataAdapteradt=newOleDbDataAdapter();//实例化数据适配器,用于填充数据集和更新数据源
publicClass1()//链接数据库的类1
{
xm=newOleDbConnection("provider=microsoft.jet.oledb.4.0;datasource="+Server.MapPath("~/xmdata/%xm.mdb"));
}
//第二个链接数据库的类
publicclasscondb2:Page
{
privateOleDbConnectionconn;初始化数据库链接变量
privateOleDbDataAdapteroda=newOleDbDataAdapter();同上privateOleDbCommandcmd;同上
privateDataSetmyds=newDataSet();同上
publiccondb2()同上
{
conn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath(@"~/xmdata/%xm.mdb"));
}
publicDataSetgetDS(stringstrSQL)//通过数据集来进行数据在内存的缓存执行
{
myds=newDataSet();
oda=newOleDbDataAdapter(strSQL,conn);
oda.Fill(myds);
returnmyds;
}
然后通过C#程序语言
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
实例化所建的类来提取数据库
publicClass1xm=newClass1();//初始化数据库连接类
publicclsPublics=newclsPublic();//初始化后台建的公共类,执行一些具备公共具备的简单功能
privateDataSetmydsList=newDataSet();
最后打开连接如示
conn.Open();//打开数据库链接
myds=newDataSet();
oda=newOleDbDataAdapter(strSQL,conn);//提取数据库
oda.Fill(myds,si,mi,"tab1");//填充数据源
conn.Close();//数据库连接关闭
returnmyds;//返回已经填充好的数据集
通过DataSet获得提取后台数据库的数据,在前台显示。
DataSetds=newDataSet();
ds=xm.getDataSet("SELECT*FROM[menu]");
提取完数据库在关闭连接即完成数据库后台链接
3.2后台主窗体设计
网上商城购物系统后台管理主窗体效果如图:
图3-1主窗体
主窗体设计步骤如下:
(1)启动Visualstudio2005,选择“文件”点击“新建网站”对话框。将自己
所要开发的项目名称填写以及保存路径。
(2)新建工作完成后,点击确定即进入项目开发编辑区。
(3)将所要开发的项目名称命名为“网上商城购物系统”。
(4)在该编辑页面右侧拉入一个PANEL控件,调整其大小,使其适合页面的
大小,并在该控件上方植入一个小的table控件,定位两行两列,设置其大小,最后在里面植入所需的LABEL空间用于显示已经登录的用户。
如图
图3-2
(5)在开发区的工具栏“导航”项目中拉入控件”Menu”控件,然后在右键该
控件在编辑区填写配置所需要的下拉菜单,命名为“商品栏目配置“。
如图所示
图3-3
(6)在源代码中对下拉的名单进行代码连接配置,使前台下拉菜单形成一个
下拉链接功能菜单如示
………………………………………………//其他类同省略
(7)同样的控件在拉下建立三个,进行代码和控件配置,并命名为“用户配置”、“发货订单”、“版权信息“。
(8)然后在后台写入代码即可在LABEL控件显示登录的用户如图protectedvoidPage_Load(objectsender,EventArgse)
{
if(Session["isadminlogins"]==null)//判断登录状态
{
Response.Redirect("../index.aspx");
}
this.Label1.Text=Session["isadminlogins"].ToString();//将值赋给Label控件
}
3.3后台登陆窗口设计
后台登录窗体如图
图3-4登录窗体
//链接数据库的代码
using
using
using
using
usingSystem;System.Data;//引用所有系统数据库类System.Configuration;//引用系统配置System.Collections;//引用系统所以链接System.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;//引用系统的UI-WEBCONTROLS控件usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;//引用系统的UI-HTMLCONTROL控件
publicClass1xm=newClass1();//实例化化数据连接类
publicclsPublics=newclsPublic();实例化公关类
//Class1类是后台新建的链接数据库的类
publicclassClass1:System.Web.UI.Page
{
publicOleDbConnectionxm;
publicOleDbCommandcmd=newOleDbCommand();
publicDataSetds=newDataSet();
publicOleDbDataAdapteradt=newOleDbDataAdapter();
publicClass1()
{
xm=newOleDbConnection("provider=microsoft.jet.oledb.4.0;datasource="+Server.MapPath("~/xmdata/%xm.mdb"));
}
通过此类可以验证所登录的后台管理员用户。如示代码
protectedvoidImageButton1_Click(objectsender,ImageClickEventArgse)
{
if(Page.IsValid==true)
{
stringwebnz=this.webnz.Value.ToUpper();
if(webnz==Session["validateNum"].ToString())//验证码验证
{
stringwebname=
s.wipeScript(this.webname.Value.ToString());
stringwebpaw=
FormsAuthentication.HashPasswordForStoringInConfigFile(this.webpaw.Value.ToString().Replace("'","''"),"md5");//MD5加密
Class1xm=newClass1();
DataSetds=xm.getDataSet("select*from[xm_admin]where
xm_name='"+webname+"'andxm_pwd='"+webpaw+"'");
intcount=ds.Tables[0].Rows.Count;
if(count
{
s.rScript(this.GetType(),"",this.Page);//验证用户
}
else
{
Session["isadminlogins"]=webname;
Server.Transfer("index.html");
}
}
else
{
s.rScript(this.GetType(),"",this.Page);
}
}
登录随机生成码设计:
publicpartialclassRandomNumImg:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
//生成随机生成器
Randomrandom=newRandom();
stringvalidateNum="";
strings="0123456789QWERTYUIOPASDFGHJKLZXCVBNM";
for(inti=0;i
{
validateNum+=s[random.Next(s.Length)];
}
HttpContext.Current.Session["validateNum"]=validateNum;
//在此处放置用户代码以初始化页面
Bitmapimage=newBitmap((int)Math.Ceiling(validateNum.Length*
12.5),22);
Graphicsg=Graphics.FromImage(image);
try
{
//清空图片背景色
g.Clear(Color.White);
Fontfont=newFont("Arial",12,(FontStyle.Bold));
LinearGradientBrushbrush=newLinearGradientBrush(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);
//画图片的边框线
//保存图片数据
MemoryStreamstream=newMemoryStream();
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会员修改删除模块
该信息模块课对系统注册的会员客户进行密码修改,删除已经注册的客户。
如图所示:
图3-5用户注册管理
1.该模块信息技术分析
在该信息模块中,我们首先利用实例化我们已经建立的数据库链接类Class1.CS来链接我们所需要的数据库。
然后我们通过protectedvoidPage_Load来加载显示已经注册和数据库存着的数据库,并且显示到我们设置好的控件在前台显示。我们利用SELECT来提取后台数据库。
Selectcolumn_listfromtablewhere[条件]orderbycolumn_list排序(DESC|ASC)
Table:所需要查找的后台数据表名称。
Where:后面根据自己的条件来查找出自己所需要的数据库。
column_list:自己做需要查找的列名。
orderby子句:确定是否将查询出的结果按一列或多列中的数据进行排序,DESC(降序)ASC(升序)
下面如图就是代码实现的过程:
DataSetds=newDataSet();
ds=xm.getDataSet("SELECT*FROM[user_a]ORDERBYidDESC");
2.该模块实现过程
在该信息模块中使用到的数据表是:“user_a”表
(1)新建一个动态页面,拉入一个表格table控件,在里面植入所需一个repeater控件、一个literal控件和一个checkbox控件,在表格顶端重新再拉入一个TABLE控件,将标题写为“注册用户管理”。
控件ID控件别名
Table
CheckBox
Literal
RepeaterTableCheckbox1Literal1List_Links
(2)我们介绍一下Repeater控件:Repeater控件可用于显示重复的项目列表,使这些项目被限制在控件通过DataSet把数据绑定到该控件模块,显示到前台
在Repeater控件里面配置修改模板ItemTemplate,在里面添加相应的TextBox控件和Button控件,TextBox用于显示后台的用户名和密码相关信息,Button用于实现功能修改和删除事件。将两个Button分别命名为“修改”、“删除”,TextBox密码框设置为密码属性。
(3)然后编写相应的代码再后台,点击“修改”按钮编写事件代码如图3-6if(e.CommandName=="Button1")
{
TextBoxtbt=(TextBox)e.Item.FindControl("txtlinkTitle");
TextBoxtbt1=(TextBox)e.Item.FindControl("txtlinkTitles");
stringbb=
FormsAuthentication.HashPasswordForStoringInConfigFile(tbt1.Text,"md5");
Literallt=(Literal)e.Item.FindControl("Literal2");
xm.setDS("UPDATEuser_aSETuser_pwd='"+bb+"'WHEREid="
+lt.Text);
s.rScript(this.GetType(),"",this.Page);
}
图3-6
修改成功
点击“删除”按钮编写相应代码如图
3-7:
图3-7
protectedvoidlist_links_ItemDataBound(objectsender,
RepeaterItemEventArgse)
{
ButtonbtnDel=(Button)e.Item.FindControl("Button2");
btnDel.Attributes.Add("onclick","returnconfirm('是否确定要删除此栏目?');");
}
elseif(e.CommandName=="Button2")
{
Literallt2=(Literal)e.Item.FindControl("Literal2");
xm.setDS("DELETEFROMuser_aWHEREid="+lt2.Text);
s.rScript(this.GetType(),"",this.Page);
}
(4)利用Literal控件可实现客户端源脚本代码效率更加提高,通过CheckBox可以选择需要删除的项,通过删除链接直接删除。
代码所示:
if(Request.QueryString["ac"]!=null&&
Request.QueryString["ac"].ToString().ToLower()=="delall")
{
string[]lid=
Request.Form["sLink"].ToString().Split(',');
for(inti=0;i
{
xm.setDS("DELETEFROM[user_a]WHEREid="+
lid[i].ToString());
}
s.rScript(this.GetType(),"",this.Page);
3.4.2会员客户留言模块
该模块可以使注册和非本站用户匿名留言,提建议,进一步可以增加客户机用户对本站的建议,使网站越办越好。
如图:后台留言管理模块
图3-8网站栏目配置
该模块实现过程和客户修改模块相似在该模块信息中,同样也采用了这三个主要的控件(CheckBox、Literal、Repeater),具体用法和上面类似。
下面简单说一下具体里面重要的功能代码:
首先在页面加载时候自动从数据库调取数据如示:
DataSetds=newDataSet();
ds=xm.getDataSet("SELECT*FROM[book]ORDERBYid
DESC");//调取数据库
if(ds.Tables[0].Rows.Count>0)
{
ds=xm.getDataSet2("SELECT*FROM[book]ORDERBYid
DESC",m,15);
Paginationpg=new
Pagination(ds.Tables[0].Rows.Count,l,"book.aspx",15);
this.Literal1.Text=pg.showPage();
this.list_links.DataSource=
ds.Tables[0].DefaultView;
this.list_links.DataBind();
}
点击删除按钮:
elseif(Request.QueryString["ac"].ToString().ToLower()==
"delsingle")
{
DataSetds=newDataSet();设置实例化数据集
ds=xm.getDataSet("SELECT*FROM[book]WHEREid="+
Request.QueryString["pid"].ToString());//提取数据
if(xm.setDS("DELETEFROM[book]WHEREid="+
Request.QueryString["pid"].ToString()))//判断删除是否完成
{
s.rScript(this.GetType(),"",this.Page);
}
else
{
s.rScript(this.GetType(),"",this.Page);
}
}
elseif(Request.QueryString["ac"].ToString().ToLower()=="delall")
{
s.rScript(this.GetType(),"",this.Page);
}
}
else
{
if(Request.QueryString["ac"].ToString().ToLower()==
"delall")
{
string[]pid=
Request.Form["sProduct"].ToString().Split(',');
for(inti=0;i
{
xm.setDS("DELETEFROM[book]WHEREid="+
pid[i].ToString());
}
s.rScript(this.GetType(),"",this.Page);
}
点击管理员回复跳转到页面“book_list.aspx”如图
图3-9添加商品信息
点击确定按钮进行代码编辑即可回复留言:
protectedvoidImageButton1_Click1(objectsender,ImageClickEventArgse)
{
stringid=Request.QueryString["id"].ToString();
stringa1=s.wipeScript(this.TextBox1.Text);
xm.setDS("UPDATE[book]SETbook_kf='"+a1+"'WHEREid="+id);s.rScript(this.GetType(),"",this.Page);
}
3.5商品管理信息模块
商品管理信息模块包括商品栏目分类管理、商品信息管理、添加商品等。
3.5.1商品栏目管理
该模块可以管理商品的分类和类别添加。如图
图3-10商品栏目分类表
1.用到的数据表:shop_styl(商品栏目分类表)
2.该栏目显示修改删除方面类似于会员修改删除方面,与上相比在添加方面增加了请求验证控件,并且引用了数据库插入语法操作Insert。
3.下面我们单独重点说一下请求验证控件的功能实现,如图
3-11添加栏目
红色显示即为请求验证控件,它可以提示用户做一些必要的操作。
(1)首先在该窗口“添加栏目标题”这个表格中拉入需要的控件,TextBox1个、RequiredFiledValidator(请求验证控件)1个、ImageButton一个。
(2)然后在RequiredFiledValidator的属性设置其ControlToValidate为对应的TextBox,设置其的ErrorMessage为“不能为空”。
(3)关于数据库的插入语法操作,我们简单介绍一下
InsertInto语句的语法格式如下:INSERT
INTOtable_name[(column_list)]Values(data_values)
Table_name:要添加记录的数据表名称Column_list:是表中的字段列表,表示向表中哪些字段插入数据。如
果是多个字段,字段之间用逗号分割。不指定column_list,默认向数据表中所有字段插入数据。
Data_values:要添加的数据列表,各个数据之间使用逗号分隔。数据
列表中的个数、数据类型必须和字段列表中的字段个数、数据项类型一致。
在我们点击该页面的我们添加的按钮就会执行插入操作
图3-12
//添加成功会弹出窗口提示
protectedvoidImageButton1_Click(objectsender,ImageClickEventArgse)
{
stringa1=this.TextBox1.Text;
DataSetds=xm.getDataSet("INSERTINTO[shop_styl](shop_styl)VALUES('"+a1+"')");//执行插入新的数据
s.rScript(this.GetType(),"",this.Page);
}
3.5.2商品信息管理
该模块包括商品的修改、删除等。如图
图3-13商品栏目分类表
1.用到的数据表:shop(商品信息表)
2.该模块实现方法类同与上面讲述的会员添加删除模块,所使用的控件也大致一样
3.数据库显示方法和会员管理模块也大致一样
3.5.3添加商品信息
该模块主要包括商品信息的添加更新,如图
图3-14添加商品信息
1.用到的数据表:shop(商品信息表)
2.该模块主要采用表格布局,引入控件TextBox(文本框)、DropdownList(下拉菜单)、FileUpload(上传控件)、Button、ImageButton、Repeater等控件
3.重点讲一下图片上传,浏览照片通过上传按钮上传到相应的路径和后台数据库,代码如示:
(1)首先点击Button写上传方面的代码:
通过TRY方法判定条件
Try{
//判断图片大小是不是超过限制
if(intFileLength>800000)
{
this.Label1.Text="图片大于5000k,不能上传";
return;
}
//判断所上传的路径是否存在,不存在的话自动创建文件夹
if(!System.IO.Directory.Exists(Server.MapPath(strUpPath)))
{
System.IO.Directory.CreateDirectory(Server.MapPath(strUpPath1));
}
stringstrUrl=Server.MapPath(strUpPath1+@"/"+
lnFileName);
stringstrUrl1=Server.MapPath(strUpPath1+@"/"+
lnFileName1);
stringstrUrl2=Server.MapPath(strUpPath2
+@"/"+
lnFileName2);
//最后开始上传文件
this.FileUpload1.SaveAs(strUrl);
MakeThumbnail(strUrl,strUrl1,120,169,"Cut");//截取上传图片
SmallPicWidth1(strUrl,strUrl2,540,379);
this.TextBox5.Text=strUpPath+@"/"+lnFileName2;
this.TextBox6.Text=strUpPath+@"/"+lnFileName1;
xm.setDS("INSERTINTOshop_shop(shop_id,shop_tp,shop_tp1)
VALUES('0','"+TextBox5.Text+"','"+TextBox6.Text+
"')");
xm.getDataSet("SELECT*FROMshop_shopWHEREshop_id='0'");
this.Repeater1.DataSource=xm.ds.Tables[0].DefaultView;
this.Repeater1.DataBind();
如果不符合要求则TRY方法上传失败
catch(System.Exceptionex)
{
this.Label1.Text="图片上传失败:"+ex.Message;
}
(2)上传时候需要创建一个方法,即上述代码所示的SmallPicWidth1和MakeThumbnail方法截取图片大小
publicstaticvoidMakeThumbnail(stringoriginalImagePath,stringthumbnailPath,intwidth,intheight,stringmode)
{
System.Drawing.ImageoriginalImage=
System.Drawing.Image.FromFile(originalImagePath);
。。。。。。。。。。。。。。。。。。。//声明变量省略
switch(mode)
{
case"HW"://指定高宽缩放(可能变形)
break;
case"W"://指定宽,高按比例
toheight=originalImage.Height*width/
originalImage.Width;
break;
case"H"://指定高,宽按比例
towidth=originalImage.Width*height/
originalImage.Height;
break;
case"Cut"://指定高宽裁减(不变形)
。。。。。。。。。。。。。。。。。。。。。。。。//判定条件省略
break;
default:
break;
}
//新建一个bmp图片
System.Drawing.Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight);
//新建一个画板
System.Drawing.Graphicsg=
System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode=
System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode=
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage,newSystem.Drawing.Rectangle(0,0,
towidth,toheight),
newSystem.Drawing.Rectangle(x,y,ow,oh),
System.Drawing.GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath,
System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch(System.Exceptione)
(3)最后通过图片按钮“确定”将数据提取到后台数据库,方法和上面讲述的插入操作类似,不再讲解。
3.6物流订单信息模块
该信息模块主要包括发货和订单管理的主要功能模块。
3.6.1物流管理模块
该模块主要包括对药发货订单的配置,修改、删除等。如图
图3-15发货信息表
1.用到的数据表:[ment](发货信息表)
2.该模块修改删除模块和商品管理修改删除模块功能相似,实现方法也类同,不再做过多的技术介绍,添加物流订单信息业和添加商品栏目的实现相同。
3.下面简单说明一下
在文本框修改自己所要写的信息,点击修改会提示
图
3-16
删除此订单时
图3-17
添加订单
图3-18
3.6.2
订单管理模块
该模块主要包括订单发货修改、删除等。如图
图3-19订单信息表
1.用到的数据表:[pay](订单信息表)
2.该模块也和上面实现方法类似,只不过上面的修改功能变成发货而已,删除功能和上面类同,不再做过多的讲解。
3.下面简单说一下发货的管理如图
点击“发货”,配置所需要的信息和订单号
图3-20添加商品信息
(1)发货管理主要涉及三个控件DropdownList、TextBox、Button按钮。
(2)
通过表格布局和上面其他的布局基本类同,通过点击确定按钮将值添加到
后台数据库,更新数据库订单信息。如图
图3-21
(3)具体代码和上面讲解的插入数据库代码类似
xm.setDS("INSERTINTO[ment](ment_name,ment_ems)VALUES('"+a3+"','"+a1+"')");//插入数据
s.rScript(this.GetType(),"",this.Page);//修改成功
S是上面讲解的公共类的实例化一个变量对象。
publicClass1xm=newClass1();
publicclsPublics=newclsPublic();
3.7系统管理员信息模块
该信息模块主要包括了系统管理员后台的修改、添加、删除等。
3.7.1管理员修改、删除、添加模块
该信息模块如图
图3-22管理员信息表
1.用到的数据表:[xm_admin](管理员信息表)
2.该模块管理员修改删除模块和上面类同,添加管理员模块也和上面类同,也不做过多的讲解。
3.添加账户和上面会员管理模块讲解的插入更新方法一样,代码也类同。此模块可以修改后台管理员的密码和添加新的后台管理员。
3.8系统信息管理模块
该信息模块主要包括本地信息显示、最新通知管理模块、广告链接管理、友情链接管理、最新通知管理模块、导航模块。
本地信息显示如图
3-23本地信息
该信息模块主要通过读取系统信息来在表格中显示。
td>计算机机名
+HttpContext.Current.Request.Url.Host
HttpContext.Current.Request.ApplicationPath);%>
……………………………………//其他的省略,从系统读取信息显示在前面页面
3.8.1最新通知管理模块
该信息模块主要包括最新网址信息通知、修改、删除等。
如图
图3-24新闻信息表
1.用到的数据表:[news](新闻信息表)
2.该模块的实现方法和上面会员管理、订单管理类似,不再做过多讲解
3.8.2添加最新通知模块
该信息模块主要包括添加最新的网站信息等。如图
图3-25添加新闻信息
1.用到的数据表:[news](新闻信息表)
2.该模块和上面一些模块讲解的插入更新操作大致一样。
3.本模块主要也是利用Insert更新操作。如示
publicClass1xm=newClass1();
publicclsPublics=newclsPublic();
stringa1=s.wipeScript(this.TextBox1.Text.ToString());
stringa2=s.wipeScript(this.TextBox2.Text.ToString());
xm.setDS("INSERTINTO[news](news_title,news_con)VALUES('"+a1+"','"+a2+"')");
s.rScript(this.GetType(),"",this.Page);
结论
本文主要介绍了网上商城购物系统的后台主要功能模块的开发详细步骤以及相关功能实现。本系统后台主要功能模块实现了商品管理、注册用户以及系统管理员的管理、订单物流的管理、客户留言管理四个主要功能模块,可以及时对商品、客户信息进行修改添加删除,并且对每个操作后台系统会做出相应的判断,防止误操作的现象发生,保证了后台数据的安全性。
本系统后台管理简洁明了,运行快捷,人性化的操作流程使管理员能够快速掌握本后台管理的操作上手容易,方便使用。本系统虽然可以为用户即管理员提供一定的方便使用,但是由于现阶段的条件还不是很成熟,离实际应用还具有一定的差距,功能方面还有一些需要完善的地方,这些都是今后继续学习的目标,争取能够完善已经有的功能,增加新的功能,使本系统的发展更加成熟和完善。
参考文献
[1]刘乃丽.完全手册ASP.NET2.0网路开发详解[M].北京:电子工业出版社,2008:11-12
[2]尚俊杰.秦卫中.ASP.NET程序设计案例教程[M].北京:清华大学出版社,2005:11-12
[3]王长松.数据库应用课程设计案例精编[M].北京:清华大学出版社,2009:4-8
[4]谢俊译.[美]MICHAELR.GROH.Access2007宝典[M].人民邮电出版社,2008:12-16
[5]杨继萍,梁文新.Access2007数据库应用与开发从新手到高手[M].北京:清华大学出版社,2008:12-16
[6]张婷.Access2003公司数据库管理范例应用[M].中国青年出版社,2004:16-33
[7]赵增敏.Access2002实用教程[M].北京:电子工业出版社,2003:16-33
[8]张岭等.ASP.NET项目开发全程实录[M].北京:清华大学出版社,2008:11-12
[9]尹增明等.ASP.NETWEB应用开发(C#版)[M].机械工业出版社,2008:11-12
[10]杨云,王毅.ASP.NET2.0典型项目开发[M].人民邮电出版社,2007:11-12
[11]杨建,李华,张胜利等.ASP.NET2.0课程设计案例精编[M].北京:清华大学出版社,2009:11-12
致谢
在开发本系统的过程中遇到了很多困难,非常感谢朱平哲指导老师对我的帮助,我不仅在开发技术上有了突破,而且更注重开发细节,少走了很多弯路。从C#、ASP.NET语言的代码编写,到Access数据库的代码编写,从系统各个功能窗体设计,到数据表的设计编写,无一不凝聚着我的心血。整个系统从刚开始的分析设计、中途测试到最后设计完成,离不开我的的努力,也更离不开老师的指导。在实际的开发过程中,我积累了很多实际操作经验,并且对C#和ASP.NET的了解更深了一层。感谢朱平哲老师的教导,感谢学校的培养!
附录
链接数据库类库
类库Class1.cs(链接数据库的类):
publicclassClass1:System.Web.UI.Page
{
publicOleDbConnectionxm;
publicOleDbCommandcmd=newOleDbCommand();
publicDataSetds=newDataSet();
publicOleDbDataAdapteradt=newOleDbDataAdapter();
publicClass1()
{
xm=newOleDbConnection("provider=microsoft.jet.oledb.4.0;datasource="+Server.MapPath("~/xmdata/%xm.mdb"));
//xm.Open();
//
//TODO:在此处添加构造函数逻辑
//
}
publicDataSetgetDataSet(stringsqlstr)
{
adt=newOleDbDataAdapter(sqlstr,xm);
ds.Clear();
xm.Close();
adt.Fill(ds,"Table");
returnds;
}
publicDataSetgetDataSet2(stringsqlstr,intsi,intmi)
{
xm.Open();
adt=newOleDbDataAdapter(sqlstr,xm);
adt.Fill(ds,si,mi,"tab1");
xm.Close();
returnds;
}
publicboolsetDS(stringsqlstr)
{
xm.Open();
cmd=newOleDbCommand(sqlstr,xm);
cmd.ExecuteNonQuery();
xm.Close();
returntrue;
}
publicvoidexc(stringsqlstr)
{
cmd.Connection=xm;
cmd.CommandText=sqlstr;
cmd.ExecuteNonQuery();
}
publicvoidclose()
{
if(xm.State==ConnectionState.Open)
{
xm.Close();
}
xm.Dispose();
cmd.Dispose();
xm.Close();
ds.Dispose();
adt.Dispose();
}
}
链接公共类clsPublic.cs:
publicclassclsPublic:Page
{
publicclsPublic()
{
//
//TODO:在此处添加构造函数逻辑
//
}
publicClass1xm=newClass1();
publicvoidrScript(Typect,stringcs,Pagep)
{
ClientScriptManagers=p.ClientScript;
s.RegisterStartupScript(ct,"",cs);
}
publicvoidsetInfo(stringTitleInfo,Pagep)
{
DataSetds=xm.getDataSet("SELECT*FROM[index]");
p.Title=ds.Tables[0].Rows[0]["index_name"].ToString()+
TitleInfo;
HtmlMetaHM=newHtmlMeta();
HM.Name="keywords";
HM.Content=ds.Tables[0].Rows[0]["index_meta"].ToString();
p.Header.Controls.Add(HM);
HM=newHtmlMeta();
HM.Name="Description";
HM.Content=ds.Tables[0].Rows[0]["index_metas"].ToString();
p.Header.Controls.Add(HM);
}
publicstringgetData(stringTableName,stringFielDsName)
{
xm.getDataSet("SELECT*FROM["+TableName+"]");
returnxm.ds.Tables[0].Rows[0][FielDsName].ToString();
}
publicstringgetleft(strings1,Int32J)
{
if(s1.Length>J)
{
returns1.Substring(0,J)+"...";
}
else
{
returns1;
}
}
publicstringwipeScript(stringhtml)
{
System.Text.RegularExpressions.Regexregex1=new
System.Text.RegularExpressions.Regex(@"标记
html=regex2.Replace(html,"");//过滤href=javascript:()属性
html=regex3.Replace(html,"_disibledevent=");//过滤其它控件的on...事件
html=regex4.Replace(html,"");//过滤iframe
html=regex5.Replace(html,"");//过滤frameset
returnhtml;
}
privatestringHTMLEncode(stringfString)
{
if(fString!=string.Empty)
{
///替换尖括号
fString.Replace("
fString.Replace(">","&rt;");
///替换引号
fString.Replace(((char)34).ToString(),""");
fString.Replace(((char)39).ToString(),"'");
///替换空格
fString.Replace(((char)13).ToString(),"");
///替换换行符
fString.Replace(((char)10).ToString(),"
");
}
return(fString);
}
}
链接数据库类condb2.cs:
publicclasscondb2:Page
{
privateOleDbConnectionconn;
privateOleDbDataAdapteroda=newOleDbDataAdapter();
privateOleDbCommandcmd;
privateDataSetmyds=newDataSet();
publiccondb2()
{
//
//TODO:在此处添加构造函数逻辑
//
conn=new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath(@"~/xmdata/%xm.mdb"));
}
publicDataSetgetDS(stringstrSQL)
{
myds=newDataSet();
oda=newOleDbDataAdapter(strSQL,conn);
oda.Fill(myds);
returnmyds;
}
publicDataSetgetDS2(stringstrSQL,intsi,intmi)
{
conn.Open();
myds=newDataSet();
oda=newOleDbDataAdapter(strSQL,conn);
oda.Fill(myds,si,mi,"tab1");
conn.Close();
returnmyds;
}
publicboolsetDS(stringstrSQL)
{
conn.Open();
cmd=newOleDbCommand(strSQL,conn);
cmd.ExecuteNonQuery();
conn.Close();
returntrue;
}
}