版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第12章數(shù)據(jù)庫編程現(xiàn)行的數(shù)據(jù)庫模型主要有4種:層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο竽P汀,F(xiàn)在最流行的數(shù)據(jù)庫軟件都是關(guān)系模型,最有希望的模型就是面向?qū)ο竽P汀,F(xiàn)有的數(shù)據(jù)庫軟件有很多,如大型數(shù)據(jù)庫Oracle、SQLServer,小型數(shù)據(jù)庫Access等,都支持關(guān)系模型,至于數(shù)據(jù)庫系統(tǒng)的選擇完全根據(jù)用戶的需求。VisualC++從4.0版本開始就引進(jìn)了對數(shù)據(jù)庫的支持,而且在隨后的版本中逐步豐富了多種方法,如ODBC、ADO和DAO等,本章將針對ODBC在數(shù)據(jù)庫中的編程進(jìn)行介紹。12.1ODBC簡介
微軟推出了開放數(shù)據(jù)庫互連技術(shù)OpenDatabaseConnectivity,簡稱ODBC。它包含訪問不同數(shù)據(jù)庫所要求的ODBC驅(qū)動程序。ODBC提供了應(yīng)用程序接口〔API〕,使得任何一個數(shù)據(jù)庫都可以通過ODBC驅(qū)動器與指定的DBMS相聯(lián)。用戶的程序可通過調(diào)用ODBC驅(qū)動管理器中相應(yīng)的驅(qū)動程序到達(dá)管理數(shù)據(jù)庫的目的。一個基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫操作由對應(yīng)的DBMS的ODBC驅(qū)動程序完成。也就是說,不管是Oracle、SQLServer還是Access數(shù)據(jù)庫,都可以使用ODBCAPI進(jìn)行訪問。由此可見,ODBC的最大優(yōu)點是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。的根本構(gòu)成ODBC是Microsoft的Windows系統(tǒng)下的數(shù)據(jù)庫效勞的一局部,ODBC的根本構(gòu)成如圖12-1所示。1.ODBCAPI包含在一個動態(tài)庫中的函數(shù)集合、一個錯誤代碼的集合、一個標(biāo)準(zhǔn)的SQL語句集合,用來調(diào)用DBMS中的數(shù)據(jù)。2.ODBC管理器這是一個ODBC控制臺,用來管理不同的數(shù)據(jù)源。應(yīng)用程序要訪問數(shù)據(jù)庫,首先必須在ODBC管理器中創(chuàng)立一個數(shù)據(jù)源。ODBC管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫存儲位置、類型及ODBC驅(qū)動程序信息,建立起ODBC與一個特定數(shù)據(jù)庫之間的聯(lián)系,以后程序中只需要提供數(shù)據(jù)源名稱,ODBC就可以直接連接相關(guān)的數(shù)據(jù)庫。ODBC管理器在系統(tǒng)控制面板中。3.驅(qū)動程序管理器驅(qū)動程序管理器位于動態(tài)庫文件ODBC32.DLL,應(yīng)用程序通過驅(qū)動程序管理器調(diào)用特定的數(shù)據(jù)庫的驅(qū)動程序,驅(qū)動程序在執(zhí)行完相應(yīng)操作后,再將結(jié)果通過驅(qū)動程序管理器返回。驅(qū)動程序管理器支持一個應(yīng)用程序同時訪問多個DBMS中的數(shù)據(jù)。4.ODBC驅(qū)動程序由一個或是多個DLL構(gòu)成,提供ODBC與數(shù)據(jù)庫之間的接口。DLL是一個作為共享函數(shù)庫的可執(zhí)行文件,它使進(jìn)程可以調(diào)用不屬于本身可執(zhí)行代碼中的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個獨立的動態(tài)鏈接庫文件中,這樣可以節(jié)省內(nèi)存和磁盤的存儲空間,同時使程序更易于升級。DLL是一個包含可由多個程序同時使用的代碼和數(shù)據(jù)的庫。配置ODBC數(shù)據(jù)源配置ODBC數(shù)據(jù)源的步驟如下:(1)在Windows控制面板中雙擊“管理工具”圖標(biāo),在彈出的窗口中能找到“數(shù)據(jù)源ODBC”圖標(biāo),并雙擊,彈出數(shù)據(jù)源管理器對話框,如圖12-2所示。(2)在ODBC數(shù)據(jù)源管理器對話框中選系統(tǒng)DSN或用戶DSN,用戶DSN表示用戶數(shù)據(jù)源只對當(dāng)前用戶可見,而且只能用于當(dāng)前機(jī)器上。系統(tǒng)DSN表示系統(tǒng)數(shù)據(jù)源對當(dāng)前機(jī)器上的所有用戶可見。擊添加,出現(xiàn)創(chuàng)立新數(shù)據(jù)源對話框,如圖12-3所示。(3)在創(chuàng)立新數(shù)據(jù)源對話框中,選擇MicrosoftAccessDriver〔*.mdb),擊完成。此時彈出數(shù)據(jù)庫安裝對話框,如圖12-4所示。輸入數(shù)據(jù)源名My_Access,擊選擇按鈕后彈出選擇數(shù)據(jù)庫對話框,如圖12-5所示。圖12-5選擇數(shù)據(jù)庫對話框(4)在選擇數(shù)據(jù)庫對話框,選擇已創(chuàng)立好的數(shù)據(jù)庫My_Access_db.mdb,擊確定。回到圖12-2的ODBC數(shù)據(jù)源管理器對話框,可以看見已經(jīng)添加了新數(shù)據(jù)源。提供的有關(guān)ODBC的常用類1.CRecordView類一個CRecordView對象就是用一個視圖中的控件來顯示數(shù)據(jù)庫中的記錄。CRecordView類使用了動態(tài)數(shù)據(jù)交換〔DDX〕和數(shù)據(jù)庫交換〔RFX〕,在視圖上的控件和數(shù)據(jù)源中的數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)交換。一個CRecordView類對象包括菜單、工具條及對話框〔稱為FORM表單〕,負(fù)責(zé)記錄集的用戶界面??丶B接的變量要加到CRecordView類的子類CODBCView中,菜單消息的消息映射要放到CODBCView中。2.CRecordset類CRecordset類表示從數(shù)據(jù)源讀取出來的數(shù)據(jù)庫。創(chuàng)立數(shù)據(jù)庫應(yīng)用程序框架后,系統(tǒng)已經(jīng)生成了CRecordView的子類CODBCView和CRecordset類的子類CODBCSet,并和相應(yīng)的數(shù)據(jù)源關(guān)聯(lián),還生成了一個對話框資源IDD_ODBC_FORM。還定義了一個指向記錄集的指針m_pSet,可以通過該指針訪問記錄集類的數(shù)據(jù)成員以及調(diào)用記錄集類的成員函數(shù)。表12-1是記錄集類的數(shù)據(jù)成員,表12-2是記錄集類的成員函數(shù)。表12-1記錄集類的數(shù)據(jù)成員
表12-2記錄集類的成員函數(shù)例如要實現(xiàn)定位功能,可以使用如下語句:m_pSet->MoveFirst(); m_pSet->MoveNext();m_pSet->MoveLast();要實現(xiàn)當(dāng)前記錄的編輯、刪除、更新或添加記錄功能,可以使用如下語句:m_pSet->Edit();m_pSet->Delete(); m_pSet->Update();m_pSet->AddNew();//添加一個記錄m_pSet->SetFieldNull(NULL);//清空屏幕m_pSet->GetRecordCount();//獲得當(dāng)前記錄數(shù)要判斷當(dāng)前更新、滾動狀態(tài),可以使用如下語句:m_pSet->CanUpdate()m_pSet->CanScroll()m_pSet->IsEOF()m_pSet->IsBOF()m_pSet->IsDeleted() 要判斷當(dāng)前表是否為空,可以使用如下語句:CRecordsetStatusm_cStatus;m_pSet->GetStatus(m_cStatus);if(m_cStatus.m_lCurrentRecord==0)要實現(xiàn)排序功能,可以使用如下語句:m_pSet->Close(); //關(guān)閉數(shù)據(jù)庫m_pSet->m_strSort=“年齡”;//指定排序字段m_pSet->Open(); //再次翻開數(shù)據(jù)庫UpdateData(FALSE); //更新已經(jīng)排序過的記錄或m_pSet->m_strSort=“年齡”;//指定排序字段 m_pSet->Requery(); //重新查詢數(shù)據(jù)源UpdateData(FALSE);要實現(xiàn)過濾功能,可以使用如下語句:m_pSet->Close(); //關(guān)閉原來的表單m_pSet->m_strFilter=“姓名=‘張三’”;//將查詢條件給過濾器m_pSet->Open(); //翻開經(jīng)過過濾的表單3.CDatabase類CDatabase類在afxdb.h中定義。其對象是用來連接一個數(shù)據(jù)源的。為了可以使用CDatabase對象,需要調(diào)用構(gòu)造函數(shù),并調(diào)用OpenEx()或是Open()函數(shù)來翻開一個連接。當(dāng)構(gòu)造一個CDatabase類對象后,可以向該對象傳遞這個CDatabase類的指針。連接數(shù)據(jù)源結(jié)束時,必須用Close()函數(shù)關(guān)閉這個數(shù)據(jù)庫對象。4.CDBException類CDBException類是用來處理從其它ODBC類傳過來的異常情況的。這個類一般是和關(guān)鍵字CATCH連用的。CDBException類的數(shù)據(jù)成員有如下幾個:m_nRetCode:它包含了一個結(jié)構(gòu)體RETCODE,里面包含了ODBC的錯誤信息的描述。m_strError:包含一個描敘異常情況的字符串。m_strStateNativeOrigin:包含描述異常情況的字符串m_strStateNativeOrigin;如果變量包含多個錯誤的描述,錯誤會分行顯示。12.2簡單的MFCODBC數(shù)據(jù)庫應(yīng)用編程用MFC應(yīng)用程序向?qū)褂肙DBC數(shù)據(jù)庫的一般過程是:(1)用Access或其它數(shù)據(jù)庫工具構(gòu)造一個數(shù)據(jù)庫;(2)在Windows中為剛剛構(gòu)造的數(shù)據(jù)庫定義一個ODBC數(shù)據(jù)源;(3)在創(chuàng)立數(shù)據(jù)庫處理的文檔應(yīng)用程序向?qū)е羞x擇數(shù)據(jù)源;(4)設(shè)計界面,并使控件與數(shù)據(jù)表字段關(guān)聯(lián)?!纠?2-1】編寫一個數(shù)據(jù)庫應(yīng)用程序,用它可以瀏覽數(shù)據(jù)庫表中的記錄。程序運行時的界面如圖12-6所示。實現(xiàn)步驟如下:
(1)創(chuàng)立一個名為Student_Access的Access數(shù)據(jù)庫,數(shù)據(jù)庫中包含一個student表。表結(jié)構(gòu)見表12-3。將其注冊為ODBC數(shù)據(jù)源Student_Access。
表12-3student表結(jié)構(gòu)(2)用MFC應(yīng)用程序向?qū)砩梢粋€單文檔的應(yīng)用程序MyODBC。(3)在MFC應(yīng)用程序向?qū)У牟襟E2中選擇數(shù)據(jù)支持的時候選擇“查看數(shù)據(jù)庫不使用文件支持”,如圖12-7所示。表12-4中是這4個選項的說明。圖12-7MFC應(yīng)用程序向?qū)У牟襟E2表12-44個選項的說明(4)然后選擇數(shù)據(jù)源,按下數(shù)據(jù)源按鈕,彈出如圖12-8所示的DatasouceOptions對話框,選擇已經(jīng)注冊好的數(shù)據(jù)源Student_Access。在Recordsettype中,Snapshots是一個靜態(tài)數(shù)據(jù)庫,每一個表都是一個從翻開的數(shù)據(jù)源讀取出來的。而當(dāng)用戶在一個Dynasets中翻閱記錄時,會隨時顯示其它人或自己對某個數(shù)據(jù)的修改,不管對這個數(shù)據(jù)的修改是在應(yīng)用程序中還是其它地方。這里選Dynasets,擊OK按鈕。(5)出現(xiàn)SelectDatabaseTables對話框。在彈出的對話框選擇student表,擊OK。(6)在MFC應(yīng)用程序向?qū)У牟襟E2中看到選擇的表名,擊完成。(7)翻開資源管理器的Dialog文件夾,選擇IDD_ODBC_FORM,在對話框中按圖12-6所示添加靜態(tài)文本控件和編輯框控件,設(shè)置各控件的屬性。(8)在表單視圖CODBCView中添加的控件要與表的字段相關(guān)聯(lián),這樣就可以根據(jù)表的當(dāng)前記錄位置顯示相應(yīng)的數(shù)據(jù)。右擊控件,翻開類向?qū)Вx擇MemberVariables標(biāo)簽頁,類名選擇CODBCView〔添加CODBCView類的成員變量〕,擊AddVariable按鈕,彈出AddMemberVariable對話框,如圖12-9所示,選擇要連接的表的字段即可。圖12-9AddMemberVariable對話框(9)編譯運行程序。需要說明的是,MFC應(yīng)用程序向?qū)?chuàng)立的ODBC應(yīng)用程序與一般默認(rèn)的單文檔應(yīng)用程序相比較,在類框架方面有如下幾點不同:(1)添加了一個CODBCSet類,它與上述過程中所選擇的數(shù)據(jù)表student進(jìn)行數(shù)據(jù)綁定,也就是說,CODBCSet對象的操作實質(zhì)上對數(shù)據(jù)表進(jìn)行操作。(2)將CODBCView類的基類設(shè)置成CrecordView。由于CrecordView的基類是CformView,因此它需要與之相關(guān)聯(lián)的表單資源。(3)MFC為用戶自動創(chuàng)立了用于瀏覽數(shù)據(jù)表記錄的工具按鈕和相應(yīng)的“記錄”菜單項。假設(shè)用戶選擇這些瀏覽記錄命令,系統(tǒng)會自動調(diào)用相應(yīng)的函數(shù)來移動數(shù)據(jù)表的當(dāng)前位置。(4)RFXRFX(RecordFieldExchange)是支持應(yīng)用程序的一個交換機(jī)制,當(dāng)CODBCSet類與Cdatabase類在交換數(shù)據(jù)的時候沒有選擇大容量交換的方式〔BulkRFX〕時,RFX機(jī)制將在數(shù)據(jù)交換中起作用。RFX在視圖和數(shù)據(jù)源之間自動交換數(shù)據(jù),由于一次交換的數(shù)據(jù)可能不止一個,為此可能要屢次調(diào)用DoFieldExchange函數(shù),同時它也是應(yīng)用程序框架和ODBC交流的媒介。RFX機(jī)制能夠平安的通過函數(shù)調(diào)用來保存用戶的工作。下面代碼就是例12-1工程文件中應(yīng)用程序向?qū)ё詣訁⒓拥腞FX代碼,見粗斜體局部:voidCMyODBCSet::DoFieldExchange(CfieldExchange*pFX){ //{{AFX_FIELD_MAP(CMyODBCSet) pFX->SetFieldType(CfieldExchange::outputColumn); RFX_Text(pFX,_T(“[Number]”),m_Number); RFX_Text(pFX,_T(“[Name]”),m_Name); RFX_Text(pFX,_T(“[Sex]”),m_Sex); RFX_Long(pFX,_T(“[Age]”),m_Age); RFX_Text(pFX,_T(“[Special]”),m_Special); //}}AFX_FIELD_MAP}下面是Crecordset派生類的頭文件,其中關(guān)于RFX機(jī)制的局部已經(jīng)用粗斜體顯示:classCMyODBCSet:publicCrecordset{public: CMyODBCSet(Cdatabase*pDatabase=NULL); DECLARE_DYNAMIC(CMyODBCSet)//Field/ParamData //{{AFX_FIELD(CMyODBCSet,Crecordset) Cstring m_Number; Cstring m_Name; Cstring m_Sex; long m_Age; Cstring m_Special; //}}AFX_FIELD//Overrides //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CMyODBCSet) public: virtualCstringGetDefaultConnect(); //Defaultconnectionstring virtualCstringGetDefaultSQL(); //defaultSQLforRecordset virtualvoidDoFieldExchange(CfieldExchange*pFX); //RFXsupport //}}AFX_VIRTUAL//Implementation#ifdef_DEBUG virtualvoidAssertValid()const; virtualvoidDump(CdumpContext&dc)const;#endif};【例12-2】在例12-1根底上增加查詢功能,程序運行界面如圖12-10所示。圖12-10例12-2程序運行界面具體步驟如下:
(1)添加一個組合框和一個編輯框控件,用于設(shè)置查詢條件,添加一個查詢按鈕??丶嚓P(guān)的屬性及連接的變量如表12-3。
表12-3控件屬性及連接的變量(2)在初始化函數(shù)voidCMyODBCView::OnInitialUpdate()中,參加組合框的選擇內(nèi)容,代碼如下:voidCMyODBCView::OnInitialUpdate(){ m_pSet=&GetDocument()->m_oDBCSet; CrecordView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit();m_ctrlField.AddString(“Number”);m_ctrlField.AddString(“Name”);m_ctrlField.AddString(“Sexr”);m_ctrlField.AddString(“Age”);m_ctrlField.AddString(“Special”);}(3)為查詢按鈕添加消息處理函數(shù)OnButtonQuery(),添加代碼:voidCMyODBCView::OnButtonQuery(){ //TODO:AddyourcontrolnotificationhandlercodehereUpdateData();if(m_strField.IsEmpty()&&m_strRow.IsEmpty()) { MessageBox(“查詢條件缺乏”);}m_pSet->Close();m_pSet->m_strFilter.Format(“%s=’%s’”,m_strField,m_strRow);m_pSet->Open();if(!m_pSet->IsBOF()) UpdateData(FALSE);else MessageBox(“沒有查到”);}上面代碼中,先通過Close()函數(shù)關(guān)閉數(shù)據(jù)庫,然后設(shè)置變量m_strFilter,實現(xiàn)按給定的查詢條件查詢,然后再次翻開數(shù)據(jù)庫,最后調(diào)用UpdateData(FALSE);在視圖中顯示查詢的結(jié)果集?!纠?2-3】在例12-2的根底上增加添加、修改、刪除一個記錄的功能,程序運行界面如圖12-11所示。當(dāng)單擊“添加”“修改”按鈕時彈出一個對話框來顯示要添加或修改的內(nèi)容,如圖12-12所示。單擊“刪除”那么直接刪除當(dāng)前記錄。圖12-11例12-3程序運行界面圖12-12彈出的對話框具體步驟如下:(1)在界面上添加三個命令按鈕“添加記錄”、“修改記錄”和“刪除記錄”,設(shè)置它們的ID號分別為IDC_BUTTON_ADD、IDC_BUTTON_EDIT和IDC_BUTTON_DEL。(2)為程序添加一個對話框資源,按照如圖12-12布局。
(3)雙擊對話框模板或按Ctr+W快捷鍵,為對話框資源創(chuàng)立一個對話框類CstudentDlg。
(4)為新對話框類的各個控件連接變量,見表12-4。
表12-4控件屬性及連接的變量(5)為“添加記錄”按鈕添加消息處理函數(shù)并添加代碼如下:voidCMyODBCView::OnBttonAdd(){ //TODO:AddyourcontrolnotificationhandlercodehereCstudentDlgdlg;if(dlg.DoModal()==IDOK){ m_pSet->AddNew(); m_pSet->m_Number=dlg.m_dlgNumber; m_pSet->m_Name=dlg.m_dlgName; m_pSet->m_Age=dlg.m_dlgAge; m_pSet->m_Special=dlg.m_dlgSpecial; m_pSet->m_Sex=dlg.m_dlgSex; m_pSet->Update(); m_pSet->Requery();}}(6)為“修改記錄”按鈕添加消息處理函數(shù)并添加代碼如下:voidCMyODBCView::OnButtonEdit(){ //TODO:AddyourcontrolnotificationhandlercodehereCstudentDlgdlg;dlg.m_dlgNumber=m_pSet->m_Number;dlg.m_dlgName=m_pSet->m_Name;dlg.m_dlgSex=m_pSet->m_Sex;dlg.m_dlgAge=m_pSet->m_Age;dlg.m_dlgSpecial=m_pSet->m_Special;UpdateData();if(dlg.DoModal()==IDOK){ m_pSet->Edit(); m_pSet->m_Number=dlg.m_dlgNumber; m_pSet->m_Name=dlg.m_dlgName; m_pSet->m_Sex=dlg.m_dlgSex; m_pSet->m_Age=dlg.m_dlgAge; m_pSet->m_Special=dlg.m_dlgSpecial; m_pSet->Update(); UpdateData(FALSE);}}(7)為“刪除記錄”按鈕添加消息處理函數(shù)并添加代碼如下:voidCMyODBCView::OnButtonDel(){ //TODO:AddyourcontrolnotificationhandlercodehereCrecordsetStatusstatus;m_pSet->GetStatus(status);m_pSet->Delete();if(status.m_lCurrentRecord==0) m_pSet->MoveNext();else UpdateData(FALSE);}(8)為新對話框的“確定”按鈕添加消息處理函數(shù)并添加代碼如下:voidCstudentDlg::OnOK(){ //TODO:AddextravalidationhereUpdateData();if(m_dlgNumber.IsEmpty()) MessageBox(“學(xué)號不能為空”);elseCdialog::OnOK();}(9)由于在視圖中響應(yīng)了對話框的操作,因此還需要再在CMyODBCView.cpp中參加對話框類的頭文件,代碼如下:#include”CstudentDlg.h”(10)編譯運行?!纠?2-4】在例12-3根底上增加排序功能,程序運行界面如圖12-13所示。選擇排序的條件后按下“排序”按鈕,可以按指定的條件排列順序。圖12-13例12-4程序運行界面具體步驟如下:
(1)在界面上添加一個組合框和一個“排序”按鈕,它們的屬性及連接的變量見表12-5。
表12-5控件屬性及連接的變量
(2)在初始化函數(shù)voidCMyODBCView::OnInitialUpdate()中,參加組合框的選擇內(nèi)容,代碼如下:voidCMyODBCView::OnInitialUpdate(){m_Sort
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 愚人節(jié)活動策劃 合集15篇
- 心靈捕手觀后感9篇
- 團(tuán)學(xué)干部培訓(xùn)課程
- 語文學(xué)科研究性學(xué)習(xí)的思考與實踐
- 智研咨詢發(fā)布-2024年中國集成電路行業(yè)產(chǎn)業(yè)鏈全景分析及發(fā)展趨勢預(yù)測報告
- 靜力水準(zhǔn)系統(tǒng)在合肥光源的安裝調(diào)試及其在ATL模型研究中的應(yīng)用
- 定位與發(fā)展核心競爭力
- 二零二五版商業(yè)綜合體物業(yè)安全保障責(zé)任合同3篇
- 二零二五版中小學(xué)食堂營養(yǎng)餐配餐系統(tǒng)采購合同3篇
- 二零二五年度國際鐵礦石價格波動風(fēng)險管理合同3篇
- 化學(xué)-河南省TOP二十名校2025屆高三調(diào)研考試(三)試題和答案
- 智慧農(nóng)貿(mào)批發(fā)市場平臺規(guī)劃建設(shè)方案
- 小學(xué)數(shù)學(xué)分?jǐn)?shù)四則混合運算300題帶答案
- 林下野雞養(yǎng)殖建設(shè)項目可行性研究報告
- 2023年水利部黃河水利委員會招聘考試真題
- Python編程基礎(chǔ)(項目式微課版)教案22
- 01J925-1壓型鋼板、夾芯板屋面及墻體建筑構(gòu)造
- 欠電費合同范本
- 2024年新高考地區(qū)數(shù)學(xué)選擇題填空壓軸題匯編十八含解析
- 大型商場招商招租方案(2篇)
- 2022年袋鼠數(shù)學(xué)競賽真題一二年級組含答案
評論
0/150
提交評論