




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEPAGE30目錄TOC\o"1-2"\h\z\u1前言 12需求分析 22.1任務和要求 22.2應實現的功能 22.3界面及控件變量 23分析和設計 43.1系統分析及設計思路 43.2主要控件的功能 123.3程序流程圖 134具體代碼實現 155課程設計總結 245.1程序運行結果或預期運行結果 245.2設計結論 29參考文獻 30致謝 30
1前言FTP是互聯網發展早期最為主流的應用。近年來隨著校園寬帶的普及,FTP主要用在國內各大專院校的校園網,供高校師生共享學習、娛樂資源。同時,它也是很多企業內部員工在工作中交換文件的主要方式。FTP是文件傳輸協議,服務器中存有大量的共享軟件和免費資源,要想從服務器中把文件傳送到客戶機上或者把客戶機上的資源傳送至服務器,就必須在兩臺機器中進行文件傳送,此時雙方必須要共同遵守一定的規則。FTP就是用來在客戶機和服務器之間實現文件傳輸的標準協議。它使用客戶/服務器(C/S)模式,客戶程序把客戶的請求告訴服務器,并將服務器發回的結果顯示出來。而服務器端執行真正的工作,比如存儲和發送文件。本次課程設計采用FTP站點服務,大多數站點提供匿名FTP服務,即這些站點允許任何一個用戶免費登錄到它們的機器上,并從其上復制文件。這類服務器的目的就是想社會公眾提供免費的文件拷貝服務,因此,它不要求用戶事先在該服務器進行注冊。與這類“匿名”FTP服務器建立連接時,用戶名一般是anonymous,而口令可以使用任意字符串,一種比較常用的是使用你的電子郵件地址作為口令。但這個口令既不進行校驗,也不是強制的。另外,為了開發FTP客戶端程序,微軟的MFC類庫提供了專門的Win32Internet擴展接口,即WinInet。WinInet提供了Internet會話類CInternetSession、Internet連接類CInternetConnection、Internet文件類CInternetFile、Internet文件操作類CFileFind、Internet通用異常類CInternetException等類。WinInet為HTTP、FTP和Gopher提供了統一的函數集,用戶使用這些類可以大大簡化針對FTP等協議的編程,特別是客戶端的編程。如果用戶要將一個文件從自己的計算機上發送到另一臺計算機上,稱為是FTP的上傳,而更多的情況是用戶從服務器上把文件或資源傳送到客戶機上,稱之為FTP的下載。FTP客戶與服務器之間將在內部建立兩條TCP連接:一條是控制連接,主要用于傳輸命令和參數;另一條是數據連接,主要用于傳送文件。2需求分析2.1任務和要求掌握FTP協議的工作原理,首先配置一個FTP網站,然后運用WinInet類制作FTP上傳下載器,訪問FTP網站的文件,并實現上傳、下載、刪除文件的功能。2.2應實現的功能FTP上傳與下載器的制作實現了FTP文件傳輸協議,使用MFCWinInet開發。其功能是比較完善的,主要有以下幾點:(1)可以連接到由用戶指定IP和端口的FTP服務器,用戶也可以隨時與服務器斷開,支持匿名的登錄。(2)在右區資源瀏覽器中可以如在本地計算機上一樣查看FTP上的資源,并可以自由的進入、退出服務器系統的文件夾,切換目錄。(3)用戶可以借助這款軟件實現對服務器上資源的基本操作,包括上傳和下載文件,以及刪除服務器上的文件。2.3界面及控件變量(1)客戶端界面創建MFC工程,工程名為MYFTP(自己制作的FTP客戶端)。這個工程采用傳統的對話框類型。因為WinInet封裝了Socket使用了FTP協議與服務器通信的詳細細節,就不需要用戶自己編寫Socket程序了,所以在向導的“步驟2”也不需要勾選“WindowsSockets”復選框。工程建立好后,設計軟件界面如圖2.1所示。圖2.1FTP客戶端界面客戶端界面布置要點:第一,其中三個文本編輯框,分別用于輸入FTP服務器的IP地址、連接端口和登陸密碼。第二,一個列表框,用來顯示FTP服務器當前目錄的內容,并允許客戶從中選擇文件下載,或者上傳文件到服務器中。第三,八個命令按鈕分別執行上傳、下載、刪除、進入、返回和退出的功能。(2)FTP上傳下載器界面的控件變量如下表2.1控件ControlValueIP控件ServerIP-“端口”文本框m_portstrport“用戶名”文本框m_usrstrusr“密碼”文本框m_pwdstrpwd“匿名”復選框m_noname“資源瀏覽器”列表框m_lst“連接”按鈕m_connect“斷開”按鈕m_disconnect“上傳”按紐m_upload“下載”按鈕m_download“刪除”按鈕m_delete“進入”按鈕m_enterdir“返回”按鈕m_goback“退出”按鈕m_exit表2.1控件變量3分析和設計3.1系統分析及設計思路3.1.1系統開發背景FTP(FileTransferProtocol)文件傳輸協議是Internet上最早出現的,同時也是應用最廣泛的,直到今天它仍是最重要和最基本的應用之一。FTP提供交互式訪問,允許客戶指明文件類型與格式;同時FTP屏蔽了各種計算機系統的細節,因而適合在異構網中任意計算機之間傳輸文件。隨著網絡的普及,越來越多局域網的出現,用FTP將信息下載到本地是一件非常普遍的事情,也隨之出現了許多FTP下載軟件。由于FTP操作簡單實用,開放性強,且能充分利用Internet來進行信息傳遞與交流,所以目前越來越多的FTP服務器連入Internet,這樣越來越多的資源就可以通過匿名FTP來獲得。據不完全統計全世界現在已有數千個FTP文件服務器對所有Internet用戶開放使用,用戶可以通過與Internet相連到遠程計算機,把自己需要的文件傳輸過來或是把自己的收集傳輸上去與他人共享。傳統的應用系統采用的是客戶機/服務器(Client/Server)模式,有高度的交互性,有高效的用戶界面等優點。3.1.2系統研究意義隨著網絡技術的發展和因特網應用的普及,互聯網已成為人們獲取信息的重要來源。互聯網的一大特點是實現信息共享,而文件傳輸是信息共享的重要內容之一。首先,FTP充分體現了互聯網的共享性和開放性,對其進一步研究,有利于實現互聯網資源的共享與充分利用,加速信息的傳遞與交流。其次,FTP客戶端軟件的實現有助于進一步熟悉VisualStudio.NET開發環境,掌握一定的Windows開發應用程序技術,同時也有助于提高自己的編程能力和熟悉FTP的工作過程。最后,制作一個界面友好、快速、穩定的FTP客戶端下載軟件,對信息的快速共享起著一定的作用。這樣讓用戶能第一時間和別人共同分享信息資源。3.1.3FTP的工作原理FTP(FileTransferProtocol,文件傳輸系統)是Internet上使用非常廣泛的一種通信協議(屬于TCP/IP),它是由支持Internet文件傳輸的各種規則組成,這些規則使Internet用戶可以把文件從一個主機拷貝到另一個主機上。FTP支持多種文件類型和文件格式,包括ASCII文件和二進制文件。下面將從FTP連接,FTP數據處理,FTP命令及響應三個方面來介紹FTP工作原理(1)FTP連接FTP使用兩條TCP連接來完成文件傳輸:控制連接和數據連接。控制連接用于傳輸控制,數據連接用于數據傳輸。在服務器啟動后,服務器就會在端口21等待客戶的連接請求,有用戶需要傳輸文件時候,客戶與服務器的端口21建立一個控制連接,用來傳送客戶的命令和服務器的應答,該連接一直保持到客戶與服務器通信結束為止。當客戶發出數據傳輸命令時候,服務器會主動與客戶建立數據連接,并與進行數據交換。客戶端用戶并不是直接處理控制連接上的FTP命令和FTP響應,而是由兩個協議解釋器進行處理。用戶接口為客戶端用戶提供一定形式的輸入界面,接收用戶的命令,將其轉換成標準的FTP命令,最終將控制連接上的FTP響應轉換成用戶可以理解的方式。(2)FTP數據處理FTP協議規范中提供了多種用于文件控制的傳輸和存儲方式,主要包括:1)文件類型處理:ASCII文件類型,EBCDIC文件類型,圖象文件類型,本地文件類型2)格式控制:格式控制只能應用于ASCII文件和EBCDIC文件類型,有非打印格式控制,TELNET格式控制以及FORTRAN格式控制三種,其中默認為非打印格式控制,該格式控制下,文件不包括任何格式信息。3)結構:結構分文件結構,記錄結構和頁結構三種。默認為文件結構,即將文件看成是一個連續的字節流,沒有內部結構。記錄結構可勇于文本文件。頁結構中,每一個頁都有一個頁號,允許接收者以及任意的順序存儲頁。4)傳輸模式:傳輸模式用于說明文件是如何在數據連接上進行傳輸的。主要有以下兩類:流模式:將文件當作一個字節流來傳輸。塊模式:將文件當作一系列的數據塊來傳輸。(3)FTP命令以及響應在控制連接上,FTP命令以及響應都是以NVTASCII格式進行傳輸的,并且每一行用CR和LF作為結束。一般來說,FTP命令是由3到4個字節大寫ASCII字符組成的,其中有一些命令有參數。一般的FTP響應是以3個ASCII數字作為前導,其后跟相應的消息,其中2~3位數字相應消息由客戶程序進行分析處理,后面的消息是提供給客戶閱讀的。(4)FTP登錄實際上存在兩種FTP登錄方式:一種是匿名的,之所以稱之為匿名的是因為任何人都可以訪問它。該站點允許那些使用Anonymous用戶名以及E-MAIL地址作為密碼的用戶訪問它.在匿名登錄的方式下,一些訪問類型受到了限制,如大多數站點允許下載,但是不允許匿名用戶上傳資料;另一種是非匿名的,這是需要一個合法的用戶名和密碼.用戶和密碼通常是系統管理員或者ISP尤其是所有者提供的.如果沒有用戶名和密碼,將會被拒絕訪問。3.1.4FTP網絡環境搭建和使用(1)安裝FTP服務器組件第一步:依次進入控制面板->程序和功能->打開或關閉windows功能,如圖3.1所示。圖3.1打開或關閉windows功能第二步:控制面板–>管理工具->打開Internet信息服務(IIS)管理器->右擊”網站”->添加FTP網站,如圖3.2所示。圖3.2添加FTP站點第三步:進入“添加FTP站點”,添加站點信息,填寫FTP站點名稱,選擇物理路徑的目錄,綁定IP地址和端口號,如圖3.3、圖3.4所示:圖3.3添加站點信息圖3.4綁定和SSL設置第四步:進行身份驗證和授權信息,身份驗證勾選“匿名”和“基本”,授權“所有用戶”允許訪問,權限為“讀取”、“寫入”,如圖3.5所示:圖3.5身份驗證和授權信息第五步:測試FTP服務網站是否成功,在瀏覽器的地址欄中鍵入57是否能打開,如圖3.6所示:圖3.6測試FTP服務網站是否成功3.1.5制作FTP上傳下載器1、利用了Windows操作系統提供的制用FTP網站的功能,利用了WinInet類中的三個類:(1)CInternetSession類直接繼承自CObject類,該類用來建立與某個Internet服務器的會話。它的重要成員函數:GetFtpConnection:打開一個FTP會話并進行連接。GetHttpConnection:打開一個HTTP服務器并進行連接。Close:關閉連接。(2)CFtpConnection類:用于管理和與FTP服務器的連接,可以對服務器中的文件與目錄直接進行操作。成員函數:PutFile():上傳文件GetFile():下載文件Remove():刪除文件(3)CFtpFileFind類:為在FTP服務器上進行文件檢索提供支持。成員函數:FindFile():查找指定文件名的文件FindNextFile():查找下一個文件GetFileName():獲取找到的文件名GetFilePath():獲取找到的文件路徑。2、制作FTP上傳下載器的步驟定義:CInternetSession*pInternetSession;CFtpConnection*pFtpConnection;第一步:創建一個CInternetSession對象pInternetSession=newCInternetSession(“MR”,INTERNET_OPEN_TYPE_PRECONFIG);第二步:利用第一步創建對象的成員函數建立CFtpConnection對象pFtpConnection=pInternetSession->GetFtpConnection(ip,usrname,pwd,port);第三步:建立CFtpFileFind對象與FTP連接關聯CFtpFileFindftpfind(pFtpConnection);第四步:調用CFtpFileFind類的成員函數來查看FTP服務器上的文件,調用CFtpConnection類的成員函數來實現上傳、下載、刪除文件。3.2主要控件的功能下表為FTP客戶端程序主要控件的控件類型、控件ID和控件功能:控件類型控件ID控件功能命令按鈕ButtonIDC_BUTTON1連接FTP服務器命令按鈕ButtonIDC_BUTTON2斷開FTP服務器命令按鈕ButtonIDC_BUTTON3上傳FTP資源命令按鈕ButtonIDC_BUTTON4下載FTP資源命令按鈕ButtonIDC_BUTTON5刪除FTP資源命令按鈕ButtonIDC_BUTTON6進入選中目錄文件夾命令按鈕ButtonIDC_BUTTON7返回上一級目錄復選框CheckIDC_CHECK1“匿名”復選框編輯框EditIDC_EDIT1輸入端口號(control)編輯框EditIDC_EDIT1輸入端口號(value)編輯框EditIDC_EDIT2輸入用戶名(control)編輯框EditIDC_EDIT2輸入用戶名(value)編輯框EditIDC_EDIT3輸入登錄密碼(control)編輯框EditIDC_EDIT3輸入登錄密碼(value)編輯框EditIDC_EDIT4選中資源瀏覽器文件操作IP地址框IDC_IPADDRESS1輸入IP地址列表框ListIDC_LIST1顯示文件目錄命令按鈕ButtonIDCANCEL退出3.3程序流程圖3.3.1FTP的工作原理圖3.3.1FTP模型示意圖圖3.3.2客戶端連接到服務器端圖3.3.3客戶端登陸FTP服務器圖3.3.4客戶端在FTP服務器下載文件圖3.3.5客戶端從FTP服務器退出4具體代碼實現在MYFTPDlg.h文件的前部包含頭文件#include“afxinet.h”在MYFTPDlg.h文件的類定義中添加如下成員函數的聲明BOOLbconnect;CInternetSession*pInternetSession;CFtpConnection*pFtpConnection;voidConnectFtp();//連接功能的成員函數聲明voidUpdateDir();//目錄操作成員函數聲明添加復選框按鈕”匿名”的成員函數代碼inticheck=m_noname.GetCheck();//獲得”匿名”復選框的選擇狀態if(icheck==1)//icheck==1表示用戶選中”匿名”復選框{ m_usr.EnableWindow(false); m_pwd.EnableWindow(false); m_usr.SetWindowTextA("anonymous");//用戶名自動設置為默認的”anonymous” m_pwd.SetWindowTextA(""); UpdateData(true); if(!ServerIP.IsBlank()&&!strport.IsEmpty()) { m_connect.EnableWindow(true);//”連接”按鈕變為可用 }}Else//如果用戶沒有按照要求輸入,則不能連接{ m_usr.EnableWindow(true); m_pwd.EnableWindow(true); m_usr.SetWindowTextA(""); m_pwd.SetWindowTextA(""); m_connect.EnableWindow(false);//”連接”按鈕不可用,不允許用戶繼續操作}在MYFTPDlg.cpp中添加兩個成員函數的實現:ConnectFtp()和UpdateDir().voidCMYFTPDlg::ConnectFtp(){BYTEnFild[4]; UpdateData(true); ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]); CStringsip; sip.Format("%d.%d.%d.%d",nFild[0],nFild[1],nFild[2],nFild[3]); if(sip.IsEmpty()) { AfxMessageBox("請指定IP地址!"); return; } if(strport.IsEmpty()) { AfxMessageBox("請指定連接端口!"); return; } if(strusr.IsEmpty()) return;//建立一個Internet會話 pInternetSession=newCInternetSession("MR",INTERNET_OPEN_TYPE_PRECONFIG); try {//利用Internet會話對象pInternetSession打開一個FTP連接 pFtpConnection=pInternetSession->GetFtpConnection(sip,strusr,strpwd,atoi(strport)); bconnect=true; }catch(CInternetException*pEx) { TCHARszErr[1024]; pEx->GetErrorMessage(szErr,1024); AfxMessageBox(szErr); pEx->Delete(); }}//連接voidCMYFTPDlg::UpdateDir(){m_lst.ResetContent();//讀寫服務器中的數據,必須創建一個CFtpFileFind的實例 CFtpFileFindftpfind(pFtpConnection);//找到第一個文件,通過CFtpFileFind::FindFile實現 BOOLbfind=ftpfind.FindFile(NULL); while(bfind) { bfind=ftpfind.FindNextFile(); CStringstrpath; if(!ftpfind.IsDirectory())//判斷是目錄(文件夾)還是文件 { strpath=ftpfind.GetFileName();//若是文件則獲取文件名 m_lst.InsertString(-1,strpath); } else { strpath=ftpfind.GetFilePath();//若是文件夾則獲取相對路徑 m_lst.InsertString(-1,strpath); } }}//目錄操作“連接”、“斷開”、“上傳”、“下載”、“刪除”、“進入”、“返回”的成員函數的代碼如下:voidCMYFTPDlg::OnButton1()//連接按鈕的事件過程{ //TODO:Addyourcontrolnotificationhandlercodehere this->ConnectFtp();//連接FTP服務器 this->UpdateDir();//顯示服務器上的目錄和文件夾列表 ServerIP.EnableWindow(false); m_port.EnableWindow(false); m_connect.EnableWindow(false); m_disconnect.EnableWindow(true); m_enterdir.EnableWindow(true); m_upload.EnableWindow(true); m_download.EnableWindow(true); m_delete.EnableWindow(true); m_noname.EnableWindow(false); m_exit.EnableWindow(false);}voidCMYFTPDlg::OnButton2()//斷開按鈕的事件過程{ //TODO:Addyourcontrolnotificationhandlercodehere pInternetSession->Close();//結束會話 m_lst.ResetContent(); m_lst.InsertString(-1,"連接已斷開!"); ServerIP.EnableWindow(true); m_port.EnableWindow(true); m_connect.EnableWindow(true); m_disconnect.EnableWindow(false); m_enterdir.EnableWindow(false); m_goback.EnableWindow(false); m_upload.EnableWindow(false); m_download.EnableWindow(false); m_delete.EnableWindow(false); m_noname.EnableWindow(true); m_exit.EnableWindow(true);}voidCMYFTPDlg::OnButton3()//上傳按鈕事件的過程{ //TODO:Addyourcontrolnotificationhandlercodehere CStringstr; CStringstrname;//彈開“打開”對話框 CFileDialogfile(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"所有文件(*.*)|*.*|",this); if(file.DoModal()==IDOK) { str=file.GetPathName(); strname=file.GetFileName(); } if(bconnect) { CStringstrdir; pFtpConnection->GetCurrentDirectory(strdir);//上傳文件 BOOLbput=pFtpConnection->PutFile((LPCTSTR)str,(LPCTSTR)strname); if(bput) { pInternetSession->Close();//關閉廢棄的會話 this->ConnectFtp();//保持持續會話 pFtpConnection->SetCurrentDirectory(strdir); this->UpdateDir();//更新目錄列表 AfxMessageBox("上傳成功!"); } }}voidCMYFTPDlg::OnButton4()//下載按鈕事件過程{ //TODO:Addyourcontrolnotificationhandlercodehere CStringselfile; m_lst.GetText(m_lst.GetCurSel(),selfile);//獲知用戶選擇要下載的資源名 if(!selfile.IsEmpty()) {//彈出“另存為”對話框 CFileDialogfile(false,NULL,selfile,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"所有文件(*.*)|*.*|",this); if(file.DoModal()==IDOK) { CStringstrname; strname=file.GetFileName(); CStringstrdir; pFtpConnection->GetCurrentDirectory(strdir); pFtpConnection->GetFile(selfile,strname);//下載文件到選定的本地位置 pInternetSession->Close();//關閉廢棄的會話 this->ConnectFtp();//保持持續會話 AfxMessageBox("下載成功!"); } }}voidCMYFTPDlg::OnButton5()//刪除按鈕事件過程{ //TODO:Addyourcontrolnotificationhandlercodehere CStringselfile; m_lst.GetText(m_lst.GetCurSel(),selfile);//獲取用戶要刪除的資源名 if(!selfile.IsEmpty()) { if(AfxMessageBox("您真的要刪除這個文件嗎?",4+48)==6) { pFtpConnection->Remove(selfile);//一旦用戶確認,則刪除該文件 } CStringstrdir; pFtpConnection->GetCurrentDirectory(strdir); pInternetSession->Close();//關閉廢棄的會話 this->ConnectFtp();//保持持續會話 pFtpConnection->SetCurrentDirectory(strdir); this->UpdateData();//更新目錄列表 }}voidCMYFTPDlg::OnButton6()//進入按鈕事件過程{ //TODO:Addyourcontrolnotificationhandlercodehere CStringselfile; m_lst.GetText(m_lst.GetCurSel(),selfile);//獲取用戶選擇的目錄名 if(!selfile.IsEmpty()) { pInternetSession->Close();//及時關閉廢棄的會話句柄 this->ConnectFtp();//重新連接,保持與服務器的持續會話 CStringstrdir; pFtpConnection->GetCurrentDirectory(strdir);//獲得原來的工作目錄 strdir+=selfile;//生成新目錄 pFtpConnection->GetCurrentDirectory(strdir);//改變目錄到當前服務器目錄 this->UpdateDir();//更新目錄列表 m_goback.EnableWindow(true); }}voidCMYFTPDlg::OnButton7()//返回按鈕事件過程{ //TODO:Addyourcontrolnotificationhandlercodehere CStringstrdir; pFtpConnection->GetCurrentDirectory(strdir); intpos; pos=strdir.ReverseFind('/');//用字符串截取的方式獲得上級目錄 strdir=strdir.Left(pos); pInternetSession->Close();//關閉廢棄的會話 this->ConnectFtp();//重新連接,保持持續會話 pFtpConnection->SetCurrentDirectory(strdir); this->UpdateDir();//更新目錄列表}voidCMYFTPDlg::OnCheck1()//復選框按鈕事件過程{ //TODO:Addyourcontrolnotificationhandlercodehere inticheck=m_noname.GetCheck();//獲得“匿名”復選框的選擇狀態 if(icheck==1)//icheck==1表示用戶選中“匿名”復選框 { m_usr.EnableWindow(false); m_pwd.EnableWindow(false); m_usr.SetWindowTextA("anonymous");//用戶名自動設置為默認的“anonymous” m_pwd.SetWindowTextA(""); UpdateData(true); if(!ServerIP.IsBlank()&&!strport.IsEmpty()) { m_connect.EnableWindow
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025別墅裝修合同范本
- 2025園林綠化養護合同
- 2025國內貿易合同模板
- 2025標準土地租用協議合同
- 湖南省婁底市部分學校2024-2025學年高一下學期4月期中英語試卷(圖片版)
- 畫冊平面設計合同協議
- 玻璃瓶定制合同協議
- 環保渣土車出售合同協議
- 瓦工砌墻清包合同協議
- 生病解除勞動合同協議
- 小學四年級下學期英語閱讀理解
- 房地產廣告圍擋施工投標文件范本
- 彩色手繪卡通兒科小兒護理高熱驚厥健康宣教教案PPT課件講義
- 食品添加劑、食品污染物的本底與轉化來源
- DB43∕T 498-2009 博落回葉-行業標準
- 大慶油田第五采油廠杏四聚聯合站工程轉油放水站二期工程施工組織設計
- 心力衰竭病人的護理查房pptppt(ppt)課件
- 大年初一沒下雪 短文小說
- 中小學生守則ppt課件(18頁PPT)
- 應急物資領用(返還)登記表
- 二次函數的應用——橋洞問題
評論
0/150
提交評論