库存管理系统论文_第1页
库存管理系统论文_第2页
库存管理系统论文_第3页
库存管理系统论文_第4页
库存管理系统论文_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、- 76 -信息系统课程设计说明书 设计题目:库存管理系统 设 计 者: 指导教师: 07信息系统工程2010年 6 月 6 日目录:第一章 可行性分析1.1开发环境与开发工具1.2可行性报告1.2.1 开发必要性1.2.2技术可行性1.2.3经济可行性第二章 系统分析 2.1 系统需求分析2.2 功能需求分析2.3 业务流程分析2.4 数据与数据流程分析第三章 系统设计3.1 数据库设计3.2 代码设计第四章 设计总结4.1 工作总结4.2 设计过程总结4.3 设计展望参考文献第一章 可行性分析1.1开发环境和开发工具操作系统:Windows XP 开发语言:C+数据库: SQL 2000数

2、据库访问控件:ADO1.2可行性分析 1.2.1 开发必要性随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越来越大,从而可以使我们从繁杂的信息管理中解放出来,提高了我们的工作效率。如今,信息网络技术已经无处不在,无时不在了,各种各样的信息管理系统也就应运而生。目前,随着企业规模的不断壮大,产品的种类和数量都不断增加,产品的流通越来越多,这就使产品的存储需求不断增加,需要工作人员花费很大力气来统筹管理这项工作,为了保证工作的正确性和可靠性同时提高管理的效率,很有必要建立一个库存管理系统,使货品管理工作

3、规范化,系统化,程序化。1.2.2 技术可行性在技术上,如今成熟的语言有很多,像是PowerBuilder 、VB 、Delphi等都能开发出很好用的系统。而本次设计我采用的是VC,也是很成熟的语言,再加上数据库如今的发展状况,开发出一个库存管理的应用程序是没有问题的。鉴于软硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,可以很简单方便的进行图书信息管理。硬件的配置要求不能太高,这样可以很好的适应当前的企业办公管理工作,如今电脑软硬件技术飞速发展,计算机系统开发人员也比比皆是,开发知识密集型的信息系统的技术条件也已经很成熟了。 1.2.3 经济可行性在经济上,费用的支出和带来的巨大收益

4、相比自是不能相提并论了,至于管理上,工作人员对于这项工程的实施必然是持赞成的态度,因为这样会大大减轻他们的工作量提高工作效率。且成本低,建成后的维护费用也与线性系统运行费用相同,而每年可以促进企业仓库存储的工作优化、库存产品的有效利用率,并可有效降低企业库存的不必要支出,提高企业产品存储资金的有效利用。第二章 系统分析2.1 业务范围分析1.企业库存基础信息设置:这是企业库存最重要的模块之一,它将对仓库存储中的产品、雇员、客户和仓库的基本信息进行管理操作,所有的产品、仓库等原始数据输入都是在这里实现的,有了这里的数据输入,才能开始以后的诸如产品入库、产品出库等操作。(1)产品信息设置:该功能允

5、许用户添加、修改和删除产品信息,在输入过程中,程序自动生成产品编号以方便产品的管理和入库时选择产品,同时程序也检查输入的合法性。(2)雇员信息设置:该功能允许用户添加、修改和删除雇员信息,在信息录入过程中,程序自动生成雇员编号以方便对员工信息的管理,同时程序也检查输入的合法性。(3)客户信息设置:企业库存产品出库,必然要登记货物发给的客户,该功能允许用户对客户的名称、联系方式、地址等基本信息进行添加、修改和删除,在信息录入过程中,程序自动生成客户编号以方便对客户信息的管理,同时程序也检查输入的合法性。(4)仓库信息设置:产品的入库,出库,调拨和报损都需要仓库的基本信息。该功能允许用户添加、修改

6、和删除仓库信息,在信息录入过程中,程序自动生成仓库编号以方便对仓库信息的管理,同时程序也检查输入的合法性。2.库存信息的录入与修改(1)产品入库单信息录入与修改:该功能允许用户输入入库单信息,在输入过程中,程序自动生成产品入库单编号以方便对入库产品的信息管理和单据的查询,同时程序也检查输入的合法性。(2)产品出库单信息录入与修改:该功能允许用户输入出库单信息,在输入过程中,程序自动生成产品出库单编号以方便对出库产品的信息管理和单据的查询,同时程序也检查输入的合法性。(3)产品调拨单信息录入与修改:因为仓库所处地区的不同,以及库存量的差异,所以企业内部仓库之间货品的调拨时必然的。该功能允许用户输

7、入调拨单信息,在输入过程中,程序自动生成产品调拨单编号以方便对调拨产品的信息管理和单据的查询,同时程序也检查输入的合法性。(4)产品报损单信息录入与修改:因为在产品的运输过程或是存储过程中,会有产品的损坏,所以系统也应该具备产品报损信息的管理功能。该功能允许用户输入产品报损单信息,在输入过程中,程序自动生成产品报损单编号以方便对报损产品的信息管理和单据的查询,同时程序也检查输入的合法性。3.库存信息的查询(1)产品入库单信息的查询:该功能不仅要对产品入库单据的信息(如:入库仓库、生产部门、产品名称、经办人等)进行查询,而且要对该单据所包括的产品的信息(产品名称、型号、单价等)进行查询。(2)产

8、品出库单信息的查询:该功能不仅要对产品出库单据的信息(仓库名称、经办人、客户等)进行查询,而且要对该单据所包括的产品的信息(产品名称、型号、单价等)进行查询。(3)产品调拨单信息的查询:该功能不仅要对产品调拨单据的信息(入库仓库、出库仓库、经办人等)进行查询,而且要对该单据所包括的产品的信息(产品名称、型号、单价等)进行查询。(4)产品报损单信息的查询:该功能不仅要对产品报损单据的信息(报损仓库、经办人等)进行查询,而且要对该单据所包括的产品的信息(产品名称、型号、单价等)进行查询。4.库存信息的统计分析(1)入库产品信息汇总统计:该功能对各种入库产品的存储仓库、存储数量、存储金额进行了汇总统

9、计。(2)出库产品信息汇总统计:该功能对各种出库产品的出库仓库、出库数量、出库金额进行了汇总统计。该库存管理系统的功能图如下:库存管理基本设置产品基本信息设置雇员基本信息设置客户基本信息设置仓库基本信息设置信息录入产品入库单产品出库单产品调拨单产品报损单统计汇总信息查询产品入库单查询产品出库单查询产品调拨单查询产品报损单查询入库产品统计汇总出库产品统计汇总图2.1库存信息管理系统功能图2.2 业务流程分析库存管理数据流图生产部门产品入库产品仓库部门客户产品出库产品企业主管产品入库单产品出库单产 品报 损报损信息订购订单信息产品信息产品调拨产品产品产品报损单图2.2 系统数据流图2.3 数据字典

10、名字:产品编号别名:描述: 此产品在产品中的惟一的标识.定义:1数字10位置: 产品信息 产品入库单 产品出库单产品调拨单产品报损单名字:产品入库单号别名:描述: 此入库单在单据中的惟一的标识.定义:1数字10位置: 产品入库单 产品入库单产品信息 入库产品汇总统计名字:产品出库单号别名:描述: 此出库单在单据中的惟一的标识.定义:1数字10位置: 产品处库单 产品出库单产品信息 出库产品汇总统计名字:产品报损单号别名:描述: 此报损单在单据中的惟一的标识.定义:1数字10位置: 产品报损单 产品报损单产品信息名字:产品调拨单号别名:描述: 此调拨单在单据中的惟一的标识.定义:1数字10位置:

11、 产品调拨单 产品调拨单产品信息图2.3 数据字典2.4 数据与数据流程分析第三章 系统设计3.1 系统总体结构设计登陆库存管理系统验证用户信息系统主窗体仓库管理入库管理出库管理盘存管理综合管理附项分类历史数据管理打印、查询系统货品入库单经办人员报表货品出库单数据备份备份输出库存汇总库存管理系统结构图错误3.2 E-R图产品信息产品编号产品名称规格型号库存上限单价颜色类别库存下限计量单位上限图3.1 产品信息实体E-R图员工编号雇员信息姓名名称职务工作部门家庭住址性别电话号码婚姻状况出生年月图3.2 雇员信息实体E-R图客户信息客户编号单位名称名称联系人客户级别电话号码地址邮箱传真邮编图3.3

12、 客户信息实体E-R图仓库名称名称仓库地址仓库信息仓库编号计价法图3.4 仓库信息实体E-R图入库单号产品入库单信息制单日期产品生产日期生产部门入库类别入库仓库备注经办人图3.5 入库单信息实体E-R图产品单价产品入库单产品信息入库单号产品编号入库数量图3.6 入库单产品信息实体E-R图出库单号产品出库单信息制单日期出库仓库销售部门出库类别销售人员发货单号客户名称备注图3.7 出库单信息实体E-R图产品出库单产品信息出库单号产品编号出库数量产品单价图3.8 出库单产品信息实体E-R图 产品调拨单信息调拨单号制单日期入库仓库出库仓库出库类别经办人备注图3.9 调拨单信息实体E-R图产品调拨单产品

13、信息调拨单号产品编号调拨数量产品单价图3.10 调拨单产品信息实体E-R图产品报损单信息报损单号制单日期报损仓库出库类别经办人备注图3.11 报损单信息实体E-R图产品编号产品报损单产品信息报损单号报损数量产品单价图3.12 报损单产品信息实体E-R图产品报损单产品出库单入库单出库单产品入库单产品调拨单报损单选择报损出库工作人员办理调拨单产品选择调拨出库办理选择生产入库办理销售出库办理NMNNM1NNN选择NNMMNM1MMM1NNM1M图3.13整个系统的ER图3.3数据库设计 数据库有以下十三个表组成:表3.1 产品基本信息表字段说明字段名称数据类型数据长度说明主键ProductIDCha

14、r10产品编号是ProductNameChar20产品名称否StandardChar10规格否modelChar10型号否PriceFloat8单价否qualityGuaranteeInt4保存期限否maintanceInt4维护期否UnitChar10计量单位否colorTypeChar10颜色类别否qualityLevelChar10质量等级否finishRateFloat4成品率否storeHouseChar20存放仓库否taxRateFloat8税率否RemarkChar100备注否numMinInt4存储下限否NumMaxInt4存储上限否表3.2 雇员基本信息表字段说明字段名称数据

15、类型数据长度说明主键staffIDChar20员工编号是staffNameChar30员工姓名否DutyChar20员工职务否DepartmentChar20所在部门否SexChar2性别否AddressChar30员工住址否BirthdayDatetime8出生日期否PostcodeChar10邮政编码否marriageConditionChar10婚姻状况否TelephoneChar20员工电话否NationalityChar20国籍否eMailChar20电子邮件否educationLevelChar20学历否QQChar10QQ号码否guaduateSchoolChar20毕业院校否M

16、ajorChar20专业否IdentityNOChar20身份证号码否MobileChar20手机号码否workTypeChar20员工工种否RemarkChar100备注否表3.3客户基本信息表字段说明字段名称数据类型数据长度说明主键CilentIDChar20客户编号是bookinDateDatetime8登记日期否clientLevelChar20客户级别否clientTypeChar20客户类型否CompanyChar20客户公司否contactPersonChar20联系人否AreaIDChar20地区否AddressChar20地址否PostcodeChar20邮政编码否Telep

17、honeChar20联系电话否FaxChar20传真否eMailChar20电子邮件否RemarkChar100备注否manageRangeChar20经营范围否manageProductChar20经营产品否AccountbankChar20开户银行否AccountChar20银行账号否TaxNOChar20税号否RegisterDateDatetime8注册日期否registerFundFloat8注册资金否ScaleChar20规模否IndustrycharacterChar20行业性质否AllfundsFloat8总资产否ClientcharacterChar20客户性质否表3.4仓库

18、表字段说明字段名称数据类型数据长度说明主键StorehouseIDChar20仓库编号是storehouseNameChar30仓库名称否storehousePostionChar30仓库地址否priceMethodChar20仓库计价法否表3.5产品入库单基本信息表字段说明字段名称数据类型数据长度说明主键ProductInputFormIDChar10产品入库单号是ProduceDateDatetime8生产日期否storeHouseChar20仓库名称否produceDepartmentChar20生产部门否DealerChar20经办人否houseInTypeChar20入库类别否Rem

19、arkChar100备注否FormdateDatetime8制单日期否表3.6入库产品信息表字段说明字段名称数据类型数据长度说明主键productInputFormIDChar10入库单号是productIDChar10产品编号是NumInt4数量否PriceFloat8单价否表3.7产品出库单基本信息表字段说明字段名称数据类型数据长度说明主键ProductOutputFormIDChar10产品出库单号是ConsignmentFormIDChar10发货单号否storeHouseChar20仓库名称否sellDepartmentChar20销售部门否SellerChar20销售人员否clie

20、ntNameChar20客户名称否HouseOutTypeChar20出库类别否RemarkChar20备注否FormdateDatetime8制单日期否DealerChar20经办人否表3.8出库产品信息表字段说明字段名称数据类型数据长度说明主键ProductOutputFormIDChar10出库单号是ProductIDChar10产品编号是NumInt4数量否PriceFloat8单价否表3.9产品调拨单基本信息表字段说明字段名称数据类型数据长度说明主键productMoveFormIDChar10产品调拨单号是storeHouseInChar20入库仓库否storeHouseOutCh

21、ar20出库仓库否DealerChar20经办人否houseOutTypeChar20出库类别否RemarkChar100备注否FormdateDatetime8制单日期否表3.10调拨产品信息表字段说明字段名称数据类型数据长度说明主键ProductMoveFormIDChar10产品调拨单号是ProductIDChar10产品编号是NumInt4数量否PriceFloat8单价否表3.11产品报损单基本信息表字段说明字段名称数据类型数据长度说明主键ProductLoseFormIDChar10产品报损单号是storeHousechar20报损仓库否DealerChar20经办人否houseO

22、utTypeChar20出库类别否RemarkChar100备注否FormdateDatetime8制单日期否表3.12报损产品信息表字段说明字段名称数据类型数据长度说明主键ProductLoseFormIDChar10报损单号是ProductIDChar10产品编号是NumInt4数量否PriceFloat8单价否3.2代码设计我在应用程序类StoreApp的InitInstance方法中进行初始化。各模块在连接数据库的时候都需要声明所需的指针,声明如下:_RecordsetPtr m_pIDRecordset; / 记录集指针的个数可根据实际的需要来确定声明几个_ConnectionPtr

23、 m_pConn;在StoreApp的构造函数中定义数据库的连接字符串:TreeConnString=_T("Data Source=SaleData;UID=Sa;PWD=;")数据库的初始化,连接代码如下:HRESULT hRes;tryhRes=m_pConn.CreateInstance(_T("ADODB.Connection");/创建connection对象m_pConn->ConnectionTimeout = 8; /超时八秒hRes=m_pConn->Open(_bstr_t(LPCTSTR) TreeConnString

24、),_T(""),_T(""),adModeUnknown); /TreeConnString为连接字符串catch(_com_error e) /捕捉异常 CString errormessage; errormessage.Format(_T("连接SaleData数据库失败!rn错误信息:%s"),e.ErrorMessage(); AfxMessageBox(errormessage); /显示错误信息 return FALSE;hRes = m_pIDRecordset.CreateInstance(_T("ADO

25、DB.Recordset");/创建Recordset对象if (SUCCEEDED(hRes)hRes = m_pIDRecordset->Open(LPTSTR)strSQL.GetBuffer(130),m_pConn.GetInterfacePtr(),adOpenDynamic,adLockPessimistic,adCmdText);if(SUCCEEDED(hRes)TRACE(_T("连接成功!n");在要用记录集指针的时候可以用CreateInstance方法创建ADO连接对象。在程序中使用完数据库时,还需关闭连接,代码如下:m_pIDRe

26、cordset->Close();3.2.1 基本信息模块的实现图3.2.1单击条目后产品信息对话框1. 建立产品基本信息的CProductInfo对话框类使用Visual C+6.0的“InsertType”为“MFC Class”,“Name”为“CProductInfo”,“Base class”为“CDialog”,“Dialog ID”为“IDD_PRODUCTINFO_FORM”。然后单击“OK”按钮即可完成CProductInfo类的创建。2.为模块“基本信息设置”创建菜单项,如表3.2.1所示表3.2.1基本信息设置菜单说明资源ID标题ID_set_productInfo

27、产品信息设置ID_input_staffInfor雇员信息设置ID_input_clientInfor客户信息设置ID_set_storehouse仓库信息设置3.主要代码(1)重载对话框的OnInitDialog函数在OnInitDialog函数中主要完成列表框控件的样式设定、列标题添加、数据库中已经存在的数据显示和编辑框及按钮控件可用性设置、为存放仓库组合框控件添加可选项。步骤如下:调用列表框控件的InsertColumm()方法插入列,并设定列标题;分别查询storeHouse、product表,并构造相应的查询结果记录集;打开storeHouse的查询结果记录集,将记录集中的数据插入到

28、相应的组合框中;打开product的查询结果记录集,调用列表框控件的InsertItem()和SetItemText()方法将记录集中的数据插入到列表框控件中;调用控件的GetDlgItem()方法,为控件可用性控制变量赋值;调用控件的EnableWindow()方法,设定控件的可用性。部分代码如下:style=m_list.GetExStyle();style=(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT)&(LVS_EX_CHECKBOXES) ;/设定列表框风格 网格行选择 取消复选框m_list.SetExtendedStyle(st

29、yle);/为列表框控件添加列,并设定列标题m_list.InsertColumn(0,"商品编号",LVCFMT_LEFT,100);/左对齐 宽度100m_list.InsertColumn(1,"商品名称",LVCFMT_LEFT,100); /左对齐 宽度100/此处省略部分代码_RecordsetPtr m_pListRecordset; /用于创建一个查询记录集CString strSQL;HRESULT hTRes;strSQL="select * from storeHouse" /构造查询语句为存放仓库组合框添加可选

30、项_RecordsetPtr m_pStoreHouseRecordset;hTRes = m_pStoreHouseRecordset.CreateInstance(_T("ADODB.Recordset");if (SUCCEEDED(hTRes) hTRes = m_pStoreHouseRecordset->Open(LPTSTR)strSQL.GetBuffer(130),(CStoreApp*)AfxGetApp()->m_pConn.GetInterfacePtr(),adOpenDynamic,adLockPessimistic,adCmdTex

31、t);/打开查询结果记录集if(SUCCEEDED(hTRes)TRACE(_T("连接成功!n");while(!(m_pStoreHouseRecordset->adoEOF)m_storeHouseCombo.AddString(CStoreApp*)AfxGetApp()->GetStringFromVariant(m_pStoreHouseRecordset->GetCollect("storeHouseName");/插入组合框m_pStoreHouseRecordset->MoveNext();/记录集指针向后移动m

32、_pStoreHouseRecordset->Close(); /关闭记录集/将目前数据库中已经存在的产品信息添加到产品列表框中strSQL="SELECT * FROM product"/构造查询语句try HRESULT hTRes;hTRes = m_pListRecordset.CreateInstance(_T("ADODB.Recordset");if (SUCCEEDED(hTRes)hTRes = m_pListRecordset->Open(LPTSTR)strSQL.GetBuffer(130),(CStoreApp*)A

33、fxGetApp()->m_pConn.GetInterfacePtr(),adOpenDynamic,adLockPessimistic,adCmdText);/打开查询结果记录集if(SUCCEEDED(hTRes)TRACE(_T("连接成功!n");if (!(m_pListRecordset->adoEOF)int i=0;while(!(m_pListRecordset->adoEOF)m_list.InsertItem(i,(CStoreApp*)AfxGetApp()->GetStringFromVariant(m_pListReco

34、rdset->GetCollect("productID");/产品编号m_list.SetItemText(i,1,(CStoreApp*)AfxGetApp()->GetStringFromVariant(m_pListRecordset->GetCollect("productName");/产品名称 /此处省略部分代码if (!(m_pListRecordset->adoEOF) m_pListRecordset->MoveNext(); /记录集指针向后移动i+;catch(_com_error e)/捕捉异常CS

35、tring errormessage;MessageBox("创建记录集失败!","错误");flag=0;/为对话框控件可用性控制变量赋值tx_productID=GetDlgItem(IDC_productID);tx_productName=GetDlgItem(IDC_productName);/此处省略部分代码bt_modify=GetDlgItem(IDC_modify);/设定按钮的可用性bt_save->EnableWindow(false);/保存按钮可用bt_modify->EnableWindow(false);/修改按

36、钮可用bt_delete->EnableWindow(false);/删除按钮可用/初始情况下,所有的编辑框不可用tx_productID->EnableWindow(false);/此处省略部分代码UpdateData(false); /更新对话框数据return TRUE; (2)实现列表框控件的NM_CLICK消息函数当列表框中的条目被单击(如列表框的条目被选中)时该函数自动被调用。作用是当列表框中的一个条目被选中时,将该条目对应的信息显示到相应的编辑框控件中,使按钮“增加”、“修改”、“删除”变为可用,“存盘”按钮不可用;当没有条目被选中时,“修改”、“删除”、“保存”按钮

37、不可用,只有“增加”按钮可用,同时将编辑框控件内容清空并使其不可用。步骤如下:调用m_list的GetFirstSelectedItemPosition()方法,获得单击的位置。调用m_list的GetNextSelectedItem()方法,获得单击的条目。调用m_list的GetItemText()方法,获得条目中对应列的字符串,并将其转换成预定的类型。具体代码如下:void CProductInfo:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) UpdateData(true);/将对话框中数据更新到变量POSITION pos = m_li

38、st.GetFirstSelectedItemPosition();/获取单击的位置if(pos)int nFirstSelItem = m_list.GetNextSelectedItem(pos);/获取单击的条目m_productID=m_list.GetItemText(nFirstSelItem,0);/产品编号/省略部分代码bt_modify->EnableWindow(true); /修改按钮可用bt_delete->EnableWindow(true); /删除按钮可用UpdateData(false); /将数据更新到对话框*pResult = 0;(3)为“增加

39、”按钮提供实现函数“增加”按钮只是完成添加的准备工作,使得除了“产品编号”以外的所有编辑控件可用,并且为他们设定默认值。通过查询数据库,查询可用的产品入库单号,并更新下一个可用的产品入库单号。当所有内容添加完毕后,单击“存盘”按钮才能实现实际的保存工作。代码如下:void CProductInfo:OnAdd() UpdateData(true);/对话框数据更新到变量/获取新增加的产品的编号int productID=(CStoreApp*)AfxGetApp()->m_pIDRecordset->GetCollect("productID").intVal;

40、if(productID<10) /为产品编号设定格式m_productID.Format("product0000%d",productID);else if(productID<100&&productID>9)m_productID.Format("product000%d",productID);else if(productID<1000&&productID>99)m_productID.Format("product00%d",productID);CStri

41、ng str;str.Format("%d",productID+1); /更新下一个可用的产品编号(CStoreApp*)AfxGetApp()->m_pIDRecordset->PutCollect("productID",_variant_t(str);(CStoreApp*)AfxGetApp()->m_pIDRecordset->Update();/更新数据库/为对话框控件的变量设定默认值m_productName = _T("");m_standard = _T("");/此处省

42、略部分代码flag=1; /添加 /设定除产品编号以外的其他编辑控件均可用tx_productID->EnableWindow(false);/此处省略部分代码tx_numMin->EnableWindow(true); /设定按钮的可用性bt_save->EnableWindow(true); /保存按钮可用bt_add->EnableWindow(false); /添加按钮不可用bt_modify->EnableWindow(false); /修改按钮不可用bt_delete->EnableWindow(false); /删除按钮不可用UpdateDat

43、a(false);/将数据更新到对话框(4)为修改按钮提供实现函数“修改”按钮只是完成修改的准备工作,除了“产品入库单号”外的其他编辑控件均可用。当所有的内容修改完毕后,单击“存盘”按钮才能实现实际的保存工作。代码如下:void CProductInfo:OnModify() /设定除产品编号以外的其他编辑控件均可用tx_productID->EnableWindow(false);tx_productName->EnableWindow(true);/此处省略部分代码tx_numMin->EnableWindow(true);flag=2;/修改bt_save->En

44、ableWindow(true);/保存按钮可用(5)为存盘按钮提供实现函数“存盘”按钮用于将新添加的条目或修改后的条目存储到数据库中,并将列表框控件中的内容刷新,同时使新增加的条目或修改的条目在列表框控件中可见并处于选中状态。实现时如果是新增,查询所有的记录,在该记录集中增加记录并更新数据库;如果是修改记录,则查询产品编号等于目前编辑的产品编号的记录,修改该记录,最后将记录更新到数据库。代码如下:void CProductInfo:OnSave() UpdateData(true);/将控件中的值更新到变量_RecordsetPtr m_pRecordset; CString strSQL;

45、if(flag=1) /添加strSQL="SELECT * FROM product" ;/构造sql语句try HRESULT hTRes;hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset");if (SUCCEEDED(hTRes) hTRes = m_pRecordset->Open(LPTSTR)strSQL.GetBuffer(130),(CStoreApp*)AfxGetApp()->m_pConn.GetInterfacePtr(),adOpenDynamic,ad

46、LockPessimistic,adCmdText);/打开查询结果记录集if(SUCCEEDED(hTRes) TRACE(_T("连接成功!n");CString str;m_pRecordset->AddNew();/添加新的记录m_pRecordset->PutCollect("productID",_variant_t(m_productID);/产品编号/此处省略部分代码m_pRecordset->Update(); /更新数据库int j;j=m_list.GetItemCount(); /获取要插入的条目的位置m_lis

47、t.InsertItem(j,m_productID); /产品编号m_list.SetItemText(j,1,m_productName); /产品名称 /此处省略部分代码 AfxMessageBox("插入成功!"); /提示信息catch(_com_error e)/捕捉异常CString errormessage;MessageBox("创建记录集失败!","错误");else if(flag=2) /修改strSQL="SELECT * FROM product where productID='&quo

48、t; ;strSQL=strSQL+m_productID+"'"/构造查询指定产品编号的产品的信息的sql语句tryHRESULT hTRes;hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset");if (SUCCEEDED(hTRes)hTRes = m_pRecordset->Open(LPTSTR)strSQL.GetBuffer(130),(CStoreApp*)AfxGetApp()->m_pConn.GetInterfacePtr(),adOpenDynami

49、c,adLockPessimistic,adCmdText);/打开查询结果记录集if(SUCCEEDED(hTRes)TRACE(_T("连接成功!n");CString str;m_pRecordset->PutCollect("productName",_variant_t(m_productName);/产品名称/此处省略部分代码AfxMessageBox("修改成功!");/提示信息catch(_com_error e)/捕捉异常CString errormessage;MessageBox("创建记录集失败

50、!","错误");Refresh();/设定按钮的可用性bt_add->EnableWindow(true);/添加按钮可用bt_delete->EnableWindow(true);/删除按钮可用bt_modify->EnableWindow(true);/修改按钮可用bt_save->EnableWindow(false);/保存按钮不可用/所有的编辑控件均不可用tx_productID->EnableWindow(false);/此处省略部分代码UpdateData(false);/将数据更新到对话框(6)为“删除”按钮提供实现函数删除选定的记录或者是当前记录,先生成删除指定产品编号的产品信息的SQL语句,调用数据库连接对象Execute方法执行该SQL语句将满足条件的记录从数据库中删除。最后将删除的记录从列表框控件中清除并为编辑框控件变量赋默认值。代码如下:void CProductInfo:OnDelete() CAffirm dlg;if(dlg.DoModal()!=IDOK)/显示确认删除对话框 return;_variant_t RecordsAffected;CString strSQL;/构造删除记录的sql语句strSQL="delete from product

温馨提示

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

评论

0/150

提交评论