资源描述
信息系统
课程设计阐明书
设计题目:库存管理系统
设 计 者:
指引教师:
07信息系统工程
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
数据库访问控件:ADO
1.2可行性分析
1.2.1 开发必要性
随着计算机及网络技术飞速发展,Internet/Intranet应用在全球范畴内日益普及,当今社会正迅速向信息化社会迈进,信息自动化作用也越来越大,从而可以使咱们从繁杂信息管理中解放出来,提高了咱们工作效率。如今,信息网络技术已经无处不在,无时不在了,各种各样信息管理系统也就应运而生。
当前,随着公司规模不断壮大,产品种类和数量都不断增长,产品流通越来越多,这就使产品存储需求不断增长,需要工作人员耗费很大力气来统筹管理这项工作,为了保证工作对的性和可靠性同步提高管理效率,很有必要建立一种库存管理系统,使货品管理工作规范化,系统化,程序化。
1.2.2 技术可行性
在技术上,如今成熟语言有诸多,像是PowerBuilder 、VB 、Delphi等都能开发出较好用系统。而本次设计我采用是VC,也是很成熟语言,再加上数据库如今发展状况,开发出一种库存管理应用程序是没有问题。
鉴于软硬件方面对系统需求,软件规定易学,界面和谐,容易掌握,可以很简朴以便进行图书信息管理。硬件配备规定不能太高,这样可以较好适应当前公司办公管理工作,如今电脑软硬件技术飞速发展,计算机系统开发人员也比比皆是,开发知识密集型信息系统技术条件也已经很成熟了。
1.2.3 经济可行性
在经济上,费用支出和带来巨大收益相比自是不能相提并论了,至于管理上,工作人员对于这项工程实行必然是持赞成态度,由于这样会大大减轻她们工作量提高工作效率。且成本低,建成后维护费用也与线性系统运营费用相似,而每年可以增进公司仓库存储工作优化、库存产品有效运用率,并可有效减少公司库存不必要支出,提高公司产品存储资金有效运用。
第二章 系统分析
2.1 业务范畴分析
1.公司库存基本信息设立:
这是公司库存最重要模块之一,它将对仓库存储中产品、雇员、客户和仓库基本信息进行管理操作,所有产品、仓库等原始数据输入都是在这里实现,有了这里数据输入,才干开始后来诸如产品入库、产品出库等操作。
(1)产品信息设立:该功能容许顾客添加、修改和删除产品信息,在输入过程中,程序自动生成产品编号以以便产品管理和入库时选取产品,同步程序也检查输入合法性。
(2)雇员信息设立:该功能容许顾客添加、修改和删除雇员信息,在信息录入过程中,程序自动生成雇员编号以以便对员工信息管理,同步程序也检查输入合法性。
(3)客户信息设立:公司库存产品出库,必然要登记货品发给客户,该功能容许顾客对客户名称、联系方式、地址等基本信息进行添加、修改和删除,在信息录入过程中,程序自动生成客户编号以以便对客户信息管理,同步程序也检查输入合法性。
(4)仓库信息设立:产品入库,出库,调拨和报损都需要仓库基本信息。该功能容许顾客添加、修改和删除仓库信息,在信息录入过程中,程序自动生成仓库编号以以便对仓库信息管理,同步程序也检查输入合法性。
2.库存信息录入与修改
(1)产品入库单信息录入与修改:该功能容许顾客输入入库单信息,在输入过程中,程序自动生成产品入库单编号以以便对入库产品信息管理和单据查询,同步程序也检查输入合法性。
(2)产品出库单信息录入与修改:该功能容许顾客输入出库单信息,在输入过程中,程序自动生成产品出库单编号以以便对出库产品信息管理和单据查询,同步程序也检查输入合法性。
(3)产品调拨单信息录入与修改:由于仓库所处地区不同,以及库存量差别,因此公司内部仓库之间货品调拨时必然。该功能容许顾客输入调拨单信息,在输入过程中,程序自动生成产品调拨单编号以以便对调拨产品信息管理和单据查询,同步程序也检查输入合法性。
(4)产品报损单信息录入与修改:由于在产品运送过程或是存储过程中,会有产品损坏,因此系统也应当具备产品报损信息管理功能。该功能容许顾客输入产品报损单信息,在输入过程中,程序自动生成产品报损单编号以以便对报损产品信息管理和单据查询,同步程序也检查输入合法性。
3.库存信息查询
(1)产品入库单信息查询:该功能不但要对产品入库单据信息(如:入库仓库、生产部门、产品名称、经办人等)进行查询,并且要对该单据所涉及产品信息(产品名称、型号、单价等)进行查询。
(2)产品出库单信息查询:该功能不但要对产品出库单据信息(仓库名称、经办人、客户等)进行查询,并且要对该单据所涉及产品信息(产品名称、型号、单价等)进行查询。
(3)产品调拨单信息查询:该功能不但要对产品调拨单据信息(入库仓库、出库仓库、经办人等)进行查询,并且要对该单据所涉及产品信息(产品名称、型号、单价等)进行查询。
(4)产品报损单信息查询:该功能不但要对产品报损单据信息(报损仓库、经办人等)进行查询,并且要对该单据所涉及产品信息(产品名称、型号、单价等)进行查询。
4.库存信息记录分析
(1)入库产品信息汇总记录:该功能对各种入库产品存储仓库、存储数量、存储金额进行了汇总记录。
(2)出库产品信息汇总记录:该功能对各种出库产品出库仓库、出库数量、出库金额进行了汇总记录。
该库存管理系统功能图如下:
库存管理
基本设立
产品基本信息设立
雇员基本信息设立
客户基本信息设立
仓库基本信息设立
信息录入
产品入库单
产品出库单
产品调拨单
产品报损单
记录汇总
信息查询
产品入库单查询
产品出库单查询
产品调拨单查询
产品报损单查询
入库产品记录汇总
出库产品记录汇总
图2.1库存信息管理系统功能图
2.2 业务流程分析
库存管理数据流图
生产部门
产品入库
产品
仓库部门
客户
产品出库
产品
公司主管
产品入库单
产品出库单
产 品
报 损
报损信息
订购
订单信息
产品信息
产品调拨
产品
产品
产品报损单
图2.2 系统数据流图
2.3 数据字典
名字:产品编号
别名:
描述:此产品在产品中惟一标记.
定义:1{数字}10
位置:产品信息
产品入库单
产品出库单
产品调拨单
产品报损单
名字:产品入库单号
别名:
描述:此入库单在单据中惟一标记.
定义:1{数字}10
位置:产品入库单
产品入库单产品信息
入库产品汇总记录
名字:产品出库单号
别名:
描述:此出库单在单据中惟一标记.
定义:1{数字}10
位置:产品处库单
产品出库单产品信息
出库产品汇总记录
名字:产品报损单号
别名:
描述:此报损单在单据中惟一标记.
定义:1{数字}10
位置:产品报损单
产品报损单产品信息
名字:产品调拨单号
别名:
描述:此调拨单在单据中惟一标记.
定义:1{数字}10
位置:产品调拨单
产品调拨单产品信息
图2.3 数据字典
2.4 数据与数据流程分析
第三章 系统设计
3.1 系统总体构造设计
登陆库存管理系统
验证顾客信息
系统主窗体
仓库管理
入库管理
出库管理
盘存管理
综合管理
附项分类
历史数据管理
打印、查询
系统
货品入库单
经办人员报表
货品出库单
数据备份
备份输出
库存汇总
库存管理系统构造图
错误
3.2 E-R图
产品信息
产品编号
产品名称
规格
型号
库存上限
单价
颜色类别
库存下限
计量单位上限
图3.1 产品信息实体E-R图
员工编号
雇员信息
姓名名称
职务
工作部门
家庭住址
性别
电话号码
婚姻状况
出生年月
图3.2 雇员信息实体E-R图
客户信息
客户编号
单位名称名称
联系人
客户级别
电话号码
地址
邮箱
传真
邮编
图3.3 客户信息实体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图
产品调拨单产品信息
调拨单号
产品编号
调拨数量
产品单价
图3.10 调拨单产品信息实体E-R图
产品报损单信息
报损单号
制单日期
报损仓库
出库类别
经办人
备注
图3.11 报损单信息实体E-R图
产品编号
产品报损单产品信息
报损单号
报损数量
产品单价
图3.12 报损单产品信息实体E-R图
产品
报损单产品
出库单
入库单
出库单产品
入库单产品
调拨单
报损单
选取
报损出库
工作人员
办理
调拨单产品
选取
调拨出库
办理
选取
生产入库
办理
销售出库
办理
N
M
N
N
M
1
N
N
N
选取
N
N
M
M
N
M
1
M
M
M
1
N
N
M
1
M
图3.13整个系统ER图
3.3数据库设计
数据库有如下十三个表构成:
表3.1 产品基本信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
ProductID
Char
10
产品编号
是
ProductName
Char
20
产品名称
否
Standard
Char
10
规格
否
model
Char
10
型号
否
Price
Float
8
单价
否
qualityGuarantee
Int
4
保存期限
否
maintance
Int
4
维护期
否
Unit
Char
10
计量单位
否
colorType
Char
10
颜色类别
否
qualityLevel
Char
10
质量级别
否
finishRate
Float
4
成品率
否
storeHouse
Char
20
存储仓库
否
taxRate
Float
8
税率
否
Remark
Char
100
备注
否
numMin
Int
4
存储下限
否
NumMax
Int
4
存储上限
否
表3.2 雇员基本信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
staffID
Char
20
员工编号
是
staffName
Char
30
员工姓名
否
Duty
Char
20
员工职务
否
Department
Char
20
所在部门
否
Sex
Char
2
性别
否
Address
Char
30
员工住址
否
Birthday
Datetime
8
出生日期
否
Postcode
Char
10
邮政编码
否
marriageCondition
Char
10
婚姻状况
否
Telephone
Char
20
员工电话
否
Nationality
Char
20
国籍
否
eMail
Char
20
电子邮件
否
educationLevel
Char
20
学历
否
QQ
Char
10
QQ号码
否
guaduateSchool
Char
20
毕业院校
否
Major
Char
20
专业
否
IdentityNO
Char
20
身份证号码
否
Mobile
Char
20
手机号码
否
workType
Char
20
员工工种
否
Remark
Char
100
备注
否
表3.3客户基本信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
CilentID
Char
20
客户编号
是
bookinDate
Datetime
8
登记日期
否
clientLevel
Char
20
客户级别
否
clientType
Char
20
客户类型
否
Company
Char
20
客户公司
否
contactPerson
Char
20
联系人
否
AreaID
Char
20
地区
否
Address
Char
20
地址
否
Postcode
Char
20
邮政编码
否
Telephone
Char
20
联系电话
否
Fax
Char
20
传真
否
eMail
Char
20
电子邮件
否
Remark
Char
100
备注
否
manageRange
Char
20
经营范畴
否
manageProduct
Char
20
经营产品
否
Accountbank
Char
20
开户银行
否
Account
Char
20
银行账号
否
TaxNO
Char
20
税号
否
RegisterDate
Datetime
8
注册日期
否
registerFund
Float
8
注册资金
否
Scale
Char
20
规模
否
Industrycharacter
Char
20
行业性质
否
Allfunds
Float
8
总资产
否
Clientcharacter
Char
20
客户性质
否
表3.4仓库表字段阐明
字段名称
数据类型
数据长度
阐明
主键
StorehouseID
Char
20
仓库编号
是
storehouseName
Char
30
仓库名称
否
storehousePostion
Char
30
仓库地址
否
priceMethod
Char
20
仓库计价法
否
表3.5产品入库单基本信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
ProductInputFormID
Char
10
产品入库单号
是
ProduceDate
Datetime
8
生产日期
否
storeHouse
Char
20
仓库名称
否
produceDepartment
Char
20
生产部门
否
Dealer
Char
20
经办人
否
houseInType
Char
20
入库类别
否
Remark
Char
100
备注
否
Formdate
Datetime
8
制单日期
否
表3.6入库产品信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
productInputFormID
Char
10
入库单号
是
productID
Char
10
产品编号
是
Num
Int
4
数量
否
Price
Float
8
单价
否
表3.7产品出库单基本信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
ProductOutputFormID
Char
10
产品出库单号
是
ConsignmentFormID
Char
10
发货单号
否
storeHouse
Char
20
仓库名称
否
sellDepartment
Char
20
销售部门
否
Seller
Char
20
销售人员
否
clientName
Char
20
客户名称
否
HouseOutType
Char
20
出库类别
否
Remark
Char
20
备注
否
Formdate
Datetime
8
制单日期
否
Dealer
Char
20
经办人
否
表3.8出库产品信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
ProductOutputFormID
Char
10
出库单号
是
ProductID
Char
10
产品编号
是
Num
Int
4
数量
否
Price
Float
8
单价
否
表3.9产品调拨单基本信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
productMoveFormID
Char
10
产品调拨单号
是
storeHouseIn
Char
20
入库仓库
否
storeHouseOut
Char
20
出库仓库
否
Dealer
Char
20
经办人
否
houseOutType
Char
20
出库类别
否
Remark
Char
100
备注
否
Formdate
Datetime
8
制单日期
否
表3.10调拨产品信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
ProductMoveFormID
Char
10
产品调拨单号
是
ProductID
Char
10
产品编号
是
Num
Int
4
数量
否
Price
Float
8
单价
否
表3.11产品报损单基本信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
ProductLoseFormID
Char
10
产品报损单号
是
storeHouse
char
20
报损仓库
否
Dealer
Char
20
经办人
否
houseOutType
Char
20
出库类别
否
Remark
Char
100
备注
否
Formdate
Datetime
8
制单日期
否
表3.12报损产品信息表字段阐明
字段名称
数据类型
数据长度
阐明
主键
ProductLoseFormID
Char
10
报损单号
是
ProductID
Char
10
产品编号
是
Num
Int
4
数量
否
Price
Float
8
单价
否
3.2代码设计
我在应用程序类StoreAppInitInstance办法中进行初始化。各模块在连接数据库时候都需要声明所需指针,声明如下:
_RecordsetPtr m_pIDRecordset;// 记录集指针个数可依照实际需要来拟定声明几种
_ConnectionPtr m_pConn;
在StoreApp构造函数中定义数据库连接字符串:TreeConnString=_T("Data Source=SaleData;UID=Sa;PWD=;")
数据库初始化,连接代码如下:
HRESULT hRes;
try
{hRes=m_pConn.CreateInstance(_T("ADODB.Connection"));//创立connection对象
m_pConn->ConnectionTimeout = 8; //超时八秒
hRes=m_pConn->Open(_bstr_t((LPCTSTR) TreeConnString),_T(""),_T(""),adModeUnknown); //TreeConnString为连接字符串
}
catch(_com_error e) //捕获异常
{
CString errormessage;
errormessage.Format(_T("连接SaleData数据库失败!\r\n错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage); //显示错误信息
return FALSE;
}
hRes = m_pIDRecordset.CreateInstance(_T("ADODB.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_pIDRecordset->Close();
3.2.1 基本信息模块实现
图3.2.1单击条目后产品信息对话框
1. 建立产品基本信息CProductInfo对话框类
使用Visual C++6.0“Insert\Type”为“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
产品信息设立
ID_input_staffInfor
雇员信息设立
ID_input_clientInfor
客户信息设立
ID_set_storehouse
仓库信息设立
3.重要代码
(1)重载对话框OnInitDialog函数
在OnInitDialog函数中重要完毕列表框控件样式设定、列标题添加、数据库中已经存在数据显示和编辑框及按钮控件可用性设立、为存储仓库组合框控件添加可选项。环节如下:
调用列表框控件InsertColumm()办法插入列,并设定列标题;分别查询storeHouse、product表,并构造相应查询成果记录集;打开storeHouse查询成果记录集,将记录集中数据插入到相应组合框中;打开product查询成果记录集,调用列表框控件InsertItem()和SetItemText()办法将记录集中数据插入到列表框控件中;调用控件GetDlgItem()办法,为控件可用性控制变量赋值;调用控件EnableWindow()办法,设定控件可用性。某些代码如下:
style=m_list.GetExStyle();
style=(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT)&(~LVS_EX_CHECKBOXES) ;//设定列表框风格 网格\行选取 取消复选框
m_list.SetExtendedStyle(style);
//为列表框控件添加列,并设定列标题
m_list.InsertColumn(0,"商品编号",LVCFMT_LEFT,100);//左对齐 宽度100
m_list.InsertColumn(1,"商品名称",LVCFMT_LEFT,100);//左对齐 宽度100
//此处省略某些代码
_RecordsetPtr m_pListRecordset; //用于创立一种查询记录集
CString strSQL;
HRESULT hTRes;
strSQL="select * from storeHouse";//构造查询语句为存储仓库组合框添加可选项
_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,adCmdText);//打开查询成果记录集
if(SUCCEEDED(hTRes))
{
TRACE(_T("连接成功!\n"));
while(!(m_pStoreHouseRecordset->adoEOF))
{
m_storeHouseCombo.AddString(((CStoreApp*)AfxGetApp())->GetStringFromVariant(m_pStoreHouseRecordset->GetCollect("storeHouseName")));//插入组合框
m_pStoreHouseRecordset->MoveNext();//记录集指针向后移动
}
}
}
m_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*)AfxGetApp())->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_pListRecordset->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)///捕获异常
{CString 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);//修改按钮可用
bt_delete->EnableWindow(false);//删除按钮可用
//初始状况下,所有编辑框不可用
tx_productID->EnableWindow(false);
//此处省略某些代码
UpdateData(false);//更新对话框数据
return TRUE;
(2)实现列表框控件NM_CLICK消息函数
当列表框中条目被单击(如列表框条目被选中)时该函数自动被调用。作用是当列表框中一种条目被选中时,将该条目相应信息显示到相应编辑框控件中,使按钮“增长”、“修改”、“删除”变为可用,“存盘”按钮不可用;当没有条目被选中时,“修改”、“删除”、“保存”按钮不可用,只有“增长”按钮可用,同步将编辑框控件内容清空并使其不可用。环节如下:
调用m_listGetFirstSelectedItemPosition()办法,获得单击位置。调用m_listGetNextSelectedItem()办法,获得单击条目。调用m_listGetItemText()办法,获得条目中相应列字符串,并将其转换成预定类型。详细代码如下:
void CProductInfo::OnClickList1(NMHDR* pNMHDR,LRESULT* pResult)
{
UpdateData(true);//将对话框中数据更新到变量
POSITION pos = m_list.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)为“增长”按钮提供实现函数
“增长”按钮只是完毕添加准备工作,使得除了“产品编号”以外所有编辑控件可用,并且为她们设定默认值。通过查询数据库,查询可用产品入库单号,并更新下一种可用产品入库单号。当所有内容添加完毕后,单击“存盘”按钮才干实现实际保存工作。代码如下:
void CProductInfo::OnAdd()
{
UpdateData(true);//对话框数据更新到变量
//获取新增长产品编号
int productID=((CStoreApp*)AfxGetApp())->m_pIDRecordset->GetCollect
("productID").intVal;
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);
CString 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("");
//此处省略某些代码
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);//删除按钮不可用
Updat
展开阅读全文