第4章企业设备管理系统公司经常需要采购一些设备,用以满足公司正常运营的需要,采购回来的设备不能堆放在库房里就不管了,谁想用的时候就去拿,谁想换的时候就去换。这样,公司的设备恐怕会越来越少,公司正常的运营就会受到影响。因此,需要对公司的设备进行库存管理,保证设备借出和归还有序,还要能查到设备的借出情况。企业设备管理系统正好能满足这个需求,它提供了对设备库存、设备借出、设备归还和设备统计信息的管理。4.1系统设计系统设计是系统开发最为关键的一环,良好的系统设计需要把握系统的需求,并合理地划分功能模块。企业设备管理系统的系统设计还需要把握一个关键点,就是明确设备的惟一性,尽管设备可能一模一样,但是也应该区别开来,因为我们的借出、归还以及借出历史的统计都是要具体到某一个设备的,需要对每一个设备赋予不同的设备编号,通常会制作标签贴在设备上,这恐怕是库房管理员常做的工作,设备编号的方式可以根据公司具体决定。4.1.1功能描述企业设备管理系统包括设备库存管理、设备借出归还管理和设备统计信息管理,详细的功能描述如下。1.设备库存管理设备库存管理包括新设备入库、修改设备信息和陈旧设备的库存清理。新设备入库是对新采购的设备进行入库的操作。修改设备信息是对入库设备的名称、购买人、入库时间、设备说明等信息的修改。库存清理,是清理库存中不能再用的设备。2.设备借出归还管理设备借出归还管理包括设备借出管理和设备归还管理。对于设备借出管理,如果设备已经借出,要提示用户谁借走了设备。当借出成功的时候,需要在列表中显示借出人、借出时间和借出设备信息,如果归还成功,还需要显示设备归还时间。3.设备统计信息管理设备统计信息管理包括对设备借出历史信息、设备使用频率信息和未归还设备列表信息的管理。设备借出历史统计显示了一个设备所有的借出历史,便于跟踪设备的使用情况如果设备出现问题,还可以顺藤摸瓜,查到谁有可能把设备弄坏了,从而找到设备损坏的原因,便于及时修理。设备使用频率统计提供了设备借出次数的统计信息,如果一个设备借出的非常频繁,那么企业可以考虑多购买这种设备,从而提高公司的效率。未归还设备列表提供了尚未归还的设备信息,企业可以知道借出设备的使用情况。4.1.2功能模块设计从上面的功能描述中,可以把企业设备管理系统分为3个模块:设备库存管理、设备借出归还管理和设备统计信息管理。在每一个模块下又提供了更为具体的功能。详细的企业设备管理系统的功能模块图,如图4-1所示。图4-1系统功能模块图4.2数据库设计与实现数据库设计的一个巧妙之处就是表的数量不能太多,逻辑层次也不能太多;否则统的升级和维护将会非常困难。4.2.1数据库需求设计通过对系统功能的分析,企业设备管理系统需要包含以下数据库信息。1.设备信息包括设备编号、设备名称、设备描述、设备入库时间、设备购买人、设备借出状设备借出ID。2.设备借出信息包括设备借出ID、设备编号、借出人、借出时间和归还时间。4.2.2数据库表的设计通过数据库的需求,可以创建以下数据表。1.设备信息表(device_info_tab)设备信息表包含了设备的一些基本信息,还包括设备的借出信息,设备的库存管理和设备的借出归还管理都需要操作这个数据表,表的结构见表4-1。表4-1设备信息表字段名称数据类型可否为空约束条件说明device_codeVARCHAR2(24)NOTNULL主键设备编号,要惟一device_nameVARCHAR2(24)NOTNULL无设备名称descriptionVARCHAR2(1000)NULL无设备描述oper_dateDATENOTNULL无设备入库时间buyerVARCHAR2(24)NULL无设备购买人Lend_statusINTEGERNULL无设备借出状态lend_idINTEGERNULL无设备借出ID,借出ID是惟一的但可以为空2.设备借出信息表(device_lend_info_tab)设备借出信息表包含了设备的借出和归还信息,设备借出、设备归还,以及统计信息的管理都需要用到这个数据表,表的结构见表4-2。表4-2设备借出信息表字段名称数据类型可否为空约束条件说明lend_idINTEGERNOTNULL主键借出ID,ID值从系列中获取)device_codeVARCHAR2(24)NOTNULL外键(device_info_tab)设备编号borrowerVARCHAR2(24)NOTNULL无借出人borrow_dateDATENULL无设备借出时间return_dateDATENULL无设备归还时间4.2.3数据库表的创建利用第3章中讲述的方法创建表空间dbdevice和数据库用户dbdevice,其中数据库用户的密码为dbdevice,选择的默认表空间为dbdevice。创建企业设备管理系统的所有数据表的SQL语句如下:--创建设备信息表CREATETABLEdevice_info_tab(device_codeVARCHAR2(24)NOTNULL,device_nameVARCHAR(24)NOTNULL,descriptionVARCHAR(1000)NULL,oper_dateDATENOTNULL,buyerVARCHAR2(24)NULL,lend_statusINTEGERNULLCHECK(lend_statusIN(0,1)),lend_idINTEGERNULL);--添加设备编号主键ALTERTABLEdevice_info_tabADD(PRIMARYKEY(device_code));--创建设备借出信息表CREATETABLEdevice_lend_info_tab(lend_idINTEGERNOTNULL,device_codeVARCHAR2(24)NOTNULL,borrowerVARCHAR(24)NOTNULL,borrow_dateDATENULL,return_dateDATENULL);--添加借出ID主键ALTERTABLEdevice_lend_info_tabADD(PRIMARYKEY(lend_id));--添加设备编号外键ALTERTABLEdevice_lend_info_tabADD(FOREIGNKEY(device_code)REFERENCESdevice_info_tab);--创建可以递增的系列号供lend_id使用CREATESEQUENCEseq_lend_idINCREMENTBY1STARTWITH1NOMAXVALUENOMINVALUENOCYCLE;利用OracleSQLPlusWorkSheet工具执行上述的SQL语句从而创建数据库表。需要说明的是,在打开OracleSQLPlusWorksheet的“OracleEnterpriseManager登录”窗口的时候,需要在“用户名”文本框中输入企业设备管理系统的用户名dbdevice,在“口令”文本框中输入用户密码dbdevice,在“服务”文本框中输入数据库的本地服务名ORADB,选择连接方式Normal,登录成功后,再运行上述的SQL语句。4.3系统的实现完成了系统功能模块的设计和数据库表的创建后,就可以创建一个企业设备管理系统。4.3.1创建应用程序运行VisualC++,选择File|New命令,弹出New对话框。从Projects列表中选择MFCAppWizard(exe)向导,在Location文本框中选择项目工程的目录“D:\VCSAMPLE\”,在Projectname文本框中输入工程文件的名称DeviceDBS,单击OK按钮,进入MFCAppWizard–Step1页面,从应用程序的类型中选择Dialogbased选项,从语言列表中选择“中文(中国)(APPWZCHS.DLL)”,单击Finish按钮,DeviceDBS对话框的应用程序创建完毕。4.3.2创建主对话框的界面主对话框的布局如图4-2所示。其中包括设备库存管理、设备借出归还管理和设备统计信息管理3个部分。3.设备库存管理控件类型、ID及说明见表4-3。表4-3设备库存管理控件列表控件类型ID属性变量或函数GroupBoxIDC_STATIC设备库存管理无LabelIDC_STATIC设备编号无EditBoxIDC_EDIT_DEVICECODE无CString类型变量m_strDeviceCodeLabelIDC_STATIC设备名称无EditBoxIDC_EDIT_DEVICENAME无CString类型变量m_strDeviceNameLabelIDC_STATIC购买人无EditBoxIDC_EDIT_BUYER无CString类型变量m_strBorrowerLabelIDC_STATIC入库时间无DateTimePickerIDC_DT_DATEShortDateCOleDateTime类型变量m_oleOperDateDateTimePickerIDC_DT_TIMETimeCOleDateTime类型变量m_oleOperTimeLabelIDC_STATIC设备说明无EditBoxIDC_EDIT_DESCRIPTION无CString类型变量m_strDescriptionButtonIDC_BTN_DEVICE_ADD新设备入库函数OnBtnDeviceAdd()处理新设备的入库管理ButtonIDC_BTN_DEVICE_MOD修改设备信息函数OnBtnDeviceMod()修改设备信息ButtonIDC_BTN_DEVICE_DEL库存清理函数OnBtnDeviceDel()处理库存设备的清理管理GroupBoxIDC_STATIC设备信息无ListControlIDC_LIST_DEVICE无列表框控件类型变量m_listDevice4.设备借出归还管理控件类型、ID及说明见表4-4。表4-4设备借出归还管理控件列表控件类型ID属性变量或函数GroupBoxIDC_STATIC设备借出归还管理无LabelIDC_STATIC请输入借书人无EditBoxIDC_EDIT_BORROWER无CString类型变量m_strBorrowerLabelIDC_STATIC请选择设备名称无ComboBoxIDC_COMBO_NAME无列表框控件变量m_comboName,CString类型变量m_strSelectedNameLabelIDC_STATIC请选择设备编号无ComboBoxIDC_COMBO_CODE无列表框控件变量m_comboCode,CString类型变量m_strSelectedCodeButtonIDC_BTN_LEND借出函数OnBtnLend()处理设备借出管理ButtonIDC_BTN_RETURN归还函数OnBtnReturn()处理设备归还管理GroupBoxIDC_STATIC借出信息无ListControlIDC_LIST_LEND无列表框控件类型变量m_listLend5.设备统计信息管理控件类型、ID及说明见表4-5。表4-5设备统计信息管理控件列表控件类型ID属性变量或函数GroupBoxIDC_STATIC设备统计信息管理无ButtonIDC_BTN_LEND_LIST设备借出历史统计函数OnBtnLendList()处理设备借出历史统计ButtonIDC_BTN_FREQUENCY_LIST设备使用频率统计函数OnBtnFrequencyList()处理设备使用频率统计ButtonIDC_BTN_LENT_DEVICE未归还设备列表函数OnBtnLentDevice()处理未归还设备统计ButtonIDC_SYS_EXIT退出函数OnSysExit()处理系统退出代码主对话框类名称为CDeviceDBSDlg,资源ID为IDD_DEVICEDBS_DIALOG,对话框名称为“企业设备管理系统”。主界面用到了两个列表框控件分别显示设备信息和借出信息。需要为这两个列表框控件添加显示的列,从而显