餐厅点餐系统的设计与实现毕业设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

餐厅点餐系统的设计与实现
一、题目:
餐厅点餐系统的设计与实现
二、指导思想和目的要求:
指导思想:通过对餐厅点餐系统的设计与实现,培养该生深入实际,综合运用所学的基本理论、专业知识和基本技能,提高独立思考、分析问题、解决问题的能力和初步进行科学研究的能力;培养良好的思想品质和探求真理的科学精神,提高该生的综合素质。

目的要求:通过毕业设计、撰写论文等环节,锻炼和提高学生独立分析、思考、解决问题及文档编写等能力。

三、主要技术指标:
语言表达简捷、明快、形象、生动、准确、科学;论文内容符合客观实际,能够令人信服;概念明确,判断恰当,推理连贯;论文的内容之间应有密切的联系,全篇论文形成统一的整体。

论文字数:≥12000字。

四、进度与要求:
6月24日至7月24日调研、起草、修改初稿论文
7月25日至8月15日二稿定稿
8月6日前填写《毕业论文中期检查表》
8月15日至24 论文定稿并将电子版论文上交学习中心
8月30日前将论文纸制版交予学习中心
9月17日至9月29日毕业论文答辩
五、主要参考书及参考资料:
[1] 甘华蓉,餐饮管理与实务,北京,对外经济贸易大学出版社,2009年,109-120页
[2] 苗凤君,局域网技术与组网工程,北京,清华大学出版社,2010年,150-151页
[3] 李大军,POS系统应用,北京,清华大学出版社,2004年, 10-13页
[4] 武仁杰,Web程序设计,北京,中国铁道出版社,2009年, 5-6页
[5] 徐士良,葛兵,计算机软件技术基础,北京,清华大学出版社,2010年 ,25-31页
[6] 彭爱华,刘晖,王盛麟, Windows 7 使用详解,北京,人民邮电出版社,2010年, 2-3页
[7] 钱哨,李挥剑,李继哲,C# WinForm 实践开发教程,北京,水利水电出版社,2010年, 15-18页
[8] 蒋瀚洋,李月军,庞娅娟,SQL Server 2005数据库管理与开发教程,北京,人民邮电出版社,1-8页
[9] Grady Booch,Ivar Jacobson,James,Rumbaugh,The Unified Modeling Language User Guide[M]. Addison-Wesley,1998年,156页
[10] 佩措尔德,Windows程序设计,北京,清华大学出版社,2010年, 245-256页
[11] Bertand Meyer,Object Oriented Software Construction [M].Prentice Hall,1998年,5页
[12] Jim Arlow,Ila Neustadt,UML and the Unified Process:Practical Object-Oriented Analysis and Design[M].Addison Wesley,2002年,95页
[13] 王小科,吕双,C#从入门到精通,北京,清华大学出版社,2008年,3-4页
[14] 陆慧恩,软件工程,北京,人民邮电出版社,2007年,9-10页
[15] 孙涌、现代软件工程、北京,北京希望电子出版社,2002年, 111页
[16] 邓良松,刘海岩,陆丽娜,软件工程,西安,西安电子科技大学出版社,2004年,56-57页
[17] 周苏,王文,软件工程学教程,北京,科学出版社,2002年,74-75页
[18] 王少峰,面向对象技术UML教程,北京,清华大学出版社,2004年,23-50页
学习中心:郑州金水惠文教育培训学校
班级:029909212
专业:软件工程学生:王保国指导教师:孙飞显
摘要
在深入研究中小餐饮企业工作流程的基础上,分析制约餐饮企业工作效率的各种因素,发现影响效率的主要因素是普遍使用手工登记菜谱的现象,本系统运用计算机系统来实现餐饮企业工作流的信息化管理,采用面向对象的开发方法以及C#语言,依靠Visual studio2010作为开发工具,使用Sql Server 2005网络数据库存储数据。

实现了客户点餐、厨师配餐、收银管理、系统设置四大功能,解决餐饮企业中客户点餐速度慢、服务员登记不清晰、厨师配餐漏配、菜谱更新不及时且不直观、会员管理混乱的现象。

关键词:餐厅点餐;面向对象开发方法;C#
目录
摘要 (I)
第一章绪论 (1)
1.1 现实背景和理论背景 (1)
1.2 研究目的和意义 (2)
1.2.1 目的 (2)
1.2.2意义 (3)
第二章系统需求分析 (4)
1.引言 (4)
1.1编写目的 (4)
1.2项目背景 (4)
2.术语定义 (5)
3.参考资料..................................................................................... 错误!未定义书签。

4.目前餐饮企业工作流程 (5)
5.所建议系统的工作流程 (6)
6.产品功能 (6)
7.软件需求描述 (7)
8.系统用例图 (8)
9.软件接口 (9)
第三章系统设计 (10)
1.系统部署图设计 (10)
2.数据库设计 (11)
2.1命名规范 (11)
2.2安全设计 (11)
2.3概念设计 (11)
2.4物理设计 (13)
2.5函数设计 (15)
3.系统模块设计 (16)
5.客户端系统目录结构 (18)
6.系统类图设计 (18)
7.主要模块设计 (22)
7.1登录模块设计 (22)
7.2点餐模块设计 (24)
第四章系统实现 (27)
1:系统编码规范 (27)
1.1:类型的命名 (27)
1.2、方法和属性的命名 (28)
1.3、变量和常数 (28)
1.4、标签 (29)
1.5、名字空间 (29)
1.6、注释 (30)
2:模块功能实现 (30)
2.1登录模块实现 (30)
2.2点餐模块主要代码 (31)
2.3收银模块代码实现 (32)
2.4配餐模块代码实现 (34)
2.5.系统管理模块实现 (34)
第五章系统测试 (36)
1 简介 (36)
1.1编写目的.................................................................................. 错误!未定义书签。

1.2项目背景.................................................................................. 错误!未定义书签。

1.3系统简介.................................................................................. 错误!未定义书签。

1.4术语和缩写词.......................................................................... 错误!未定义书签。

1.5参考资料.................................................................................. 错误!未定义书签。

2 测试概要 (36)
2.1测试用例设计.......................................................................... 错误!未定义书签。

2.3测试方法(和工具) ................................................................... 错误!未定义书签。

3 测试结果及缺陷分析................................................................ 错误!未定义书签。

3.1测试执行情况与记录.............................................................. 错误!未定义书签。

结论 (43)
文献 (44)
致谢 (46)
第一章绪论
1.1 现实背景和理论背景
1.1.1现实背景
我国的餐饮市场经过30多年的改革开放及发展,可以说我国正迎来一个餐饮业大发展的时期,市场潜在力量巨大,远景很是广阔。

根据中国烹饪协会发布的2009年度餐饮业发展报告显示,即便在经济遭受重创的2009年,全社会餐饮业零售额达依然到17998亿元,同比增长16.8%。

其中,每月的零售额均超过1300亿元,增长率稳定在14.4%至21.6%。

在各类消费性支出中增幅居前,仅次于交通和通信支出。

并且预计2012年餐饮市场还将继续增长,营业额也将达到20000亿元。

与此同时,我国餐饮业发展的质量和内涵也发生了重大变化。

行业的经营领域和市场空间不断拓宽,经营档次和企业管理水平不断提高,经营业态日趋丰富,投资主体和消费需求多元化特点更加突出,网点数量和人员队伍继续扩大;餐饮市场更加繁荣,消费的个性化和特色化的趋势明显,追求健康营养和连锁规模发展成为主题。

集团化、品牌化、产业化和国际化的发展步伐加快,餐饮现代化的进程不断推进。

近几年来,中国餐饮业的发展一直保持强劲快速增长同时,也看到目前餐饮行业普遍存在的问题。

餐饮企业的发展一直处于自我摸索、自我运作、自我积累和自我完善为主的状态,利润低、承载重、支撑小、发展难的特点突出。

餐饮企业在产品标准化技术设备开发、连锁管理体系的建立、专业人才的培养、吸纳资本投入、理论指导和信息交流等方面的条件十分不足,存在着技术开发与设备配套难、管理与人才难、配送渠道与发展资金难、沟通交流与合作难等深层次因素的制约,行业平台和基础支持力量不强,对企业发展产生较大的影响。

1.2 研究目的和意义
1.2.1 目的
在我们这个“食文化”高度发达的国度里,餐饮业毋庸置疑地成为第一大传统产业。

然而,正是这历史悠久、规模庞大的产业,却也是信息化程度最慢和最低的产业之一。

至今为止,绝大多数餐饮企业的经营方式仍然停留在“一张纸、一支笔、经理喊破嗓、员工跑断腿”的境地;而会计工作,也仍然是以一支笔或一个算盘,或最好的情况下一个计算器进行加减乘除,其本质仍然是以人脑计算为基础,不但工作量巨大,而且极易出错。

笔者曾经见过生意极好的大排档,服务员进进出出地飞奔于户外桌台、大堂吧台和厨房之间,而经理则用计算器算得满头大汗的场景,蔚为壮观。

且不说这种日复一日的重复、单调的劳动意义何在,单就消费计算方面的出错而引发的与客户之间的矛盾纠纷,就不可胜计。

其实在人类文明已经进入电子信息的时代,绝大多数重复、单调、可程式化的工作都已经可以交由计算机来完成。

面对复杂和庞大的计算任务,计算机在效率和准确度方面是人脑所不能望其项背的。

作为传统产业的餐饮业,同其他很多传统产业一样,同样可以引入信息化改造。

餐饮业的信息化改造内容,主要有:由传统的笔和纸点餐,改用电子点餐;由传统的人工计算、统计、管理,改用电脑进行计算、统计和管理;将现代的电子技术、无线技术、计算机技术和网络技术引入到餐饮行业中来,替代部分人工操作,加快餐饮企业的运转效率,提升餐饮企业的管理水平,使餐饮企业运作更规范、更科学、更高效。

在餐饮企业的信息化改造当中,无线点餐(点菜)系统,成为其核心内容,也是餐饮企业进行信息化改造的必由之路。

因此本论文研究的目的在于通过餐饮企业的信息化改造暨利用无线技术,替代传统的纸和笔进行电子点餐(点菜)操作,实现远距离地进行信息即时传递。

当然,无线点餐(点菜)系统不只是可以进行点餐操作,同时通过配套的餐饮管理软件,还可以实现强大的统计和管理功能,使餐饮企业真正实现信息化。

1.2.2意义
能够有效地的提升餐饮企业的档次和管理水平,做到科学管理、科学决策、高效运转、降低成本,进行信息化是必由之路。

而采用无线点餐(点菜)系统取代传统的手工点餐,采用餐饮管理软件取代传统的人工统计和粗放型管理又是信息化当中的核心内容。

餐饮企业引进一套无线点餐(点菜)系统,成本大约在一万元左右(视配置情况而不同),大约相当于一个服务员一年的工资,但带来的便利性和管理水平的升级则是无与伦比的。

无线点餐(点菜)系统所带来的运营效率的大幅度提高和人力成本的节约,远超其投资成本,对于餐饮企业信息化,可以说是不二的选择。

第二章系统需求分析
2.1引言
2.1.1编写目的
本文档是餐厅点餐系统的项目需求说明书,对餐厅点餐系统的进行简要回顾,分析当前的业务流程,总结此类管理系统的基本特点以及总体功能,尽可能完整的概括和提取出全部需求。

本文档对项目开发人员、设计人员及系统实施人员具有很重要的指导意义。

2.1.2项目背景
中国是举世闻名的美食大国,拥有五千年的饮食文化和巨大的餐饮市场,随着人民生活水平和生活方式的转变,餐饮业具有巨大的投资市场,被称为中国的黄金产业,但同样也应看到,餐饮业不仅面临着巨大的发展机遇,也面临着前所未有的挑战和考验。

餐饮业的不断发展,在经营管理上也逐步向电子化迈进,通过电脑信息系统管理餐饮业的内部事务,使得作业更加简单化、高效。

以财务为中心,减轻一线操作人员的劳动强度,节省营业人员的交班时间,加强财务审核管理。

提供多种点菜、结算、统计报表功能,提供分厨房直接打印前台点菜数据。

在餐饮经营中,传统的纸制作业流程无法满足现代客户在信息娱乐及服务安保等方面的要求。

而此系统的使用,使餐厅管理者便捷的进行经营娱乐的管理,大大增加的各店成本控制及销售额
2.2术语定义
所谓”翻台率【1】”是指在某期间里,指餐桌座位坐满及餐桌空荡的速度。

一个高翻台率意味更多用餐者吃了并且走了,而一个低的翻台率意味同样用餐者是在一段长时间里使用餐桌,或者餐桌座位是空的。

2.3目前餐饮企业工作流程
目前的中小餐饮企业采用最多的手工记账形式,其业务流程如图2.1所示
图2.1 手工业务流程分析
流程图简介:顾客到达餐厅有引领员引导到座位后,承上菜谱并登记客人所点食品,完毕后唱菜谱并由客人确认,征得客人同意后交给后台厨师及配餐人员,配餐人员根据大厅服务员提交的菜谱为客人配齐所有饮料、酒水、甜点等食物,厨师根据大厅服务员提供的菜谱按照先凉后热的顺序快速加工出美味可口的食
物交友送餐人员及时送到指定的餐桌。

客人用餐完毕后有服务员或者客户到收银处办理结算手续,客人如有会员卡的话,收银员应给予相应的优惠,结算完毕后有引领员送客人出餐厅,这样的工作方式当客流量增加的时候,必然会出现争抢菜谱,上错菜,漏上菜、忘记上菜以及计算失误等现象,轻则引起客户的不满,重则引起纠纷,因此有必要采用新的工作模式,来避免上述情况的发生。

2.5所建议系统的工作流程
基于传统餐饮企业手工操作所带来的种种弊端,一种新的利用计算机来管理信息的系统---餐厅点餐系统也就应运而生,那么该系统的工作流程如图2.2所示
图2.2自动化的点餐系统
2.6系统功能模块
根据所建议系统的业务流程图,分析出新系统的功能模块图如2.3所示
图2.3功能模块图
结合上述功能模块图,系统需求描述如下:
2.7软件需求分析
1.用户登陆
系统必须提供用户名及密码、角色的验证功能,并且根据不同的角色打开不同的子系统。

2.客户点餐
客户根据不同的服务类别(特价、凉菜、热菜、汤、酒水、饮料)选择不同的食物及数量,系统根据不同的食物计算出总价格,方便客人控制总价格,如果输入错误系统提供删除的功能。

.
3.配餐管理
厨师根据最新的配餐信息,按照时间先后顺序配置食品,完成后提交给结算管理子系统中
4.结算管理
系统根据桌号自动计算出总价格,如果由会员卡系统自动验证卡号及会员身份并计算出相应的折扣及实付金额。

5.系统管理
系统提供上传菜谱图片、修改菜谱价格、注册用户、删除用户、会员注册、会员管理以及浏览客户留言、客户满意度统计功能
2.8系统用例图
系统用例【9】图是按照场景的形式对系统的功能做清晰地设计,具体用例有:登陆用例图2.4所示,点餐用例图2.5所示,配餐用例图2.6所示,结账用例图2.7所示,管理用例图2.8所示
图2.4登陆用例
图2.5点餐用例
图2.6配餐用例
图2.7结算用例
图2.8系统设置用例2.9软件接口
Windows操作系统所提供的各种API【10】;
第三章系统设计
3.1系统部署图设计
系统部署图是指系统的物理结构和软件结构在空间上的部署,本系统采用流行的C/S【11】结构,该结构是基于客户端与服务器的结构,原因是本系统的应用场景是中小规模的餐厅及餐馆,目前一期工程中不提供Web服务,仅限于企业内部办公室用,因此采用C/S结构是科学的也是合理的。

具体结构见图3.1所示
图3.1系统部署图
上图中服务器是整个系统运行的基础,负责所有客户端的数据传输与存储,采用SqlServer2005服务器,网络传输采用的是WiFi(802.11)技术,客户端采用IPAD作为终端显示,但是目前需要安装虚拟Win7系统
3.2数据库设计
3.2.1命名规范
1:数据库名称以db开头
2:函数以F_开头
3:数据库表以T_开头
3.2.2安全设计
1:创建数据库登录账号dining
2:创建数据库db_dining的所有者用户Dining
3:配置账号映射:dining- dining
3.2.3概念设计
经过对系统的需求分析,发现系统中有以下实体:如图3.2---3.8所示以及他们之间的关系图3.9所示
图3.2用户实体-属性
图3.3意见实体-属性图3.4会员实体-属性图3.5餐单实体-属性图3.6餐单明细实体-属性图3.7菜谱实体-属性
图3.8实体-关系图
3.2.4物理设计
物理设计是数据库实体的物理实现,下面的图表分别对应概念设计中的每个实体。

1:T_CAIPU表,图3.9所示
图3.9菜谱表
2:T_CanMingXi,图3.10所示
图3.10餐单明细表
3:T_CanDan,图3.11所示
图3.11餐单表4:T_Member,图3.12所示
图3.12会员表5:T_User,图3.13所示
图3.13用户表6:T_YiJian,图3.14所示
图3.14意见表
3.2.5函数设计
1: F_CaiJinEById,图3.15所示
图3.15计算价格函数2: F_CaiMingById,图3.16所示
图3.16查找菜名函数3: F_MemberLeavlByID,图3.17所示
图3.17会员级别函数
4: F_MemberNameByID,图3.18所示
图3.18会员名称函数
3.3系统模块设计
在对系统需求分析的基础上一共设计了八大模块,分别是如下8个模块【11】。

3.3.1系统登录模块
在该模块中主要实现用户身份的验证以及角色的检查,根据用户身份的不同分别登陆到不同的子系统中。

3.3.2系统点餐模块
本模块是系统的主要模块,在该模块中主要实现菜肴以及酒水饮料的点餐等功能,根据食品的分类把界面分为特价、凉菜、热菜、汤类、酒水、饮料不同的区域以及点菜区域。

3.3.3系统配餐模块
本模块面向的对象主要是厨师以及酒水饮料配餐员,实现的功能是按照下餐的时间先后顺序显示订餐列表,厨师按照餐单的详细列表配置不同的食品及其他。

每个餐单完成后系统提交到收银区。

3.3.4系统收银模块
本模块面向的对象主要是收银人员,实现的功能是分别显示配餐完毕后的餐单,客户就餐后提供桌号以及会员卡,系统自动计算出优惠金额以及实付金额,收款后系统自动更新数据库。

3.3.5系统管理模块
本模块面向的对象主要是经理管理人员,实现的功能是有会员管理,菜谱管理、用户管理功能
3.3.4系统架构设计
本系统采用流行的C/S结构,既客户端/服务器端结构,客户端是基于.Net FrameWork平台的应用程序,服务器端是基于Sql Server 2005的数据库存储应用系统,采用面向对象【12】的开发语言C#【13】作为编程语言,使用Visual studio 2010作为开发工具以及应用流行的软件开发模型—瀑布模型【14】
3.5客户端系统目录结构
客户端目录结构按照模块的不同创建不同的文件目录,以便于文件的管理及今后的二次开发,截图如3.19所示
图3.19系统目录
目录结构描述:1:DianCan:客户点餐模块2:PeiCan:食品配餐模块3:JieZhang:收银结账模块4:Manage:系统管理模块5:Images:系统图片
3.6系统类图设计
根据系统中的实体,一共设计6个类,具体见下图3.20所示
图3.20系统类结构图
详细描述如下:
1.T_CaiPu菜谱类,该类中的属性及方法结构如3.21所示
图3.21菜谱类
T_CaiPu类是用来描述系统中的菜谱实体,其中的属性有id(菜谱编号)、c_name(菜谱名称)、c_Price(菜价)、c_type(类别)、c_image(照片)、is_Tejia(是否特价)、isEnable(是否启用)
2.T_User用户类,属性及方法如图
3.22所示
图3.22用户类
T_user类用来描述系统使用者实体,其中的属性有id(记录编号)、userName (用户名)、userPwd(用户密码)、userRole(用户角色)、isEnable(是否启用)
3.T_YiJian(意见类):该类的属性及方法如图3.23所示
图3.23意见类
T_YiJian类是用来描述客户意见的实体,其中的属性有id(意见编号)、
HJ_YJ(环境意见)、FW_YJ(服务意见)、FC_YJ(饭菜意见)、KH_LY(客户留言)
4.T_Member(会员类):该类的属性及方法如图3.24
图3.24会员类
T_Member类是用来描述客户级别的实体,其中的属性有id(会员编号)、member_Name(会员名称)、type_id(会员级别编号)、isEnable(是否启用)
5.T_CanDan(餐单类):该类的属性及方法如图3.25
图3.25餐单类
T_CanDan类是用来描述客户菜单的实体类,其中的属性有id(菜单编号)、desk_HM(桌位号)、xf_je(消费金额)、member_id(会员编号)、isJieZhang(是否结账)、xf_date(消费日期)、state(配餐状态)
6.T_Can_MingXi(餐单明细)类:该类的属性及方法如图3.26所示
图3.26餐单明细类
T_Can_MingXi类是用来描述菜单明细的实体,其中的属性有id(记录编号)、can_id(菜单编号)、cai_id(菜谱编号)、cai_SL(份数)、cai_JE(每类菜的金额)
3.7主要模块设计
3.7.1登录模块设计
登陆模块的功能就是验证用户名及密码是否有效,如果有效则再判断角色编号值(1:服务员角色2:厨师角色3:收银员角色4:管理员角色),根据不同的角色打开不同的窗口,该模块实现的前置条件是设置正确的服务器地址以及服务器处于启动状态,输入输出数据如表3.27所示
数据数据输出类型数据类型约束
用户名输入字符串类型4-10位的字母组成
密码输入字符串类型4-6位的数字组成
表3.27登陆模块输入输出数据
具体实现代码如下所示:
//用户名
string un = this.txt_UserName.Text.Trim();
//密码
string pwd = this.txt_UserPwd.Text.Trim();
//判断用户名及密码是否为空
if (address == "" || un == "" || pwd == "") MessageBox.Show("用户名、密码、地址不能为空"); else
{
//判断用户名是否是字母及长度在4--10位
if (!Regex.IsMatch(un, "[a-zA-Z]{4,10}"))
{
MessageBox.Show("不是字母或者长度不够");
return;
}
else if (!Regex.IsMatch(un, "[0-9]{4,6}"))
{
MessageBox.Show("请输入4-6位的数字");
return;
}
dc = Program.GetDc(address);
//返回数据库中的最新更新
// dc = Program.ChangeDc(dc.T_user);
IQueryable<T_user> t_user = dc.T_user.
Where(u => erName == un && erPwd == pwd); if (t_user!=null&&t_user.Count()==1)
{
this.Hide();
if (t_user.First().userRole == 1)
{//打开点餐窗口
MainMenu mm = new MainMenu();
mm.Show();
}
else if (t_user.First().userRole == 4)
{
//打开管理员
Manage.FrmManage frmManage = new Manage.FrmManage();
frmManage.Show();
}
else if (t_user.First().userRole == 2)
{
//打开厨师窗口
PeiCan.FrmZuoCai frmZuoCai = new PeiCan.FrmZuoCai();
frmZuoCai.Show();
}
else if (t_user.First().userRole ==3)
{
//打开结算窗口
Jiezhang.FrmJieZhang frm_JieZhang = new Jiezhang.FrmJieZhang();
frm_JieZhang.Show();
}
}
else
MessageBox.Show("登录失败");
3.7.2点餐模块设计
点餐模块是系统中重要的模块,主要实现客户餐单的创建以及所点菜品的保存,该模块的实现思路是首先系统分类显示今日特价、凉菜、热菜、汤类、酒水、饮料,客人按照所需登记桌位,选择菜品及分数(默认1份),系统自动计算总
金额,如果有误客人则可以删除某类菜品,最后点击提交保存到数据库。

那么该模块实现的前提条件是用户以服务员身份登录到系统,且数据库中有相应的菜品信息以及一定数量的桌位。

此模块的输入输出数据如表3.28所示
表3.28点餐模块输入输出数据
具体实现代码:
/// <summary>
/// 系统显示菜谱
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainMenu_Load(object sender, EventArgs e)
{
dc = Program.dc;
cur_z = new Cursor("images/图标/z.cur");
cur_y = new Cursor("images/图标/you1.cur");
tj_list = new List<Image>();
lc_list = new List<Image>();
rc_list = new List<Image>();
t_list = new List<Image>();
js_list = new List<Image>();
yl_list = new List<Image>();
LoadImage(-1, true);
//默认显示特价
if(tj_list.Count!=0)
this.panelEx4.Style.BackgroundImage = tj_list[tj_index];
//加载桌位号
LoadDesk();
}
/// <summary>
/// 修改菜谱
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgv_CanMingXi_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgv_CanMingXi.Columns[e.ColumnIndex].Name == "del")
{
//获得菜谱ID
cai_id = this.dgv_CanMingXi.Rows[e.RowIndex].Cells["caiid"].Value.ToString(); var mx = canDan.T_Can_MingXi.ElementAt(e.RowIndex);
canDan.xf_je -= mx.cai_JE;
canDan.T_Can_MingXi.RemoveAt(e.RowIndex);
//重新绑定控件
this.lbl_HJ.Text = "合计:" + canDan.xf_je + "元";
BindingList<T_Can_MingXi> canList = new BindingList<T_Can_MingXi>(canDan.T_Can_MingXi.ToList());
this.dgv_CanMingXi.DataSource = canList;
}
}
第四章系统实现
4.1系统编码规范
系统编码实现采用目前流行的面向对象的编程语言—C#,因此为了今后的系统扩展及测试维护,所以按照微软统一发布的C#编码规范,具体内容如下:
4.1.1类型的命名
1.类名,以Class声明的类,都必须以名词或名词短语命名,体现类的作用。

如:Class Indicator当类是一个特性(Attribute)时,以Attribute结尾,当类是一个异常(Exception)时,以Exception结尾:Class ColorSetException Class CauseExceptionAttribute 当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如 Class ScreenClass Class SystemClass。

当类只用于作为其他类的基类,根据情况,以Base结尾:MustInherit Class IndicatorBase,如果定义的类是一个窗体,那么名字的后面必须加后缀Form,如果是Web窗体,必须加后缀Page:Class PrintForm : Inherits Form '* Windows 窗体Class StartPage : Inherits Page '* Web窗体
2.枚举和结构:同样必须以名词或名词短语命名。

最好体现枚举或结构的特点,如:Enum ColorButtons '以复数结尾,表明这是一个枚举Structure CustomerInfoRecord '以Record结尾,表明这是一个结构体
3.委派类型:普通的委派类型以描述动作的名词命名,以体现委派类型实例的功能:Delegate Sub DataSeeker (ByVal SeekString As String),用于事件处理的委派类型,必须以EventHandler结尾,如:Delegate Sub DataChangedEventHandler (ByVal Sender As Object, ByVal e As DataChangedEventArgs)
4.接口:与其他类型不同,接口必须要由I作为前缀,并用形容词命名,突
出表现实现接口的类将具有什么能力:Interface ISortable
5.模块:模块不是类型,他的名称除了必须以名词命名外,必须加以后缀Module:Module SharedFunctionsModule,上述所有规则的共同特点是,每个组成名称的词语都必须是大写开头,禁止完全大写或小写的名称。

4.1.2方法和属性的命名
1.方法:无论是函数还是子程序,方法都必须以动词或动词短语命名。

无需区分函数和子程序,也无需指明返回类型。

Sub Open(ByVal CommandString As String),Function SetCopyNumber(ByVal CopyNumber As Integer),参数需要指明ByVal还是ByRef,这一点写起来会让程序边长,但非常必要。

如果没有特别情况,都使用ByVal。

参数的命名方法,参考后面“变量的命名方法”。

需要重载的方法,一般不写Overloads,根据需要编写重载的方法。

2.属性:原则上,字段(Field)是不能公开的,要访问字段的值,一般使用属性。

属性以简洁清晰的名词命名:Property Concentration As Single,Property Customer As CustomerTypes
3.事件:事件是特殊的属性,只能在事件处理上下文中使用。

命名的原则一般是动词或动词的分词,通过时态表明事件发生的时间:Event Click As ClickEventHandler,Event ColorChanged As ColorChangedEventHangler
4.1.3变量和常数
常数以表明常数意义的名词命名,一般不区分常数的类型:Const DefaultConcentration As Single = 0.01,在严格要求的代码中,常数以c_开头,如c_DefaultConcentration,但最好不要用它,它会带来输入困难。

普通类型的变量,只要用有意义的名字命名即可,不可使用简称和无意义的名称诸如A,x1等,下面给出了良好的例子:
Dim Index As Integer
Dim NextMonthExpenditure As Decimal
Dim CustomerName As String。

相关文档
最新文档