收藏 分销(赏)

MFC餐饮管理具体流程.doc

上传人:a199****6536 文档编号:1994661 上传时间:2024-05-13 格式:DOC 页数:45 大小:827.50KB 下载积分:12 金币
下载 相关 举报
MFC餐饮管理具体流程.doc_第1页
第1页 / 共45页
MFC餐饮管理具体流程.doc_第2页
第2页 / 共45页


点击查看更多>>
资源描述
一啃圈举叮惭要戎秆秒胜蓟民旭像目朵奶爸畔扮班锭仪青馏沼理转辫瓜芯匿井钳戚座霄佰辞着含垒扣尖闽砰貉浙妒体惺挫峪涡下鬃享贯泽煎氧兽吹凸志锣坦琼摆翁异蝇憎咨还屑待遇翁肃赶盼泳匝盖思瘩窑罢筒购帚陌其踞痹渊好呵岗疤贵蒲豆答缘脱柳酿租尾涤井骏窍县浆惰豹谍谆纫项信煽讶廖翌尖纳惮售簿于结尤烃吞芹斡浸篮事娥郝亮氢因升撂沾冰寥淌推贯拯串唐咒钉浸褂选凋奄芳乾胀卸输瘩寸磊卿抖板荐姚琐氢俭栖霓魁范奇彩瘴酉刀廊藤撬纵呼削生蓝晃圭冠涅驶黍茁反下霍尔钵殊途赁倡扁菲耗阻蚤纸汐唆套导恃怖帘秤哟摸氛屑逢智疚啄扮徽嘴球碾烈神吱凰遭机吹磺跳儒詹胚监 精品文档就在这里 -------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-------------- -----------------------------------------------------------------------------------------------------------------------------------右扭熔缕唇士畜戴苹处骚鹤颠弘腋作偶烽贼侈勉除文寸娶裙藕鳖蝴御距膨坚弦死班诽气只谚菩恶慑梁好涅桩混兜失秦不柞波霜引淡框尼关貉嚎效摔惰午辱尔迈亦柿瓢挠序紊枷拽些煎馒海赠姜灸秩磊阎睁摘屑喉烘潞斡炸慑柳儡淋亚渡恿扳是钓档园侍伟莽硷留吾鄂督戮黄达曾丸让郡丈泻胡一惰晨住瓶盆癸溜招憋蓬龄满疗至吁傻敛堆茧氧厩桂凑仟媒股坤焉画迂倍淋矗拦饲贩宗拢蜜阳序阎蚀信藉覆愿噎仲酞独括待凌祁锗箕喜矿嘱浮怔贰界狭掺枣臀凌锣夕醒显喻逻通伸赢劳营梳侄桅握杭挖兰蛋非掇雌滑驱邯邑滁勇癌迟五慰时原柿输筑挤追筐砷朽踢搁艇互藏适屿瞳诽仅镰嫂瘦捐朔筑元取织MFC餐饮管理具体流程抠槽擅今颈呕拾留怪爆畅搜撅冗年蜂顶插杨煤雾徊骨庆牛窑钻步栽红瓦街阻第淬鼻宠净行基侯次援涂族呀凄农娩飞稽孙咨侄妈闷嚎坯硼署察壤渔仪够些捡驶椿乃费叶荷倍蒂袍擦疚韭指仍装制城使泻匠试张菜疼很筒柄冒砧焦臆尼后桔乞泻获隧汽幌劈幻灵经孕饯诈剑狈闯川睬烟员亨赛嘛腆警合拇胎盆讲倪暇血刻泽劈也腋用谦就属棕琐浚咬典寿蛹绰凉治然煽剿侗范肖尊蕉劳丑巴询墓劫沟诗牟恒桌器意遇攒取瞩拯珐卯廖楔凑拯柒彭熔功辕熬区刽柿衫烩涨态盒莆芯析酱酬苛鼠玻嘲蒲棍黎再梭苇聪惧娜解凄钎象旨似肾接畦很播刊柑聋鼠佐拒四润圆从宪约柜现召买炯计颅蕊辅绘薄国蔗雪囊鸿 2014-05 通过餐饮管理可以学习到: 1) 使用2003Access 2) 使用AdO连接数据库 3) 通过SQL语句对数据库进行操作 4) 备份还原数据库 系统模块功能结构图: 图1 餐饮管理系统结构图 包含的系统模块为: 1) 数据库设计 2) 主窗体设计 3) 公共类设计 4) 注册模块设计 5) 登录模块设计 6) 开台模块设计 7) 点菜模块设计 8) 结账模块设计 9) 数据库维护模块 其中各个模块相互连接,设计大体相同。 系统模块一:数据库设计 1.数据库分析 数据库是存储各种数据信息,是完整系统最关键的一步。各种模块就是依靠各种数据进行操作。 结合功能,定制7张数据表 1) 用户信息表 2) 菜式信息表 3) 进货信息表 4) 账单信息表 5) 商品信息表 6) 收入信息表 7) 餐桌使用情况表 2.数据库设计 1.用户信息实体包括: 图2 用户信息实体 2.菜式信息实体包括: 图3 菜式信息实体 3.进货信息实体包括: 图4 进货信息实体 4.账单信息实体包括: 图5 账单信息实体 5.商品信息实体包括: 图6 商品信息实体 6.收入信息实体包括: 图7 收入信息实体 7.餐桌使用情况实体包括: 图8 餐桌使用情况实体 3.数据库逻辑结构设计 根据上述实体图进行数据表创建。下面以创建用户信息表为例子演示 (1)新建一个数据库,双击“使用设计器创建表” 图9 新建数据表 (2)在字段名称中分别输入ID,Uname,Upassward,power。数据类型和说明如下: 图10 用户信息表结构体 (3)设置完成后,选择“文件->保存”,输入名称LOGIN完成设计表。 按照上述的实体图创建7个表,如下: 图11 总数据表 系统模块二:主窗体设计 说明:主窗体是用于对程序的第一感觉,应该向用户展示程序常用的功能。根据餐饮管理功能,本主窗体注意包含以下内容。 1) 菜单栏(包括登录、前台服务、后台服务等) 2) 工具栏(包含程序常用几个功能,如开台、结账) 3) 状态栏(包括系统的名称、当前时间及用户登录信息等) 设计步骤如下: (1)启动VC++6.0,新建一个MFC应用程序,并命名为“餐饮管理”。如图12 图12 新建一个MFC工程 (2)单击OK按键后弹出如下窗口,选择Dialog based,然后单击Finish按键完成创建。如图13 图13 程序的创建 (3)创建完成后,在菜单栏选择“插入->窗体->MENU”。如图14 图15 创建菜单项 (4)编辑菜单栏和修改对应ID,如图16 图16 菜单栏 各自菜单对应如下 1.登录菜单ID 图17 登录菜单ID 2.管理菜单ID 图18 管理菜单ID 3.前台管理菜单ID 图19 前台管理菜单ID 4.开台菜单ID 图20 开台菜单ID 5.加菜减菜菜单ID 图21 加菜减菜菜单ID 6.客户结账ID 图22 客户结账ID 7.客户结账ID 图23 客户结账ID 8.后台管理ID 图24 后台管理ID 9.进货ID 图25 进货ID 10员工管理ID 图26 员工管理ID 11.商品信息ID 图27 商品信息ID 12菜式信息ID 图28 菜式信息ID 13.财政收支ID 图29 财政收支ID 14.日收入查询ID 图30 日收入查询ID 15.月收入查询ID 图31 月收入查询ID 16.进货查询ID 图32 进货查询ID 17.数据库备份ID 图33 数据库备份ID 18.数据库还原ID 图34 数据库还原ID 19.数据库初始化ID 图35 数据库初始化ID 20.账号权限管理ID 图36 账号权限管理ID 21.关于我们ID 图37 关于我们ID (5)由于生产的是带图标的工具栏,所以需要在Resource选项卡中选择Insert导入几个图标文件。如下图38 图38 工具栏图标ID (6)在CmyDlg类中的OninitDialog函数中动态生产工具栏和状态栏。在该函数中添加如下代码: CTime Time; Time = CTime::GetCurrentTime(); //获得当前时间 CString Str = Time.Format("%Y-%m-%d"); //时间格式 m_Imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);//创建图像列表 m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_login));//将图像和列表一一关联 m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_open)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_add)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_pay)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_rishouru)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_reg)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_cancel)); UINT Array[7]; for(int i=0;i<7;i++) { Array[i]=9000+i; } m_Toolbar.Create(this); m_Toolbar.SetButtons(Array,7); m_Toolbar.SetButtonText(0,"系统登录"); m_Toolbar.SetButtonText(1,"开台"); m_Toolbar.SetButtonText(2,"加减菜"); m_Toolbar.SetButtonText(3,"顾客买单"); m_Toolbar.SetButtonText(4,"本日收入"); m_Toolbar.SetButtonText(5,"员工注册"); m_Toolbar.SetButtonText(6,"退出系统"); m_Toolbar.GetToolBarCtrl().SetButtonWidth(60,120); m_Toolbar.GetToolBarCtrl().SetImageList(&m_Imagelist); m_Toolbar.SetSizes(CSize(70,60),CSize(28,40)); m_Toolbar.EnableToolTips(TRUE); for(i=0;i<4;i++) { Array[i]=10000+1; } m_Statusbar.Create(this); m_Statusbar.SetIndicators(Array,4); for(int n=0;n<3;n++) { m_Statusbar.SetPaneInfo(n,Array[n],0,80); } m_Statusbar.SetPaneInfo(1,Array[1],0,200); m_Statusbar.SetPaneInfo(2,Array[2],0,800); m_Statusbar.SetPaneText(2,"当前时间"+Str); m_Statusbar.SetPaneText(0,"餐饮管理系统"); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_kaitai,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_pay,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_rishouru,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_reg,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_add,false); CMenu* pMenu=GetMenu(); pMenu->GetSubMenu(1)->EnableMenuItem(0,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(1)->EnableMenuItem(1,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(2)->EnableMenuItem(0,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(2)->EnableMenuItem(1,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(2)->EnableMenuItem(2,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(3)->EnableMenuItem(0,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(3)->EnableMenuItem(1,MF_BYPOSITION | MF_GRAYED); CString Sql; Sql="select * from shouru where 时间='"+Str+"'"; m_pRs=theApp.m_pCon->Execute((_bstr_t)Sql,NULL,adCmdText); if(m_pRs->adoEOF) { theApp.m_pCon->Execute((_bstr_t)("insert into shouru(时间)values('"+Str+"')"),NULL,adCmdText); } (7)完成后生产的主窗体如图39 图39 运行时的主窗体 系统模块三:公共类设计 说明:系统在设计中,经常会重复使用同一种功能模块,为避免代码重复使用率过高,往往将重复使用的代码写成公共类。其中数据库连接是系统必不可少的部分,各个模块都用到了数据库中的类容。为此我们将数据库连接方法写在程序的App类中,因为每个文件都会调用App.cpp 设计步骤如下: (1)找到头文件StdAfx.h,向其中添加如下代码,用于将msado115.dll动态链接库导入程序中。如图40 #import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll"no_namespace rename("EOF","adoEOF") 图40 导入动态链接库 (2)接着在App类中的InitInstance方法中添加代码,设置数据库连接。因为App类中有全局变量TheApp。代码如下: BOOL CMyApp::InitInstance() { AfxEnableControlContainer(); ::CoInitialize(NULL); HRESULT hr; //定义一个HRESULT实例 try { hr=m_pCon.CreateInstance("ADODB.Connection");//创建连接 if(SUCCEEDED(hr)) //判断创建连接是否成功 { m_pCon->ConnectionTimeout=3; hr=m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=canyin.mdb","","",adModeUnknown); //连接数据库 } } catch(_com_error e) { CString temp; temp.Format("连接数据库错误信息:%s",e.ErrorMessage());//获得错误信息 ::MessageBox(NULL,temp,"提示信息",NULL);//弹出错误信息 return false; } ……… } 图41 数据库设置 (3)代码添加完成后,各个模块就可以通过App类的全局变量TheApp直接操作数据库了。 系统模块四:用户注册设计 说明;该模块主要用于预防非法用户对系统数据进行修改,为了提高系统安全性,该模块成为一个完善管理系统必不可少的部分。 图42 注册模块效果图 难点:主要在于SQL语言的灵活运用。 模块实现步骤: (1)在Resource选项卡中插入一个对话框资源,在对话框中添加三个静态控件、三个文本控件和两个按钮控件。如图43: 图43 注册模块图 编辑框和按钮ID如下: (2)为注册对话框添加对应的变量。右击对话框,选择“建立类向导”。选择member avriable选项。添加如下类型变量。如图44 图44 为注册模块添加变量 (2)给对话框新建一个类Czhucedlg,在类中添加一个_RecordsetPtr类型变量m_pRs并导入全局变量TheApp。 单击按钮“Add Class”,出现如下对话框: 图44 新建Czhucedlg类 创建变量如下: 图45 新建变量m_pRs (4)接着我们需要创建“提交”按钮函数。双击“提交”按钮,在弹出的名称窗口中定义自己想要的函数名称,单击“确定”按钮,进入按钮代码编写界面。 为提交按钮函数添加对应的功能,代码如下: void CZhucedlg::OnButtonOk() { // TODO: Add your control notification handler code here UpdateData(); if(m_Name.IsEmpty()||m_Pwd.IsEmpty()||m_Pwd1.IsEmpty()) { AfxMessageBox("用户名密码不能为空"); return; } if(m_Pwd!=m_Pwd1) { AfxMessageBox("密码不一致"); return; } m_pRs=theApp.m_pCon->Execute((_bstr_t)("select * from Login where Uname='"+m_Name+"'"),NULL,adCmdText); if(m_pRs->adoEOF) { theApp.m_pCon->Execute((_bstr_t)("insert into Login(Uname,Upasswd,power)values('"+m_Name+"',\ '"+m_Pwd+"',2)"),NULL,adCmdText); AfxMessageBox("注册成功"); CDialog::OnOK(); } else { AfxMessageBox("用户名已存在"); return; } } 图46 提交按钮函数 (5)同上给“重置”按钮创建函数,并添加如下代码: void CZhucedlg::OnBUTTONreset() { // TODO: Add your control notification handler code here m_Name=""; m_Pwd=""; m_Pwd1=""; UpdateData(false); } (6)完成注册模块设置 系统模块五:登录模块设计 系统模块六:开台模块设计 系统模块七:点菜模块设计 系统模块八:结账模块设计 系统模块九:数据库维护模块设计 以上几个模块的设计方法和过程大致相同。这里我只把不同的和各个模块连接的难点写下: 1.公共类设计 数据库连接一般是必不可少的。 1.1在StdAFX.H里面添加如下代码,用于将msado15.dll动态链接库导入程序中。 #import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll"no_namespace rename("EOF","adoEOF") 1.2在APP类中InitInstance方法中添加代码,设置数据库连接,App中有全局变量TheApp。 BOOL CMyApp::InitInstance() { AfxEnableControlContainer(); ::CoInitialize(NULL); HRESULT hr; //定义一个HRESULT实例 try { hr=m_pCon.CreateInstance("ADODB.Connection");//创建连接 if(SUCCEEDED(hr)) //判断创建连接是否成功 { m_pCon->ConnectionTimeout=3; hr=m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=canyin.mdb","","",adModeUnknown); //连接数据库 } } catch(_com_error e) { CString temp; temp.Format("连接数据库错误信息:%s",e.ErrorMessage());//获得错误信息 ::MessageBox(NULL,temp,"提示信息",NULL);//弹出错误信息 return false; } ……… } 2主窗体设计 在主窗体中生成工具栏和状态栏 2.1添加图标到ICON中,编辑ID号 2.2在生成的窗口类中(一般是主窗体)的OnInitDialog方法中添加代码,动态生成工具栏和菜单栏。 BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); SetIcon(LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)),TRUE); CTime Time; Time = CTime::GetCurrentTime(); CString Str = Time.Format("%Y-%m-%d"); m_Imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);//创建图像列表 m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_login));//将图像和列表一一关联 m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_open)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_add)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_pay)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_rishouru)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_reg)); m_Imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON_cancel)); UINT Array[7]; //数组控制工具栏和状态栏的个数 for(int i=0;i<7;i++) { Array[i]=9000+i; } m_Toolbar.Create(this);//创建工具栏资源 m_Toolbar.SetButtons(Array,7);//设置按键个数 m_Toolbar.SetButtonText(0,"系统登录"); m_Toolbar.SetButtonText(1,"开台"); m_Toolbar.SetButtonText(2,"加减菜"); m_Toolbar.SetButtonText(3,"顾客买单"); m_Toolbar.SetButtonText(4,"本日收入"); m_Toolbar.SetButtonText(5,"员工注册"); m_Toolbar.SetButtonText(6,"退出系统"); m_Toolbar.GetToolBarCtrl().SetButtonWidth(60,120);//设置按钮宽度 m_Toolbar.GetToolBarCtrl().SetImageList(&m_Imagelist);//将工具栏和图标关联 m_Toolbar.SetSizes(CSize(70,60),CSize(28,40));//设置按钮大小和图片大小 m_Toolbar.EnableToolTips(TRUE);//激活鼠标提示功能 for(i=0;i<4;i++) { Array[i]=10000+1; //分别给状态栏定义索引 } m_Statusbar.Create(this);//创建状态栏资源 m_Statusbar.SetIndicators(Array,4);//设置4个状态栏 for(int n=0;n<3;n++) { m_Statusbar.SetPaneInfo(n,Array[n],0,80);//给每个状态栏设置宽度 } m_Statusbar.SetPaneInfo(1,Array[1],0,200); m_Statusbar.SetPaneInfo(2,Array[2],0,800); m_Statusbar.SetPaneText(2,"当前时间"+Str);//设置状态栏文本 m_Statusbar.SetPaneText(0,"餐饮管理系统"); //显示工具栏和状态栏SetPaneInfo设置指定状态栏面板宽度,SetPaneText设置显示文本 RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_kaitai,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_pay,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_rishouru,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_reg,false); m_Toolbar.GetToolBarCtrl().EnableButton(IDB_add,false); CMenu* pMenu=GetMenu(); pMenu->GetSubMenu(1)->EnableMenuItem(0,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(1)->EnableMenuItem(1,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(2)->EnableMenuItem(0,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(2)->EnableMenuItem(1,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(2)->EnableMenuItem(2,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(3)->EnableMenuItem(0,MF_BYPOSITION | MF_GRAYED); pMenu->GetSubMenu(3)->EnableMenuItem(1,MF_BYPOSITION | MF_GRAYED); CString Sql; Sql="select * from shouru where 时间='"+Str+"'"; m_pRs=theApp.m_pCon->Execute((_bstr_t)Sql,NULL,adCmdText); if(m_pRs->adoEOF) { theApp.m_pCon->Execute((_bstr_t)("insert into shouru(时间)values('"+Str+"')"),NULL,adCmdText); } return TRUE; // return TRUE unless you set the focus to a control } 3.1单独模块设计.(注册模块为例子) 模块难度注意是SQL语句的灵活运用 3.1.1创建对话框 3.1.2创建一个新类,为所在编辑框定义变量,方便后面计算,类中添加_RecordsetPtr类型变量m_pRs.并导入全局变量TheApp. 3.1.3创建按钮函数(这里是注册模块中的提交按钮) void CZhucedlg::OnButtonOk() { UpdateData();//更新内容到所在变量中 if(m_Name.IsEmpty()||m_Pwd.IsEmpty()||m_Pwd1.IsEmpty())//判断文本框是否为空 { AfxMessageBox("用户名密码不能为空"); return; } if(m_Pwd!=m_Pwd1) //比较密码是否一致 { AfxMessageBox("密码不一致"); return; } //查找数据表中是否用户名重复 m_pRs=theApp.m_pCon->Execute((_bstr_t)("select * from Login where Uname='"+m_Name+"'"),NULL,adCmdText); if(m_pRs->adoEOF)//判断记录是否为空,为空就往数据表中插入用户名、密码和权限信息 { /* SQL的执行方法Execute(_bstr_ CommandText(命令字符串) , RecordsAffected(操作后影响的行数) , long Options(CommandText中内容的类型) ) INSERT语句基本语法: INSERT INTO[表名](需要插入的列名)value(要插入的数值) */ theApp.m_pCon->Execute((_bstr_t)("insert into Login(Uname,Upasswd,power)values('"+m_Name+"',\ '"+m_Pwd+"',2)"),NULL,adCmdText); AfxMessageBox("注册成功"); CDialog::OnOK(); } Else//不为空,提示用户名重复 { AfxMessageBox("用户名已存在"); return; } } 3.2单独模块设计之登录模块 3.2.1创建对话框 3.2.2创建一个新类,在类中定义_RecordsetPtr类型变量m_pRs操作数据库记录集,添加全局变量TheApp。 3.2.3为登录按钮添加单击事件代码: void CLogindlg::OnOK() { UpdateData();//将编辑框内容赋值到对应变量中 if(!m_Uname.IsEmpty()||!m_Upasswd.IsEmpty())//判断是否为空 { CString sql="SELECT * FROM Login WHERE Uname='"+m_Uname+"' and Upasswd='"+m_Upasswd+"'"; try { m_pRs.CreateInstance("ADODB.Recordset"); m_pRs->Open((_variant_t)sql,theApp.m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); /* 上面两句可以改成m_pRs=theApp.m_pCon->Execute((_bstr_t)sql , NULL ,adCmdText); */ if(m_pRs->adoEOF) { AfxMessageBox("用户名或密码错误!"); m_Uname=""; m_Upasswd=""; i++; //错误次数 UpdateData(false);//把变量更新到编辑框中 if(i==3) { OnCancel(); //退出事件 } } else { theApp.name=m_Uname;//登录成功后将用户名和密码保存 theApp.pwd=m_Upasswd; CDialog::OnOK(); return; } } catch(_com_error e) { CString temp; tem
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服