1、Web 系统与技术课程设计题目 2props 网络商品交易系统 时间 2011-4-18 到 2011-6-10 项目组成员姓名 学号 班级 课序号 备注 成绩一、项目设计的总体目标1.1 系统的用户登录以及身份验证要求系统用户注册验证用户的注册信息系统用户进入系统时的身份验证系统用户在不同的页面浏览时候的身份验证1.1 在线购物系统要求允许用户浏览所有商品信息允许用户按关键字查找允许用户购买自己喜欢的商品允许用户对购物车进行管理系统实现订单的处理系统完成整个购物流程1.3 网上购物系统的管理子系统的要求对管理员的身份进行验证对数据库中的商品信息进行管理对数据库中的用户信息进行管理对数据库中的
2、订单信息进行管理二、 需求分析1) 系统的背景介绍自计算机应用于管理领域以来,信息系统的开发与应用获得惊人的发展,电子商务也应运而生,并得已迅速推广,给当今的传统型企业或者是现代型企业都带来了巨大的冲击和无限的商机。随着网络的发展,网络已渐渐融入到人们日常生活中,网络购物逐渐成为人们购物的一种新方式,易趣、淘宝等购物网站已是众多网上购物者喜欢光顾的地方。从消费者的观点来看,这个大型系统积极的方面是:用户可以从相当大的产品范围内选择,并且寻找最合适的产品。提供者可以从大量的可能顾客和减少事务花费来获益。电子商务不仅仅是简单地将生意搬到网上,而是对企业传统的营销、管理和生产经营模式的一场深刻变革,
3、是企业经营机制和运行模式的调整。以信息网络为基础的电子商务的应用,有助于促进企业管理不断完善,其优越性是可见的。其显著的特点是来完成商务活动的联结,尽可能减少面对面的接触和手工处理过程。电子商务主要涉及三方面的内容:信息、电子数据交换和电子资金转账。系统的使用对象主要是交易市场的网上商品供应商和网上商品购买者。该系统将库存、销售管理的数据和功能有效集成,为供应商者提供一个对内管理自己的库存信息,对外发布供求信息的平台。同时也为全球各地的网上来访者提供查询供求信息,了解市场行情等服务,为市场内部的管理者服务,提供更好的信息监管,行情把握的平台。2) 系统实现的主要功能基础信息管理:分为客户信息,
4、商品信息。结合 SQL 数据库完成对信息的管理和查询工作。完成用户(管理员和客户)的登陆和退出的工作。库存管理:实现商品入库,商品退库,价格调整等功能。为供应商管理自己的库存信息提供便利,并跟踪客户的日常业务。商品销售:基于供应商和客户之间的交互,实现商品的销售的功能。完成该功能主要依靠订单的管理(即购物车功能),包括对订单的添加,删除,查询等操作。查询统计:系统记录商品过去的销售及入库情况,并提供给客户这些信息的查询。并可以提供商品销售数量的排行榜,以供客户购买商品时作为参考。支付管理:基于网上银行交易系统,完成供应商和客户之间的货币交易。并可以对支付信息进行查询。3) 系统的实现目标网上交
5、易,安全灵活数据储存,安全可靠节省投资和运营成本采用框架技术,界面友好美观,操作简单易行,速度快快速准确的处理商品的进,销,存等业务三、 设计方案和实现 分工情况:侯典明、董光玉、董旭三位同学负责前端编码,李奥林同学负责美工,鲁昊同学负责后台及数据库设计。3.1 .NET 技术简介首先,.NET 是一个平台,它定义了一种公用语言子集 1(Common Language Subset,CLS)是一种为符合其规范的语言与类库之间提供无缝集成的混合语。.Net 统一了编程类库,提供了对下一代网络通讯标准可扩展标记语言(Extensible Markup Language,XML)的完全支持,使应用程
6、序的开发变得更容易、更简单。3.2 ASP.NET 六大内部对象 ASP.NET 提供了 6 个功能强大的内部对象,每个对象具有各自的属性(Property) ,方法(Method) ,有的还拥有数据集合(Collection)与事件(Event) ,它们共同完成 Web 中的一些重要工作。在我们的项目中频繁用到的这 6 个对象分别是: Request 对象:Request 对象可以保存 Client 端送往 Server 端的所有信息。这些信息包括:使用 Get 或 Post 方法传递的数据、Server 环境变量、Cookie信息等。在没有指定表单集合的情况下,程序将以QueryStrin
7、g、Form、Cookie、ServerVariable 的顺序搜索所有集合,寻找指定变量。 Response 对象:Response 对象的主要功能是将信息从 Server 端传送到Client 端。也可以用来实现页面的跳转或 Cookie 值的设定。由于 ASP.NET 脚本没有输出“值”的功能,要完成此功能必须使用 Response 对象。 Server 对象:Server 对象的主要功能是执行与 Web 服务器直接相关的一些操作。 Session 对象:Session 对象能够记录用户每一次上线的个人信息,它相当于每个上线用户的私有变量集合。它随着用户的上线而产生,随着用户的下线或强制
8、解除而终止。 Application 对象:Application 对象能记录所有 Web 用户的共有信息,它相当于所有上线用户的公共变量集合。它伴随着 Web 应用程序的开始运行而产生,随着 Web 应用程序的运行结束而终止。 Objectcontext 对象:Objectcontext 对象主要在进行交易处理时使用,利用该对象可以管理、控制这些交易。3.3 IIS 简介Web 服务器是 Web 应用程序的心脏 11。IIS(Internet Information Server)是微软推出的 Windows NT Option Pack 的主要成员,作为 Windows NT 的扩展,自推
9、出以来已经有了很大发展,其体系结构是当今市场上最受关注的 Web 服务器之一。它具有强大的系统安全性,具有服务器端脚本开发调试,内容管理和站点分析,崩溃防护,内置 JAVA 虚拟机及全面支持 ASP.NET 等强大功能。3.4 IIS 与 ASP.NET 的结合在过去,客户端/服务器结构的设计与 Web 的相关技术几乎处于平行线上,两者相互独立并无法做出集成性的设计 14。现在我们利用 IIS+ASP.NET,将客户机/服务器结构与 Web 密切结合,完成前后端两者的集成输出功能,使得 Web站点的开发更方便,实现的功能更强大。利用 IIS+ASP.NET 技术来集成 Web 前后端所带来的强
10、大效益可归结为以下几个方面:(1) 减少构建和维护成本;(2) 加快联机过程;(3) 应用软件集中在服务器端开发管理;(4) 前端可使用任何浏览器(IE、Netscape) ;(5) 后端可存取任何数据库 (SQL、SQL Server);(6) 可使用任何脚本语言开发 (VBScript、JavaScript)。3.5 数据库 SQL Server 2005 简介SQL Server 2005 的一个主要的优点就是与主流客户/服务器开发工具和桌面应用程序的紧密集成。可以使用许多方法访问 SQL Server 数据库 6。SQL Server 2005 的客户端应用程序可以通过 SQL Ser
11、ver 提供的应用程序接口来访问服务器端的数据。有四个主要的访问方法:ODBC API、OLE DB、Transact-SQL 和 DB-Library。对于客户机,可以将这些 API 作为动态连接库来使用,并且通过客户端的网络库与 SQL Server 服务器通信。利用 SQL Server 2005 可以使用 HTTP 来向数据库发送查询、对数据库中存储的文档执行全文搜索、以及通过 Web 进行自然语言查询。它提供了对可扩展标记语言(XML)的核心支持以及在 Internet 上和防火墙外进行查询的能力。SQL Server 具备向上伸缩和向外扩展的能力 9。SQL Server 利用对称
12、多处理器(SMP)系统,使 SQL Server Enterprise Edition 最多可以使用 32 个处理器和 64GB 的 RAM。向外扩展可以将数据库和数据负载分配给多台服务器。通过较强的故障转移群集、日志传送和备份策略,SQL Server 2005 达到了最大的可用性。之所以采用 SQL Server 2005 作为数据库平台,是因为 SQL Server 2005具有别的数据库平台(如 Access)所没有的安全性和独立性以及数据由 DBMS统一管理和控制等优点,而本系统正需要采用 SQL Server 2005 来实现的此功能。3.6 系统的开发环境硬件环境要求CPU:Pe
13、ntiun900 CPU 或以上内存:256MB 以上内存硬盘:40GB 以上硬盘显示器:VGA 显示器或更高 软件环境要求操作系统:Windows XP/7+IIS数据库的选择:SQL Server 2005开发工具:ASP.NET、C#、SQL Server 2005 数据库3.7 总体结构该系统用户分为两类:用户和管理员,在整个系统中他们具有不同的功能和权限。用户可以完成会员注册,网上购物,商品搜索,商品支付等功能,管理员可以完成用户管理,商品管理,销售管理(处理订单) ,以及仓库管理等。对整个系统分成了 3 个大模块:前台交易模块、数据库及持久层的设计、后台管理模块。各个模块又进行了一
14、步的细分,如前台交易模块又分为查询、购物、等。3.8 网页设计网站主页采用静、动相结合的方式,以静态为主,静态主页方式介绍商品信息、特色、信息发布,对于各大功能,就得利用ASP与数据库结合的技术建立数据库查询管理系统,采用交互式的动态的web画面,实时进行信息的增加和删除,减少人员工作量,提高工作效率。3.9 系统的部署模型3.10 分块功能介绍如下:3.10.1 adminmanage 商品管理:管理商品的删除更改查询会员管理:查询会员的详细信息,删除违规恶意用户以及仓库管理、订单管理,后台管理安全退出等3.10.2 membermanage用户可以检索商品,查看商品详细信息,将商品添加入购
15、物车,购买商品,充值(暂未实现) ,更新个人信息3.10.3 usercontrol区分用户身份及权限和是否登录,在页面中反映出来3.11 数据库设计:共 7 个表,分别为:货物信息表(goodsInfo) ,包括货物号,货物类型,货物名,货物介绍,货物价格,货物图片,货物放入日期订单表(orderInfo) ,包括订单号,下定单者,货物号,货物名,货物类型号,货物类型名,货物价格,是否被选中,订单日期会员信息表(Member) ,记录用户的注册信息,包括用户 ID 号,用户名,性别,密码,真名,密保问题,密保答案,电话号码,邮箱地址,城市,地址,邮编,头像,余额,注册日期仓库信息表(Stor
16、eInfo) ,记录货物种类信息,包括仓库号,种类名图像信息表(Image) ,存贮使用的图片,包括图片 ID,图片地址管理员表,包括管理员 ID,管理员密码,管理员密码货物种类表,存放所有的货物种类,包括货物种类 ID,货物种类名,存贮仓库名E-R 图商 品对 应订 单N N仓 库 会 员包 含 对 应N1NN商 品 名 称商 品 价 格商 品 编 号商 品 图 片商 品 信 息订 单 号商 品 编 号商 品 价 格商 品 名 称订 单 会 员会 员 编 号会 员 名 称会 员 性 别会 员 电 话会 员 地 址会 员 余 额仓 库 编 号仓 库 名 称商 品 编 号四、 测试结果及结论4.
17、1 测试结果网站首页页面代码,作为各个页面的模板网上购物商城普通用户注册及会员登录:用户名检测成功提示注册功能主要代码:using System;using System.Data;using System.Data.SqlClient;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.We
18、bParts;using System.Web.UI.HtmlControls;public partial class MemberManage_Register : System.Web.UI.PageSqlOperate sqloperate = new SqlOperate();SqlConnection sqlconn = new SqlConnection(ConfigurationManager.AppSettings“ConnectionString“);protected void Page_Load(object sender, EventArgs e)if (!IsPos
19、tBack)sqlconn.Open();string sqlstr = “select * from tb_Image“;SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlconn);DataSet myds = new DataSet();myda.Fill(myds, “tb_Image“);ddlPhoto.DataSource = myds.Tables“tb_Image“;ddlPhoto.DataTextField = “Image“;ddlPhoto.DataBind();imgPhoto.ImageUrl = ddlPho
20、to.SelectedValue;sqlconn.Close();protected void btnRegister_Click(object sender, EventArgs e)string sqltest = “select * from tb_Member where MemberName=“ + this.txtLoginName.Text + “;sqlconn.Open();SqlCommand sqlcom = new SqlCommand(sqltest, sqlconn);SqlDataReader read = sqlcom.ExecuteReader();read.
21、Read();if (read.HasRows)if (this.txtLoginName.Text.Trim() = read“MemberName“.ToString().Trim()Response.Write(“alert(该会员已经注册过);localtion=Register.aspx“);return;string sqlstr = “insert into tb_Member “+ “(MemberName,MemberSex,MemberPWD,MemberTName,“+ “MemberQue,MemberAns,MemberPhone,MemberEmail,Member
22、City,MemberAddress,MemberPostCode,MemberPhoto)“+ “values(“ + txtLoginName.Text + “,“ + ddlSex.SelectedValue+ “,“ + txtPwd.Text + “,“ + txtTName.Text + “,“ + txtQuePwd.Text+ “,“ + txtAnsPwd.Text + “,“ + txtTel.Text + “,“ + txtEmail.Text+ “,“ + ddlCity.SelectedValue + “,“ + txtAddress.Text + “,“ + txt
23、PostCode.Text + “,“ + ddlPhoto.Text + “)“;sqloperate.DataCom(sqlstr);sqlconn.Close();Session“regName“ = txtLoginName.Text.Trim();Response.Redirect(“SuccReg.aspx“);protected void btnCancel_Click(object sender, EventArgs e)txtLoginName.Text = “;txtPwd.Text = “;txtTName.Text = “;txtQuePwd.Text = “;txtA
24、nsPwd.Text = “;txtTel.Text = “;txtEmail.Text = “;txtAddress.Text = “;txtPostCode.Text = “;txtLoginName.Focus();protected void btnTest_Click(object sender, EventArgs e)if (txtLoginName.Text = “)Response.Write(“alert(会员登录名不能为空!);localtion=Register.aspx“);elsestring sqlstr = “select * from tb_Member wh
25、ere MemberName=“ + this.txtLoginName.Text + “;sqlconn.Open();SqlCommand sqlcom = new SqlCommand(sqlstr, sqlconn);SqlDataReader read = sqlcom.ExecuteReader();read.Read();if (read.HasRows)if (this.txtLoginName.Text.Trim() = read“MemberName“.ToString().Trim()Response.Write(“alert(该会员已经注册过);localtion=Re
26、gister.aspx“);return;elseResponse.Write(“alert(您可以进行正常注册);localtion=Register.aspx“);read.Close();sqlconn.Close();protected void ddlPhoto_SelectedIndexChanged(object sender, EventArgs e)imgPhoto.ImageUrl = ddlPhoto.SelectedValue;注册成功提示用户个性化控制,区分不同用户查询商品,有四种查询方式:id,类别,名称,仓库查询功能主要代码:using System;using
27、System.Data;using System.Data.SqlClient;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class MemberManage_Goods
28、Info : System.Web.UI.PageSqlOperate sqloperate = new SqlOperate();protected void Page_Load(object sender, EventArgs e)if (!IsPostBack)string sqlstr = “select * from vb_GoodsInfo“;sqloperate.gvDataBind(gvGoodsInfo, sqlstr);protected void tvGType_SelectedNodeChanged(object sender, EventArgs e)string s
29、SeleNodeText = tvGType.SelectedValue.ToString();string sqlstr = “select * from vb_GoodsInfo where GoodsTypeName=“ + sSeleNodeText + “ or StoreName=“ + sSeleNodeText + “;sqloperate.gvDataBind(gvGoodsInfo, sqlstr);protected void gvGoodsInfo_PageIndexChanging(object sender, GridViewPageEventArgs e)gvGo
30、odsInfo.PageIndex = e.NewPageIndex;this.gvbind();protected void btnSel_Click(object sender, EventArgs e)this.gvbind();public void gvbind()if (txtKey.Text = “)string sqlstr = “select * from vb_GoodsInfo“;sqloperate.gvDataBind(gvGoodsInfo, sqlstr);elsestring sqlstr = “select * from vb_GoodsInfo where
31、“+ ddlCondition.SelectedValue + “ like %“ + txtKey.Text.Trim() + “%“;sqloperate.gvDataBind(gvGoodsInfo, sqlstr);商品详细信息购物车界面购物车功能实现代码: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.W
32、ebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class MemberManage_Shopping : System.Web.UI.PageSqlOperate sqloperate = new SqlOperate();SqlConnection sqlconn = new SqlConnection(ConfigurationManager.AppSettings“Connecti
33、onString“);protected void Page_Load(object sender, EventArgs e)if (Session“MName“ = null)Response.Write(“alert(您还没有登录,请登录后再使用该功能 !);location=javascript:history.go(-1);“);if (!IsPostBack)string sqlstr = “select OrderID,GoodsName,GoodsTypeName,GoodsPrice from tb_OrderInfo where OrderMember=“ +Convert.
34、ToString(Session“MName“) + “ and IsCheckout=否“ ;gvOrderInfo.DataKeyNames = new string “OrderID“ ;sqloperate.gvDataBind(gvOrderInfo, sqlstr);string sqlstrtprice = “select sum(GoodsPrice) as tprice from tb_OrderInfo“+ “ where OrderMember=“ + Convert.ToString(Session“MName“) + “ and IsCheckout=否“ ;sqlc
35、onn.Open();SqlDataAdapter myda = new SqlDataAdapter(sqlstrtprice, sqlconn);DataSet myds = new DataSet();myda.Fill(myds, “tb_OrderInfo“);DataRowView mydrv = myds.Tables“tb_OrderInfo“.DefaultView0;labMoney.Text = Convert.ToString(mydrv.Row“tprice“);protected void lbtnCheck_Click(object sender, EventAr
36、gs e)if (labMoney.Text = “)Response.Write(“alert(您的购物车中没有任何物品 );“);elsestring sqlstr = “select MemberName,MemberMoney from tb_Member where MemberName=“ + Session“MName“.ToString() + “;sqlconn.Open();SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlconn);DataSet myds = new DataSet();myda.Fill(myds
37、, “tb_Member“);DataRowView mydrv = myds.Tables“tb_Member“.DefaultView0;string MPrice = Convert.ToString(mydrv.Row“MemberMoney“);if (Convert.ToInt32(MPrice) alert(您的余额不足,请重新充值后再购买! );“);elsestring sqlstrshop1 = “update tb_Member set MemberMoney=“+ (Convert.ToInt32(MPrice) - Convert.ToInt32(labMoney.T
38、ext) + “ where MemberName=“ + Session“MName“.ToString() + “;sqloperate.DataCom(sqlstrshop1);string sqlstrshop2 = “update tb_OrderInfo set IsCheckout=是 where OrderMember=“ + Session“MName“.ToString() + “;sqloperate.DataCom(sqlstrshop2);Response.Redirect(“SuccShop.aspx“);protected void lbtnClear_Click
39、(object sender, EventArgs e)string sqlstr = “delete from tb_OrderInfo where OrderMember=“+ Session“MName“.ToString() + “ and IsCheckout=否“;sqloperate.DataCom(sqlstr);Response.Redirect(“Shopping.aspx“);protected void lbtnQuery_Click(object sender, EventArgs e)Response.Redirect(“QueryMoney.aspx“);prot
40、ected void gvOrderInfo_PageIndexChanging(object sender, GridViewPageEventArgs e)gvOrderInfo.PageIndex = e.NewPageIndex;gvOrderInfo.DataBind();protected void gvOrderInfo_RowDataBound(object sender, GridViewRowEventArgs e)if (e.Row.RowType = DataControlRowType.DataRow)(LinkButton)(e.Row.Cells3.Control
41、s0).Attributes.Add(“onclick“, “return confirm(确定要删除吗?)“);protected void gvOrderInfo_RowDeleting(object sender, GridViewDeleteEventArgs e)string sqlstr = “delete from tb_OrderInfo where OrderID=“ + gvOrderInfo.DataKeyse.RowIndex.Value + “;sqloperate.DataCom(sqlstr);Response.Redirect(“Shopping.aspx“);
42、管理员登录,在界面右下角:管理界面:4.2 结论及体会:在项目的开始,我们五位同学就讨论好了各自的分工,并在设计好了各部分的功能之后严格按照设定进行。不同于以往的大作业,这次我们首先根据不同开发系统的优缺点决定使用 平台,然后花了大量时间来架构系统,等完全确定后才开始编码实现,每个人的工作量都不是很大,做起来比较轻松,充分体会到了好的结构才是软件或者网站的灵魂。这是我们最主要的收获。其他方面,很多特效在动手之前都不是很明白,但做过之后也就掌握了。Web 技术是建立在实践上的,难度不是很高。具体实现过程中,严格遵守界面与功能分别开发,按功能模块实现,全部测试通过后才进行组合,节省了大量时间,提高了开发效率。