




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网上商城购物系统毕业设计论文①参与者汇总游者:查看商品信息和注册成为会员。会员:查看商品信息和购买商品,修改个人信息等。管理员:管理商品信息,管理用户信息等。②前台流程:用户登录用户登陆用户注册→用户登录→查看图书信息→添加图书到购物车→支付③后台流程:管理员登录→订单管理、图书管理、用户管理、图片管理→退出网上购物系统为顾客提供一个类似于超级市场的网络界面。通过网络界面,用户登录后执行各种操作,没有注册的用户可以查找商品信息,查看首页面的最受欢迎商品等信息。结构设计简述:开始我本想用三层结构搭建网站,但是在进一步考虑之后发现系统的逻辑比较简单,并不一定要将业务逻辑单独分离出来。于是将三层合并为两层开发,即界面层和业务逻辑层合二为一,将界面层和业务逻辑层归为一层,业务逻辑的处理放在页面的后台代码中,这样做的好处之一是简化开发过程,之二是加快数据访问速度。当然这样做也带来了一些不便,首先是开发层次不如三层那样清楚,界面数据和业务逻辑混杂,然后是给网站的后期维护以及修改带来一定的不便,不如三层结构修改起来容易。由于作者在毕业设计期间还在专心准备专升本的课程学习,加上时间比较紧促,权衡利弊,选择将三层合并为两层开发。第三章数据库设计3.1数据库各表关系图图3-13.2部分表字段设计及注释表3-1tb_GoodsInfo字段名数据类型长度主外键字段说明备注GoodsIDBigint主键商品标识非空ClassIDBigint外键商品类型标识非空GoodsNameVarchar50无商品名称可空GoodsIntroduceNtext无商品介绍可空GoodsBrandVarchar50无品牌可空GoodsUnitVarchar10无单位可空GoodsWeightFloat无重量可空GoodsUrlVarchar50无图片链接可空MarketPriceFloat无单价可空MemberPriceFloat无会员价可空IsrefinementBit无是否精品可空IsHotBit无是否热销可空AddDateDatetime无添加日期可空IsDiscountBit无是否打折可空商品信息表:在添加商品和在前台显示商品详细信息时用到该表,实现了商品的添加和显示详细信息的功能。表3-2tb_Class字段名数据名长度主外键字段说明备注ClassIDBigint主键类型标识非空ClassNameVarchar50无类型名称可空CategoryUrlVarchar50无图片链接可空商品类型表:主要用于在添加商品类别的时候用到该表,把添加的商品类型存储到该表中,完成商品类型的添加和调用功能。表3-3tb_OrderInfo字段名数据名长度主外键字段说明备注OrderIDBigint主键订单标识非空OrderDateDatetime无订单日期可空GoodsFeeFloat无货品总额可空TotalPriceFloat无总金额可空ShipFeeFloat无运费可空ShipTypeInt无运送类型标识可空PayTypeInt无支付类型可空MemberIDInt外键会员标识可空ReceiverNameVarchar(50)无收货人姓名可空ReceverPhoneVarchar(50)无收货人电话可空IsConfirmBit无是否确认可空IsPaymentBit无是否付款可空IsConsignmentBit无是否发货可空IsPigeonholeBit无是否归档可空ReceiverPostCodeChar10无邮编可空ReceiverAddressVarchar200无地址可空ReceiverEmailsVarchar50无邮箱可空订单信息表:主要在管理订单的时候用到该表完成订单的管理功能。表3-4tb_Member字段名数据名长度主外键字段说明备注MemberIDBigint主键会员标识非空NameVarchar50无用户名可空SexBit无性别可空PassWordVarchar50无密码可空TrueNameVarcahr50无真实姓名可空QuestionsNavarchar50无验证问题可空AnswersNavarchar50无答案可空PhonecodeVarchar20无电话号码可空EmailsVarchar50无邮箱可空CityVarchar50无所在城市可空AddressVarchar200无地址可空PostCodeChar10无邮编可空AdvancePaymentFloat无消费可空LoadDateDatetime无登陆日期可空会员信息表:该表存储了注册的会员信息,在会员登录和合结账的时候会调用到该表。表3-5tb_Admin字段名数据名长度主外键字段说明备注AdminIDBigint主键管理员标识非空AdminVarchar50无用户名可空PassWordVarchar50无密码可空管理员信息表:主要用于后台管理员登录的时候调用该表完成管理员的登录功能。第四章系统实现主要技术介绍4.1ASP.NET内置对象下面是ASP.NET中常用对象的介绍及用法(1)Request对象:将用户端输入的数据传递给服务器。(2)Response对象:向客户端输出数据。Response和Request可以说是一对孪生兄弟,一个负责收集,另一个负责输出。(3)Application对象:可以供全体应用程序使用。使用Application对象不仅可以在给定的应用程序的所有用户之间共享,而且可以在服务器运行期间持久地保存数据。(4)Session对象:供特定用户会话使用。Session对象与Application对象的作用相近,使用Session对象可以存储特定的用户会话所需的信息。Application与Session的区别在于,网上的用户都可以使用Application的对象,而Session只是针对一个特定的客户而已。(5)Server对象:提供对服务器上的方法和属性的访问,其中大多数方法和属性是作为实用程序的功能服务的。最常用的方法是创建ActiveX组件的实例(Server.CreateObject)。其他方法用于将URL或HTML编码成字符串,将虚拟路径映射到物理路径以及设置脚本的超时期限。QueryString集合QueryString可以获取标识在URL后面的所有返回变量及其值。在搜索引擎里面经常用这种方法。例如,当用户端送出如下请求时,QueryString将会得到name和age两个变量的值。<ahref="queryString.asp?name=wuerlang&age=36">在上面的例子中,href="queryString.asp"指出了链接的地址,“?”后面有两个变量name和age,用&把它们连接起来,它们的值分别是wuerlang和36。Request对象数据集合集合(collection)指的是一群放在一起的值(Value),例如当浏览者输入网页窗体数据并单击【提交】按钮之后,窗体字段的名称与浏览者输入的数据就会以一个Form形式的集合传给Web服务器。例如在ASP对象的QueryString集合中,若要取得username字段或userage字段的值,可以分别写成Request.QueryString("username")和Request.QueryString("userage")。若是在Form集合中,则可以写成Request.form("username")和Request.form("userage")。Request对象提供了5个集合:Form、QueryString、Cookies、ServerVariables和ClientCertificate。Request对象把客户信息保存在几个集合中,供ASP使用,当不指定集合名时,以QueryString、Form、Cookie、ClientCertificate、ServerVariable的顺序搜索所有集合,当发现第一个匹配的变量时,就认定它是要引用的成员。当然,为了提高效率,最好指定是哪个集合中的成员。2.Response.Redirect方法Redirect方法使浏览器立即重定向到程序指定的URL。这也是一种经常用到的方法,这样程序员就可以根据客户的不同响应,为不同的客户指定不同的页面或根据不同的情况指定不同的页面。一旦使用了Redirect方法,任何在页中显式设置的响应正文内容都将被忽略。然而,此方法不向客户端发送该页设置的其他HTTP标题,将产生一个将重定向URL作为链接包含的自动响应正文,其语法格式如下:Response.RedirectURLSession对象可以使用Session对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在Session对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。通过向客户程序发送唯一的Cookie可以管理服务器上的Session对象。当用户第一次请求ASP应用程序中的某个页面时,ASP要检查HTTP头信息,查看在报文中是否有名为ASPSESSIONID的Cookie发送过来,如果没有,则服务器会启动新的会话,并为该会话生成一个全局唯一的值,再把这个值作为新ASPSESSIONIDCookie的值发送给客户端。正是使用这种Cookie,可以访问存储在服务器上的属于客户程序的信息。Session对象最常见的作用就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。另外还经常被用在鉴别客户身份的程序中。要注意的是,会话状态仅在支持Cookie的浏览器中保留,如果客户关闭了Cookie选项,Session也就不能发挥作用了。Session对象的主要用途是保存信息,当用户登录网站时,系统为其分配一个Session,只有当用户退出时,或者Session生命周期结束时,信息才会清除。4.2ASP.NET自定义用户控件就其核心而言,ASP.NET是一种以如下方式定义的基于控件的构架:·页是控件·任何控件都可以包含子控件·呈现控件时,先呈现本身的内容,然后反复呈现子控件的内容这种构架类似于Win32API中的窗口构架。桌面本身是一个窗口(好像Page),而且任何窗口都可以包含子窗口。呈现每个窗口时,首先呈现本身的内容,然后呈现子窗口的内容。在桌面上,窗口的呈现涉及在显示器上绘制像素,ASP.NET控件的呈现设计生成HTML,以填入HTTP请求的部分相应。ASP.NET的控件构架是一种完全可扩展的框架,本章讨论用于构建自定义控件的技术,创建真正可重用的Web组件(封装了表示和服务器交互的细节)。中提供的增加内嵌服务器控件的功能,使你能够多次的轻松增加你所定义的各种控件。事实上,对于表单等各种控件,可以不用更改或者稍微更改一下就可以多次使用的。在通常情况下,我们把一个用作服务器控件的web表单统称为用户控件,我们用一个.ascx为后缀的文件保存起来,这样的保存使得它不被当作一个web表单来运行,当我们在一个.aspx文件中使用它时,我们用Register方法来进行调用,假设我们有一个文件名为saidy.ascx的文件,我们用下面的语句来调用它:<%@RegisterTagPrefix="Acme"TagName="Message"Src="saidy.ascx"%>上面的TagPrefix标记为用户控件确定个唯一的名字空间,TagName为用户控件确定一个唯一的名称,你也可以用其它的名字代替“Message“,Src为确定所包含的文件名称和路径。这样,我们就可以用下面的语句来调用它了:<Acme:Messagerunat="server"/>4.3ADO.NETADO.NET的名称起源于ADO(ActiveXDataObjects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在.NET编程环境中优先使用的数据访问接口。它提供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持,并支持RICHXML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO.NET组件,它可以是基于一个MicrosoftVisualStudio的解决方案,也可以是任何运行在其它平台上的任何应用程序。ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的ADO.NET类库来进行连接。ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为DataProviders,并且通常是以与之交互的协议和数据源的类型来命名的。ADO.NET包含的类1、Connection类和数据库交互,你必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。与数据库交互的过程意味着你必须指明想要执行的操作。这是依靠Command对象执行的。你使用Command对象来发送SQL语句给数据库。Command对象使用Connection对象来指出与哪个数据源进行连接。你能够单独使用Command对象来直接执行命令,或者将一个Command对象的引用传递给DataAdapter,它保存了一组能够操作下面描述的一组数据的命令。2、Command对象成功于数据建立连接后,就可以用Command对象来执行查询、修改、插入、删除等命令;Command对象常用的方法有ExecuteReader方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命令。3、DataReader类许多数据操作要求你只是读取一串数据。DataReader对象允许你获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着你只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果你需要操作数据,更好的办法是使用DataSet。4、DataSet对象DataSet对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。你甚至能够定义表之间的关系来创建主从关系(parent-childrelationships)。DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有DataProviders使用的对象,因此它并不像DataProvider一样需要特别的前缀。5、DataAdapter类某些时候你使用的数据主要是只读的,并且你很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。DataAdapter通过断开模型来帮助你方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,DataAdapter填充(fill)DataSet对象。DataAadapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,DataAdapter包含对数据的SELECT、INSERT、UPDATE和DELETE操作的Command对象引用。你将为DataSet中的每一个Table都定义DataAadapter,它将为你照顾所有与数据库的连接。所有你将做的工作是告诉DataAdapter什么时候装载或者写入到数据库。6、DataTable类DataTable是一个数据网格控件。它可以被应用在VB和ASP上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。7、ADO.NET是与数据源交互的.NET技术。有许多的DataProviders,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的DataProvider,你将使用相似的对象与数据源进行交互。SqlConnection对象管理与数据源的连接。SqlCommand对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的SqlDataAdapter。第五章系统部分功能展示及其实现代码5.1部分界面展现(1)前台主界面图5-1(2)购物车图5-2(3)后台首页图5-3(4)订单管理图5-4(5)物流管理图5-5(6)普通会员管理图5-6(7)管理员管理图5-75.2新用户注册和用户登陆(1)前台登陆图5-8这里的登陆界面是用自定义用户控件实现的,其后台代码如下:登陆按钮事件:protectedvoidbtnLoad_Click(objectsender,EventArgse){Session["UID"]=null;Session["Username"]=null;if(txtName.Text.Trim()==""||txtPassword.Text.Trim()==""){Response.Write("<script>alert(登录名和密码不能为空!');location='javascript:history.go(-1)';</script>");}else{if(txtValid.Text.Trim()==lbValid.Text.Trim()){intP_Int_IsExists=uiObj.UserExists(txtName.Text.Trim(),txtPassword.Text.Trim());if(P_Int_IsExists==100){DataSetds=uiObj.ReturnUIDs(txtName.Text.Trim(),txtPassword.Text.Trim(),"UserInfo");Session["UID"]=Convert.ToInt32(ds.Tables["UserInfo"].Rows[0][0].ToString());Session["Username"]=ds.Tables["UserInfo"].Rows[0][1].ToString();Response.Redirect("index.aspx");}else{Response.Write("<script>alert('您的登录有误,请核对后再重新登录!);location='javascript:history.go(-1)';</script>");}}else{Response.Write("<script>alert('请正确输入验证码!');location='javascript:history.go(-1)';</script>");}}}(2)会员注册图5-9保存按钮代码:protectedvoidbtnSave_Click(objectsender,EventArgse){if(txtPostCode.Text.Trim()==""&&txtPassword.Text.Trim()==""){Response.Write("<script>alert('请输入完整信息!');location='javascript:history.go(-1)';</script>");}else{boolP_Bl_Sex;if(Convert.ToInt32(ddlSex.SelectedItem.Value.Trim())==1){P_Bl_Sex=true;}else{P_Bl_Sex=false;}G_Int_MemberID=uiObj.AddUInfo(txtName.Text.Trim(),P_Bl_Sex,txtPassword.Text.Trim(),txtTrueName.Text.Trim(),"","",txtPhone.Text.Trim(),txtEmail.Text.Trim(),ddlCity.SelectedItem.Text.Trim(),txtAddress.Text.Trim(),txtPostCode.Text.Trim());Session["Username"]="";Session["Username"]=txtName.Text.Trim();Response.Write("<script>alert('恭喜您,注册成功!');location='index.aspx'</script>");}}后台登陆界面:图5-10登陆按钮代码:protectedvoidbtnLogin_Click(objectsender,EventArgse){if(txtAdminName.Text.Trim()==""||txtAdminPwd.Text.Trim()==""){Response.Write("<script>alert('登录名和密码不能为空!);location='javascript:history.go(-1)';</script>");}else{if(txtAdminCode.Text.Trim()==labCode.Text.Trim()){intP_Int_IsExists=mcObj.AExists(txtAdminName.Text.Trim(),txtAdminPwd.Text.Trim());if(P_Int_IsExists==100){DataSetds=mcObj.ReturnAIDs(txtAdminName.Text.Trim(),txtAdminPwd.Text.Trim(),"AInfo");Session["AID"]=Convert.ToInt32(ds.Tables["AInfo"].Rows[0][0].ToString());Session["Aname"]=ds.Tables["AInfo"].Rows[0][1].ToString();//Response.Write("<scriptlanguage=javascript>window.open('AdminIndex.aspx');window.close();</script>");Response.Redirect("AdminIndex.aspx");Response.Write("<scriptlanguage=javascript>window.close();</script>");}else{Response.Write("<script>alert('您输入的用户名或密码错误,请重新输入!');location='javascript:history.go(-1)';</script>");}}else{Response.Write("<script>alert('验证码输入有误,请重新输入!');location='javascript:history.go(-1)';</script>");}}}5.3后台管理功能以商品管理为例,会员管理,物流管理代码都与其类似,下面不再赘述:图5-11添加商品图5-12保存按钮事件:protectedvoidbtnSave_Click(objectsender,EventArgse){if(txtName.Text==""||txtBrand.Text==""||txtUnit.Text==""||txtWeight.Text==""||txtMemberPrice.Text==""||txtMarketPrice.Text==""){Response.Write("<script>alert('请输入必要的信息')</script>");}else{boolIsrefinement;boolIsHot;boolIsDisCount;if(cbxCommend.Checked==true){Isrefinement=true;}else{Isrefinement=false;}if(cbxHot.Checked==true){IsHot=true;}else{IsHot=false;}if(cbxDiscount.Checked==true){IsDisCount=true;}else{IsDisCount=false;}intP_Int_returnValue=mcObj.AddGInfo(Convert.ToInt32(ddlCategory.SelectedItem.Value.ToString()),txtName.Text.Trim(),txtShortDesc.Text.Trim(),txtBrand.Text.Trim(),txtUnit.Text.Trim(),float.Parse(txtWeight.Text.Trim()),ddlUrl.SelectedItem.Value.Trim(),float.Parse(txtMarketPrice.Text.Trim()),float.Parse(txtMemberPrice.Text.Trim()),Isrefinement,IsHot,IsDisCount);if(P_Int_returnValue==-100){Response.Write("<script>alert('该商品已存在!');</script>");}else{Response.Write("<script>alert('添加成功|!');window.location.href='Product.aspx'</script>");}}5.4随机产生验证码代码publicstringRandomNum(intn)//{stringstrchar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";string[]VcArray=strchar.Split(',');stringVNum="";//inttemp=-1;//记录上次随机数值,尽量避免产生几个一样的随机数//采用一个简单的算法以保证生成随机数不同Randomrand=newRandom();for(inti=1;i<n+1;i++){if(temp!=-1){rand=newRandom(i*temp*unchecked((int)DateTime.Now.Ticks));}intt=rand.Next(61);if(temp!=-1&&temp==t){returnRandomNum(n);}temp=t;VNum+=VcArray[t];}returnVNum;//返回生成的随机数}5.5数据访问核心类部分代码DBClass.csMangerClass.csUserInfoClass.cs重要方法:///<summary>///数据库连接///</summary>///<returns>SqlConnection对象</returns>publicSqlConnectionGetConnection(){stringmyStr=ConfigurationManager.AppSettings["ConnectionString"].ToString();SqlConnectionmyConn=newSqlConnection(myStr);returnmyConn;}///<summary>///判断用户是否存在///</summary>///<paramname="P_Str_Name">会员登录名</param>///<paramname="P_Str_Password">会员登录密码</param>///<returns></returns>publicintUserExists(stringP_Str_Name,stringP_Str_Password){SqlConnectionmyConn=dbObj.GetConnection();SqlCommandmyCmd=newSqlCommand("Proc_UserExists",myConn);myCmd.CommandType=CommandType.StoredProcedure;//添加参数SqlParameterName=newSqlParameter("@Name",SqlDbType.VarChar,50);Name.Value=P_Str_Name;myCmd.Parameters.Add(Name);//添加参数SqlParameterPassword=newSqlParameter("@Password",SqlDbType.VarChar,50);Password.Value=P_Str_Password;myCmd.Parameters.Add(Password);//添加参数SqlParameterreturnValue=myCmd.Parameters.Add("returnValue",SqlDbType.Int,4);returnValue.Direction=ParameterDirection.ReturnValue;//执行存储过程myConn.Open();try{myCmd.ExecuteNonQuery();}catch(Exceptionex){throw(ex);}finally{myCmd.Dispose();myConn.Close();}intP_Int_returnValue=Convert.ToInt32(returnValue.Value.ToString());returnP_Int_returnValue;}///<summary>///获取会员信息///</summary>///<paramname="P_Str_Name">会员登录名</param>///<paramname="P_Str_Password">会员登陆密码</param>///<paramname="P_Str_srcTable">查询表信息</param>///<returns></returns>publicDataSetReturnUIDs(stringP_Str_Name,stringP_Str_Password,stringP_Str_srcTable){SqlConnectionmyConn=dbObj.GetConnection();SqlCommandmyCmd=newSqlCommand("Proc_GetUserInfo",myConn);myCmd.CommandType=CommandType.StoredProcedure;//添加参数SqlParameterName=newSqlParameter("@Name",SqlDbType.VarChar,50);Name.Value=P_Str_Name;myCmd.Parameters.Add(Name);//添加参数SqlParameterPassword=newSqlParameter("@Password",SqlDbType.VarChar,50);Password.Value=P_Str_Password;myCmd.Parameters.Add(Password);//执行过程myConn.Open();try{myCmd.ExecuteNonQuery();}catch(Exceptionex){throw(ex);}finally{myCmd.Dispose();myConn.Close();}SqlDataAdapterda=newSqlDataAdapter(myCmd);DataSetds=newDataSet();da.Fill(ds,P_Str_srcTable);returnds;}///<summary>///GridView控件的绑定///</summary>///<paramname="gvName">控件名字</param>///<paramname="P_Str_srcTable">绑定信息</param>publicvoidgvBind(GridViewgvName,SqlCommandmyCmd,stringP_Str_srcTable){SqlDataAdapterda=newSqlDataAdapter(myCmd);DataSetds=newDataSet();da.Fill(ds,P_Str_srcTable);gvName.DataSource=ds.Tables[P_Str_srcTable].DefaultView;gvName.DataBind();}///<summary>///判断有没有最新的订单新会员///</summary>///<paramname="P_Str_ProcName">执行语句的Ì存储过程名</param>///<returns></returns>publicintIsExistsNI(stringP_Str_ProcName){SqlConnectionmyConn=dbObj.GetConnection();SqlCommandmyCmd=newSqlCommand(P_Str_ProcName,myConn);myCmd.CommandType=CommandType.StoredProcedure;//添加参数SqlParameterreturnValue=myCmd.Parameters.Add("returnValue",SqlDbType.Int,4);returnValue.Direction=ParameterDirection.ReturnValue;//执行过程myConn.Open();try{myCmd.ExecuteNonQuery();}catch(Exceptionex){throw(ex);}finally{myCmd.Dispose();myConn.Close();}intP_Int_returnValue=Convert.ToInt32(returnValue.Value.ToString());returnP_Int_returnValue;}第六章总结这次毕业设计,是对我三年所学知识的重新温习,我认识到了自身有很多不足。这次毕业设计的难点在需求分析和数据库的设计上,我从中学到了很多,因为之前没有类似的项目经验,所以在这里要感谢老师和同学们对我的帮助。此次毕业设计主要用到一些ASP.NET的基础知识,系统架构上本来想采用三层架构,但是为了简化开发,还是采用了两层架构——数据访问层,界面&业务逻辑层。由于时间和技术上的原因,这次毕业设计完成的也比较仓促,测试不足。有些功能模块的功能可能不够完善,压力测试也不足。总体来说只能算是基本完成网站需求设计时的功能。前台页面布局采用应用母版页的方式,后台采用框架布局,但是界面上也有一些未处理完的问题,比如查看购物车信息时候的母版页边框显示问题,归根结底还是因为界面布局功夫不够深。在业务逻辑方面也有一些问题,比如购物车结账的时候,如果后台配送方式添加数据不足时,购物就会失败。数据访问方面,应用了大量的存储过程,以提高数据访问的速度。提高了我对存储过程的使用技巧和书写方式。通过本次毕业设计,使我的动手能力提高很多,同时发现了自己很多不足之处。今后我会继续努力,争取更大的进步,相信明天会更好!参考文献[1]
洪著财,史金飞,张志胜.基于XML的动态质量信息表达方法的研究.制造业自动化,2004,26(1):5-8[2]吴伟敏.UML建模工具的比较——ROSE,Visio,和PowerDesigner.现代计算机,2003,6(下半月版):32-35,56[3]蔡敏,徐慧慧,黄炳强.UML基础与Rose建模教程.北京:人民邮电出版社,2006,294-312[4]邓景毅.在ERP实施中用MicrosoftVisio创建企业的业务流程图.电脑学习,2005,5:39-40[5]牛俊慧,张红光,牛会丽.基于MVC模式的电子商务平台构造技术研究.计算机工程与设计,2006,27(23):4479-4481[6]尤澜涛,韩月娟,孔芳.基于B/S的统一基础数据表管理模块的设计与实现.计算机与现代化,2006,12:31-33,37[7]TedN.Husted,CedricDumoulin,GeorgeFranciscus,DavidWinterfeldt.StrutsinAction-BuildingwebapplicationswiththeleadingJavaframework.GreenwichCTUS:ManningPublications,2002:120-350[8]/cxy521/archive/2008/08/02/1258491.html附录ASP.NETOverviewASP.NETisaunifiedWebdevelopmentmodelthatincludestheservicesnecessaryforyoutobuildenterprise-classWebapplicationswithaminimumofcoding.ASP.NETispartofthe.NETFramework,andwhencodingASP.NETapplicationsyouhaveaccesstoclassesinthe.NETFramework.Youcancodeyourapplicationsinanylanguagecompatiblewiththecommonlanguageruntime(CLR),includingMicrosoftVisualBasicandC#.TheselanguagesenableyoutodevelopASP.NETapplicationsthatbenefitfromthecommonlanguageruntime,typesafety,inheritance,andsoon.TestingandDebuggingVisualWebDeveloperprovidesanidealenvironmentinwhichtobuildWebsitesandthenpublishthemtoahostingsite.UsingthedevelopmenttoolsinVisualWebDeveloper,youcandevelopASP.NETWebpagesonyourowncomputer.VisualWebDeveloperincludesalocalWebserverthatprovidesallthefeaturesyouneedtotestanddebugASP.NETWebpages,withoutrequiringInternetInformationServices(IIS)tobeinstalled.Whenyoursiteisready,youcanpublishittothehostcomputerusingthebuilt-inCopyWebtool,whichtransfersyourfileswhenyouarereadytosharethemwithothers.Alternatively,youcanprecompileanddeployaWebsitebyusingtheBuildWebSitecommand.TheBuildWebSitecommandrunsthecompilerovertheentireWebsite(notjustthecodefiles)andproducesaWebsitelayoutthatyoucandeploytoaproductionserver.PageandControlsFrameworkTheASP.NETpageandcontrolsframeworkisaprogrammingframeworkthatrunsonaWebservertodynamicallyproduceandrenderASP.NETWebpages.ASP.NETWebpagescanberequestedfromanybrowserorclientdevice,andASP.NETrendersmarkup(suchasHTML)totherequestingbrowser.Asarule,youcanusethesamepageformultiplebrowsers,becauseASP.NETrenderstheappropriatemarkupforthebrowsermakingtherequest.However,youcandesignyourASP.NETWebpagetotargetaspecificbrowserandtakeadvantageofthefeaturesofthatbrowser.ASP.NETWebpagesarecompletelyobject-oriented.WithinASP.NETWebpagesyoucanworkwithHTMLelementsusingproperties,methods,andevents.TheASP.NETpageframeworkremovestheimplementationdetailsoftheseparationofclientandserverinherentinWeb-basedapplicationsbypresentingaunifiedmodelforrespondingtoclienteventsincodethatrunsattheserver.Theframeworkalsoautomaticallymaintainsthestateofapageandthecontrolsonthatpageduringthepageprocessinglifecycle.FormoreinformationseeASP.NETWebPagesOverview.TheASP.NETpageandcontrolsframeworkalsoenablesyoutoencapsulatecommonUIfunctionalityineasy-to-use,reusablecontrols.Controlsarewrittenonce,canbeusedinmanypages,andareintegratedintotheASP.NETWebpagethattheyareplacedinduringrendering.TheASP.NETpageandcontrolsframeworkalsoprovidesfeaturestocontroltheoveralllookandfeelofyourWebsiteviathemesandskins.Youcandefinethemesandskinsandthenapplythematapageleveloratacontrollevel.Formoreinformation,seeASP.NETThemesandSkins.Inadditiontothemes,youcandefinemasterpagesthatyouusetocreateaconsistentlayoutforthepagesinyourapplication.Asinglemasterpagedefinesthelayoutandstandardbehaviorthatyouwantforallthepages(oragroupofpages)inyourapplication.Youcanthencreateindividualcontentpagesthatcontainthespecificcontentyouwanttodisplay.Whenusersrequestthecontentpages,theymergewiththemasterpagetoproduceoutputthatcombinesthelayoutofthemasterpagewiththecontentfromthecontentpage.FormoreinformationseeASP.NETMasterPages.TheASP.NETpageframeworkalsoenablesyoutodefinethepatternforURLsthatwillbeusedinyoursite.Thishelpswithsearchengineoptimization(SEO)andmakesURLsmoreuser-friendly.Formoreinformation,seeASP.NETRouting.TheASP.NETpageandcontrolframeworkisdesignedtogenerateHTMLthatconformstoaccessibilityguidelines.ASP.NETCompilerAllASP.NETcodeiscompiled,whichenablesstrongtyping,performanceoptimizations,andearlybinding,amongotherbenefits.Oncethecodehasbeencompiled,thecommonlanguageruntimefurthercompilesASP.NETcodetonativecode,providingimprovedperformance.ASP.NETincludesacompilerthatwillcompileallyourapplicationcomponentsincludingpagesandcontrolsintoanassemblythattheASP.NET
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一单元第3课《物联网与生活》教学设计 2023-2024学年浙教版(2023)初中信息技术七年级下册
- 2024年浙江省农艺类高校招生职业理论考试试题及答案
- 23 范进中举2024-2025学年九年级语文上册同步教学设计(河北专版)
- 2025年收费的生产服务及修理项目合作计划书
- 第四章第三节 影响气候的主要因素 教学设计2023-2024学年湘教版地理七年级上册
- 23 女娲造人2024-2025学年新教材七年级上册语文新教学设计(统编版2024)
- 第一单元第二课《特效文字制作》教学设计-2023-2024学年粤教版(2019)初中信息技术八年级上册
- 2025年湖南省怀化市单招职业适应性测试题库审定版
- Unit 1 New School,New Beginnings Lesson 5 教学设计 2024-2025学年冀教版七年级英语上册
- 《短歌行》和《归园田居》-出与入诗人的责任与选择比较鉴赏 教学设计 2024-2025学年统编版高中语文必修上册
- 数据结构英文教学课件:chapter9 Sorting
- 信阳矿产资源概况
- EN779-2012一般通风过滤器——过滤性能测定(中文版)
- 形位公差测量方法
- 车辙防治指导意见(确定稿)
- 一个近乎完美的微信引流招生方案
- 门诊特殊病种审批表
- T_CEC 102.1-2016 电动汽车充换电服务信息交换 第1部分_总则_(高清-最新版)
- 国际形式发票模板
- 山西省会计师事务所服务收费标准(汇编)
- 陕西延长石油(集团)有限责任公司企业年金方案
评论
0/150
提交评论