版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章企业设备管理系统公司经常需要采购一些设备,用以满足公司正常运营的需要,采购回来的设备不能堆放在库房里就不管了,谁想用的时候就去拿,谁想换的时候就去换。这样,公司的设备恐怕会越来越少,公司正常的运营就会受到影响。因此,需要对公司的设备进行库存管理,保证设备借出和归还有序,还要能查到设备的借出情况。企业设备管理系统正好能满足这个需求,它提供了对设备库存、设备借出、设备归还和设备统计信息的管理。4.1 系统设计系统设计是系统开发最为关键的一环,良好的系统设计需要把握系统的需求,并合理地划分功能模块。企业设备管理系统的系统设计还需要把握一个关键点,就是明确设备的惟一性,尽管设备可能一模一样,但是
2、也应该区别开来,因为我们的借出、归还以及借出历史的统计都是要具体到某一个设备的,需要对每一个设备赋予不同的设备编号,通常会制作标签贴在设备上,这恐怕是库房管理员常做的工作,设备编号的方式可以根据公司具体决定。4.1.1 功能描述企业设备管理系统包括设备库存管理、设备借出归还管理和设备统计信息管理,详细的功能描述如下。1. 设备库存管理设备库存管理包括新设备入库、修改设备信息和陈旧设备的库存清理。新设备入库是对新采购的设备进行入库的操作。修改设备信息是对入库设备的名称、购买人、入库时间、设备说明等信息的修改。库存清理,是清理库存中不能再用的设备。2. 设备借出归还管理设备借出归还管理包括设备借出
3、管理和设备归还管理。对于设备借出管理,如果设备已经借出,要提示用户谁借走了设备。当借出成功的时候,需要在列表中显示借出人、借出时间和借出设备信息,如果归还成功,还需要显示设备归还时间。3. 设备统计信息管理设备统计信息管理包括对设备借出历史信息、设备使用频率信息和未归还设备列表信息的管理。设备借出历史统计显示了一个设备所有的借出历史,便于跟踪设备的使用情况如果设备出现问题,还可以顺藤摸瓜,查到谁有可能把设备弄坏了,从而找到设备损坏的原因,便于及时修理。设备使用频率统计提供了设备借出次数的统计信息,如果一个设备借出的非常频繁,那么企业可以考虑多购买这种设备,从而提高公司的效率。未归还设备列表提供
4、了尚未归还的设备信息,企业可以知道借出设备的使用情况。4.1.2 功能模块设计从上面的功能描述中,可以把企业设备管理系统分为3个模块:设备库存管理、设备借出归还管理和设备统计信息管理。在每一个模块下又提供了更为具体的功能。详细的企业设备管理系统的功能模块图,如图4-1所示。图4-1系统功能模块图4.2 数据库设计与实现数据库设计的一个巧妙之处就是表的数量不能太多,逻辑层次也不能太多;否则统的升级和维护将会非常困难。4.2.1 数据库需求设计通过对系统功能的分析,企业设备管理系统需要包含以下数据库信息。1 .设备信息包括设备编号、设备名称、设备描述、设备入库时间、设备购买人、设备借出状设备借出I
5、D。2 .设备借出信息包括设备借出ID、设备编号、借出人、借出时间和归还时间。3 .2.2数据库表的设计通过数据库的需求,可以创建以下数据表。1 .设备信息表(device_info_tab)设备信息表包含了设备的一些基本信息,还包括设备的借出信息,设备的库存管理和表4-1设备信息表字段名称数据类型可否为空device_codeVARCHAR2(24)device_nameVARCHAR2(24)descriptionVARCHAR2(1000)oper_dateDATENOTNULLbuyerVARCHAR2(24)NULLLend_statusINTEGERNULLlend_idINTEG
6、ERNULL无设备的借出归还管理都需要操作这个数据表,表的结构见表4-1。约束条件说明NOTNULL主键设备编号,要惟一NOTNULL无设备名称NULL无设备描述无设备入库时间无设备购买人无设备借出状态设备借出ID,借出ID是惟一的但可以为空2 .设备借出信息表(device_lend_info_tab)设备借出信息表包含了设备的借出和归还信息,设备借出、设备归还,以及统计信息的管理都需要用到这个数据表,表的结构见表4-2。表4-2设备借出信息表字段名称数据类型可否为空约束条件说明lend_idINTEGERNOTNULL主键借出ID,ID值从系列中获取)device_codeVARCHAR2
7、(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,dev
8、ice_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_c
9、odeVARCHAR2(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_idI
10、NCREMENTBY1STARTWITH1NOMAXVALUENOMINVALUENOCYCLE;利用OracleSQLPlusWorkSheet工具执行上述的SQL语句从而创建数据库表。需要说明的是,在打开OracleSQLPlusWorksheet的"OracleEnterpriseManager登录“窗口的时候,需要在“用户名”文本框中输入企业设备管理系统的用户名dbdevice,在“口令”文本框中输入用户密码dbdevice,在“服务”文本框中输入数据库的本地服务名ORADB,选择连接方式Normal,登录成功后,再运行上述的SQL语句。4.3系统的实现完成了系统功能模块的设
11、计和数据库表的创建后,就可以创建一个企业设备管理系统。4.3.1 创建应用程序运行VisualC+,选择File|New命令,弹出New对话框。从Projects列表中选择MFCAppWizard(exe)向导,在Location文本框中选择项目工程的目录"",在Projectname文本框中输入工程文件的名称DeviceDBS,单击OK按钮,进入MFCAppWizard-Step1页面,从应用程序的类型中选择Dialogbased选项,从语言列表中选“中文(中国)(APPWZCHS.DLL)",单击Finish按钮,DeviceDBS对话框的应用程序创建毕。4.
12、3.2 创建主对话框的界面主对话框的布局如图4-2所示。其中包括设备库存管理、设备借出归还管理和设备统计信息管理3个部分。图$2”企尔设备管理务统”对话序3. 设备库存管理控件类型、ID及说明见表4-3。表4-3设备库存管理控件列表控件类型ID属性变量或函数GroupBoxIDC_STATIC设备库存管理无LabelIDC_STATIC设备编号无无CString类型变量m_strDeviceCode无CString类型变量m_strDeviceNameCString类型变量m_strBorrowerEditBoxIDC_EDIT_DEVICECODELabelIDC_STATIC设备名称无Ed
13、itBoxIDC_EDIT_DEVICENAMELabelIDC_STATIC购买人无EditBoxIDC_EDIT_BUYER无LabelIDC_STATIC入库时间无DateTimePickerIDC_DT_DATEShortDateCOleDateTime类型变量m_oleOperDateDateTimePickerIDC_DT_TIMETimeCOleDateTime类型变量m_oleOperTimeLabelIDC_STATIC设备说明无EditBoxIDC_EDIT_DESCRIPTION无CString类型变量m_strDescriptionButtonIDC_BTN_DEVIC
14、E_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设备借出归还
15、管理无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()处理设备借出管
16、理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设备使用频率统计函数OnBtnFre
17、quencyList()处理设备使用频率统计ButtonIDC_BTN_LENT_DEVICE未归还设备列表函数OnBtnLentDevice()处理未归还设备统计ButtonIDC_SYS_EXIT退出函数OnSysExit()处理系统退出代码主对话框类名称为CDeviceDBSDlg,资源ID为IDD_DEVICEDBS_DIALOG,对话框名称为“企业设备管理系统”。主界面用到了两个列表框控件分别显示设备信息和借出信息。需要为这两个列表框控件添加显示的列,从而显示相应的数据信息。为了代码设计的清晰,在CDeviceDBSDlg类中定义了一个InitControl私有函数负责添加控件的显示
18、列,InitControl函数的代码如下:voidCDeviceDBSDlg:InitControl()/设置列表框控件扩展风格DWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVSEXONECLICKACTIVATELVS_EX_HEADERDRAGDROPLVS_EX_UNDERLINEHOT;m_listDevice.SetExtendedStyle(dwExStyle);m_listLend.SetExtendedStyle(dwExStyle);/初始化设备信息列表框控件m_listDevice.InsertColumn(0,
19、"设备编号",LVCFMT_CENTER,80);m_listDevice.InsertColumn(1,"设备名称",LVCFMT_CENTER,80);m_listDevice.InsertColumn(2,"设备入库时间",LVCFMT_CENTER,140);m_listDevice.InsertColumn(3,"设备购买人",LVCFMT_CENTER,80);/初始化议题列表框控件m_listLend.InsertColumn(0,"m_listLend.InsertColumn(1,&qu
20、ot;m_listLend.InsertColumn(2,"m_listLend.InsertColumn(3,"m_listLend.InsertColumn(4,"m_listLend.InsertColumn(5,"m_listDevice.InsertColumn(4,"设备描述",LVCFMT_CENTER,200);借出ID",LVCFMT_CENTER,80);设备编号",LVCFMT_CENTER,80);设备名称",LVCFMT_CENTER,80);借出人",LVCFMT_C
21、ENTER,80);设备借出时间",LVCFMT_CENTER,140);设备归还时间",LVCFMT_CENTER,140);在OnInitDialog函数末尾处添加InitControl函数的调用,这样系统在启动的时候,就可以看到已添加显示列的列表框控件。4.3.3显示数据到界面上当系统启动之后,可以将数据库中的数据显示到界面上,需要处理数据库的连接和显示数据到界面上的两个过程。1. 数据库的连接数据库的连接需要3个参数:ODBC数据源名称、数据库用户名称和数据库用户密码。其中数据源名称为ORADB,数据库用户的名称和密码均为dbdevice。考虑到读者配置的数据源和用
22、户名可能不一样,可以从配置文件中获取这些参数信息,配置文件的格式如下:General数据库数据源=oradb数据库用户=dbdevice数据库密码=dbdevice把这段文字保存为DeviceDBS.ini文件,可以根据读者自己配置的数据源、数据用户和密码修改文件中的相应设置,并把DeviceDBS.ini文件放在DeviceDBS.exe运行程序的同一目录下。在CDeviceDBSDlg类中定义了一个私有类型的ConnectDB函数,处理数据库的连接,代码如下:voidCDeviceDBSDlg:ConnectDB()charszPath255;/获取应用程序完全路径:GetModuleFi
23、leName(NULL,szPath,255);CStringstrFileName=szPath;/获取所在的目录名称strFileName.Delete(strFileName.ReverseFind()+1,strFileName.GetLength()-strFileName.ReverseFind()-1);/构造配置文件的完全路径strFileName+="DeviceDBS.ini"TCHARsz101;memset(sz,0,sizeof(TCHAR)*101);/获取配置文件中数据库数据源的值,如果没有,默认值为oradbGetPrivateProfile
24、String(_T("General"),_T("数据库数据源"),_T("oradb"),sz,100,strFileName);CStringstrSource(sz);GetPrivateProfileString(_T("General"),_T("数据库用户"),_T("dbdevice"),sz,100,strFileName);CStringstrUser(sz);GetPrivateProfileString(_T("General"),_
25、T("数据库密码"),_T("dbdevice"),sz,100,strFileName);CStringstrPwd(sz);/创建连接字符串.CStringstrConnect;strConnect.Format("DSN=%s;UID=%s;PWD=%s",strSource,strUser,strPwd);/打开数据库的连接,并且捕获异常TRYm_db.OpenEx(strConnect,CDatabase:noOdbcDialog);CATCH(CDBException,ex)AfxMessageBox(ex->m_s
26、trError);AfxMessageBox(ex->m_strStateNativeOrigin);AND_CATCH(CMemoryException,pEx)pEx->ReportError();AfxMessageBox("memoryexception");AND_CATCH(CException,e)TCHARszError100;e->GetErrorMessage(szError,100);AfxMessageBox(szError);END_CATCHInitCtrlData();函数ConnectDB利用系统的GetPrivatePro
27、fileString函数从文件中获取数据库的配置参数,GetPrivateProfileString函数的原型如下:DWORDGetPrivateProfileString(LPCTSTRlpAppName,LPCTSTRlpKeyName,LPCTSTRlpDefault,LPTSTRlpReturnedString,DWORDnSize,LPCTSTRlpFileName);其中第1个参数是Section的名称,对应DeviceDBS.ini文件中的General,即中括号所包含的内容General;第2个参数是键的名称,如DeviceDBS.ini文件中的“数据库数据源”、“数据库用户”
28、和“数据库密码”;第3个参数是默认值,如果没用成功获得键值,那么就取lpDefault代表的数据;第4个参数是保存键值的缓冲区;第5个参数是缓冲区的大小;第6个参数是文件的完全路径。由于第6个参数需要获取文件DeviceDBS.ini的完全路径,因而需要利用系统的GetModuleFileName函数先获取应用程序DeviceDBS.exe所在的路径(因为DeviceDBS.ini文件和应用程序DeviceDBS.exe在同一目录下),然后构造配置文件DeviceDBS.ini的完全路径。当从文件中获取到数据库配置参数之后,就可以创建数据库连接字符串,利用CDatabase的OpenEx方法打
29、开数据库的连接,并处理数据库的异常。2. 显示数据到界面上连接数据库之后,需要把数据库中的设备信息显示到设备信息列表框控件中,并刷新借出归还管理中的设备名称和设备编号两个列表框中的显示数据。因而在CDeviceDBSDlg类中定义了一个InitCtrlData私有函数,负责显示这些数据。同时还定义一个RefreshComboNameData函数,根据数据库的最新数据刷新借出归还管理中的两个列表框的数据。在对设备信息添加、修改和删除之后都需要调用RefreshComboNameData函数来更新列表框中的显示数据。同时还需要定义两个分别把数据插入到列表框控件中的函数,分别为:InsertDevi
30、ceInfoItem和InsertLendInfoItem。在连接数据库成功之后,不需要显示借出信息,因为比较多,也不是很重要,只需在借出和归还成功之后显示借出信息。在DeviceDBSDlg.h文件中添加这4个私有函数的定义,代码如下:/从数据库获取设备信息并更新到控件中voidInitCtrlData();/更新设备名称和设备编号列表框的信息voidRefreshComboNameData();/向设备信息控件中添加信息voidInsertDeviceInfoItem(CStringcode,CStringname,CStringdate,CStringbuyer,CStringdescr
31、iption);/向借出信息控件中添加借出信息voidInsertLendInfoItem(intid,CStringcode,CStringname,CStringborrower,CStringlendDate,CStringreturnDate);向设备信息列表框控件中添加设备信息的函数是InsertDeviceInfoItem,代码如下:voidCDeviceDBSDlg:InsertDeviceInfoItem(CStringcode,CStringname,CStringdate,CStringbuyer,CStringdescription)/获取当前的记录条数.intnInde
32、x=m_listDevice.GetItemCount();LV_ITEMlvItem;lvItem.mask=LVIF_TEXT;lvItem.iItem=nIndex;/行数lvItem.iSubItem=0;lvItem.pszText=(char*)(LPCTSTR)code;/第一列/在最后一行插入记录值.m_listDevice.InsertItem(&lvItem);/设置该行的其他列的值.m_listDevice.SetItemText(nIndex,1,name);m_listDevice.SetItemText(nIndex,2,date);m_listDevice
33、.SetItemText(nIndex,3,buyer);m_listDevice.SetItemText(nIndex,4,description);向借出信息列表框控件中添加借出信息的函数是InsertLendInfoItem,代码如下:voidCDeviceDBSDlg:InsertLendInfoItem(intid,CStringcode,CStname,CStringborrower,CStringlendDate,CStringreturnDate)/获取当前的记录条数.intnIndex=m_listLend.GetItemCount();LV_ITEMlvItem;lvIte
34、m.mask=LVIF_TEXT;lvItem.iItem=nIndex;/行数lvItem.iSubItem=0;CStringtemp;temp.Format("%d",id);lvItem.pszText=(char*)(LPCTSTR)temp;/第一列/在最后一行插入记录值.m_listLend.InsertItem(&lvItem);/设置该行的其他列的值.m_listLend.SetItemText(nIndex,1,code);m_listLend.SetItemText(nIndex,2,name);m_listLend.SetItemText(nIndex,3,borrower);m_listLend.SetItemText(nIndex,4,lendDate);m_listLend.SetItemText(nIndex,5,returnDate);把数据库中的数据显示到界面上的函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《两只小象》教案设计
- 医疗健康产业园售楼部施工合同
- 林业项目招标投诉处理办法
- 工程施工农民工薪酬保障措施
- 制药业锅炉安全手册
- 商业广场供暖系统工程合同
- 社区服务公务车租赁协议
- 四人股东权益分配协议
- 美容养生招投标市场动态
- 篮球馆喜剧表演租赁协议
- 考试通用答题卡-A4可直接打印
- 工程项目全过程跟踪审计实施方案(三篇)
- 浅谈核心素养视角下高中语文课堂的构建
- 安庆市污泥再生资源化处置暨综合利用发电项目环境影响报告书
- 帕金森病药物治疗 帕金森病药物治疗(老年安全用药课件)
- 《巨人的花园》的课文原文
- 数学物理方法
- 通讯员培训课件
- 林则徐课件完整版
- 混凝土的热工计算
- 船舶贸易智慧树知到答案章节测试2023年上海海事大学
评论
0/150
提交评论