




已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
你也許聽說過Pocket PC Phone Edition,它是另一個裝備微軟軟件的電話。為了避免混亂,我將澄清Pocket PC Phone Edition與Smartphone之間的區(qū)別。圖1顯示了兩者的區(qū)別(如果你有興趣查閱建立Smartphone圖形界面的信息,可以查看開發(fā)高效的Smartphone用戶界面)。Pocket PC Phone Edition是一款功能全面的內(nèi)建移動電話能力的Pocket PC設(shè)備。在尺寸上它與其它的Pocket PC設(shè)備相近,體積比Smartphone要大一些。Pocket PC Phone Edition要求更大的功率和更多的內(nèi)存;此外,它有一個觸摸屛,面積比通常的Smartphone屏幕(它不支持觸摸屛)要大得多。用戶與設(shè)備的交互途徑也不同:Pocket PC Phone Edition使用輸入筆與觸摸屛交互,而Smartphone使用電話的小鍵盤。 哪一類型的設(shè)備適合你的需要取決于三個主要因素:成本、功能和使用的簡便性。微軟估計(jì)Smartphone的定價與其它的高端移動電話相近,比Pocket PC Phone Edition設(shè)備低。你需要的功能依賴于應(yīng)用程序設(shè)計(jì)成做什么的。對于多數(shù)移動應(yīng)用程序,Smartphone和Pocket PC Phone Edition執(zhí)行的情況相同。但是,如果應(yīng)用程序需要大量的磁盤空間和內(nèi)存、附加的硬件或者大屏幕,Pocket PC Phone Edition也許是正確的選擇。 無論哪種設(shè)備和在它上面運(yùn)行的應(yīng)用程序,都必須易于使用,要考慮數(shù)據(jù)輸入的問題。首先,你必須決定使用輸入筆還是小鍵盤,這實(shí)際上沒有關(guān)系。通過菜單選項(xiàng)的數(shù)據(jù)輸入易于被其它設(shè)備處理。但是,如果輸入文本信息,Pocket PC Phone Edition明顯好用一些。幸運(yùn)的是兩種設(shè)備都支持Windows CE API,使你能輕易地為它們建立一個基礎(chǔ)代碼。 建立Smartphone應(yīng)用程序 真實(shí)的Smartphone應(yīng)用程序需要傳遞什么?在多數(shù)移動應(yīng)用程序中很多事務(wù)是共同的。它們從一個遠(yuǎn)程數(shù)據(jù)存儲中檢索數(shù)據(jù)、處理、保存、在本地離線處理數(shù)據(jù)、上載更改并與電話特性交互。如果你在需要時能夠了解并建立這些元素,就能夠從事真正的Smartphone開發(fā)了。 下一步是決定將建立的應(yīng)用程序的類型:基于瀏覽器的(browser-based)還是獨(dú)立的(standalone)。 Smartphone上的基于瀏覽器的方案包含能被袖珍互聯(lián)網(wǎng)瀏覽器(Pocket Internet Explorer)訪問的Web內(nèi)容。這種類型的應(yīng)用程序是已存在的內(nèi)容提供商的最好選擇,他們希望將出售物擴(kuò)展到Smartphone所有者。Smartphone上的基于瀏覽器的應(yīng)用程序與其它平臺上的好處相同:簡單的軟件分發(fā)和維護(hù),因?yàn)樗械拇a在Web服務(wù)器上。當(dāng)然,缺點(diǎn)是并不能保證始終連接到互聯(lián)網(wǎng)。另一個問題是袖珍互聯(lián)網(wǎng)瀏覽器應(yīng)用程序不能與設(shè)備的內(nèi)建特性交互。盡管如此,這類應(yīng)用程序可以使用已經(jīng)存在的(例如ASP.NET移動控件)Web開發(fā)和優(yōu)化工具開發(fā)。 與Web應(yīng)用程序不同,你能使用類似嵌入式(eMbedded)Visual C+的工具來開發(fā)一個定制的應(yīng)用程序。幸運(yùn)的是Smartphone 與Pocket PC平臺相似。因?yàn)榇蠖鄶?shù)API相同,使用嵌入式Visual C+為Pocket PC平臺開發(fā)的應(yīng)用程序能簡單地移植到Smartphone上,其結(jié)果是在很大程度上節(jié)省了為兩個設(shè)備開發(fā)的成本。我移植了兩個應(yīng)用程序,一個只需要簡單地重新編譯,另一個只花了結(jié)果幾個小時來解決平臺之間的微弱不同。 開發(fā)獨(dú)立的應(yīng)用程序時你有更大的靈活性,這類應(yīng)用程序往往更加牢固,并能用于連接和不連接的模式。對多數(shù)商業(yè)應(yīng)用,獨(dú)立的應(yīng)用程序也許是最好的選擇。它們在離線環(huán)境下使用,也提供了根據(jù)需要在遠(yuǎn)程系統(tǒng)間傳遞數(shù)據(jù)的機(jī)制。 此外,獨(dú)立應(yīng)用程序也可以使用特定設(shè)備的特性,包括技術(shù)特性和訪問本地數(shù)據(jù)存儲,例如Pocket Outlook和Windows CE數(shù)據(jù)庫(CEDB)引擎。當(dāng)離線時,為了將來同步,數(shù)據(jù)可以被存儲起來。但是,獨(dú)立應(yīng)用程序面臨著更多的分發(fā)和維護(hù)問題。此外建立獨(dú)立應(yīng)用程序還需要C+經(jīng)驗(yàn),通常它的成本更高并難以找到開發(fā)者。但是這種情況不會發(fā)生了,預(yù)計(jì)微軟.NET Compact Framework和Smart Device Extensions最后將支持Smartphone。如果這實(shí)現(xiàn)了,開發(fā)者可以使用C#和Visual Basic .NET等語言建立Smartphone應(yīng)用程序。 數(shù)據(jù)檢索 因?yàn)槿魏紊虡I(yè)應(yīng)用程序最基本的特性是檢索數(shù)據(jù),設(shè)計(jì)的部分問題圍繞可用連接的類型。你能依賴持續(xù)的連接或者連接可能中斷嗎?你的系統(tǒng)只有一定的次數(shù)和訪問點(diǎn)才需要連接嗎? Smartphone為從遠(yuǎn)程數(shù)據(jù)源檢索數(shù)據(jù)提供了幾種選擇。一種是ActiveSync,你可以使用它手動地在桌面計(jì)算機(jī)和Smartphone之間推/拉(push/pull)文檔。另一個選擇是編程從PC上訪問該設(shè)備并使用遠(yuǎn)程API(RAPI)復(fù)制文件。雖然這些方法完成了任務(wù),但是不是最好的選擇。Smartphone的內(nèi)建互聯(lián)網(wǎng)連接更好。 在Smartphone設(shè)備上通過互聯(lián)網(wǎng)檢索遠(yuǎn)程數(shù)據(jù)非常簡單。實(shí)際上,如果你已經(jīng)開發(fā)了一個通過互聯(lián)網(wǎng)檢索數(shù)據(jù)的Pocket PC應(yīng)用程序,就已經(jīng)知道所有需要的了。在Smartphone上與遠(yuǎn)程服務(wù)器通訊的最簡單的方法是WinInet功能(HTTP或者FTP)、在遠(yuǎn)程載入數(shù)據(jù)的XMLDOM API和微軟互聯(lián)網(wǎng)瀏覽器 XMLDOM 給Web開發(fā)人員提供了幾種數(shù)據(jù)檢索的方法。使用DOM你能通過兩個主要的方法檢索數(shù)據(jù):文檔對象和XMLHTTP對象的Load方法。兩個對象都允許從遠(yuǎn)程Web服務(wù)器上的XML格式中檢索數(shù)據(jù)。兩者之間最大的區(qū)別是XMLHTTP對象允許你傳遞一個XML對象作為調(diào)用的一部分,盡管Load命令沒有允許。在為了檢索數(shù)據(jù)而需要傳遞數(shù)據(jù)的情況下,你應(yīng)該使用XMLHTTP對象。 不管你在XMLDOM中使用那種方法,只需要在代碼中作一點(diǎn)點(diǎn)更改。首先你必須包括正確的頭文件: #include namespace MSXML#include #include objsafe.h和ocidl.h都是必須的,因?yàn)樗鼈儼珿UID描述,而GUID是與COM一起工作的指針必須的。為了使COM調(diào)用進(jìn)入MSXML分析程序,你必須建立MSXML名字空間并包含msxml.h。此外,為了項(xiàng)目編譯正確,你應(yīng)該把ole32.lib和oleaut32.lib庫添加到連接程序設(shè)置中。 一旦代碼使用XMLDOM,你能簡單地使用DOMDocument 的load方法從遠(yuǎn)程服務(wù)器檢索數(shù)據(jù)。該方法只需要一個能找到并檢索數(shù)據(jù)的URL。它在文檔中重復(fù)構(gòu)建窗體上的一個微調(diào)控件(spinner control)。完成后它顯示一個包含整個XML文檔的消息框。 MSXML:IXMLDOMDocument *iXMLDoc = NULL;MSXML:IXMLDOMParseError *pParsingErr = NULL;MSXML:IXMLDOMElement *iXMLElm = NULL;MSXML:IXMLDOMNodeList *iXMLChild = NULL;MSXML:IXMLDOMNode *iXMLItem = NULL;short tEmpty;BSTR bStr;VARIANT vXMLSrc;HRESULT hr;HWND hListBox;long lLength;hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);if(!SUCCEEDED(hr) return 0;hr = CoCreateInstance (MSXML:CLSID_DOMDocument, NULL,CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, MSXML:IID_IXMLDOMDocument, (LPVOID *)&iXMLDoc);if(iXMLDoc) iXMLDoc-put_async(VARIANT_FALSE); /Smartphone 2002 工作區(qū): /刪除文檔安全選項(xiàng) IObjectSafety *pSafety; DWORD dwSupported, dwEnabled; if ( SUCCEEDED(iXMLDoc-QueryInterface( IID_IObjectSafety, (void*)&pSafety) pSafety-GetInterfaceSafetyOptions( MSXML:IID_IXMLDOMDocument, &dwSupported, &dwEnabled ); pSafety-SetInterfaceSafetyOptions( MSXML:IID_IXMLDOMDocument, dwSupported, 0 ); VariantInit( &vXMLSrc ); vXMLSrc.vt = VT_BSTR; iXMLDoc-put_async(VARIANT_FALSE); vXMLSrc.bstrVal = SysAllocString(Lhttp:/localhost/ smartphonearticledata.xml); hr = iXMLDoc-load(vXMLSrc, &tEmpty); SysFreeString(vXMLSrc.bstrVal); iXMLDoc-get_documentElement(&iXMLElm); iXMLElm-selectNodes(L/DATA/STATUS/S,&iXMLChild); /iXMLElm-get_childNodes(&iXMLChild); iXMLChild-get_length(&lLength); hListBox = GetDlgItem( hWnd, IDC_LISTISSUES); for (int x=0;xget_item(x,&iXMLItem); iXMLItem-get_text(&bStr); SendMessage (hListBox, LB_ADDSTRING, 0, (LPARAM) bStr); /iXMLChild-get_item(1,&iXMLItem); iXMLDoc-get_xml(&bStr); MessageBox(NULL,bStr,TEXT(Article Demo),MB_OK);本地存儲數(shù)據(jù) 在檢索數(shù)據(jù)到Smartphone后,下一步是研究在設(shè)備上本地存儲數(shù)據(jù)的方法。一種選擇是根本不保存。你可以檢索數(shù)據(jù),執(zhí)行一些操作,接著從內(nèi)存中釋放數(shù)據(jù)。不幸的是在大多數(shù)情況下沒有這么簡單,因此你不得不決定適合應(yīng)用程序的格式。你也許會保存數(shù)據(jù)到文件存儲(例如閃存卡),或者保存在本地的數(shù)據(jù)存儲(例如CEDB)中。 對于多數(shù)商業(yè)應(yīng)用程序,你需要把數(shù)據(jù)保存在文件系統(tǒng)中。盡管能夠?qū)?shù)據(jù)寫入RAM文件系統(tǒng),但是并不推薦這樣使用,因?yàn)楫?dāng)設(shè)備關(guān)閉或掉電時所有數(shù)據(jù)都會丟失。對于持續(xù)的存儲器,Smartphone設(shè)備提供作為IPSM內(nèi)存控件的閃存文件系統(tǒng)。在多數(shù)Smartphone上空間受到限制,但是許多設(shè)備包含一個存儲卡槽,允許使用可移走的存儲卡。 編程決定Smartphone上在哪兒存儲數(shù)據(jù)很簡單,這得感謝你在Windows CE 平臺上進(jìn)行開發(fā)所熟悉的一些API。這些調(diào)用可以在Windows Shell API文檔中找到。現(xiàn)在我將聚焦于SHGetSpecialFolderPath函數(shù)。該函數(shù)允許你訪問主要的Smartphone文件系統(tǒng)并在運(yùn)行時檢索完整的路徑。在檢索路徑后,你能使用該路徑存儲與應(yīng)用程序相關(guān)的數(shù)據(jù)。該函數(shù)需要一個CSIDL_常數(shù)作為輸入?yún)?shù)。這些常數(shù)反映了Smartphone操作系統(tǒng)中的共有文件夾(應(yīng)用程序數(shù)據(jù)、收藏夾、程序、開始等等)。因?yàn)檫@些公共區(qū)域也許在不同設(shè)備上,CSIDL常量提供了一個唯一的系統(tǒng)標(biāo)識來識別這些目錄。推薦客戶應(yīng)用程序在CSIDL_APPDATA常量返回目錄的子目錄中保存數(shù)據(jù)。例如: #ifdef CSIDL_APPDATAif(!SHGetSpecialFolderPath(NULL, szFolderPath, CSIDL_APPDATA, TRUE) ASSERT(FALSE); hr = HRESULT_FROM_WIN32(GetLastError(); #else / Pocket PC沒有這種定義來在根中讀取目錄。/也許未來會作些改變,但代碼仍然可以工作 _tcscpy(szFolderPath, TEXT();#endif我先前講到,有些設(shè)備需要附加存儲卡。與你的桌面計(jì)算機(jī)的硬盤驅(qū)動器不同,Smartphone沒有為存儲卡分配驅(qū)動器符號。作為代替,操作系統(tǒng)在根目錄中建立目錄來表現(xiàn)每塊存儲卡上的不同部分。為了訪問一個設(shè)備中的不同卡,使用FindFirstFlashCard和FindNextFlashCard函數(shù)。如果找到了存儲卡,F(xiàn)indFirstFlashCard返回一個指向第一塊存儲卡的句柄和指針。如果句柄是正確的,你可以把它傳遞給FindNextFlashCard,該函數(shù)將返回下一塊存儲卡的指針和一個BOOL值來表明搜索是否成功。 一旦你找到了希望使用的存儲卡,下一步就是查找一個位置來存儲數(shù)據(jù)。在訪問設(shè)備上的文檔時通常使用SHGetDocumentsFolder函數(shù)。它可用于新的或者原來的存儲卡。下面是使用SHGetDocumentsFolder的一個例子: TCHAR szDocPath250;if (!SHGetDocumentsFolder(L,szDocPath) MessageBox(NULL,LRetrieveing Path Failure,LCall Failure,MB_OK); else MessageBox(NULL,szDocPath,LDocuments Folder Path,MB_OK); 模擬器筆記:Smartphone模擬器不支持存儲卡。它也不支持附加在運(yùn)行模擬器的PC上的真正的存儲卡。 數(shù)據(jù)庫操作 對于幾乎所有商業(yè)應(yīng)用程序來說,把數(shù)據(jù)保存到本地數(shù)據(jù)庫是必要的,對于許多Smartphone應(yīng)用程序也是這樣。與Windows CE和Pocket PC相比, Smartphone上數(shù)據(jù)庫的選擇只有少許的不同。對于第一個Smartphone版本Smartphone 2002,只支持本地Windows CE數(shù)據(jù)庫,目前它不支持SQL Server CE或者Pocket Access。此外訪問Windows CE數(shù)據(jù)庫的唯一選擇是使用包含在Windows CE 3.0中的數(shù)據(jù)庫API。不過訪問Windows CE數(shù)據(jù)庫的代碼與為Windows CE設(shè)備所寫的代碼幾乎相同。 同步數(shù)據(jù) 在使用完連接并處理數(shù)據(jù)后,下一步就是與遠(yuǎn)程數(shù)據(jù)存儲同步。因?yàn)槲乙呀?jīng)介紹過使用XMLDOM通過互聯(lián)網(wǎng)檢索數(shù)據(jù),我將繼續(xù)使用該模型并將改變通過XMLHTTP對象發(fā)送回遠(yuǎn)程服務(wù)器。 在介紹使用XMLHTTP的細(xì)節(jié)前,我們看看Smartphone怎樣使用Web服務(wù)。目前,在Smartphone平臺上沒有內(nèi)建庫或組件提供SOAP客戶端功能。但是Smartphone 的SOAP客戶端并不在可能的范圍之外,因?yàn)镾martphone 2002 SDK支持所有可能需要的組件。如果Smartphone上需要SOAP客戶端,我建議查看第三方庫,它也許能移植到Smartphone而沒有太多問題。此外你應(yīng)該記得一旦Smartphone上的.NET簡潔框架組件可以使用,就能使用Smartphone客戶端的功能了。 從Smartphone向遠(yuǎn)程數(shù)據(jù)存儲同步數(shù)據(jù)的第一步是從主存儲器中檢索所有改變了的數(shù)據(jù)并轉(zhuǎn)換為XML格式。完成后,實(shí)例化XMLHTTP對象并把數(shù)據(jù)傳遞到處理同步的特定URL。 先前講到,因?yàn)閄MLHTTP對象擁有使用XML格式發(fā)送信息到遠(yuǎn)程服務(wù)器的能力,在這兒它將被使用到。XMLHTTP對象是前面的項(xiàng)目中包含的MSXML庫中可用的另一個對象。圖4是該對象的使用。它很容易使用,從IXMLHttpRequest接口中建立了一個對象。此外,建立一個VARIANT來保持IXMLDOMDocument對象。為了傳遞這個復(fù)雜的類型,VARIANT必須通過VT_DISPATCH類型設(shè)置。剩下的步驟是調(diào)用XMLHTTP 對象的open和send方法。 MSXML:IXMLDOMDocument *iXMLDoc = NULL;MSXML:IXMLHttpRequest *iXMLHttp = NULL;HRESULT hr;BSTR bStr = NULL;VARIANT vUserID;VARIANT vPassword;VARIANT vPassValue;VARIANT vAsync;short tEmpty;hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);if(!SUCCEEDED(hr) return 0;hr = CoCreateInstance (MSXML:CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, MSXML:IID_IXMLDOMDocument, (LPVOID *)&iXMLDoc);if(iXMLDoc) iXMLDoc-put_async(VARIANT_FALSE); / Smartphone 2002工作區(qū): /刪除文檔安全選項(xiàng) IObjectSafety *pSafety; DWORD dwSupported, dwEnabled; if ( SUCCEEDED(iXMLDoc-QueryInterface(IID_IObjectSafety, (void*)&pSafety) pSafety-GetInterfaceSafetyOptions( MSXML:IID_IXMLDOMDocument, &dwSupported, &dwEnabled ); pSafety-SetInterfaceSafetyOptions( MSXML:IID_IXMLDOMDocument, dwSupported, 0 ); iXMLDoc-put_async(VARIANT_FALSE); iXMLDoc-loadXML(LJoe Smith, &tEmpty);VariantInit(&vAsync);vAsync.vt = VT_BOOL;vAsync.boolVal = false;VariantInit(&vUserID);vUserID.vt = VT_BSTR;vUserID.bstrVal = L;VariantInit(&vPassword);vPassword.vt = VT_BSTR;vPassword.bstrVal = L;VariantInit(&vPassValue);vPassValue.vt = VT_DISPATCH;vPassValue.pdispVal = iXMLDoc;hr = CoInitializeEx(NULL,COINIT_MULTITHREADED); if(!SUCCEEDED(hr) return 0;hr = CoCreateInstance (MSXML:CLSID_XMLHTTPRequest, NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, MSXML:IID_IXMLHttpRequest, (LPVOID *)&iXMLHttp);iXMLHttp-open(LGET, Lhttp:/localhost/smartphonesavetest.asp, vAsync,vUserID,vPassword);hr=iXMLHttp-send(vPassValue);iXMLHttp-get_responseText(&bStr);訪問電話特性 通過Windows CE API,開發(fā)人員能簡單地給應(yīng)用程序添加電話功能。類似自動撥號、與調(diào)用日志交互、訪問SIM卡的能力、發(fā)送和接收SMS消息等等特性可以簡單地添加到應(yīng)用程序。為了工作正常,大多數(shù)技術(shù)API需要真實(shí)的設(shè)備或者GSM無線設(shè)備連接到模擬器,因此如果你計(jì)劃開發(fā)這些類型的特性,準(zhǔn)備好測試真實(shí)的設(shè)備。 電話特性的一個最簡單的例子是在應(yīng)用程序中建立語音通話。因?yàn)槲覀冇须S著Smartphone一起發(fā)布的輔助TAPI,只需要一行代碼。所有需要作的是在代碼中包含astdtapi.h文件,在連接程序設(shè)置中添加cellcore.lib,并調(diào)用tapiRequestMakeCall函數(shù): TCHAR szDefaultNum = TEXT(+1 (555) 555-5555);LONG lResult;lResult = tapiRequestMakeCall(LPTSTR) szDefaultNum, NULL, NULL, NULL);return TRUE; 發(fā)送SMS消息也很簡單。有了輔助TAPI,你只需要在代碼中添加一個文件引用(sms.h),在連接程序設(shè)置中添加一個庫(sms.lib)。發(fā)送或者接收消息的第一步是調(diào)用SmsOpen函數(shù),下一步初始化源和目的地址,完成后調(diào)用SmsSendMessage函數(shù)。最后一步是調(diào)用SmsClose函數(shù)清除建立的SMS_HANDLE。代碼見圖5。 SMS_HANDLE smshHandle;SMS_ADDRESS smsaSource;SMS_ADDRESS smsaDestination;TEXT_PROVIDER_SPECIFIC_DATA tpsd;SMS_MESSAGE_ID smsmidMessageID;/嘗試打開一個SMS句柄if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL) MessageBox(NULL,LCall to SmsOpen failed.,LError,MB_OK | MB_ICONERROR); return;/建立源地址if(!bUseDefaultSMSC) smsaSource.smsatAddressType = SMS
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 線上線下彩票業(yè)務(wù)合作框架協(xié)議
- 草牧場承包權(quán)流轉(zhuǎn)與農(nóng)業(yè)可持續(xù)發(fā)展合作協(xié)議
- 食品流通市場承包權(quán)轉(zhuǎn)讓合同范本
- 外債融資擔(dān)保機(jī)構(gòu)合作協(xié)議范本
- 樁基露筋防腐處理技術(shù)專題
- 預(yù)應(yīng)力孔道智能壓漿監(jiān)控
- 中職學(xué)校教師培訓(xùn)
- 濱水帶施工合同定交底
- 智慧用電服務(wù)體系建設(shè)方案智慧電能服務(wù)體系建設(shè)方案
- 智慧醫(yī)院節(jié)能監(jiān)管平臺建設(shè)方案節(jié)約型醫(yī)院實(shí)施方案
- 五年級下學(xué)期科學(xué)立體小菜園課件
- 2019級藥劑專業(yè)人才培養(yǎng)方案(中職)
- 2024年河北石家莊市市屬國企業(yè)春季面向社會公開招聘282人易考易錯模擬試題(共500題)試卷后附參考答案
- 旅游集散中心建設(shè)設(shè)計(jì)方案
- 國家開放大學(xué)??啤度宋挠⒄Z1》一平臺機(jī)考真題及答案(第二套)
- 承德市承德縣六年級下冊數(shù)學(xué)期末測試卷匯編
- 北京朝陽區(qū)2024年八年級物理第二學(xué)期期末綜合測試試題及答案解析
- 服務(wù)標(biāo)準(zhǔn)化指標(biāo)的量化與評價
- 維修結(jié)算單完整版本
- (正式版)JBT 14790-2024 往復(fù)式內(nèi)燃機(jī)曲軸轉(zhuǎn)角 信號盤
- 勘察設(shè)計(jì)工作量及計(jì)劃安排方案
評論
0/150
提交評論