计划周记进度检查表.xls

基于.NET的在线订餐系统设计与开发【带程序】

收藏

压缩包内文档预览:
预览图 预览图
编号:273419    类型:共享资源    大小:10.43MB    格式:RAR    上传时间:2014-04-28 上传人:上*** IP属地:江苏
45
积分
关 键 词:
基于 net 在线 订餐系统 设计 开发 程序
资源描述:

基于.NET的在线订餐系统设计与开发

65页 23000字数+说明书+任务书+开题报告+在线订餐系统代码

任务书.doc

在线订餐系统代码.rar

基于.NET的在线订餐系统设计与开发开题报告.doc

基于.NET的在线订餐系统设计与开发论文.doc

外文翻译--ASP.NET技术.doc

相关资料.doc

计划周记进度检查表.xls


摘  要

随着计算机网络技术的不断发展,网络已成为人们日常生活的一部分。越来越多的人喜欢上了网购这种便捷的方式,因此在线订餐也受到了人们的欢迎。本系统分为两大模块:前台模块和后台模块。前台登录模块主要实现了用户注册、用户登录、找回密码的功能。用户登录后能够对菜品进行查询、预定、加入购物车、订单、支付、退款。用户在我的订单下可对订单进行查询、个人资料的修改。用户在社区家园里可以进行留言并查看他人留言。在后台模块中,普通管理员能够查看用户信息,查询并回复用户留言,对菜品详细信息、菜品类型进行查询及增删改,对用户订单可查询及批量删除,还可实时更改公告栏信息。超级管理员除了上述操作外,还能查询所有管理员信息,增加或删除某个管理人员,修改管理员权限。

经过分析,本系统使用Visual Studio 2005和SQL-Server2000作为开发工具,开发出了以B/S为模式的基于ASP.NET的在线订餐系统。

关键词: ASP.NET;在线订餐系统;SQL-Server;Visual Studio



目  录

摘  要III

AbstractIV

目  录V

1 绪论1

1.1在线订餐系统的研究内容和意义1

1.2国内外订餐系统的发展概况1

1.3在线订餐系统应达到的要求1

1.4开发环境2

1.5本文主要内容2

2相关技术介绍3

2.1 ASP.NET技术3

2.2 SQL Server 2000介绍4

2.3 C#语言5

2.4 B/S结构6

2.4 本章小节6

3在线订餐系统分析7

3.1 可行性研究7

3.2 需求分析8

3.2.1 功能需求分析8

3.2.2 数据库需求分析8

3.2.3 数据流图9

3.2.4 数据字典11

3.3 流程图12

3.4 本章小节12

4 在线订餐系统总体设计13

4.1 系统模块图13

4.1.1前台功能模块13

4.1.2 后台功能模块14

4.2 数据库设计15

4.2.1 数据库概念设计(E-R图)15

4.2.2 数据库逻辑设计17

4.2.3 数据库物理设计21

4.2.5 数据库关系图22

4.3 本章小节22

5在线订餐系统的实现23

5.1 前台系统的实现23

5.1.1 在线餐系统首页23

5.1.2 菜单查询与菜品详细信息界面24

5.1.3 预订服务界面26

5.1.4 我的订单界面30

5.1.5 社区家园界面36

5.1.6 用户登录与注册界面38

5.2 后台系统的实现43

5.2.1 登录界面43

5.2.2 用户管理43

5.2.3 菜品管理45

5.2.4 订单管理界面46

5.2.5 管理员管理47

5.2.6 公告栏界面47

5.2.7 留言板界面48

5.3 本章小节48

6系统测试49

6.1 测试方案49

6.2 测试过程49

6.3 本章小节49

7 结论与展望51

7.1 结论51

7.2 不足之处及未来展望51

致  谢53

参考文献54

附  录55

1.2 国内外订餐系统的发展概况

   现在我国多数餐厅使用的订餐方式仍是电话订餐。然而这种订餐方式存在着许多的不足,如效率低,需人工记录,而且容易遗漏和出错。因此在线订餐的出现顺应了时代的需求。当然也有商家发现了新的市场开发网上业务。近几年来国内在线订餐发展迅速,因为在线订餐模式的成本低,又有巨大的市场,从事在线订餐的网站如雨后春笋般的出现。由于国内关注在线订餐的人数有限,而且比较集中在白领、大学生等青年群体中,以一线城市为主要市场,区域性比较明显。所以总体来说,我国的在线订餐业务才刚刚起步,仍然存有很大的发展空间。

   国外的许多知名餐饮企业在多年前就已经开始了出现网上订餐服务,并且受到了许多人士的欢迎。最近几年网上订餐服务也在中国陆续推出、逐渐普及。


1.3 在线订餐系统应达到的要求

   ⑴ 说明在线订餐的指导思想;阐述在线订餐系统应解决的主要问题。

   ⑵ 用户可以进行多条件查询,根据具体需要方便、迅速的找到所需信息。

   ⑶ 系统中的信息采用动态式发布,信息的发布更新的实时。且在线订餐采用动态网页技术实现内容发布。

   ⑷ 系统要有良好的互动性,方便用户提供建议与意见。

   ⑸ 系统要有清晰的构架、友好美观的界面。 

1.4 开发环境

   ⑴ 服务器端

   操作系统:Windows XP

   数据库服务器:SQL Server2000

   浏览器:IE浏览器

   ⑵ 客户器端

   浏览器:IE浏览器

1.5 本文主要内容

   本文通过需求分析对在线订餐系统进行总体规划,开发出一个基于B/S模式的在线订餐系统。本在线订餐系统按照软件工程的基本步骤进行系统分析、设计和实现。本文的具体结构安排如下:

   第一部分绪论主要阐明在线订餐系统的研究内容与意义,国内外的订餐系统的发展状况,以及系统应达到的要求。

   第二部分主要内容是相关技术的介绍,介绍了系统开发工具的优势所在。

   第三部分是对软件进行可行性分析与需求分析,分析了系统要达到的主要功能等。给出了系统的整体流程图。

   第四部分主要是系统模块设计和数据库的设计,描述了系统前后台的主要模块,数据库概念设计、逻辑设计和物理设计。

   第五部分主要讲述了在线订餐系统的实现,前后台的主要界面和代码。

   第六部分对系统实现功能的测试,

   第七部分是对本文的结论和展望,总结了完成本系统后自己的感悟与系统存在的不足之处。

   最后,感谢对于在完成这次论文与软件过程中给予帮助的人,列出参考文献。

内容简介:
无锡太湖学院信 机系 计算机科学与技术 专业毕 业 设 计论 文 任 务 书一、题目及专题:1、题目 基于.NET的在线订餐系统设计与开发 2、专题 二、课题来源及选题依据 课题来源:导师指定 选题依据:随着时代的发展,人们的生活越来越离不开网络。如今的网络已渗透到社会的方方面面。网络的迅猛发展不仅给我们带来了无限便利,更给传统的产业带来了新的发展空间。餐饮行业的变化尤为明显,最为突出的就是在线订餐。 在线订餐为人们提供了一个快速简洁的订餐方式,节省了很多不必要的时间。尤为突出的是在线订餐图文并茂,配有主要食材的介绍,更能及时更新为客户提供最新信息。在线订餐能提高餐饮企业效率,人们通过上网,可以预订进餐时间和具体的菜色,为饭店带来了新的收益。最重要的是,这样的订餐方式,对信息的存储保管、更新、处理及时,实现了高度智能化管理。 三、本设计(论文或其他)应达到的要求:了解程序设计,完成系统的代码的编写; 熟练掌握数据库原理及应用,特别是数据库标准语言SQL; 掌握SQL SERVER2000的使用,并熟练操作; 熟练使用Visual Studio 2005开发工具,进行软件开发; 对餐厅运营模式,在线订餐的过程有一个总体的理解; 做好整个系统的需求分析,并按照要求循序渐进的进行系统开发,逐步完善,最终完成系统开发。 四、接受任务学生: 计科94 班 姓名 陆 莹 五、开始及完成日期:自2012年11月12日 至2013年5月25日六、设计(论文)指导(或顾问):指导教师签名 签名 签名教研室主任学科组组长研究所所长签名 系主任 签名2012年11月12日无锡太湖学院毕业设计(论文)开题报告题目:基于.net的在线订餐系统设计与开发 信机 系 计算机科学与技术 专业学 号: 学生姓名: 指导教师: (职称:副教授 ) (职称: )2012年12月06日 课题来源自拟题目科学依据(包括课题的科学意义;国内外研究概况、水平和发展趋势;应用前景等)随着人们生活水平的提高,对饮食的要求也越来越高。餐饮业是一种个性化、多样化的服务产业。通过网上订餐,顾客不需到现场,便可以为自己、家人、朋友聚会等购买美食。网上订餐图文并茂,更能及时更新信息和在线查看,有效地解决了餐过程中排队,拥挤,餐单信息不能及时更新的问题。网上订餐既节省时间,更为广大客户提供更多选择。据悉国外的许多知名餐饮企业在多年前就已经开始了出现网上订餐服务,并且受到了许多人士的欢迎。最近几年这些企业的网上订餐服务也在中国陆续推出、逐渐普及中。现在我国多数餐厅使用的订餐方式仍是电话订餐,这种订餐方式效率低,需人工记录,容易遗漏和出错。当然也有商家发现了新的市场开发网上业务。但是总体来说,我国的网上订餐业务还处于形成期,有很大的成长空间。 人们通过网络,可对菜品进行预订,这样不仅能够节约了时间,也能提高餐饮企业的订餐管理效率。最重要的是,这样的订餐方式不易出错,对每位客户的订餐处理及时,实现了高度智能化管理。因此网上订餐有望发展成一种潮流的订餐方式,成为餐饮业销售增长的新模式。研究内容本系统将实现在线网上订餐业务的自动化管理。整个系统由以下几个基本模块组成。商品管理:主要实现对商品实时查询,及时增加、修改、删除相关信息的能。订单管理:用户可以查看已经预定的商品,预订的时间,付款情况。用户管理:新客户可申请账号进行菜品的预订,已经申请的用户可根据申请的账号登陆系统。商家可以对录入的会员信息进行管理。系统管理:系统管理人员可对对软件的维护和权限进行管理。包括系统维护向导,权限管理。数据库的需求:因为无法连接到大型数据库,只能在本机上安装SQL Server 2000数据库软件。在此数据库中建立需要的表来保存数据。拟采取的研究方法、技术路线、实验方案及可行性分析在Windows系统下基于.NET环境使用Microsoft Visual Studio 2005开发软件进行系统开发,并采用SQL Server 2000作为数据库服务器进行数据处理。首先熟悉所运用到的开发软件,收集整理相关的资料信息。然后了解整个订餐系统流程,设计系统总体框架,完成主体模块功能;对系统进行排版,界面的美化;实现系统与数据库的连接。最终对系统进行测试,查找漏洞,并逐步完善系统。 网上订餐可以方便人们的生活、提高效率。使人们可以足不出户就可完成订餐,网上订餐系统不仅可以实现客户在线订餐的功能,黑可以在此基础上完善配套的服务。让人们在生活中享受到科技进步所带来的便利。如今经济的发展推动了互联网技术的飞速发展,在订餐系统也显示这越来越强大的优势。研究计划及预期成果研究计划:2012年12月12日以前: 收集相关资料,撰写开题报告,并按开题报告条款进入毕业设计阶段。 2012年12月2013年1月:初步完成毕业设计系统框架.。 2013年2月:完成各功能模块编码 。 2013年3月2013年4月:测试、验收,完善,撰写毕业论文。 2013年5月: 上交论文、系统代码、根据导师意见修改毕业论文并完善论文。 2013年6月2日4日:进行毕业答辩。预期成果:根据计划及时的完成每阶段的任务。特色或创新之处本课题是基于.NET架构下的ASP.NET和SQL Server 2000技术联合开发完成。订餐信息简洁明了,配有图片文字说明,信息一目了然。宣传效果明显,面向客户群体广泛。无需安装第三方软件,甚至能过通过手机上网订餐。操作简变,订餐信息准确,更能及时反应最新的菜品情况。可实现预定功能,节省时间。已具备的条件和尚需解决的问题已具备的条件:1、 一台计算机。2、 客户的基本需求,订餐的总体流程。3、 Microsoft Visual Studio 2005和SQL Server 2000软件。尚需解决的问题:1、 详细的需求分析2、 具体模块功能的实现指导教师意见 此处日期2011年11月14日-2010年11月18日之间 指导教师签名:年 月 日教研室(学科组、研究所)意见 教研室主任签名: 年 月 日系意见 主管领导签名: 年 月 日编编 号号无锡太湖学院毕毕业业设设计计(论论文文)题目:题目: 基于基于.NET 的在线订餐系统的在线订餐系统 设计与开发设计与开发 信机 系系 计算机科学与技术 专专 业业学 号: 学生姓名: 指导教师: (职称:副教授 ) (职称: )2013 年 5 月 25 日无锡太湖学院本科毕业设计(论文)无锡太湖学院本科毕业设计(论文)诚诚 信信 承承 诺诺 书书本人郑重声明:所呈交的毕业设计(论文) 基于.NET 的在线订餐系统设计与开发 是本人在导师的指导下独立进行研究所取得的成果,其内容除了在毕业设计(论文)中特别加以标注引用,表示致谢的内容外,本毕业设计(论文)不包含任何其他个人、集体已发表或撰写的成果作品。 班 级: 计科 94 学 号: 0921125 作者姓名: 2013 年 5 月 25 日I摘摘 要要随着计算机网络技术的不断发展,网络已成为人们日常生活的一部分。越来越多的人喜欢上了网购这种便捷的方式,因此在线订餐也受到了人们的欢迎。本系统分为两大模块:前台模块和后台模块。前台登录模块主要实现了用户注册、用户登录、找回密码的功能。用户登录后能够对菜品进行查询、预定、加入购物车、订单、支付、退款。用户在我的订单下可对订单进行查询、个人资料的修改。用户在社区家园里可以进行留言并查看他人留言。在后台模块中,普通管理员能够查看用户信息,查询并回复用户留言,对菜品详细信息、菜品类型进行查询及增删改,对用户订单可查询及批量删除,还可实时更改公告栏信息。超级管理员除了上述操作外,还能查询所有管理员信息,增加或删除某个管理人员,修改管理员权限。经过分析,本系统使用Visual Studio 2005和SQL-Server2000作为开发工具,开发出了以B/S为模式的基于ASP.NET的在线订餐系统。关键关键词:词: ASP.NET;在线订餐系统;SQL-Server;Visual StudioIIAbstractWith the continuous development of computer network technology,the network has become a part of our daily live. These days more and more people prefer online shopping as it is convenient, so ordering online has also been welcomed by many people. The system is divided into two modules: front module and background module. The front module mainly realize the functions of user registration, user login, Retrieve password. After Users log in,they can inquire and reserve the dishes ,add dishes to the cart ,even make the order , pay or refund the dishes. Users can inquire the order ,change their information under the menu of “my order”. Users can also check messages from others in the community homestead. In the background module, normal administrators can view the user information, query and reply to Guest Book,do some additions and deletions or changes to the type of dishes, inquire and bulk delete the users orders, can also change the bulletin board in real time. In addition to the authority of normal administrators, the super administrator can query all administrators information. Add or delete a management, modify administrator privileges. After analysis, the system uses Visual Studio 2005 and SQL Server 2000 as a development tool, Develop ASP.NET-based online reservation system with B / S mode.Key words: ASP.NET; online reservation system ; SQL - Server ; Visual Studio目目 录录摘 要IIIABSTRACTIV目 录 V1 绪论11.1 在线订餐系统的研究内容和意义11.2 国内外订餐系统的发展概况11.3 在线订餐系统应达到的要求11.4 开发环境21.5 本文主要内容22 相关技术介绍32.1 ASP.NET 技术32.2 SQL SERVER 2000 介绍42.3 C#语言52.4 B/S 结构62.4 本章小节63 在线订餐系统分析73.1 可行性研究73.2 需求分析83.2.1 功能需求分析83.2.2 数据库需求分析83.2.3 数据流图93.2.4 数据字典113.3 流程图123.4 本章小节124 在线订餐系统总体设计134.1 系统模块图134.1.1 前台功能模块134.1.2 后台功能模块144.2 数据库设计154.2.1 数据库概念设计(E-R 图)154.2.2 数据库逻辑设计174.2.3 数据库物理设计214.2.5 数据库关系图224.3 本章小节225 在线订餐系统的实现235.1 前台系统的实现235.1.1 在线餐系统首页23I5.1.2 菜单查询与菜品详细信息界面245.1.3 预订服务界面265.1.4 我的订单界面305.1.5 社区家园界面365.1.6 用户登录与注册界面385.2 后台系统的实现435.2.1 登录界面435.2.2 用户管理435.2.3 菜品管理455.2.4 订单管理界面465.2.5 管理员管理475.2.6 公告栏界面475.2.7 留言板界面485.3 本章小节486 系统测试496.1 测试方案496.2 测试过程496.3 本章小节497 结论与展望517.1 结论517.2 不足之处及未来展望51致 谢53参考文献54附 录5501 绪论绪论1.1 在线订餐系统的研究内容和意义在线订餐系统的研究内容和意义现在是个属于互联网的世纪,网络技术的迅速发展使之成为了社会生活的一个十分重要的部分。各行各业的人们都在运用这一技术,为顾客提供更方便周到的服务。它给各个行业创造了无限的发展商机与巨大的经济效益。中国自古就有“国以民为本,民以食为天”的说法。随着人们生活水平的不断提高,对于实物的要求也从吃到饱吃到好变为吃的健康有营养。酒店餐厅的竞争日趋激烈,更加突显出改革的重要性。这种趋势迫使各大饮食行业寻求新的销路、降低管理成本、提供特色服务和培养忠实客户等方法来提高餐厅的核心竞争力。而最为有效的方法就是应用先进的信息管理技术,给饮食行业注入新鲜的血液。在线订餐系统的开发正是如此,不仅能够给饮食行业带来生机和活力,而且能提高餐厅的知名度。在线订餐不仅能够方便消费者,使用户可以足不出户订购、浏览菜品。而且餐厅可以根据在线订餐系统中用户的订单记录,建立起自己潜在顾客资料。最为明显的是在进行优惠活动时,能够根据不同用户的消费情况制定具体的促销方式。这样以来的促销更有针对性、实用性。1.2 国内外订餐系统的发展概况国内外订餐系统的发展概况现在我国多数餐厅使用的订餐方式仍是电话订餐。然而这种订餐方式存在着许多的不足,如效率低,需人工记录,而且容易遗漏和出错。因此在线订餐的出现顺应了时代的需求。当然也有商家发现了新的市场开发网上业务。近几年来国内在线订餐发展迅速,因为在线订餐模式的成本低,又有巨大的市场,从事在线订餐的网站如雨后春笋般的出现。由于国内关注在线订餐的人数有限,而且比较集中在白领、大学生等青年群体中,以一线城市为主要市场,区域性比较明显。所以总体来说,我国的在线订餐业务才刚刚起步,仍然存有很大的发展空间。国外的许多知名餐饮企业在多年前就已经开始了出现网上订餐服务,并且受到了许多人士的欢迎。最近几年网上订餐服务也在中国陆续推出、逐渐普及。1.3 在线订餐系统应达到的要求在线订餐系统应达到的要求 说明在线订餐的指导思想;阐述在线订餐系统应解决的主要问题。 用户可以进行多条件查询,根据具体需要方便、迅速的找到所需信息。 系统中的信息采用动态式发布,信息的发布更新的实时。且在线订餐采用动态网页技术实现内容发布。 系统要有良好的互动性,方便用户提供建议与意见。 系统要有清晰的构架、友好美观的界面。11.4 开发环境开发环境 服务器端操作系统:Windows XP数据库服务器:SQL Server2000浏览器:IE 浏览器 客户器端浏览器:IE 浏览器1.5 本文主要内容本文主要内容本文通过需求分析对在线订餐系统进行总体规划,开发出一个基于 B/S 模式的在线订餐系统。本在线订餐系统按照软件工程的基本步骤进行系统分析、设计和实现。本文的具体结构安排如下:第一部分绪论主要阐明在线订餐系统的研究内容与意义,国内外的订餐系统的发展状况,以及系统应达到的要求。第二部分主要内容是相关技术的介绍,介绍了系统开发工具的优势所在。第三部分是对软件进行可行性分析与需求分析,分析了系统要达到的主要功能等。给出了系统的整体流程图。第四部分主要是系统模块设计和数据库的设计,描述了系统前后台的主要模块,数据库概念设计、逻辑设计和物理设计。第五部分主要讲述了在线订餐系统的实现,前后台的主要界面和代码。第六部分对系统实现功能的测试,第七部分是对本文的结论和展望,总结了完成本系统后自己的感悟与系统存在的不足之处。最后,感谢对于在完成这次论文与软件过程中给予帮助的人,列出参考文献。 22 相关技术介绍相关技术介绍2.1 ASP.NET 技术技术ASP.NET 不仅仅是 Active Server Page 的继承版本,还是一种建立在通用语言上的程序构架,能被应用于一台 Web 服务器来建立强大的 Web 应用程序。ASP.NET 具有许多比现在的 Web 开发模式更加强大的优势1。 增强的性能:ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 利用本机优化、实时编译、盒外缓存和早期绑定服务。这相当于在编写代码行之前便显著提高了性能1。 世界级的工具支持:ASP.NET Framework 补充了 Visual Studio 集成开发环境中的大量设计器和工具箱。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种1。 威力和灵活性:由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的灵活性和威力。.NET Framework 类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET 与语言无关,所以可以跨多种语言分割应用程序,或选择最适合应用程序的语言。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资1。 简易性:ASP.NET 执行常见任务十分的容易,从简单的窗体提交和客户端身份验证到部署和站点配置。像 ASP.NET 页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务简化了开发1。 可管理性:ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于 Web 应用程序和服务器环境。因为配置信息是用纯文本形式存储的,所以可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学扩展到了 ASP.NET Framework 应用程序的部署。只要将所要的文件复制到服务器,即可将 ASP.NET Framework 应用程序部署到服务器。而不需要将重新启动服务器,是在替换或者部署运行的编译代码时1。 可缩放性和可用性:ASP.NET 在设计时考虑了可缩放性,增加了专门用于在多处理器环境和聚集环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常如泄漏、死锁时,可就地创建新进程,用来帮助保持应用程序始终可用于处理请求1。 自定义性和扩展性:ASP.NET 随附了一个设计周到的结构,开发人员可以在适当的级别“插入”代码。实3际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务一直没有变得更容易1。 安全性:借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的1。2.2 SQL Server 2000 介绍介绍对存放在计算机中的数据库进行检索、管理和组织时可以使用 SQL 语言。SQL 一词是“Structured Query Language”的缩写,是 IBM 公司 San Jose 实验室为 System R 而设计的语言,从 1982 年开始,美国国家标准协会即着手 SQL 标准化工作,1986 年 ANSI 的数据库委员会批准了 SQL 作为关系数据库语言的美国标准,这就是第一个 SQL 标准,同时公布了 SQL 标准文本,在此后不久的 1987 年,国际标准化组织也做出了同样的决定,目前的 SQL 标准是 1992 年指定的 SQL92 标准,是一种用于与数据库进行交互的语言。SQL 语言的极大普及是当今计算机工业中最引人注目的趋势之一。过去的几年中,SQL已经发展成为标准计算机数据库查询语言。现在,微机到大型机,有很多数据库产品支持 SQL,SQL 的国际标准已经能够被采用并被不断扩充。SQL 在主要计算机开发上的数据库体系中占有重要的地位2。SQL Server 提供服务器端的软件,这部分需要安装在 NT Server 上,SQL Server 的用户端则可以安装在许多用户端 PC 系统中,Windows 可以让用户端进行数据库的建立,维护及存取等操作,SQL Server 可以最多定义 32767 个数据库,每个数据库中,可以定义20 亿个表格,每个表格可以有 250 个字段,每个表格的数据个数并没有限制,每一个表格可以定义 250 个索引,其中有一个可以是 Clustered 索引。 SQL Server 所使用的数据库查询语言称为 Transact-SQL,它是 SQL Server 的核心,Transact-SQL 强化了原有的 SQL关键字以进行数据的存取,储存及处理等功能,Transact-SQL 扩充了流程控制指定,可以使你方便的编写功能强大的存储过程,他们存放在服务器端,并预先编译过,执行速度非常块,触发是一种特殊的存储过程,用来确保 SQL Server 数据库引用的完整性,你可以建立插入,删除和更新触发以控制相关的表格中对数据列的插入,删除和更新,你还可以使用规则(Rule) ,缺省(default)以及限制(Constraints) ,来协助将新的数值套用到表格中去2。 SQL为控制服务器的数据提供的功能:数据定义数据检索数据完整性数据处理安全性并发访问SQL支持对数据的并发的访问、多个用户可以同时使用系统而互不干扰,作为关系型数据库领域出类拔萃的产品,Microsoft SQL Server 2005数据库管理系统可以满足各种类型的不同用户和独立软件供应商商业程序的要求。在最近的几年中,微软大力改进了SQL Server,使得它具有很多新颖的、有创造性的特点。Microsoft SQL Server 2005,它是用于大规模联机事务处理、数据仓库和电子商务应用的数据库平台;也是用于数据集成、分析和报表解决方案的商业智能平台2。 ADONET访问数据库的原理4与数据库相连,ADONET提供了如下三种方式:通过ODBC相连;通过OLEDB相连;直接与SQL Server相连。三种方式由于应用层次的差异,使得效率由低到高,独立性由高到低。对于相连数据库的数据处理,也有两种方式,即一种是通过Dataset来隔离异构的数据源,另一种是以流方式从数据源读取Data Reader方式2。传统的应用程序是通过先建立到数据库的连接,在程序的整个运行过程中维护连接的方式来设计的。ASENET采取了断开连接方式的数据结构。当浏览器向Web服务器请求网页时,服务器处理这个请求,并将所请求的网页发送给IE浏览器,然后连接就被断开,直到浏览器发出下一个请求。为了在Web环境下传输数据,Microsoft对ADO记录集进行了优化。但COM类型转换仍旧是一个必不可少的步骤,因为COM的数据类型不可能总是匹配ADO记录集的数据类型,像String类型必须转换成BSTR类型。由此,需要将ADO记录集进行格式转换。通常的做法是:先提取一个记录集,把它保存为XML格式,然后传输结果数据流,让接收者从这个XML数据流重新构造出记录集供以后使用。随着对协同工作能力和可伸缩性要求的提高,ADO逐渐被建立在XML的基础上ADONET取代。ADONET的另一个创新是引入了数据集(Dataset)。一个数据集是内存中提供数据关系图的高速缓冲区。数据集对数据源一无所知,它们可以由程序或通过从数据仓库中调入数据而被生成、填充。不论数据从何处获取,数据集是通过使用同样的程序模板而被操作的,并且它使用相同的潜在的数据缓冲区3。2.3 C#语言语言C#综合了目前所有高级语言的优点,它具有以下几个主要的特点4。 简洁的语法C#淘汰了C+中乱七八糟的表示符号和伪关键字,使用了统一的操作符,使用最常见、最简单的形式进行描述4。 精心的面向对象设计从一开始,C#就是完全按照面相对象的思想来设计的,因此他具有面向对象应有的一切特性:多态、继承与封装等4。C#允许单继承,从而避免了类型定义的混乱。在C#中每种类型都是一个对象,因此不存在全局参数、全局变量、全局函数等概念,所有的常量、属性、索引、方法、变量、事件等都必须封装在类中,从而使代码具有更好的可读性,并且减少了发生命名冲突的可能4。 与Web的紧密结合由于Microsoft.NET构建了Web服务模型和Web应用程序开发模型,从而使网络编程更像是对本地对象进行操作,从而使深层次、大规模的分布式开发成为可能。使用C#构建的组件能够方便地为Web服务,并可以通过Internet被运行在任何操作系系统上的任何语言所调用4。 完全的安全性与错误处理衡量一种语言是否优秀的重要证据:语言的安全性与错误处理能力。每个人都会出错误,即使是最熟练的程序员也不例外。如果这样的软件投入使用,查找与更改这些简5单错误的代价将会是让人无法接受的。而C#消除了许多软件开发中的常见错误,并提出了包括类型安全在内的完整的安全性能4。Microsoft.NET运行库的代码访问安全特性允许用户和管理员根据代码的ID来配置安全等级。在默认情况下,从Internet和Internet下载的代码都不允许访问任何本地文件和资源。另外,C#提供了溢出检查和边界检查功能,内存管理中的垃圾收集机制也使开发人员对内存管理的负担大大减轻了4。 版本处理技术对软件系统中的组件模块进行升级是一件容易产生错误的工作,在代码修改过程中对某部分的修改可能会影响到代码的其他部分,甚至导致程序崩溃。为了帮助开发人员处理这些问题,C#内置了版本空间功能,如函数重载和接口的处理方式和特性支持等,从而保证能够方便地开发和升级复杂的软件4。 灵活性和兼容性默认状态下,C#不能使用指针,但可以使用delegate(委托)来模拟指针的功能,如果确实需要在类的方法或者类中直接使用指针,只需声明只写内容为非安全的就可以了。另外, C#不支持类的多继承,却可以通过对接口的继承来获得这一功能 4。兼容性是指C#允许具有C+或C语言风格的需要传递指针型参数API进行交互操作,允许其他语言组件间与C#组件的互相操作等4。2.4 B/S 结构结构B/S 结构就是浏览器/服务器模式,它是随着网络技术的兴起,是对 C/S 结构的一种改进或者变化的结构。在这种结构下,有两种方式实现:WWW 浏览器、前端。其中用户工作界面是通过前者来实现,极少部分事务逻辑在后者实现,但是主要事务逻辑在服务器端实现,形成所谓三层结构。这样客户端的电脑载荷就减少了,系统维护与升级的成本和工作量减轻了,用户的总体成本也降低了。从现有技术看,局域网建立 B/S 结构的网络应用,通过网络或网络模式下的数据库应用,相对成本较低、也易于把握。它能实现不同的人员,以不同的操作共同和接入方式访问的数据库;能有效地管理访问权限和保护数据平台 5。2.5 本章小节本章小节本章介绍了在线订餐系统设计过程中所涉及到的相关技术,主要讲解了 ASP.NET 的基础知识,对 ASP.NET 进行了概括性的介绍。其中所涉及到的技术对软件的开发十分重要,需要了解、掌握。63 在线订餐系统分析在线订餐系统分析3.1 可行性可行性研究研究可行性研究是在进行初步调查后对所进行的系统开发的必要性和可能性的研究,所以也称为可行性研究6。因此,对于任何一个需要开发的项目,在开发之前必须根据客户提供的条件进行可行性分析,从而减少开发的风险,避免资源的浪费。可行性分析应从技术可行性,经济可行性和操作可行性三方面来分析论证。通过对饮食市场的观察与分析,在线订餐系统具有可行性,具体分析如下放的内容: 技术可行性技术可行性分析主要分析的是在现有的技术条件下是否能够实现这个系统。现有的技术完全能够实现在线订餐的开发现实。本系统可以采用了 Visual Studio 2005 和 SQL Server 2000 进行相关的开发,并且 Visual Studio 2005 整合了 XML、关系型数据、对象的访问方式,它的语言更加简练。使用 Visual Studio 2005 可以高效开发 Windows 应用程序。 它是面向对象的可视化软件开发工具,其对编程平台对数据库的访问做了很好的封装,数据库接口的转换只需动态更改控件的相关属性即可;另考虑到 SQL Server 数据库服务器用户,亦提供 SQL Server 数据库接口,微软公司的 SQL Server 数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。它的易用性、安全性和灵活性也为数据库编程提供了良好的条件。此外,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足在线订餐系统的需要。在线订餐系统属于一个中等规模的电子商务系统。它基本属于一个数据库应用类的Web 应用系统。其基本操作还是对数据进行添加、删除、查找、编辑等。所以就单单看数据库应用,暂不存在太大的技术问题。 经济可行性经济可行性主要是对系统的经济效益进行评价,评估项目的开发成本,估算开发成本是否会超过项目预算的全部利润。像酒店餐厅这样的营业性场所,其经济成分比重相对较多,主要是支出的费用:其中包括软件开发费用、管理和维护费、设备购置费、人员工资和培训费等。而且目前计算机的价格已经十分低廉,大多数家庭都备有一台计算机,并且计算机的性能也有了很大的提高,所以对于餐厅来说完全具有经济可行性。开发本系统对系统开发者来说,并不需要太高的成本支出,开发周期也不需太长,不仅节省了人力、物力、财力、资源,这也是一种长远的投资。对于一般的小型企业,建立一个在线订餐系统,投入的资金、人力并不大。这对于有一定经济基础的餐厅来说,建立这样一个在线订餐系统难度并不大。这样就能节省大量的人力、时间及财力。所以,本系统在经济上是可行的。 操作可行性现如今信息技术发展迅速,计算机技术和软件技术的更新,餐厅完全有能力有必要引进这样领先的销售技术。在线订餐系统对整个餐厅的管理理念有很大的影响,对餐厅7工作员工的综合素质有了更高得要求,这会在无形之中提高酒店餐厅的整体服务质量。而且系统操作简单方便,各大餐厅酒店企业完全能够行得通。有此可知,在线订餐系统的开发在在技术和经济等方面都具有极高的可行性,并且能够带来良好的效益。3.2 需求分析需求分析需求分析阶段要解决的核心问题是:系统是干什么的?系统有哪些功能?软件定义时期的最后一个阶段是需求分析,它的基本任务是准确的定位系统的功能,以满足用户的要求。这个阶段不是要确定系统怎样完成他的功能,而是要确定系统一定要具备哪些功能,也就是对系统提出具体、清晰、准确、完整的要求6。3.2.1 功能需求分析功能需求分析在线订餐系统随着互联网的迅猛发展越来越受到人们的重视,而在线订餐这一新的营销模式的出现更是颠覆了传统的经营方式,不仅能够提高销量。降低运作成本,增加了餐厅的竞争力。对大多数餐饮企业来说,建立一个在线订餐系统势在必行。所以在线订餐系统应实现的功能主要包括: 前台功能用户信息管理:用户可以在登录后可以对其资料进行修改,系统的部分信息只对登录的注册用户开放。还没有账号的用户可以进行注册。如有用户忘记密码,可以根据提示问题找回密码。菜品信息管理:用户可以根据具体条件查询菜品,登录后可进行预订。购物车信息管理:用户登录后可以对购物车中的菜品进行增加、修改、删除。订单信息管理:用户登录后可以查看已付款的订单,未完成的订单。留言板信息管理:用户可以进行留言,并且管理员能够针对留言进行相应的回答。帮助信息:为用户提供系统基本信息、用户注意事项及版权信息。权限维护:用户登录后可以对已有用户的密码进行修改。 后台功能用户管理:可以实现用户的查看、添加、删除操作。菜品管理:实现菜品的修改、添加和删除等操作。菜品类型管理:可以对菜品类型进行修改、添加和删除等操作。订单管理:可以对订单进行处理。管理员管理:可以实现管理员的添加删除以及修改密码。3.2.2 数据库需求分析数据库需求分析在线订餐系统是一个典型的电子商务类型系统,根据上面的系统需求和功能分析,数据库中需要有以下信息。用户信息,包括用户名、密码、姓名、年龄等信息。菜品信息,包括菜品名、所属类别、价格等信息。购物车,包括用户购买信息、菜品名、数量等。订单,包括用户名、用餐时间、订餐人姓名、联系方式等信息。83.2.3 数据流图数据流图在详细的调研与分析一般餐厅经营活动过程的基础上,得到分析设计得出了一下各级数据流图。 系统前台(用户)的基本数据流图,如图 3.1 所示:用户的基本信息、所使用购物车信息、相关的订单信息、留言注意事项数据分别经过用户信息管理、购物车管理、订单管理、留言管理的处理过程后,对应的数据流就分别存储到用户信息表、购物车表、订单表、留言表中,同时可从对应表中将具体信息显示供用户查看。用户用户社区家园购物车我的订单2购物车管理1用户信息管理D1 用户信息D2 购物车D3 订单 D4 留言4留言管理3订单管理我的信息图 3.1 在线订餐系统前台数据流图 系统后台(管理员)的基本数据流图,如图 3.2 所示:管理员对于所管理的用户的基本信息、菜品的基本信息、相关的订单信息、留言、管理员信息数据分别经过用户管理、菜品管理、订单管理、留言管理、管理员管理的处理过程后,对应的数据流就分别存储到用户信息表、菜品信息表、订单表、留言表、管理员表中,同时可从对应表中将具体信息显示供管理员查看。9管理员管理员用户管理管理员管理菜品管理订单管理2菜品管理1用户管理D1 用户信息D5 菜品信息D3 订单 D6 管理员5管理员管理3订单管理4留言管理D4 留言 信息管理图 3.2 在线订餐系统后台数据流图 用户订餐的数据流图是整个系统数据流图最重要的部分,在线订餐系统数据流图如图 3.3 所示:购物车2添加到购物车用户3修改购物车4填写订单5确认订单6付款订单图 3.3 在线订餐系统订餐数据流图103.2.4 数据字典数据字典数据字典是关于数据的信息的集合。数据字典通常包括数据存储、数据结构、数据项数据流、和处理过程 5 个部分。除此之外,数据字典中还包含了一些其他信息如:定义(数据类型、长度、结构等) ,一般信息(名字、别名、描述等) ,使用特点,控制信息和分组信息等。数据字典主要被人们用于查阅不明白的条目的解释3。因为在线订餐系统是一个小型软件系统,所以采用卡片形式书写数据字典,每张卡片上保存描述一个数据的信息。每张卡片上包含了主要包含了编号、名字、描述这样一些信息。以下面数据字典的卡片来举例说明。 数据结构下面以“菜品信息”为例。 名字:菜品信息; 别名:d_Food; 描述:在线订餐系统的菜品信息; 定义:菜品信息=菜品编号+菜品类型编号+菜品名称+菜品单价+菜品介绍+菜品图片地址; 位置:保存到菜品信息表中。 数据项以数据结构“菜品信息”的数据项“菜品编号”为例。 名字:菜品编号; 别名:foodID; 描述:唯一标识某菜品入库的数字编号; 定义:整型数; 位置:在菜品信息,购物车中。 数据流以数据结构“菜品信息”在系统内的流动为例。 数据流名:菜品信息数据流; 数据流来源:管理员录入处理; 数据流去向:菜品信息表; 平均流量:不定;说明:“菜品信息”数据结构在系统内的流向; 高峰期流量:不定。 数据存储以数据结构“菜品信息”在系统内的存储为例。 数据存储名:菜品信息表; 说明:管理员添加菜品信息及管理员审核信息; 编号:菜品信息的唯一标识,从 1 开始每次自增 1; 输入的数据流:管理员添加菜品信息; 输出的数据流:管理员审核的信息;11 数据结构:菜品信息; 数据量:不定; 存取频率:不定; 存取方法:顺序查询与随机查询、查询与更新、联机处理等。 处理过程以“菜品信息”为例。 处理过程名:菜品信息; 说明:管理员添加菜品信息; 输入:菜品编号、菜品类型编号、菜品名称、菜品单价、菜品介绍、菜品图片地址; 输出:保存到菜品信息表中; 处理:对菜品进行唯一性验证。数据字典的基本表示方法如上面的例子,它只是起到了引导的作用。完善的数据字典应根据系统实际的需求分析,在充分研究、分析、讨论的基础上建立,并且在将来设计数据库的过程中不断完善、充实、修改。3.3 流程图流程图用户首先进入的是在线订餐系统的首页,在首页用户可以查看餐厅介绍、菜单查询、社区家园。对于未注册用户可以先进行注册,注册过的用户则可以直接登录进入系统。登录后用户可以查看之前购物车、订单、用户信息,也可以进行菜品的预订完成相应的操作, 网上订餐系统运行时一般按照图3.4所示的操作流程进行操作。菜单查询用户管理首页社区家园餐厅介绍预订菜品登陆购物车完成订单支付注册退出预订服务查看订单发表留言查找菜品图 3.4 在线订餐系统流程示意图3.4 本章小节本章小节本章讲述了系统的可行性研究及需求分析。可行性分析进一步探讨问题定义阶段所12确定的问题是否有可行的解,具体分析了在线订餐系统的实际可行性。需求分析这具体的描述了本系统的要求。4 在线订餐系统总体设计在线订餐系统总体设计总体设计阶段的核心问题是:怎样实现系统?通常分为系统设计、结构设计两个阶段。前者确定系统的具体方案;后者确定软件结构6。4.1 系统模块图系统模块图4.1.1 前台功能模块功能模块根据在线订餐系统的特点,可以将其分成前台 模块、后台模块两个部分。前台的设计主要用于用户浏览、查找菜品信息、预订菜品、用户留言等;而后台的设计主要针对的是管理员对于菜品信息、用户信息和其他信息的管理。如图 4.1 所示为在线订餐系统的前台功能模块图。社区家园发表留言会员登录在线订餐系统前台我的订单查询订单订单取消订单完成未付款订单用户注意事项预订服务查询菜品完成付款首页菜单查询查询美食菜品展示加入购物车修改密码公告栏友情链接美食展示提交订单餐厅介绍查看个人资料留言列表会员注册图 4.1 在线订餐系统前台功能模块图 登录模块当用户进入在线订餐系统首页时,可点击注册进入到用户注册模块,进行相应信息的填写,注册成功后可以进行登录。若已经注册者可直接登录,但忘记密码时,可点击忘记密码链接到获取密码。 预订模块用户可以根据菜品的种类、价格、名称进行相应的查询。如果需要预定,那必须先登录。登录后可以点击预订进入到购物车模块。 购物车模块当用户登录后,也可以直接进入购物车查看之前订购的商品,修改商品数量,删除商品。可清空购物车,或点击继续购物返回菜品预订。确认购物车中菜品信息后,点击13结算后填写订餐人信息,填写完后再次确认菜品信息,若菜品有所错可以点击返回进行修改,若确定者提交订单,最后进行支付。 我的订单模块当用户登录后,用户可以按照订单状态来选择查看订单,具体分为未完成订单和已完成订单。进入后还可根据日期、姓名等进行具体查询。用户还可以查看自己的个人资料,也可修改相应的信息。 社区家园模块用户未登录时可以,查看留言和注意事项。如果用户想进行留言,那必须先登录。4.1.2 后台功能模块后台功能模块在线订餐系统的后台功能模块图如图 4.2 所示。管理员管理修改管理员查询用户在线订餐系统后台信息管理查看留言删除留言回复留言添加管理员订单管理已付款订单已退款订单用户管理菜品管理添加菜品未付款订单更新公告板添加菜品类型添加用户查看菜品类型删除管理员删除用户编辑菜品图 4.2 在线订餐系统后台功能模块图 用户管理模块 管理员登录后,仅仅只可以对用户的信息可以进行查询,并不能随意修改用户的信息。对于极端用户可以进行删除。 菜品管理模块管理员能够查看所有的菜品,并能修改、删除菜品信息,也可以修改菜品类型,增加菜品等。 订单管理模块在对订单进行管理时,可以根据日期区间对订单进行查询,进行相应的增删改操作。 管理员信息模块只有超级管理员能够对管理员进行查询、增加、删除、更改操作。144.2 数据库设计数据库设计数据库结构设计的的好坏将直接对整个在线订餐系统的效率和实现效果有很大的影响,因此数据库在整个系统中占有着十分重要的地位。合理的数据库结构设计可以很好的提高数据存储的效率。不但如此,数据库结构是否将直接影响系统的实现7。4.2.1 数据库概念设计(数据库概念设计(E-R 图)图)E-R 模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。如果存在联系,进一步确定是 1:1,1:N,还是 M:N 等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等。根据上面的分析,得出系统所要处理的实体及其联系,在确定实体及其联系的主要属性后,结合系统的功能处理要求后,在分析设计出的数据流程图的基础上,能得出系统要处理的实体及其联系,在确定实体及其联系的主要属性后,结合系统的功能处理要求后,得出 E-R 图,具体如下: 关于管理员实体、留言实体、管理员类型实体,如图 4.3 所示。由图可知,一个管理员可以回复多条留言,一条留言由一个管理员回复,所以管理员与留言是一对多的关系;一个管理员只属于一个管理员类型,而一个管理员类型可以对应多名管理员,所以管理员与管理员类型是一对多的关系。管理员管理员编号管理员姓名管理员密码管理员类型编码属于N1管理员类型管理员类型名称管理员类型编码回复留言N1信息编号用户编号信息内容信息发布时间回复回复时间图 4.3 公 告栏模块图管理员实体的属性包括:管理员编号编号、管理员姓名、管理员密码、管理员类型15编号;留言实体的属性包括:信息编号、用户姓名、信息内容、信息发布时间、回复、回复时间;管理员类型实体的属性包括:管理员类型编号管理员类型名称。 关于公告栏实体,如图 4.4 所示。公告实体的属性包括:公告编号、发布时间日期、公告信息内容。公告栏信息内容公告栏公告栏信息编号公告栏发布时间图 4.4 公告栏模块图 关于用户实体、菜品实体、购物车实体、订单实体、留言实体、订单类型实体、菜品类型实体,如图 4.5 所示。由图可知,一个用户可以选择多个菜品,多道菜属于一个用户所以用户与菜品是一对多的关系;一个菜品只属于一个菜品类型,而一个菜品类型可以对应多道菜,所以菜品与菜品类型是一对多的关系;一个购物车中可以加入多道菜,而多道菜加入一个购物车,所以购物车与菜品是一对多的关系;一个购物车中可以生成多条订单,而多道订单从一个购物车生成,所以购物车与菜品是一对多的关系;一个订单只有一个种订单类型,而一个订单类型可以有多条订单,所以订单与订单类型是一对多的关系;一个用户可以留多条言,而一条留言只可能是一个客户留的,所以用户与留言是一对多的关系。用户信息实体的属性包括:用户编号、用户姓名、密码、密码提示问题、答案、电话号码、真实姓名、性别、年龄;菜品实体的属性包括:菜品编号、菜品类型编号、菜品单价、菜品名称、菜品介绍、菜品图片地址;购物车实体的属性包括:购物车编号、用户编号、订单编号、菜品编号、菜品数量、小计、加入购物车时间;订单实体的属性包括:订单编号、用户编号、用餐时间、加入订单时间、订餐人姓名、订餐人电话、订单类型编号;留言实体的属性包括:信息编号、用户姓名、信息内容、信息发布时间、回复、回复时间;订单类型实体的属性包括:订单类型编号、订单类型名称;菜品类型实体的属性包括:菜品类型编号、菜品类型名称。16用户购物车选择菜品加入生成订单属于订单类型留言留下1NN11NN11N密码真实姓名订餐人电话订餐人姓名用餐时间用户编号订单编号菜品图片地址菜品介绍菜品单价菜品名称菜品类型编号菜品编号用户编号答案提示问题用户姓名密码年龄性别电话号码用户编号订单编号加入购物车时间购物车编号小计菜品数量菜品编号加入订单时间订单类型编号订单编号身份证信息编号用户编号信息内容信息发布时间回复回复时间属于菜品类型N1菜品类型名称菜品类型编号图 4.5 系统基本 E-R 图4.2.2 数据库逻辑设计数据库逻辑设计 数据库关系模式数据库关系模式根据 E-R 图转换到关系模式的转换规则(一对多的联系均采用合并的规则) ,很容易的到如下的关系模式。(说明:本系统关系模式有商榷和完善的余地,数据库的属性均是用英文表示,标注下划线的是各表的主码) , 菜品信息(菜品编号、菜品类型编号、菜品名称、菜品单价、菜品介绍、菜品图片地址、菜品数量、菜品推荐) 菜品类型(菜品类型编号、菜品类型名称) 用户信息(用户编号、用户姓名、密码、真实姓名、电话号码、性别、年龄、密码提示问题、答案) 购物车(购物车编号、用户编号、订单编号、菜品编号、菜品数量、小计、加入17购物车时间) 订单(订单编号、用户编号、用餐时间、订餐人姓名、订餐人电话、加入订单时间、订单类型编号) 订单类型(订单类型编号、订单类型名称) 留言板信息(信息编号、用户编号、信息内容、信息发布时间、回复、回复时间) 公告栏(公告栏信息编号、公告栏信息编号、公告栏发布时间) 管理员信息(管理员编号、管理员姓名、管理员密码、管理员类型编码) 管理员类型(管理员类型编码、管理员类型名称)表名与属性名转化为对相应的英文,如下所示: d_Food(FoodID、foodTypeID、foodName、foodPrice、foodINtroduction、foodImageUrl、foodShow) d_FoodType(foodTypeID、foodTypeName) d_Memberuser(userID、membername 、password、customername、telephone、sex、age、sfznumber、question、answer) d_Cart(cartID、userID、orderID、foodID、foodName、foodPrice、number、count、nowtime) d_Order(orderID、userID、amount、ordertime、name、sfz、tel、nowtime、statusTypeID) d_StatusType (statusTypeID、statusTypeName) d_Message(messageID、userID、messageNote、messagetime、reply、replyTime) d_New(newID、newtext、newTime) d_Admin(adminID、adminname、pass、adminTypeID) d_ AdminType(adminTypeID、adminTypeName) 数据库及表结构数据库及表结构根据在数据库概念设计中的 E-R 图,设计数据表结构。其中以下划线标出的为关系模式的主键(数据库中的属性均为) 。以下是在线订餐系统数据库中各个表的设计: 用于记录菜品信息的 d_Food 表,该表的设计结构如表 4-1 所示。菜品信息(菜品编号、菜品类型编号、菜品名称、菜品单价、菜品介绍、菜品图片地址、菜品是否显示)表 4-1 菜品信息表序号字段名数据类型长度主键否允许空含义1FoodIDInt4是菜品编号2foodTypeIDInt4是菜品类型编号3foodNameNvarchar50是菜品名称4foodPriceInt4是菜品单价5foodINtroductionNvarchar500是菜品介绍186foodImageUrlNvarchar50是菜品图片地址7foodShowInt4是菜品推荐 用于记录菜品信息的 d_FoodType 表,该表的设计结构如表 4-2 所示。菜品类型(菜品类型编号、菜品类型名称) ;表 4-2 菜品类型表序号字段名数据类型长度主键否允许空含义1foodTypeIDInt4是菜品类型编号2FoodTypeNameNvarchar50是菜品类型名称 用于记录用户信息的 d_Memberuser 表,该表的设计结构如表 4-3 所示。菜品类型(菜品类型编号、菜品类型名称)用户信息(用户编号、用户姓名、密码、真实姓名、电话号码、性别、年龄、身份证号码、密码提示问题、答案) ;表 4-3 用户信息表序号字段名数据类型长度主键否允许空含义1userIDInt4是用户编号2membernameInt4是用户姓名3passwordNvarchar50是密码4customernameInt4是真实姓名5telephoneNvarchar50是电话号码6sexchar10是性别7ageInt4是年龄8sfznumberNvarchar50是身份证号码9questionNvarchar50是密码提示问题10answerNvarchar50是答案 用于记录购物车信息的 d_Cart 表,该表的设计结构如表 4-4 所示。购物车(购物车编号、用户编号、订单编号、菜品编号、菜品名称、菜品单价、菜品数量、小计、加入购物车时间) 。表 4-4 购物车信息表序号字段名数据类型长度主键否允许空含义1cartIDInt4是购物车编号2userIDInt4是用户编号3orderIDInt4是订单编号4foodIDInt4是菜品编号5numberInt4是菜品数量6countint4是小计197nowtimedatetime8是加入时间 用于记录订单信息的 d_Order 表,该表的设计结构如表 4-5 所示。订单(订单编号、用户编号、用餐时间、订餐人姓名、订餐人电话、加入订单时间、订单类型编号)表 4-5 订单信息表序号字段名数据类型长度主键否允许空含义1orderIDInt4是订单编号2userIDInt4是用户编号3amountInt4是合计4ordertimedatetime8是用餐时间5namechar10是菜品名称6sfznvarchar50是订餐人姓名7telnvarchar50是订餐人电话8nowtimedatetime8是加入订单时间9statusTypeIDint4是订单类型编号 用于记录订单类型的 d_StatusType 表,该表的设计结构如表 4-6 所示。订单类型(订单类型编号、订单类型名称)表 4-6 订单类型表序号字段名数据类型长度主键否允许空含义1statusTypeIDInt4是订单类型编号2statusTypeNameNvarchar50是订单类型名称 用于记录留言板的 d_Message 表,表的设计结构如表 4-7 所示。留言板信息(信息编号、用户姓名、信息内容、信息发布时间、回复、回复时间)表 4-7 留言板信息表序号字段名数据类型长度主键否允许空含义1messageIDInt4是信息编号2userIDnvarchar50是用户编号3messageNotenvarchar500是信息内容4messagetimedatetime8是信息发布时间5replynvarchar500是回复6replyTimedatetime8是回复时间 用于记录公告栏的 d_New 表,该表的设计结构如表 4-8 所示。公告栏(公告栏信息编号、公告栏信息编号、公告栏发布时间)20表 4-8 公告栏信息表序号字段名数据类型长度主键否允许空含义1newIDInt4是公告栏编号2newtextnvarchar500是公告栏信息编号3newTimedatetime8是公告栏发布时间 用于记录管理员信息的 d_Admin 表,如表 4-9 所示为该表的设计结构。管理员信息(管理员编号、管理员密码、管理员姓名、管理员类型编号)表 4-9 管理员信息表序号字段名数据类型长度主键否允许空含义1adminIDInt4是管理员编号2adminnameNvarchar50是管理员姓名3passNvarchar50是密码4adminTypeIDInt4是管理员类型编号 用于记录管理员类型信息的 d_AdminType 表,如表 4-10 所示为该表的设计结构。表 4-10 管理员类型信息表序号字段名数据类型长度主键否允许空含义1adminTypeIDInt4是管理员类型编号2adminTypeNameNvarchar50是管理员类型名称4.2.3 数据库物理设计数据库物理设计 创建数据库创建数据库在 SQL-Server2000 中可以使用下面的 3 个方法来创建数据库,具体如下: 用数据库中的数据库向导创建数据库。 在 SQL-Server2000 的企业管理中,首先展开数据库组,再展开服务器,此时右击数据库新建数据库,在数据库属性中,填写新建数据库的名称 使用 Transact-SQL 中的 CREATE DATABASE 命令,命令的具体语法如下(其中d_MyDinner 是在线订餐系统的数据库名):CREATE DATABASE d_MyDinner 创建数据表创建数据表创建完数据库 d_MyDinner 后,选中表右击选择新建表,然后在表设计中填写内容。具体步骤如下(下面以表 d_Admin 为例): 输入字段名。在列名中中输入 adminID,同一张表中不允许出现相同的字段名。 选择适当的数据类型。对于 adminID 选择 int 型。 设计所需长度。对于 adminID 长度为 4,根据实际所需填写。 设置允许为空。adminID 不允许为空。对表 d_Admin 中的 pass、adminname 步骤相同。 设计主键。选中 adminID 这行,右击选择设置主键。注意表中的主键唯一。21 设计表的识别列。右击属性,在表中将表的识别列选为 adminID。这能实现 adminID数值自动增 1 的效果。 最后保存表,输入表名 d_Admin,打击确定。既完成了表的设计。对于本系统中涉及到的 d_Food、d_FoodType、d_Memberuser 等表也是按照上述方法完成创建的。 4.2.4 数据库关系图数据库关系图 数据库关系图如图 4.6 所示,为菜品表、菜品类型表、购物车表、订单表、用户表、留言表、订单类型表间的关系图。图 4.6 数据库关系图 如图 4.7 为管理员表及管理员权限表的关系图。图 4.7 管理员关系图 224.3 本章小节本章小节本章主要介绍了系统的功能模块的设计和数据库设计。主要从数据库的概念、逻辑、物理三个方面进行设计。数据库设计是整个系统开发的关键,一个好的数据库设计可以大大减少不必要的修改,保证开发效率。5 在线订餐系统的实现在线订餐系统的实现5.1 前台系统的实现前台系统的实现5.1.1 在线在线餐系统首页餐系统首页首页是用户默认的首先进入的页面。因此为了方便用户订餐,首页允许用户匿名访问。本系统的首页主要包括用户登录、用户注册、菜单查询、预订服务、优惠活动、餐厅介绍、购物车等主要模块。在线订餐系统的首页显示效果如图 5.1 所示。图 5.1 在线订餐系统首页 对于匿名用户,他们只能使用菜单查询、预订服务、社区家园、餐厅介绍,而对于已经登录的用户可以使用我的订单、购物车、退出等功能。因此需要在代码中进行相应的处理,来实现只能登录的用户进入。具体代码如下8:if (Sessionname = null) 23 pl1.Visible = true;/显示登录面板 pl2.Visible = false;/不显示登录名户名显示面板 else pl1.Visible = false;/不显示登录面板 pl2.Visible = true;/显示登录名户名显示面板 labMessage.Text = 欢迎 + Sessionname + 的光临!; 热门菜品中显示的是餐厅本时段主打菜,单击菜品可显示其具体信息。管理员在后台中可以随时更改主打菜9。 protected void dlGoodsInfo_ItemCommand(object source, DataListCommandEventArgs e) if (e.CommandName = describe) string P_str_foodID = e.CommandArgument.ToString(); Response.Redirect(foodDetail.aspx?foodID= + P_str_foodID + ); 优惠活动显示的是最新消息,通过 DataList1 实现对数据的绑定。且管理员在后台中随时更新其中信息10。SqlConnection myConnection=new SqlConnection(DataSource=localhost;Initial Catalog=MyDinner;Integrated Security=True); string strSQL = select *from d_New where newID=(select MAX(newID) from d_New ) ; SqlCommand myCommand = new SqlCommand(strSQL, myConnection); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS); DataList1.DataSource = myDS; DataList1.DataBind();5.1.2 菜单查询与菜品详细信息界面菜单查询与菜品详细信息界面菜单查询页面主要实现了通过菜品种类进行菜品查询,菜品价格进行菜品查询,还可以通过菜品进行模糊查询,查看菜品的详细信息。在线订餐系统的菜单查询页面显示效果如图 5.2 所示。 在查询按钮中的主要代码如下:string strSQL=select * from d_Food where 1=1 ; SqlConnection myConnection = new SqlConnection(Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True);24 if (DropDownList1.SelectedValue != & DropDownList1.SelectedValue != -1) strSQL= strSQL + and foodTypeID =+ DropDownList1.SelectedValue +; if (txtPrice1.Text != ) strSQL =strSQL + and foodPrice = + txtPrice1.Text.Trim() + ; if (txtPrice2.Text != ) strSQL = strSQL + and foodPrice= + txtPrice2.Text.Trim() + ; if (txtFoodName.Text !=) strSQL = strSQL + and foodName like % + txtFoodName.Text + %; SqlCommand myCommand = new SqlCommand(strSQL, myConnection); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS); dlGoodsInfo.DataSource = myDS.Tables0; dlGoodsInfo.DataBind();图 5.2 在线订餐系统菜单查询页 菜品信息使用了 DataList 控件,其中的商品图片是通过asp:Image ID=Image3 25runat=server Height=105px Width=95px ImageUrl=/这句代码实现的11。这据代码通过使用图像控件,读取数据库中存储的图片的路径,从而实现图片的显示。当单击“详细信息”连接时,则会显示菜品更加详细的信息。通过asp:LinkButton ID=lnkbtnGoodsDescribe runat=server CommandArgument= CommandName=describe详细信息跳转到详细信息页面,在线订餐系统的详细信息页面显示效果如图 5.3 所示。图 5.3 在线订餐系统菜品详细信息页5.1.3 预订服务界面预订服务界面预订服务页面主要实现了通过菜品种类进行菜品查询,菜品价格进行菜品查询,还可以通过菜品进行模糊查询,查看菜品的详细信息,以及查询完成后进行的预订订单。在线订餐系统的预订服务页面显示效果如图 5.4 所示。26图 5.4 在线订餐系统预订服务页预订菜品的必须是注册的用户,因此只有在用户登录后,才能与定菜品并且进入购物车。当单击“预订”时,首先要进行判断,判断用户是否已经登录。如果用户还未登录,则当单击“预订”按钮时,会出现提示如图 5.5 所示(单击“确定”按钮后,会跳转到登录页面)。图 5.5 提示窗口如果用户已经登录,在预订服务页左上角会显示用户名如图 5.6 所示,则当单击“预订”按钮时,会出现进入购物车页面如图 5.7 所示。图 5.6 已登录购物车页面主要实现了对菜品数量的改变,计算购物车中菜品的总价,删除购物车中的菜品,还可以返回到预订服务页继续预订菜品。27图 5.7 购物车当单击“结算”按钮后,会跳转到订单页面,订单页面如图 5.8 所示。28图 5.8 订单页面提交订单按钮中的代码如下12:SqlConnectioncon =new SqlConnection(DataSource=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 con.Open();/打开连接 SqlCommand cmd = new SqlCommand(set IDENTITY_INSERT d_Order OFF;insert into d_Order (userID,amount,ordertime,name,sfz,tel,nowtime,statusTypeID) + values( + SessionuserID + ,+count+, + txtTime.Text .Trim () + , + txtName.Text.Trim() + , + txtSFZ.Text.Trim() + , + txtTLP.Text.Trim() + , + DateTime.Now.ToString(yyyy-MM-dd) + , + 1 + ), con); cmd.ExecuteNonQuery(); con.Close(); string str = + txtName.Text + ;29 string SQL = select * from d_Order where name = + txtName.Text.Trim() + ; SqlDataAdapter myda = new SqlDataAdapter(SQL, con); DataSet myds = new DataSet(); myda.Fill(myds, d_Order); if (myds.Tablesd_Order.Rows.Count 0) SessionorderID = myds.Tablesd_Order.Rows0orderID.ToString(); string P_str_userID = SessionUserID.ToString(); int P_str_foodID = Convert.ToInt32(Request.QueryStringfoodID); SqlDataAdapter da = new SqlDataAdapter(select count(*) from d_Cart where userID= + P_str_userID + and foodID= + P_str_foodID + , con); DataSet ds = new DataSet(); da.Fill(ds); con.Open();/打开连接 int c = 0; SqlCommand cmd1 = new SqlCommand(update d_Cart set orderID= + SessionorderID + where orderID= + c + , con); cmd1.ExecuteNonQuery(); con.Close(); con.Open();/打开连接 Response.Redirect(/pay.aspx);当单击“提交订单”按钮后,会跳转到付款页面,订单页面如图 5.9 所示。图 5.9 付款页面30支付按钮中的代码如下:SqlConnectioncon =new SqlConnection(DataSource=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 SqlDataAdapter da = new SqlDataAdapter(select * from d_Cart where orderID = + SessionorderID + , con); DataSet ds = new DataSet(); da.Fill(ds, d_Cart); SqlCommandBuilder dacomm = new SqlCommandBuilder(da); con.Open();/打开连接 SqlCommand cmd = new SqlCommand(update d_Order set statusTypeID = + 2 + where orderID = + SessionorderID + , con); cmd.ExecuteNonQuery(); con.Close(); Response.Write(alert(支付成功!);location=index.aspx;);5.1.4 我的订单界面我的订单界面我的订单页面主要包括了未完成订单,订单查询,退款,个人资料查看,修改信息。本页面采用母版页13套用实现的,母版页主要是显示上方导航,左侧的菜单,和下面的版本信息。主要应用 LinkButton 实现转页。 我的订单未完成订单在线订餐系统的我的订单中,未完成订单页面显示效果如图 5.10 所示。图 5.10 未完成订单31查询按钮中的代码如下:SqlConnectioncon =new SqlConnection(DataSource=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 string strSQL = select * from d_Order where and statusTypeID= + 2 + ; if (DropDownList1.SelectedValue = 按成交日期查询) if (txtStart.Text != ) strSQL = strSQL + and nowtime = + + txtStart.Text.Trim() + ; if (txtEnd.Text != ) strSQL = strSQL + and nowtime = + + txtEnd.Text.Trim() + ; if (txtName.Text != ) strSQL = strSQL + and name= + txtName.Text.Trim() + ; if (txtStart.Text = | txtEnd.Text = ) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(起止日期不能为空!); SqlCommand myCommand = new SqlCommand(strSQL, con); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS, d_Order); GridView1.DataSource = myDS.Tables0; GridView1.DataBind(); else if (DropDownList1.SelectedValue = 按用餐日期查询) if (txtStart.Text != ) strSQL = strSQL +and ordertime = + + txtStart.Text.Trim() + ; if (txtEnd.Text != ) strSQL = strSQL = strSQL +and ordertime = + + txtEnd.Text.Trim() + ; if (txtStart.Text = | txtEnd.Text = ) 32 Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(起止日期不能为空!); SqlCommand myCommand = new SqlCommand(strSQL, con); SqlDataAdapter myDA = new SqlDataAdapter(); myDA.SelectCommand = myCommand; DataSet myDS = new DataSet(); myDA.Fill(myDS, d_Order); GridView1.DataSource = myDS.Tables0; GridView1.DataBind(); 付款按钮中的代码如下:int id = Convert.ToInt32(Button)sender).CommandArgument);SqlConnectioncon =new SqlConnection(DataSource=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 string SQL = select * from d_Order where orderID= + id; SqlDataAdapter myda = new SqlDataAdapter(SQL,con ); DataSet myds = new DataSet(); myda.Fill(myds, d_Order); SessionorderID = myds.Tablesd_Order.Rows0orderID.ToString();Response.Redirect(/pay.aspx);订单查询在线订餐系统的我的订单中,订单查询页面显示效果如图 5.11 所示。图 5.11 订单查询33此处查询按钮中的代码,与未完成订单中查询按钮的代码类似。只需将其代码中的订单类型编号及 statusTypeID 的值改为 1,就能对已经付款的订单进行查询。退款可以先通过日期类型、起始日期、结束日期、顾客姓名进行查询,在找到具体的要申请退款的订单后进行退款。选择在线订餐系统的我的订单中,退款页面显示效果如图5.12 所示。图 5.12 退票此处查询按钮中的代码,与未完成订单中查询按钮的代码类似。只需将其代码中的订单类型编号及 statusTypeID 的值改为 2,就能对已经付款的订单进行查询14。退票按钮中的代码如下:int id = Convert.ToInt32(Button)sender).CommandArgument); SqlConnection con = new SqlConnection(Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 string SQL = select * from d_Order where orderID= + id; SqlDataAdapter myda = new SqlDataAdapter(SQL, con); DataSet myds = new DataSet(); myda.Fill(myds, d_Order); SqlCommandBuilder dacomm = new SqlCommandBuilder(myda); con.Open();/打开连接 SqlCommand cmd = new SqlCommand(update d_Order set statusTypeID = + 3 + where orderID = + SessionorderID + , con); cmd.ExecuteNonQuery(); con.Close();Response.Write(alert(退票成功!);location=index.aspx;);34 我的信息个人资料在我的信息中点击个人资料,就会显示出已登录的用户的用户名、密码的基本信息,性别、年龄、手机号、身份证号码、密码提示问题等具体信息,界面如图 5.13 所示。图 5.13 个人资料修改信息点击修改信息,就会显示会员信息修改如图 5.14 所示。用户可以根据实际情况进行相应的修改,修改完成后只需点击修改按钮;如无需修改菜单击取消按钮。图 5.14 会员信息修改35修改按钮中的代码:if (TextBox2.Text = | TextBox5.Text = ) Response.Write(alert(请将信息填写完整!);location=javascript:history.go(-1);); return; else if (!validate.validateNum(TextBox4.Text) Response.Write(alert(会员年龄应为数字!);location=javascript:history.go(-1);); return; elseif(!validate.validateNum(TextBox5.Text) | !validate.validateCert(TextBox5.Text) Response.Write(alert(身份证应为数字且位数为 15-18 位!);location=javascript:history.go(-1);); return; elseif(!validate.validateNum(TextBox6.Text) | !validate.validatePhone(TextBox6.Text) Response.Write(alert(会员电话应为数字且位数为 7-11 位!);location=javascript:history.go(-1);); return; else SqlConnection con = new SqlConnection(Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 SqlDataAdapter da = new SqlDataAdapter(select count(*) from d_Memberuser where membername= + Sessionname + , con); DataSet ds = new DataSet(); da.Fill(ds, d_Memberuser); SqlCommandBuilder dacomm = new SqlCommandBuilder(da); con.Open();/打开连接 SqlCommand cmd = new SqlCommand(update d_Memberuser set password= + TextBox2.Text.Trim() + ,sex= + DropDownList2.SelectedValue.ToString().Trim() + ,age= + TextBox4.Text.Trim() + ,sfznumber= + TextBox5.Text.Trim() + ,telephone= + TextBox6.Text.Trim() + where userID= + id + , con); cmd.ExecuteNonQuery(); con.Close(); Response.Write(alert(信息修改成功);location=index.aspx); 365.1.5 社区家园界面社区家园界面社区家园主要包括了公告栏,留言,注意事项。对于三者的切换这里在用的是 js 特效。其整体界面如图 5.15 所示。 公告栏图 5.15 公告栏 留言图 5.16 公告栏37提交按钮中的代码:protected void Button1_Click(object sender, EventArgs e) if (Sessionname = null) Response.Write(alert(您必须先登录!);location=login.aspx;); else if (this.TextBox1.Text.ToString() = ) Response.Write( alert(您暂无填写意见,无法提交!);); else if (codetxt.Text != Sessionyanzheng.ToString() Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(验证码错误!); /accounttxt.Text = ; codetxt.Text = ; Imagecode.ImageUrl = code.aspx; else SqlConnection con = new SqlConnection(Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 con.Open(); string str = insert into d_Message (userID,messageNote,messageTime) values( + SessionuserID + , + TextBox1.Text.Trim() + , + DateTime.Now.ToString(yyyy-MM-dd) + ); SqlCommand cmd = new SqlCommand(str, con); cmd.ExecuteNonQuery(); con.Close(); Response.Write(alert(谢谢你的留言!);location=index.aspx); 38 注意事项图 5.17 注意事项5.1.6 用户登录与注册界面用户登录与注册界面 用户登录购买商品必须是注册的用户,用户只有在登录后,才能进入购物车,在预订服务中当单击“预订”按钮时,首先判断用户是否登录,如图 所示,单击“确认”链接时进入登录页面,如图 5.18 所示。 图 5.18 登录界面登录界面中没有使用到控件,因此更加便捷。其中的验证码是通过 Image 中ImageUrl 连接到写有代码的 code.aspx 页面。单击注册按钮时会连接到注册界面。登录时将用户的账号存储在 sessionname中,以方便对用户是否登录进行判断。登录按钮中的代码如下:39string strconn = Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True; string str = + accounttxt.Text + ; string SQL = select * from d_Memberuser where membername = + str.Trim() + and password= + + passwordtxt.Text.Trim() + ; SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myds = new DataSet(); myda.Fill(myds,d_Memberuser); if (myds.Tablesd_Memberuser.Rows.Count 0 & accounttxt.Text != & passwordtxt.Text != & codetxt.Text = Sessionyanzheng.ToString() SessionuserID = myds.Tablesd_Memberuser.Rows0userID.ToString(); Sessionname = myds.Tablesd_Memberuser.Rows0membername.ToString(); Response.Redirect(index.aspx); else if (accounttxt.Text = | passwordtxt.Text = ) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(用户名和密码不能为空!); Imagecode.ImageUrl = code.aspx; else if (codetxt.Text != Sessionyanzheng.ToString() Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(验证码错误!); /accounttxt.Text = ; passwordtxt.Text = ; codetxt.Text = ; Imagecode.ImageUrl = code.aspx; else Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(用户名或密码错误!); accounttxt.Text = ; passwordtxt.Text = ; codetxt.Text = ; Imagecode.ImageUrl = code.aspx; 40 点击忘记密码,就会跳转到获取密码界面即图 5.19 中(a) 。会员可以通过注册时填写的密码提示问题,来找回密码。(a)获取 (b)显示问题 (c)回答问题 图 5.19 获取密码界面确认中的代码15:string strconn = Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True; string SQL = select * from d_Memberuser where membername= + + Textname.Text.Trim() + ; SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myds = new DataSet(); myda.Fill(myds, d_Memberuser); if (myds.Tables0.Rows.Count = 0) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(您输入的用户名不存在); else if (myds.Tables0.Rows.Count 0) tb2.Style.Add(HtmlTextWriterStyle.Display, block); Textquestion.Text = myds.Tables0.Rows0question.ToString(); Sessionanswer = myds.Tables0.Rows0answer.ToString(); Sessionpwd = myds.Tables0.Rows0password.ToString(); /Sessiontb = myds.Tables0;41 /Session 先填写用户名,点击确认按钮,会显示图 5.19 中(b)所示内容。根据密码提示问题,填写答案,填完之后点击提交。如果问题答案正确,就会将你了密码显示出来如图 5.19中(c)所示。提交按钮中的代码:if (Textrespon.Text.Trim() = Sessionanswer.ToString() Textpassword.Text = Sessionpwd.ToString(); Button2.Visible = true; Sessionpwd = null; Sessionanswer = null; Sessionquestion = null; else Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(抱歉您的答案不正确!); tb2.Style.Add(HtmlTextWriterStyle.Display, none); Sessionpwd = null; Sessionanswer = null; Sessionquestion = null; 用户注册42图 5.20 注册界面注册按钮中的代吗:string strconn = Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True; string str = + txtName.Text + ; string SQL = select * from d_Memberuser where membername= + str.Trim(); SqlConnection myconn = new SqlConnection(strconn); SqlDataAdapter myda = new SqlDataAdapter(SQL, myconn); DataSet myds = new DataSet(); DataRow myrow; myda.Fill(myds, d_Memberuser); SqlCommandBuilder dacomm = new SqlCommandBuilder(myda); if (myds.Tablesd_Memberuser.Rows.Count = 0 & Page.IsValid = true & CheckBox1.Checked = true) myrow = myds.Tablesd_Memberuser.NewRow(); myrowmembername = txtName.Text.Trim(); myrowpassword = txtPass.Text.Trim(); myrowtelephone = txtTlp.Text.Trim(); myrowsex = DropDownList1.SelectedValue; myrowage = txtAge.Text.Trim(); myrowcustomername = txtCustomername.Text.Trim(); myrowsfznumber = txtSFZ.Text.Trim(); myrowquestion = txtQuestion.Text.Trim(); myrowanswer = txtAnswer.Text.Trim(); myds.Tablesd_Memberuser.Rows.Add(myrow); myda.Update(myds, d_Memberuser); Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(注册成功);window.location.href=login.aspx;); else if (CheckBox1.Checked = false) checkLab.Visible = true; else if (myds.Tablesd_Memberuser.Rows.Count != 0) Page.ClientScript.RegisterStartupScript(this.GetType(), , alert(此用户名已存在!);); 435.2 后台系统的实现后台系统的实现5.2.1 登录界面登录界面如图 5.21 所示,为在线订餐系统后台登录界面。管理员通过后台登录界面进入到管理页面。对于后台登录界面存着这管理员权限问题,所以在登录界面中需要进行判断。图 5.21 后台登录界面5.2.2 用户管理用户管理后台主界面都套用了模板页。通过创建母版页,实现了相同的在线订餐系统的后台管理主要框架相同。母版页中定义了界面上侧和左侧界,在母版页中通过下面的代码,实现显示管理员类型、管理员姓名、和当前时间的效果12。 if (SessionadminID = null) Response.Redirect(/Admin/AdminLogin.aspx); else nowdate.Text = DateTime.Now.Year + 年 + DateTime.Now.Month + 月 + DateTime.Now.Day + 日 ; nowdate.Text += op.getWeek() + ; SqlConnection conn = new SqlConnection(Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 conn.Open(); SqlCommand cmd = new SqlCommand(select AdminName from d_Admin where adminID= + SessionadminID.ToString() + , conn); lblname.Text = cmd.ExecuteScalar().ToString();44 conn.Close(); conn.Open(); SqlCommand cmd1 = new SqlCommand(select AdminTypeName from d_AdminType where adminTypeID= + SessionadminTypeID.ToString () + , conn); lblAdminType.Text = cmd1.ExecuteScalar().ToString(); conn.Close(); 添加会员信息图 5.22 添加会员信息 查看会员信息点击用户管理中的查看会员信息,就会显示图 5.23 所示界面。管理员可以通过选择不同的关键字对已注册的会员进行查询,点击详细信息就可以查看会员的具体注册信息。但是管理员只能查看、删除一些恶意会员,而没有修改用户资料的权利。45图 5.23 添加会员信息5.2.3 菜品管理菜品管理当点击编辑菜品信息时,会出现如图 5.24 所示界面,查询的时候先选择关键字段,再输入具体信息进行查询;当点击修改信息按钮时,此菜品的信息就会出现在如图 5.25所示的界面,可以对菜品信息的进行更改,然后保存。在删除的时候,会有提示“确定删除吗?”,当删除完某条信息的时候,界面表上的信息也会进行重新绑定。图 5.24 菜品信息列表当点击修改信息时会跳转到下一界面,出现相对应菜品的具体信息,如图 5.25 的修改菜品信息界面。可以修改菜品名称、菜品类型、菜品价格、菜品数量、菜品介绍进行相应的修改,修改完成后只需点击保存按钮。如果是不小心按错进入了,只需点击取消按钮就会回到菜品信息列表界面。46图 5.25 修改菜品信息保存按钮中的代码:protected void btnSave_Click(object sender, EventArgs e) if (TextBox1.Text = | TextBox2.Text = | TextBox3.Text = ) Response.Write(alert(请将信息填写完整!);location=javascript:history.go(-1);); return; else if (!validate.validateNum(TextBox2.Text) Response.Write(alert(菜品价格应为数字!);location=javascript:history.go(-1);); return; else SqlConnection con = new SqlConnection(Data Source=localhost;Initial Catalog=MyDinner;Integrated Security=True);/连接上数据库 SqlDataAdapter da = new SqlDataAdapter(select count(*) from d_Memberuser where membername= + Sessionname + , con); DataSet ds = new DataSet(); da.Fill(ds, d_Memberuser); SqlCommandBuilder dacomm = new SqlCommandBuilder(da); con.Open();/打开连接 SqlCommand cmd = new SqlCommand(update d_Food set foodName= + TextBox1.Text.Trim() + ,foodTypeID= + DropDownList1.SelectedValue + ,foodPrice= + TextBox2.Text.Trim() + ,foodIntroduction= + TextBox3.Text + ,foodImageUrl= + path + ,foodNumber=+TextBox4 .Text .Trim ()+ where foodID= + id, con); cmd.ExecuteNonQuery(); con.Close(); Response.Redirect(Food_Edit.aspx); 5.2.4 订单管理界面订单管理界面后台中对于订单的管理与前台的我的订单相类似,均采用了 GridView 控件与数据库进行数据绑定,可通过不同关键字对订单进行查询。区别仅仅在于前台用户只能查看到自己的订单,而管理员可以参看所有客户的订单。对于具体的控件、代码并没有本质的差别,所以为了避免重复,在此就不做详细介绍啦。475.2.5 管理员管理管理员管理对于管理员的管理有着权限的限定,只有超级管理员才能进入到管理员管理界面,查看管理员信息列表如图 5.26 所示。超级管理员可以直接对管理员进行删除,也可以根据权限或管理员姓名先进行查询,找到具体信息在进行删除。如续添加管理员只要点击左侧添加管理员进行相应操作。对于普通管理员无权进入该界面,只能看到自己的信息。图 5.26 管理员信息列表5.2.6 公告栏界面公告栏界面公告栏界面如图 5.27 所示,管理员可以通过公告发布的时间对公告信息进行查询。当管理员点击详情的时候,就会显示相应公告的详细信息。如果这条公告信息已经无用,则可进行删除操作。如需添加最新公告,只需点击添加公告按钮,进行相应操。48图 5.27 公告栏界面公告栏界面中的信息也是通过 GridView 控件进行数据绑定的,其设计的代码余前面相类似,唯一的不同是使用 GridView 控件中的 RowDataBound 事件使公告栏中的公告内容只显示部分信息,其实现代码如下15:protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) for (int i = 0; i GridView1.Rows.Count; i+) int Count = GridView1.Columns.Count; /获取 Gridview 的列数 / for (int j = 0; j 3) GridView1.Rowsi .Cells1.Text = GridView1.Rowsi.Cells1.Text.Substring(0, 4) + .; / 5.2.7 留言板界面留言板界面留言板界面如下图 5.28 所示,当管理员点击详情是会显示该条留言的具体信息;当管理员点击回复时,将会对用户在留言板中提出的问题进行相应回复。如果用户留下恶意信息干扰网站的正常运营,管理员可以酌情处理进行删除。49图 5.28 留言板界面5.3 本章小节本章小节本章主要介绍了在线订餐系统前后台的主要界面和程序实现代码。对关键的功能技术做了详细的说明。特别是后台中对母版页技术的使用,使整个后台具有统一的布局和风格;还有对数据控件 GridView 和 DataList 的大量使用。无锡太湖学院学士学位论文506 系统测试系统测试6.1 测试方案测试方案此次测试采用黑盒测试方法。经测试,系统功能运行良好。虽然在不同的浏览器中系统运行时界面会有所不同,但系统都能够正常运行。对各个界面中的功能逐一进行测试,确认各个界面中的功能都能正常实现。6.2 测试过程测试过程 登录界面的测试最初只是对在用户名与密码正确的情况做出了跳转,后经多番测试,使得在界面文本框为空和输入有错误的情况下都能有错误提示,使得客户有更好的体验。 注册界面的测试最初只在文本输入框有内容的情况下就能进行注册,对于信息的完整性与可靠性没有多加考虑。后来经过多次测试,对每个文本框都进行了输入信息的验证。尤其是对输入内容规则的验证。 忘记密码界面的测试在用户输入框为空的时候,会有不能为空的提示信息,当输入错误怎会有“您输入的用户不存在的!”的提示,输入正确后,会出现提示问题,若提示问题回答错误,则会有“抱歉!您的答案不正确”的提示,若输入正确则会找到密码。 查询界面的测试在查询界面,测试到刚开始当查询到客户所需求的菜品,只能通过菜品类型和价格区间进行选择,而没有考虑到直接通过查明进行模糊查找寻。经过测试加入了这一功能。 购物车的测试刚开始对于购物车中的菜品数量不能直接进行添加,后来经过不断修改实现了这一功能。最初也没有考虑到直接进入购物车的问题。在后期中发现这样缺少用户界面友好性。 后台留言界面的测试最初测试到留言版是觉的用户留言框,和留言板不好切换,使得界面看上去不自然。后就加入了特效,使之界面美观,又可以让管理员能够清晰的看到留言内容。 管理员登录的测试对于后台管理员信息的管理,最初并没有想到权限的问题,所有的管理员都可以对管理员信息进行操作。后来发现如果每个管理员都可以更改所有的信息,某个管理员就可以篡改另一个管理员的信息了,这回产生严重的不良影响。所以后来对管理员有了权限的设置。若普通管理员想进行查询或是删除,则会显示您的权限不能进行此操作的提示信息。只有超级管理员才可以更改管理员的信息,普通管理员只能更改自己的个人信息。6.3 本章小节本章小节本章主要介绍了在线订餐系统的测试。软件开发过程中最繁重最艰巨的任务是软件测试,设计测试方案则是测试阶段的关键技术问题,目前本系统还存在很多值得改进的51地方,将会在今后的维护中不断完善。无锡太湖学院学士学位论文52基于.net 的在线订餐系统设计与开发537 结论与展望结论与展望7.1 结论结论通过这次的毕业设计,让我从最开始对 ASP.NET 的茫然,到能够发现在线订餐系统。对于 ASP.NET 我已经不那么陌生了能够熟练的运用,并将学到的知识均用于本系统的开发上,通过自己的努力以及老师朋友的帮助,我终于能够自己全部完成这份设计。从在这个设计过程中我的实际动手操作能力和资料搜集能力在中也得到提升。通过对在线订餐系统的设计与开发,我对系统开发有了更深刻的了解。本项目的设计采用的是 B/S(浏览器/服务器)结构。在系统的开发过程中,利用了软件工程的知理论识开发软件,按“分析、设计、实现、测试 ”的步骤进行,一步步的完成了功能的实现。还对 ASP.NET 技术有了更深的理解,特别是对于各种数据控件的掌握,其中以GridView 和 DataList 最为突出。在本系统前后台中多处用到了这些控件,尤其是在后台管理。了解了控件各项功能元素作用,熟悉了控件的基本构造及运用,同时还掌握了控件更深层的知识与技巧。本次毕业设计让我
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:基于.NET的在线订餐系统设计与开发【带程序】
链接地址:https://www.renrendoc.com/p-273419.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!