进销存管理系统毕业设计范例

上传人:沈*** 文档编号:120852282 上传时间:2022-07-18 格式:DOC 页数:44 大小:2.80MB
收藏 版权申诉 举报 下载
进销存管理系统毕业设计范例_第1页
第1页 / 共44页
进销存管理系统毕业设计范例_第2页
第2页 / 共44页
进销存管理系统毕业设计范例_第3页
第3页 / 共44页
资源描述:

《进销存管理系统毕业设计范例》由会员分享,可在线阅读,更多相关《进销存管理系统毕业设计范例(44页珍藏版)》请在装配图网上搜索。

1、目录进销存管理系统目录摘要0 引言1 系统需求分析2 总体设计1 项目规划2 系统功能结构3 设计目标3 系统设计1 开发及运行环境2 数据库设计4 功能模块设计1 主窗口设计2 系统登录管理3 商品销售管理4 商品入库管理5 调货登记管理6 权限设置管理附录A 参考文献附录B 数据表摘要【摘要】随着国家的政治经济政策的优化改革,使得国内中小企业得以蓬勃发展。可是随着企业的发展,客户数量的的为断增多,财务工作繁杂化,库存产品零乱等一系列问题也接踵而至,给企业经营者运作带来了很大的困扰。信息技术的迅猛发展,科学经营管理观念的迅速传播,使中小企业经营者逐渐认识到转变企业经营管理理念,改善企业经营管

2、理模式是企业适应时代的发展急需解决的问题。现代管理,应该建立在真实、有效的数据信息基础之上,应该是一种科学的、理性的管理体制,而这种管理与经营的联系与互助,又必须依赖于计算机的强大的数据统计功能,计算机管理系统便是实际的企业进销问题与计算机强大数据统计功能相结合的产物。管理系统解决的了商业企业商品的进、销、存、退、换、盘、损、残、调、借、赠等一系列操作流程中的数据信息的处理问题,提供一系列的数据分析,帮助经营者合理的调整各个经营运作环节的运作节奏,并对商品流转过程进行了全程跟踪管理、相应款项流通的全程记录管理和票据信息统计的管理。因此进销存管理系统的全面应用,规范业务流程、提高了企业的管理水平

3、,提高资金流动的透明度,加快商品资金周转速度,进而全面提高了企业的经营水平、进而全面提升了企业的经济效益。【关键词】进销存管理系统0 引言企业经营如逆水行舟不进则退。每一个努力发展的企业都明白,先进管理的重要作用,引进先进管理系统使企业经营变得规范、合理。进销存管理系统无论是在功能设计还是业务流程上都尽可能做到满足经营管理运作流程的需求,并且操作方便、功能强大,即使操作者对计算机知识一窍不通也能一用就会。它强化库存管理,规范业务流程,提高资金管理的透明度,加快商品资金周转,是企业经营管理中数据分析中必不可少的管理工具。1 系统需求分析根据市场的需求,要求系统具有以下功能:q 实现商品入库、入库

4、退货操作。q 实现商品销售、销售退货操作。q 实现库存管理(调货、盘点)操作。q 实现信息的查询、打印功能。q 准确地进行账款记录、账款查询。2 总体设计2.1 项目规划根据需求分析,设计系统框架。进销存管理系统由等8部分组成。设计各部分具体功能如下:q 基础信息模块基础信息模块包括药品信息、员工信息、供应商信息和客户信息4部分。q 销售模块销售模块由销售登记、销售退货、销售查询、销售退货查询4部分。q 入库模块入库模块主要由入库登记、入库退货、入库查询、入库退货查询4组成。q 调货模块调货模块包含调货登记和调货查询两部分。q 库存模块库存模块由库存盘点、库存查询、仓库管理3部分组成。q 结账

5、模块结账模块主要包括销售结账、销售退货结账、入库结账、入库退货结账。q 财务模块财务模块由日结、月结、供应商往来账、客户往来账4部分组成。q 系统管理模块系统管理模块由修改用户密码、修改用户权限、修改用户3部分组成。2.2 系统功能结构进销存管理系统的功能结构如图1所示。图1 进销存管理系统功能架构图3 设计目标本系统是根据中小企业的实际需求而开发的,完全能够实现商品入库、销售管理,通过本系统可以达到以下目标:q 系统运行稳定,安全可靠。q 界面设计美观,人机交互界面友好。q 信息查询灵活、方便、快捷、准确,数据存储安全可靠。q 强大的报表预览、打印功能。q 信息安全保密。3 系统设计3.1

6、开发及运行环境1硬件要求CPU:300MHz以上的处理器。内存:128MB,推荐256MB。硬盘:150MB以上剩余空间。显示像素:最低800*600,最佳效果1024*768。2软件要求操作系统:Windows2000/NT/XP/CE。数据库:SQL Server2000。3.2 数据库设计1数据库概要说明本系统采用SQL Server 2000 数据库,系统数据库名为ypgl,中共包含46个表,其中作为临时表的有20个,作为数据存储表的有26个。临时表:lsdhinfo0、lsdhinfo1、lsgys0、lsgys1、lskcquery0、lskcquery1、lskh0、lskh1、

7、lsrkquery0、lsrkquery1、lsrkthinfo0、lsrkthinfo1、lsxsquery0、lsxsquery1、lsxsthinfo0、lsxsthinfo1、lsyg0、lsyg1、lsypinfo0、lsypinfo1。数据存储表:tabbf、tabck、tabdhdj、tabdhph、tabgys、tabjsfs、tabkc、tabkcpddj、tabkcpdph、tabkh、tabpurview、tabpurviewctrl、tabrkdj、tabrkjz、tabrkph、tabrkthdj、tabrkthjz、tabrkthph、tabxsdj、tabxsjz

8、、tabxsph、tabxsthdj、tabxsthjz、tabxsthph、tabyginfo、tabypinfo。图2所示的即为本系统中数据库的数据表结构图,该数据表结构图包含系统所有数据表。可以清晰地反应数据库信息。图2 数据库概要说明2主要数据表的结构数据库中的数据表请参见附录B。4 功能模块设计4.1 主窗口设计进销存管理系统主窗口由菜单、工具栏、客户区域和状态栏四部分组成,效果如图3所示。图3 进销存管理系统主窗口1菜单设计(1)在工具栏中单击按钮,或者从菜单中选择“View”/“Workspace”项,这时会弹出如图4所示的工作区窗口(Workspace窗口)。在工作区窗口中,能

9、看到该程序所使用的资源,且每种资源都有一个资源符号,主窗体也使用了一个资源符号IDD_A1_DIALOG,这是VC缺省提供的。可以在这里添加或者删除各种资源。图4 Workspace窗口(2)在工作区窗口(Workspace窗口)右键单击“a1 resources”选项,在弹出菜单中选择“Insert.”选项,将弹出“Insert Resource”对话框。在该对话框中选择“Menu”选项,然后单击“New”按钮,将生成如图5所示的菜单资源。图5 编辑菜单资源(3)右键双击菜单资源编辑器的虚线空白框,在弹出的菜单中选择“Properties”选项,将弹出“Menu Item Propertie

10、s”对话框,在“Menu Item Properties”对话框的“caption”(标题)编辑框中键入:“基础信息(&I)”(符号&可以使字母I有一个下划线,而且可以通过“Alt+I”访问该菜单项。此时关闭“Menu Item Properties”对话框,将在菜单编辑器中生成主菜单“基础信息”。双击“基础信息”菜单下的虚线空白框,在弹出的“Menu Item Properties”对话框中设计“药品信息(&M)”、“员工信息(&Y)”等菜单项。(4)同上,可以设计其他主菜单及菜单项。最后得到如图6所示的菜单界面。图6 菜单界面2工具栏设计在应用程序中要经常使用工具栏,它是最常用的界面元素,

11、对应着应用程序的最常用功能。主窗口共有9个工具栏按钮,分别是“销售登记”、“销售退货”、“销售结账”、“入库登记”、“入库退货”、“入库结账”、“调货登记”、“库存登记”、“退出”工具栏按钮。创建工具栏可使用MFC类库中的CToolBarCtrl类,该类用来生成工具条。本系统主窗体的工具栏将引用MSDN提供的类CStandardBar,该类派生自CToolBarCtrl。操作步骤如下:(1)从基类CToolBarCtrl中派生需要的类CstandardBar。选择“Insert”/“New Class.”菜单项,在弹出来的“New Class”对话框中设置“Class Type”为“MFC C

12、lass”,在“Class Infomation”中的Name编辑框中键入“CstandardBar”,然后在“Base Class”下拉列表框中选择“CtoolBarCtrl”,最后单击“OK”按钮。(2)需要9个按钮,每个按钮有相应的文本和图片。所以,需要添加如图7所示的图片资源,资源长为288像素,高为32像素,资源符号为:IDR_STANDARDBAR。 图7 图片资源(3)添加字符串资源(String Table),如表1所示。表1 字符串资源资源符号值字符串资源IDSTR_XSDJ102销售登记IDSTR_XSTH103销售退货IDSTR_XSJZ 104销售结账IDSTR_RKD

13、J105入库登记IDSTR_RKTH106入库退货IDSTR_RKJZ107入库结账IDSTR_DHDJ108调货登记IDSTR_KCPD109库存盘点IDSTR_OUT110退出(4)程序中引入资源,创建工具栏按钮。创建工具栏按钮需要重写Create函数,该函数创建工具栏的步骤如下: 先创建工具栏窗口,然后为工具栏类添加图片资源。相关函数是:SetBitmapSize(CSize(32,32); /设置单个位图的大小VERIFY(AddBitmap(m_nButtonCount,IDR_STANDARDBAR) != -1); /添加位图m_nButtonCount是指按钮图片的个数,IDR

14、_STANDARDBAR对应着相应的图片。 创建相应数量的按钮,并为每个按钮分配相应图片资源和文本资源,设置相关属性。m_pTBButtons = new TBBUTTONm_nButtonCount; /用来加入到工具栏里的按钮m_pTBButtonsnIndex.iString = AddStrings(pString);m_pTBButtonsnIndex.fsState = TBSTATE_ENABLED;m_pTBButtonsnIndex.fsStyle = TBSTYLE_BUTTON;m_pTBButtonsnIndex.dwData = 0;m_pTBButtonsnInde

15、x.iBitmap = nIndex; /控制按钮的相关图片m_pTBButtonsnIndex.idCommand = nIndex + IDSTR_XSDJ; /用于命令消息传递在步骤中,要注意如下事项: AddStrings(pString)返回一个字符串的基于0的编号,该值用来连接字符串到按钮上,其中的字符串参数pString需要两个结束符来表示结尾,必须将字符串写成如下形式:pString= Only one string to add0;CString类不能提供这样的功能,因为不可能在CString中保存超过一个结束符的字符串。所以,将CString中的字符串取出,以char定义的

16、字符串保存,再对该字符串添加一个结束符,做法如下:CString string;string.LoadString(nIndex + IDSTR_XSDJ); /装载字符串资源/取得字符串的长度为了添加一个结束符,给长度加1int nStringLength = string.GetLength() + 1;TCHAR * pString = string.GetBufferSetLength(nStringLength); /按增加后的长度返回字符串pStringnStringLength = 0;函数GetBufferSetLength的过程分配了nStringLength+1长度的内存空

17、间,并在加上结束符0之后,复制原字符串到这个新的内存空间中,同时将原字符串的结束符也复制到新的位置,于是,该函数结束后,字符串pString已经有两个结束符了,最后一个语句略显多余或不足。但为了保证该字符串确实有两个结束符,不能省略这两个结束符。pStringnStringLength = 0;pStringnStringLength-1 = 0; fsState确定按钮的状态,fsStyle确定按钮的风格。若给fsStyle赋值TBSTYLE_SEP,则该按钮表现为一个间隔。dwData可以是用户自定义的数据,可以将一个指针或句柄传递给它,可以在某些消息响应函数中使用。iBitmap是表示基

18、于0的图像列表的编号。 idCommand为与按钮连接的命令标识,当这个按钮被按下时,这个值将被放到WM_COMMAND中发送到父窗体。如果fsStyle被设置为TBSTYLE_SEP,该值必须为0。用Create函数创建工具栏的代码如下:BOOL CStandardBar:Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );BOOL bRet = CToolBarCtrl:Create(dwStyle, rect, pParentWnd, nID); /记录基类的返回值m_nButtonCount = ID

19、STR_OUT - IDSTR_XSDJ + 1;SetBitmapSize(CSize(32,32); /设置单个位图的大小VERIFY(AddBitmap(m_nButtonCount,IDR_STANDARDBAR) != -1); /添加位图m_pTBButtons = new TBBUTTONm_nButtonCount; /用来加入到工具栏里的按钮for (int nIndex = 0; nIndex m_nButtonCount; nIndex+) /循环设定按钮属性CString string;string.LoadString(nIndex + IDSTR_XSDJ); /装

20、载字符串资源/为每一个字符串再加一个0,用于向工具栏里加字符串 int nStringLength = string.GetLength() + 1; TCHAR * pString = string.GetBufferSetLength(nStringLength);pStringnStringLength = 0;pStringnStringLength-1 = 0;VERIFY(m_pTBButtonsnIndex.iString = AddStrings(pString) != -1); /返回字符串的编号 string.ReleaseBuffer();m_pTBButtonsnInd

21、ex.fsState = TBSTATE_ENABLED;m_pTBButtonsnIndex.fsStyle = TBSTYLE_BUTTON;m_pTBButtonsnIndex.dwData = 0;m_pTBButtonsnIndex.iBitmap = nIndex; /控制按钮的相关图片m_pTBButtonsnIndex.idCommand = nIndex + IDSTR_XSDJ; /用于命令消息传递m_pTBButtonsm_nButtonCount-1.idCommand=IDOK; /用来响应退出消息TBBUTTON sepButton; /用于分隔的按钮sepButt

22、on.idCommand = 0;sepButton.fsStyle = TBSTYLE_SEP;sepButton.fsState = TBSTATE_ENABLED;sepButton.iString = 0;sepButton.iBitmap = 0;sepButton.dwData = 0;for (nIndex = 0; nIndex m_sUserName); 访问资源字符串。先在“Workspace”中的“Resource View”选项中建立字符串资源,定义符号IDS_COMPANY,对应资源为“明日腾龙科技有限责任公司()”。在程序中使用如下代码:CString str;st

23、r.LoadString(IDS_COMPANY);str保存相应的字符串资源。 将访问时间转化为字符串。CTime t=CTime:GetCurrentTime();CString s=t.Format(%H:%M:%S); s=当前系统时间:+s; s会显示为“当前系统时间:20:09:25”形式的字符串。 OnTimer消息响应函数。为实现每隔1秒刷新一次状态栏的显示内容,可以使用WM_TIMER的消息响应函数OnTimer。要创建主窗体的OnTimer函数,首先在“Workspace”工作区“Class View”选项卡中右键单击“CA1Dlg”选项,在弹出菜单中选择“Add Wind

24、ows Message Handle.”菜单项,将弹出“New Windows Message and event handles for class CAIDlg”对话框。在该对话框中,可以选择要进行处理的消息句柄,并为其添加消息响应函数。步骤是从左边的列表框中双击“WM_TIMER”,将其添加到右上边的列表框中,双击该列表框中的“WM_TIMER”项,可以看到VC+创建的函数OnTimer,可以设置这个函数每隔一定的时间响应一次。函数SetTimer来设置OnTimer的消息响应频率。UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CAL

25、LBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );参数说明:nIDEvent:用来标识是哪一个Timer事件。nElapse:设置该Timer事件每隔多长时间发生一次,单位:毫秒。lpfnTimer:设置回调函数,用来响应事件的发生,相当于OnTimer函数。如果将其设为NULL,那么,WM_TIMER事件由窗口类来处理,即由OnTimer函数处理。在本程序中,设定OnTimer函数1000毫秒响应一次。SetTimer(12,1000,NULL);状态栏类CStatusBarCtrl的使用。CRect rect;this-GetClien

26、tRect(&rect);int indicators3;indicators0=rect.Width()/2;indicators1=rect.Width()*3/4;indicators2=rect.Width();m_StatusBarCtrl.SetParts(3,indicators);以上代码用来初始化状态栏,函数SetParts用来设定该状态栏由几个面板组成,每个面板的宽度。实际上,该函数用整型数组作参数,数组元素的值代表面板的宽度。函数SetText用来设定每个面板上显示的数据,代码如下:lBOOL SetText( LPCTSTR lpszText, int nPane, i

27、nt nType );参数说明:lpszText:是该面板的字符串。nPane:是面板编号(基于0)。nType:是面板风格,该参数一般为0。(2)创建状态栏。创建状态栏的操作步骤如下:在CA1Dlg的声明中定义CStatusBarCtrl的对象:CStatusBarCtrl*m_StatusBarCtrl。在CA1Dlg的初始化函数中初始化状态栏对象,代码如下:BOOL CA1Dlg:OnInitDialog()CDialog:OnInitDialog();SetIcon(m_hIcon, TRUE);/Set big iconSetIcon(m_hIcon, FALSE);/Set sma

28、ll icon/取得系统时间CTime t=CTime:GetCurrentTime();CString s=t.Format(%H:%M:%S);s=当前系统时间:+s;/为状态栏创建窗体CRect rect;this-GetClientRect(&rect);m_StatusBarCtrl.Create(WS_CHILD|WS_VISIBLE|CCS_BOTTOM,rect,this,ID_STATUS_BAR_CTRL);/设置状态栏的显示区间数,及相应宽度int indicators3;indicators0=rect.Width()/2;indicators1=rect.Width(

29、)*3/4;indicators2=rect.Width(); m_StatusBarCtrl.SetParts(3,indicators);/显示各区间文本str.LoadString(IDS_COMPANY);m_StatusBarCtrl.SetText(str,0,0); CA1App * app=( CA1App *):AfxGetApp(); m_StatusBarCtrl.SetText(当前操作员:+app-m_sUserName,1,0);m_StatusBarCtrl.SetText(s,2,0);/令CA1Dlg每一秒钟触发一次OnTimer事件,修改系统时间 this-

30、SetTimer(12,1000,NULL);return TRUE; /return TRUE unless you set the focus to a control处理WM_TIMER消息的消息响应函数OnTimer,代码如下:void CA1Dlg:OnTimer(UINT nIDEvent) CTime t=CTime:GetCurrentTime();CString s=t.Format(%H:%M:%S);s=当前系统时间:+s;this-m_StatusBarCtrl.SetText(s,2,0);CDialog:OnTimer(nIDEvent);5客户区设计一个优秀的商业

31、管理系统,不但要有实用的功能,还要有漂亮友好的界面。在本例中,设置窗体背景只需加入一个Bitmap资源,运行效果如图3.3所示,其操作步骤如下:(1)在资源对话框上放一个Picture控件。(2)然后加入一个需要的Bitmap资源,如果图片包含的颜色超过256种,那么它会提示该图片不能在资源编辑器里编辑,不用管它,除非真的想编辑它,加进来的图片的资源符号缺省为IDB_BITMAP1。(3)设置Picture控件属性类型为Bitmap,图像为IDB_BITMAP1。4.2 系统登录管理1实现目标程序启动后,首先进入系统登录程序验证用户密码。系统登录程序主要实现如下功能。q 输入密码的控件采用文本

32、框。密码如果输入正确,取得用户权限并进入系统,否则,将提示错误,并返回密码输入框。q 记录错误次数,录入密码错误3次将自动退出系统。q 用户按下Enter键,控制焦点的移动。系统登录程序运行结果如图8所示。图8 系统登录窗口2设计步骤(1)增加对话框资源,设计窗体资源符号为IDD_DIALOG_LOGIN。(2)为该窗口连接相关的类,在资源对话框上右键单击,选择“ClassWizard.”选项,会弹出“Add a class”对话框,提示IDD_DIALOG_LOGIN是一个新的资源,需要为这个资源创建一个类,或为它连接一个现有类。在此,选择新建一个派生于CDialog的类来连接该资源,该类命

33、名为CDlgLogin。(3)向窗口中添加图片、编辑框、静态文本、按钮等资源,设置主要资源属性,如表2所示。表2 相关资源设置资源名称资源符号资源对应的变量资源属性BitmapJIEMIAN无来自于文件jiemian.bmpPictureIDC_STATIC无类型Bitmap,图像JIEMIANButtonIDOK无缺省ButtonIDCANCEL无缺省Static BoxIDC_STATIC无标题为:请输入用户名和密码:Static BoxIDC_STATIC无标题为:用户名:Static BoxIDC_STATIC无标题为:密码:Edit BoxIDC_EDIT_NAMECEdit m_e

34、ditUserName取消Border,选上【Static edge”Edit BoxIDC_EDIT_PASSWORDCEdit m_editPassWord取消Border,选上【Static edge”和【PassWord”3程序相关代码系统登录程序要在显示主窗体之前显示,系统登录程序代码如下:BOOL CMedApp:InitInstance().LRunSql:InitConnectPtr(); /初始化COM环境,进行数据库连接CDlgLogin dlg; /创建登录窗口对象if(dlg.DoModal()=IDOK) /显示登录窗口CA1Dlg *pdlg=new CA1Dlg;

35、 /创建主窗体对象m_pMainWnd = pdlg;pdlg-DoModal(); /显示主窗体delete pdlg;pdlg=NULL;LRunSql:Close();/断开数据库连接return FALSE;当用户单击“确定”按钮时,进行密码判断和次数判断。处理“确定“按钮的消息响应函数如下:void CDlgLogOn:OnOK()BOOL bLogOn=FALSE;CString sUserPassWord, sPurview,sUserName,sInputPassWord;LRunSql m_runsql;CString sql;_variant_t value;CString

36、 sError;/更新数据变量this-m_editPassWord.GetWindowText(sInputPassWord);this-m_editUserName.GetWindowText(sUserName);CA1App* App=(CA1App *)AfxGetApp();sql.Format(select admi_password,admi_purview from tabpurview where admi_name=%s,sUserName);if(m_runsql.CheckSQLResult(sql)value=m_runsql.m_recordset-GetColl

37、ect(admi_password);if(value.vt!=VT_NULL)sUserPassWord=(char*)(_bstr_t)value; value=m_runsql.m_recordset-GetCollect(admi_purview);if(value.vt!=VT_NULL)sPurview=(char*)(_bstr_t)value;if(sUserPassWord=CCrypt:Encrypt(sInputPassWord,123)App-m_sUserName=sUserName;App-m_sPurview=sPurview;bLogOn=TRUE;elsesE

38、rror=请重新输入密码。n注意大小写!,密码错误;this-m_editPassWord.SetFocus();elsesError=请确认用户名大小写是否正确!,无此用户;this-m_editUserName.SetFocus();if(bLogOn) EndDialog(IDOK);else m_iLogOnCount+;if(m_iLogOnCount=3)this-EndDialog(0);elseMessageBox(sError);进行焦点控制。定义控制焦点的函数,该函数定义了当用户单击Enter键时,焦点改变的顺序,当需要改变焦点时,调用此函数。bool CDlgLogOn:

39、SetTheFocus()HWND hwnd=:GetFocus(); UINT id=:GetDlgCtrlID(hwnd);switch(id)case IDC_EDIT_NAME:this-m_editPassWord.SetFocus(); :PostMessage(m_editPassWord.GetSafeHwnd(),WM_KEYDOWN,VK_END,0);return true;case IDC_EDIT_PASSWORD: this-GetDlgItem(IDOK)-SetFocus();return true;case IDOK:this-OnOK();return tr

40、ue;case IDCANCEL:this-OnCancel();return true;return false;在消息预处理函数中调用此函数。BOOL CDlgLogOn:PreTranslateMessage(MSG* pMsg) if(pMsg-message=WM_KEYDOWN&pMsg-wParam=13)if(this-SetTheFocus()return true;return CDialog:PreTranslateMessage(pMsg);/该函数返回True,表示该消息已被处理4.3 商品销售管理1实现目标q 自动生成销售日期及销售票号。q 确定用户输入数据完毕后,

41、可提交数据给数据库。q 自动核算销售金额。q 支持打印功能。销售登记模块运行结果如图9所示。 图9 销售登记模块运行结果2设计步骤(1)新建一个窗口类,名称为CDlgXSDJ,对话框资源ID为IDD_DIALOG_XSDJ。(2)在窗口中添加编辑框、组合框、静态文本、按钮、时间控件等资源。(3)设置主要资源属性,如表3所示。表3 对话框及相关资源设置资源名称资源符号资源对应的变量资源属性DialogIDD_DIALOG_XSDJCDlgXSDJ dlg(true)标题:销售登记字体名称:楷体_GB2312字体大小:12Combo BoxIDC_COMBO1CComboBox m_comboJs

42、fsType:DropListCombo BoxIDC_COMBO2CComboBox m_comboJsrType:DropListEdit BoxIDC_EDIT_KHIDCGeneralEdit m_editKhId取消BorderEdit BoxIDC_EDIT_KHNAMECGeneralEdit m_editKhName取消BorderEdit BoxIDC_EDIT1CString m_strPhCEdit m_editPh取消Border,选上Read OnlyEdit BoxIDC_EDIT_SSPictureIDC_STATICType:FrameColor:BlackSt

43、atic BoxIDC_STATIC_SS标题为:实收:Static BoxIDC_STATIC标题为:总金额:Static BoxIDC_STATIC_ZJE标题为:0.00Static BoxIDC_STATIC_PH无标题为:销售登记票号:Date Time PickerIDC_DATETIMEPICKER1CDateTimeCtrl m_tcRq格式:Short Date选上:Static edgeButtonIDC_BUTTON1无标题为:删除ButtonIDC_BUTTON_OKCButton m_btnOk标题为:确定ButtonIDC_BUTTON_PRINT无标题为:打印.B

44、uttonIDCANCEL无标题为:退出3程序相关代码(1)创建左上角的标题信息。 创建白色背景。以背景作父窗体,让其他的控件作它的子窗体。这里需要在CDlgXSDJ的头文件中声明CWhiteFrame对象。CWhiteFrame m_whiteframe;在OnCreate的成员函数中创建该对象对应的窗口。int CDlgXSDJ:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CDialog:OnCreate(lpCreateStruct) = -1)return -1;CRect rect;this-GetClientRect(&rect);rec

45、t.left+=10;rect.right-=250;rect.top+=10;rect.bottom=200;m_whiteframe.Create(,WS_CHILD|WS_TABSTOP|WS_VISIBLE,rect,this,700);return 0; 创建标题部分的控件。该部分的控件都以上述的白色背景窗口为父窗口,要注意以下几点:l 在这个背景上创建静态文本,且文本背景是白色。对此,同样使用CWhiteFrame类,并用该类定义一组静态文本对象,要注意创建文本的位置,使其与相应的控件相配合。例如:确保静态文本“客户编号”与相应的编辑框在同一个水平高度;日期与日期控件在同一个高度。

46、l 由于入库与销售大部分内容是相同的,所以,用一个窗体来执行这两部分功能。为此,用Bool型的变量m_bXs来表示这两种区别,并在代码中要适时修改一些属性。l 改变设计时添加的控件的父窗体要用到其成员函数SetParent。方式如下:m_tcRq.SetParent(&m_whiteframe);l 对于结算方式下拉列表框和经手人下拉列表框,需要从数据库中取得相应的数据来初始化这两个窗口,并在最后为这两个下拉列表框确定初值。l 初始化时间。CTime m_dateRq = CTime:GetCurrentTime(); /初始化时间this-m_tcRq.SetTime(&m_dateRq);

47、创建和初始化标题部分的控件的代码如下:bool CDlgXSDJ:InitBaseInfo()CRect rect;CString str;wf=new CWhiteFrame5;CString strs5; /该字符串保存静态文本if(m_bXs) /判断当前是销售登记,还是入库登记strs0=客户编号:;strs1=客户名称:;elsethis-GetDlgItem(IDC_STATIC_PH)-SetWindowText(入库登记票号:);this-SetWindowText(入库登记:);strs0=供应商编号:;strs1=供应商名称:;strs2=结算方式:;strs3=经手人:;

48、strs4=日期:;rect=CRect(10,40,80,55); /用来确定静态文本的位置for(int i=0;im_tcRq.SetTime(&m_dateRq);/init jsr; /初始化经手人下拉列表框CString sql;sql.Format(select yg_name from tabyginfo);if(!m_runsql.CheckSQLResult(sql)return false;_variant_t value;while(!m_runsql.m_recordset-adoEOF) /从数据库取值初始化员工下拉列表框value=m_runsql.m_recor

49、dset-GetCollect(yg_name);if(value.vt!=VT_NULL)this-m_comboJsr.AddString(char*)(_bstr_t)value);m_runsql.m_recordset-MoveNext();/init jsfs;sql.Format(select jsfs from tabjsfs);this-m_runsql.RunSQL(sql);while(!m_runsql.m_recordset-adoEOF) /从数据库取值初始化经手人下拉列表框value=m_runsql.m_recordset-GetCollect(jsfs);if

50、(value.vt!=VT_NULL)this-m_comboJsfs.AddString(char*)(_bstr_t)value);m_runsql.m_recordset-MoveNext();this-m_comboJsfs.SetCurSel(0);this-m_comboJsr.SetCurSel(0);return true; 为客户编号和客户名称编辑框连接自动提示窗口。对于客户信息和供应商信息,这两者信息格式大部分是相同的,并且每次是用到其中的一组数据时都需要用到自动提示窗口,所以专门作出一个类CGeneralEdit来对应着两组信息,并包含对自动提示窗口的使用。该类派生自CE

51、dit(参看类图2.12)。在此之前,请参看关键技术中的5.2.2关于显示自动提示窗口的介绍。功能分析:l 界面上看,需要有下划线和白色背景。l 当把焦点移到某个编辑框上时原有弹出的自动提示窗口消失。l 当在编辑框中进行编辑时引起EN_CHANGE事件时,弹出自动提示窗口。l 焦点移走时,让自动提示窗口消失;但是如果焦点移动到了自动提示窗口上,则自动提示窗口不消失。l 当父窗体移动时,自动提示窗口也跟着移动。l 当在编辑框中进行编辑时,按、Page Up、Page Down键,自动提示窗口会响应这些消息,且此时焦点还在编辑框中。l 当用户在其中一个编辑框中按Enter键,表示确定了选择某一个客户(编号或名称),那么另一个编辑框中的内容也随之改变。l 当用户在其中一个编辑框中单击Esc键,表示用户放弃进行编辑,取消自动弹出对话框。为了实现功能2,写消息WM_SETFOCUS的消息响应函数OnSetFocus。void CGeneralEdit:OnSetFocus(CWnd* pOldWnd)ASSERT(this-m_poplist!=NULL);m_poplist-ShowWindow(SW_HIDE);CEdit:OnSetFocus(pOldWnd);对于功能3,要写EN_CHANGE消息响应函数O

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!