数据库课程设计之仓库设备管理.docx

上传人:b****7 文档编号:15843173 上传时间:2023-07-08 格式:DOCX 页数:46 大小:262.79KB
下载 相关 举报
数据库课程设计之仓库设备管理.docx_第1页
第1页 / 共46页
数据库课程设计之仓库设备管理.docx_第2页
第2页 / 共46页
数据库课程设计之仓库设备管理.docx_第3页
第3页 / 共46页
数据库课程设计之仓库设备管理.docx_第4页
第4页 / 共46页
数据库课程设计之仓库设备管理.docx_第5页
第5页 / 共46页
数据库课程设计之仓库设备管理.docx_第6页
第6页 / 共46页
数据库课程设计之仓库设备管理.docx_第7页
第7页 / 共46页
数据库课程设计之仓库设备管理.docx_第8页
第8页 / 共46页
数据库课程设计之仓库设备管理.docx_第9页
第9页 / 共46页
数据库课程设计之仓库设备管理.docx_第10页
第10页 / 共46页
数据库课程设计之仓库设备管理.docx_第11页
第11页 / 共46页
数据库课程设计之仓库设备管理.docx_第12页
第12页 / 共46页
数据库课程设计之仓库设备管理.docx_第13页
第13页 / 共46页
数据库课程设计之仓库设备管理.docx_第14页
第14页 / 共46页
数据库课程设计之仓库设备管理.docx_第15页
第15页 / 共46页
数据库课程设计之仓库设备管理.docx_第16页
第16页 / 共46页
数据库课程设计之仓库设备管理.docx_第17页
第17页 / 共46页
数据库课程设计之仓库设备管理.docx_第18页
第18页 / 共46页
数据库课程设计之仓库设备管理.docx_第19页
第19页 / 共46页
数据库课程设计之仓库设备管理.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库课程设计之仓库设备管理.docx

《数据库课程设计之仓库设备管理.docx》由会员分享,可在线阅读,更多相关《数据库课程设计之仓库设备管理.docx(46页珍藏版)》请在冰点文库上搜索。

数据库课程设计之仓库设备管理.docx

数据库课程设计之仓库设备管理

 

铜陵学院

数学与计算机系

《数据库课程设计》

时间:

2011年6月7日至2011年6月10日

指导教师对课程设计(论文)的评语(工作态度、任务完成情况、能力水平、设计说明书(论文)的撰写和图纸质量等):

 

成绩

指导教师签字年月日

 

一、开发背景及设计思想

1.开发背景

90年代中期,由于Internet的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。

由于计算机应用的日益普及,仓库设备管理的自动化是提高工作效率的有效途径,随着企业对仓库设备实行计算机管理,实现仓库设备管理系统势在必行。

系统开发的总统任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到仓库管理效率的目的。

2.开发设计思想

在本系统的设计过程中,为了克服仓库管理信息处理量大的困难,满足计算机管理的需要,采取了下面的一些原则:

1、统一各种原始单据的格式,统一帐目和报表的格式。

2、删除不必要的管理冗余,实现管理规范化、科学化。

3、程序代码标准化,软件统一化,确保软件的可维护性和实用性。

4、界面尽量简单化,做到实用、方便,尽量满足企业不同层次员工的需要。

5、建立操作日志,系统自动记录所进行的各种操作。

二.功能描述

1、系统功能分析

本例中的仓库管理系统需要完成的功能主要有以下几点:

1.新的设备信息的录入;

2.借出、归还、维修时对设备信息的修改;

3.对报废设备信息的删除;

4.按照一定的条件查询、统计符合条件的设备信息;查询功能至少应该包括设备基本信息的查询、按时间段(如在2004年1月1日到2004年10月10日购买、借出、维修的设备等)查询、按时间点(借入时间,借出时间,归还时间)查询等,统计功能至少包括按时间段(如在2004年1月1日到2004年10月10日购买、借出、维修的设备等)统计、按设备基本信息的统计等;

5.对查询、统计的结果打印输出。

2、系统功能模块设计

在系统功能分析的基础上,结合VisualC++程序编制的特点,得到如图所示的系统功能模块图。

三.数据库需求分析

在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的数据流程如图

本实例设计的数据项和数据结构如下:

1、设备代码信息,包括的数据项有设备号、设备名称。

2、 现有库存信息,包括的数据项有设备、现有数目、总数目、最大库存和最小库存。

3、设备使用信息,包括的数据项有使用的设备、使用部门、数目、使用时间和出库时状态等。

4、 设备采购信息,包括的数据项有采购的设备、采购员、供应商、采购数目和采购时间等。

5、设备归还信息,包括的数据项有归还设备、归还部门、归还数目、归还时间和经手人等。

四、数据库概念结构设计

本实例根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体和需求实体,各实体的E-R图及其关系描述如下:

库存实体E-R图

入库实体E-R图

 

出库实体E-R图

企业部门需求实体E-R图

 

还库实体E-R图

 

计划采购实体E-R图

 

实体和实体之间的关系E-R图

五、数据库逻辑结构设计及优化

在上面的实体以及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系。

仓库管理系统数据库中各个表格的设计结果如下面的几个表格所示。

每个表格表示在数据库中的一个表。

表1-1设备基本信息代码表device_code

列名

数据类型

可否为空

说明

code

VARCHAR2(6)

NOTNULL

设备号(主键)

name

VARCHAR2(20)

NULL

设备名称

表1-2企业部门基本信息表class_node

列名

数据类型

可否为空

说明

node

VARCHAR2(6)

NOTNULL

部门编号(主键)

department

VARCHAR2(20)

NOTNULL

部门名称

表1-3供应商设备信息表provider_node

列名

数据类型

可否为空

说明

node

VARCHAR2(6)

NOTNULL

供应商编号(主键)

provider

VARCHAR2(20)

NOTNULL

供应商名称

telenode

VARCHAR2(10)

NULL

供应商电话

name

VARCHAR2(20)

NULL

设备名称

表1-4设备入库表device_in

列名

数据类型

可否为空

说明

code

VARCHAR2(6)

NOTNULL

设备号

in_date

DATE

NOTNULL

入库时间(主键)

provider

VARCHAR2(20)

NULL

供应商

in_number

NUMBER(6)

NULL

入库数量

price

NUMBER(6)

NULL

价格

buyer

VARCHAR2(10)

NULL

采购员

表1-5设备出库表device_out

列名

数据类型

可否为空

说明

code

VARCHAR2(6)

NOTNULL

设备号

department

VARCHAR2(20)

NULL

使用部门

out_date

DATE

NULL

出库时间(主键)

out_state

NUMBER

(1)

NULL

出库状态

out_person

VARCHAR2(10)

NULL

经手人

out_number

NUMBER(6)

NOTNULL

出库数量

taker

VARCHAR2(10)

NULL

领取人

usage

VARCHAR2(20)

NULL

用途

表1-6现有库存表device

列名

数据类型

可否为空

说明

code

VARCHAR2(6)

NOTNULL

设备号(主键)

now_number

NUMBER(6)

NULL

现有库存

high_number

NUMBER(6)

NULL

最大库存

low_number

NUMBER(6)

NULL

最少库存

total_number

NUMBER(6)

NULL

总数

表1-7部门需求表device_need

列名

数据类型

可否为空

说明

code

VARCHAR2(6)

NOTNULL

设备号

department

VARCHAR2(20)

NOTNULL

部门名称

need_number

NUMBER(6)

NULL

需求数量

begin_date

DATE

NULL

需求开始时间

end_date

DATE

NULL

需求结束时间

表1-8设备还库表device_return

列名

数据类型

可否为空

说明

code

VARCHAR2(6)

NOTNULL

设备号

return_date

DATE

NULL

还库时间(主键)

keeper

VARCHAR2(20)

NULL

仓库管理员

return_number

NUMBER(6)

NULL

归还数量

return_date

VARCHAR2(10)

NULL

归还人

表1-9操作日志表howdo

列名

数据类型

可否为空

说明

do_user

VARCHAR2(10)

NOTNULL

操作员

do_what

VARCHAR2(40)

NOTNULL

操作内容

do_date

DATE

NOTNULL

操作时间

六、数据库的物理设计和实施

得到系统逻辑模型后,就该进行数据库的物理设计和实施数据库了,物理设计主要是要确定数据库的存储路径、存储结构以及如何建立索引等,可以采用系统的默认设置。

1.数据库设计

(1).创建设备基本信息代码device_code

CREATETABLE“DMS”.device_code

(codeVARCHAR2(6)NOTNULL,

nameVARCHAR2(20)NOTNULL,

CONSTRANTcode_code_pkPRIMARYKEY(code)

TABLESPACE”USER_DATA”;

(2).创建企业部门基本信息代码class_node

CREATETABLE“DMS”.class_node

(nodeVARCHAR2(6)NOTNULL,

DepartmentVARCHAR2(20)NOTNULL,

CONSTRANTnode_node_pkPRIMARYKEY(node)

TABLESPACE”USER_DATA”;

(3).创建供应商设备信息代码provider_node

CREATETABLE“DMS”.provider_node

(nodeVARCHAR2(6)NOTNULL,

providerVARCHAR2(20)NOTNULL,

telenoVARCHAR2(10)NULL,

CodeVARCHAR2(6)NOTNULL,

CONSTRANTnode_node_pkPRIMARYKEY(node)

TABLESPACE”USER_DATA”;

(4).创建设备入库表device_in

CREATETABLE“DMS”.device_in

codeVARCHAR2(6)NOTNULL,

in_dateDATENOTNULL,

providerVARCHAR2(20)NULL,

in_numberNUMBER(6)NULL,

priceNUMBER(6)NULL,

buyerVARCHAR2(10)NULL,

CONSTRAINTin_date_pkPRIMARYKEY(in_date)

TABLESPACE“USER_DATA”;

(5).创建设备出库表device_out

CREATETABLE“DMS”.device_out

codeVARCHAR2(6)NOTNULL,

departmentVARCHAR2(20)NULL,

out_dateDATENULL,

out_stateNUMBER

(1)NULL,

out_pensonVARCHAR2(20)NULL,

out_numberNUMBER(6)NOTNULL,

takerVARCHAR2(10)NULL,

usageVARCHAR2(20)NULL,

CONSTRAINTout_date_pkPRIMARYKEY(out_date)

TABLESPACE”USER_DATA”;

(6).创建现有库存表device

CREATETABLE”DMS”.device

codeVARCHAR2(6)NULL,

now_numberNUMBER(6)NULL,

high_numberNUMBER(6)NULL,

low_numberNUMBER(6)NULL,

total_numberNUMBER(6)NULL,

CONSTRAINTdevice_code_pkPRIMARYKEY(code)

TABLESPACE”USER_DATA”;

(7).创建部门需求表device_need

CREATETABLE“DMS”,device_need

codeVARCHAR2(10)NOTNULL,

departmentVARCHAR2(10)NOTNULL,

need_numberNUMBER(6)NULL,

begin_dateDATENULL,

end_dateDATENULL,

TABLESPACE”USER_DATA”;

(8).创建设备还库表device_return

CREATETABLE“DMS”,device_return

codeVARHAR2(6)NOTNULL,

departmentVARCHAR2(20)NULL,

return_dateDATENULL,

keeperVARCHAR2(10)NULL,

return_numberNUMBER(6)NULL,

return_personVARCHAR2(10)NULL,

CONSTRAINTreturn_date_pkPRIMARYKEY(return_date)

TABLESPACE”USER_DATA”;

(9).创建操作日志表howdo

CREATETABLE“DMS”,howdo

do_userVARCHAR2(10)NOTNULL,

do_whatVARCHAR2(40)NOTNULL,

do_dateDATENOTNULL,

TABLESPACE“USER_DATA”;

2、系统实现

2.1创建应用程序

(1)选择“”中的“新建项目”选项卡中“MFCAppWizard(exe)”,设置合适的目录和项目名,比如“E:

\Project”目录下的“DMS”项目。

(2)创建一个对话框应用程序(“DialogBased”),单击“Next”按钮。

(3)由于在这个项目中将要使用ADO,所以在MFCAppWizard的第二步,需要选中“Automation”选项,使应用程序能够支持自动化对象。

如图1-10所示

(4)单击“Finish”按钮结束项目的创建。

主对话框名为CDMSDlg。

(5)项目创建完毕后,在头文件stdafx.h中加入下面4行:

#import“c:

\programfiles\commonfiles\system\ado\msado15.dll”no_namespace(”EOF”,”adoEOF”)

#include”icrsint.h”

inlinevoidTESTHR(HRESULTx){ifFAILED(x)_com_issue_error(x);};

#defineDATEFMTCstring(“’%s”’)

2.2操作日志模块的设计

1、写日志模块

图1-10使应用程序支持自动化

先定义一个名为ClogMngr的类

//LogMngr.h

//定义一个Log管理器

classCLogMngr

{

public:

CLogMngr();

virtual~CLogMngr();

public:

boolAddLog(LPCSTRop);

voidSetup(_ConnectionPtrcnnt,CString&user)

{

m_DBCnt=cnnt;

m_user=user;

}

protected:

_ConnectionPtrm_DBCnt;

CStringm_user;

};

下面是ClogMngr:

AddLog内部实现详细过程。

//LogMngr.cpp

//向数据库中添加Log记录的代码。

boolCLogMngr:

:

AddLog(LPCSTRop)

{

CTimetm=CTime:

:

GetCurrentTime();

CStringsql_;

 

sql_.Format("INSERTINTOHOWDO(do_user,do_what,do_date)VALUES('%s','%s','%d-%d-%d%d:

%d:

%d')",

m_user,op,

tm.GetYear(),tm.GetMonth(),tm.GetDay(),

tm.GetHour(),tm.GetMinute(),tm.GetSecond());

_bstr_tsql=sql_;

 

try

{

m_DBCnt->Execute(sql,NULL,adCmdText);

}

catch(_com_error&e)

{

CStringError=e.ErrorMessage();

AfxMessageBox(e.ErrorMessage());

returnfalse;

}

 

returntrue;

}

2、读日志模块

图1-11查看日志窗口

初始化界面代码如下:

BOOLCDlgViewLog:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

m_list.InsertColumn(0,"操作员");

m_list.InsertColumn(1,"操作日期");

m_list.InsertColumn(2,"操作内容");

RECTrect;

m_list.GetWindowRect(&rect);

intwid=rect.right-rect.left;

m_list.SetColumnWidth(0,wid/3);

m_list.SetColumnWidth(1,wid/3);

m_list.SetColumnWidth(2,wid/3);

m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);

RefreshData();

 

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

}

 

voidCDlgViewLog:

:

RefreshData()

{

m_list.DeleteAllItems();

m_list.SetRedraw(FALSE);

 

_bstr_tstrSQL("SELECT*FROMHOWDO");

_RecordsetPtrMySet;

 

inti=0;

try

{

MySet.CreateInstance(__uuidof(Recordset));

MySet=m_DBCnt->Execute(strSQL,NULL,adCmdText);

_variant_tHolder;

while(!

MySet->adoEOF)

{

Holder=MySet->GetCollect("do_user");

if(Holder.vt!

=VT_NULL)

m_list.InsertItem(i,(char*)(_bstr_t)Holder);

 

Holder=MySet->GetCollect("do_date");

if(Holder.vt!

=VT_NULL)

m_list.SetItemText(i,1,(char*)(_bstr_t)Holder);

 

Holder=MySet->GetCollect("do_what");

if(Holder.vt!

=VT_NULL)

m_list.SetItemText(i,2,(char*)(_bstr_t)Holder);

 

MySet->MoveNext();

}

MySet->Close();

}

catch(_com_error&e)

{

AfxMessageBox(e.ErrorMessage());

m_list.SetRedraw(TRUE);

return;

}

m_list.SetRedraw(TRUE);

}

voidCDlgViewLog:

:

OnClickListVllog(NMHDR*pNMHDR,LRESULT*pResult)

{

inti=m_list.GetSelectionMark();

 

m_opr=m_list.GetItemText(i,0);

m_date=m_list.GetItemText(i,1);

m_op=m_list.GetItemText(i,2);

 

UpdateData(FALSE);

*pResult=0;

}

//DlgViewLog.cpp

//删除所有日志记录的函数。

voidCDlgViewLog:

:

OnBtnVlrmall()

{

_bstr_tstrSQL("TRUNCATETABLEHOWDO");

 

try

{

m_DBCnt->Execute(strSQL,NULL,adCmdText);

}

catch(_com_error&e)

{

AfxMessageBox(e.ErrorMessage());

EndDialog(0);

}

RefreshData();

}

2.3登录窗口的设计和程序初始化

在CDMSDlg:

:

OnInitDialog()中加入这样一段代码:

//DMSDlg.cpp

//弹出登录界面

CDlgLogIndlg;

do

{

if(!

dlg.DoModal())

EndDialog(0);

}while(dlg.m_UsrName.GetLength()==0);

它的目的是弹出图1-12所示的登录对话框,并从中获得一个有效的用户名。

图1-12登录界面

得到有效用户名后,程序用如下代码:

//DMSDlg.cpp

//建立数据库连接,初始化成员变量

//登录数据库,若失败,则关闭程序。

{

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());

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2