数据库物资管理系统.docx
《数据库物资管理系统.docx》由会员分享,可在线阅读,更多相关《数据库物资管理系统.docx(34页珍藏版)》请在冰豆网上搜索。
数据库物资管理系统
物资管理系统
学院
专业
班级
学号
姓名
日期
目录
物资管理系统
目录
0引言
1系统需求分析
2总体设计
(1)项目规划
(2)系统功能结构
(3)设计目标
3系统设计
(1)开发及运行环境
(2)数据库设计
4主要功能模块设计
(1)建立工程框架
(2)主窗口设计
(3)登录模块设计
(4)物资基本信息添加模块设计
(5)物资入库信息添加模块设计
(6)物资出库信息添加模块设计
(7)物资余额信息查询模块设计
附录A参考文献
附录B数据表
0引言
传统的物资管理方法,都是通过人工统计和计算的管理方式进行的。
这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了信息管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对每一种物资进行管理。
物资管理系统可以完成日常物资的管理,如查询、修改、增加、删除等操作,能迅速准确地完成各种物资出、入库信息的登记管理工作,大大提高了仓库物资的管理效率。
1系统需求分析
根据市场的需求,要求系统具有以下功能:
❑对物资的入库进行登记。
❑对物资的出库进行登记。
❑修改或删除出、入库信息。
❑查询统计出、入库信息。
2总体设计
2.1项目规划
物资管理系统是由系统、物资基本信息管理、物资入库信息管理、物资出库信息管理、物资余额信息管理和帮助等几个功能模块组成,规划系统功能模块如下:
❑物资基本信息管理模块
物资基本信息管理模块主要包括添加物资基本信息、修改物资基本信息、删除物资基本信息、查询物资基本信息4个部分。
❑物资入库信息管理模块
物资入库信息管理模块主要包括添加物资入库信息、修改物资入库信息、删除物资入库信息、查询物资入库信息4个部分。
❑物资出库信息管理模块
物资出库信息管理模块主要包括添加物资出库信息、修改物资出库信息、删除物资出库信息、查询物资出库信息4个部分。
❑物资余额信息管理模块
物资出库信息管理模块主要包括查询物资余额信息1个部分。
❑帮助模块
帮助模块主要包括关于1个部分。
2.2系统功能结构
物资管理系统的功能结构如图1所示。
物资管理系统
添修删查添修删查添修删查查
加改除询加改除询加改除询询
物物物物物物物物物物物物物
资资资资资资资资资资资资资关
基基基基入入入入出出出出余于
本本本本库库库库库库库库额
信信信信信信信信信信信信信
息息息息息息息息息息息息息
图1系统功能图
2.3设计目标
本系统是根据仓库管理的实际需求而开发的,完全能够实现仓库对每种物资的自动化管理,通过本系统可以达到以下目标:
❑系统运行稳定,安全可靠。
❑界面简洁,人机交互界面友好。
❑信息查询灵活、方便、快捷、准确,数据存储安全可靠。
❑满足键盘和鼠标的双重操作,完全支持回车键。
❑对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
3系统设计
3.1开发及运行环境
软件要求
操作系统:
WindowsXP。
数据库:
SQLServer2000。
编程:
MicrosoftVisualC++6.0
3.2数据库设计
1.数据库概要说明
数据库Material中包括物资基本信息表、物资入库信息表、物资出库信息表、物资余额信息表、管理员表5个数据表。
图2所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。
可以清晰地反应数据库信息。
图2数据库概要说明
2.主要数据表的结构
数据库中的数据表请参见附录B。
4主要功能模块设计
4.1建立工程框架
在VisualC++中建立文档管理系统的基本框架,步骤如下:
(1)单击菜单“File-->New”命令,打开“New”对话框,单击“Projects”选项卡,选择“MFCAppWizard(exe)”,输入工程名,并设置路径,如图3所示。
图3“New”对话框
(2)单击“OK”按钮,“MFCAppWizard-Step1”对话框已经打开,如图4所示,选项“Dialogbase”,接着单击“Next”按钮。
图4“MFCAppWizard-Step1”对话框
(3)在弹出的“MFCAppWizard-Step2of4”对话框中,输入对话框标题,如图5所示。
图5“MFCAppWizard-Step2of4”对话框
(4)在接下来的对话框中保持默认的选项。
设置好的属性如图6所示,单击“OK”按钮后,就完成了新建工程。
图6设计好的工程属性
4.2主窗口设计
菜单资源设计
主窗口菜单设置的主要步骤如下:
(1)单击“ResourceView”选项卡,右键单击“Material_MISResources”选项,选择“Insert”菜单项,打开“InsertResource”窗口,如图7所示。
图7“InsertResource”窗口
(2)选择“Menu”文件夹,单击“New”按钮,在Material_MISResources目录下新增一个Menu目录项,菜单ID为IDR_MENU1。
双击此菜单,将ID改为IDR_MAINFRAME,再对此菜单项的属性进行设计。
如图8所示
系统
物资基本信息管理
物资入库信息管理
物资出库信息管理
物资余额信息管理
帮助
退出
添加物资基本信息
添加物资入库信息
添加物资出库信息
查询物资余额信息
关于Material_MIS
修改物资基本信息
修改物资入库信息
修改物资出库信息
删除物资基本信息
删除物资入库信息
删除物资出库信息
查询物资基本信息
查询物资入库信息
查询物资出信信息
图8设计菜单属性图
4.3登录模块设计
1.实现目标
登录模块功能是完成用户登录本系统的操作,用户登录对话框的设计如图9所示
图9登录对话框
2.设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_LOGIN_DLG。
在IDD_LOGIN_DLG对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“登陆”。
(2)从Controls面板上向Dialog资源中添加3个Static、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表1所示。
表1资源设置
ID
Properties
MemberVariables
Type
Member
IDC_LOGIN_USER
默认
CString
m_sUSER
IDC_LOGIN_PWD
PassWordTRUE
CString
m_sPWD
IDOK
Caption确定
IDCANCEL
Caption取消
3.代码分析
响应“确定”按钮的代码如下:
voidCLoginDLG:
:
OnOK()
{
//TODO:
Addextravalidationhere
//CheckUserNameVadilaty
UpdateData(true);
m_sUSER.TrimRight("");
if(""==m_sUSER)
{
AfxMessageBox(_T("请填写用户名"),MB_ICONEXCLAMATION);
return;
}
_variant_tHolder,strQuery;
strQuery="selectuser_ID,user_PWDfromuser_Infowhereuser_ID='"+m_sUSER+"'";
theApp.ADOExecute(theApp.m_pADOSet,strQuery);
intiCount=theApp.m_pADOSet->GetRecordCount();
if(0==iCount)
{
theApp.m_iLoginCount++;
if(theApp.m_iLoginCount>2)
{
AfxMessageBox("没有这个用户\n三次输入均不正确,请核对后再来",MB_ICONEXCLAMATION);
CDialog:
:
OnCancel();
return;
}
AfxMessageBox("没有这个用户,请重新输入用户名",MB_ICONEXCLAMATION);
return;
}
CStringsPWD;
theApp.m_pADOSet->MoveFirst();
Holder=theApp.m_pADOSet->GetCollect("user_PWD");
sPWD=Holder.vt==VT_NULL?
"":
(char*)(_bstr_t)Holder;
if(0!
=sPWD.Compare(m_sPWD))
{
theApp.m_iLoginCount++;
if(theApp.m_iLoginCount>2)
{
AfxMessageBox("输入密码不正确\n三次输入均不正确,请核对后再来",MB_ICONEXCLAMATION);
CDialog:
:
OnCancel();
return;
}
AfxMessageBox("输入密码不正确,请重新输入",MB_ICONEXCLAMATION);
return;
}
//GetLoginUser
theApp.m_sCurrentUser=m_sUSER;
CDialog:
:
OnOK();
}
4.4物资基本信息添加模块设计
1.实现目标
添加物资基本信息,物资基本信息添加对话框的设计如图10所示
图10物资基本信息添加对话框
2.设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_DIALOG_BasicInfo。
在IDD_DIALOG_BasicInfo对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“添加物资基本信息”。
(2)从Controls面板上向Dialog资源中添加6个Static、5个Edit,更改资源的属性,并为资源设置相对应的变量,如表2所示。
表2资源设置
ID
Properties
MemberVariables
Type
Member
IDC_BASICINFO_WZID
默认
CString
m_wzID
IDC_BASICINFO_WZNAME
默认
CString
m_wzName
IDC_BASICINFO_WZSPEC
默认
CString
m_wzSpec
IDC_BASICINFO_WZKIND
默认
CString
m_wzKind
IDC_BASICINFO_WZUNIT
默认
CString
m_wzUnit
IDOK
Caption确定
IDCANCEL
Caption返回
3.代码分析
当用户单击“确定”按钮时,实现添加物资基本信息功能,其响应代码如下
voidAddBasicInfo:
:
OnOK()
{
//TODO:
Addextravalidationhere
UpdateData(true);
m_wzID.TrimRight("");
m_wzName.TrimRight("");
m_wzKind.TrimRight("");
m_wzSpec.TrimRight("");
m_wzUnit.TrimRight("");
//确定所有输入有效
CStringsWarning="";
if(""==m_wzID)sWarning=_T("物资编号");
elseif(""==m_wzName)sWarning=_T("物资名称");
elseif(""==m_wzKind)sWarning=_T("类别");
elseif(""==m_wzSpec)sWarning=_T("规格型号");
elseif(""==m_wzUnit)sWarning=_T("计量单位");
if(""!
=sWarning)
{
sWarning+=_T("不能为空");
AfxMessageBox(sWarning,MB_ICONEXCLAMATION);
return;
}
_variant_tstrQuery;
if(m_bAppend)
{
//判断物资唯一性
strQuery="select*frommaterialwherewzid='"+m_wzID+"'";
theApp.ADOExecute(theApp.m_pADOSet,strQuery);
intiCount=theApp.m_pADOSet->GetRecordCount();
if(0!
=iCount)
{
AfxMessageBox(_T("已经存在此物资的记录!
"),MB_ICONEXCLAMATION);
return;
}
}
if(m_bAppend)
{
strQuery="insertmaterial(wzid,wzname,wzspec,wzkind,wzunit)\
values('"+m_wzID+"','"+m_wzName+"','"+m_wzSpec+"','"+m_wzKind+"','"+m_wzUnit+"')";
if(theApp.ADOExecute(theApp.m_pADOSet,strQuery))
{
AfxMessageBox(_T("添加记录成功!
"),MB_ICONINFORMATION);
//清空输入数据
m_wzID=m_wzName=m_wzSpec=m_wzKind=m_wzUnit="";
UpdateData(false);
}
elseAfxMessageBox(_T("添加记录失败!
"),MB_ICONEXCLAMATION);
}
else//修改记录
{
strQuery="Updatematerialsetwzname='"+m_wzName+"',wzspec='"+m_wzSpec+"',wzunit='"+m_wzUnit+",\
wherewzid='"+m_wzID+"'";
if(theApp.ADOExecute(theApp.m_pADOSet,strQuery))
AfxMessageBox(_T("修改记录成功!
"),MB_ICONINFORMATION);
else
AfxMessageBox(_T("修改记录失败!
"),MB_ICONEXCLAMATION);
}
//RefreshRoomTypeList
CMaterial_MISView*p=(CMaterial_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView());
p->RefreshMaterial();
if(!
m_bAppend)
CDialog:
:
OnOK();
}
4.5物资入库信息添加模块设计
1.实现目标
添加物资入库信息,物资入库信息添加对话框设计如图11所示。
图11物资入库信息添加对话框
2.设计步骤
(1)向项目中添加一个新Dialog资源,资源ID为IDD_DIALOG_AppendInInfo。
在IDD_DIALOG_AppendInInfo对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“添加入库信息”。
(2)从Controls面板上向Dialog资源中添加15个Static、12个Edit、1个Combo,更改资源的属性,并为资源设置相对应的变量,如表3所示。
表3资源设置
ID
Properties
MemberVariables
Type
Member
IDC_IN_WZNAME
Read-onlyTRUE
CString
m_wzName
IDC_IN_WZSPEC
Read-onlyTRUE
CString
m_wzSpec
IDC_IN_WZKIND
Read-onlyTRUE
CString
m_wzKind
IDC_IN_WZUNIT
Read-onlyTRUE
CString
m_wzUnit
IDC_IN_QUANTITY
默认
CString
m_sQuantity
IDC_IN_UNIT
默认
CString
m_sUnit
IDC_IN_MONEY
默认
CString
m_sMoney
IDC_IN_TIME
默认
COleDateTime
m_sTime
IDC_IN_DEALPERSON
默认
CString
m_sDealPerson
IDC_IN_SAVEPERSON
默认
CString
m_sSavePerson
IDC_IN_STORAGE
默认
CString
m_sStorage
IDC_IN_MEMO
默认
CString
m_sMemo
IDC_IN_WZID
默认
CString
m_wzID
IDOK
Caption保存(&s)
IDCANCEL
Caption返回(&x)
3.代码分析
为“保存”按钮添加代码,实现添加物资入库信息功能,代码如下:
voidCAppendInInfo:
:
OnOK()
{
//TODO:
Addextravalidationhere
UpdateData(true);
m_sDealPerson.TrimRight("");
m_sMoney.TrimRight("");
m_sQuantity.TrimRight("");
m_sSavePerson.TrimRight("");
m_sStorage.TrimRight("");
m_sUnit.TrimRight("");
m_sMemo.TrimRight("");
CStringsWarning="";
if(""==m_sQuantity)sWarning=_T("数量");
elseif(""==m_sUnit)sWarning=_T("单价");
elseif(""==m_sMoney)sWarning=_T("金额");
elseif(""==m_sDealPerson)sWarning=_T("经办人");
elseif(""==m_sSavePerson)sWarning=_T("保管人");
elseif(""==m_sStorage)sWarning=_T("仓库");
if(""!
=sWarning)
{
sWarning+=_T("不能为空!
");
AfxMessageBox(sWarning,MB_ICONEXCLAMATION);
return;
}
doublefQuantity=atof(m_sQuantity);
if(0==fQuantity)
{
AfxMessageBox(_T("数量请输入非零整数!
"),MB_ICONEXCLAMATION);
return;
}
doublefUnit=atof(m_sUnit);
if(0==fUnit)
{
AfxMessageBox(_T("单价请输入非零数字!
"),MB_ICONEXCLAMATION);
return;
}
m_sUnit.Format("%.2f",fUnit);
doublefMoney=atof(m_sMoney);
if(0==fMoney)
{
AfxMessageBox(_T("金额请输入非零数字!
"),MB_ICONEXCLAMATION);
return;
}
m_sMoney.Format("%.2f",fMoney);
_variant_tstrQuery;
_variant_tstrQuery1;
_variant_tstrQuery2;
_variant_tstrQuery3;
_variant_tstrQuery4;
//删除旧记录
if(!
m_bAppend)
{
strQuery4="updatemsurplussetyeaccount=yeaccount-"+m_soldaccount+",yevalue=yevalue-"\
+m_soldvalue+"whereyeid='"+m_wzID+"'andyebase='"+m_sStorage+"'";
theApp.ADOExecute(theApp.m_pADOSet,strQuery4);
strQuery="deletefrommsavewhererkno='"+m_rkNO+"'";
theApp.ADOExecute(theApp.m_pADOSet,strQuery);
}
//产生序列号
CStringsSN;
COleDateTimetoday=COleDateTime:
:
GetCurren