商品库存管理系统培训课程_第1页
商品库存管理系统培训课程_第2页
商品库存管理系统培训课程_第3页
商品库存管理系统培训课程_第4页
商品库存管理系统培训课程_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、商品库存管理系统功能:提供仓库各类信息的浏览、添加、删除、修改等操作。可以进行入库出库等操作,并保证安全性。可以进行日志管理,方便事后查看。系统其他的相关功能。 首先进行系统分析:1.本系统主要模块有4个:商品管理模块、商家管理模块、入库信息管理模块、出库信息管理模块。下面分别对这四个模块进行介绍:商品管理模块 仓库管理员通过此模块来管理商品信息,主要包括浏览、查询、添加、修改和删除功能。在进行商品信息的添加时系统会自动检测所添加的商品信息中的商品号在商品表中是否已经存在,存在则提示,否则进行添加。删除时要进行确认方可进行信息删除。修改时,商品的商品号是不可以修改的,因为商品号作为数据库中商品

2、表的主键是不同商品的唯一标识(可以通过数据库管理员实现修改)。2、商家管理模块 仓库管理员通过此模块来管理商家信息,包括浏览、查询、添加、修改和删除等。进行商家信息添加时系统自动检测所添加的商家是否已经存在,存在则提示,否则继续添加。删除时也需确认才可删除,商家号不准修改。3、入库信息管理模块 仓库管理员通过此模块来管理入库信息,包括浏览、查询、添加、修改和删除功 能。在进行入库信息添加时,系统自动检测所添加信息是否在商品表里是否已经存在。存在则提示,否则继续添加。其他基本功能和前面类似。4、出库信息管理模块 仓库管理员通过此模块进行出库操作。选择相应的商品,系统自动显示被选择的商品的数量。若

3、出库量大于当前商品数量,则操作不能完成。下面介绍程序的实现 本例用Visual C+ 6.0创建一个基于对话框的MFC AppWizard(exe)项目。项目名为GMS。 创建项目后, Visual C+ 呈现给使用者的是一个CGMSDlg对话框,本例的登录界面其实就是在这个对话框的基础上开始设计的。登录对话框 把生成的应用系统框架中的基本对话框IDD_GMS_DIALOG作为应用系统的登录界面加以制作。1、删除无关控件2、界面设计如右图:控件类型ID属性设置Picture默认BitMapButtonIDC_BUTTON_OKCaption设为“确定”ButtonIDC_BUTTON_CANC

4、ELCaption设为“取消”Static Text默认Caption设为“用户名”Static Text默认Caption设为“密码”Edit BoxIDC_EDTI_LOGINNAME默认Edit BoxIDC_EDIT_PASSWDPassword按上表添加控件,然后双击对话框,打开Class Wizard,为IDD_GMS_DIALOG添加CGMSDlg类(系统已添加),然后按照下表添加成员变量:控件ID 变量类 数据类型IDC_EDIT_LOGINNAMEm_strLoginNameCStringIDC_EdIT_PASSWDm_strPasswdCString代码编写 1.“确定”

5、按钮单击“确定”按钮,验证用户名和密码的有效性,成功则进入主界面:void CGMSDlg:OnButtonOk() CString strSql;_variant_t strQuery;UpdateData(TRUE);if (m_strName.IsEmpty() /*判断用户名信息是否为空*/AfxMessageBox(请输入用户名!);return;strQuery = SELECT * FROM admin WHERE Admin_name=+m_strName+ AND Admin_passwd= + m_strPasswd+ ;theApp.ADOExecute(theApp.m

6、_pRs, strQuery); int iCount = theApp.m_pRs-GetRecordCount();if ( 0=iCount ) AfxMessageBox(用户名或密码错误!);m_strName=;m_strPasswd=;UpdateData(false);elsestrAdminName=m_strName;:Sleep(300);OnOK();CMainDlg dlg;dlg.DoModal();/ TODO: Add your control notification handler code here2.“取消”按钮单击“取消”按钮则关闭登录对话框,不做任何

7、操作: void CGMSDlg:OnButtonCancel() OnCancel();/ TODO: Add your control notification handler code here 主界面的实现 功能:当登录成功后,将出现应用程序主界面。因为主界面需要集合其他各个模块,所以一般编程时都是每坐完一个模块,就连接上一块。 界面设计 如下图:对话框ID属性设置为:IDD_DIALOG_MAIN 按照右图添加控 件添加完控件后,双击对话框资源,打开Class Wizard,为IDD_DIALOG_MAIN添加CMainDlg类。 代码编写:“库存商品”按钮: void CMainD

8、lg:OnButtonGoodsadd() CGoodsDlg dlg;this-ShowWindow(SW_HIDE);dlg.DoModal();this-ShowWindow(SW_SHOW); “供货商家”按钮: void CMainDlg:OnButtonProvideradd() CProviderDlg dlg;this-ShowWindow(SW_HIDE);dlg.DoModal();this-ShowWindow(SW_SHOW); “商品入库”按钮:void CMainDlg:OnButtonGoodsin() CInDlg dlg;this-ShowWindow(SW_

9、HIDE);dlg.DoModal();this-ShowWindow(SW_SHOW);“商品出库”按钮:void CMainDlg:OnButtonGoodsout() COutDlg dlg;this-ShowWindow(SW_HIDE);dlg.DoModal();this-ShowWindow(SW_SHOW);/ TODO: Add your control notification handler code here“商品信息”按钮:void CMainDlg:OnButtonGoods() CViewDlg dlg;this-ShowWindow(SW_HIDE);dlg.I

10、nit(1);dlg.DoModal();this-ShowWindow(SW_SHOW);“商家信息”按钮:void CMainDlg:OnButtonProvider() CViewDlg dlg;this-ShowWindow(SW_HIDE);dlg.Init(2);dlg.DoModal();this-ShowWindow(SW_SHOW);/ TODO: Add your control notification handler code here“入库信息”按钮:void CMainDlg:OnButtonIn() CViewDlg dlg;this-ShowWindow(SW_

11、HIDE);dlg.Init(3);dlg.DoModal();this-ShowWindow(SW_SHOW);“出库信息”按钮:void CMainDlg:OnButtonOut() CViewDlg dlg;this-ShowWindow(SW_HIDE);dlg.Init(3);dlg.DoModal();this-ShowWindow(SW_SHOW);/ TODO: Add your control notification handler code here“库存报警”按钮:void CMainDlg:OnButtonAlert() CAlertDlg dlg;dlg.DoMod

12、al();“修改管理员密码”按钮:void CMainDlg:OnButtonAdmin() CPasswdDlg dlg;dlg.DoModal();“操作日志”按钮:void CMainDlg:OnButtonLog() CViewDlg dlg;this-ShowWindow(SW_HIDE);dlg.Init(5);dlg.DoModal();this-ShowWindow(SW_SHOW);/ TODO: Add your control notification handler code here“帮助”按钮(读者可以自行添加帮助文档):void CMainDlg:OnButton

13、Help() WinExec(notepad.exe GPS.HEP,SW_SHOW);“关于”按钮:void CMainDlg:OnButtonAbout() CAboutDlg dlg;dlg.DoModal();“退出”按钮(可以用OnCancel代替):void CMainDlg:OnButtonExit() OnOK();/ TODO: Add your control notification handler code here 商品操作对话框 1、功能描述 在主界面上单击“库存商品”按钮,弹出此对话框。该对话框用于商品的注册登记,同时也可以进行相应的数据库操作。 对话框ID属性设

14、置为:IDD_DIALOG_GOO DS。 按下图添加控件: 按图添加完控件后,双击对话框资源,打开Class Wizard,为IDD_DIALOG_GOODS添加CGoodsDlg类,并按照下表为该类添加成员变量。控件ID变量名数据类型IDC_EDIT_CODEm_strCodeCString IDC_EDIT_NAMEm_strNameCStringIDC_EDIT_MAXNUMm_strMaxNum CStringIDC_EDIT_MINNUMm_strMinNumCStringIDC_LIST_DISPm_listDispCListCtrl代码编写:ClearTxt清空编辑框中的内容:

15、void CGoodsDlg:ClearTxt()m_strCode=;m_strName=;m_strMaxNum=;m_strMinNum=;UpdateData(false);RefreshData向列表控件填充数据:void CGoodsDlg:RefreshData()m_listDisp.DeleteAllItems();m_listDisp.SetRedraw(FALSE);_variant_t Holder, strQuery; strQuery= select * from goods;theApp.ADOExecute(theApp.m_pRs, strQuery); in

16、t iCount = theApp.m_pRs-GetRecordCount();if ( 0=iCount ) return;theApp.m_pRs-MoveFirst();int i=0;while(!theApp.m_pRs-adoEOF)Holder = theApp.m_pRs-GetCollect(G_code);if(Holder.vt!=VT_NULL)m_listDisp.InsertItem(i, (char*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollect(G_name);if(Holder.vt!=VT_NULL)m

17、_listDisp.SetItemText(i,1, (char*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollect(Current_number);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,2, (char*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollect(Max_number);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,3, (char*)(_bstr_t)Holder);Holder

18、= theApp.m_pRs-GetCollect(Min_number);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,4, (char*)(_bstr_t)Holder);theApp.m_pRs-MoveNext();i+;m_listDisp.SetRedraw(TRUE);初始化对话框。(设置列表控件,装载数据):BOOL CGoodsDlg:OnInitDialog() CDialog:OnInitDialog(); m_listDisp.InsertColumn(0,商品编号);m_listDisp.InsertColumn(1,商

19、品名称);m_listDisp.InsertColumn(2,当前库存);m_listDisp.InsertColumn(3,最大库存);m_listDisp.InsertColumn(4,最小库存);RECT rect;m_listDisp.GetWindowRect(&rect);int wid = rect.right - rect.left;m_listDisp.SetColumnWidth(0,wid/5);m_listDisp.SetColumnWidth(1,wid/5);m_listDisp.SetColumnWidth(2,wid/5);m_listDisp.SetC

20、olumnWidth(3,wid/5);m_listDisp.SetColumnWidth(4,wid/5);m_listDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshData();/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE按钮事件:“增加”按钮:void CGoodsDlg:O

21、nButtonAdd() UpdateData();CString strSql;strSql.Format(INSERT INTO goods (G_code,G_name,Current_number,Max_number,Min_number) VALUES(%s,%s,0,%s,%s),m_strCode, m_strName, m_strMaxNum,m_strMinNum);_variant_t vtQuery(strSql); theApp.ADOExecute(theApp.m_pRs, vtQuery); RefreshData(); ClearTxt();theApp.m_

22、log.AddLog(添加商品); “修改”按钮:void CGoodsDlg:OnButtonModify() UpdateData();CString strSql;strSql.Format(UPDATE goods SET G_name=%s,Max_number=%s,Min_number=%s WHERE G_code=%s,m_strName, m_strMaxNum,m_strMinNum,m_strCode);/ TODO: Add your control notification handler code here_variant_t vtQuery(strSql); i

23、f(theApp.ADOExecute(theApp.m_pRs, vtQuery)RefreshData(); ClearTxt();theApp.m_log.AddLog(修改商品);elseAfxMessageBox(修改失败);“删除”按钮:void CGoodsDlg:OnButtonDelete() UpdateData();CString strSql;strSql.Format(DELETE FROM goods WHERE G_code=%s,m_strCode);_variant_t vtQuery(strSql); theApp.ADOExecute(theApp.m_p

24、Rs, vtQuery);RefreshData(); ClearTxt();theApp.m_log.AddLog(删除商品);“退出”按钮:void CGoodsDlg:OnButtonExit() OnOK();/ TODO: Add your control notification handler code here 列表控件: 当选择左边列表控件的元素时,将在右边的编辑框中显示。代码如下: void CGoodsDlg:OnClickListDisp(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notifica

25、tion handler code hereint i = m_listDisp.GetSelectionMark();m_strCode = m_listDisp.GetItemText(i,0);m_strName= m_listDisp.GetItemText(i,1);m_strMaxNum = m_listDisp.GetItemText(i,3);m_strMinNum= m_listDisp.GetItemText(i,4);UpdateData(FALSE);*pResult = 0; 供货商家对话框 功能描述:在主界面上单击“供货商家”按钮,弹出此对话框。该对话框用于商家的注

26、册登记,同时也可以进行相应的数据库操作。 界面设计: 如右图: 对话框属性为: IDD_DIALOG_ PROVIDERCCProvideDlg类成员变量控件ID变量名数据类型IDC_EDIT_CODEm_strCodeCString IDC_EDIT_NAMEm_strNameCStringIDC_EDIT_ADDRESSm_strAddressCString IDC_EDIT_PERSONm_strPersonCStringIDC_EDIT_PHONEm_strPhoneCStringIDC_EDIT_EMAILm_strEmailCStringIDC_LIST_DISPm_listDis

27、pCListCtrl代码编写:功能函数。 ClearTxt(清空编辑框中的内容):void CProviderDlg:ClearTxt()m_strAddress=;m_strCode=;m_strName=;m_strEmail=;m_strPerson=;m_strPhone=;UpdateData(false);1.RefreshData(向列表控件填充数据):void CProviderDlg:RefreshData()m_listDisp.DeleteAllItems();m_listDisp.SetRedraw(FALSE);_variant_t Holder, strQuery;

28、 strQuery= select * from provider;theApp.ADOExecute(theApp.m_pRs, strQuery); int iCount = theApp.m_pRs-GetRecordCount();if ( 0=iCount ) return;theApp.m_pRs-MoveFirst();int i=0;while(!theApp.m_pRs-adoEOF)Holder = theApp.m_pRs-GetCollect(Provider_code);if(Holder.vt!=VT_NULL)m_listDisp.InsertItem(i, (c

29、har*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollect(Provider_name);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,1, (char*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollect(Provider_address);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,2, (char*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollec

30、t(Provider_person);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,3, (char*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollect(Provider_telphone);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,4, (char*)(_bstr_t)Holder);Holder = theApp.m_pRs-GetCollect(Provider_email);if(Holder.vt!=VT_NULL)m_listDisp

31、.SetItemText(i,5, (char*)(_bstr_t)Holder);theApp.m_pRs-MoveNext();i+;m_listDisp.SetRedraw(TRUE);2.初始化对话框。初始化(设置列表控件,装载数据):BOOL CProviderDlg:OnInitDialog() CDialog:OnInitDialog();m_listDisp.InsertColumn(0,编号);m_listDisp.InsertColumn(1,名称);m_listDisp.InsertColumn(2,地址);m_listDisp.InsertColumn(3,负责人);m

32、_listDisp.InsertColumn(4,电话);m_listDisp.InsertColumn(5,Email);RECT rect;m_listDisp.GetWindowRect(&rect);int wid = rect.right - rect.left;m_listDisp.SetColumnWidth(0,wid/6);m_listDisp.SetColumnWidth(1,wid/6);m_listDisp.SetColumnWidth(2,wid/6);m_listDisp.SetColumnWidth(3,wid/6);m_listDisp.SetColum

33、nWidth(4,wid/6);m_listDisp.SetColumnWidth(5,wid/6);m_listDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshData();return TRUE; / return TRUE unless you set the focus to a control3.按钮事件。“增加”按钮:void CProviderDlg:OnButtonAdd() UpdateData();CString strSql;strSql.Format(INSERT INTO provider(Provider_cod

34、e,Provider_name,Provider_address,Provider_person,Provider_telphone,Provider_email) VALUES(%s,%s,%s,%s,%s,%s),m_strCode, m_strName, m_strAddress,m_strPerson,m_strPhone,m_strEmail);_variant_t vtQuery(strSql); theApp.ADOExecute(theApp.m_pRs, vtQuery); RefreshData(); ClearTxt();theApp.m_log.AddLog(添加商家)

35、;/ TODO: Add your control notification handler code here“修改”按钮:void CProviderDlg:OnButtonModify() UpdateData();CString strSql;strSql.Format(UPDATE provider SET Provider_name=%s,Provider_address=%s,Provider_person=%s,Provider_telphone=%s,Provider_email=%s WHERE Provider_code=%s, m_strName, m_strAddre

36、ss,m_strPerson,m_strPhone,m_strEmail,m_strCode);/ TODO: Add your control notification handler code here_variant_t vtQuery(strSql); if(theApp.ADOExecute(theApp.m_pRs, vtQuery)RefreshData(); ClearTxt();theApp.m_log.AddLog(修改商家);elseAfxMessageBox(修改失败);“删除”按钮:void CProviderDlg:OnButtonDelete() UpdateDa

37、ta();CString strSql;strSql.Format(DELETE FROM provider WHERE Provider_code=%s,m_strCode);_variant_t vtQuery(strSql); theApp.ADOExecute(theApp.m_pRs, vtQuery);RefreshData(); ClearTxt();theApp.m_log.AddLog(删除商品);“退出”按钮:void CProviderDlg:OnButtonExit() OnOK();/ TODO: Add your control notification handl

38、er code here4,。列表控件。当选择左边列表控件的元素时,将在右边的编辑框中显示。代码如下:void CProviderDlg:OnClickListDisp(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereint i = m_listDisp.GetSelectionMark();m_strCode = m_listDisp.GetItemText(i,0);m_strName= m_listDisp.GetItemText(i,1);m_strAddre

39、ss = m_listDisp.GetItemText(i,2);m_strPerson = m_listDisp.GetItemText(i,3);m_strPhone = m_listDisp.GetItemText(i,4);m_strEmail = m_listDisp.GetItemText(i,5);UpdateData(FALSE);*pResult = 0;入库对话框功能描述 在主界面上单击“商品入库”按钮,弹出此对话框。该对话框用于商品的入库操作,当对话框加载时,自 动列出已注册的入 库商品和供应商以 供选择。界面设计 对话框ID属性:IDD_DIALOG_INCInDlg类

40、的成员变量:控件ID变量名数据类型IDC_EDIT_NUMm_strNumCStringIDC_EDIT_PRICEm_strPriceCString IDC_COMBO_GOODSm_cbGoodsCComboBoxIDC_COMBO_PROVIDERm_sbProviderCComboBoxIDC_DATETIMEPICKER_DATAm_DataCTimeIDC_DATETIMEPICKER_TIMEm_TimeCTime3.代码编写功能函数:AddGoods修改商品信息(当前存储数=原先当先存储数+入库的数目):void CInDlg:AddGoods(int iNum)int iCu

41、rrentNum=0;_variant_t Holder, strQuery; strQuery= select * from goods where G_name=+m_strGoodsName+;theApp.ADOExecute(theApp.m_pRs, strQuery);theApp.m_pRs-MoveFirst();Holder = theApp.m_pRs-GetCollect(Current_number);if(Holder.vt!=VT_NULL)iCurrentNum=Holder.iVal;iCurrentNum+=iNum;CString strSql;strSq

42、l.Format(UPDATE goods SET Current_number=%d WHERE G_name=%s,iCurrentNum,m_strGoodsName);/ TODO: Add your control notification handler code here_variant_t vtQuery(strSql); if(theApp.ADOExecute(theApp.m_pRs, vtQuery)AfxMessageBox(入库成功);theApp.m_log.AddLog(商品入库);AddIng(添加入库信息):void CInDlg:AddIn(CString

43、 strGcode,CString strPcode)CString strSql;CString strDate=m_Date.Format(%Y-%m-%d );strDate+=m_Time.Format(%H:%M:%S);strSql.Format(INSERT INTO inlib VALUES(%s,%s,%s,%s,%s),strGcode,strPcode, m_strNum, m_strPrice,strDate);_variant_t vtQuery(strSql); theApp.ADOExecute(theApp.m_pRs, vtQuery); theApp.m_l

44、og.AddLog(添加入库);GetGoodsCode(根据给出的商品名,查找获得对应的商品号):void CInDlg:GetGoodsCode(CString strName, CString &strCode)_variant_t Holder, strQuery; strQuery= select * from goods where G_name=+strName+;theApp.ADOExecute(theApp.m_pRs, strQuery);theApp.m_pRs-MoveFirst();Holder = theApp.m_pRs-GetCollect(G_cod

45、e);if(Holder.vt!=VT_NULL)strCode=Holder.bstrVal;GetProviderCode(根据所给出的商家名,查找获得对应的商家号):void CInDlg:GetProviderCode(CString strName, CString &strCode)_variant_t Holder, strQuery; strQuery= select * from provider where Provider_name=+strName+;theApp.ADOExecute(theApp.m_pRs, strQuery);theApp.m_pRs-M

46、oveFirst();Holder = theApp.m_pRs-GetCollect(Provider_code);if(Holder.vt!=VT_NULL)strCode=Holder.bstrVal;初始化对话框:初始化时,应将已注册的商品和商家填入列表框里。代码如下:BOOL CInDlg:OnInitDialog() CDialog:OnInitDialog();m_Date = CTime:GetCurrentTime();m_Time = m_Date;m_cbGoods.SetRedraw(false);m_cbProvider.SetRedraw(false);_variant_t Holder, strQuery; strQuery=

温馨提示

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

评论

0/150

提交评论