大理学院本科毕业设计
酒店餐饮管理系统
——菜谱管理、订单管理、用户管理、订餐管理
HOTEL CARTING MANAGEMENT SYSTEM
MENU MANAGEMENT、ORDER MANAGEMENT、USER MANAGEMENT、ORDERDINER
MANAGEMENT
学 院: 数学与计算机学院 模块负责人: 项目组成员: 指导 教师: 专 业: 计算机科学与技术 年级(班级): 07级计算机1班 起止 日期: 2010年8月1日—2010年12月30日
制表日期: 2010 年 12 月 4 日
大理学院学士学位论文
摘 要
酒店餐饮管理系统软件为酒店餐饮公司带来了极大的方便,使得繁琐的酒店餐饮管理变得非常轻松,于是庞大的人力物力及时间消耗变成了简单快捷的计算机操作。现在比较知名的国内外网上订餐网站有OpenTable、饭统网、几年前在大阪上市的日本餐饮网站咕嘟妈咪(Gudumami)等,这些都是比较成功的在线订餐网站。
我们开发的酒店餐饮管理系统就是基于在线订餐网站这样一个思想。开发这个系统所采用的是当前较为流行的编程软件Microsoft Visual Studio 2005,以数据库SQL Server2000作为系统的后台操作,采用统一建模语言(UML)为辅助手段。其功能在系统内部有源代码直接完成,我们只需按系统要求输入即可操作。
整个系统根据软件工程[1,3]的思想,从需求分析[2]入手,编写用例、绘制用例图、绘制时序图、绘制类图、对象设计、映射再到编程,最后测试;通过不断的测试使系统更完善。该系统从符合操作简便、界面友好、灵活、实用、安全的原则出发,完成顾客在网上在线订餐以及酒店后台管理的全过程。各个模块包括:顾客前台注册、登录、顾客前台在线订餐;酒店管理员后台会员管理、订单管理、结账管理、公告管理、员工信息管理、员工工资管理、留言管理、饮食文化管理等功能模块,尽可能满足酒店餐饮管理的需要。
【关键字】:酒店管理;在线订餐;Microsoft Visual Studio 2005;软件工程;统一建模语言;数据库SQL Server2000 ;模块;酒店餐饮在线管理系统
I
酒店餐饮管理系统
The Hotel Carting Management System
Abstract
The Hotel Carting Management System software brings a great convenience for the hotel restaurant, making the complicated hotel carting management more convenient, and as a result the enormous human and material resources and consumption of time become a simple and quick computer operation. Now more well-known domestic and international online ordering site are OpenTable, rice Unification, a few years ago in Osaka Japanese restaurant listing website gurgle Mummy (Gudumami) and so on, and they are relatively successful online ordering site.
We have developed a hotel catering management system that is based on the thought of online ordering site. We adopt more popular programming software like Microsoft Visual Studio 2005 to develop this system. It’s a background operation with SQL Server 2000 and it takes uniform modeling language as tool. The source code complete within function directly. We just input datum by system requirements simply.
According to the software engineering [1,3] thoughts and from the demand analysis [2], writing example, drawing use case diagram, drawing sequence diagram, drawing class diagram, object-oriented design, mapping object to programming, final testing, through constant testing system it is more perfect, we have developed a relatively complete Hotel Carting Management System. The system completes the whole process that customer order online and hotel Carting manage in the angle of simple, user friendly, flexible, practical and safe principle. That every Modules includes: customer registering, login, customer front-line ordering; hotel management, back very important people management, order management, billing management, announced management, employee information management, employee payroll management, message management, cooking culture management, and so on, meets the needs of hotel and catering management as far as possible.
Key words: hotel management; online ordering; Microsoft Visual Studio 2005; software engineering; Unified Modeling Language; database SQL Server2000; module; hotel restaurant online management system
II
大理学院学士学位论文
目 录
摘 要 .......................................................... I ABSTRACT ......................................................... II 引言 .......................................................... - 1 - 第一章 绪论 ................................................... - 1 - 1.1 酒店餐饮管理系统的概述 .................................... - 1 - 1.2 开发的背景 ................................................ - 1 - 1.3 可行性的研究 .............................................. - 1 - 第二章 系统开发工具和环境 ..................................... - 2 - 2.1 B/S模式简介 .............................................. - 2 - 2.2 VISUAL ASP.NET 2005编程环境介绍 ............................ - 2 - 2.3 数据库的概述 .............................................. - 3 - 2.4 开发及运行环境 ............................................ - 3 - 第三章 系统的需求分析 ......................................... - 4 - 3.1编写目的 .................................................. - 4 - 3.1.1背景说明............................................... - 4 - 3.2任务概述 .................................................. - 4 - 3.2.1 系统主要功能 .......................................... - 4 - 3.2.2目标................................................... - 4 - 3.3其它 ...................................................... - 4 - 3.4处理流程 .................................................. - 5 - 3.5标志参与者 ................................................ - 5 - 3.5.1确定系统的参与者....................................... - 5 - 3.6主要的求精用例编写 ........................................ - 5 - 3.6.1确定系统的用例......................................... - 5 - 3.6.2 绘制用例图 ............................................ - 9 - 3.6.3用例术语表............................................ - 11 - 3.6.4绘制时序图............................................ - 12 - 第四章 对象设计 .............................................. - 15 - 4.1 分析对象 ................................................. - 15 - 4.1.1 管理员对象设计 ....................................... - 15 - 4.2 绘制类图 ................................................. - 17 - 4.2.1 管理员信息类类图 ..................................... - 17 - 4.2.2 菜谱信息类类图 ....................................... - 17 - 4.2.3 订单信息类类图 ....................................... - 17 - 4.2.4 餐车信息类类图 ....................................... - 18 - 第五章 映射 ................................................. - 19 -
1
酒店餐饮管理系统
5.1 映射的概述 ............................................... - 19 - 5.2 将对象模型映射到编程环境 ................................. - 19 - 5.2.1 对象cp_tb对象模型 ................................... - 19 - 5.2.2对象dd_tb对象模型.................................... - 20 - 5.2.3 对象user_tb对象模型 ................................. - 21 - 5.3 将持久性数据对象映射到数据库 ............................. - 21 - 5.4 将属性、方法映射到编程环境中 ............................. - 23 - 5.4.1公共类DB_gg.cs类,提供一些主要的方法................. - 23 - 5.4.2公共类checkcode.cs类,提供一些主要的方法............. - 25 - 5.4.3 图片保存到指定文件夹代码 ............................. - 27 - 第六章 编 程 ................................................. - 28 - 6.1程序代码说明 ............................................. - 28 - 6.2程序页面以及功能代码 ..................................... - 28 - 6.2.1 前台顾客订餐页面 ..................................... - 28 - 6.2.2 后台登录页面 ......................................... - 34 - 6.2.3 后台菜谱管理页面 ..................................... - 36 - 6.2.4 新增菜谱页面 ......................................... - 39 - 6.2.5 编辑菜谱页面 ......................................... - 43 - 6.2.6 订单管理页面 ......................................... - 46 - 6.2.7 详细订单页面 ......................................... - 48 - 6.2.8 用户管理页面 ......................................... - 49 - 6.2.8 增加用户页面 ......................................... - 52 - 6.2.9 编辑用户页面 ......................................... - 53 - 第七章 测 试 ................................................. - 56 - 7.1测试用例编写的目的 ....................................... - 56 - 7.2 主要的测试项目用列 ....................................... - 56 - 7.2.1 顾客前台订餐测试用例 ................................. - 56 - 7.2.2 后台菜谱管理用例测试 ................................. - 58 - 7.2.3 后台订单管理用例测试 ................................. - 60 - 7.2.4 后台用户管理用例测试 ................................. - 62 - 总 结 ..................................................... - 64 - 参考文献 ..................................................... - 65 - 致 谢 ..................................................... - 68 -
2
引言
现在的社会,网上购物很流行,而网上订餐也随着网络的普及正在流行起来,它带来的是方便、实惠和个性化。现在比较知名的国内外网上订餐网站有OpenTable、饭统网、几年前在大阪上市的日本餐饮网站咕嘟妈咪(Gudumami)等,这些都是比较成功的在线订餐网站。在目前的网络订餐市场,基本存在两类公司:一种是以丽华快餐为代表、以互联网为销售渠道、无店面经营的端到端的订餐公司,它们自己既扮演生产者又扮演服务者的角色;另一类则是纯粹的“中间人”(Middlemen)角色,即帮助餐馆(Seller)找到食客(Buyer),帮助食客(Buyer)购买物品(预订餐馆)。OpenTable、Yelp以及中国的饭统网、大众点评网等基本属于这一阵营,用饭统网CEO臧力的话说,做的是双边市场:一边是餐馆,一边是消费者。而我们所做的便是为酒店量身定做一个属于自己的在线订餐网站,有点类似于第一类公司。
传统的订餐方式主要是电话订购和亲自到酒店订购。电话订购会因为你对酒店的不了解而得不到满意的服务,顾客亲自到酒店订购会浪费顾客的时间,还有一点值得提出的就是现在的旅游业很发达,很多人在出发旅游前都喜欢提前预定好自己的吃饭地点,以防自己到达后部能及时吃到自己想吃的地方特色。在线订餐网站给人们提供了一个省时、省力、方便的订餐形式,在线订餐顾客可以通过网站了解酒店的饮食特色,了解酒店所提供的食物,从而选择预定。通过我们的系统,顾客既可以自己在网上订,当顾客到达后还可以通过酒店工作人员继续补充上一次订购的不足,而且酒店管理员可以通过我们的系统直接管理酒店。我们的系统集前台订购和后台酒店管理于一体,既方便了顾客,也方便了酒店管理人员,相信将会是一款很实用的酒店应用软件。
酒店餐饮在线管理系统是一个酒店不可缺少的部分。酒店餐饮在线管理系统能够为用户提供充足的信息和快捷的查询手段,它的内容对于酒店的决策者和管理者来说都是至关重要的。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在许多缺点,如:效率低、保密性差;另外,时间一长将产生大量的文件和数据,这对于查找、更新、维护都带来的不少的困难。随着科学技术的不断提高,计算机科学不断日渐成熟,其强大功能已为人们深刻认识,已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对酒店餐饮管理,具有手工管理所无法比拟的特点,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高酒店餐饮管理的效率,也是企业的科学化、正规化管理与世界接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情。在下面的各章中我们将以开发一酒店餐饮管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。
大理学院学士学位论文
第一章 绪论
1.1 酒店餐饮管理系统的概述
酒店餐饮管理系统是一款非常实用的酒店管理。使用该软件,不仅可以方便的进行酒店管理工作,同时还能够顾客在线订餐的功能,在方便顾客的同时又提高了使用者的工作质量和效率。
1.2 开发的背景
现在的社会,网上购物很流行,而网上订餐也随着网络的普及正在流行起来,它带来的是方便、实惠和个性化。作为酒店的管理者,一方面当然希望能够提高酒店的知名度和酒店业务,而从网络来扩张此项业务则是一种好的方法,也就是我们所说的网上在线订餐,另一方面也希望能够对酒店事务管理的整个流程状态,信息资料的情况了如指掌,使其可以做出科学的决策。作为工作人员期望能够避免繁琐的手工操作,甩掉传统的手工记录方式,达到事半功倍的效果。因此,开发出一套具有在线订餐功能和酒店管理功能的软件具有很大的意义。我们的软件便是在这种背景下进行开发的。
1.3 可行性的研究
可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能够解决。
现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为酒店餐饮管理的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:
1、本系统的运行可以代替人工进行许多繁杂的劳动; 2、本系统的运行可以大大的提高酒店的工作效率; 3、本系统可以使敏感文档更加安全,等等; 4、本系统为酒店从网上带来更多的经济效益。 所以,本系统在经济上是可行的,并且是值得的。
使用Microsoft Visual Studio 2005作为系统开发的开发环境,它作为一种现代的编程语言,提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
本系统为一个小型的酒店餐饮在线管理系统,所耗费的资源非常的小,普通的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。
- 1 -
酒店餐饮管理系统
第二章 系统开发工具和环境
2.1 B/S模式简介
B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。把传统C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系。第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator,微软公司的IE等。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后台,并提出处理请求。这个后台就是第二层的Web服务器。第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,其中嵌入处理的结果,返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,Web服务器还需与数据库服务器协同完成这一处理工作。第三层数据库服务器的任务类似于C/S模式,负责协调不同的Web服务器发出的SQ请求,管理数据库。B/S模式方便了顾客,方便了管理人员
[24]
。
2.2 Visual ASP.NET 2005编程环境介绍
1.创建Visual ASP.NET 2005程序之前,首先介绍如下术语。
项目:指可以编译以创建可发布组建的文件集合。项目的类型有多种,复杂的应用程序可能包含许多项目,如Windows应用项目和支持它的动态链接库项目等。 解决方案:组成应用程序或组建的项目与文件的集合。
Visual Studio.NET是一个完整的开发环境,它称为集成开发环境(integrated development environment,IDE)。IDE是创建应用程序的设计框架;创建Visual C#2005项目所需要的所有工具都在Visual C#IDE中。 2.Visual Studio.NET环境
IDE包含许多窗口,如右边的“解决方案资源管理器”窗口,它用于查看组成项目的文件。除了这些窗口,IDE中还包含许多标签,如IDE左边竖直的“工具箱”标签。可以调整任意一个窗口的大小和位置,可根据需要隐藏和显示它们。设计环境中的“属性”窗口可能是IDE中最重要的窗口。 事件驱动
Visual ASP.NET 2005集成了一个事件驱动的编程模型。事件驱动的应用程序没有过程程序的约束。过程语言是从上到下的顺序,而事件驱动的程序的事件中具有逻辑层次的代码。事件发生的顺序并没有预先确定,用户通常可以通过与程序交互来出发特定的事情。
- 2 -
大理学院学士学位论文
2.3 数据库的概述
Microsoft SQL Server 2000是美国微软公司推出的使用相当广泛的数据库管理系统,包含一套图形工具,如服务器管理(用于启动和关闭数据库服务)、企业管理器(用于创建和修改数据库及备份数据库等)和查询分析器(用于交互执行Transact-SQL 语句和过程并提供图形查询分析功能)等
[33]
。
SQL Server 2000是为迅速提供可伸缩性电子商务、企业及数据仓库解决方案而开发的完整数据库与分析软件产品。SQL SERVER 2000定位于Internet背景下的数据库应用,它为用户的Web应用提供了一款完善的数据管理和数据分析解决方案。同时SQL SERVER 2000还是Windows DNA(Distributed Internet Architecture)架构的一个核心组件。它极大地缩短了用户开发电子商务、数据仓库应用的时间。SQL SERVER 2000还提供对XML(Extensible Markup Language扩展标示语言支持)和HTTP的全方位支持。
在高性能和企业级可伸缩性领域,SQL Server 2000 设计成利用 Windows 2000 对更多处理器、更大的系统内存的支持,最终达到支持 64 位硬件平台。在不断提升可用性的努力过程中,SQL Server 2000 采用 Windows 2000 四路群集,提供了大大改进的群集支持。SQL Server 7.0 已经在可管理性和易用性方面在行业内领先,SQL Server 2000 通过与 Windows 2000 活动目录紧密结合进一步改进了这些功能。而且,SQL Server 2000 还包含对现有管理工具和实用程序的重大改进,并引入更具自我调节和自我管理的引擎功能。
2.4 开发及运行环境
系统开发平台:Visual Studio 2005 ASP.NET 系统开发语言:C#
操作系统:windows操作平台
数据库管理系统软件:SQL Server 2000
运行环境:Microsoft NET Framwork SDK V2.0
- 3 -
酒店餐饮管理系统
第三章 系统的需求分析
3.1编写目的
本需求分析说明书的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用。可作为今后出现问题的规范依据 3.1.1背景说明
(1)软件名称:酒店餐饮管理系统 (2)开发者:欧春波、尤燕梅、王顺芬
3.2任务概述
3.2.1 系统主要功能
该系统的主要功能是实现顾客的网上在线订餐和酒店的部分后台管理功能。 3.2.2目标
完善目前酒店的系统化管理,使之能跟社会发展的需要。使酒店能够系统的规范的管理相关的各类信息,提高工作效率。
3.3其它
1、正确性
在预定环境下,软件满足最初的用户需求,要求软件没有错误。 2、实用性
运用面向对象的技术,利用UML模型成功地为面向对象的需求分析建模,使之对各软件应用系统的开发过程中的真实的需求分析和设计具有实际的指导意义和高度的实用价值。 3、安全性
由于软件运行数据放在数据库中,所以参数不容易被错改、破坏,万一参数受到破坏可用连机备份数据屠,并且不会影响源程序。 4、可维护性
本软件利用数据库进行编程,系统结构由程序基本确定,大量的参数及文本内容全部放于数据库中。修改、更新数据只要在数据库进行修改添加,而不需要对系统结构进行修改,这样系统维护性、升级都十分方便。 5、可移植性
- 4 -
大理学院学士学位论文
可将此软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行。 6、简单性
在特定的时间内,高质量的解决特定问题,完成特定工作,为后一步 划做好基础编程的简洁性,减少代码的重复,对代码进行优化。
3.4处理流程
1. 顾客在线订餐流程: (1)、顾客登录酒店网站; (2)、顾客注册成为酒店会员; (3)、顾客登录; (4)、顾客浏览酒店信息; (5)、顾客进行订餐活动。 2、酒店管理者管理流程:
(1)、酒店管理者启动后台登录界面; (2)、输入用户名和密码进入后台主管理界面;
(3)、管理者在后台可以进行酒店的相关管理(包括会员管理、菜谱管理、订单管理、公告管理、留言管理、员工信息管理、员工工资管理等)。
3.5标志参与者
3.5.1确定系统的参与者 1一般顾客(VIP) 2系统管理员(Manager) 3一般管理员(User)
3.6主要的求精用例编写
一个场景是一个用例的实例,即对一个给定功能而言,一个用例可以说明可能场景[1]。
3.6.1确定系统的用例 3.6.1.1.顾客订餐处理用例: 用例Order:查询预订
范围:酒店餐饮管理系统(Hotel Carting Managing System ,HCMS)应用 级别:用户目标
主要参与者:顾客(Customer、VIP) 涉众及其关注点:
- 5 -
酒店餐饮管理系统
——顾客:希望以最小的代价完成预定活动并得到快速服务,希望快捷、清晰的看到所输入菜系信息。希望得到快速回复以确认预定成功。 ——酒店:希望准确的记录顾客预定过程以满足顾客需求。 前置条件:顾客经过确认和认证已成为会员。
成功保证(后置条件):存储预订信息、更新库存信息、生成票据。 主成功场景(或基本流程、主事件流):
1.顾客(Customer)打开浏览器(Browser),在地址栏(AddBar)上输入酒店网址按下Enter键。
2. 这时进入酒店主页面(index),顾客通过浏览主页面的内容,在主页面点击请登录按钮弹出顾客登录页面(LoginPage),顾客在该页面输入用户名和密码,单击登录按钮进入首页(index)。
5.顾客选中自己需要的菜,单击加入餐车按钮,系统将该菜加入到我的餐车里面。
6.顾客浏览菜单,若还需要继续点菜则重复第5步;若有不需要的菜则点击删除按钮。
7. 顾客点好满意的菜后单击提交按钮,系统将订餐信息提交到数据库中的订单表(dd_tb)和临时餐车表(lscc_tb)进入确认订单页面(ConfirmPage)。
8.接下来进入确认订单页面(ConfirmPage),顾客单击确定,系统提示订餐成功并返回我的订单页面(myorderPage)。
9.顾客在我的订单页面(myorderPage)单击详细信息便进入详细订单页面(detailorderPage)。 3.6.1.2.管理员登录用例 用例Login:管理员登录
范围:酒店餐饮在线管理系统(Hotel Carting Managing System ,HCMS)应用 级别:用户目标
主要参与者:酒店管理员(SA 或者admin) 涉众及其关注点:
——酒店管理员:希望准确、成功登陆到后台主管理界面。 ——酒店:希望准确的保障系统的安全。 前置条件:软件能正常运行起来
成功保证(后置条件):可以进入后台进行更多的后台管理和相关操作。 主成功场景(或基本流程、主事件流):
1. 酒店管理员(SA或admin)打开浏览器(Browser)进入后台登录页面(LoginPage);
2. 管理员输入用户名和密码,单击登录按钮进入后台管理主页面(BMainPage)。
- 6 -
大理学院学士学位论文
3.6.1.3.菜谱管理用例 用例MenuM:菜谱管理
范围:酒店餐饮在线管理系统(Hotel Carting Managing System ,HCMS)应用 级别:用户目标
主要参与者:酒店管理员(admin) 涉众及其关注点:
——酒店管理员:希望准确、快速的输入各菜系的信息。 ——酒店:希望准确的记录顾客预定过程以满足顾客需求。 前置条件:管理员已登录成功进入到后台的主管理页面。
成功保证(后置条件):存储预订信息。更新库存信息。生成票据。 主成功场景(或基本流程、主事件流):
1. 管理员(admin)进入后台管理主页面(BMainPage)后单击菜谱管理选项,弹出菜谱管理页面(MenuMPage);
2. 在菜谱管理页面,管理员可以通过下拉列表来选择自己需要查询的菜的类别,选中需要查询的菜的类别后单击查询按钮;
3. 管理员单击查询后系统查找数据库表中类型为所选的记录显示在GridView中;
4. 管理员若要添加新的菜,则单击新增按钮,系统弹出增加菜谱页面(AddMenuPage),管理员在该页面上输入所要添加的菜的信息后单击添加按钮,系统将信息加到数据库菜谱表(cp_tb)中并提示添加成功,返回菜谱管理页面(MenuMPage);
5. 管理员若要编辑某一道菜的信息,则在菜谱管理页面(MenuMPage)中单击GridView中的编辑按钮,系统便从数据库菜谱表中查询这道菜的信息并返回到编辑菜谱页面(EditMenuPage),管理员在该页面对菜的信息修改后单击保存按钮,系统便将信息重新保存到数据库菜谱表(cp_tb)中;
6. 管理员若要删除某一道菜的信息,则在菜谱管理页面(MenuMPage)中单击GridView中的删除按钮,系统便从数据库菜谱表中找到这道菜的信息,并将其从菜谱表中删除。 3.6.1.4.订单管理用例 用例OrderM:订单管理
范围:酒店餐饮在线管理系统(Hotel Carting Managing System ,HCMS)应用 级别:用户目标
主要参与者:酒店管理员(admin) 涉众及其关注点:
——酒店管理员:希望可以准确的查询到订单信息,以便对订单进行相关的操作。 ——酒店:希望准确的记录顾客预定过程以满足顾客需求。
- 7 -
酒店餐饮管理系统
前置条件:已经有顾客提交订单,管理员已经登录进入后台管理主页面(BMainPage)
成功保证(后置条件):存储预订信息,更新库存信息,生成票据。 主成功场景(或基本流程、主事件流):
1. 管理员(admin)进入后台管理主页面(BMainPage)后单击订单管理选项,弹出订单管理页面(OrderMPage);
2.管理员在订单管理页面(OrderMPage)输入订单号或者顾客姓名后单击查询按钮,系统便从数据库订单表(dd_tb)中查询相关记录并将其信息显示在订单管理页面(OrderMPage)的GridView1中;
3. 管理员若要编辑某一订单的信息,则在订单管理页面(OrderMPage.aspx)中单击GridView中的编辑按钮,系统便从数据库菜谱表中查询这道菜的信息并返回到编辑订单页面(EditOrderPage),管理员在该页面对订单的信息修改后单击保存按钮,系统便将信息重新保存到数据库订单表(dd_tb)中。 3.6.1.5 用户管理用例
用例UserManage_UC: 用户管理用例
范围:酒店餐饮管理系统(Hotal Catering Managing System ,HCMS)应用 级别:用户目标
主要参与者:超级管理员(SA) 涉众及其关注点:
——酒店管理员:希望准确、快速打开用户管理页面以便查看、查询、修改、添加和删除用户信息。
——酒店:希望准确的记录用户信息并对其进行管理。 前置条件:超级管理员经过确认和认证。
成功保证(后置条件):存储用户的信息,更新用户表(user_tb)。 主事件流:
1、 超级管理员(SA)进入酒店后台管理主页面(BMainPage),通过浏览后台主页面的内容,单击用户管理按钮,系统创建用户管理页面(UMPage);
2、 超级管理员(SA)浏览页面选中要删除的用户单击删除,系统提示是否删除该用户,超级管理员单击确定(OK)按钮即删除选中的用户;
3、如果要编辑用户信息则单击相应用户信息栏上的编辑按钮,系统创建修改用户信息页面(EditUPage),在该页面即可对该用户信息进行编辑单击保存(save)按钮返回到用户管理页面(UMPage),则修改的用户信息就显示在该页面上;
4、单击添加(add)按钮,系统创建添加用户页面(AddUPage),在该页面输入用户的相关信息单击添加(add)按钮,返回用户管理页面(UMPage)即可看到刚添加的用户;
- 8 -
大理学院学士学位论文
5、在用户管理页面(UMPage)可通过输入用户编号、用户名和用户类型对用户相关信息进行查询;
6、系统提交数据到用户表(user_tb),系统更新数据库中的用户表(user _tb);
7、重复以上步骤,直到编辑完所有要编辑的内容为止; 8、用户管理结束。 3.6.2 绘制用例图
3.6.2.1. 顾客订餐处理用例用例图:
CustomerOrder_UC
标识对象:
实体对象:顾客(Customer),餐车表(cc_tb),订单表(dd_tb); 边界对象:首页(index.aspx),凉菜页面(lcPage.aspx),酒水饮料页面(jsylPage.aspx),点心页面 (dxPage.aspx),确认订单页面(confirmorderPage),我的订单页面(myorderPage),详细订单页面(detailorderPage);
控制对象:提交按钮,删除按钮。 3.6.2.2.管理员登录用例用例图:
SALogin_UC
标识对象:
实体对象:管理员(SA),用户表(user_tb);
边界对象:登录页(LoginPage.aspx),后台主页面(BMainPage.aspx); 控制对象:登录按钮,取消按钮。
- 9 -
酒店餐饮管理系统
3.6.2.3.菜谱管理用例用例图:
MenuM_UCSA
标识对象:
实体对象:管理员(SA),菜谱表(cp_tb);
边界对象:后台主页面(BMainPage.aspx),菜谱管理页面(MenuMPage.aspx),增加菜谱页面(AddMenuPage.aspx),编辑菜谱页面(EditMenuPage.aspx); 控制对象:查询按钮,新增按钮,取消按钮,编辑按钮。 3.6.2.4.订单管理用例用例图:
OrderM_UCSA
标识对象:
实体对象:管理员(SA),订单表(dd_tb);
边界对象:后台主页面(BMainPage.aspx),订单管理页面(OrderMPage.aspx),编辑订单页面(EditOrderPage.aspx); 控制对象:查询按钮,编辑按钮,取消按钮。 3.6.2.5.用户管理用例图:
UserM_UCSA
标识对象:
实体对象:管理员(SA),用户表(user_tb);
边界对象:后台主页面(BMainPage.aspx),用户管理页面(UMPage.aspx),新增用户页面(AddUPage.aspx),编辑用户页面(EditUPage.aspx); 控制对象:查询按钮,编辑按钮,取消按钮。
- 10 -
大理学院学士学位论文
3.6.3用例术语表
3.6.3.1 顾客订餐用例术语表
序号 1 2 3 4 5 6 7 8 3.6.3.2管理员登录术语表 序号 1 2 3 4 3.6.3.3菜谱管理术语表 序号 1 2 3 4 5 6 3.6.3.4订单管理术语表 序号 1 2 3 4 5
- 11 -
名词 顾客 地址栏 酒店主页面 顾客登录页面 订单表 餐车表 确认订单页面 我的订单页面 名词 酒店管理员 浏览器 后台登录页面 后台管理主页面 名词 管理员 后台管理主页面 菜谱管理页面 增加菜谱页面 编辑菜谱页面 菜谱表 名词 管理员 后台管理主页面 订单管理页面 编辑订单页面 订单表 标识 Customer AddBar index LoginPage dd_tb cc_tb ConfirmPage myorderPage 标识 SA或admin Browser LoginPage BMainPage 标识 admin BMainPage MenuMPage AddMenuPage EditMenuPage cp_tb 标识 admin OrderMPage MenuMPage EditOrderPage dd_tb 酒店餐饮管理系统
3.6.3.5用户管理术语表
序号 1 2 3 4 5 6 3.6.4绘制时序图 3.6.4.1顾客订餐时序图:
index : Customer1: 单击登录按钮2: 创建3: 返回名词 超级管理员 后台管理主页面 用户管理页面 添加用户页面 修改用户页面 用户表 标识 SA BMainPage UMPage AddUPage EditUPage user_tb LoginConfirmPagemyorderPagedetailorderPagedd_tbcc_tblscc_tb4: 选择需要的菜后点加入餐车5: 返回6: 单击提交按钮7: 更新数据表8: 插入临时表9: 返回10: 返回11: 单击确定12: 更新数据表13: 返回14: 单击详细信息15: 创建
- 12 -
大理学院学士学位论文
3.6.4.2管理员登录时序图:
Browser : SALoginPageBMainPageuser_tb1: 打开2: 输入后台登录网址按Ent...3: 进入4: 输入用户名和密码并选择用户类型后单击...5: 查找数据库验证用户...6: 用户信息正确则返回
3.6.4.3菜谱管理时序图:
BMainPage : SA1: 单击菜谱管理MenuMPageAddMenuPageEditMenuPagecp_tb2: 进入3: 选择查询类型或输入菜名后单击查询4: 查询数据库5: 返回查询信息6: 单击新增按钮8: 输入菜的信息单击添加7: 进入9: 添加到数据库表中10: 保存成功并返回11: 单击编辑12: 查询数据表记录13: 找到记录并返回14: 更改菜信息后单击保存15: 更新到数据库表中16: 返回17: 单击删除18: 提示是否确定删除?选是后删除并更新数据库19: 返回
- 13 -
酒店餐饮管理系统
3.6.4.4订单管理时序图:
BMainPage : SA1: 单击订单管理2: 进入OrderMPageDetailOrderPagedd_tb3: 输入查询条件后点查询...4: 查询数据库表5: 返回查询记录6: 单击详细信息7: 查询数据表8: 返回9: 单击删除10: 从数据表中找到记录删除并更新数据表11: 返回
3.6.4.5.用户管理时序图:
BMainPage : SA1: 打开2: 单击用户管理3: 创建4: 单击添加按钮UMPageAddUPageEditUPageuser_tb5: 创建6: 输入用户信息单击添加按钮7: 更新数据表8: 刷新并返回9: 单击要删除行的删除10: 提示是否删除?选是后更新数据表11: 刷新并返回页面12: 单击要编辑行的编辑13: 创建14: 输入要更改的信息后点保存15: 更新数据表16: 返回
- 14 -
大理学院学士学位论文
第四章 对象设计
4.1 分析对象
4.1.1 管理员对象设计 4.1.1.1名称:管理员信息表 表名:user_tb
user_tb的具体属性描述如下所示: 序号 1 2 3 4 属性 编号(UID) 用户名(UserName) 密码(PassWord) 类型(UserType) 数据类型 int varchar varchar varchar 说明 用来此标识一个用户 user_tb的主要的方法: 查询 (Query):查询管理员的相关信息记录; 增加(Add):增加一条管理员信息记录; 删除(Delete):删除一条管理员信息记录; 保存(Save):保存录入的管理员信息;
修改(Edit);修改已保存的一条管理员信息记录; 4.1.1.2 菜谱基本信息对象设计 名称:菜谱基本信息表 表名:cp_tb
cp_tb的具体属性描述如下: 序号 1 2 3 4 5 属性 菜编号 菜名 单价 主料 口味 数据类型 int varchar varchar varchar varchar varchar 说明 用来标识一道菜 6 图片 cp_tb的主要的方法: 查询 (Query):查询菜的相关信息记录; 增加(add):增加一条菜信息记录; 删除(delete):删除一条菜信息记录; 保存(save):保存录入的菜信息;
- 15 -
酒店餐饮管理系统
修改(edit);修改已保存的一条菜信息记录; 4.1.1.3 订单基本信息对象设计 名称:订单基本信息表 表名:dd_tb
dd_tb的具体属性描述如下: 序号 1 2 3 4 5 6 7 8 9 9 属性 订单号 顾客姓名 顾客身份证号 订餐时间 就餐时间 Account 桌数 预付金额 总金额 状态 数据类型 int varchar varchar varchar varchar varchar Int Float Float varchar 说明 用来标识一个订单 dd_tb的主要的方法: 查询 (Query):查询订单的相关信息记录; 删除(delete):删除一条订单信息记录; 保存(save):保存录入的订单信息;
修改(edit);修改已保存的一个订单信息记录; 4.1.1.4 餐车基本信息对象设计 名称:餐车基本信息表 表名:cc_tb
cc_tb的具体属性描述如下: 序号 1 2 3 4 5 6 属性 餐车编号 订单号 菜编号 菜名 单价 份数 数据类型 int int int varchar float int 说明 用来标识一条餐车记录 cc_tb的主要的方法: 查询 (Query):查询餐车中订单的相关信息记录; 删除(delete):删除一条餐车中信息记录;
- 16 -
大理学院学士学位论文
保存(save):保存录入的餐车信息;
修改(edit);修改已保存的一个餐车信息记录;
4.2 绘制类图
4.2.1 管理员信息类类图
4.2.2 菜谱信息类类图
4.2.3 订单信息类类图
- 17 -
酒店餐饮管理系统
4.2.4 餐车信息类类图
- 18 -
大理学院学士学位论文
第五章 映射
5.1 映射的概述
某一转换旨在改进模型的一个属性(如它的模块化),同时保留该模型的其他所有属性(如其功能特性)。因此,一个转换通常是局部的,它影响到少量的类、属性和操作,并且在一系列的小步骤下执行。我们着重考虑以下活动的细节: 1.优化。优化活动处理系统模型的性能需求。
2.实现关联。在这个活动中,我们将关联映射到源代码结构。
3.将契约映射到异常。在这个过程中,我们描述违反契约时的操作行为。 4.将类模型映射到某一存储模式。
[1]
5.2 将对象模型映射到编程环境
5.2.1 对象cp_tb对象模型
该对象映射到编程环境下就是类server_MenuMPage,描述如下:
public partial class server_MenuMPage : System.Web.UI.Page { //映射属性
Int 菜编号; String 菜名; Float 单价; String 主料; String 口味; String 图片; //映射方法
void Binding()//绑定 DataGrid { {
protected void Page_Load(object sender, EventArgs e) {
Binding(); }
protected void ResetButton_Click(object sender, EventArgs e)//重置方法 {
TextBox1.Text = \"\"; }
protected void AddButton_Click(object sender, EventArgs e)//新增方法
- 19 -
酒店餐饮管理系统
{
Response.Redirect(\"AddMenuPage.aspx\", true); }
protected void RowDeleting(object sender, GridViewDeleteEventArgs e)//删除方法 { }
protected void SelectButton_Click(object sender, EventArgs e)//查询方法 { }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { } }
5.2.2对象dd_tb对象模型
该对象映射到编程环境下就是类server_ OrderMPage,描述如下:
public partial class server_OrderMPage : System.Web.UI.Page { /映射属性
Int 订单号; String Account; String 顾客姓名; String 顾客身份证号; String 订餐时间; String 就餐时间; Int 桌数; Float 总金额; Float 预付金额; String 状态;
void Binding()//绑定 DataGrid { }
protected void Page_Load(object sender, EventArgs e) //页面加载方法 {
Binding(); }
protected void Button1_Click(object sender, EventArgs e)//查询方法 { }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { } }
- 20 -
大理学院学士学位论文
5.2.3 对象user_tb对象模型
该对象映射到编程环境下就是类server_UMPage,描述如下:
public partial class server_UMPage : System.Web.UI.Page {
String username; String password; String Type;;
void Binding()//绑定GridView { }
protected void Page_Load(object sender, EventArgs e)//页面加载方法 { }
protected void user_GridView_RowDeleting(object sender, GridViewDeleteEventArgs e)//删除方法 { }
protected void querybtn_Click(object sender, EventArgs e)//查询方法 { }
protected void resetbtn_Click(object sender, EventArgs e)//重置方法 { }
protected void gobackbtn_Click(object sender, EventArgs e)//返回方法
{ }
protected void user_GridView_RowDataBound(object sender, GridViewRowEventArgs e) { } }
5.3 将持久性数据对象映射到数据库
说明:C#中的string 类型映射为SQL Server2000中的varchar类型 5.3.1管理员信息表映射为SQL Server中的user_tb.
- 21 -
酒店餐饮管理系统
5.3.2.菜谱信息表映射为SQL Server中的cp_tb.
5.3.3 订单信息表映射为SQL Server中的dd_tb.
.
5.3.4 餐车信息表映射为SQL Server中的cc_tb.
- 22 -
大理学院学士学位论文
5.4 将属性、方法映射到编程环境中
5.4.1公共类DB_gg.cs类,提供一些主要的方法 (1)建立数据库连接字符串方法 方法名:DB_gg() 返回类型:void 方法的可见性:public 参数列表为空 具体的方法描述如下:
public DB_gg()
{
con = new SqlConnection(\"Data Source=Localhost;Initial Catalog=Hotel;Integrated
Security=True\"); }
(2)打开数据库的连接方法,返回结构是SQL Connection对象 方法名:getcon() 返回类型:SqlConnection 方法的可见性:public 参数列表为空 具体的方法描述如下:
public SqlConnection getcon() {
if (con.State == ConnectionState.Closed) con.Open(); return con; }
(3)关闭数据库的连接方法,返回结构是void对象 方法名:clear() 返回类型:void 方法的可见性:public 参数列表为空 具体的方法描述如下:
public void clear() {
if (con.State == ConnectionState.Open)
- 23 -
酒店餐饮管理系统
con.Close(); }
(4) 执行sql语句方法,返回结构是bool对象 方法名:excutesql(string strCom) 返回类型:bool 方法的可见性:public 参数列表类型:string 具体的方法描述如下:
public bool excutesql(string strCom) {
cmd = new SqlCommand(strCom, con); try {
cmd.ExecuteNonQuery(); return true; } catch {
return false; } finally {
con.Close(); } }
(4) 返回SqlDataReader类型的数据方法,返回结构是SqlDataReader对象 方法名:executeread(string strCom) 返回类型:SqlDataReader 方法的可见性:public 参数列表类型:string 具体的方法描述如下:
public SqlDataReader executeread(string strCom) {
SqlCommand cmd = new SqlCommand(strCom,con); SqlDataReader dr = cmd.ExecuteReader();
- 24 -
大理学院学士学位论文
return dr; dr.Close(); }
5.4.2公共类checkcode.cs类,提供一些主要的方法 (1) 生成验证图片的方法 方法名:DrawImage() 返回类型: void 方法的可见性:public 参数列表为空 具体的方法描述如下:
public static void DrawImage() {
checkcode img = new checkcode();
HttpContext.Current.Session[\"CheckCode\"] = img.RndNum(4);
img.checkCodes(HttpContext.Current.Session[\"CheckCode\"].ToString());
}
(2) 生成验证字符的方法
方法名:checkCodes(string checkCode) 返回类型: void 方法的可见性:public 参数列表类型: string 具体的方法描述如下:
private void checkCodes(string checkCode) {
int iwidth = (int)(checkCode.Length * 13);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 23); Graphics g = Graphics.FromImage(image); g.Clear(Color.White);
Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; //定义颜色
string[] font = { \"Verdana\", \"Microsoft Sans Serif\", \"Comic Sans MS\", \"Arial\", \"宋体\" }; Random rand = new Random();//定义字体 for (int i = 0; i < 50; i++) //随机输出噪点 {
int x = rand.Next(image.Width);
- 25 -
酒店餐饮管理系统
int y = rand.Next(image.Height);
g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1); }
for (int i = 0; i < checkCode.Length; i++) //输出不同字体和颜色的验证码字符 {
int cindex = rand.Next(7); int findex = rand.Next(5);
Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold); Brush b = new System.Drawing.SolidBrush(c[cindex]); int ii = 4;
if ((i + 1) % 2 == 0) {
ii = 2; }
g.DrawString(checkCode.Substring(i, 1), f, b, 3 + (i * 12), ii); }
g.DrawRectangle(new Pen(Color.Black, 0), 0, 0, image.Width - 1, image.Height - 1); //画一个边框
System.IO.MemoryStream ms = new System.IO.MemoryStream(); //输出到浏览器 image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = \"image/Jpeg\"; HttpContext.Current.Response.BinaryWrite(ms.ToArray()); g.Dispose(); image.Dispose();
}
(3) 生成验证字符个数的方法 方法名:RndNum(int VcodeNum) 返回类型:string 方法的可见性:private 参数列表类型: int 具体的方法描述如下:
private string RndNum(int VcodeNum) {
string Vchar = \"0,1,2,3,4,5,6,7,8,9\";
- 26 -
大理学院学士学位论文
string[] VcArray = Vchar.Split(',');
string VNum = \"\"; //由于字符串很短,就不用StringBuilder了 int temp = -1; //记录上次随机数值,尽量避免生产几个一样的随机数
Random rand = new Random(); //采用一个简单的算法以保证生成随机数的不同 for (int i = 1; i < VcodeNum + 1; i++) {
if (temp != -1) {
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks)); }
int t = rand.Next(VcArray.Length); if (temp != -1 && temp == t) {
return RndNum(VcodeNum); }
temp = t;
VNum += VcArray[t]; }
return VNum; }
5.4.3 图片保存到指定文件夹代码
bool fileOK = false;
string path = Server.MapPath(\"~/client/cpimages/\"); string savepath = path + FileUpload1.FileName; if (FileUpload1.HasFile) {
string fileext = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); string[] allexts ={ \".gif\", \".png\", \".bmp\", \".jpg\" }; for (int i = 0; i < allexts.Length; i++) {
if (fileext == allexts[i]) fileOK = true; } }
FileUpload1.SaveAs(path + FileUpload1.FileName);
- 27 -
酒店餐饮管理系统
第六章 编 程
6.1程序代码说明
由于本系统采用ASP.NET平台和SQL Server数据库,使用C#编程语言,所以程序代码包括两个方面:
(1).页面布局代码(本论文中省略绝大部分布局代码,只列出少数页面布局代码);
(2).功能程序代码(本论文列出大部分主要功能代码)。 6.2程序页面以及功能代码 6.2.1 前台顾客订餐页面 6.2.1.1页面如下:
6.2.1.2功能代码如下:
public partial class client_Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); if (Session[\"cp_tb\"] != null) {
DataTable cp_tb = (DataTable)Session[\"cp_tb\"]; Session[\"cp_tb\"] = cp_tb;
GridView1.DataSource = ((DataTable)Session[\"cp_tb\"]).DefaultView; GridView1.DataBind();
- 28 -
大理学院学士学位论文
db_gg.clear(); }
DateTime now = DateTime.Now; Label3.Text = now.ToString(); getRecord(); }
private void getRecord() //取得数据 {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
string sql = \"SELECT 菜编号,菜名,单价,主料,口味,图片 FROM cp_tb where 类型='热菜' order by 菜编号 desc \";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql, db_gg.getcon()); try {
db_gg.getcon(); da.Fill(ds, \"cp_tb\"); db_gg.clear(); }
catch (SqlException e1) {
Response.Write(e1.ToString()); }
int current = Convert.ToInt32(this.lbl_CurrentPage.Text); //当前页数,初始化为第1页 PagedDataSource ps = new PagedDataSource(); ps.DataSource = ds.Tables[\"cp_tb\"].DefaultView; SqlCommand com = new SqlCommand(sql, db_gg.getcon()); ps.AllowPaging = true;
ps.PageSize = 6; //每页显示的数据的行数 ps.CurrentPageIndex = current - 1;
lbl_count.Text = ps.DataSourceCount.ToString(); //获取记录总数 lbl_allpage.Text = ps.PageCount.ToString(); //获取总页数 if (!IsPostBack) {
for (int i = 1; i < ps.PageCount + 1; i++) {
this.DropDownList1.Items.Add(i.ToString()); }
LinkPrev.Enabled = true; LinkNext.Enabled = true; } try {
- 29 -
酒店餐饮管理系统
DropDownList1.SelectedItem.Text = current.ToString(); DataList1.DataSource = ps; DataList1.DataBind(); } catch { } }
protected void LinkPrev_Click(object sender, EventArgs e)//上一页按钮代码 { try {
if (Convert.ToInt16(lbl_CurrentPage.Text) > 1) {
lbl_CurrentPage.Text = Convert.ToString(Convert.ToInt32(lbl_CurrentPage.Text) - 1);
DropDownList1.SelectedValue = lbl_CurrentPage.Text; getRecord(); } else {
Response.Write(\"\"); } } catch {
Response.Write(\"\"); } }
protected void LinkFirst_Click(object sender, EventArgs e)//首页按钮代码 {
if (lbl_CurrentPage.Text != \"1\") {
lbl_CurrentPage.Text = \"1\"; } else {
Response.Write(\"\"); }
getRecord(); }
- 30 -
大理学院学士学位论文
protected void LinkNext_Click(object sender, EventArgs e)//下一页按钮代码 { try {
lbl_CurrentPage.Text = Convert.ToString(Convert.ToInt32(lbl_CurrentPage.Text) + 1);
DropDownList1.SelectedValue = lbl_CurrentPage.Text; getRecord(); } catch {
Response.Write(\"\");
lbl_CurrentPage.Text = \"1\"; getRecord(); } }
protected void LinkLast_Click(object sender, EventArgs e)//尾页按钮代码 {
if (lbl_CurrentPage.Text.ToString() != lbl_allpage.Text.ToString()) lbl_CurrentPage.Text = lbl_allpage.Text.ToString(); else {
Response.Write(\"\"); }
getRecord(); }
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)//跳转到指定页代码 {
int page = Convert.ToInt16((DropDownList1.SelectedItem.Value)); lbl_CurrentPage.Text = page.ToString(); getRecord(); }
protected void DropDownList_SelectedIndexChanged(object sender, EventArgs e) {
DataListItem item = (sender as DropDownList).NamingContainer as DataListItem; if (item != null) {
int index = item.ItemIndex; } }
protected void Button1_Click(object sender,EventArgs e)
- 31 -
酒店餐饮管理系统
{
if (Session[\"Account\"] != null) {
Button button = (Button)sender;
DataListItem item = (DataListItem)button.Parent; DB_gg db_gg = new DB_gg(); db_gg.getcon();
string ID = this.DataList1.DataKeys[item.ItemIndex].ToString();
String strCom = \"SELECT 菜编号,菜名,单价 FROM cp_tb where 菜编号=\" + ID + \"\"; DataSet myDataSet = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strCom, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); if (Session[\"cp_tb\"] == null) {
Session[\"cp_tb\"] = myDataSet.Tables[\"cp_tb\"]; } else {
DataTable cp_tb = (DataTable)Session[\"cp_tb\"]; cp_tb.Merge(myDataSet.Tables[\"cp_tb\"]); Session[\"cp_tb\"] = cp_tb; }
GridView1.DataSource = ((DataTable)Session[\"cp_tb\"]).DefaultView; GridView1.DataBind(); db_gg.clear(); } else {
Response.Write(\"\"); } }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); }
protected void GridView1_RowDelete(object sender, GridViewDeleteEventArgs e) { }
protected void Button2_Click(object sender, EventArgs e) {
if (Session[\"Account\"] != null)
- 32 -
大理学院学士学位论文
{
if (TextBox3.Text !=\"\" && TextBox2.Text !=\"\") {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
DataSet myDataSet = new DataSet();
String str2 = \"delete from lscc_tb where Account='\" + Session[\"Account\"] + \"'\"; SqlCommand sqlcmd;
sqlcmd = new SqlCommand(str2, db_gg.getcon()); sqlcmd.ExecuteNonQuery(); DataSet ds = new DataSet();
string sqlstr = \"select * from vip_tb where Account='\" + Session[\"Account\"] + \"'\";
SqlCommand cmd = new SqlCommand(sqlstr, db_gg.getcon()); SqlDataAdapter da = new SqlDataAdapter(sqlstr, db_gg.getcon()); da.Fill(ds, \"vip\");
string gkxm = ds.Tables[\"vip\"].Rows[0][\"UserName\"].ToString(); string sfzh = ds.Tables[\"vip\"].Rows[0][\"IDCard\"].ToString();
string sqlstr2 = \"insert into dd_tb (Account,顾客姓名,顾客身份证号,订餐时间,就餐时间,桌数,状态) values ('\" + Session[\"Account\"] + \"','\" + gkxm + \"','\" + sfzh + \"','\" + this.Label3.Text + \"','\" + this.TextBox3.Text + \"','\" + this.TextBox2.Text + \"','未结帐')\"; SqlCommand sqlcmd2 = new SqlCommand(sqlstr2, db_gg.getcon()); bool oo2 = db_gg.excutesql(sqlstr2); DataSet ds1 = new DataSet();
string sql1 = \"select 订单号 from dd_tb where Account='\" + Session[\"Account\"] + \"'and 订餐时间='\" + this.Label3.Text + \"'\";
SqlCommand cmd1 = new SqlCommand(sql1, db_gg.getcon()); SqlDataAdapter da1 = new SqlDataAdapter(sql1, db_gg.getcon()); da1.Fill(ds1, \"dd\");
string ddh = ds1.Tables[\"dd\"].Rows[0][\"订单号\"].ToString(); for (int i = 0; i < GridView1.Rows.Count; i++) {
string cm = GridView1.Rows[i].Cells[1].Text.Trim().ToString(); string dj = GridView1.Rows[i].Cells[2].Text.Trim().ToString();
string sqlstr1 = \"insert into lscc_tb(Account,订单号,菜名,单价) values ('\" + Session[\"Account\"] + \"','\" + ddh + \"','\" + cm + \"','\" + dj + \"')\";
SqlCommand sqlcmd1 = new SqlCommand(sqlstr1, db_gg.getcon()); bool oo1 = db_gg.excutesql(sqlstr1); if (oo1 == true && oo1 == true) {
Response.Write(\"\"); Page_Load(sender, e); }
- 33 -
酒店餐饮管理系统
else {
Response.Write(\"\"); } } } else {
Response.Write(\"\"); } } else {
Response.Write(\"\"); } } }
6.2.2 后台登录页面 3.6.3.2 页面布局如下:
3.6.3.3 功能代码如下:
public partial class server_Login : System.Web.UI.Page
{
- 34 -
大理学院学士学位论文
protected void Page_Load(object sender, EventArgs e) { }
protected void Button1_Click(object sender, EventArgs e) {
string usetxt = this.usrtxt.Text;//用户名 string pass = this.pwdtxt.Text;//密码框
if (usetxt == \"\" && pass == \"\"&&DropDownList1.SelectedValue==\"\") {
this.Response.Write(\"\");
return; }
DB_gg db_gg = new DB_gg(); db_gg.getcon(); try {
SqlCommand cmd = new SqlCommand(\"select * from user_tb where UserName='\" + this.usrtxt.Text.Trim() + \"' and Password='\" + this.pwdtxt.Text.Trim() + \"' and UserType='\"+DropDownList1.SelectedValue+\"'\", db_gg.getcon()); int count = Convert.ToInt32(cmd.ExecuteScalar()); if (count > 0) {
Response.Redirect(\"BMainPage.aspx\"); return; } else {
Response.Write(\"\"); } }
catch (System.Exception) {
Response.Write(\"\"); } finally
{ db_gg.clear();
Session[\"UserType\"] = DropDownList1.SelectedValue; } } }
- 35 -
酒店餐饮管理系统
6.2.3 后台菜谱管理页面 6.2.3.1页面布局如下:
6.2.3.2功能代码如下:
public partial class server_MenuMPage : System.Web.UI.Page {
void Binding() {
DB_gg db_gg = new DB_gg(); db_gg.getcon(); try {
String strCom = \"SELECT * FROM cp_tb where 类型='\" + DropDownList1.SelectedValue + \"'\";
DataSet myDataSet = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strCom, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); //填充DataSet //关闭链接
GridView1.DataSource = myDataSet.Tables[\"cp_tb\"].DefaultView; GridView1.DataBind(); //绑定 DataGrid } catch {
Response.Write(\"\"); } finally {
db_gg.clear(); } }
- 36 -
大理学院学士学位论文
protected void Page_Load(object sender, EventArgs e) {
Binding(); }
protected void ResetButton_Click(object sender, EventArgs e) {
TextBox1.Text = \"\"; }
protected void AddButton_Click(object sender, EventArgs e) {
Response.Redirect(\"AddMenuPage.aspx\", true); }
protected void RowDeleting(object sender, GridViewDeleteEventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
DataSet myDataSet = new DataSet(); try {
String strCom = \"delete from cp_tb where 菜编号=\" + GridView1.DataKeys[e.RowIndex].Value.ToString() + \"\"; SqlCommand sqlcmd;
sqlcmd = new SqlCommand(strCom, db_gg.getcon()); sqlcmd.ExecuteNonQuery();
Response.Write(\"\"); } catch {
Response.Write(\"\"); } finally {
SqlDataAdapter da = new SqlDataAdapter(\"SELECT * FROM cp_tb \", db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); //填充DataSet
GridView1.DataSource = myDataSet.Tables[\"cp_tb\"].DefaultView; GridView1.DataBind();//绑定 DataGrid db_gg.clear(); } }
protected void SelectButton_Click(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon(); try
- 37 -
酒店餐饮管理系统
{
String s0 = \"SELECT * FROM cp_tb where 菜名='\" + TextBox1.Text.Trim() + \"'order by 菜编号\";
String s1 = \"SELECT * FROM cp_tb where 类型='凉菜' order by 菜编号\"; String s2 = \"SELECT * FROM cp_tb where 类型='热菜' order by 菜编号\"; String s3 = \"SELECT * FROM cp_tb where 类型='酒水饮料' order by 菜编号\"; String s4 = \"SELECT * FROM cp_tb where 类型='点心' order by 菜编号\"; String s5 = \"SELECT * FROM cp_tb where 类型='汤品' order by 菜编号\"; DataSet myDataSet = new DataSet(); if (DropDownList1.SelectedIndex == 1) {
SqlDataAdapter da = new SqlDataAdapter(s1, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); //填充DataSet }
else if (DropDownList1.SelectedIndex == 2) {
SqlDataAdapter da = new SqlDataAdapter(s2, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); //填充DataSet }
else if (DropDownList1.SelectedIndex == 3) {
SqlDataAdapter da = new SqlDataAdapter(s3, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\");//填充DataSet }
else if (DropDownList1.SelectedIndex == 4) {
SqlDataAdapter da = new SqlDataAdapter(s4, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); //填充DataSet }
else if (DropDownList1.SelectedIndex == 5) {
SqlDataAdapter da = new SqlDataAdapter(s5, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); //填充DataSet }
else if (DropDownList1.SelectedIndex == 0) {
SqlDataAdapter da = new SqlDataAdapter(s0, db_gg.getcon()); da.Fill(myDataSet, \"cp_tb\"); //填充DataSet }
GridView1.DataSource = myDataSet.Tables[\"cp_tb\"].DefaultView; GridView1.DataBind();//绑定 DataGrid } catch {
- 38 -
大理学院学士学位论文
Response.Write(\"\"); } finally {
db_gg.clear(); } }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); } }
6.2.4 新增菜谱页面 6.2.4.1 页面布局如下:
6.2.4.2功能代码如下:
public partial class server_Addmenu : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { }
protected void Button1_Click(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); bool fileOK = false;
string path = Server.MapPath(\"~/client/cpimages/\"); string savepath = path + FileUpload1.FileName; if (FileUpload1.HasFile) {
string fileext = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
- 39 -
酒店餐饮管理系统
string[] allexts ={ \".gif\", \".png\", \".bmp\", \".jpg\" }; for (int i = 0; i < allexts.Length; i++) {
if (fileext == allexts[i]) fileOK = true; } }
if (fileOK) { try {
FileUpload1.SaveAs(path + FileUpload1.FileName); if (TextBox2.Text != \"\" && TextBox3.Text != \"\") {
if (DropDownList1.SelectedIndex == 0) {
string str = \"insert into cp_tb(类型,菜名,单价,主料,口味,图片) values('凉菜','\" + TextBox2.Text + \"','\" + TextBox3.Text + \"','\" + TextBox5.Text + \"','\" + TextBox6.Text + \"','cpimages/\"+ FileUpload1.FileName + \"')\";
SqlCommand com = new SqlCommand(str, db_gg.getcon()); bool employee = db_gg.excutesql(str); if (employee == true) {
Response.Write(\"\");
Page_Load(sender, e); } else {
Response.Write(\"\"); } }
if (DropDownList1.SelectedIndex == 1) {
string str = \"insert into cp_tb(类型,菜名,单价,主料,口味,图片) values('热菜','\" + TextBox2.Text + \"','\" + TextBox3.Text + \"','\" + TextBox5.Text + \"','\" + TextBox6.Text + \"','cpimages/\"+ FileUpload1.FileName + \"')\";
SqlCommand com = new SqlCommand(str, db_gg.getcon()); bool employee = db_gg.excutesql(str); if (employee == true) {
Response.Write(\"\");
- 40 -
大理学院学士学位论文
Page_Load(sender, e); } else {
Response.Write(\"\"); } }
if (DropDownList1.SelectedIndex == 2) {
string str = \"insert into cp_tb(类型,菜名,单价,主料,口味,图片) values('汤品','\" + TextBox2.Text + \"','\" + TextBox3.Text + \"','\" + TextBox5.Text + \"','\" + TextBox6.Text + \"','cpimages/\"+ FileUpload1.FileName + \"')\";
SqlCommand com = new SqlCommand(str, db_gg.getcon()); bool employee = db_gg.excutesql(str); if (employee == true) {
Response.Write(\"\");
Page_Load(sender, e); } else {
Response.Write(\"\"); } }
if (DropDownList1.SelectedIndex == 3) {
string str = \"insert into cp_tb(类型,菜名,单价,主料,口味,图片) values('酒水饮料','\" + TextBox2.Text + \"','\" + TextBox3.Text + \"','\" + TextBox5.Text + \"','\" + TextBox6.Text + \"','cpimages/\"+ FileUpload1.FileName + \"')\";
SqlCommand com = new SqlCommand(str, db_gg.getcon()); bool employee = db_gg.excutesql(str); if (employee == true) {
Response.Write(\"\");
Page_Load(sender, e); } else {
Response.Write(\"\");
- 41 -
酒店餐饮管理系统
} }
if (DropDownList1.SelectedIndex == 4) {
string str = \"insert into cp_tb(类型,菜名,单价,主料,口味,图片) values('点心','\" + TextBox2.Text + \"','\" + TextBox3.Text + \"','\" + TextBox5.Text + \"','\" + TextBox6.Text + \"','cpimages/\"+ FileUpload1.FileName + \"')\";
SqlCommand com = new SqlCommand(str, db_gg.getcon()); bool employee = db_gg.excutesql(str); if (employee == true) {
Response.Write(\"\");
Page_Load(sender, e); } else {
Response.Write(\"\"); } } } } catch { } finally {
db_gg.clear(); } } else
{ Response.Write(\"\"); } }
protected void Button2_Click(object sender, EventArgs e) {
TextBox2.Text = \"\"; TextBox3.Text = \"\"; TextBox5.Text = \"\"; TextBox6.Text = \"\"; }
- 42 -
大理学院学士学位论文
protected void Button3_Click(object sender, EventArgs e) {
Response.Redirect(\"MenuMPage.aspx\"); } }
6.2.5 编辑菜谱页面 6.2.5.1页面布局如下:
6.2.5.2 功能代码如下:
public partial class server_EditPage : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon(); try {
string strCom = \"select * from cp_tb where 菜编号=\" + Request.QueryString[\"菜编号\"];
db_gg.executeread(strCom);
db_gg.getdataset(strCom, \"cp_tb\");
DataRowView view = db_gg.getdataset(strCom, \"cp_tb\").Tables[\"cp_tb\"].DefaultView[0]; if (Page.IsPostBack == false) {
db_gg.getcon();
db_gg.executeread(strCom); db_gg.getdataset(strCom, \"cp_tb\"); DataRowView row = db_gg.getdataset(strCom, \"cp_tb\").Tables[\"cp_tb\"].DefaultView[0];
this.TextBox1.Text = Convert.ToString(row[\"菜编号\"]); this.TextBox2.Text = Convert.ToString(row[\"菜名\"]);
- 43 -
酒店餐饮管理系统
this.TextBox3.Text = Convert.ToString(row[\"单价\"]); this.TextBox4.Text = Convert.ToString(row[\"主料\"]);
this.TextBox5.Text = Convert.ToString(row[\"口味\"]); } } catch {
Response.Write(\"\"); } finally {
db_gg.clear(); } }
protected void Button1_Click(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
DataSet myDataSet = new DataSet(); bool fileOK = false;
string path = Server.MapPath(\"~/client/cpimages/\"); string savepath = path + FileUpload1.FileName; if (FileUpload1.HasFile) {
string fileext = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); string[] allexts ={ \".gif\", \".png\", \".bmp\", \".jpg\" }; for (int i = 0; i < allexts.Length; i++) {
if (fileext == allexts[i]) fileOK = true; } }
if (fileOK) {
FileUpload1.SaveAs(path + FileUpload1.FileName);
string strCom = \"update cp_tb set 菜名='\" + TextBox2.Text + \"',单价='\" + TextBox3.Text + \"',主料='\" + TextBox4.Text + \"',口味='\" + TextBox5.Text + \"',图片='cpimages/\" + FileUpload1.FileName + \"' where 菜编号=\" + Request.QueryString[\"菜编号\"]; SqlCommand sqlcmd;
sqlcmd = new SqlCommand(strCom, db_gg.getcon()); bool oo = Convert.ToBoolean(sqlcmd.ExecuteNonQuery()); DataBind(); if (oo == true)
- 44 -
大理学院学士学位论文
{
Response.Write(\"\"); Page_Load(sender, e); } else {
Response.Write(\"\"); } } else {
string strCom = \"update cp_tb set 菜名='\" + TextBox2.Text + \"',单价='\" +
TextBox3.Text + \"',主料='\" + TextBox4.Text + \"',口味='\" + TextBox5.Text + \"' where 菜编号=\" + Request.QueryString[\"菜编号\"]; SqlCommand sqlcmd;
sqlcmd = new SqlCommand(strCom, db_gg.getcon()); bool oo = Convert.ToBoolean(sqlcmd.ExecuteNonQuery()); DataBind(); if (oo == true) {
Response.Write(\"\"); Page_Load(sender, e); } else {
Response.Write(\"\"); } } }
protected void Button2_Click(object sender, EventArgs e) {
this.TextBox2.Text = \"\"; this.TextBox3.Text = \"\"; this.TextBox4.Text = \"\"; this.TextBox5.Text = \"\"; }
protected void Button3_Click(object sender, EventArgs e) {
Response.Redirect(\"MenuMPage.aspx\"); }
- 45 -
酒店餐饮管理系统
}
6.2.6 订单管理页面 6.2.6.1 页面布局如下:
6.2.6.2 功能代码如下:
public partial class server_OrderMPage : System.Web.UI.Page {
void Binding() {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
String strCom = \"SELECT * FROM dd_tb \"; DataSet myDataSet = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strCom, db_gg.getcon()); da.Fill(myDataSet, \"dd_tb\"); //填充DataSet
GridView1.DataSource = myDataSet.Tables[\"dd_tb\"].DefaultView; GridView1.DataBind(); //绑定 DataGrid db_gg.clear(); }
protected void Page_Load(object sender, EventArgs e) {
Title = \"订单管理页面\"; Binding(); }
protected void Button1_Click(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
String s = \"SELECT * FROM dd_tb where 订单号='\" + TextBox1.Text.Trim() + \"' Or 顾客姓名='\"+TextBox2.Text.Trim()+\"' \";
DataSet myDataSet = new DataSet();
- 46 -
大理学院学士学位论文
SqlDataAdapter da = new SqlDataAdapter(s, db_gg.getcon()); da.Fill(myDataSet, \"dd_tb\"); //填充DataSet
GridView1.DataSource = myDataSet.Tables[\"dd_tb\"].DefaultView; GridView1.DataBind(); //绑定 DataGrid }
protected void Button2_Click(object sender, EventArgs e) {
Response.Redirect(\"AddOrderPage.aspx\",true); }
protected void RowDeleting(object sender, GridViewDeleteEventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon(); try {
DataSet ds = new DataSet();
string sqlstr = \"delete from dd_tb where 订单号=\" + GridView1.DataKeys[e.RowIndex].Value.ToString() + \"\"; SqlCommand sqlcmd;
sqlcmd = new SqlCommand(sqlstr, db_gg.getcon()); sqlcmd.ExecuteNonQuery();
Response.Write(\"\"); SqlDataAdapter da = new SqlDataAdapter(\"SELECT * FROM dd_tb \", db_gg.getcon()); DataSet myDataSet = new DataSet();
da.Fill(myDataSet, \"dd_tb\"); //填充DataSet
GridView1.DataSource = myDataSet.Tables[\"dd_tb\"].DefaultView; GridView1.DataBind(); //绑定 DataGrid } catch {
Response.Write(\"\"); } finally {
db_gg.clear(); //关闭链接 } }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); } }
- 47 -
酒店餐饮管理系统
6.2.7 详细订单页面 6.2.7.1 页面布局如下:
6.2.7.2 功能代码如下:
public partial class client_detailorderPage : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon(); try {
string strCom = \"select * from dd_tb where 订单号=\" + Request.QueryString[\"订单号\"]; db_gg.executeread(strCom);
db_gg.getdataset(strCom, \"dd_tb\");
DataRowView view = db_gg.getdataset(strCom, \"dd_tb\").Tables[\"dd_tb\"].DefaultView[0]; if (Page.IsPostBack == false) {
db_gg.getcon();
db_gg.executeread(strCom); db_gg.getdataset(strCom, \"dd_tb\"); DataRowView row = db_gg.getdataset(strCom, \"dd_tb\").Tables[\"dd_tb\"].DefaultView[0];
this.TextBox1.Text = Convert.ToString(row[\"订单号\"]); this.TextBox2.Text = Convert.ToString(row[\"Account\"]); this.TextBox3.Text = Convert.ToString(row[\"顾客姓名\"]); this.TextBox4.Text = Convert.ToString(row[\"顾客身份证号\"]); this.TextBox5.Text = Convert.ToString(row[\"订餐时间\"]); this.TextBox6.Text = Convert.ToString(row[\"就餐时间\"]); this.TextBox7.Text = Convert.ToString(row[\"桌数\"]); this.TextBox8.Text = Convert.ToString(row[\"总金额\"]); this.TextBox9.Text = Convert.ToString(row[\"预付金额\"]); this.TextBox10.Text = Convert.ToString(row[\"状态\"]);
- 48 -
大理学院学士学位论文
}
db_gg.getcon();
String strCom1 = \"SELECT * FROM cc_tb where 订单号=\" + Request.QueryString[\"订单号\"];
DataSet myDataSet = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strCom1, db_gg.getcon()); da.Fill(myDataSet, \"cc_tb\"); //填充DataSet
GridView1.DataSource = myDataSet.Tables[\"cc_tb\"].DefaultView; GridView1.DataBind(); //绑定 DataGrid } catch {
Response.Write(\"\"); } finally {
db_gg.clear(); //关闭链接 } }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); } }
6.2.8 用户管理页面 6.2.8.1页面布局如下:
- 49 -
酒店餐饮管理系统
6.2.8.2 功能代码如下:
public partial class server_UMPage : System.Web.UI.Page {
void Binding() {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
string strCom = \"select * from user_tb order by UID desc\"; DataSet dataset = new DataSet();
SqlDataAdapter dataadapter = new SqlDataAdapter(strCom, db_gg.getcon()); //填充DataSet
dataadapter.Fill(dataset, \"user_tb\");
user_GridView.DataSource = dataset.Tables[\"user_tb\"].DefaultView; user_GridView.DataBind();//绑定 GridView }
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
DataBind(); }
DB_gg db_gg = new DB_gg(); db_gg.getcon();
string strCom = \"select * from user_tb order by UID desc\"; DataSet dataset = new DataSet();
SqlDataAdapter dataadapter = new SqlDataAdapter(strCom, db_gg.getcon()); dataadapter.Fill(dataset, \"user_tb\");//填充DataSet
user_GridView.DataSource = dataset.Tables[\"user_tb\"].DefaultView; user_GridView.DataBind();//绑定 GridView }
protected void user_GridView_PageIndexChanging(object sender, GridViewPageEventArgs e) {
user_GridView.PageIndex = e.NewPageIndex; user_GridView.DataBind(); }
protected void user_GridView_RowDeleting(object sender, GridViewDeleteEventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
DataSet dataset = new DataSet(); try {
string sqlstr = \"delete from user_tb where UID=\" + user_GridView.DataKeys[e.RowIndex][\"UID\"].ToString() + \"\";
- 50 -
大理学院学士学位论文
SqlCommand sqlcmd;
sqlcmd = new SqlCommand(sqlstr, db_gg.getcon()); sqlcmd.ExecuteNonQuery(); Binding();
Response.Write(\"\"); } catch {
Response.Write(\"\"); } finally {
db_gg.clear(); } }
protected void querybtn_Click(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
string strCom = \"select * from user_tb where UID='\" + tbxUID.Text + \"'or UserName='\" + tbxUserName.Text + \"' or UserType='\" + UserTypedrop.SelectedValue + \"'\";
DataSet dataset = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strCom, db_gg.getcon()); da.Fill(dataset, \"user_tb\"); //填充DataSet
user_GridView.DataSource = dataset.Tables[\"user_tb\"].DefaultView; user_GridView.DataBind(); //绑定 GridView }
protected void resetbtn_Click(object sender, EventArgs e) {
tbxUID.Text = \"\"; tbxUserName.Text = \"\";
UserTypedrop.SelectedValue = \"请选择\"; }
protected void gobackbtn_Click(object sender, EventArgs e) {
Response.Redirect(\"UMPage.aspx\"); }
protected void user_GridView_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow) {
e.Row.Attributes.Add(\"onmouseover\", \"this.style.backgroundColor='#E6F5FA'\");//鼠标经过时,行背景色变
- 51 -
酒店餐饮管理系统
e.Row.Attributes.Add(\"onmouseout\", \"this.style.backgroundColor='#FFFFFF'\");//鼠标移出时,行背景色变 } } }
6.2.8 增加用户页面 6.2.8.1 页面布局如下:
6.2.8.2功能代码如下:
public partial class server_AddUPage : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { }
protected void add_Click(object sender, EventArgs e) {
if (UserNametbx.Text != \"\" && Passwordtbx.Text != \"\" && addUserTypedrop.SelectedValue != \"\") {
string str = \"insert into user_tb(UserName,Password,UserType) values('\" + UserNametbx.Text + \"','\" + Passwordtbx.Text + \"','\" + addUserTypedrop.SelectedValue + \"')\"; DB_gg db_gg = new DB_gg();
SqlCommand com = new SqlCommand(str, db_gg.getcon()); bool user= db_gg.excutesql(str); if (user== true) {
Response.Write(\"\"); Page_Load(sender, e); }
- 52 -
大理学院学士学位论文
else {
Response.Write(\"\"); } } else {
Response.Write(\"\"); } }
protected void reset_Click(object sender, EventArgs e) {
this.UserNametbx.Text = \"\"; this.Passwordtbx.Text = \"\";
this.addUserTypedrop.SelectedValue = \"\"; }
protected void back_Click(object sender, EventArgs e) {
Response.Redirect(\"UMPage.aspx\"); } }
6.2.9 编辑用户页面 6.2.9.1页面布局如下:
6.2.9.2 功能代码如下:
public partial class server_UpdateMPage : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e)
- 53 -
酒店餐饮管理系统
{
DB_gg db_gg = new DB_gg(); db_gg.getcon(); try {
string strCom = \"select * from user_tb where UID=\" + Request.QueryString[\"UID\"]; db_gg.executeread(strCom);
db_gg.getdataset(strCom, \"user_tb\"); DataRowView row = db_gg.getdataset(strCom, \"user_tb\").Tables[\"user_tb\"].DefaultView[0]; if (!IsPostBack) {
db_gg.getcon();
db_gg.executeread(strCom);
db_gg.getdataset(strCom, \"user_tb\"); DataRowView view = db_gg.getdataset(strCom, \"user_tb\").Tables[\"user_tb\"].DefaultView[0];
this.upUserNametbx.Text = Convert.ToString(row[\"UserName\"]); this.upPasswordtbx.Text = Convert.ToString(row[\"Password\"]); this.upTypetbx.Text = Convert.ToString(row[\"Type\"]); } } catch {
Response.Write(\"\"); } finally {
db_gg.clear(); } }
protected void save_Click(object sender, EventArgs e) {
DB_gg db_gg = new DB_gg(); db_gg.getcon();
DataSet dataset = new DataSet(); try {
string strCom = \"update user_tb set UserName='\" + upUserNametbx.Text + \"',Password='\" + upPasswordtbx.Text + \"'Type='\" + upTypetbx.Text + \"' where UID=\" + Request.QueryString[\"UID\"]; SqlCommand sqlcmd;
sqlcmd = new SqlCommand(strCom, db_gg.getcon()); sqlcmd.ExecuteNonQuery();
- 54 -
大理学院学士学位论文
DataBind();
Response.Write(\"\"); } catch {
Response.Write(\"\"); } finally {
db_gg.clear(); } }
protected void back_Click(object sender, EventArgs e) {
Page.Response.Redirect(\"UMPage.aspx\"); } }
- 55 -
酒店餐饮管理系统
第七章 测 试
7.1测试用例编写的目的
为检验系统的性能而进行的一种测试,主要是检验其系统的正确性,以及
期望系统能具有一定容错能力,对一些用户的不当输入能够给出温馨的提示,而不是莫名其妙的停止等,总之,实现我们设计期望的一个重要环节。
7.2 主要的测试项目用列
7.2.1 顾客前台订餐测试用例 测试用例名称: 顾客前台订餐 测试类型: 用例类型: 前置条件: 输入数据: 功能性测试 基本事件 顾客已经登录网站 只需要输入就餐时间及选择菜品 1. 选择不同菜系点击加入餐车按钮将所选菜加入餐车; 执行步骤: 2. 输入就餐时间和桌数; 3.单击“提交”按钮 4.系统将订餐信息插入数据库。 预计输出: 测试结果: 执行步骤4之后,返回确认订单页面。 测试结果和预期符合 用例测试结果截图图7-1如下:
第一步,先登录 第三步,输入就餐时间和桌数 第二步,点击加入餐车 第四步,单击提交 图7-1
- 56 -
大理学院学士学位论文
若要删除,单击删除 若不修改,单击确认
图7-2
图7-3
单击详细信息
图7-4
图7-5
- 57 -
酒店餐饮管理系统
7.2.2 后台菜谱管理用例测试 测试用例名称: 后台菜谱管理 测试类型: 用例类型: 前置条件: 输入数据: 功能性测试 基本事件 管理员已经登录后台 只需要输入查询条件 1.输入查询条件; 2.单击查询按钮; 3.系统根据查询条件查询数据库,并返回记录; 4.若要增加则点新增按钮,弹出增加菜谱页面,输入菜的信息执行步骤: 单击保存; 5.若要编辑则点编辑,弹出菜谱编辑页面,输入要修改的菜信息后单击保存; 6.若要删除则点删除,弹出是否确认删除?选是后删除菜信息。 预计输出: 测试结果: 执行步骤4或5或6之后,返回菜谱管理页面。 测试结果和预期符合 用例测试结果截图图7-6,图7-7,图7-8,图7-9,图7-10,图7-11,图7-12如下: 第一步,.选择第二步,单击查询 查询条件 第四步,若要编辑则点编辑进第三步,若要添加则点新增进入添加页面 入菜谱编辑页面 第五步,若要删除则点删除 图7-6 菜谱管理
- 58 -
大理学院学士学位论文
第一步,输入菜信息 第二步,单击添加保存到数据库
图7-7 新增菜谱
图7-8 保存成功
第一步,输入要第二步,单击保存
图7-9编辑菜谱
修改的菜信息
图7-10 修改成功
- 59 -
酒店餐饮管理系统
图7-11是否确认删除?
图片7-12 删除成功
7.2.3 后台订单管理用例测试 测试用例名称: 后台订单管理 测试类型: 用例类型: 前置条件: 输入数据: 功能性测试 基本事件 管理员已经登录后台 只需要输入查询条件 1.输入查询条件; 2.单击查询按钮; 3.系统根据查询条件查询数据库,并返回记录; 执行步骤: 4.若要查看订单详细信息,则点详细信息,弹出详细订单信息页面; 5.若要删除则点删除,弹出是否确认删除?选是后删除订单信息。 预计输出: 测试结果: 执行步骤4或5之后,返回订单管理页面。 测试结果和预期符合 用例测试结果截图图7-13,图7-14如下: - 60 -
大理学院学士学位论文
第一步,输入查询条件 第二步单击查询按钮 第三步,若要查看详细信息则点详细信息 第四步,若要删除则点删除 图7-13订单管理
图7-14订单详细信息
- 61 -
酒店餐饮管理系统
7.2.4 后台用户管理用例测试 测试用例名称: 后台用户管理 测试类型: 用例类型: 前置条件: 输入数据: 功能性测试 基本事件 管理员已经登录后台 只需要输入查询条件 1.输入查询条件; 2.单击查询按钮; 3.系统根据查询条件查询数据库,并返回记录; 4.若要增加则点新增按钮,弹出增加用户页面,输入用户的执行步骤: 信息单击保存; 5.若要编辑则点编辑,弹出用户编辑页面,输入要修改的用户信息后单击保存; 6.若要删除则点删除,弹出是否确认删除?选是后删除用户信息。 预计输出: 测试结果: 执行步骤4或5或6之后,返回菜谱管理页面。 测试结果和预期符合 用例测试结果截图图7-15,图7-16,图7-17如下: 第二步,单击查询 第一步,输入查询条件 第四步,若要编第三步,若要添加则单击图7-15
- 62 -
辑则点编辑 第五步,若要删除则点删除
大理学院学士学位论文
第一步,输入要添加的用户信息 第二步,单击添加按钮
图7-16
第一步,输入要修改的信息 第二步,单击保存按钮
图7-17
- 63 -
酒店餐饮管理系统
总 结
通过这几个月的努力,在指导老师的指导下,还有小组成员的努力下,酒店餐饮管理系统的开发完成了。在这个系统的开发过程中,我负责的模块是前台顾客订餐,后台管理员登录,后台菜谱管理,后台订单管理,后台用户管理。在开发过程中遇到一些问题,但都在我的努力和小组成员的帮助下解决了。
这次系统的开发,从选题到需求分析、系统设计,再映射到编程环境进行程序设计,再到最后的测试,期间我们都付出了巨大的努力,本次系统开发,虽然工程量不算太大,但也是对我们大学所学知识的考验与实践,最终通过我们的努力,完成了酒店餐饮管理系统的开发。
通过本次系统的开发,我也学会了一个新的开发平台——ASP.NET。同时也加深了对C#语言的学习,使得我的C#编程水平得到了很大的提高。同时我也让我更加清晰地认识了一个软件开发的过程:项目定义→需求获取→分析设计→统一建模→详细设计→软件测试。相信这次在这次系统开发中所学到的一切都会在我以后的工作中给予我巨大的帮助。
- 64 -
大理学院学士学位论文
参考文献
[1] 叶俊民 汪忘珠著;面向对象软件工程 [使用UML、模式与JAVA(第二
版)]清华大学出版社;2006.9
[2] 陆惠恩,陆培恩.软件工程.电子工业出版社.1997.7 [3] 王庆育;软件工程;清华大学出版社;2004.7 [4] Charles C.Caison著 陈君等译;ASP.NET程序员查询词典;中国铁道出
版社;20003.1
[5] 凯际资讯工作室编著;ASP.NET程序员与数据库入门及应用实例;清华
大学出版社; 2004.9
[6] 章立民编著;ASP.NET3.5开发范例精讲精析;北京科海电子出版社;
2009.1
[7] 康际科技编著;ASP.NET行家设计实务;铁道出版社;2002.1
[8] Michael Bowers著 刘申 朱瑜敏 鲁奇译;精通CSS于HTML设计模式;
人民邮电出版社;2008.9
[9] 杨鲲鹏 孟凡琦 等著;ASP.NET+SQL Server动态网站开发;电子工业出
版社;2005.12
[10] 罗斌等编著;ASP.NET2.0数据库开发经典案例;中国水利水电出版社;
2008.1
[11] 陈冠军编著;ASP.NET2.0典型模块设计与实现;人民邮电出版社;2007.6
第2次印刷
[12] 张文仲编著;ASP.NET网络开发技术;人民邮电出版社;2006.3
[13] 徐敏 韩宝玉 刘改;网站前台设计项目实战;北京理工大学出版社;
2009.1
[14] 凯际资讯工作室编著;ASP.NET程序与数据库设计入门及应用实例;清
华大学出版社;2004.9
[15] 张玉平等编著;ASP.NET+SQL组建动态网站;电子工业出版社;2006.3 [16] 全雪云等编著;ASP.NET网页设计应用教程;北京电子工业出版社;
2007.3
[17] (美)Dan Wahlin著;基于XML的ASP.NET开了发;清华大学出版社;2002.7 [18] 王惠刚,王挺 编著;ASP.NET实用培训教程;海洋出版社;2003.7 [19] ASP.NET2.0+SQL SERVER 热门网络开发详解 (江广顺 佘松 编著)人民
邮电出版社 2007.3
[20] WEB2.0动态网站开发——ASP.NET技术与应用 (徐小昕 邹晨 朱慧华
编著 ) 清华大学出版社 2008.9
[21] 柯自聪编著;Ajax开发精要-概念 案例与框架;电子工业出版社;2006.7
第2次印刷
[22] 施伟伟,张蓓 编著;征服Ajax.Dojo.Prototypo.script,aculo.us框架
解析与实例 2007.3
[23] 洪锦魁 刘中宏 蔡锋编著;精通JavaScript;科学出版社;2000.5 [24] 童德利,田娟,谢琪,陈世福.基于B/S模式的构件式酒店管理信息系统的
设计与实现.2003.4
[25] 候炳辉,刘世峰.信息管理系统.信息管理系统分析,2004.5
[26] 明日科技 王小科 梁冰 吕双编著;C#开发典型模块大全;人民邮电出版
- 65 -
酒店餐饮管理系统
社;2009.2
[27] 郑阿奇 主编 刘启芬 顾韵华 编著;SQL SERVER教程;清华大学出版社 [28] 黄维通 编著;SQL Server 2000简明教程;清华大学出版社;2002.3 [29] 李调阳;SQL Server 2000中文标准教程;海洋出版社;2005.3
[30] 龚波,刘砚,田丽韫 等编著;SQL Server 2000教程;北京经希望电子出
版社;2002.7
[31] 刘友霖,张敏华.数据库程序设计.东南大学出版社.1997.2
[32] 王珊主编;数据库与数据库管理系统;电子工业出版社;1995.12 [33] 王珊 萨师煊编;数据库系统概述(第四版);高等教育出版社;2006.5 [34] 刘志成 彭勇等编著;数据库系统原理与应用(SQL Server2000);机械
工业出版社;2007.4
[35] Ian Sommerville.Software Engineering.机械工业出版社(China
Machine Press).2003.4
[36] Steve McConnell.RAPID DEVELOPMENT.机械工业出版社(China Machine
Press).2003.3
[37] Paul Turley,Dan Wood;Beginging Transact-SQL with SQL SERVER 2000
and 2005;Wrox;2007-1
[38] Dejan Sunderic & Tom Woodhead;SQL Server 2000 Stored Procedure
Programming;Osborne/McGraw-Hill;2002-2
[39] J.Naiburg,Robert A.Maksimchuk;UML for batabase Design;Pearson
for Education;2002-1
[40] Wendy Boggs Michael Boggs;Mastering UML with Rational Rose;SYBEX
Inc;2000-3
[41] Scott W.Ambler;The Object Primer.The Application developer’s
Guide to Object Orientation and the UML,Second edition;Cambridge University Press;2003-6
[42] Micheal Blaha,James Rumbaugh;Object-Oriented Modeling and
DesignwithUML;Prentice Hall/Pearson;2006-1
[43] Jacquie Barker,Grant Palmer;Beginging C# Objects:From concepts to
code;Apress;2006-6
[44] David McAmis;Professional Crystal Reports for Visual
Studio.Net;WROX;2003-4
[45] Alan B.Marcovitz著 殷洪玺 刘新元禹莹等译;逻辑设计基础;清华大
学出版社;2006.3
[46] (美)Daryl Kulak Eamonn Guiuey著 韩柯 杨柳青等译;用例通过背景
环境获取需求(原书第2版);机械工业出版社;2004.1
[47] (美)H.M.Deitel P.T.Deitel B.Dualdt L.K.Trees著;励志等译;Web
服务应用教程;机械工业出版社;2004.1
[48] (英)Ian srmmerille Pete Sawyer著 赵文耘 叶思等译;需求工程
Requirements Enginerring A Good Practice Guide;机械工业出版社;2003.8
[49] Sami Zahran著;Software ProcessImprovement;机械工业出版社;
2003.4
[50] (美)John D.Musa著;软件可靠性工程Software Reliablity Engineering;
- 66 -
大理学院学士学位论文
机械工业出版社;2003.6
[51] (英)Ian Graham著;面向对象方法原理与实践(英文版 第3版);机
械工业出版社;2003.5
[52] (美)Charles Petzold著 杨涛 王建桥 杨晓云 等译;C#程序设计
Programming in the key of C#;机械工业出版社;2004.4
[53] (美) Stephen R.Schach 著;Cbject.Oriented and Classical software
Enjineering ,Fifth Edition ;2003.4
[54] (美) C.J.Date 著;An Introduction to Database system (seventh
Edition) ;China Machine Press ;2002.1
[55] (美)Petzold,C. 著;C#程序设计;北京机械工业出版社;2004.4 [56] (美) Elmasri,Navathe著;Fundamentals of Database Systems (Fourth
Edition ); 2006.1
[57] 王浩然编著;C#行家设计手册;中国铁道出版社;2002.3
[58] 戚文静 主编;网络安全管理;北京中国水利水电出版社;2003 [59] 陈企盛主编;小商业企业应用会计;北京中国纺织出版社;2007.1 [60] 施涵蕴;餐饮管理;南开大学出版社;1933.11
[61] 刘总路编;旅游饭店厨房成本核算;高等教育出版社;1990.4 [62] 庄玉海 编著;现代旅游饭店全面质量管理;海天出版社;1981.8
[63] 邹统纤 等编著;饭店战略管理.理论前沿与中国的实践;广州广东旅游
出版社;2003.8
[64] 王天佑.酒水销售管理.清华大学出版社.北京交通大学出版社.2008.8 [65] 苏北春,刘纯,任曼殊.餐饮服务与管理.人民邮电出版社.2006.7 [66] 王天佑,周永绎,王晓晓 编著;餐饮职业经理人执业资格培训课程;辽宁
科学技术出版社; 2003.1
[67] 魏洁文主编 吴俊副主编;现代饭店人力资源管理;人民邮电出版社;
2006.7
[68] 苏北春主编 刘纯等副主编;餐饮服务管理;人民邮电出版社;2006.7 [69] 马继刚 田芙蓉主编;餐饮管理实务;云南大学出版社;2006.4 [70] 李勇平著;现代饭店餐饮管理;上海人民出版社;1998.11
[71] 军队职工职业技能鉴定教材委员会;收银员(初级、中级、高级);军事
科学出版社;2000.6
[72] 锦辉ERP推广中心著;ERP进销存软件设计;广东经济出版社;2004.4
- 67 -
酒店餐饮管理系统
致 谢
首先,在这几个月的毕业设计系统开发过程中,我们的指导教师老师,从选题到整个系统开发完成,一直悉心指导我们,帮助我们解决了一些难题,多次询问我们的开发进度,多次对我们进行鼓励,最终完成酒店餐饮管理系统的开发。在毕业论文的编写过程中,杜老师也认真的对我们的毕业论文进行检查并指导我们进行修改,最终完成毕业论文的编写。至此,我们向老师致以崇高的敬意和由衷的感谢!
其次,由于我们是以3个人的小组进行开发,小组成员之间积极讨论与合作,最终保证酒店管理系统开发顺利完成。在开发过程中,项目成员、付出了巨大的努力,在此,感谢你们为本次系统开发所做的一切,感谢你们对我的包容,对我所有的帮助与支持!我也向你们致以由衷的感谢!
再次,我要感谢父母对我学业的支持!
最后,我要感谢大理学院对我的培养,感谢数学与计算机学院全体老师对我的栽培,感谢大理学院为我提供了这么漂亮的学习环境!
- 68 -
因篇幅问题不能全部显示,请点此查看更多更全内容