数据库仓库设备管理课程设计.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 仓库 设备管理 课程设计
- 资源描述:
-
数据库仓库设备管理课程设计 铜陵学院 数学与计算机系 <数据库课程设计> 设计题目:仓库设备管理 学生姓名: 学 号: 专业班级: 指导教师: 时间: 6月7日 至 6月10日 指导教师对课程设计(论文)的评语(工作态度、任务完成情况、能力水平、设计说明书(论文)的撰写和图纸质量等): 成绩 指导教师签字 年 月 日 一、系统设计 3 1、系统设计目标 3 2、开发设计思想 3 3、系统功能分析 3 4、系统功能模块设计 3 二、 数据库设计 4 1、数据库需求分析 4 2、数据库概念结构设计 5 3、数据库逻辑结构设计 6 三、 数据库结构的实现 8 1.创立设备基本信息代码device_code 8 2.创立企业部门基本信息代码class_node 8 3.创立供应商设备信息代码provider_node 9 4.创立设备入库表 device_in 9 5.创立设备出库表 device_out 9 6.创立现有库存表 device 10 7.创立部门需求表 device_need 10 8.创立设备还库表device_return 10 9.创立操作日志表 howdo 10 四、系统实现 11 4.1创立应用程序 11 4.2操作日志模块的设计 11 1、写日志模块 11 2、读日志模块 13 4.3登录窗口的设计和程序初始化 15 4.4主对话框界面的设计 16 4.5设备代码管理窗口的建立 17 4.6库存信息管理窗口的创立 20 4.7设备入库信息管理 22 4.8设备入库窗口 25 4.9帮助模块设计 27 五、调试过程中的问题 27 5.1 问题和解决方案 27 5.2系统改进方面 28 六、课程设计总结 28 一、系统设计 1、系统设计目标 由于计算机应用的日益普及,仓库设备管理的自动化是提高工作效率的有效途径,随着企业对仓库设备实行计算机管理,实现仓库设备管理系统势在必行。 系统开发的总统任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到仓库管理效率的目的。 2、开发设计思想 在本系统的设计过程中,为了克服仓库管理信息处理量大的困难,满足计算机管理的需要,采取了下面的一些原则: 1、 统一各种原始单据的格式,统一帐目和报表的格式。 2、 删除不必要的管理冗余,实现管理规范化、科学化。 3、 程序代码标准化,软件统一化,确保软件的可维护性和实用性。 4、 界面尽量简单化,做到实用、方便,尽量满足企业不同层次员工的需要。 5、 建立操作日志,系统自动记录所进行的各种操作。 3、系统功能分析 本例中的仓库管理系统需要完成的功能主要有以下几点: 1. 新的设备信息的录入; 2. 借出、归还、维修时对设备信息的修改; 3. 对报废设备信息的删除; 4. 按照一定的条件查询、统计符合条件的设备信息;查询功能至少应该包括设备基本信息的查询、按时间段(如在 1月1日到 10月10日购买、借出、维修的设备等)查询、按时间点(借入时间,借出时间,归还时间)查询等,统计功能至少包括按时间段(如在 1月1日到 10月10日购买、借出、维修的设备等)统计、按设备基本信息的统计等; 5. 对查询、统计的结果打印输出。 4、系统功能模块设计 在系统功能分析的基础上,结合Visual C++程序编制的特点,得到如图所示的系统功能模块图。 仓库管理系统 系统模块 输入模块 维护模块 查看模块 报表模块 帮助模块 日志管理 需求模块 还库模块 出库模块 入库模块 二、 数据库设计 1、数据库需求分析 在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的数据流程如图 设备入库 设备采购 设备还库 设备出库 仓库现有库存 各部门需求 企业生产计划 汇总 本实例设计的数据项和数据结构如下: 1、 设备代码信息,包括的数据项有设备号、设备名称。 2、 现有库存信息,包括的数据项有设备、现有数目、总数目、最大库存和最小库存。 3、 设备使用信息,包括的数据项有使用的设备、使用部门、数目、使用时间和出库时状态等。 4、 设备采购信息,包括的数据项有采购的设备、采购员、供应商、采购数目和采购时间等。 5、 设备归还信息,包括的数据项有归还设备、归还部门、归还数目、归还时间和经手人等。 6、 设备需求信息,包括的数据项有需求的部门、需求设备、需求数目和需求时间等。 2、数据库概念结构设计 本实例根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体和需求实体,各实体的E-R图及其关系描述如下: 库存实体E-R图 现有库存 入库 出库 还库 设备号 入库实体E-R图 入库 供应商信息 采购价格数量 采购员 设备号 出库实体E-R图 出库 使用部门 数量、时间 经手人 设备号 企业部门需求实体E-R图 部门需求 需求部门 需求数量 需求时间 设备号 还库实体E-R图 设备还库 还库时间人 还库数量 经手人 设备号 计划采购实体E-R图 计划采购 库存信息 供应信息 时间 设备号 实体和实体之间的关系E-R图 入库 现有库存 出库 还库 部门需求 设备采购 3、数据库逻辑结构设计 在上面的实体以及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系。仓库管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。 表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.创立设备基本信息代码device_code CREATE TABLE ”DMS”.device_code (code VARCHAR2(6) NOTNULL, name VARCHAR2(20) NOTNULL, CONSTRANT code_code_pk PRIMARY KEY(code) ) TABLESPACE”USER_DATA”; 2.创立企业部门基本信息代码class_node CREATE TABLE ”DMS”.class_node (node VARCHAR2(6) NOTNULL, Department VARCHAR2(20) NOTNULL, CONSTRANT node_node_pk PRIMARY KEY(node) ) TABLESPACE”USER_DATA”; 3.创立供应商设备信息代码provider_node CREATE TABLE ”DMS”.provider_node (node VARCHAR2(6) NOTNULL, provider VARCHAR2(20)NOTNULL, teleno VARCHAR2(10) NULL, Code VARCHAR2(6) NOTNULL, CONSTRANT node_node_pk PRIMARY KEY(node) ) TABLESPACE”USER_DATA”; 4.创立设备入库表 device_in CREATE TABLE ”DMS”.device_in ( code VARCHAR2(6) NOT NULL, in_date DATE NOT NULL, provider VARCHAR2(20) NULL, in_number NUMBER(6) NULL, price NUMBER(6) NULL, buyer VARCHAR2(10) NULL, CONSTRAINT in_date_pk PRIMARY KEY(in_date) ) TABLESPACE ”USER_DATA”; 5.创立设备出库表 device_out CREATE TABLE ”DMS”.device_out ( code VARCHAR2(6) NOT NULL, department VARCHAR2(20) NULL, out_date DATE NULL, out_state NUMBER(1) NULL, out_penson VARCHAR2(20) NULL, out_number NUMBER(6) NOT NULL, taker VARCHAR2(10) NULL, usage VARCHAR2(20) NULL, CONSTRAINT out_date_pk PRIMARY KEY(out_date) ) TABLESPACE”USER_DATA”; 6.创立现有库存表 device CREATETABLE ”DMS”.device ( code VARCHAR2(6) NULL, now_number NUMBER(6) NULL, high_number NUMBER(6) NULL, low_ number NUMBER(6) NULL, total_ number NUMBER(6) NULL, CONSTRAINT device_code_pk PRIMARY KEY(code) ) TABLESPACE”USER_DATA”; 7.创立部门需求表 device_need CREATE TABLE ”DMS”,device_need ( code VARCHAR2(10) NOT NULL, department VARCHAR2(10) NOT NULL, need_number NUMBER(6) NULL, begin_date DATE NULL, end_date DATE NULL, ) TABLESPACE ”USER_DATA”; 8.创立设备还库表device_return CREATE TABLE ”DMS”,device_return ( code VARHAR2(6) NOT NULL, department VARCHAR2(20) NULL, return_date DATE NULL, keeper VARCHAR2(10) NULL, return_number NUMBER(6) NULL, return_person VARCHAR2(10) NULL, CONSTRAINT return_date_pk PRIMARY KEY (return_date) ) TABLESPACE ”USER_DATA”; 9.创立操作日志表 howdo CREATE TABLE ”DMS”,howdo ( do_user VARCHAR2(10) NOT NULL, do_what VARCHAR2(40) NOT NULL, do_date DATE NOT NULL, ) TABLESPACE ”USER_DATA”; 四、系统实现 4.1创立应用程序 (1)选择”FileNew”中的”新建项目”选项卡中”MFC AppWizard(exe)”,设置合适的目录和项目名,比如”E:\Project”目录下的”DMS”项目。 (2)创立一个对话框应用程序(”Dialog Based”),单击”Next”按钮。 (3)由于在这个项目中将要使用ADO,因此在MFC AppWizard的第二步,需要选中”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” inline void TESTHR(HRESULT x){if FAILED(x)_com_issue_error(x);}; #define DATEFMT Cstring(”’%s”’) 4.2操作日志模块的设计 1、写日志模块 图1-10 使应用程序支持自动化 先定义一个名为ClogMngr的类 //LogMngr.h //定义一个Log管理器 class CLogMngr { public: CLogMngr(); virtual ~CLogMngr(); public: bool AddLog(LPCSTR op); void Setup(_ConnectionPtr cnnt, CString& user) { m_DBCnt = cnnt; m_user = user; } protected: _ConnectionPtr m_DBCnt; CString m_user; }; 下面是ClogMngr::AddLog内部实现详细过程。 //LogMngr.cpp //向数据库中添加Log记录的代码。 bool CLogMngr::AddLog(LPCSTR op) { CTime tm = CTime::GetCurrentTime(); CString sql_; sql_.Format("INSERT INTO HOWDO (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_t sql = sql_; try { m_DBCnt->Execute(sql,NULL,adCmdText); } catch(_com_error& e) { CString Error = e.ErrorMessage(); AfxMessageBox(e.ErrorMessage()); return false; } return true; } 2、读日志模块 图1-11 查看日志窗口 初始化界面代码如下: BOOL CDlgViewLog::OnInitDialog() { CDialog::OnInitDialog(); m_list.InsertColumn(0,"操作员"); m_list.InsertColumn(1,"操作日期"); m_list.InsertColumn(2,"操作内容"); RECT rect; m_list.GetWindowRect(&rect); int wid = 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(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDlgViewLog::RefreshData() { m_list.DeleteAllItems(); m_list.SetRedraw(FALSE); _bstr_t strSQL("SELECT * FROM HOWDO"); _RecordsetPtr MySet; int i = 0; try { MySet.CreateInstance(__uuidof(Recordset)); MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText); _variant_t Holder; 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); } void CDlgViewLog::OnClickListVllog(NMHDR* pNMHDR, LRESULT* pResult) { int i = 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 //删除所有日志记录的函数。 void CDlgViewLog::OnBtnVlrmall() { _bstr_t strSQL("TRUNCATE TABLE HOWDO"); try { m_DBCnt->Execute(strSQL,NULL,adCmdText); } catch(_com_error& e) { AfxMessageBox(e.ErrorMessage()); EndDialog(0); } RefreshData(); } 4.3登录窗口的设计和程序初始化 在CDMSDlg::OnInitDialog()中加入这样一段代码: //DMSDlg.cpp //弹出登录界面 CDlgLogIn dlg; do { if (!dlg.DoModal()) EndDialog(0); } while (dlg.m_UsrName.GetLength()==0); 它的目的是弹出图1-12所示的登录对话框,并从中获得一个有效的用户名。 图1-12 登录界面 得到有效用户名后,程序用如下代码: // DMSDlg.cpp //建立数据库连接,初始化成员变量 //登录数据库,若失败,则关闭程序。 { m_DBCnt.CreateInstance(__uuidof(Connection)); CString sql_; sql_.Format("DSN=DMS;UID=%s;PWD=%s",dlg.m_UsrName,dlg.m_UsrPwd); _bstr_t sql=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); } 在程序结束时关闭数据库连接。 // DMSDlg.cpp //关闭数据库连接 void CDMSDlg::OnDestroy() { CDialog::OnDestroy(); m_DBCnt->Close(); } 4.4主对话框界面的设计 登录完成后,显示出主对话框。它的界面设计如图1-13所示,单击某个按钮就能弹出某个功能的界面。 图1-13 主对话框界面 以其中”设备代码”按钮为例,说明它的事件处理函数。代码如下: // DMSDlg.cpp //显示设备代码管理界面 void CDMSDlg::OnBtnDevcode() { CDlgDevcode dlg; dlg.Setup(m_DBCnt,&m_logMngr); this->ShowWindow(SW_HIDE); dlg.DoModal(); this->ShowWindow(SW_SHOW); } 其它按钮的事件处理函数,代码与”设备代码”按钮的事件处理函数相同。 4.5设备代码管理窗口的建立 对话框类名为CdlgDevcode设计如图1-14所示 设备代码管理窗口 //DlgDevcode.cpp //对话框的初始化 BOOL CDlgDevcode::OnInitDialog() { CDialog::OnInitDialog();//切分列表控件 m_list.InsertColumn(0,"设备号"); m_list.InsertColumn(1,"设备名"); RECT rect; m_list.GetWindowRect(&rect); int wid = rect.right - rect.left; m_list.SetColumnWidth(0,wid/2); m_list.SetColumnWidth(1,wid/2); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);//读取已有数据 RefreshData(); return TRUE; } // DlgDevcode.cpp //消息映射部分 BEGIN_MESSAGE_MAP(CDlgDevcode, CDialog) //{{AFX_MSG_MAP(CDlgDevcode) ON_NOTIFY(NM_CLICK, IDC_LIST_DEVCODE, OnClickListDevcode) //}}AFX_MSG_MAP END_MESSAGE_MAP() //事件处理部分 void CDlgDevcode::OnClickListDevcode(NMHDR* pNMHDR, LRESULT* pResult) { int i = m_list.GetSelectionMark(); m_code = m_list.GetItemText(i,0); m_name = m_list.GetItemText(i,1); UpdateData(FALSE); *pResult = 0; } 其余程序的清单如下: // DlgDevcode.cpp : implementation file // #include "stdafx.h" #include "DMS.h" #include "DlgDevcode.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //////////////////////////////////////////////////////////////////////////// // CDlgDevcode dialog CDlgDevcode::CDlgDevcode(CWnd* pParent /*=NULL*/) : CDialog(CDlgDevcode::IDD, pParent) { //{{AFX_DATA_INIT(CDlgDevcode) m_code = _T(""); m_name = _T(""); //}}AFX_DATA_INIT m_DBCnt = NULL; m_log = NULL; } void CDlgDevcode::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgDevcode) DDX_Control(pDX, IDC_LIST_DEVCODE, m_list); DDX_Text(pDX, IDC_EDIT_DCCODE, m_code); DDX_Text(pDX, IDC_EDIT_DCNAME, m_name); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDlgDevcode, CDialog) //{{AFX_MSG_MAP(CDlgDevcode) ON_NOTIFY(NM_CLICK, IDC_LIST_DEVCODE, OnClickListDevcode) ON_BN_CLICKED(IDC_BTN_DCADD, OnBtnDcadd) ON_BN_CLICKED(IDC_BTN_DCDEL, OnBtnDcdel) ON_BN_CLICKED(IDC_BTN_DCUPD, OnBtnDcupd) //}}AFX_MSG_MAP END_MESSAGE_MAP() //////////////////////////////////////////////////////////////////////////// // CDlgDevcode message handlers //负责读取已有数据的函数 void CDlgDevcode::RefreshData() { m_list.DeleteAllItems(); m_list.SetRedraw(FALSE); _bstr_t strSQL("SELECT * FROM DEVICE_CODE"); _RecordsetPtr MySet; int i = 0; try { MySet.CreateInstance(__uuidof(Recordset)); //执行SOL语句读取记录 MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText); _variant_t Holder; while(!MySet->adoEOF) { //取出code字段的数据 Holder = MySet->GetCollect("code"); if(Holder.vt!=VT_NULL) m_list.InsertItem(i, (char*)(_bstr_t)Holder); //取出name字段的数据 Holder = MySet->GetCollect("name"); if(Holder.vt!=VT_NULL) m_list.SetItemText(i, 1, (cha展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




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



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3529686.html