小型商店商品管理说明书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 引言
1 开发目的
随着我国市场经济的蓬勃发展和人们对物质水平需求的增加,各行各业都处于一个飞速发展的时期,行业的快速发展必然导致各行业之间的竞争更加激烈,为了使自己的企业在竞争中能够站稳脚跟,不被激烈的竞争环境所压倒,必然要求企业加强对自身的管理,提高企业的经营效率。

为此,开发一套可以提高经营效率的系统是必要的,本系统就是针对提高商店的管理效率而设计开发的。

2 开发背景
商店的商品管理往往是很复杂、很繁琐的。

由于所掌握的物资种类众多,进货、管理、出货的渠道各有差异,各类统计报表繁多,因此商品的管理必须编制一套管理信息系统,实现计算机化操作,而且必须根据商店的具体情况制定相应的方案。

由于商店的产品种类繁多,业务量大,若仍然采用人工记账的方式,必然不能满足商店的需求,因此商店需要利用计算机来进行商品的管理,这便需要构造一个商品管理系统。

本系统主要是针对小型商店设计开发的一套商品管理系统,适合小型商店使用。

2.1 系统实现的功能
此系统开发的总体任务是实现物资设备管理的系统化、规范化和自动化,从而达到商店商品管理效率的目的。

系统功能分析是在系统开发总体任务的基础上完成的。

本管理系统需要完成的功能有:
(1)登录系统。

管理员需要输入正确密码才能进行系统进行管理。

(2)库存管理。

该模块实现的是库存商品的管理,可以进行录入,删除,修改,供应商信息的管理,也包括添加,删除和修改,还有进货、出货的信息输入。

(3)商品管理。

该模块实现的对商品信息,商家信息,进货信息和出货信息的管理,用户可以通过该模块对商品管理的各种信息进行浏览和查看。

(4)商品预警。

系统会对所有库存货物实现监控和预警。

如果商品过多或者过少,系统会进行提示,商店可以根据预警进行进货或出货。

(5)修改密码。

管理者可以对密码进行修改,维护系统安全。

(6)退出系统。

2.2 功能模块图
由于商店的产品种类繁多,业务量大,若仍然采用人工记账的方式,必然不能满足商店的需求,因此商店需要利用计算机来进行商品的管理,这便需要构造一个商品管理系统。

本系统实现了对商品的库存管理,进货管理,出货管理,可以对商品进行添加,删除,修改和查看等基本功能,满足了商店的管理需求。

该系统的总体功能模块图如2.1所示:
图2.1 系统总体模块功能图
3.1 数据库的设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。

合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

同时,合理的数据库结构也将有利于程序的实现。

设计数据库时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求[3]。

根据系统功能需求,本数据库管理系统需要5个数据表,分别是登录表admin、商品信息表goods、进货表inlib、出货表outlib、供应商信息表provider。

5个表的数据库逻辑结构如下:
登录表(admin_name ,admin_passwd);
商品信息表(G_code,G_name,Current_number,Max_number,Min_number); 进货表(G oods_code,Provider_code,In_number,In_Price,In_date,);
出货表(G oods_code,Out_number,Out_person,taker,out_date,);
供应商信息表(P rovider_code,Provider_name,Provider_address,Provider_person,Provider_telphone,Provider_email,);
为了防止用户不小心删除有用的数据,或者输入错误的数据,就需要设置引用完整性(Referential Integrity)。

例如本系统用到的数据库中,进货表中输入的货品编号必须现存在于商品信息表中。

通过设置引用完整性对数据库进行约束,能够帮助程序员和用户确保使用的数据是合法的。

3.2 模块设计
3.2.1登录系统模块
用户通过该界面登录进入系统。

在其输入用户名与密码之后,单击“登录”按钮登录数据库。

此时触发“登录”按钮的OnButtonOk()事件相应函数[1]。

该模块的流程图如图3.1所示:
图3.1 用户登录模块流程图
3.2.2 库存管理模块
该模块实现的是库存商品的管理,可以进行录入,删除,修改,供应商信息的管理,也可以添加,删除和修改,还有进货、出货的信息输入。

商品信息通过CMainDlg::OnMnGoods() 和CDialog::OnInitDialog()函数进行实现,并且通过OnButtonAdd(),OnButtonModify(),OnButtonDelete()函数进行添加,删除和修改[2]。

进货代码: int iCurrentNum=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;
由代码可知进货时要与数据库中的数据相对应,当进货成功后,数据库会自动更新程新生成的数据。

出货时也一样,数据库会自动减少货物的数量,当出货数量超过库存时,系统会提示“库存不足,请重新输入出库数量”。

相应代码如下:
void COutDlg::OnButtonOk()
{
UpdateData();
if(atoi(m_strONum)>atoi(m_strCNum))
{
AfxMessageBox("库存不足,请重新输入出库数量");
m_strONum="";
UpdateData(false);
}
3.2.3 商品管理模块
该模块实现的对商品信息,商家信息,进货信息和出货信息的管理,用户可以通过该模块对商品管理的各种信息进行浏览和查看。

在数据库对应的表中会随着对商品的管理而更新成新的数据库[2]。

商家信息管理模块主要是对供应商的编号,名称,负责人,电话,地址等进行浏览和添加删除等,主要由CProviderDlg::OnInitDialog(),CProviderDlg::OnButtonAdd(),CProviderDlg::ClearTxt(),CProviderDlg::OnButtonModify()等函数实现。

进货和出货信息则与数据库相连接,显示数据库中进货记录和出货记录,包括进货商品的编号,名称,数量,日期,价格等;出货商品名称,出货数量,日期及负责人等信息。

该过程由CViewDlg::DoDataExchange(CDataExchange* pDX),CViewDlg::SetTitle()
3.2.4 商品预警模块
系统会对所有库存货物实现监控和预警。

如果商品过多或者过少,系统会进行提示,商店可以根据预警进行进货或出货。

void CMainDlg::OnYujing()
{
// TODO: Add your command handler code here
CAlertDlg yj;
yj.DoModal();
}
以上代码会触发CAlertDlg::RefreshData()函数,看商品过多还是过少,然后提出预警。

3.2.5 修改密码
对一个完整的系统而言,用户是应该可以修改自己的密码的,因此系统中应该具有修改密码的功能,提高数据的安全性,用户可以在进入系统主界面后可以修改自己的密码。

当用户输入完成之后,按“确定”按钮来关闭对话框,系统会自动检查用户两次输入的密码是否一致,如果不一致,会出现出错提示并建议用户重新输入。

代码如下:
void CPasswdDlg::OnButtonOk()
{ UpdateData();
if(m_strPassWd1==""||m_strPassWd2=="")
{AfxMessageBox("密码不能为空!");
return;
}
if(m_strPassWd1!=m_strPassWd2)
{ AfxMessageBox("两次输入不一致!");
return;
}
CString strSql;
strSql.Format("UPDATE admin SET Admin_passwd='%s' WHERE Admin_name='%s'",m_strPassWd1,strAdminName);
// TODO: Add your control notification handler code here
_variant_t vtQuery(strSql);
if(theApp.ADOExecute(theApp.m_pRs, vtQuery))
{ AfxMessageBox("修改成功!");
}
else
{ AfxMessageBox("修改失败");
}
OnOK();
3.2.6 退出系统
选择退出系统,将关闭整个系统,结束本次使用。

实现相关函数代码是:void CMainDlg::OnCancel()
{
// TODO: Add your command handler code here
OnOK();
}
4 总结
本次课程设计接近尾声了,作为计算机科学与技术专业的学生,虽然学习过程让我们学到了很多知识,然而真正运用于实践的并不多,这次课设恰是对我们所学的一次总结,我们可以在老师的帮助下自己来尝试开发一个小型项目,把所学的单纯的理论知识变成为实际的操作经验,而不再是眼高手低。

此次商品管理系统开发让我学习到很多知识,现总结如下:
在该管理系统设计中,从系统的实用性出发,我能够在开发该系统时站在用户的角度看问题,本着用户操作界面友好、清晰、易学易用的原则进行设计。

如开发过程中我尽可能地设想记录为空,输入为空,输入出错等边界条件,然后在这些边界上,设置出错检测,使系统能自动捕获出错点,给出提示,允许用户重新进行操作,使系统能够安全的运行下去,而不是退出系统。

本系统数据库是使用Access2003进行设置的,在本次设计中,我发现了Visual C++的一种应用编程接口—ADO(ActiveX Data Objects)。

它是一种面向对象的、与语言无关的应用编程接口,具有易于使用、高速度、低内存支出和占用磁盘较少,可以使用所有支持ODBC的数据库等优点;使用ADO可以实现动态数据库的链接,从而避免以往静态方式连接数据库的一些缺点。

这些知识对我本次的系统开发有着很大的帮助[3]。

开发期间,我学会了有目的的去学习一些将要用到的东西,仔细地考虑工作流程的规律和步骤,充分利用手中的开发工具,利用其所具备的功能,尽量使自己的开发在代码上实现少而精确、让用户能够尽量简单地进行操作。

但是在检测过程中,还是出现了很多的不足之处,这些都是要在今后的工作中需要努力改进和完善的。

在这次毕业设计中,我遇到了很多困难,这主要是由于我开发软件的经验不足,工具的应用也不够熟练,虽然用的语言是VC++,但是由于以前基础不够扎实,对我来说可以算是一个全新的尝试,整个开发过程并不是很顺利,却使我从中充分体会到学习的快乐,系统也在从理论到实践,再从实践到理论的反复中一步步得到完善。

总之,这次的系统开发,实现了我自己动手完成一个系统开发的目标,也学习到很多东西,是一次深刻的实践。

5 参考文献
[1] 王育坚.Visual C++面向对象编程教程.第2版.北京:清华大学出版社,2008
[2] 侯俊杰.深入浅出MFC.第2版.广东:南方出版社,2007
[3] 萨师煊等. 数据库系统概论[M] ,高等教育出版社, 2000
附录
主要实现代码如下:
用户登录相关代码:
void CMainDlg::OnMnAdmin()
{
// TODO: Add your command handler code here
CPasswdDlg dlg;
dlg.DoModal();
}
添加功能相关代码:
void CGoodsDlg::OnButtonAdd()
{
UpdateData();
CString strSql;
strSql.Format("INSERT INTO goods (G_code,G_name,Current_number,Max_number,Min_number)
V ALUES('%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();
初始化相关代码:
v oid CGoodsDlg::ClearTxt()
{
m_strCode="";
m_strName="";
m_strMaxNum="";
m_strMinNum="";
UpdateData(false);
}
修改功能相关代码:
v oid 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);
if(theApp.ADOExecute(theApp.m_pRs, vtQuery))
{
RefreshData();
ClearTxt();
}
else
{
AfxMessageBox("修改失败");
}
}
删除功能相关代码:
oid CGoodsDlg::OnButtonDelete()
{
// TODO: Add your control notification handler code here
UpdateData();
CString strSql;
strSql.Format("DELETE FROM goods WHERE G_code='%s'",m_strCode);
_variant_t vtQuery(strSql);
theApp.ADOExecute(theApp.m_pRs, vtQuery);
RefreshData();
ClearTxt();
进货相关代码:
void CInDlg::AddGoods(int iNum)
{
int iCurrentNum=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;
strSql.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("进货成功");
}
void CViewDlg::ViewInlib()
{
m_listDisp.DeleteAllItems();
m_listDisp.SetRedraw(FALSE);
_variant_t Holder, strQuery;
strQuery= "select * from inlib";
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("Goods_code");
if(Holder.vt!=VT_NULL)
m_listDisp.InsertItem(i, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Provider_code");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,1, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("In_number");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,2, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("In_Price");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,3, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("In_Date");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,4, (char*)(_bstr_t)Holder);
theApp.m_pRs->MoveNext();
i++;
}
m_strNum.Format("%d",iCount);
m_listDisp.SetRedraw(TRUE);
}
出货相关代码:
void COutDlg::DelGoods(int iNum)
{
int iCurrentNum=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;
strSql.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("出货成功");
}
}
void CViewDlg::ViewOutlib()
{
m_listDisp.DeleteAllItems();
m_listDisp.SetRedraw(FALSE);
_variant_t Holder, strQuery;
strQuery= "select * from outlib";
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("Goods_code");
if(Holder.vt!=VT_NULL)
m_listDisp.InsertItem(i, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Out_number");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,1, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Out_person");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,2, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("taker");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,3, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Out_date");
if(Holder.vt!=VT_NULL)
m_listDisp.SetItemText(i,4, (char*)(_bstr_t)Holder);
theApp.m_pRs->MoveNext();
i++;
m_strNum.Format("%d",iCount);
m_listDisp.SetRedraw(TRUE);
}
商品管理代码:
void CViewDlg::SetStyle()
{
RECT rect;
int wid;
switch(m_iKind)
{
case 1:
m_listDisp.InsertColumn(0,"商品编号");
m_listDisp.InsertColumn(1,"商品名称");
m_listDisp.InsertColumn(2,"当前库存");
m_listDisp.InsertColumn(3,"最大库容");
m_listDisp.InsertColumn(4,"最小库容");
m_listDisp.GetWindowRect(&rect);
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.SetColumnWidth(3,wid/5);
m_listDisp.SetColumnWidth(4,wid/5);
m_listDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);
break;
case 2:
m_listDisp.InsertColumn(0,"商家编号");
m_listDisp.InsertColumn(1,"商家名称");
m_listDisp.InsertColumn(2,"商家地址");
m_listDisp.InsertColumn(3,"负责人");
m_listDisp.InsertColumn(4,"电话");
m_listDisp.InsertColumn(5,"Email");
m_listDisp.GetWindowRect(&rect);
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.SetColumnWidth(4,wid/6);
m_listDisp.SetColumnWidth(5,wid/6);
m_listDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);
break;
case 3:
m_listDisp.InsertColumn(0,"商品编号");
m_listDisp.InsertColumn(1,"商家编号");
m_listDisp.InsertColumn(2,"进货数量");
m_listDisp.InsertColumn(3,"购入单价");
m_listDisp.InsertColumn(4,"购入日期");
m_listDisp.GetWindowRect(&rect);
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.SetColumnWidth(3,wid/5);
m_listDisp.SetColumnWidth(4,wid/5);
m_listDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);
break;
case 4:
m_listDisp.InsertColumn(0,"商品编号");
m_listDisp.InsertColumn(1,"出货数量");
m_listDisp.InsertColumn(2,"管理员");
m_listDisp.InsertColumn(3,"出货负责人");
m_listDisp.InsertColumn(4,"出货日期");
m_listDisp.GetWindowRect(&rect);
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.SetColumnWidth(3,wid/5);
m_listDisp.SetColumnWidth(4,wid/5);
m_listDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);
break;
商品信息相关代码:
v oid CViewDlg::ViewGoods()
{
m_listDisp.DeleteAllItems();
m_listDisp.SetRedraw(FALSE);
_variant_t Holder, strQuery;
strQuery= "select * from goods";
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("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_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 = 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_strNum.Format("%d",iCount);
m_listDisp.SetRedraw(TRUE);
}
供应商信息相关代码:
void CViewDlg::ViewProvider()
{
m_listDisp.DeleteAllItems();
m_listDisp.SetRedraw(FALSE);
_variant_t Holder, strQuery;
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, (char*)(_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->GetCollect("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.SetItemText(i,5, (char*)(_bstr_t)Holder);
theApp.m_pRs->MoveNext();
i++;
}
m_strNum.Format("%d",iCount);
m_listDisp.SetRedraw(TRUE);
}
实现商品管理各子模块的关联代码:
C ViewDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetTitle();
SetStyle();
switch(m_iKind)
{
case 1:
ViewGoods();
break;
case 2:
ViewProvider();
break;
case 3:
ViewInlib();
break;
case 4:
ViewOutlib();
break;
case 5:
ViewLog();
break;
}
UpdateData(false);
商品预警相关代码:
void CMainDlg::OnYujing()
{
// TODO: Add your command handler code here
CAlertDlg yj;
yj.DoModal();
}
void CAlertDlg::RefreshData()
{
//商品过少
m_listLowDisp.DeleteAllItems();
m_listLowDisp.SetRedraw(FALSE);
_variant_t Holder, strQuery;
strQuery= "select * from goods where Current_number<=Min_number";
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("G_code");
if(Holder.vt!=VT_NULL)
m_listLowDisp.InsertItem(i, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("G_name");
if(Holder.vt!=VT_NULL)
m_listLowDisp.SetItemText(i,1, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Current_number");
if(Holder.vt!=VT_NULL)
m_listLowDisp.SetItemText(i,2, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Max_number");
if(Holder.vt!=VT_NULL)
m_listLowDisp.SetItemText(i,3, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Min_number");
if(Holder.vt!=VT_NULL)
m_listLowDisp.SetItemText(i,4, (char*)(_bstr_t)Holder);
theApp.m_pRs->MoveNext();
i++;
}
m_listLowDisp.SetRedraw(TRUE);
//商品过剩
m_listHighDisp.DeleteAllItems();
m_listHighDisp.SetRedraw(FALSE);
strQuery= "select * from goods where Current_number>=Max_number"; theApp.ADOExecute(theApp.m_pRs, strQuery);
iCount = theApp.m_pRs->GetRecordCount();
if ( 0==iCount )
return;
theApp.m_pRs->MoveFirst();
i=0;
while(!theApp.m_pRs->adoEOF)
{
Holder = theApp.m_pRs->GetCollect("G_code");
if(Holder.vt!=VT_NULL)
m_listHighDisp.InsertItem(i, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("G_name");
if(Holder.vt!=VT_NULL)
m_listHighDisp.SetItemText(i,1, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Current_number");
if(Holder.vt!=VT_NULL)
m_listHighDisp.SetItemText(i,2, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Max_number");
if(Holder.vt!=VT_NULL)
m_listHighDisp.SetItemText(i,3, (char*)(_bstr_t)Holder);
Holder = theApp.m_pRs->GetCollect("Min_number");
if(Holder.vt!=VT_NULL)
m_listHighDisp.SetItemText(i,4, (char*)(_bstr_t)Holder);
theApp.m_pRs->MoveNext();
i++;
}
m_listHighDisp.SetRedraw(TRUE);
}
密码修改代码:
void CPasswdDlg::OnButtonOk()
{
UpdateData();
if(m_strPassWd1==""||m_strPassWd2=="")
{
AfxMessageBox("密码不能为空!");
return;
}
if(m_strPassWd1!=m_strPassWd2)
{
AfxMessageBox("两次输入不一致!");
return;
}
CString strSql;
strSql.Format("UPDATE admin SET Admin_passwd='%s' WHERE Admin_name='%s'",m_strPassWd1,strAdminName);
// TODO: Add your control notification handler code here
_variant_t vtQuery(strSql);
if(theApp.ADOExecute(theApp.m_pRs, vtQuery))
{
AfxMessageBox("修改成功!");
}
else
{
AfxMessageBox("修改失败");
}
OnOK();
退出系统代码:
v oid CMainDlg::OnCancel()
{
OnOK();
}。

相关文档
最新文档