仓库管理系统设计报告.docx
《仓库管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《仓库管理系统设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
仓库管理系统设计报告
(此文档为word格式,下载后您可任意编辑修改!
)
重庆交通学院信息科学与工程学院
《程序设计实训I》综合设计报告
仓库管理系统
姓名:
王洁松
专业:
软件开发
班级:
软件一班
实验室(中心):
B01407
指导老师:
鲁云平
完成时间:
20121224
目录
一、任务书
二、需求分析
三、编程与实现
四、测试内容与结果
五、存在的问题与不足及对策
六、对这门课的建议
七、参考文献
以下为设计报告正文内容
一.任务书
重庆交通学院信息科学与工程学院综合设计任务书
课程
程序设计实训I
班级
软件一班
指导教师
鲁云平
题目
仓库管理系统
完成时间
主要内容
1、需求分析;
2、系统设计;
3、编程与实现
(必须附上自己添加的源代码并加上注释);
4、测试内容与结果;
5、存在的问题与不足及对策;
6、对这门课的建议;
7、参考文献
设计报告要求
设计成果要求
1、两人一题,分工协作,独立完成。
(多人协作完成,要注明分工情况)
2、要求能够对信息进行添加、修改、删除、查询、统计等操作。
3、数据库中不得少于两张表,每张表不得少于7个字段,每张表中不得少于30条记录。
4、使用MFC完成设计。
5、提交设计报告,设计报告内容完整、格式规范
考核内容与方式
1、设计报告:
50%
2、程序加演示:
50%
每位同学单独演示自己的程序并现场回答提问。
版面要求
1.题目用黑体三号,段后距18磅(或1行),居中对齐;
2.标题用黑体四号,段前、段后距6磅(或0.3行);
3.正文用小四号宋体,行距为1.25倍行距;
4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。
备注
请同学们参考《VisualC++实训》综合应用实习部分。
仓库管理系统设计报告
系统设计:
(一)操作子系统
物料入库管理子系统主要负责物料入库前的审核、入库办理及对相应数据存储的修改和反馈给物料采购部门到库信息。
其功能主要有:
设备代码——存储物品代码;
设备入库——根据采购计划核对物料入库情况;
设备出库——登记物品出库情况;
设备还库——收到入库通知后物料入库,填写入库单;
设备需求——登记好物品需要的数量极其种类;
(二)查询子系统
物料存储盘点子系统主要负责对库存物料的管理和仓库的存储信息进行维护和管理,同时为管理人员提供对库存物料的信息查询功能和调整物料单价。
其功能主要有:
库存信息——核对库存信息和实际物料数量是否吻合;
入库信息——对库存物料信息按不同要求进行进行入库查询;
出库信息——查询出库信息;
还库信息——记录好物品的还库情况;
需求信息——接受其它外部系统对库存信息的查询要求,并返回查询结果。
(三)其他功能操作子系统
物料出库管理子系统主要负责其它部门的领料流程管理,其功能主要是:
生成设备采购计划报表——审查需求物品并反馈给领料部门;
查看设备采购计划报表——总览需求概况报表;
库存警告——根据库存情况适时给出库存数量的警告;
(四)系统操作子系统
报表统计管理子系统主要负责对仓库的总库存信息进行汇总和分析,为其它部门提供相应的报表。
其功能主要是:
操作日志——汇总所有操作信息;
帮助——提供一些操作方法及其说明;
关于——此仓库管理系统的一些信息。
退出——退出访问该系统。
子系统间数据接口设计:
各子系统功能相对独立,不直接进行数据交换,但是都对仓库库存信息进行操作。
仓库管理系统主要针对实际物料的存储信息进行管理,维护的是数据信息的一个“仓库”,这个“仓库”的信息必须时刻与实际物料信息保持一致,这就要求各子系统根据自己的操作情况及时更新库存信息。
仓库的库存信息是核心,几个子系统都是围绕其进行工作的,所以系统的数据设计工作主要在于存储信息的逻辑结构设计。
系统数据结构设计:
库存信息中的实体:
采购计划实体:
入库单实体:
领料单实体:
其中领料单和入库单可以根据物料编码在库存信息的物料表中查询到该对应物料的规格、型号、单位等相关具体信息。
各种报表均有管理系统依据上面的实体信息生成。
为更好的维护数据存储信息,底层数据库表结构尽量简单,不存在复杂的表间外键联系,就用上面6个实体所对应的表即可。
系统部分界面设计:
系统的程序选择基于对话框的MFC应用程序,每一个功能具体由一个对应的对话框实现,一些功能界面如下所示,系统所有界面保持一致性。
登录界面:
系统界面运行前必须先登录系统
入库单存储界面:
库存查询界面:
物料类别管理界面:
报表统计界面:
入库管理子系统详细设计:
HIPO图:
处理流程图:
代码:
//DMSDlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"DMS.h"
#include"DMSDlg.h"
#include"DlgProxy.h"
#include"DlgLogIn.h"
#include"DlgDevcode.h"
#include"DlgReport.h"
#include"DlgViewLog.h"
#include"DlgViewDevIn.h"
#include"DlgViewRet.h"
#include"DlgViewOut.h"
#include"DlgViewNeed.h"
#include"DlgViewReport.h"
#include"DlgDev.h"
#include"DlgDevAlert.h"
#include"DlgDevIn.h"
#include"DlgDevOut.h"
#include"DlgDevRet.h"
#include"DlgDevNeed.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CDMSDlgdialog
IMPLEMENT_DYNAMIC(CDMSDlg,CDialog);
CDMSDlg:
:
CDMSDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CDMSDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CDMSDlg)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pAutoProxy=NULL;
}
CDMSDlg:
:
~CDMSDlg()
{
//Ifthereisanautomationproxyforthisdialog,set
//itsbackpointertothisdialogtoNULL,soitknows
//thedialoghasbeendeleted.
if(m_pAutoProxy!
=NULL)
m_pAutoProxy->m_pDialog=NULL;
}
voidCDMSDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDMSDlg)
//NOTE:
theClassWizardwilladdDDXandDDVcallshere
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDMSDlg,CDialog)
//{{AFX_MSG_MAP(CDMSDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BTN_BUYDEV,OnBtnBuydev)
ON_BN_CLICKED(IDC_BTN_DEVALERT,OnBtnDevalert)
ON_BN_CLICKED(IDC_BTN_DEVCODE,OnBtnDevcode)
ON_BN_CLICKED(IDC_BTN_DEVIN,OnBtnDevin)
ON_BN_CLICKED(IDC_BTN_DEVOUT,OnBtnDevout)
ON_BN_CLICKED(IDC_BTN_DEVRET,OnBtnDevret)
ON_BN_CLICKED(IDC_BTN_INFODEV,OnBtnInfodev)
ON_BN_CLICKED(IDC_BTN_INFOIN,OnBtnInfoin)
ON_BN_CLICKED(IDC_BTN_INFONEED,OnBtnInfoneed)
ON_BN_CLICKED(IDC_BTN_INFOOUT,OnBtnInfoout)
ON_BN_CLICKED(IDC_BTN_INFORET,OnBtnInforet)
ON_BN_CLICKED(IDC_BTN_NEED,OnBtnNeed)
ON_BN_CLICKED(IDC_BTN_VIEWLOG,OnBtnViewlog)
ON_BN_CLICKED(IDC_BTN_VIEWPRT,OnBtnViewprt)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_BTN_ABOUT,OnBtnAbout)
ON_BN_CLICKED(IDC_BTN_HELP,OnBtnHelp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CDMSDlgmessagehandlers
BOOLCDMSDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
/**
*在这里弹出用户登录对话框
*/
CDlgLogIndlg;
do
{
if(!
dlg.DoModal())
EndDialog(0);
}while(dlg.m_UsrName.GetLength()==0);
/**
*登录数据库,若失败,则关闭程序。
*/
try
{
m_DBCnt.CreateInstance(__uuidof(Connection));
CStringsql_;
sql_.Format("DSN=DMS;UID=%s;PWD=%s",dlg.m_UsrName,dlg.m_UsrPwd);
_bstr_tsql=sql_;
m_DBCnt->Open(sql,"","",-1);
m_logMngr.Setup(m_DBCnt,dlg.m_UsrName);
m_logMngr.AddLog("登录数据库");
}
catch(_com_error&e)
{
AfxMessageBox(e.ErrorMessage());
this->EndDialog(0);
}
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCDMSDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidCDMSDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCDMSDlg:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
//AutomationserversshouldnotexitwhenauserclosestheUI
//ifacontrollerstillholdsontooneofitsobjects.These
//messagehandlersmakesurethatiftheproxyisstillinuse,
//thentheUIishiddenbutthedialogremainsaroundifit
//isdismissed.
voidCDMSDlg:
:
OnClose()
{
if(CanExit())
CDialog:
:
OnClose();
}
voidCDMSDlg:
:
OnOK()
{
if(CanExit())
CDialog:
:
OnOK();
}
voidCDMSDlg:
:
OnCancel()
{
if(CanExit())
CDialog:
:
OnCancel();
}
BOOLCDMSDlg:
:
CanExit()
{
//Iftheproxyobjectisstillaround,thentheautomation
//controllerisstillholdingontothisapplication.Leave
//thedialogaround,buthideitsUI.
if(m_pAutoProxy!
=NULL)
{
ShowWindow(SW_HIDE);
returnFALSE;
}
returnTRUE;
}
voidCDMSDlg:
:
OnBtnBuydev()
{
CDlgReportdlg;
dlg.Setup(m_DBCnt,&m_logMngr);
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
}
voidCDMSDlg:
:
OnBtnDevalert()
{
CDlgDevAlertdlg;
dlg.Setup(m_DBCnt,&m_logMngr);
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
}
voidCDMSDlg:
:
OnBtnDevcode()
{
CDlgDevcodedlg;
dlg.Setup(m_DBCnt,&m_logMngr);
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
}
voidCDMSDlg:
:
OnBtnDevin()
{
CDlgDevIndlg;
dlg.Setup(m_DBCnt,&m_logMngr);
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
}
voidCDMSDlg:
:
OnBtnDevout()
{
CDlgDevOutdlg;
dlg.Setup(m_DBCnt,&m_logMngr);
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
}
voidCDMSDlg:
:
OnBtnDevret()
{
CDlgDevRetdlg;
dlg.Setup(m_DBCnt,&m_logMngr);
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
}
voidCDMSDlg:
:
OnBtnInfodev()
{
CDlgDevdlg;
dlg.Setup(m_DBCnt,&m_logMngr);
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
}
voidCDMSDlg:
:
OnBtnInfoin()
{
CDlgViewDevIndlg;
dlg.Setup(m_DBCnt,&m_