《毕业论文设计--网上订餐管理系统--设计与实现课程设计正文说明书.doc》由会员分享,可在线阅读,更多相关《毕业论文设计--网上订餐管理系统--设计与实现课程设计正文说明书.doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计说明书用纸网上订餐管理系统的设计与实现摘 要今年来,随着人们生活压力的持续增加,大部分人们都忙于工作,没多余的时间去自己做饭,进而促进了网上订餐行业的兴起。网上订餐为工薪阶层提供了方便、快捷的就餐方式,只需动动鼠标、键盘,可口的的饭菜就等送到嘴边!对于餐饮行业,有一个好的网上订餐管理系统,不仅能方便的管理餐饮,还能吸引不少顾客。由此可见,一个好的网上订餐管理系统已经成为一个餐饮公司发展好坏的一个决定性因素,在此类公司中占据着日趋重要的低位。通过分析网上订餐管理的内容及特点,提出了网上订餐管理系统的解决方案。系统采用ASP,SQLServer2005作为主开发工具进行开发。系统由管理员登
2、录,注册模块,餐饮信息查询模块,会员信息管理模块,订单信息管理模块,会员登录模块,会员基本信息、订单、修改信息模块和订餐模块等组成。文章以需求分析,概要设计,模块详细设计,系统运行和测试,系统说明等为主线,详细介绍了网上订餐管理系统。首先,根据网上订餐管理的内容及会员特点对系统作为需求分析,其次根据系统的实现功能和使用进行规划,最后完成了模块的划分和数据库的设计与实现,并对系统进行了测试。关键词:ASP,模块,数据库,网上订餐管理- III -目录1 绪论1 1.1 研究背景11.2 开发意义11.3 本文的组织结构12 系统需求分析22.1 系统功能分析22.2 设计目标22.3 开发及运行
3、环境23 系统概要设计33.1 数据库结构设计33.1.1 数据库概念结构设计33.1.2 数据库逻辑结构设计43.1.3 数据库物理结构设计43.2 系统功能设计73.2.1 数据库功能设计73.2.2 系统功能结构设计103.3 数据库的连接104 系统模块详细设计114.1 登录模块114.2 会员注册模块124.3 会员密码修改模块134.4 会员找回密码模块144.5 系统主模块154.6 新闻内容显示模块184.7 用户主页模块184.8 管理员登陆模块214.9 管理员注册模块224.10 管理员找回密码模块234.11 管理员修改密码模块244.12 管理员管理模块254.12
4、.1 餐饮管理模块254.12.2 添加餐饮模块264.12.3 新闻管理模块274.12.4 发布、编辑新闻模块284.12.5 会员管理模块294.12.6 订单管理模块305 系统运行与测试325.1 系统调试325.2 测试与运行335.2.1 测试的目的335.2.2 测试的原则335.2.3 测试的内容345.2.4 测试用例355.3 测试结论366 系统的使用说明与安装376.1 运行环境要求376.2 安装设置376.3 源程序用户名和密码37结论38参考资料39课程设计说明书用纸1 绪论1.1 研究背景“民以食为天”,餐饮业系百业之首。我国餐饮业已形成了高中低档多层次,东西
5、南北菜系多样化,中西餐相互补充的格局。目前,网络热潮正冲击着我们生活的方方面面。具体到餐饮业网络营销,网上订餐是一种主要的形式。本系统实现通过网上订餐,由餐饮公司负责送货上门业务,促进餐饮业的蓬勃发展。1.2 开发意义网上订餐业务的兴起,折射出餐饮业善抓机遇、抢占利润第二落点的经营理念,同时也显示出消费者在日常所需中,运用网络观念的意识正逐渐增强。但比起如今火爆的网上购物,网上订酒店住宿等服务,网上订餐服务在一些餐饮业中仍未引起足够的重视,对于消费者来说,许多人对这一新兴业务尚缺乏了解。但因这种消费方式响应了当前社会的快捷、便利等趋势,网上订餐仍存在着广阔的发展空间。网上订餐的发展也将给餐饮业
6、带来勃勃生机。1.3 本文的组织结构 第一章:绪论。本章主要介绍研究背景,开发意义。第二章:需求分析。本章主要介绍数据库需求分析,系统功能分析等。第三章:系统概要设计。本章主要介绍系统概要设计,数据库结构设计,数据库的连接。第四章:系统详细设计。本章主要介绍用户管理,对数据库的增删改查操作。第五章:系统运行与测试。本章主要介绍本系统的运行环境与测试。第六章:系统的使用说明与安装。2 系统需求分析 系统的需求分析中根据网上订餐管理的一般流程,分析了系统的具体功能,对系统作了总体的规划,提出了系统的设计目标,介绍了系统的开发及运行的环境。2.1 系统功能分析经过调查、分析,本系统具有以下功能:(1
7、)提供会员登录、注册、修改密码以及基本资料。(2)提供管理员登陆,注册,修改密码以及基本资料。 (3)提供对会员基本信息的查询。(4)提供管理员对餐饮、会员、订单、新闻、数据库的管理。(5)提供会员对新闻、餐饮信息的浏览以及订购餐饮的功能。2.2 设计目标通过分析,主要实现如下目标:(1)编写登录模块,设置登录用户的用户名和密码。(2)编写主模块,设置通过菜单选项进入系统不同的子模块。(3)编写对会员基本信息操作模块。(4)编写管理员登录、注册、修改密码模块。(5)编写管理员对餐饮、会员、订单、新闻、数据库管理模块。2.3 开发及运行环境1、硬件平台:(1)CPU:P41.8GHz。(2)内存
8、:256MB以上。2、软件平台:(1)操作系统:Windows XP/ Windows 2000。(2)数据库:SQL Server 2005(3)开发工具:ASP.NET3 系统概要设计系统概要设计首先对数据库的编码进行设计,方便数据信息的处理,其次是根据需求分析,对数据库的结构进行设计,建立相关的数据表,最后构画出系统功能的结构图。3.1 数据库结构设计3.1.1 数据库概念结构设计根据软件工程所学知识和以上对本次课程设计系统的分析,最终画出系统的实体关系图 (E-R图)如图3.1所示。3.1.2 数据库逻辑结构设计由3.1.1的实体关系图可以得到系统的关系模式为:餐饮信息(餐饮id,餐饮
9、名,原料,简介,图片,价格,订购数,已发货量)管理员信息(管理员id,姓名,密码,联系方式)会员信息(会员id,密码,姓名,性别,地址,联系方式)订单信息(订单id,会员id,所订餐饮id,订购数量,订购时间,用餐时间)新闻信息(新闻id,标题,内容,发布人,发布时间,点击次数)3.1.3 数据库物理结构设计1、数据库的设计CREATE DATABASE WSDC ON PRIMARY ( NAME = WSDC, FILENAME = D:网上订餐管理系统(课程设计)UserApp_DataWSDC.mdf , SIZE = 3072KB , MAXSIZE = UNLIMITED, FIL
10、EGROWTH = 1024KB ) LOG ON ( NAME = WSDC_log, FILENAME = D:网上订餐管理系统(课程设计)UserApp_DataWSDC_log.ldf , SIZE = 1024KB MAXSIZE = 2048GB , FILEGROWTH = 10%)2、表的设计(1)CY(餐饮表) 餐饮id(Cid)为主键,不允许空,餐饮名Cname不允许空,其余字段允许为空,Cdnum设置触发器,当往订单表中插入新数据时,自动更新餐饮表中的订购数量CdnumCY(餐饮表)如图3.2所示。图3.2 CY表的结构CREATE TABLE CY(Cid int ID
11、ENTITY(1,1) NOT NULL primary key,Cname char(20) NOT NULL,Cdnum int,Cfh int,Cyl char(100),Cprice float check(Cprice0),Cima varchar(50),Cintroduce char(1000))(2)HY(会员信息表) 会员id(Hid)为主键,不允许空,其余字段允许空,性别(Hsex)设置check约束,只允许填写“男”“女”HY(会员信息表)如图3.3图3.3 HY的结构CREATE TABLE HY(Hid char(10) NOT NULL primary key,Hn
12、ame char(10),Hadd char(100),Hpwd char(10),Hphone char(15),Hsex nchar(10) check(Hsex in (男,女))(3)GLY(管理员信息表) 管理员id(Gid)为主键,Gid和密码Gpwd不允许空。GLY(管理员信息表)图3.4图3.4 GLY表的结构CREATE TABLE GLY(Gid char(10) NOT NULL PRIMARY KEY,Gname char(10),Gpwd nchar(10) NOT NULL,Gphone char(12)(4)DD(订单信息表) 订单号为主键且以1为单位自增,本表所
13、有字段均不允许为空。DD(订单信息表) 如图3.5图3.5 DD表的结构CREATE TABLE DD(Did int IDENTITY(1,1) NOT NULL,Hid char(10) NOT NULL,Cid int NOT NULL,Dnum int NOT NULL DEFAULT (1),Ddate datetime NOT NULL, Ydate datetime NOT NULL)(5)NEWS(新闻信息表) 新闻id(NewsId)为主键,不允许空,其余字段均允许空。NEWS(新闻信息表)图3.6 图3.6 NEWS表的结构CREATE TABLE NEWS(NewsId
14、int IDENTITY(1,1) NOT NULL,title char(100),content text,NewsUser char(10),NewsDate datetime)3.2 系统功能设计3.2.1 数据库功能设计(1)视图视图是一个虚拟表,其内容由询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。通过视图可以检索基表中的数据,也可以通过视图来修改基表中的数据。(1)餐饮信息视图use WSDCgocreate view
15、Cintroduceas select * from CY(2)餐饮显示信息视图Use WSDCCREATE view cyInformation as select Cyl,Cid,Cname,Cprice,Cima,Cintroduce from CY(3)餐饮管理信息视图use WSDCgocreate view CYmanageas select * from CY(4)新闻信息视图use WSDCgocreate view newsInformationas select * from NEWS(2)存储过程存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、
16、有条件执行以及其他强大的编程功能。存储过程可以使得数据库的管理、显示关于数据库及其用户信息的工作容易得多。存储过程包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。存储过程具有以下优点:1、可以在单个存储过程中执行一系列SQL语句,2、可以从自己的存储过程内引用其他存储过程,3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,且能减少网络通信的负担。USE WSDCGOcreate proc sa a char(10)asselect * from cyinformation where cname=a(3)本系统所创建的触发
17、器触发器在INSERT、UPDATE或DELETE语句对表或视图进行修改时会被自动执行。触发器可以查询其他表,并可以包含复杂的T-SQL语句。一个表可以有多个触发器。触发器可通过数据库中的相关表实现级联更改,但是,通过级联引用完整性约束可以更有效地执行这些更改;也可以强制比用CHECK约束定义的约束更为复杂的约束;也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中多个同类触发器允许采取多个不同的对策,以响应同一个修改语句;触发器也可确保数据规范化。使用触发器可以维护非正规化数据库环境中的记录级数据的完整性。(1)餐饮表触发器此触发器实现当从餐饮表中删除一项餐饮信息后,自动删除订单表
18、中与此餐饮相关的所有信息USE WSDCcreate trigger DD_updateon CY after deleteasbegindeclare cid intif exists (select cid from deleted)select cid=(select cid from deleted)delete from DD where cid=cid end(2)订单表触发器此触发器实现当有新订单生成时,自动更新餐饮表中餐饮订购数量。USE WSDCcreate trigger CY_updateon DD after insertasbegindeclare Cid int,D
19、num intif exists (select cid from inserted)select Cid=(select cid from inserted)select Dnum=(select Dnum from inserted)update CY set Cdnum=Cdnum+Dnum where Cid=Cidend(4)本系统所使用的索引索引和书的目录类似,它提供了指向表中行的指针,是到达数据的直接路径。索引是为了加速检索而创建的一种存储结构。索引是针对一个表而建立的。它是由除存放表的数据页面以外的索引页面组成的。每个索引页面中的行都包含逻辑指针,通过该指针可以直接检索到数据,
20、这就会加速物理数据的检索。索引有下述优点:1、提高了查询的速度,2、提高连接,3、查询优化器依靠索引起作用,4、强制实施行的唯一性。(1)餐饮索引CREATE NONCLUSTERED INDEX Cy_ind ON CY (Cid ASC)(2)会员索引CREATE NONCLUSTERED INDEX HY_ind ON HY (Hid ASC)(3)新闻索引CREATE NONCLUSTERED INDEX news_ind ON NEWS ( NewsId ASC,title ASC)(4)订单索引CREATE NONCLUSTERED INDEX DD_ind ON DD (Did
21、ASC,Hid ASC)(5)本系统所使用的函数用户在编程时常常需要将一个多多个T-SQL语句组成子程序,以便反复调用。SQL Server 2005允许用户根据需要自己定义函数。根据定义函数返回值类型,可将函数分为两个类别:标量函数和表值函数。标量函数返回值是标量值。表值函数返回值为整个表。按餐饮价格范围查找餐饮信息函数代码如下:USE WSDCcreate function searchbyprice(p1 float,p2 float)returns tableasreturn( select * from CY where Cprice between p1 and p2 )3.2.2
22、 系统功能结构设计根据需求分析和数据库的设计,构画出网上订餐系统功能结构图,如图3.7所示。网上订餐管理系统管理员登陆登陆成功餐饮增删改会员删除新闻增删改订单删除会员登陆登陆成功订购餐饮管理订单修改个人信息注册修改密码注册修改密码图3.7 系统功能结构图3.3 数据库的连接本设计是通过ADO.NET和数据库建立连接并访问数据库的,代码如下:(connectionStrings)(add name=conn connectionString=Data Source=.;Initial Catalog=WSDC;Integrated Security=SSPI;/)(/connectionStri
23、ngs)4 系统详细设计 本章主要介绍本系统各界面所实现的功能以及用到的一些技术,是读者对本系统有个全面的认识。4.1 登录模块登录模块是为保证信息的安全,只允许由用户名和密码的用户进入对系统进行相关的操作,当输入正确时即可进入系统。并提供会员注册和修改、找回密码链接。登入界面Login.aspx,效果如图4.1所示。图4.1 登录界面会员登录模块的主要代码为:protected void ImageButton1_Click(object sender, ImageClickEventArgs e) string sql = select count(*) from HY where Hid
24、= + TextBox1.Text + and Hpwd= + TextBox2.Text + ; int r = Int32.Parse(DBUtility.DbHelperSQL.GetSingle(sql).ToString(); if (r 0) HttpCookie cookie = new HttpCookie(name); cookie.Value =TextBox1.Text; Response.Cookies.Add(cookie); Response.Redirect(main.aspx); else Label5.Text = 用户名或密码错误; TextBox1.Tex
25、t = ; TextBox2.Text = ; TextBox1.Focus(); 4.2会员注册模块会员注册模块的功能是注册新的会员,通过该模块可将会员信息插入数据库中,下次登陆时便可用此会员的用户名和密码登陆。用户注册界面Hadd.aspx,效果如图4.2所示。图4.2 用户注册页面该模块的主要代码为:protected void ImageButton1_Click(object sender, ImageClickEventArgs e) string sql = select count(*) from HY where Hid= + TextBox1.Text + and Hpwd
26、=+TextBox2.Text+; int r = Int32.Parse(DBUtility.DbHelperSQL.GetSingle(sql).ToString(); if (r0) Label13.Text = 用户名已存在!; else string sql1 = insert into HY(Hid,Hpwd,Hname,Hadd,Hphone) values(userId,userPwd,userName,userAddress,userPhone); SqlParameter pars = new SqlParameter5; pars0 = new SqlParameter(
27、userId, SqlDbType.VarChar); pars0.Value = TextBox1.Text; pars1 = new SqlParameter(userPwd, SqlDbType.VarChar); pars1.Value = TextBox2.Text; pars2 = new SqlParameter(userName, SqlDbType.VarChar); pars2.Value = TextBox4.Text; pars3 = new SqlParameter(userAddress, SqlDbType.VarChar); pars3.Value = Text
28、Box5.Text; pars4 = new SqlParameter(userPhone, SqlDbType.VarChar); pars4.Value = TextBox6.Text; int s = DBUtility.DbHelperSQL.ExecuteSql(sql1, pars); string sql2 = select count(*) from HY where Hid= + TextBox1.Text + and Hpwd= + TextBox2.Text + ; int i=Int32.Parse( DBUtility.DbHelperSQL.GetSingle(sq
29、l2).ToString(); if (i 0) Label13.Text = 添加成功!; else Label13.Text = 添加失败!; 4.3 会员密码修改模块此模块的功能是修改会员密码,修改后会员可用新的密码登陆。用户修改密码界面Changepwd.aspx,效果如图4.3所示。 图4.3 用户修改密码页面会员修改模块的主要代码为:protected void Button1_Click(object sender, EventArgs e) string sql = select count(*) from HY where Hid= + TextBox1.Text + and
30、 Hname= + TextBox2.Text + and Hphone= + TextBox3.Text + ; int j = Int32.Parse(DBUtility.DbHelperSQL.GetSingle(sql).ToString(); if (j 0) string sql1 = update HY set Hpwd=+TextBox4.Text+ where Hid= + TextBox1.Text + and Hname= + TextBox2.Text + and Hphone= + TextBox3.Text + ; int i=DBUtility.DbHelperS
31、QL.ExecuteSql(sql1); if (i0) Label14.Text = 密码修改成功! ; else Label14.Text = 用户信息填写错误!; protected void Button2_Click(object sender, EventArgs e) Response.Redirect(Login.aspx); protected void Button3_Click(object sender, EventArgs e) TextBox1.Text = ; TextBox2.Text = ; TextBox3.Text = ; TextBox4.Text =
32、; TextBox5.Text = ;4.4 找回密码模块用户通过此模块,填写正确的信息即可在页面显示出正确的密码。用户找回密码界面FindPwd.aspx,效果如图4.4所示。 图4.4 用户找回密码页面找回密码模块的主要代码:protected void Button1_Click(object sender, EventArgs e) string sql = select Hpwd from HY where Hid=id and Hname=name and Hphone=ph; string sql1 = select count(*) from HY where Hid=id a
33、nd Hname=name and Hphone=ph; SqlParameter par = new SqlParameter3; par0 = new SqlParameter(id,TextBox1.Text); par1 = new SqlParameter(name,TextBox2.Text); par2 = new SqlParameter(ph, TextBox3.Text); int i = Int32.Parse(DBUtility.DbHelperSQL.GetSingle(sql1,par).ToString(); if (i 0) string pwd = DBUti
34、lity.DbHelperSQL.GetSingle(sql,par).ToString(); Label7.Text=您的密码时:+pwd; else Label8.Text=用户信息填写错误!; protected void Button2_Click(object sender, EventArgs e) Response.Redirect(Login.aspx); protected void Button3_Click(object sender, EventArgs e) TextBox1.Text=; TextBox2.Text = ; TextBox3.Text = ; 4.5
35、 系统主模块系统主模块显示餐饮信息和新闻信息,实现按名称、价格范围查找餐饮,订购餐饮、浏览餐饮新闻以及链接到会员详细信息界面等功能。本模块通过新闻视图、餐饮视图查询新闻、餐饮信息并显示,通过存储过程实现餐饮按名称精确查找,通过函数实现餐饮按价格范围查找。订餐主界面main.aspx,效果如图4.5所示。图4.5 系统主模块主模块的主要代码:public partial class main : System.Web.UI.Page string s; protected void Page_Load(object sender, EventArgs e) if (!Page.IsPostBac
36、k) AllowPage1.ControlID = Repeater1; AllowPage1.ControlType = 2; AllowPage1.PageSize =5; AllowPage1.SQL = select * from newsInformation order by NewsDate desc; AllowPage2.ControlID = Repeater2; AllowPage2.ControlType = 2; AllowPage2.PageSize = 5; AllowPage2.SQL = select * from cyInformation order by
37、 cprice ; if (Request.Cookiesname!= null) denglu.Visible = false; zhuce.Visible = false; mypage.Visible = true; tuichu.Visible = true; s = Request.Cookiesname.Value; Label1.Text = s + ,欢迎您回来!; if (!Page.IsPostBack) BindToRepeater(); BindToRepeater2(); else denglu.Visible = true; zhuce.Visible = true
38、; BindToRepeater(); BindToRepeater2(); public void BindToRepeater() AllowPage1.DataTbl = DBUtility.DbHelperSQL.Query(AllowPage1.SQL).Tables0; PagedDataSource pds = AllowPage1.GetPagedDataSource(0); Repeater1.DataSource = pds; Repeater1.DataBind(); public void BindToRepeater2() AllowPage2.DataTbl = D
39、BUtility.DbHelperSQL.Query(AllowPage2.SQL).Tables0; PagedDataSource pds1 = AllowPage2.GetPagedDataSource(0); Repeater2.DataSource = pds1; Repeater2.DataBind(); public string subTitle(object obj) string title = obj.ToString(); if (title.Length ) 10) return title.Substring(0, 10) + .; else return titl
40、e; public string getDate(object obj) return DateTime.Parse(obj.ToString().ToShortDateString(); protected void Button1_Click(object sender, EventArgs e) if (Request.Cookiesname != null) if (Request.FormselectOne = null) Response.Write(alert(请先勾选!); else string a = Request.FormselectOne.ToString(); string s1 = a.Split(,); for (int j = 0; j(s1.Length; j+) string sql1 = select count(*) from DD where Hid= + Request.Cookiesname.Value + and Cid= + s1j; int i = Int32.Parse(DBUtility.DbHelperSQL.GetSingle(sql1).ToString();