首页 [精品论文]基于VC++ 农庄餐饮管理系统的设计与实现

[精品论文]基于VC++ 农庄餐饮管理系统的设计与实现

举报
开通vip

[精品论文]基于VC++ 农庄餐饮管理系统的设计与实现[精品论文]基于VC++ 农庄餐饮管理系统的设计与实现 设计题目:_ 基于VC++ 农庄餐饮管理系统 的设计与实现 系 : 信息与机电工程系 专业年级:___电子信息工程2007级 ___ __ 学 号:_______ __ ___ ___ 姓 名:________ ___ _ _ 指导教师、职称:_ _ _ 2011 年 5 月 14 日 目录 目录 ................................................................... 2 Ab...

[精品论文]基于VC++ 农庄餐饮管理系统的设计与实现
[精品论文]基于VC++ 农庄餐饮管理系统的设计与实现 设计题目:_ 基于VC++ 农庄餐饮管理系统 的设计与实现 系 : 信息与机电工程系 专业年级:___电子信息工程2007级 ___ __ 学 号:_______ __ ___ ___ 姓 名:________ ___ _ _ 指导教师、职称:_ _ _ 2011 年 5 月 14 日 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 目录 ................................................................... 2 Abstract ............................................................... 4 1 引言 ................................................................. 5 2 系统总体设计 ......................................................... 6 2.1系统功能 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ...................................................... 6 2.2 系统功能模块设计 .................................................. 6 2.3开发系统及其工具的选择 ............................................ 7 Visual C++介绍 ....................................................... 8 SQL Server简介 ...................................................... 8 3 数据库设计 ........................................................... 9 3.1 系统流程分析 ...................................................... 9 3.2数据库概念结构设计 ................................................ 9 3.3数据库逻辑结构设计 ............................................... 10 3.4数据库结构的实现 ................................................. 13 3.5数据库的连接 ..................................................... 17 4 功能模块实现 ........................................................ 20 4.1登录模块设计 ..................................................... 20 4.1.1 模块的初始化 .................................................. 20 4.1.2 登录验证 ...................................................... 21 4.2 前台销售管理模块设计 ............................................. 23 4.3 统计模块设计 ..................................................... 30 4.4 基础资料模块设计 ................................................. 32 5 结论 ................................................................ 40 参考文献: ............................................................. 41 致谢 .................................................................. 42 摘 要 随着我国市场经济的快速发展,各行业都呈现出生机勃勃的发展景象,其中餐饮业的发展尤为突出。但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理方式,整体科技含量低。随着餐饮企业规模和数量的不断增长,手工管理模式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升。 本论文主要针对中小型饭店餐饮管理中的一些问题,将其与计算机信息管理系统结合起来,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。前台我们采用功能强大的可视化开发软件VC++ 6.0开发设计主界面,利用SQL Server做为后台数据库。主要分成登录信息管理、前台信息管理、查询管理、营业设置与财务查询等五大功能模块,可以帮助餐饮企业处理日常工作业务, 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 管理工作和操作流程, 是餐饮行业的得力助手。另外,本餐饮管理系统具有强大的统计分析功能,可以帮助经营者分析企业的经营状况。系统运行后可大大提高现代餐饮管理水平和服务档次.创造可靠、高效、便捷、卫生的餐饮管理环境,最大限度降低餐饮管理运营成本,提高经营效益。 关键词: 餐饮管理,VC++ 6.0,SQL Server Abstract With the fast development of market economy, all areas of industry display fine development tendency, it is very outstanding in restaurant. But at 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 strategy 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 mainly 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 it's background database.The system included five function parts: 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, it's a great assistant. Otherwise, this system have 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 manage environment. make maximal use of enerprise operation cost, inprove the business profit. keyword: restaurant menagement,VC++ 6.0,SQL Server 1 引言 由于餐饮业门坎较低,家族式管理的颇多,特别是由于自身经验的缺乏或对餐饮行业管理理解的不够,在经营过程中会有各种各样难以预测的状况,公司运行的效率比较低下。许多企业争先恐后的上规模、上档次、比菜品、比服务、拼价格,使餐饮市场竞争激烈,但是许多农庄餐饮企业缺乏对市场的应变能力和灵敏的信息工具。据相关调查显示,大部分餐馆对于信息化管理水平的运用,目前仍处在初级摸索阶段。许多餐饮管理者,由于缺乏对于先进管理理念的理解,以及对信息化的认识和意识不够,再加上目光短浅舍不得投入,以致使餐馆的管理,至今仍停留在一个比较原始和落后的水平上,餐馆的发展因此很受限。特别是在现今网络经济的时代,许多餐饮企业还处在手工及半手工状态,即使有计算机也只是当个点菜器和计算器用,并没有真正通过计算机系统来实现改造流程、强化管理、降低成本、堵漏节流等作用。 本餐饮管理系统界面简单实用,可靠方便的,有助于餐饮企业通过规范运行流程,提高服务质量和管理效率,实现运行与服务流程的流畅与高效;另一方面,通过数据分析和流程控制,实现管理效益。该餐饮管理系统,具有手工管理所无法比拟的优点。例如:查找方便、保密性好、可靠性高、存储量大、寿命长、成本低、维护方便等。 把计算机用于餐饮企业管理,可在很大程度上提高管理者分析和决策的科学性,提高经营管职水平,带来更多的顾客,使企业取得更好的经济效益。 2 系统总体设计 2.1系统功能分析 餐饮管理系统主要完成功能如下: 进入系统前需要身份验证、用户名、密码,输入无误方可进入系统。同时需要权限和角色管理,也就是普通员工进入之后的访问权限和部门经理的访问权限是不一样的,并且这些权限可以由系统管理员进行配置。 对顾客的各项服务:如结账、打印账单、点菜、预订等。 营业要素的设定:如菜单的管理、酒水饮料的数量记录、付款方式的设定、折扣的设定。 员工资料的设置:如人员的基本信息、登录名称、密码。 后台数据的整理:如账单的总体情况、点单的具体内容、会员消费的管理、欠费的记录和消除等。 财务的统计:包括营业额、成本、利润的分析,酒菜的分析。 2.2 系统功能模块设计 图1 系统功能模块示意图 登录信息管理:包括对登录信息的验证及修改两个部分。其中验证时需要权限的管理。系统中共有3种登陆权限和角色,分别是系统管理员、经理、操作人员。每种角色都可以设定自己的用户名及密码,但是要提升自己的权限则需要高一级的角色来进行操作,例如要将一个操作人员的权限提升到经理这一级别,就需要拥有经理或者系统管理员角色的人登陆后进行设定。登陆成功后必须将这个信息记录在数据库中,以便实现访问权限的控制。 前台信息管理:主要是面对顾客进行操作的,具体的内容包括新开台、预订、买单。其中,新开台指的是通过输入桌号、菜名、折扣、付款方式等信息来确定一笔账单,它的应用场景是客人入座点菜完毕;预订指的是通过客户的一些基本信息,如联系方式、证件号、及预定时间来确定一笔将来的菜单;买单场景包括计算实际金额和实付金额,获取账单及打印账单号等。 查询管理:是前台信息管理模块的辅助模块,同样也适用于系统整个生命周期内,具体的内容包括食品管理、账单管理、餐桌使用及预订情况。食品查询最后的输出结果是酒菜名称、单价、库存数量等信息;账单管理的输出是桌号、账单号、酒菜信息、折扣率、付款方式、总金额及实付金额等;餐桌的查询包含使用查询和预约查询两类,其中预约查询能够查到的信息包括客人姓名、性别、证件号码、联系方式、预订的桌号、预订的就餐时间等。 营业设置:是整个系统的基础模块,它定义和限制了数据在其他模块出现的内容和方式。包括系统中所有菜单的设定、定价、类别、库存等信息。 财务管理:只有经理和系统管理员可以进入,提供的服务包括销售信息的汇总和分析,即成本、利润及资源短缺和富余情况的查询分析;酒菜分析包括单价、进价和一些跟前台相关信息的收集和分析。 2.3开发系统及其工具的选择 运行平台:Windows xp/ Windows 2000。 系统开发平台:Visual C++ 6.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等,帮助用户直观的、可视地设计程序的用户界面,方便地编写和管理各种类,维护程序源代码,从而提高了开发效率。 MFC 类库已经成为事实上的工业标准类库,得到了总多软件开发商的支持。另外,由于许多的开发商都采用Visual C++进行软件开发,这样用Visual C++ 开发的程序就于其他应用软件有许多相似之处,易于学习和使用。 SQL Server简介 SQL Server是一个关系数据库管理系统,它最初是由Microsoft, Sybase和Ashton-Tate三家公司共同开发的于1988 年推出了第一个OS/2 版本,在Windows NT 推出后,Microsoft与Sybase在SQL Server的开发上就分道扬镳了,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语言在客户机与服务器间传递客户机的请求与服务器的处理结果。 众所周知,SQL Server能够满足今天的商业环境要求不同类型的数据库解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。 3 数据库设计 3.1 系统流程分析 前面的分析中已经定义了系统各个功能模块,属于静态建模的范围。在系统运行时刻的动态模型应该由系统的流程决定。当用户登录系统后,可以拥有权限来进行备忘录详细信息编辑、类型信息编辑及查询等操作,具体流程图如图2。 图2 系统流程图 企业基本信息:包括企业的名称等基本信息。 用户基本信息:包括用户ID、姓名、登陆ID、登陆密码、职位、性别、出生日期、籍贯、员工编号、权限等信息。 食物基本信息:包括的内容有ID、名称、折扣、价格、简称、交易码、类别码、数量等信息。 账单基本信息:包括的内容有ID、餐桌号、人数、开单人、开始时间、结束时间、 状态显示、账单总额、实际支付金额、支付类别、折扣、点菜编号、点菜数量、菜式类别等信息。 3.2数据库概念结构设计 图3 餐饮管理系统E-R图 3.3数据库逻辑结构设计 企业信息表(COMPANY)包含了企业的基本信息,这个基本信息将会显示在程序的状态栏中。 表3-1 企业信息表 列 名 类 型 长 度 可否为空 说 明 NULL NVARCHAR 50 公司名称 COMPANYNAME 50 NULL LOCATION NVARCHAR 地点 用户信息表(USERS)包括了系统中各个登录用户的具体信息,其中将对每个用户的权限进行管理和设定。 表3-2 用户信息表 列 名 类 型 长 度 可否为空 说 明 4 NOT NULL主键 系统编号 ID INT 50 NULL NAME NVARCHAR 姓名 50 NULL LOGINID NVARCHAR 登陆ID 50 NULL PSD NVARCHAR 登陆密码 50 NULL TITLE NVARCHAR 职位 50 NULL SEX NVARCHAR 性别 50 NULL HOME NVARCHAR 籍贯 50 NULL EMPLOYNUMBER NVARCHAR 员工编号 50 NULL POWER NVARCHAR 权限字段 50 NULL DISCOUNT NVARCHAR 折扣 物品信息表(MATERIEL)存放了基本的食物的信息,系统模块中的查询功能大部 分都要基于这个表进行操作。 表3-3 物品信息表 列 名 类 型 长 度 可否为空 说 明 4 INT NOT NULL主键 系统编号 ID 50 NULL NAME NVARCHAR 名称 2 NOT NULL DISCOUNT SMALLINT 折扣 4 NOT NULL PRICE REAL 售价 50 NULL PINYIN NVARCHAR 标识(拼音) 50 NULL SHOPCODE NVARCHAR 标识(代码) 50 NULL BARCODE NVARCHAR 标识 2 NULL STYLE SMALLINT 风格标识 2 NOT NULL CLASSID SMALLINT 类别标识 2 NULL SUPPLY SMALLINT 数量 50 NULL CONTENT NVARCHAR 说明 物品分类表(MATERIELCLASS)维护了一个物品的层次结构,主要用在对于物品 的分类上,在界面中选择物品的分类树的编辑就是对这个表进行的操作。 表3-4 物品分类表 列 名 类 型 长 度 可否为空 说 明 4 INT NOT NULL主键 系统编号 ID 50 NOT NULL NAME NVARCHAR 名称 2 NULL DISCOUNT SMALLINT 折扣 50 NOT NULL PARENT NVARCHAR 父亲节点 支付方式表(PAYMODE)存放了关于支付方式和其他编号的映射关系。 表3-5 支付方式表 列 名 类 型 长 度 可否为空 说 明 4 INT NOT NULL主键 系统编号 ID 50 NOT NULL NAME NVARCHAR 名称 支付明细表(PAYDETAIL)主要用于结账信息的打印,在结账模块中进行的数据访问操作主要基于该表进行。 表3-6 支付明细表 列 名 类 型 长 度 可否为空 说 明 50 NVARCHAR NOT NULL主键 账单编号 BILLID 50 NOT NULL CLASS NVARCHAR 类别 NULL NULL DISCOUNT NVARCHAR 折扣 4 NOT NULL TOTAL REAL 售价 50 NULL PINYIN NVARCHAR 标识(拼音) 账单信息表(SALEBILL)记录了账单从开单开始一直到结账的生命过程中所有需要用到的信息,也是系统常用的表。 表3-7 账单信息表 列 名 类 型 长 度 可否为空 说 明 4 INT NOT NULL主键 系统编号 ID 50 NULL TABLENO NVARCHAR 桌号 50 NULL SALES NVARCHAR 服务员编号 4 NULL TOTAL REAL 售价 50 NULL BEGINDATE NVARCHAR 开始时间 50 NULL ENDDATE NVARCHAR 结束时间 50 NULL DISCOUNT NVARCHAR 折扣 2 NULL PEOPLE SMALLINT 人数 50 NOT NULL FLOOR NVARCHAR 楼层 出货明细表(SALEDETAIL)保存了系统整个生命周期内卖出的食品的详细记录,在查询模块中可以通过这个表对店里的物品卖出情况进行统计和分析。 表3-8 出货明细表 列 名 类 型 长 度 可否为空 说 明 50 NVARCHAR NOT NULL主键 账单编号 BILLID 2 NULL MATERIELID SMALLINT 物品编号 4 NOT NULL ITEMCOUNT REAL 数量 4 NOT NULL ITEMTOTAL REAL 物品总价 2 NULL CLASSID SMALLINT 类别编号 50 NULL MEMO NVARCHAR 备注 4 NULL ACTPRICE REAL 实际售价 3.4数据库结构的实现 可以通过SQLServer企业管理器来创建数据库,也可以通过SQL查询分析器执行SQL 语句来创建数据库。 //首先,判断要创建的表格的表格是否已存在,如果已经存在,则删去已有的表格,创建新的表格, 如果不存在则直接创建该表格。 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[COMPANY]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[COMPANY] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MATERIEL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[MATERIEL] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MATERIELCLASS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[MATERIELCLASS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PAYDETAIL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PAYDETAIL] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PAYMODE]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PAYMODE] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SALEBILL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[SALEBILL] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SALEDETAIL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[SALEDETAIL] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USERS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[USERS] GO 创建表COMPANY CREATE TABLE [dbo].[COMPANY] ( [COMPANYNAME] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [FLOORNUMBER] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO //使用SQL语句,根据各个表的属性,创建表格。 创建表MATERIEL CREATE TABLE [dbo].[MATERIEL] ( [ID] [int] NOT NULL , [NAME] [nvarchar] (50) COLLATE Chinese_PRC_CI_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 , [OPTIONS] [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 [PRIMARY] GO 创建表MATERIELCLASS CREATE TABLE [dbo].[MATERIELCLASS] ( [ID] [int] NOT NULL , [NAME] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [DISCOUNT] [smallint] NULL , [PARENT] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO 创建表PAYDETAIL CREATE 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) COLLATE Chinese_PRC_CI_AS NULL , [ACTTOTAL] [real] NULL , [VALTOTAL] [real] NULL ) ON [PRIMARY] GO 创建表PAYMODE CREATE TABLE [dbo].[PAYMODE] ( [ID] [smallint] NOT NULL , [NAME] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO 创建表SALEBILL CREATE TABLE [dbo].[SALEBILL] ( [ID] [nvarchar] (14) COLLATE Chinese_PRC_CI_AS NOT NULL , [TABLENO] [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] NULL , [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 [PRIMARY] GO 创建表SALEDETAIL CREATE TABLE [dbo].[SALEDETAIL] ( [BILLID] [nvarchar] (14) COLLATE Chinese_PRC_CI_AS NOT NULL , [MATERIELID] [smallint] NOT NULL , [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] NULL , [PRINTED] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [ACTPRICE] [real] NULL ) ON [PRIMARY] GO 创建表USERS CREATE 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 , [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 Chinese_PRC_CI_AS NULL , [DISCOUNT] [int] NULL ) ON [PRIMARY] GO 3.5数据库的连接 数据库的连接采用ADO方式。使用ADO前必须在工程的stdafx.h头文件里用直接引入符号 #import引入ADO库文件,以使编译器能正确编译。代码如下所示: #import "c:\program files\common files\system\ado\msado15.dll"no_namespaces rename("EOF" adoEOF") 。 数据库连接的代码在MyPos.cpp中,其主要代码如下。 BOOL CMyPosApp::InitInstance() { //Add splash image 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) return FALSE; //以下是连接SqlServer2k数据库 HRESULT hr; try { hr = 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 Source为数据源所在的计算机名,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 remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif //SetDialogBkColor (RGB (130,194, 220), RGB ( 16,20, 255 ) ); CLogonDlg logdlg; if(logdlg.DoModal()==IDOK) CString sql="SELECT * FROM USERS where LOGID='"+theApp.name+"'"; else return 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 handle when the dialog is // dismissed with OK } else 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 application's message pump. return TRUE; } 注意:设置了连接超时时间,若连接操作在3秒内没有返回结果,则表示连接失败, 直接返回出错消息。防止阻塞,导致死机。 4 功能模块实现 4.1登录模块设计 登录模块的主要工作流程是:用户通过输入用户名和密码进入系统,同时保持自己的操作权限。该模块的实现主要由CLogonDlg.cpp提供。因为这是对话框程序,所以CLogonDlg类继承自CDialog。“用户名”为CombBox控件,在初始化时会将数据库中所有的用户名提取出来并显示在控件中,如图4所示。 图4登录对话框 4.1.1 模块的初始化 模块初始化的主要作用是将ID显示在下拉列表中,方便用户的选择,其核心代码如下。 BOOL ClogonDlg::OnInitDialog() { CDialog::OnInitDialog(); //读出数据库中的用户名,显示在控件中。 int i,recordcount; CString sql="select LOGINID from USERS "; try { m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenSta tic,adLockOptimistic,adCmdText); recordcount=m_pRecordset->GetRecordCount();//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; } return 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 validation here UpdateData(); 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+"'"; try { m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenSta tic,adLockOptimistic,adCmdText); if(m_pRecordset->adoEOF) AfxMessageBox("用户名或密码错误~"); else { // theApp.name=m_logid; theApp.name=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("NAME"); theApp.pwd=m_pwd; CDialog::OnOK(); return; } m_pRecordset->Close(); } catch(_com_error e)///捕捉异常 { CString 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 前台销售管理模块设计 前台销售管理模块是系统最重要的模块之一,主要作用是与顾客交互,包括开单、点菜、结账、打印、挂账等常用操作,界面响应也比较复杂,效果如图5所示。 图5 前台销售模块界面 当顾客需要开单时,单击下方的“F1 开单”按钮,依次输入桌号、就餐人数等信息,这时系统会依据运行时的信息自动填入时间、单据状态等项,然后在列表的名称格中单击右下部的黑色矩形按钮,调出菜单选择界面,如下图6所示。选择需要的商品, 单击“确定”按钮后,选择的商品条目信息便显示在表格中。 图6 商品选择模块界面 当顾客需要结账时,在左侧选定需要结算的账单,单击下方的“F5 结账”按钮,调出对应的结账对话框,如图7所示,填入对应的折扣信息和顾客的付费信息,便可以实现快速的找零工作。同时可以在结账对话框实现账单的挂账操作。当需要其他操作是,如销单、调单、打印、下班等操作,只需要单击对应的按钮即可。 图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_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 | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT; lvc.fmt=LVCFMT_LEFT; lvc.iSubItem = 0; lvc.pszText = _T("序号"); lvc.cx = 70; m_oFormlist.InsertColumn(1,&lvc); lvc.iSubItem = 1; lvc.pszText = _T("名称"); lvc.cx = 220; m_oFormlist.InsertColumn(2,&lvc); lvc.iSubItem = 2; lvc.pszText = _T("数量"); lvc.cx = 80; m_oFormlist.InsertColumn(3,&lvc); lvc.iSubItem = 3; lvc.pszText = _T("金额"); lvc.cx = 120; m_oFormlist.InsertColumn(4,&lvc); //Add all bill whos state is "等待" to listbill. CString sql="Select * from SALEBILL where STATUS<>'已结帐'"; _RecordsetPtr m_pRecordset; //Must define it in function!!!! try { m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenSta tic,adLockOptimistic,adCmdText); while(!m_pRecordset->adoEOF) { m_oListbill.AddString((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("ID")); m_pRecordset->MoveNext(); } m_pRecordset->Close(); } catch(_com_error e)///捕捉异常 { CString stemp; stemp.Format("[初始化]读取 '等待' 单据出错:%s",e.ErrorMessage()); AfxMessageBox(stemp); } //Select the last billid in listbox and read its items to listctrl and head to edit. int ncount=m_oListbill.GetCount(); if(ncount>0) { CString sbillid; int nselect; nselect=m_oListbill.SetCurSel(ncount-1); m_oListbill.GetText(nselect,sbillid); ReadBillHead(sbillid); ReadToFormlist(sbillid); } else { //Put the button to the first list row. //将button移到合适的位置并设置其大小 m_oFormlist.GetWindowRect(&rect); m_oButton.MoveWindow(440,95, rect.right/33, rect.bottom/25); m_oButton.BringWindowToTop(); m_oButton.ShowWindow(SW_SHOW);//从隐藏变为显示 } theApp.pWnd=GetSafeHwnd();//Initialize pWnd; m_BMButton3.AutoLoad(IDC_BUTTON_ADDF,this); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } 在系统中“开单”操作是指营业员开始一个新的账单,并记录顾客的点菜内容。模 块对“开单”事件响应的代码如下。 void CPosDlg::OnButtonAddf() { CString snowtime,sfloor,snewid,sbillno; CString sql; _RecordsetPtr m_pRecordset; //Must define it in function!!!! sfloor=GetCompanyFloor(FALSE); //Clear the edit ctrl. m_oTableno.SetWindowText(""); m_oPeasons.SetWindowText(""); //得到系统时间 CTime now=CTime::GetCurrentTime(); snowtime=now.Format(_T("%Y-%m-%d %H:%M:%S")); sbillno=GenNewBillID(); sql="Insert into SALEBILL (ID,SALES,BEGINDATE,ENDDATE,STATUS,TOTAL,ACTTOTAL,PAYMODE,FLOOR) values ('"+sbillno+"','"+theApp.name+"','"+snowtime+"','to-be-set','等待',0,0,1,'"+sfloor+"')"; try { _variant_t RecordsAffected; theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format("[开单]生成单据出错:%s",e.ErrorMessage()); AfxMessageBox(temp); return; } m_oStatus.SetWindowText("等待"); m_oBegintime.SetWindowText(snowtime); m_oTotal.SetWindowText("0.00"); m_oActtotal.SetWindowText("0.00"); m_oListbill.AddString(sbillno); m_oListbill.SelectString(-1,sbillno); theApp.scallid=sbillno;//Get current bill id. m_oFormlist.DeleteAllItems(); RECT rect; m_oFormlist.GetWindowRect(&rect); m_oButton.MoveWindow(440,95, rect.right/40, rect.bottom/35); m_oButton.BringWindowToTop(); m_oButton.ShowWindow(SW_SHOW);//从隐藏变为显示 } 系统中“结账”操作为营业员对顾客的买单操作。模块对“结账”事件响应的代码 如下。 void CPosDlg::OnButtonCheckf() { int iOption; iOption = m_oListbill.GetCurSel(); if(iOption==-1) return; m_oListbill.GetText(iOption, theApp.scallid);//得到选中项的文本 if(bGetBillStatus(theApp.scallid)) { AfxMessageBox("已结帐单据不能再结帐!"); return; } if(m_oFormlist.GetItemCount()==0) { AfxMessageBox("不能结帐空单据!"); return; } else { CCheckDlg checkdlg; checkdlg.DoModal(); } } 4.3 统计模块设计 统计模块是这个系统中很有特色的一个模块,提供的统计功能包括对销售的统计和对物品的统计两个部分,其界面如图8所示。 图8 统计信息界面 该模块代码的核心部分就是统计功能的实现,具体代码如下。 void CStatDlg::OnButtonStat() { int n; CString sql,sfloor,scompany,ssdate,sodate,sstime,sotime; CString sbegin,send,stotal; _RecordsetPtr m_pRecordset; int nselect=GetCheckedRadioButton(IDC_RADIO_SINGLE,IDC_RADIO_WEEK); switch(nselect)//Get if it is discount. { case IDC_RADIO_WEEK: n=0; m_oListtitle.SetWindowText(" ** 销售汇总报表 **"); break; case IDC_RADIO_SINGLE: n=1; m_oListtitle.SetWindowText(" ** 单品报表 **"); break; default: break; } int ncount=m_oListreport.GetCount()-1; for(int i=ncount;i>=0;i--)//Clear report listbox. m_oListreport.DeleteString(i); sql="Select * from COMPANY"; try { m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenSta tic,adLockOptimistic,adCmdText); if(!m_pRecordset->adoEOF) { sfloor=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("FLOORNUMBER"); scompany=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("COMPANYNAME"); } m_pRecordset->Close(); } catch(_com_error e)///捕捉异常 { CString sdate; sdate.Format("读取楼层号出错:%s",e.ErrorMessage()); AfxMessageBox(sdate); } m_oListreport.AddString(" "); int ns=32-scompany.GetLength()-sfloor.GetLength(); CString space=" "; for(int j=0;j=0;delcolumn--) m_oListmateriel.DeleteColumn(delcolumn); //设置list对话框的列 DWORD dwStyle; RECT rect; LV_COLUMN lvc; dwStyle = m_oListmateriel.GetStyle(); dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS ; m_oListmateriel.SetExtendedStyle(dwStyle); m_oListmateriel.GetClientRect(&rect); lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT; lvc.fmt=LVCFMT_LEFT; lvc.iSubItem = 0; lvc.pszText = _T("类别"); lvc.cx = 80; m_oListmateriel.InsertColumn(1,&lvc); lvc.iSubItem = 1; lvc.pszText = _T("名称"); lvc.cx = 150; m_oListmateriel.InsertColumn(2,&lvc); lvc.iSubItem = 2; lvc.pszText = _T("价格"); lvc.cx = 65; m_oListmateriel.InsertColumn(3,&lvc); //Read the 1st class's materiels to list. // CString sql="Select * from MATERIEL where CLASSID=1"; // ReadtoList(sql); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } 以上代码主要实现了list控件的初始化过程。本模块中比较困难的是“保存”事件的响应,其代码如下。 void CClassDlg::OnButtonSave() { CString sql,parent,name,sdiscount;//,stempid long discount; UpdateData(); //检查数据完整性 if(m_classname.IsEmpty()) { AfxMessageBox("类别名称不能为空~"); return; } m_oClassname.GetWindowText(name);//Get the current text in edit. if(bRepeat(name)==TRUE) { AfxMessageBox("类别名称重复~请重新输入~"); return; } if(AfxMessageBox("确定要保存修改吗,",MB_YESNO)==IDYES) { int nDiscount=GetCheckedRadioButton(IDC_RADIO1_DISCOUNT,IDC_RADIO2_DISCOUNT); switch(nDiscount)//Get if it is discount. { case IDC_RADIO1_DISCOUNT: discount=0; break; case IDC_RADIO2_DISCOUNT: discount=1; break; default: break; } sdiscount.Format("%d",discount); // stempid.Format("%d",m_tempid); try { _variant_t RecordsAffected; // sql="Update MATERIELCLASS set NAME='"+name+"',DISCOUNT='"+sdiscount+"' where ID='"+stempid+"'"; sql.Format("Update MATERIELCLASS set NAME='%s',DISCOUNT=%d where ID=%d",name,discount,m_tempid);//Must add''!!! theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); hCurrentItem=m_oTreeclass.GetSelectedItem ();//Get current item handle as sub's parent. m_oTreeclass.SetItemText(hCurrentItem,(LPCTSTR)(_bstr_t)(name)); } catch(_com_error e)///捕捉异常 { CString stemp; stemp.Format("修改类别出错:%s",e.ErrorMessage());// AfxMessageBox(stemp); return; } } } 上面的代码在将数据库以SQL的形式存入数据库之前,先需要对界面上的数据进行合法性检查,然后使用带有Update操作的SQL语句对数据库进行更新。注意,保存之后要对Tree控件进行刷新操作。 详细信息界面中“保存”响应事件的代码如下。 void CMaterielDlg::OnButtonMsave() { CString sql="select * from Materiel"; CString snewid,sname,sdiscount,sprice,ssupply,sshopcode,sbarcode; CString sMID; _RecordsetPtr m_pRecordset; //Must define it in function!!!! UpdateData(); //检查数据完整性 m_oMname.GetWindowText(sname);//Get the current text in edit. m_oMprice.GetWindowText(sprice); if(sname==""||sprice=="") { AfxMessageBox("请输入商品名称、价格~"); return; } m_oMname.GetWindowText(sname);//Get the current text in edit. int discount=m_oMdiscount.GetCurSel(); sdiscount.Format("%d",discount); if(m_oSupply.GetCheck()==0) ssupply="0"; if(m_oSupply.GetCheck()==1) ssupply="1"; m_oMprice.GetWindowText(sprice); m_oMshopcode.GetWindowText(sshopcode); m_oMbarcode.GetWindowText(sbarcode); if(lNewID>lMID) { if(bRepeat(sname)==TRUE) { AfxMessageBox("商品名称重复,请重新输入~"); return; } snewid.Format("%d",lNewID); try { m_pRecordset.CreateInstance("ADODB.Recordset"); m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenSta tic,adLockOptimistic,adCmdText); m_pRecordset->AddNew();//insert the current into database. m_pRecordset->PutCollect("ID",_variant_t(snewid)); m_pRecordset->PutCollect("NAME",_variant_t(sname)); m_pRecordset->PutCollect("DISCOUNT",_variant_t(sdiscount));//Here m_discount must be a float. m_pRecordset->PutCollect("SUPPLY",_variant_t(ssupply)); m_pRecordset->PutCollect("PRICE",_variant_t(sprice)); m_pRecordset->PutCollect("SHOPCODE",_variant_t(sshopcode)); m_pRecordset->PutCollect("BARCODE",_variant_t(sbarcode)); m_pRecordset->PutCollect("CLASSID",_variant_t(sclassid)); m_pRecordset->Update();//保存到库中 m_pRecordset->Close(); UpdateData(FALSE); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format("增加商品出错:%s",e.ErrorMessage()); AfxMessageBox(temp); return; } } else if(AfxMessageBox("确定修改商品资料吗,",MB_YESNO)==IDYES) { _variant_t RecordsAffected; sMID.Format("%d",lMID); sql="Update MATERIEL set NAME='"+sname+ "',PRICE="+sprice+ ",DISCOUNT="+sdiscount+ ",SHOPCODE='"+sshopcode+ "',BARCODE='"+sbarcode+ "',SUPPLY="+ssupply+" where ID="+sMID+""; try { theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); UpdateData(FALSE); } catch(_com_error e)///捕捉异常 { CString temp; temp.Format("修改商品资料出错:%s",e.ErrorMessage()); AfxMessageBox(temp); return; } } CString sql1="Select * from MATERIEL where CLASSID="+sclassid+""; ReadtoList(sql1); } 以上代码在将数据以SQL的形式存入数据库之前,首先要对界面上的数据进行合法性检查,然后使用带有Update语句的SQL语句对数据库中的数据进行更新。 5 结论 本餐饮管理系统界面简单实用,可靠方便的,有助于餐饮企业通过规范运行流程,提高服务质量和管理效率,实现运行与服务流程的流畅与高效;另一方面,通过数据分析和流程控制,实现管理效益。该餐饮管理系统,具有手工管理所无法比拟的优点。例如:查找方便、保密性好、可靠性高、寿命长、成本低、维护方便等。这些优点都能够极大的提高企业信息管理的效率和经济效益,实现了企业的管理信息的计算机化、系统化。 基于VC++的餐饮管理系统的设计与实现涉及多方面的理论、 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 和技术,由于自己在开发经验上的不足,本系统还有一些问题需要解决,需要在实际应用中不断积累和完善。例如:该系统只考虑了一些简单情况,如果要管理更复杂的信息还需要进一步完善系统的功能。 参考文献 [1] 刘卫国 严晖 编著. 数据库技术与应用:SQL Server.北京:清华大学出版社,2007. [2] 国家863中部软件孵化器编著. Visual C++从入门到精通.北京:民邮电出版社, 2010,4. [3] 施昌权, 等编著. 新手学Visual C++.北京:北京新希望电子出版社, 2010. [4] 强锋科技 朱洪波编著. Visual C++ 6.0 完全自学宝典. 北京:清华大学出版社, 2008,7. [5] 李军,等编著.新手学SQL Server.北京:北京新希望电子出版社, 2010. [6] 王正军,主编. Visual C++ 6.0程序设计从入门到精通.北京:人民邮电出版社,2006. 清华大学出版社,2008,1. [7] 陈克力,主编. SQL Server 2005编程基础. 北京: [8]黄金明 ,主编.Visual C++ 6.0基础与实例教程.北京:中国电力出版社,2007. [9]夏冰冰,主编. 数据库原理及应用:SQL Server 2000.北京:国防工业出版社,2009 [10] 白雪峰,贺春林.酒店餐饮管理系统的设计与实现. 电脑知识与技术学术交流,2010, 02X期. [11] 李宏,电子菜单:E时代用餐方式. 宁波经济,2009,7 致谢 本学位论文是在我的指导老师易金聪老师的亲切关怀与耐心指导下完成的。从课题的选择到论文的最终完成,易老师像一位友善的朋友始终给予我细心的指导和不懈的支持。易老师平易近人,对学生认真负责,在他的身上,我们可以感受到一个学者的严谨的治学态度、渊博的知识、无私的奉献精神让我受益匪浅,并且将终生受用。希望借此机会向易老师表示最衷心的感谢~ 学院其他老师和同学的互相帮助是分不开的, 此外,本文最终得以顺利完成,与金山 虽然他们没有亲自参与我的论文指导,但在开题时也给我提供了一系列意见和可行性的建议,在此向他们表示衷心的感谢~ 最后要感谢的是我的父母,感谢他们这些年来的支持和关爱,在未来的日子里,我会更加努力的学习和工作,不辜负父母对我的殷切期望~我一定会以自己的实际行动来好好孝敬和报答他们~
本文档为【[精品论文]基于VC++ 农庄餐饮管理系统的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_842972
暂无简介~
格式:doc
大小:273KB
软件:Word
页数:50
分类:生活休闲
上传时间:2017-09-21
浏览量:17