数据库系统概论实验报告

  • 格式:doc
  • 大小:832.50 KB
  • 文档页数:22

1天津农学院课程设计中文题目:家教管理系统学生姓名姬丽艳学院计算机科学与信息工程学院专业班级2011级计算机科学与技术专业2班指导教师韩宗成绩评定2014年11月网上购物商城目录第1章绪论1.1选题背景和意义1.2开发工具简介第2章可行性研究2.1背景分析2.2可行性分析2.3系统流程图2.4数据字典第3章需求分析3.1功能分析3.1.1前台功能需求3.1.2后台功能需求3.2系统的数据需求3.1.1 数据的逻辑3.1.2 数据流程图3.3建立状态图第4章系统设计4.1系统结构的总体设计4.1.1 模块层次结构图4.2数据库设计4.2.1 概念设计4.2.2 数据字典的设计4.2.3 物理结构设计4.3 模块设计4.3.1 文件及文件夹模块设计4.3.2 网站首页模块设计..4.3.3 会员登陆及注册.4.3.4 商品信息模块设计.4.3.5 购物车模块设计4.3.6 管理员登录模块设计4.3.7 网站管理首页模块设计.4.3.8 商品管理模块设计……4.3.9 订单管理模块设计4.4公共类设计第5章实现45.1编码55.1.1会员登陆及注册代码5.1.2管理员登录模块代码5.1.3订单管理代码5.1.4商品管理代码5.1.5系统管理代码5.2软件测试(略)结束语第1章绪论1.1选题背景和意义传统的销售方式是商家把商品放在店铺里供顾客挑选,店铺的规模、位置等客观因素影响着商店的客流量,并且商品的存放与销售需要人力进行管理,雇员的工资、店面的租金等又增加了成本,顾客也不能迅速找到所需要的商品,而开一个网上购物商城只需要一个可以存放商品的仓库,比租一个店面能节省很多,也不需要太多的人力来管理,不会因为商店的面积影响客流量,客户足不出户就能买东西,并且很容易就能找到所需要的商品。

中国网络发展迅速,网民人数越来越多;由于网上购物的方便快捷,人们越来越习惯网上购物,购物网站将是以后的购物市场的主流,因此,购物网站的建设无疑的最具有竞争性和前瞻性的选择。

1.2开发工具简介开发平台Microsoft Visual Studio 2010网站后台数据库:Microsoft Sql Server 2005开发语言:C#第2章、可行性研究2.1背景分析进入21世纪以来,电子商务伴随着IT的成熟,逐渐发展壮大,成为网络经济的核心。

在电子商务的发展过程中,人们逐渐意识到在线购物的无地域界限、安全、方便快捷及其价格优势,在线购物的队伍也随之扩大。

不断增长的强大需求正成为电子商务的发展动力,基础环境的成熟与需求欲望的增长将推动电子商务与商务网站的建设不断发展。

新一轮的网上购物狂潮正在中国掀起,根据知名市场研究公司AC尼尔森的近期研究显示,63%的中国网民曾经网上购物,伴随着中国互联网的快速增长,中国将会成为网上购物的巨大市场。

2.2可行性分析网站建设可行性分析(1)网络应用基础设施完善.我国的计算机网络飞速发展, 网络应用进入了企业与普通家庭,这为发展电子商务提供了基础设施。

(2)网络安全技术应用.包括加密算法、CA数字认证、数字签名等,为电子商务应用提供安全保证。

(3)电子支付技术应用.通过电子支付网关实现交易双方电子货币结算,解决电子商务的支付问题,可加速交易过程的实现(4)网络技术的普及与掌握,如网络互联、网络安全技术、Web技术、各种安全协议、网络数据库技术等,使我们有能力开发实现自己的网站购物商城。

(5)法律保障.随着我国电子商务法律法规的颁发,将解决电子商务活动的法律技术问题,网上购物商城经营活动将得到法律的保护。

(6)用户操作.由于网站的操作是基于B/S浏览器的页面操作,简单明了,用户无需学习,一般都能够很容易的知道如何操作。

而管理员也无需具备专业知识,只需要对一些数据进行输入以及平时的日常维护就够了。

2.3系统流程图网站业务流程分析2.4数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的元素的定义的集合。

它的作用是在软件分析和设计过程中提供关于数据的描述信息。

数据字典和数据流图共同构成系统的逻辑模型。

数据字典定义数据的方法就是对数据自顶向下地分解,当分解到不需要进一步定义,每个和工程有关的人员都清楚其含义的元素时,这种分解过程就结束了。

本网上购物商城根据划分的模块定义了如下数据字典:①系统管理员信息表表名:tb_Admin列名数据类型长度备注AdminID bigint 8 关键字(主键)Admin varchar 50 不为空Password varchar 50 不为空②配送范围表表名:tb_Area列名数据类型长度备注AreaID bigint 8 关键字(主键)AreaName varchar 50 不为空AreaKM int 不为空③会员信息表表名:tb_Member列名数据类型长度备注MemberID bigint 8 关键字(主键)Name varchar 50 不为空Sex bit 1 不为空Password varchar 50 不为空TrueName varchar 50 不为空PhoneCode varchar 20 不为空Emails varchar 50 不为空City varchar 50 不为空Address varchar 50 不为空PostCode char 10 不为空AdvancePayment float 8 不为空LoadDate datetime 8 不为空④商品信息表表名:tb_GoodsInfo组成:列名数据类型长度备注GoodsID bigint 8 关键字(主键)ClassID bigint 8 不为空GoodsName varchar 50 不为空ntext 16 不为空GoodsIntroduceGoodsBrand varchar 50 不为空GoodsUnit varchar 10 不为空GoodsWeight float 8 不为空GoodsUrl varchar 50 不为空MarketPrice float 8 不为空MemberPrice float 8 不为空Isrefinement bit 1 不为空IsHot bit 1 不为空AddDate datetime 8 不为空IsDisCount bit 1 不为空第3章、需求分析6 3.1功能分析3.1.1前台功能需求前台实现会员注册、登录、充值以及购买商品,管理购物车,查看商品信息。

3.1.2后台功能需求后台主要实现会员管理,订单管理,物流管理,商品管理。

3.2系统的数据需求3.1.1 数据的逻辑信息管理员信息表(管理员编号,管理员姓名,管理员密码)编号为主码,因为不包含已在其它表中已包含的非主关键字信息,符合第三范式.配送范围表(配送编号,配送地点,配送距离)配送编号为主码,符合三范式.商品类别表(商品父级ID号,商品父级类别名,图片存储路径)商品父级ID号为主码,符合三范式商品信息表(商品类别号,商品父级ID号,商品名,商品介绍,商品品牌,计量单位,商品重量,图片存储路径,市场价格)商品类别号为主码,商品父级ID号为外码,符合三范式.图像信息表(图像ID号,图片名字,图片路径)图像ID号为主码,符合三范式用户信息表(会员编号,会员名,性别,会员密码,真实姓名,密码问题,密码答案,电话号码,邮件) 会员编号为主码,符合三范式订单详细信息表(订单号,下单时间,商品总金额,总金额,运费总金额,配送类型,支付类型,会员编号,接收者姓名,接收者电话,是否确认,是否付款,是否发货,是否归档,接收则邮编号码,接受者地址,接收者邮件) 订单号为主码,会员编号为外码,符合三范式支付方式表(支付ID号,支付方式) 支付ID号,符合三范式配送方式表(配送ID号,配送方式,总运费,商品父级ID号) 配送ID号为主码,商品父级ID 号为外码,符合三范式购买商品临时表(购物车内商品ID号,商品类别号,商品数量,商品总价格,会员ID号,商品重量) 购物车内商品ID号为主码, 会员ID号和商品类别号为外码,符合三范式3.1.2 数据流程图.网上购物商城实体图关系E-R图网上购物商城会员信息实体E-R图网上购物商城商品信息实体E-R图网上购物商城管理员实体E-R图网上购物商城订单信息实体E-R图3.3状态图第4章、系统设计4.1系统结构的总体设计4.1.1 模块层次结构图910 4.2数据库设计4.2.1 概念设计4.2.2 数据字典设计根据需求分析时数据字典的设计,分别设计这5张数据表如下:会员信息表tb_Member商品类别表tb_Class11 商品信息表tb_GoodsInfo订单详细信息表管理员信息表4.2.3 物理结构设计物理设计阶段的目标与任务数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:(2)对物理结构进行评价,评价的重点是时间和空间效率。

4.2.4 建立数据表会员信息表USE db_NetShopCREATE TABLE tb_Member(MemberID bigint PRIMARY KEY,Name varchar (50),Sex char(2),Password char(50),TrueName varchar(50),Phonecode varchar(20),Emails varchar(50),City varchar(50),Address varchar(50),PostCode char(10),AdvancePayment float(8),LoadDate datetime,)4.3 模块设计4.3.1文件及文件夹模块设计4.3.2 网站首页模块设计4.3.3会员登陆及注册顾客在进行第一次购物之前要进行会员登记。

一般要求输入真实的姓名、通讯地址、联系电话、Email地址等基本信息。

注册完后,系统会自动生成一个“会员ID”和密码,并在网页上显示出来。

顾客一定要记住自己的ID号和密码,为了防止密码泄漏,顾客可以自己修改密码.4.3.4商品信息模块设进入网上商店,挑选商品。

顾客可以按产品类别检索商品,也可以输入产品名称等信息,通配检索数据库,找出所关心的商品;查看商品细节说明,了解价格、付款及送货方式、说明.4.3.5 购物车模块设计4.3.6 管理员登录模块设计管理人员输入ID,密码进入管理页面。

4.3.7 网站管理首页模块设计4.3.8 商品管理模块设计4.3.9订单管理模块设计4.4公共类设计网上购物商城网站中新建了6个公共类,即ConmmonProperty、DBClass、ManagerClass、randomCode、SaveSubGoodsClass和UserInfoClass类.ConmmonProperty类用来保存管理订单时用到的公共变量DBClass类用来管理与数据库的连接ManagerClass类用来管理后台(如订单管理、会员管理、商品管理等)管理方面的操作randomCode类用来管理验证码.SaveSubGoodsClass类用来管理前台购物车中用到的公共变量.UserInfoClass类用来管理前台(如分类显示商品信息、会员购物、会员结账等)方面的操作.第5章、实现5.1编码Proc_GetGIByOID存储过程.主要用在查看订单的详细信息时,通过订单号查询购买的商品信息,创建该存储的信息如下:create Proc[dbo].[Proc_GetGIByOID](@OrderID bigint)asselect g.GoodsID,g.GoodsName,b.Num,g.MemberPrice,b.SumPrice,(case IsDisCount when'1'then'是'when'0'then'否'end)as IsDisCountfrom tb_GoodsInfo g,tb_BuyInfo b,tb_OrderInfo owhere g.GoodsID=b.GoodsID and b.OrderID=o.OrderID and o.OrderID=@OrderIDcase..when..then..end语句,将数据库中的数字(1或0)在界面上用具体的意思(商品打折或者不打折)表示出来protected void btnLoad_Click(object sender, EventArgs e){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()){int P_Int_IsExists = erExists(txtName.Text.Trim(), txtPassword.Text.Trim());if (P_Int_IsExists == 100){DataSet ds = 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{//Page.RegisterStartupScript("0", "<script>alert('您的登录有误,请核对后再重新登录!');location='javascript:history.go(-1)';</script>");Response.Write("<script>alert('您的登录有误,请核对后再重新登录');location='javascript:history.go(-1)';</script>");}}else{Response.Write("<script>alert('请正确输入验证码!');location='javascript:history.go(-1)';</script>");}}5.1.2购物车模块代码5.13管理员登录模块设计protected void btnLogin_Click(object sender, EventArgs e){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()){int P_Int_IsExists = mcObj.AExists(txtAdminName.Text.Trim(), txtAdminPwd.Text.Trim());if (P_Int_IsExists == 100){DataSet ds = 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>"); }else{Response.Write("<script>alert('您输入的用户名或密码错误,请重新输入!');location='javascript:history.go(-1)';</script>");}}else{Response.Write("<script>alert('验证码输入有误,请重新输入!ê?');location='javascript:history.go(-1)';</script>");}}}5.14订单管理设计代码/获取符合条件的订单信息///</summary>public void gvSearchBind()int P_Int_Confirmed;int P_Int_Payed;int P_Int_Shipped;int P_Int_Finished;if(ddlConfirmed.SelectedIndex ==1){P_Int_Confirmed =1;}else{P_Int_Confirmed =0;}if(ddlPayed.SelectedIndex ==1){P_Int_Payed =1;}else{P_Int_Payed =0;}if(ddlShipped.SelectedIndex ==1){P_Int_Shipped =1;}else{P_Int_Shipped =0;}if(ddlFinished.SelectedIndex ==1){P_Int_Finished =1;}else{P_Int_Finished =0;}if (ddlKeyType.SelectedIndex == 0){SqlCommand myCmd = mcObj.GetOrderInfo(0, 0, 0,Convert.ToInt32(txtKeyword.Text.Trim()), ddlConfirmed.SelectedIndex, ddlPayed.SelectedIndex, ddlShipped.SelectedIndex, ddlFinished.SelectedIndex, P_Int_Confirmed, P_Int_Payed, P_Int_Shipped, P_Int_Finished);mcObj.gvBind(gvOrderList, myCmd, "OrderInfo");}else{SqlCommand myCmd = mcObj.GetOrderInfo(0, 1,Convert.ToInt32(txtKeyword.Text.Trim()), 0, ddlConfirmed.SelectedIndex,20P_Int_Confirmed, P_Int_Payed, P_Int_Shipped, P_Int_Finished);mcObj.gvBind(gvOrderList, myCmd, "OrderInfo");}}5.15商品管理设计代码protected void gvGoodsInfo_PageIndexChanging(object sender, GridViewPageEventArgs e){gvGoodsInfo.PageIndex = e.NewPageIndex;if (txtKey.Text.Trim() == ""){gvBind();}else{gvSearchBind();}}protected void gvGoodsInfo_RowDeleting(object sender, GridViewDeleteEventArgs e){int P_Int_GoodsID =Convert.ToInt32(gvGoodsInfo.DataKeys[e.RowIndex].Value);mcObj.DeleteGoodsInfo(P_Int_GoodsID);if (txtKey.Text.Trim() == ""){gvBind();}else{gvSearchBind();}}5.16系统管理设计代码protected void btnSave_Click(object sender, EventArgs e){if (txtName.Text == "" || txtBrand.Text == "" || txtUnit.Text == "" || txtWeight.Text == "" || txtMemberPrice.Text == "" || txtMarketPrice.Text == "") {Response.Write("<script>alert('请输入必要的信息!')</script>");}else{bool Isrefinement ;bool IsDisCount;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 ;}int P_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('添加成功!');</script>");}}}结束语终于圆满的完成本次课程设计,虽然一步步走来遇到过很多阻力,设计上仍然存在一些不足之处,但是我真的学到了很多。