基于VC农庄餐饮管理系统的设计与实现_第1页
基于VC农庄餐饮管理系统的设计与实现_第2页
基于VC农庄餐饮管理系统的设计与实现_第3页
基于VC农庄餐饮管理系统的设计与实现_第4页
基于VC农庄餐饮管理系统的设计与实现_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 设计题目:_ 基于VC+ 农庄餐饮管理系统 的设计与实现 系 : 信息与机电工程系 专业年级:_电子信息工程2007级 _ _学 号:_ _ _姓名:_ _ _ _指导教师、职称:_ _ _ 2011 年 5 月 14 日 目录TOC o 1-3 h u HYPERLINK l _Toc4318 目录 PAGEREF _Toc4318 2 HYPERLINK l _Toc17746 Abstract PAGEREF _Toc17746 4 HYPERLINK l _Toc2539 1 引言 PAGEREF _Toc2539 5 HYPERLINK l _Toc30195 2 系统总体设计 P

2、AGEREF _Toc30195 6 HYPERLINK l _Toc9552 2.1系统功能分析 PAGEREF _Toc9552 6 HYPERLINK l _Toc6666 2.2 系统功能模块设计 PAGEREF _Toc6666 6 HYPERLINK l _Toc23517 2.3开发系统及其工具的选择 PAGEREF _Toc23517 8 HYPERLINK l _Toc32015 Visual C+介绍 PAGEREF _Toc32015 8 HYPERLINK l _Toc20843 SQL Server简介 PAGEREF _Toc20843 8 HYPERLINK l

3、_Toc10419 3 数据库设计 PAGEREF _Toc10419 9 HYPERLINK l _Toc28981 3.1 系统流程分析 PAGEREF _Toc28981 9 HYPERLINK l _Toc2637 3.2数据库概念结构设计 PAGEREF _Toc2637 10 HYPERLINK l _Toc3614 3.3数据库逻辑结构设计 PAGEREF _Toc3614 11 HYPERLINK l _Toc24720 3.4数据库结构的实现 PAGEREF _Toc24720 14 HYPERLINK l _Toc11772 3.5数据库的连接 PAGEREF _Toc11

4、772 18 HYPERLINK l _Toc7202 4 功能模块实现 PAGEREF _Toc7202 21 HYPERLINK l _Toc8287 4.1登录模块设计 PAGEREF _Toc8287 21 HYPERLINK l _Toc29137 4.1.1 模块的初始化 PAGEREF _Toc29137 22 HYPERLINK l _Toc17516 4.1.2 登录验证 PAGEREF _Toc17516 23 HYPERLINK l _Toc4979 4.2 前台销售管理模块设计 PAGEREF _Toc4979 24 HYPERLINK l _Toc16074 4.3

5、统计模块设计 PAGEREF _Toc16074 30 HYPERLINK l _Toc27824 4.4 基础资料模块设计 PAGEREF _Toc27824 33 HYPERLINK l _Toc10159 5 结论 PAGEREF _Toc10159 41 HYPERLINK l _Toc27470 参考文献: PAGEREF _Toc27470 42 HYPERLINK l _Toc14987 致谢 PAGEREF _Toc14987 42 摘 要随着我国市场经济的快速发展,各行业都呈现出生机勃勃的发展景象,其中餐饮业的发展尤为突出。但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用

6、手工管理方式,整体科技含量低。随着餐饮企业规模和数量的不断增长,手工管理模式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升。 本论文主要针对中小型饭店餐饮管理中的一些问题,将其与计算机信息管理系统结合起来,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。前台我们采用功能强大的可视化开发软件VC+ 6.0开发设计主界面,利用SQL Server做为后台数据库。主要分成登录信息管理、前台信息管理、查询管理、营业设置与财务查询等五大功能模块,可以帮助餐饮企业处理日常工作业务,规范管理工作和操作流

7、程,是餐饮行业的得力助手。另外,本餐饮管理系统具有强大的统计分析功能,可以帮助经营者分析企业的经营状况。系统运行后可大大提高现代餐饮管理水平和服务档次.创造可靠、高效、便捷、卫生的餐饮管理环境,最大限度降低餐饮管理运营成本,提高经营效益。关键词: 餐饮管理,VC+ 6.0,SQL ServerAbstractWith the fast development of market economy, all areas of industry display fine development tendency, it is very outstanding in restaurant. But a

8、t the same time of the rapid development, in the daily manage of restaurant offen operate by hand, and only have low technology content. with the enlargement of restaurant enterprise scale and count. Neither the efficient and the labor cost of manage the restaurant by hand nor the provide of strateg

9、y information could not meet the requirement, therefore, it restricted the whole restaurant enterprise scale and service development.This thesis mainly directed to work out some problems of the small and medium-sized restaurant enterprises, it will be tied with computer information management, the m

10、ainly developing include the new-built and maintain of the background database and the developing of the forward application.I will using one powerful and visualization software to developing the forward application, using SQL Server as its background database.The system included five function parts

11、: login information management, forward information management, inquiring management, business management and finance management. This system could help restaurant enterprises to process dialy affiairs, to standardize manage and operation procedure, its a great assistant. Otherwise, this system have

12、 powerful function, it can statistics and analysis the data, it help you to analysis the enterprise state of operation.After you run this system,it will greatly inprove of restaurant enterprise management and service level. And set up a reliable,high efficiency, convenient and health restaurant mana

13、ge environment. make maximal use of enerprise operation cost, inprove the business profit.keyword: restaurant menagement,VC+ 6.0,SQL Server1 引言由于餐饮业门坎较低,家族式管理的颇多,特别是由于自身经验的缺乏或对餐饮行业管理理解的不够,在经营过程中会有各种各样难以预测的状况,公司运行的效率比较低下。许多企业争先恐后的上规模、上档次、比菜品、比服务、拼价格,使餐饮市场竞争激烈,但是许多农庄餐饮企业缺乏对市场的应变能力和灵敏的信息工具。据相关调查显示,大部分餐

14、馆对于信息化管理水平的运用,目前仍处在初级摸索阶段。许多餐饮管理者,由于缺乏对于先进管理理念的理解,以及对信息化的认识和意识不够,再加上目光短浅舍不得投入,以致使餐馆的管理,至今仍停留在一个比较原始和落后的水平上,餐馆的发展因此很受限。特别是在现今网络经济的时代,许多餐饮企业还处在手工及半手工状态,即使有计算机也只是当个点菜器和计算器用,并没有真正通过计算机系统来实现改造流程、强化管理、降低成本、堵漏节流等作用。本餐饮管理系统界面简单实用,可靠方便的,有助于餐饮企业通过规范运行流程,提高服务质量和管理效率,实现运行与服务流程的流畅与高效;另一方面,通过数据分析和流程控制,实现管理效益。该餐饮管

15、理系统,具有手工管理所无法比拟的优点。例如:查找方便、保密性好、可靠性高、存储量大、寿命长、成本低、维护方便等。把计算机用于餐饮企业管理,可在很大程度上提高管理者分析和决策的科学性,提高经营管职水平,带来更多的顾客,使企业取得更好的经济效益。2 系统总体设计2.1系统功能分析 餐饮管理系统主要完成功能如下:进入系统前需要身份验证、用户名、密码,输入无误方可进入系统。同时需要权限和角色管理,也就是普通员工进入之后的访问权限和部门经理的访问权限是不一样的,并且这些权限可以由系统管理员进行配置。对顾客的各项服务:如结账、打印账单、点菜、预订等。营业要素的设定:如菜单的管理、酒水饮料的数量记录、付款方

16、式的设定、折扣的设定。员工资料的设置:如人员的基本信息、登录名称、密码。后台数据的整理:如账单的总体情况、点单的具体内容、会员消费的管理、欠费的记录和消除等。财务的统计:包括营业额、成本、利润的分析,酒菜的分析。2.2 系统功能模块设计 图1 系统功能模块示意图登录信息管理:包括对登录信息的验证及修改两个部分。其中验证时需要权限的管理。系统中共有3种登陆权限和角色,分别是系统管理员、经理、操作人员。每种角色都可以设定自己的用户名及密码,但是要提升自己的权限则需要高一级的角色来进行操作,例如要将一个操作人员的权限提升到经理这一级别,就需要拥有经理或者系统管理员角色的人登陆后进行设定。登陆成功后必

17、须将这个信息记录在数据库中,以便实现访问权限的控制。前台信息管理:主要是面对顾客进行操作的,具体的内容包括新开台、预订、买单。其中,新开台指的是通过输入桌号、菜名、折扣、付款方式等信息来确定一笔账单,它的应用场景是客人入座点菜完毕;预订指的是通过客户的一些基本信息,如联系方式、证件号、及预定时间来确定一笔将来的菜单;买单场景包括计算实际金额和实付金额,获取账单及打印账单号等。查询管理:是前台信息管理模块的辅助模块,同样也适用于系统整个生命周期内,具体的内容包括食品管理、账单管理、餐桌使用及预订情况。食品查询最后的输出结果是酒菜名称、单价、库存数量等信息;账单管理的输出是桌号、账单号、酒菜信息、

18、折扣率、付款方式、总金额及实付金额等;餐桌的查询包含使用查询和预约查询两类,其中预约查询能够查到的信息包括客人姓名、性别、证件号码、联系方式、预订的桌号、预订的就餐时间等。营业设置:是整个系统的基础模块,它定义和限制了数据在其他模块出现的内容和方式。包括系统中所有菜单的设定、定价、类别、库存等信息。财务管理:只有经理和系统管理员可以进入,提供的服务包括销售信息的汇总和分析,即成本、利润及资源短缺和富余情况的查询分析;酒菜分析包括单价、进价和一些跟前台相关信息的收集和分析。2.3开发系统及其工具的选择运行平台:Windows xp/ Windows 2000。系统开发平台:Visual C+ 6

19、.0。数据库管理系统软件:SQL Server 2000/SQL Server 2005。 Visual C+介绍 Visual C+式微软公司推出的软件开发工具,目前已成为国内最广泛的高级程序设计语言之一。同其它软件开发工具相比,Visual C+具有以下优点。 面向对象、可视化开发。提供了面向对象的应用程序框架 MFC (Microsoft Foundation Class,微软基础类库),大大简化了程序员的编程工作,提高的模块的可重用性。Visaul C+提供了基于CASE技术的自动生成和维护工具 AppWizard、ClassWizard、Visual Studio、WizardBar

20、等,帮助用户直观的、可视地设计程序的用户界面,方便地编写和管理各种类,维护程序源代码,从而提高了开发效率。 MFC 类库已经成为事实上的工业标准类库,得到了总多软件开发商的支持。另外,由于许多的开发商都采用Visual C+进行软件开发,这样用Visual C+ 开发的程序就于其他应用软件有许多相似之处,易于学习和使用。 SQL Server简介 SQL Server是一个关系数据库管理系统,它最初是由Microsoft, Sybase和Ashton-Tate三家公司共同开发的于1988 年推出了第一个OS/2 版本,在Windows NT 推出后,Microsoft与Sybase在SQL S

21、erver的开发上就分道扬镳了,Microsoft将SQL Server移植到Windows NT系统上专注于开发推广SQL Server的Windows NT版本,Sybase则较专注于SQL Server在UNIX操作系统上的应用.Microsoft SQL Server以后简称为SQL Server或MS SQL Server 。 随着信息技术的发展,计算机处理数据的方式也发生着变化,文件管理系统数据库管理系统。Microsoft SQL Server是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请

22、求与服务器的处理结果。众所周知,SQL Server能够满足今天的商业环境要求不同类型的数据库解决方案。它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。3 数据库设计3.1 系统流程分析 前面的分析中已经定义了系统各个功能模块,属于静态建模的范围。在系统运行时刻的动态模型应该由系统的流程决定。当用户登录系统后,可以拥有权限来进行备忘录详细信息编辑、类型信息编辑及查询等操作,具体流程图如图2。 图2 系统流程图企业基本

23、信息:包括企业的名称等基本信息。用户基本信息:包括用户ID、姓名、登陆ID、登陆密码、职位、性别、出生日期、籍贯、员工编号、权限等信息。食物基本信息:包括的内容有ID、名称、折扣、价格、简称、交易码、类别码、数量等信息。 账单基本信息:包括的内容有ID、餐桌号、人数、开单人、开始时间、结束时间、 状态显示、账单总额、实际支付金额、支付类别、折扣、点菜编号、点菜数量、菜式类别等信息。3.2数据库概念结构设计 图3 餐饮管理系统E-R图3.3数据库逻辑结构设计企业信息表(COMPANY)包含了企业的基本信息,这个基本信息将会显示在程序的状态栏中。表3-1 企业信息表列 名类 型长 度可否为空说 明

24、COMPANYNAMENVARCHAR50NULL公司名称LOCATIONNVARCHAR50NULL地点 用户信息表(USERS)包括了系统中各个登录用户的具体信息,其中将对每个用户的权限进行管理和设定。表3-2 用户信息表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NULL姓名LOGINIDNVARCHAR50NULL登陆IDPSDNVARCHAR50NULL登陆密码TITLENVARCHAR50NULL职位SEXNVARCHAR50NULL性别HOMENVARCHAR50NULL籍贯EMPLOYNUMBERNVARCHAR50NUL

25、L员工编号POWERNVARCHAR50NULL权限字段DISCOUNTNVARCHAR50NULL折扣物品信息表(MATERIEL)存放了基本的食物的信息,系统模块中的查询功能大部分都要基于这个表进行操作。表3-3 物品信息表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NULL名称DISCOUNTSMALLINT2NOT NULL折扣PRICEREAL4NOT NULL售价PINYINNVARCHAR50NULL标识(拼音)SHOPCODENVARCHAR50NULL标识(代码)BARCODENVARCHAR50NULL标识STYLES

26、MALLINT2NULL风格标识CLASSIDSMALLINT2NOT NULL类别标识SUPPLYSMALLINT2NULL数量CONTENTNVARCHAR50 NULL说明物品分类表(MATERIELCLASS)维护了一个物品的层次结构,主要用在对于物品的分类上,在界面中选择物品的分类树的编辑就是对这个表进行的操作。表3-4 物品分类表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NOT NULL名称DISCOUNTSMALLINT2NULL折扣PARENTNVARCHAR50NOT NULL父亲节点 支付方式表(PAYMODE)存放

27、了关于支付方式和其他编号的映射关系。表3-5 支付方式表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NOT NULL名称 支付明细表(PAYDETAIL)主要用于结账信息的打印,在结账模块中进行的数据访问操作主要基于该表进行。表3-6 支付明细表列 名类 型长 度可否为空说 明BILLIDNVARCHAR50NOT NULL主键账单编号CLASSNVARCHAR50NOT NULL类别DISCOUNTNVARCHARNULLNULL折扣TOTALREAL4NOT NULL售价PINYINNVARCHAR50NULL标识(拼音)账单信息表(

28、SALEBILL)记录了账单从开单开始一直到结账的生命过程中所有需要用到的信息,也是系统常用的表。表3-7 账单信息表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号TABLENONVARCHAR50NULL桌号SALESNVARCHAR50NULL服务员编号TOTALREAL4NULL售价BEGINDATENVARCHAR50NULL开始时间ENDDATENVARCHAR50NULL结束时间DISCOUNTNVARCHAR50NULL折扣PEOPLESMALLINT2NULL人数FLOORNVARCHAR50NOT NULL楼层 出货明细表(SALEDETAIL)保存

29、了系统整个生命周期内卖出的食品的详细记录,在查询模块中可以通过这个表对店里的物品卖出情况进行统计和分析。表3-8 出货明细表列 名类 型长 度可否为空说 明BILLIDNVARCHAR50NOT NULL主键账单编号MATERIELIDSMALLINT2 NULL物品编号ITEMCOUNTREAL4NOT NULL数量ITEMTOTALREAL4NOT NULL物品总价CLASSIDSMALLINT2NULL类别编号MEMONVARCHAR50NULL备注ACTPRICEREAL4NULL实际售价3.4数据库结构的实现 可以通过SQLServer企业管理器来创建数据库,也可以通过SQL查询分析

30、器执行SQL语句来创建数据库。/首先,判断要创建的表格的表格是否已存在,如果已经存在,则删去已有的表格,创建新的表格,如果不存在则直接创建该表格。if exists (select * from dbo.sysobjects where id = object_id(Ndbo.COMPANY) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.COMPANYGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.MATERIEL) and OBJECTP

31、ROPERTY(id, NIsUserTable) = 1)drop table dbo.MATERIELGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.MATERIELCLASS) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.MATERIELCLASSGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.PAYDETAIL) and OBJECTPROPER

32、TY(id, NIsUserTable) = 1)drop table dbo.PAYDETAILGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.PAYMODE) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.PAYMODEGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.SALEBILL) and OBJECTPROPERTY(id, NIsUserTab

33、le) = 1)drop table dbo.SALEBILLGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.SALEDETAIL) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.SALEDETAILGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.USERS) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop ta

34、ble dbo.USERSGO创建表COMPANYCREATE TABLE dbo.COMPANY (COMPANYNAME nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,FLOORNUMBER nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGO/使用SQL语句,根据各个表的属性,创建表格。创建表MATERIELCREATE TABLE dbo.MATERIEL (ID int NOT NULL ,NAME nvarchar (50) COLLATE Chinese_PRC_CI_

35、AS NOT NULL ,DISCOUNT smallint NOT NULL ,PRICE real NULL ,PINYIN nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,SHOPCODE nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,BARCODE nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,STYLE smallint NULL ,CLASSID smallint NOT NULL ,SUPPLY smallint NOT NULL ,OPTION

36、S nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,CONTENT nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,LARGESSITEM smallint NULL ,LARGESSCOUNT real NULL ,LARGESS smallint NULL ) ON PRIMARYGO创建表MATERIELCLASSCREATE TABLE dbo.MATERIELCLASS (ID int NOT NULL ,NAME nvarchar (50) COLLATE Chinese_PRC_CI_AS N

37、OT NULL ,DISCOUNT smallint NULL ,PARENT nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARYGO创建表PAYDETAILCREATE TABLE dbo.PAYDETAIL (BILLID nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,CLASS nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,TOTAL real NULL ,DISCOUNT nvarchar (250) COL

38、LATE Chinese_PRC_CI_AS NULL ,ACTTOTAL real NULL ,VALTOTAL real NULL ) ON PRIMARYGO创建表PAYMODECREATE TABLE dbo.PAYMODE (ID smallint NOT NULL ,NAME nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARYGO创建表SALEBILLCREATE TABLE dbo.SALEBILL (ID nvarchar (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,T

39、ABLENO nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,SALES nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,BEGINDATE nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,ENDDATE nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,STATUS nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,TOTAL real NULL ,ACTTOTAL real N

40、ULL ,PAYMODE smallint NULL ,DISCOUNT nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,FLOOR nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,PEOPLES smallint NULL ) ON PRIMARYGO创建表SALEDETAILCREATE TABLE dbo.SALEDETAIL (BILLID nvarchar (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,MATERIELID smallint NOT NULL ,

41、ITEMCOUNT real NULL ,ITEMTOTAL real NULL ,CLASSID smallint NOT NULL ,OPTIONV nvarchar (250) COLLATE Chinese_PRC_CI_AS NULL ,LOCATION nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,LARGESS nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,MEMO nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,ROWNO smallint N

42、ULL ,PRINTED nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,ACTPRICE real NULL ) ON PRIMARYGO创建表USERSCREATE TABLE dbo.USERS (ID int NOT NULL ,NAME nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,LOGINID nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,PSD nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,

43、TITLE nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,SEX nvarchar (5) COLLATE Chinese_PRC_CI_AS NULL ,DATEBIRTH nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,HOME nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,EMPLOYNUMBER nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,POWER nvarchar (250) COLLATE Chin

44、ese_PRC_CI_AS NULL ,DISCOUNT int NULL ) ON PRIMARYGO3.5数据库的连接数据库的连接采用ADO方式。使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下所示:#import c:program filescommon filessystemadomsado15.dllno_namespaces rename(EOF adoEOF) 。数据库连接的代码在MyPos.cpp中,其主要代码如下。BOOL CMyPosApp:InitInstance()/Add splash im

45、age to the application.CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);CSplashWnd:EnableSplashScreen(cmdInfo.m_bShowSplash);AfxOleInit();/初始化COM库AfxEnableControlContainer();/ 此程序只能运行一次,用互斥量来判断程序是否已运行 HANDLE m_hMutex=CreateMutex(NULL,TRUE, m_pszAppName); if(GetLastError()=ERROR_ALREADY_EXISTS) ret

46、urn FALSE; /以下是连接SqlServer2k数据库HRESULT hr;tryhr = m_pConnection.CreateInstance(ADODB.Connection);/创建Connection对象if(SUCCEEDED(hr)m_pConnection-ConnectionTimeout=3;/设置超时时间为3秒hr=m_pConnection-Open(Provider=MSDASQL.1;DataSource=HAI;InitialCatalog=restaurant,adModeUnknown);/连接数据库, provider为驱动程序的类型,Data S

47、ource为数据源所在的计算机名,Initial Catalog为数据源的实际名称。catch(_com_error e)/捕捉异常CString temp;temp.Format(连接数据库错误信息:%s,e.ErrorMessage();:MessageBox(NULL,temp,提示信息,NULL);return false;/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remo

48、ve from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endif /SetDialogBkColor (RGB (130,194, 220), RGB ( 16,20, 255 ) );CLogonDlg

49、logdlg;if(logdlg.DoModal()=IDOK)CString sql=SELECT * FROM USERS where LOGID=+theA+;elsereturn FALSE;pWnd=NULL;/Initialize pointer!theApp.pWndoff=NULL;/Initialize pointer!scallid=;CMyPosDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: Place code here to hand

50、le when the dialog is/ dismissed with OKelse if (nResponse = IDCANCEL)/ TODO: Place code here to handle when the dialog is/ dismissed with Cancel/ Since the dialog has been closed, return FALSE so that we exit the/ application, rather than start the applications message pump.return TRUE;注意:设置了连接超时时间

51、,若连接操作在3秒内没有返回结果,则表示连接失败,直接返回出错消息。防止阻塞,导致死机。4 功能模块实现4.1登录模块设计 登录模块的主要工作流程是:用户通过输入用户名和密码进入系统,同时保持自己的操作权限。该模块的实现主要由CLogonDlg.cpp提供。因为这是对话框程序,所以CLogonDlg类继承自CDialog。“用户名”为CombBox控件,在初始化时会将数据库中所有的用户名提取出来并显示在控件中,如图4所示。 图4登录对话框4.1.1 模块的初始化模块初始化的主要作用是将ID显示在下拉列表中,方便用户的选择,其核心代码如下。BOOL ClogonDlg:OnInitDialog(

52、) CDialog:OnInitDialog(); /读出数据库中的用户名,显示在控件中。int i,recordcount;CString sql=select LOGINID from USERS ;trym_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant_t(IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);recordcount=m_pRecordset-Ge

53、tRecordCount();/Get records total.if(!m_pRecordset-adoEOF)for(i=0;iGetCollect(LOGINID);sql=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(LOGINID);m_pRecordset-MoveNext();m_pRecordset-Close();catch(_com_error e)/捕捉异常CString temp;temp.Format(读取用户名错误:%s,e.ErrorMessage();AfxMessageBox(temp);return false;ret

54、urn TRUE; / return TRUE unless you set the focus to a control初始化时先通过SQL语句取出USERS表中所有的LOGONID,取出记录集的信息并遍历这个对象,将各个ID添加到ComeBox中。4.1.2 登录验证首先,系统通过数据源配置的登录方式连接数据库,这个连接过程是固化在程序中的。而在登陆时填入的用户名和密码对应的则是数据库中USERS表的信息。所谓的验证过程就是通过比较数据库存储的用户名和密码来赋予权限。该对话框的登录响应事件的处理代码如下。void CLogonDlg:OnOK() / TODO: Add extra val

55、idation hereUpdateData();if(m_logid.IsEmpty()|m_pwd.IsEmpty()AfxMessageBox(请输入用户名和密码!);return;else/if user enter name and password./成生sql语句CString sql=SELECT * FROM USERS where LOGINID=+m_logid+ and PSD=+m_pwd+;trym_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant

56、_t(IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);if(m_pRecordset-adoEOF)AfxMessageBox(用户名或密码错误!);else/theA=m_logid;theA=(LPCTSTR)(_bstr_t)m_pRecordset-GetCollect(NAME);theApp.pwd=m_pwd;CDialog:OnOK();return;m_pRecordset-Close();catch(_com_error e)/捕捉异常C

57、String temp;temp.Format(读取用户名和密码错误:%s,e.ErrorMessage();AfxMessageBox(temp);return;以上代码首先应用UpdateData函数收集界面上用户的输入信息,然后构造类似于“SELECT”FROM USERS where LOGONID=“+m_logid+”and PSD=“+m_pwd+”的SQL语句进行数据库的查询,之后判断是否在数据库中找到对应的记录,如果记录集返回长度为0,则提示用户名密码错误;若正确,则将程序的全局变量theApp的name属性赋值,这表明用户登录成功。4.2 前台销售管理模块设计前台销售管理模

58、块是系统最重要的模块之一,主要作用是与顾客交互,包括开单、点菜、结账、打印、挂账等常用操作,界面响应也比较复杂,效果如图5所示。 图5 前台销售模块界面当顾客需要开单时,单击下方的“F1 开单”按钮,依次输入桌号、就餐人数等信息,这时系统会依据运行时的信息自动填入时间、单据状态等项,然后在列表的名称格中单击右下部的黑色矩形按钮,调出菜单选择界面,如下图6所示。选择需要的商品,单击“确定”按钮后,选择的商品条目信息便显示在表格中。 图6 商品选择模块界面 当顾客需要结账时,在左侧选定需要结算的账单,单击下方的“F5 结账”按钮,调出对应的结账对话框,如图7所示,填入对应的折扣信息和顾客的付费信息

59、,便可以实现快速的找零工作。同时可以在结账对话框实现账单的挂账操作。当需要其他操作是,如销单、调单、打印、下班等操作,只需要单击对应的按钮即可。 图7 结账对话框 /对话框的初始化BOOL CPosDlg:OnInitDialog() CDialog:OnInitDialog();/设置list控件的文字和背景颜色m_oFormlist.SetBkColor(RGB(255,255,255);m_oFormlist.SetTextBkColor(RGB(161,223,212);/清空list控件的数据for(int delcolumn=100;delcolumn=0;delcolumn-)m

60、_oFormlist.DeleteColumn(delcolumn);/设置list对话框的列DWORD dwStyle;RECT rect;LV_COLUMN lvc;dwStyle = m_oFormlist.GetStyle();dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT |LVS_SHOWSELALWAYS |LVS_EDITLABELS ;m_oFormlist.SetExtendedStyle(dwStyle);m_oFormlist.GetClientRect(&rect);lvc.mask = LVCF_TEXT | LV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论