超市管理系统MFCodbc(可编辑)_第1页
超市管理系统MFCodbc(可编辑)_第2页
超市管理系统MFCodbc(可编辑)_第3页
超市管理系统MFCodbc(可编辑)_第4页
超市管理系统MFCodbc(可编辑)_第5页
已阅读5页,还剩178页未读 继续免费阅读

下载本文档

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

文档简介

超市管理系统MFCodbc(可编辑)第一页,共188页。Contents数据库系统及其访问技术:采用MFC的ODBC数据库访问技术,从Access数据库里读取销售信息、商品情况、雇员信息及运货商的信息。这是一个小型的数据库应用,使用Access数据库就足够了。在这里借助MFC对ODBC封装类CRecordset,从该类派生应用程序里使用的CCommonRs类。以CCommonRs类为基础,实现对ODBC数据源的数据访问。MFCODBC:由于数据库应用程序是管理数据的重要方面,Microsoft开发了ODBCAPI的封装程序,为ODBC编程提供了一个面向对象的方法。MFC对ODBC的封装主要是开发了CDatabase类和CRecordSet类。使用时候需包含头文件D:\MicrosoftVisualStudio9.0\VC\atlmfc\include\afxdb.h

第一部分ODBC关于MFCODBC第二页,共188页。第一部分开发的两个类CRecordSet类用CRecordSet类实现对结果集的数据操作。CRecordSet类定义了从数据库接收或者发送数据到数据库的成员变量。成员变量m_hstmt代表了定义该记录集的SQL语句句柄,m_nFields成员变量保存了记录集中字段个数,m_nParams成员变量保存了记录集所使用的参数个数。CRecordSet的记录集通过CDatabase实例的指针实现同数据源的连接,即CRecordSet的成员变量m_pDatabase。关于MFCODBCCDatabase类CDatabase类用于应用程序建立同数据源的连接。CDatabase类为C++数据库开发人员提供了ODBC的面向对象的编程接口。CDatabase类包含一个m_hdbc变量,它代表了数据源的连接句柄。CDatabase类提供了对数据库进行操作的函数。CDatabase类提供的函数可以用于返回数据源的特定信息。第三页,共188页。第一部分开发的两个类关于MFCODBC1记录查询myRS.Open(AFX_DATABASE_USE_DEFAULT,strSQL);(1)声明参变量,代码如下: CStringstrName; intnAge;(2)在构造函数中初始化参变量如下 strName=_T(""); nAge=0; m_nParams=2;(3)将参变量与对应列绑定,代码如下: pFX->SetFieldType(CFieldExchange::param) RFX_Text(pFX,_T("Name"),strName); RFX_Single(pFX,_T("Age"),nAge);完成以上步骤之后就可以利用参变量进行条件查询了,代码如下:m_pmyRS->strName="刘鹏"; m_pmyRS->nAge=26; m_pmyRS->Requery();如果查询的结果是多条记录,可以利用CRecordSet类的成员函数Move(),MoveNext(),MovePrev(),MoveFirst()和MoveLast()来移动记录光标。第四页,共188页。第一部分开发的两个类关于MFCODBC2记录添加m_pmyRS->AddNew(); //在表的末尾添加新记录 m_pmyRS->SetFieldNull(&(m_pSet->m_type),FALSE); m_pmyRS->m_strName="刘鹏"; //输入新的字段值 m_pmyRS->m_nAge=26; //输入新的字段值 m_pmyRS-> Update(); //将新记录存入数据库 m_pmyRS->Requery(); //重新建立记录集3记录删除m_pmyRS->Delete(); if(!m_pmyRS->IsEOF()) m_pmyRS->MoveNext(); else m_pmyRS->MoveLast();4记录修改调用Edit()成员函数可以实现记录修改,在修改完成后需要调用Update()将修改结果存入数据库,代码如下: m_pmyRS->Edit(); //修改当前记录 m_pmyRS->m_strName="刘波"; //修改当前记录字段值m_pmyRS->Update(); //将修改结果存入数据库 m_pmyRS->Requery();第五页,共188页。第一部分开发的两个类关于MFCODBC5撤销数据库更新操作如果用户增加或者修改记录后希望放弃当前操作,可以在调用Update()函数之前调用Move()函数,就可以使数据库更新撤销了,代码如下: CRecordSet::Move(AFX_MOVE_REFRESH);6直接执行SQL语句但有的时候我们还想进行一些其他操作,例如建立新表、删除表、建立新的字段等等,这时就需要用到CDatabase类的直接执行SQL语句的机制。代码如下: BOOLCMyDB::ExecuteSQLWithReport(constCString&strSQL) { TRY { m_pMyDB->ExecuteSQL(strSQL); //直接执行SQL语句 } CATCH(CDBException,e) { CStringstrMsg; strMsg.LoadString(IDS_EXECUTE_SQL_FAILED); strMsg+=strSQL; returnFALSE; }END_CATCHreturnTRUE;}第六页,共188页。第一部分数据库设计/*一、数据库设计*/时间:2015年12月11日设计表格第七页,共188页。第一部分数据库设计数据库E-R思路(改)根据一个超市的整个运转流程,可以知道存在如下实体为:1.工作人员:管理员、销售员。2.库存商品。3.供应商。关于数据库第八页,共188页。第一部分实体信息工作人员(operator)属性信息工作人员的信息:工作人员:分为管理员、销售员两种。(以身份属性表示区分)在管理系统登录时,需要工作人员的用户账号、密码。系统需要记录每一位工作人员的相关信息便于随时联系。不同身份的工作人员操作系统的权限不同。关于数据库工作人员信息图第九页,共188页。第一部分实体信息库存商品(storage)库存商品的信息:商品:编号、名称、数量、进价、单价、入库信息(供应商、入库工作人员、入库时间、商品问题备注)关于数据库库存商品信息图第十页,共188页。第一部分实体信息供应商(provider)供应商的信息:商品:编号、名称、地址、相关信息(供应商联系人、联系方式)关于数据库供应商信息图第十一页,共188页。第一部分实体联系图实体之间联系工作人员——库存商品——供应商。(1)工作人员——库存商品销售、入库(2)供应商——库存商品提供商品关于数据库第十二页,共188页。第一部分联系属性图实体之间联系工作人员——库存商品1、销售(交易号+商品编号)2、入库()关于数据库联系——销售(sale)第十三页,共188页。第一部分联系属性图实体之间联系工作人员——库存商品1、销售()2、入库(入库单号+商品号)关于数据库联系——入库(putin)第十四页,共188页。第一部分建立数据库Database\stocks.mdb文件(创建5个表)关于数据库第十五页,共188页。Database\stocks.mdb文件(创建5个表)第十六页,共188页。第二部分添加数据源/*二、添加ODBC数据源*/时间:2015年12月11日数据源第十七页,共188页。ODBC全称:OpenDatabaseConnectivity,开放数据库互连。因为ODBC这种方法在设计的最初时候就是要到达有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。C:\Windows\SysWOW64“odbcad32.exe”文件1.“开始”——>“设置”——>“控制面板”——>“管理工具”——>“数据源(ODBC)”。2.“用户数据源”——>“MSACCESSDATABASE”——>“添加”——>“MicrosoftACCESSDRIVER(*.mdb)”。3.“数据源名称”——>“选择数据库文件”——>用户本地机上ODBC数据源。第二部分添加数据源数据源第十八页,共188页。第二部分思路流程商品销售修改密码销售员倒换超市管理系统销售员界面管理员界面商品入库库存查询工作人员管理销售记录管理供应商查询修改密码入库记录管理关于数据库需求分析第十九页,共188页。第二部分思路流程关于数据库需求分析管理员可以操作:(1)商品入库:管理员输入要入库商品的编号、名称、数量等信息并点击添加商品后入库商品的详细信息会显示在列表中,也可以选中某件商品然后删除,当第一次添加商品时会产生入库单号,当点击确认入库后会将列表中的所有商品入库,然后清空列表,也可以点击取消入库取消某次入库操作。(2)员工以及供应商管理:可以对超市员工和供应商信息进行增加、删除、查询和修改。(3)销售日志和入库日志信息管理:可以对商品入库日志和销售日志信息进行查询和删除等操作,其中在管理销售日志信息时可以根据查询到的销售日志信息计算销售额。(4)修改登录密码:管理员在修改密码时也要输入正确的原密码并确保两次输入的新密码相同。第二十页,共188页。第二部分思路流程关于数据库需求分析销售员为顾客结账进行服务,可以进行如下操作:(1)商品销售:在商品销售过程中,销售员输入商品编号和商品数量等信息并点击添加商品后在已购商品列表中会显示所购商品的名称和价格等详细信息,同时也可以选中某件商品后点击删除商品删除该商品,系统自动计算出顾客应付金额,当输入顾客实际所支付的金额后点击确认付款后系统自动计算出找零金额并清空交易号和已购商品列表。销售员也可以点击取消交易来终止一次交易。(2)销售员换班:销售员点击收银员换班后输入正确的编号和密码后会实现销售员的交接班。(3)修改登录密码:销售员在修改密码时要输入正确的原密码并且两次输入的新密码要相同才能修改密码。第二十一页,共188页。第三部分创建工程/*三、创建ODBC工程*/时间:2015年12月11日创建工程第二十二页,共188页。第三部分建立工程操作步骤:1.打开VC++的工程创建向导。File>>New>>FCAppWizard(exe)项。在ProjectName>>输入工程名称“Supermarket”,并在Location编辑区里调整工程路径。2.选择应用程序的框架类型。单击“工程创建向导”窗口的OK按钮,进入MFCAppWizard–Step1>>Singledocument>>Next。3.进入“MFCAppWizard–Step2of6”>>查看数据库不使用文件支持。设置应用程序数据库特性。选择数据源4.设置应用程序对复杂文档的支持。进入“MFCAppWizard–Step3of6”>>选择如下两项:NoneActiveXControls创建工程第二十三页,共188页。5.进入“MFCAppWizard–Step4of6”对话框,设置应用程序的特征信息

:DockingtoolbarInitialstatusbarPrintingandprintpreview3DcontrolsNormal6.进入“MFCAppWizard–Step5of6”对话框,选择工程风格和MFC类库的加载方式。在对话框里设置如下三项:MFCStandardYes,PleaseAssharedDLL第三部分建立工程创建工程第二十四页,共188页。7.“MFCAppWizard–Step6of6”对话框显示工程创建中的类信息。创建工程包含了四个类:CSuperView类,工程视图类CSuperApp类,工程的应用类CMainFrame类,工程主框架类CSuperDoc类,工程文档类这四个类构成了应用程序工程的主要框架。我们为View类选择ClistView基类。第三部分建立工程创建工程8.在对话框“MFCAppWizard–Step6of6”里单击Finish>>完成工程创建。工程创建向导将该次工程创建的信息显示在一个“NewProjectInformation”对话框里。在对话框里单击“OK”>>工程创建完成。第二十五页,共188页。第四部分设计界面/*四、设计界面程序*/时间:2015年12月11日设计界面第二十六页,共188页。第四部分设计界面/*用户登录界面*/时间:2015年12月11日设计界面第二十七页,共188页。第四部分建立界面用户登录界面资源类型资源ID标题功能编辑框IDC_EDIT_NAME

输入用户名编辑框IDC_EDIT_PWD

输入密码按钮IDC_BUTTON_LOGIN

登陆登陆按钮IDC_BUTTON_EXIT退出程序

退出程序IDD_SUPERMARKET_FORM//SupermarketView.cpp:implementationoftheCSupermarketViewclass第二十八页,共188页。第四部分建立界面用户登录界面创建classCDoperator类——父类CRecordset//SupermarketView.cpp:implementationoftheCSupermarketViewclass第二十九页,共188页。第四部分建立界面用户登录界面选择ODBC数据源为刚刚创建的CDoperator类为CDoperator类设置缺省的表//SupermarketView.cpp:implementationoftheCSupermarketViewclass第三十页,共188页。第四部分建立界面用户登录界面在类里声明报表信息变量,编写类的消息响应函数//SupermarketView.cpp:implementationoftheCSupermarketViewclass第三十一页,共188页。第四部分建立界面用户登录界面if(m_Name.IsEmpty()||m_Pwd.IsEmpty())//判断输入是否完整及提示

{

MessageBox("请输入登录名或密码!","提示消息"); m_Pwd=""; } else{ CStringsqlstr; intflag=0;

//判断用户名、密码以及权限,跳转到不同工作界面sqlstr.Format("select*fromtb_operatorwhereoperator_id='%s'",m_Name);if(m_pSet->IsOpen()==TRUE) m_pSet->Close();m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr);//根据条件打开记录集

if(m_pSet->IsEOF())//判断用户是否在记录集中 { MessageBox("此用户不存在!","提示消息"); m_Name=""; m_Pwd=""; }第三十二页,共188页。if(strlevel=="管理员")

//strlevel是根据用户名和密码得到的权限{ CDmanagedlg_manage; dlg_manage.m_Oid=strid; dlg_manage.m_Oname=strname;//在管理界面显示管理员编号和姓名 AfxGetMainWnd()->ShowWindow(SW_HIDE);//隐藏主界面 dlg_manage.DoModal();//显示管理界面 AfxGetMainWnd()->ShowWindow(SW_SHOW);//显示主界面}if(strlevel=="销售员"){

//代码实现与管理员类似CDselldlg_sell; dlg_sell.m_Oid=strid; dlg_sell.m_Oname=strname;//销售界面显示编号和姓名 AfxGetMainWnd()->ShowWindow(SW_HIDE); dlg_sell.DoModal(); AfxGetMainWnd()->ShowWindow(SW_SHOW);}if(flag==0)//账号下面判断密码输入 { MessageBox("密码错误!","提示消息"); m_Name=""; m_Pwd=""; }第四部分建立界面用户登录界面第三十三页,共188页。第四部分设计界面/*用户管理界面*/时间:2015年12月11日设计界面第三十四页,共188页。第四部分建立界面管理界面商品入库模块员工管理模块供应商管理模块入库记录模块销售记录模块退出管理模块库存查询模块修改密码模块IDD_DIALOG_MANAGE//Dmanage.cpp:implementationfile入库信息显示模块功能链接按钮模块第三十五页,共188页。第四部分建立界面资源类型资源ID标题功能只读编辑框IDC_EDIT_OID

自动显示用户账号只读编辑框IDC_EDIT_ONAME

自动显示用户姓名只读编辑框IDC_EDIT_TIME

自动显示当前时间IDD_DIALOG_MANAGE登录自动显示信息管理界面第三十六页,共188页。第四部分建立界面登录自动显示当前时间信息voidCDmanage::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CStringstrTime; CTimetm; tm=CTime::GetCurrentTime(); strTime=tm.Format("%Y年%m月%d日%H:%M:%S"); SetDlgItemText(IDC_EDIT_TIME,strTime);//显示系统时间 CDialog::OnTimer(nIDEvent);}用户账号与姓名显示的程序语句在前面登录界面函数中。//在管理界面显示管理员编号和姓名管理界面第三十七页,共188页。第四部分设计界面/*商品入库模块*/时间:2015年12月11日设计界面第三十八页,共188页。第四部分建立界面管理界面商品入库模块资源类型资源ID标题功能编辑框IDC_EDIT_GOODSID商品编号编辑框IDC_EDIT_GOODSNAME商品名称

编辑框IDC_EDIT_QUANTITY商品数量

编辑框IDC_EDIT_TYPE规格型号

编辑框IDC_EDIT_BID进价编辑框IDC_EDIT_PRICE售价编辑框IDC_EDIT_REMARK备注组合框IDC_COMBO_PROVIDER供应商选择只读编辑框IDC_EDIT_PUTINID入库单号系统自动生成按钮IDC_BUTTON_ADD

添加商品按钮IDC_BUTTON_DELETE

删除商品按钮IDC_BUTTON_CPUTIN

确认入库按钮IDC_BUTTON_CPUTIN2

取消入库第三十九页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGE商品入库模块第四十页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGE添加商品voidCDmanage::OnKillfocusEditGoodsid(){

//首先输入商品必须的属性,添加商品按钮被触发后首先判断数量问题 UpdateData(); if(storage_set.IsOpen()) storage_set.Close(); storage_set.Open(); while(!storage_set.IsEOF()) { if(m_Goodsid==storage_set.m_goods_id) { if(storage_set.m_goods_quantity!=0)//库存数量有剩余 { MessageBox("此商品尚有库存,请勿添加!","提示消息"); GetDlgItem(IDC_EDIT_GOODSID)->SetFocus(); return; }

m_EGoodsid.SetReadOnly(TRUE); m_Goodsname=storage_set.m_goods_name; m_EGoodsname.SetReadOnly(TRUE); m_Type=storage_set.m_goods_type; m_EType.SetReadOnly(TRUE); m_Bid=storage_set.m_goods_bid; m_EBid.SetReadOnly(TRUE); m_Pirce=storage_set.m_goods_price; m_EPirce.SetReadOnly(TRUE); m_Remark=storage_set.m_goods_remark; m_ERemark.SetReadOnly(TRUE); m_Cprovider.SelectString(-1,storage_set.m_goods_provider); break; } storage_set.MoveNext(); } storage_set.Close(); UpdateData(FALSE);}//Dmanage.cpp:implementationfile商品入库模块第四十一页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGE删除商品voidCDmanage::OnButtonDelete(){

//TODO:Addyourcontrolnotificationhandlercodehere intnSel=m_Goods.GetNextItem(-1,LVNI_SELECTED); if(-1==nSel) { return; } m_Goods.DeleteItem(nSel);}//Dmanage.cpp:implementationfile取消入库voidCDmanage::OnButtonCputin2(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); if(MessageBox("确定要取消入库?","提示消息",MB_OKCANCEL|MB_ICONQUESTION)==IDOK) { m_Goods.DeleteAllItems(); m_Putinid=""; UpdateData(FALSE); }}商品入库模块第四十二页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEvoidCDmanage::OnButtonCputin(){

//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); if(m_Goods.GetItemCount()==0) { MessageBox("请先添加商品!","提示消息"); return; } for(inti=0;i<m_Goods.GetItemCount();i++)//依次检索商品列表中的商品信息 { if(storage_set.IsOpen()) storage_set.Close(); storage_set.Open(); while(!storage_set.IsEOF()) { if(m_Goods.GetItemText(i,0)==storage_set.m_goods_id) { storage_set.Edit();//为更新记录集做准备 storage_set.m_goods_quantity=atoi(m_Goods.GetItemText(i,2));//根据新入库的商品信息更新记录集各个字段的值 storage_set.m_putin_date=m_Goods.GetItemText(i,8); storage_set.m_putin_time=m_Goods.GetItemText(i,9); storage_set.m_goods_operator=m_Goods.GetItemText(i,7); storage_set.Update();//将记录集的更新提交到数据源上 break; }//当库存表中有此商品时更新此商品信息确定入库商品入库模块第四十三页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGE storage_set.MoveNext(); } if(storage_set.IsEOF())//向入库表中插入新数据 { storage_set.AddNew();//将列表中的信息依次付给记录集的相应字段 storage_set.m_goods_id=m_Goods.GetItemText(i,0); storage_set.m_goods_name=m_Goods.GetItemText(i,1); storage_set.m_goods_quantity=atoi(m_Goods.GetItemText(i,2)); storage_set.m_goods_type=m_Goods.GetItemText(i,3); storage_set.m_goods_bid=atof(m_Goods.GetItemText(i,4)); storage_set.m_goods_price=atof(m_Goods.GetItemText(i,5)); storage_set.m_goods_provider=m_Goods.GetItemText(i,6); storage_set.m_goods_operator=m_Goods.GetItemText(i,7); storage_set.m_putin_date=m_Goods.GetItemText(i,8); storage_set.m_putin_time=m_Goods.GetItemText(i,9); storage_set.m_goods_remark=m_Goods.GetItemText(i,10); storage_set.Update();//当库存表中无此商品时向库存表插入新数据 }

if(putin_set.IsOpen()){putin_set.Close();}putin_set.Open(); putin_set.AddNew();//依次设置记录集各个字段的值 putin_set.m_putin_id=m_Putinid; putin_set.m_putin_goods_id=m_Goods.GetItemText(i,0); putin_set.m_putin_goods_name=m_Goods.GetItemText(i,1); putin_set.m_putin_goods_date=m_Goods.GetItemText(i,8); putin_set.m_putin_goods_time=m_Goods.GetItemText(i,9); putin_set.m_provider=m_Goods.GetItemText(i,6); putin_set.m_quantity=atoi(m_Goods.GetItemText(i,2)); putin_set.m_type=m_Goods.GetItemText(i,3); putin_set.m_bid=atof(m_Goods.GetItemText(i,4)); putin_set.m_operator=m_Oname; putin_set.m_remark=m_Goods.GetItemText(i,10); putin_set.Update();//将记录集的更新提交到数据源上 } MessageBox("入库成功!","提示消息"); m_Goods.DeleteAllItems(); m_Putinid=""; UpdateData(FALSE);}商品入库模块第四十四页,共188页。第四部分建立界面管理界面列表框IDC_LIST_GOODS显示入库表格//设置列表控件的标题 m_Goods.InsertColumn(0,"商品编号",LVCFMT_CENTER,80); m_Goods.InsertColumn(1,"商品名称",LVCFMT_CENTER,125); m_Goods.InsertColumn(2,"商品数量",LVCFMT_CENTER,80); m_Goods.InsertColumn(3,"规格型号",LVCFMT_CENTER,95); m_Goods.InsertColumn(4,"进价",LVCFMT_CENTER,80); m_Goods.InsertColumn(5,"售价",LVCFMT_CENTER,80); m_Goods.InsertColumn(6,"供应商",LVCFMT_CENTER,126); m_Goods.InsertColumn(7,"经办人",LVCFMT_CENTER,94); m_Goods.InsertColumn(8,"入库日期",LVCFMT_CENTER,95); m_Goods.InsertColumn(9,"入库时间",LVCFMT_CENTER,95); m_Goods.InsertColumn(10,"备注",LVCFMT_CENTER,95);

//设置列表控件的格式 m_Goods.SetExtendedStyle(m_Goods.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);IDD_DIALOG_MANAGE入库信息显示模块第四十五页,共188页。第四部分建立界面管理界面列表框IDC_LIST_GOODS显示入库表格m_Putinid=m_Putin.GetItemText(nSel,0); m_Goodsid=m_Putin.GetItemText(nSel,1); m_Goodsname=m_Putin.GetItemText(nSel,2); m_Quantity=atoi(m_Putin.GetItemText(nSel,3)); m_Type=m_Putin.GetItemText(nSel,4); m_Bid=atof(m_Putin.GetItemText(nSel,5)); m_Provider=m_Putin.GetItemText(nSel,6); m_Operator=m_Putin.GetItemText(nSel,7); m_Date=m_Putin.GetItemText(nSel,8); m_Time=m_Putin.GetItemText(nSel,9); m_Remark=m_Putin.GetItemText(nSel,10); UpdateData(FALSE); *pResult=0;}voidCDsputin::OnClickListPutin(NMHDR*pNMHDR,LRESULT*pResult){

//TODO:Addyourcontrolnotificationhandlercodehere intnSel=m_Putin.GetNextItem(-1,LVNI_SELECTED); if(nSel==-1) return;IDD_DIALOG_MANAGE入库信息显示模块第四十六页,共188页。第四部分设计界面/*库存查询模块*/时间:2015年12月11日设计界面第四十七页,共188页。第四部分建立界面管理界面库存查询模块IDD_DIALOG_MANAGE资源类型资源ID标题功能单选按钮IDC_RADIO_FRGOODSID商品编号单选按钮IDC_RADIO_FRGOODSNAME商品名称

单选按钮IDC_RADIO_FRGOODSDATE入库日期按钮IDC_BUTTON1查询编辑框IDC_EDIT_FGOODSID显示输入编号编辑框IDC_EDIT_FGOODSNAME显示输入名称编辑框IDC_EDIT_FGOODSDATE显示输入日期第四十八页,共188页。第四部分建立界面管理界面库存查询模块IDD_DIALOG_MANAGEvoidCDmanage::OnRadioFrgoodsid(){

//TODO:Addyourcontrolnotificationhandlercodehere UpdateData();

GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(TRUE); m_Fgoodsname=""; GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE); m_Date=""; GetDlgItem(IDC_EDIT_FGOODSDATE)->EnableWindow(FALSE); UpdateData(FALSE);}第四十九页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEvoidCDmanage::OnRadioFrgoodsname(){

//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); m_Fgoodsid=""; GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE);

GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(TRUE); m_Date=""; GetDlgItem(IDC_EDIT_FGOODSDATE)->EnableWindow(FALSE); UpdateData(FALSE);}库存查询模块第五十页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEvoidCDmanage::OnRadioFrgoodsdate(){

//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); m_Fgoodsid=""; GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE); m_Fgoodsname=""; GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE);

GetDlgItem(IDC_EDIT_FGOODSDATE)->EnableWindow(TRUE); UpdateData(FALSE);}库存查询模块第五十一页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEvoidCDmanage::OnButton1(){

//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); m_Goods.DeleteAllItems(); CStringsqlstr; if(m_Fway==0) {

if(m_Fgoodsid.IsEmpty()) { MessageBox("请输入商品编号!","提示消息"); return; } sqlstr.Format("select*fromtb_storagewheregoods_id='%s'",m_Fgoodsid); }查询按钮函数库存查询模块第五十二页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEelseif(m_Fway==1) {

if(m_Fgoodsname.IsEmpty()) { MessageBox("请输入商品名称!","提示消息"); return; } sqlstr.Format("select*fromtb_storagewheregoods_name='%s'",m_Fgoodsname); } elseif(m_Fway==2) {

if(m_Date.IsEmpty()) { MessageBox("请输入入库日期!","提示消息"); return; } sqlstr.Format("select*fromtb_storagewhereputin_date='%s'",m_Date); } else{//没有选择单选按钮 MessageBox("请选择查找方式!","提示消息"); return; }查询按钮函数库存查询模块第五十三页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGECStringstrbid,strprice,strquan; if(storage_set.IsOpen()) { storage_set.Close(); } storage_set.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr); if(storage_set.IsEOF())//查询结果集为空 { MessageBox("没有此记录!","提示消息"); return; }查询按钮函数库存查询模块第五十四页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGE while(!storage_set.IsEOF())//在列表框显示可查询的记录集内容 { strquan.Format("%d",storage_set.m_goods_quantity); strbid.Format("%.2lf",storage_set.m_goods_bid); strprice.Format("%.2lf",storage_set.m_goods_price); intnItem=m_Goods.InsertItem(m_Goods.GetItemCount(),storage_set.m_goods_id); m_Goods.SetItemText(nItem,1,storage_set.m_goods_name); m_Goods.SetItemText(nItem,2,strquan); m_Goods.SetItemText(nItem,3,storage_set.m_goods_type); m_Goods.SetItemText(nItem,4,strbid); m_Goods.SetItemText(nItem,5,strprice); m_Goods.SetItemText(nItem,6,storage_set.m_goods_provider); m_Goods.SetItemText(nItem,7,storage_set.m_goods_operator); m_Goods.SetItemText(nItem,8,storage_set.m_putin_date); m_Goods.SetItemText(nItem,9,storage_set.m_putin_time); m_Goods.SetItemText(nItem,10,storage_set.m_goods_remark); storage_set.MoveNext(); }m_Fway=-1; m_Fgoodsid=""; m_Fgoodsname=""; m_Date=""; GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSDATE)->EnableWindow(FALSE); UpdateData(FALSE);}查询按钮函数库存查询模块第五十五页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEm_Fway=-1; m_Fgoodsid=""; m_Fgoodsname=""; m_Date=""; GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSDATE)->EnableWindow(FALSE); UpdateData(FALSE);}查询按钮函数库存查询模块第五十六页,共188页。第四部分设计界面/*修改密码模块*/时间:2015年12月11日设计界面第五十七页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGE资源类型资源ID标题功能按钮IDC_BUTTON2确定按钮IDC_BUTTON3取消编辑框IDC_EDIT_OLDPWD输入旧密码编辑框IDC_EDIT_NEWPWD输入新密码编辑框IDC_EDIT_NEWPWDC输入确认新修改密码模块第五十八页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEvoidCDmanage::OnButton2(){

//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); if(m_Goods.GetItemCount()!=0) { MessageBox("修改密码前请停止其它操作!","提示消息"); m_Oldpwd=""; m_Newpwd=""; m_CNewpwd=""; UpdateData(FALSE); return; } if(m_Oldpwd.IsEmpty()||m_Newpwd.IsEmpty()||m_CNewpwd.IsEmpty()) {//三个编辑框没有全部输入信息 MessageBox("请输入完整信息!","提示消息"); m_Oldpwd=""; m_Newpwd=""; m_CNewpwd=""; UpdateData(FALSE); return;}确定修改按钮函数修改密码模块第五十九页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGE CStringsqlstr; sqlstr.Format("select*fromtb_operatorwhereoperator_id='%s'andoperator_pwd='%s'",m_Oid,m_Oldpwd); if(operator_set.IsOpen()==TRUE) { operator_set.Close(); } operator_set.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr); if(operator_set.IsEOF())//查询结果集密码为空 { MessageBox("原密码错误!","提示消息"); m_Oldpwd=""; m_Newpwd=""; m_CNewpwd=""; UpdateData(FALSE); return; }确定修改按钮函数修改密码模块第六十页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEif(m_CNewpwd!=m_Newpwd) {//两次输入新密码比较 MessageBox("确认新密码失败!","提示消息"); return; } if(MessageBox("确定要修改密码?","提示消息",MB_OKCANCEL|MB_ICONQUESTION)==IDOK) { operator_set.Edit(); operator_set.m_operator_pwd=m_Newpwd; if(!operator_set.Update()) {//新旧密码一致 MessageBox("修改密码失败!","提示消息"); return; } MessageBox("修改密码成功,请重新登录!","提示消息"); CDialog::OnOK(); } else{ m_Oldpwd=""; m_Newpwd=""; m_CNewpwd=""; UpdateData(FALSE); }}确定修改按钮函数修改密码模块第六十一页,共188页。第四部分建立界面管理界面IDD_DIALOG_MANAGEvoidCDmanage::OnButton3(){

//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); m_Oldpwd=""; m_Newpwd=""; m_CNewpwd=""; UpdateData(FALSE);}取消修改按钮函数修改密码模块第六十二页,共188页。第四部分设计界面/*功能链接模块*/时间:2015年12月11日设计界面第六十三页,共188页。第四部分建立界面管理界面功能模块链接按钮IDD_DIALOG_MANAGE资源类型资源ID标题功能按钮IDC_BUTTON4入库记录管理按钮IDC_BUTTON6员工管理

按钮IDC_BUTTON5销售记录管理按钮IDC_BUTTON7供应商管理按钮IDC_BUTTON8退出管理第六十四页,共188页。第四部分建立界面管理界面功能模块链接按钮IDD_DIALOG_MANAGEvoidCDmanage::OnButton4()

{

//TODO:Addyourcontrolnotificationhandlercodehere CDsputindlg_sputin; dlg_sputin.DoModal();}voidCDmanage::OnButton5(){

//TODO:Addyourcontrolnotificationhandlercodehere CDssaledlg_ssale; dlg_ssale.DoModal();}voidCDmanage::OnButton6(){

//TODO:Addyourcontrolnotificationhandlercodehere CDmpeopledlg_mpeople; dlg_mpeople.DoModal();}voidCDmanage::OnButton7(){

//TODO:Addyourcontrolnotificationhandlercodehere CDmproviderdlg_mprovider; dlg_mprovider.DoModal();}voidCDmanage::OnButton8(){ CDialog::OnOK();}第六十五页,共188页。第四部分设计界面/*入库记录模块*/时间:2015年12月11日设计界面第六十六页,共188页。第四部分建立界面入库记录界面IDD_DIALOG_SPUTIN入库记录模块入库信息查询入库信息管理入库记录显示表//Dsputin.cpp:implementationfile第六十七页,共188页。第四部分建立界面IDC_LIST_PUTIN//Dsputin.cpp:implementationfilevoidCDsputin::OnClickListPutin(NMHDR*pNMHDR,LRESULT*pResult){ //TODO:Addyourcontrolnotificationhandlercodehere intnSel=m_Putin.GetNextItem(-1,LVNI_SELECTED); if(nSel==-1) return; m_Putinid=m_Putin.GetItemText(nSel,0); m_Goodsid=m_Putin.GetItemText(nSel,1); m_Goodsname=m_Putin.GetItemText(nSel,2); m_Quantity=atoi(m_Putin.GetItemText(nSel,3)); m_Type=m_Putin.GetItemText(nSel,4); m_Bid=atof(m_Putin.GetItemText(nSel,5));

入库记录显示表m_Provider=m_Putin.GetItemText(nSel,6); m_Operator=m_Putin.GetItemText(nSel,7); m_Date=m_Putin.GetItemText(nSel,8); m_Time=m_Putin.GetItemText(nSel,9); m_Remark=m_Putin.GetItemText(nSel,10); UpdateData(FALSE); *pResult=0;}入库记录界面第六十八页,共188页。第四部分建立界面入库信息查询资源类型资源ID标题功能单选按钮IDC_RADIO_RFPUTINID入库单号单选按钮IDC_RADIO_RFGOODSID商品编号

单选按钮IDC_RADIO_RFGOODSNAME商品名称单选按钮IDC_RADIO_RFDATE入库日期单选按钮IDC_RADIO_RFOPERATOR经办人按钮IDC_BUTTON1显示所有信息按钮IDC_BUTTON9查询编辑框IDC_EDIT_FPUTINID显示入库单号编辑框IDC_EDIT_FGOODSID显示商品编号编辑框IDC_EDIT_FGOODSNAME显示商品名称编辑框IDC_EDIT_FDATE显示入库日期组合框IDC_COMBO_FOPERATOR显示选择经办人入库记录界面IDD_DIALOG_SPUTIN第六十九页,共188页。第四部分建立界面//Dsputin.cpp:implementationfilevoidCDsputin::OnRadioRfputinid(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData();

GetDlgItem(IDC_EDIT_FPUTINID)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FDATE)->EnableWindow(FALSE); GetDlgItem(IDC_COMBO_FOPERATOR)->EnableWindow(FALSE); m_Fgoodsid=""; m_Fgoodsname=""; m_Fdate=""; m_Foperator.SetCurSel(-1); UpdateData(FALSE);}入库信息查询入库记录界面IDD_DIALOG_SPUTIN第七十页,共188页。第四部分建立界面//Dsputin.cpp:implementationfilevoidCDsputin::OnRadioRfgoodsid(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); GetDlgItem(IDC_EDIT_FPUTINID)->EnableWindow(FALSE);

GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FDATE)->EnableWindow(FALSE); GetDlgItem(IDC_COMBO_FOPERATOR)->EnableWindow(FALSE); m_Fputinid=""; m_Fgoodsname=""; m_Fdate=""; m_Foperator.SetCurSel(-1); UpdateData(FALSE);}入库信息查询入库记录界面IDD_DIALOG_SPUTIN第七十一页,共188页。第四部分建立界面//Dsputin.cpp:implementationfilevoidCDsputin::OnRadioRfgoodsname(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); GetDlgItem(IDC_EDIT_FPUTINID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE);

GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(TRUE); GetDlgItem(IDC_EDIT_FDATE)->EnableWindow(FALSE); GetDlgItem(IDC_COMBO_FOPERATOR)->EnableWindow(FALSE); m_Fputinid=""; m_Fgoodsid=""; m_Fdate=""; m_Foperator.SetCurSel(-1); UpdateData(FALSE);}入库信息查询入库记录界面IDD_DIALOG_SPUTIN第七十二页,共188页。第四部分建立界面//Dsputin.cpp:implementationfilevoidCDsputin::OnRadioRfdate(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); GetDlgItem(IDC_EDIT_FPUTINID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE);

GetDlgItem(IDC_EDIT_FDATE)->EnableWindow(TRUE); GetDlgItem(IDC_COMBO_FOPERATOR)->EnableWindow(FALSE); m_Fputinid=""; m_Fgoodsname=""; m_Fgoodsid=""; m_Foperator.SetCurSel(-1); UpdateData(FALSE);}入库信息查询入库记录界面IDD_DIALOG_SPUTIN第七十三页,共188页。第四部分建立界面//Dsputin.cpp:implementationfilevoidCDsputin::OnRadioRfoperator(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); GetDlgItem(IDC_EDIT_FPUTINID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSID)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FGOODSNAME)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_FDATE)->EnableWindow(FALSE);

GetDlgItem(IDC_COMBO_FOPERATOR)->EnableWindow(TRUE); m_Fputinid=""; m_Fgoodsname=""; m_Fdate=""; m_Fgoodsid=""; UpdateData(FALSE);}入库信息查询入库记录界面IDD_DIALOG_SPUTIN第七十四页,共188页。第四部分建立界面//Dsputin.cpp:implementationfilevoidCDsputin::OnButton1(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Putin.DeleteAllItems(); if(putin_set.IsOpen()) putin_set.Close(); putin_set.Open(); while(!putin_set.IsEOF()) { CStringstrquan,strbid; strquan.Format("%d",putin_set.m_quantity); strbid.Format("%.2lf",putin_set.m_bid);入库信息查询入库记录界面IDD_DIALOG_SPUTIN第七十五页,共188页。第四部分建立界面 intnItem=m_Putin.InsertItem(m_Putin.GetItemCount(),putin_set.m_putin_id); m_Putin.SetItemText(nItem,1,putin_set.m_putin_goods_id); m_Putin.SetItemText(nItem,2,putin_set.m_putin_goods_name); m_Putin.SetItemText(nItem,3,strquan); m_Putin.SetItemText(nItem,4,putin_set.m_type); m_Putin.SetItemText(nItem,5,strbid); m_Putin.SetItemText(nItem,6,putin_set.m_provider); m_Putin.SetItemText(nItem,7,putin_set.m_operator); m_Putin.SetItemText(nItem,8,putin_set.m_putin_goods_date); m_Putin.SetItemText(nItem,9,putin_set.m_putin_goods_time); m_Putin.SetItemText(nItem,10,putin_set.m_remark); putin_set.MoveNext(); } putin_set.Close();}入库信息查询入库记录界面IDD_DIALOG_SPUTIN第七十六页,共1

温馨提示

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

评论

0/150

提交评论