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

下载本文档

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

文档简介

设计题目:_ 基于VC+ 农庄餐饮管理系统 的设计与实现 系 : 信息与机电工程系 专业年级:_电子信息工程2007级 _ _学 号:_ _ _姓名:_ _ _ _指导教师、职称:_ _ _ 2011 年 5 月 14 日 目录目录2Abstract41 引言52 系统总体设计62.1系统功能分析62.2 系统功能模块设计62.3开发系统及其工具的选择8Visual C+介绍8SQL Server简介83 数据库设计93.1 系统流程分析93.2数据库概念结构设计103.3数据库逻辑结构设计113.4数据库结构的实现143.5数据库的连接184 功能模块实现214.1登录模块设计214.1.1 模块的初始化224.1.2 登录验证234.2 前台销售管理模块设计244.3 统计模块设计304.4 基础资料模块设计335 结论41参考文献:42致谢42 摘 要随着我国市场经济的快速发展,各行业都呈现出生机勃勃的发展景象,其中餐饮业的发展尤为突出。但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理方式,整体科技含量低。随着餐饮企业规模和数量的不断增长,手工管理模式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升。 本论文主要针对中小型饭店餐饮管理中的一些问题,将其与计算机信息管理系统结合起来,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。前台我们采用功能强大的可视化开发软件VC+ 6.0开发设计主界面,利用SQL Server做为后台数据库。主要分成登录信息管理、前台信息管理、查询管理、营业设置与财务查询等五大功能模块,可以帮助餐饮企业处理日常工作业务,规范管理工作和操作流程,是餐饮行业的得力助手。另外,本餐饮管理系统具有强大的统计分析功能,可以帮助经营者分析企业的经营状况。系统运行后可大大提高现代餐饮管理水平和服务档次.创造可靠、高效、便捷、卫生的餐饮管理环境,最大限度降低餐饮管理运营成本,提高经营效益。关键词: 餐饮管理,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 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 its 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, its 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 Server1 引言由于餐饮业门坎较低,家族式管理的颇多,特别是由于自身经验的缺乏或对餐饮行业管理理解的不够,在经营过程中会有各种各样难以预测的状况,公司运行的效率比较低下。许多企业争先恐后的上规模、上档次、比菜品、比服务、拼价格,使餐饮市场竞争激烈,但是许多农庄餐饮企业缺乏对市场的应变能力和灵敏的信息工具。据相关调查显示,大部分餐馆对于信息化管理水平的运用,目前仍处在初级摸索阶段。许多餐饮管理者,由于缺乏对于先进管理理念的理解,以及对信息化的认识和意识不够,再加上目光短浅舍不得投入,以致使餐馆的管理,至今仍停留在一个比较原始和落后的水平上,餐馆的发展因此很受限。特别是在现今网络经济的时代,许多餐饮企业还处在手工及半手工状态,即使有计算机也只是当个点菜器和计算器用,并没有真正通过计算机系统来实现改造流程、强化管理、降低成本、堵漏节流等作用。本餐饮管理系统界面简单实用,可靠方便的,有助于餐饮企业通过规范运行流程,提高服务质量和管理效率,实现运行与服务流程的流畅与高效;另一方面,通过数据分析和流程控制,实现管理效益。该餐饮管理系统,具有手工管理所无法比拟的优点。例如:查找方便、保密性好、可靠性高、存储量大、寿命长、成本低、维护方便等。把计算机用于餐饮企业管理,可在很大程度上提高管理者分析和决策的科学性,提高经营管职水平,带来更多的顾客,使企业取得更好的经济效益。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能够满足今天的商业环境要求不同类型的数据库解决方案。它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。3 数据库设计3.1 系统流程分析 前面的分析中已经定义了系统各个功能模块,属于静态建模的范围。在系统运行时刻的动态模型应该由系统的流程决定。当用户登录系统后,可以拥有权限来进行备忘录详细信息编辑、类型信息编辑及查询等操作,具体流程图如图2。 图2 系统流程图企业基本信息:包括企业的名称等基本信息。用户基本信息:包括用户ID、姓名、登陆ID、登陆密码、职位、性别、出生日期、籍贯、员工编号、权限等信息。食物基本信息:包括的内容有ID、名称、折扣、价格、简称、交易码、类别码、数量等信息。 账单基本信息:包括的内容有ID、餐桌号、人数、开单人、开始时间、结束时间、 状态显示、账单总额、实际支付金额、支付类别、折扣、点菜编号、点菜数量、菜式类别等信息。3.2数据库概念结构设计 图3 餐饮管理系统E-R图3.3数据库逻辑结构设计企业信息表(COMPANY)包含了企业的基本信息,这个基本信息将会显示在程序的状态栏中。表3-1 企业信息表列 名类 型长 度可否为空说 明COMPANYNAMENVARCHAR50NULL公司名称LOCATIONNVARCHAR50NULL地点 用户信息表(USERS)包括了系统中各个登录用户的具体信息,其中将对每个用户的权限进行管理和设定。表3-2 用户信息表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NULL姓名LOGINIDNVARCHAR50NULL登陆IDPSDNVARCHAR50NULL登陆密码TITLENVARCHAR50NULL职位SEXNVARCHAR50NULL性别HOMENVARCHAR50NULL籍贯EMPLOYNUMBERNVARCHAR50NULL员工编号POWERNVARCHAR50NULL权限字段DISCOUNTNVARCHAR50NULL折扣物品信息表(MATERIEL)存放了基本的食物的信息,系统模块中的查询功能大部分都要基于这个表进行操作。表3-3 物品信息表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NULL名称DISCOUNTSMALLINT2NOT NULL折扣PRICEREAL4NOT NULL售价PINYINNVARCHAR50NULL标识(拼音)SHOPCODENVARCHAR50NULL标识(代码)BARCODENVARCHAR50NULL标识STYLESMALLINT2NULL风格标识CLASSIDSMALLINT2NOT NULL类别标识SUPPLYSMALLINT2NULL数量CONTENTNVARCHAR50 NULL说明物品分类表(MATERIELCLASS)维护了一个物品的层次结构,主要用在对于物品的分类上,在界面中选择物品的分类树的编辑就是对这个表进行的操作。表3-4 物品分类表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NOT NULL名称DISCOUNTSMALLINT2NULL折扣PARENTNVARCHAR50NOT NULL父亲节点 支付方式表(PAYMODE)存放了关于支付方式和其他编号的映射关系。表3-5 支付方式表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号NAMENVARCHAR50NOT NULL名称 支付明细表(PAYDETAIL)主要用于结账信息的打印,在结账模块中进行的数据访问操作主要基于该表进行。表3-6 支付明细表列 名类 型长 度可否为空说 明BILLIDNVARCHAR50NOT NULL主键账单编号CLASSNVARCHAR50NOT NULL类别DISCOUNTNVARCHARNULLNULL折扣TOTALREAL4NOT NULL售价PINYINNVARCHAR50NULL标识(拼音)账单信息表(SALEBILL)记录了账单从开单开始一直到结账的生命过程中所有需要用到的信息,也是系统常用的表。表3-7 账单信息表列 名类 型长 度可否为空说 明IDINT4NOT NULL主键系统编号TABLENONVARCHAR50NULL桌号SALESNVARCHAR50NULL服务员编号TOTALREAL4NULL售价BEGINDATENVARCHAR50NULL开始时间ENDDATENVARCHAR50NULL结束时间DISCOUNTNVARCHAR50NULL折扣PEOPLESMALLINT2NULL人数FLOORNVARCHAR50NOT NULL楼层 出货明细表(SALEDETAIL)保存了系统整个生命周期内卖出的食品的详细记录,在查询模块中可以通过这个表对店里的物品卖出情况进行统计和分析。表3-8 出货明细表列 名类 型长 度可否为空说 明BILLIDNVARCHAR50NOT NULL主键账单编号MATERIELIDSMALLINT2 NULL物品编号ITEMCOUNTREAL4NOT NULL数量ITEMTOTALREAL4NOT NULL物品总价CLASSIDSMALLINT2NULL类别编号MEMONVARCHAR50NULL备注ACTPRICEREAL4NULL实际售价3.4数据库结构的实现 可以通过SQLServer企业管理器来创建数据库,也可以通过SQL查询分析器执行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 OBJECTPROPERTY(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 OBJECTPROPERTY(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, NIsUserTable) = 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 table 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_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 PRIMARYGO创建表MATERIELCLASSCREATE 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 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) COLLATE 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 ,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 PRIMARYGO创建表SALEDETAILCREATE 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 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 ,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 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 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;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 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 _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 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 handle 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;注意:设置了连接超时时间,若连接操作在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 ;trym_pRecordset.CreateInstance(ADODB.Recordset);m_pRecordset-Open(_variant_t)sql,_variant_t(IDispatch*)theApp.m_pConnection,true),adOpenStatic,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 hereUpdateData();if(m_logid.IsEmpty()|m_pwd.IsEmpty()AfxMessageBox(请输入

温馨提示

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

评论

0/150

提交评论