版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、重慶科技學(xué)院課程設(shè)計(jì)成果 院(系):_電氣與信息工程學(xué)院_ 班 級: 計(jì)科普0802 學(xué)生姓名: 學(xué) 號: 設(shè)計(jì)地點(diǎn)(單位)_ _i315 _ _設(shè)計(jì)題目:_ 聊天程序設(shè)計(jì)_ _ 完成日期: 2011 年 9 月 5 日 指導(dǎo)教師評語: _ 成績(五級記分制):_ _ 教師簽名:_摘要嵌入式linux在電子行業(yè)的應(yīng)用很廣泛,學(xué)習(xí)嵌入式linux顯得非常重要。這次課程設(shè)計(jì)的主要目的是檢驗(yàn)上學(xué)期學(xué)習(xí)linux后的效果。通過基礎(chǔ)題的代碼編寫,熟悉linux c語言編程技巧。通過完成聊天程序的設(shè)計(jì),熟悉linux底層編程。利用qt設(shè)計(jì)界面,縮短開發(fā)時(shí)間。關(guān)鍵字:嵌入式linux;基礎(chǔ)題;聊天程序;qt
2、 目 錄課程設(shè)計(jì)任務(wù)書- 4 -題目一 基礎(chǔ)題- 6 -1 設(shè)計(jì)內(nèi)容及要求- 6 -1.1 二小題- 6 -1.2三小題- 6 -1.3四小題- 7 -1.3五小題- 9 -1.4六小題- 11 -1.5七小題- 11 -1.6八小題- 13 -題目二 聊天程序設(shè)計(jì)- 15 -1設(shè)計(jì)內(nèi)容及要求- 15 -1.1 聊天程序的基本要求- 15 -1.2 需實(shí)現(xiàn)的主要功能- 15 -2需求分析- 15 -2.1 qt設(shè)計(jì)- 15 -2.2服務(wù)器端和客戶端的數(shù)據(jù)傳輸方式- 16 -2.3 服務(wù)器端功能設(shè)計(jì)- 16 -2.4客戶端功能設(shè)計(jì)- 17 -3總體設(shè)計(jì)- 17 -3.1 總體功能- 17 -4.
3、 詳細(xì)設(shè)計(jì)- 17 -4.1 功能分析和描述- 17 -4.2 客戶端功能模塊- 17 -4.3 服務(wù)器功能模塊- 19 -5. 代碼實(shí)現(xiàn)- 20 -5.1 客戶端代碼- 20 -5.2 服務(wù)器端代碼- 22 -6功能實(shí)現(xiàn)- 23 -7總結(jié)- 23 -8致謝- 23 -9參考文獻(xiàn)- 23 -課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:基礎(chǔ)題目學(xué)生姓名莊桐泉課程名稱嵌入式linux課程設(shè)計(jì)專業(yè)班級計(jì)科普2008地 點(diǎn)i315起止時(shí)間2011-8-29至2011-9-9設(shè)計(jì)內(nèi)容及要求 gcc編譯器的使用,linux系統(tǒng)c程序設(shè)計(jì)編譯、調(diào)試方法1、 編寫程序?qū)?shù)組內(nèi)容倒置a=”123456789”。2、 利用指針將數(shù)據(jù)
4、a的內(nèi)容復(fù)制到數(shù)據(jù)b。3、 創(chuàng)建兩線程,通過打印輸出各自線程號和打印次序,要求從打印結(jié)果看出兩個(gè)線程是并發(fā)執(zhí)行的。4、 創(chuàng)建兩線程,a線程通過消息隊(duì)列發(fā)消息,b線程收到后在屏幕打印輸出,要求兩線程個(gè)打印出線程號和消息內(nèi)容。5、 創(chuàng)建兩線程,a線程循環(huán)打印數(shù)組a100,b線程循環(huán)將數(shù)組成員+1,要求利用互斥鎖,使每次輸出a0=a99.6、 創(chuàng)建兩線程,a線程每2秒打印一次字母a,b線程每秒打印一次字母b,要求利用同步信號量,使輸出字母b總是在a之后。8、通過makefile,將project中的一個(gè).c編譯成.a,另一個(gè).c調(diào)用.a的函數(shù),要求實(shí)現(xiàn)靜態(tài)庫的生成和調(diào)用,運(yùn)行結(jié)果正確。設(shè)計(jì)參數(shù)進(jìn)度要
5、求第一周之內(nèi)完成參考資料1、嵌入式linux應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程.人民郵電出版社。華清遠(yuǎn)見嵌入式培訓(xùn)中心。2010.72、zlg armmagic2410實(shí)驗(yàn)指導(dǎo)、資料。其它設(shè)計(jì)題目:聊天程序設(shè)計(jì)學(xué)生姓名莊桐泉課程名稱嵌入式linux課程設(shè)計(jì)專業(yè)班級計(jì)科普2008地 點(diǎn)i315起止時(shí)間2011-8-29至2011-9-9設(shè)計(jì)內(nèi)容及要求 1、在qt(或minigui)編寫聊天程序,交叉編譯后下載到目標(biāo)機(jī),可實(shí)現(xiàn)兩臺(tái)目標(biāo)機(jī)可發(fā)送文本聊天2、qt(或minigui)界面設(shè)計(jì)至少包括“發(fā)送”,“重置”兩個(gè)按鈕,要求必須把目標(biāo)機(jī)的硬件鍵盤映射到qt設(shè)計(jì)的軟件界面中,實(shí)現(xiàn)軟件按鈕的功能。選作:發(fā)送文件。設(shè)
6、計(jì)參數(shù)進(jìn)度要求做完基礎(chǔ)題目之后開始做本題目。參考資料1、嵌入式linux應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程.人民郵電出版社。華清遠(yuǎn)見嵌入式培訓(xùn)中心。2010.72、zlg armmagic2410實(shí)驗(yàn)指導(dǎo)、資料。其它說明.本表應(yīng)在每次實(shí)施前一周由負(fù)責(zé)教師填寫二份,學(xué)院審批后交學(xué)院教務(wù)辦備案,一份由負(fù)責(zé)教師留用。.若填寫內(nèi)容較多可另紙附后。3.一題多名學(xué)生共用的,在設(shè)計(jì)內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。系主任: 指導(dǎo)教師: 2011年 9 月 5 日題目一 基礎(chǔ)題1 設(shè)計(jì)內(nèi)容及要求1.1 二小題(1) 編寫程序?qū)?shù)組內(nèi)容倒置a=”123456789”。(2) 程序代碼實(shí)現(xiàn)如下:char a=012345678
7、9; char tmp;int i = 0,j = 0;for(i = 0,j = strlen(a)-1;i=strlen(a)/2-1;i+,j-) tmp = ai; ai = aj; aj = tmp;for(i = 0;istrlen(a);i+) printf(%c,ai);printf(n);(3)程序分析:定義數(shù)組數(shù)組內(nèi)容倒置輸出倒置后數(shù)組內(nèi)容(4)程序執(zhí)行效果如下:1.2三小題(1)利用指針將數(shù)據(jù)a的內(nèi)容復(fù)制到數(shù)據(jù)b。(2)程序代碼實(shí)現(xiàn)如下:char a = abcd;char b =1234; int i = 0;char *tmp; tmp = a; for(i = 0;
8、istrlen(a);i+) bi = *tmp+;for(i = 0;istrlen(a);i+) printf(%c,bi);printf(n);(3)程序分析:定義數(shù)組定義指針指針指向數(shù)組a移動(dòng)指針拷貝數(shù)字到b中顯示拷貝后的數(shù)組(4)程序執(zhí)行效果如下: 1.3四小題(1)創(chuàng)建兩線程,通過打印輸出各自線程號和打印次序,要求從打印結(jié)果看出兩個(gè)線程是并發(fā)執(zhí)行的。(2)程序代碼如下:#define thread_number2#define repeat_number5#define delay_time_levels10.0void * thrd_func(void *arg) int thr
9、d_num = (int)arg;int delay_time = 0;int count = 0;printf(thread %d is startingn, thrd_num);for (count = 0; count repeat_number; count+)delay_time = (int)(rand() * delay_time_levels/(rand_max) + 1;sleep(delay_time); printf(tthread %d: job %d delay = %dn, thrd_num, count, delay_time);printf(thread %d
10、finishedn, thrd_num);pthread_exit(null); int main(void)pthread_t threadthread_number;int no = 0, res;void * thrd_ret;for (no = 0; no thread_number; no+) res = pthread_create(&threadno, null, thrd_func, (void*)no);for (no = 0; no msg_text); pthread_exit(null); void * thrd_func1(void *arg) int thrd_nu
11、m = (int)arg;printf(thread %d is startingn, thrd_num);/*讀取消息隊(duì)列*/msgrcv(qid, &msg, bufsz, getpid(), 0); printf(recv the message is:%sn,(&msg)-msg_text);pthread_exit(null);void *(*const functhread_number)(void *)=thrd_func0,thrd_func1;int main(void)pthread_t threadthread_number;int no = 0, res;void *
12、thrd_ret;key_t key;int len; key = ftok(., a); qid = msgget(key,ipc_creat|0666); for (no = 0; no thread_number; no+)res = pthread_create(&threadno, null, funcno, (void*)no);for (no = 0; no thread_number; no+) res = pthread_join(threadno, &thrd_ret); (msgctl(qid, ipc_rmid, null); return 0; (3) 代碼分析如下:
13、該程序?qū)崿F(xiàn)了使用消息隊(duì)列進(jìn)行線程之間的通信,包括消息隊(duì)列的創(chuàng)建、消息發(fā)送和讀取、消息隊(duì)列的撤銷和刪除等操作。 定義消息隊(duì)列消息結(jié)構(gòu)體 創(chuàng)建線程0,用于消息隊(duì)列發(fā)送消息 添加消息到消息隊(duì)列 退出線程 創(chuàng)建線程1,用于消息隊(duì)列讀取消息 讀取消息隊(duì)列 根據(jù)不同的路徑和關(guān)鍵表示產(chǎn)生標(biāo)準(zhǔn)的key 創(chuàng)建消息隊(duì)列 等待線程 從系統(tǒng)內(nèi)核中移走消息隊(duì)列 (4)程序執(zhí)行效果如下: 1.4六小題(1)創(chuàng)建兩線程,a線程循環(huán)打印數(shù)組a100,b線程循環(huán)將數(shù)組成員+1,要求利用互斥鎖,使每次輸出a0=a99.(2)程序源代碼如下:(3)程序分析如下:1.5七小題(1)創(chuàng)建兩線程,a線程每2秒打印一次字母a,b線程每秒打
14、印一次字母b,要求利用同步信號量,使輸出字母b總是在a之后。 (2)程序代碼如下:#define thread_number 2sem_t semthread_number;void * thrd_func0(void *arg) /a arg = arg;while(1) printf(an); sem_post(&sem1); sleep(2); pthread_exit(null); void * thrd_func1(void *arg) /b arg = arg;while(1) sem_wait(&sem1); printf(bn); sleep(1); pthread_exit(
15、null);void *(*const functhread_number)(void *)=thrd_func0,thrd_func1;int main(void)pthread_t threadthread_number;int no = 0, res;void * thrd_ret;for (no = 0; no thread_number; no+) res = pthread_create(&threadno, null, funcno, (void*)no);printf(create thread successn waiting for threads to finish.n)
16、;for (no = 0; no thread_number; no+) sem_destroy(&semno);return 0; (3)程序分析如下: 程序創(chuàng)建兩線程,實(shí)現(xiàn)a線程每2秒打印一次字母a,b線程每秒打印一次字母b,利用同步信號量,使輸出字母b總是在a之后。 創(chuàng)建線程0執(zhí)行函數(shù),用于打印字符a 打印字符a 對信號量1進(jìn)行v操作 延時(shí)2s 退出線程 創(chuàng)建線程1執(zhí)行函數(shù),用于打印字符b 對信號量1進(jìn)行p操作 打印字符b 延時(shí)1s 創(chuàng)建線程(4)程序執(zhí)行效果如下:1.6八小題 (1)通過makefile將project中的一個(gè).c編譯成.a,另一個(gè).c調(diào)用.a的函數(shù),要求實(shí)現(xiàn)靜態(tài)庫的生
17、成和調(diào)用,運(yùn)行結(jié)果正確。 (2)編寫靜態(tài)庫程序thread.c如下:#include void pf1(void) printf(*n); return;void pf2(void) printf(#n); return;該程序定義兩個(gè)函數(shù),分別打印不同的內(nèi)容,該程序?qū)⒈痪幾g成.a靜態(tài)庫編寫調(diào)用程序call.c如下:extern void pf1(void);extern void pf2(void);int main(void) pf1(); pf2(); return 0;該程序?qū)o態(tài)庫進(jìn)行調(diào)用,調(diào)用靜態(tài)庫中的兩個(gè)函數(shù)pf1和pf2。編寫makefile如下:cc=gcccppflags=
18、-cobjs = thread.osource = thread.ccall_source=call.clib = libthread.aexec=callar=arthread: $objs$cc -c $source -o $objs $ar rcsv $(lib) thread.o$cc -o $exec $call_source -l. -lthread.phony : cleanclean :-rm -f $objs $exec $libmakefile文件實(shí)現(xiàn)對靜態(tài)庫程序編譯成.a靜態(tài)庫,并且編譯調(diào)用靜態(tài)庫的程序call.c為可執(zhí)行文件call(4)程序執(zhí)行效果如下: 題目二 聊天
19、程序設(shè)計(jì)1設(shè)計(jì)內(nèi)容及要求1.1 聊天程序的基本要求1、在qt(或minigui)編寫聊天程序,交叉編譯后下載到目標(biāo)機(jī),可實(shí)現(xiàn)兩臺(tái)目標(biāo)機(jī)可發(fā)送文本聊天。2、qt(或minigui)界面設(shè)計(jì)至少包括“發(fā)送”,“重置”兩個(gè)按鈕,要求必須把目標(biāo)機(jī)的硬件鍵盤映射到qt設(shè)計(jì)的軟件界面中,實(shí)現(xiàn)軟件按鈕的功能。1.2 需實(shí)現(xiàn)的主要功能(1) 客戶端輸入服務(wù)器ip和端口號。(2) 服務(wù)器必須成功啟動(dòng)。(3) 每一個(gè)客戶端可以尋找服務(wù)器,并且與服務(wù)器建立連接。(4) 客戶端和服務(wù)器可以實(shí)現(xiàn)通信。(5) 通信的內(nèi)容可以顯示在面板上。(6) 利用qt設(shè)計(jì)界面,并下載到magicarm2410上面。2需求分析2.1 q
20、t設(shè)計(jì)qt設(shè)計(jì)編寫和調(diào)試階段使用周立功magicarm2410箱子提供的qt for pc編譯器,運(yùn)行測試階段使用qt for arm編譯器。使用qt for pc階段編譯程序的步驟如下(以編譯hello.cpp程序?yàn)槔海?)進(jìn)入/x86-qtopia目錄,運(yùn)行set-env腳本,設(shè)置環(huán)境變量。$ . set-env(2)進(jìn)入hello目錄,然后用progen工具生成工程文件。$ cd hello$ vi hello.cpp$ progen t app.t o (3)使用tmake工具,生成hello工程的makefile文件。$ tmake -o ma
21、kefile (4)修改makefile文件,在libs變量中增加需要用到的庫,然后輸入make命令編譯。libs = $(sublibs) -l$(qtdir)/lib -lqte -lm -lstdc+$ make(5)啟動(dòng)虛擬控制臺(tái),運(yùn)行hello程序(主機(jī)須啟動(dòng)幀緩沖,必須能夠訪問/dev/fb0)。$ cd /zylinux/x86-qtopia$ . set-env$ cd hello$ ./hello qws如果要將hello程序發(fā)布到magicarm2410上運(yùn)行,還需進(jìn)行以下工作:(6)進(jìn)入/zylinux/arm-qtopia目錄,并將hello工程復(fù)制到
22、當(dāng)前目錄下。$ cd /zylinux/arm-qtopia$ cp av /zylinux/x86-qtopia/hello (7)運(yùn)行當(dāng)前目錄下的set-env文件,重新設(shè)置環(huán)境變量,進(jìn)入hello目錄,使用tmake工具,重新生成makefile文件。$ . set-env$ cd hello$ tmake -o makefile (8)按照步驟(4)的方法修改包含庫,編譯,得到可執(zhí)行文件hello,將hello文件添加到文件系統(tǒng)中,更新文件系統(tǒng)。(9)插入usb鼠標(biāo)和usb鍵盤,啟動(dòng)magicarm2410。啟動(dòng)qtopia的終端,運(yùn)行hello程序。利用同樣的編譯方
23、法,客戶端qt程序進(jìn)行編譯和調(diào)試。2.1.1 客戶端qt界面設(shè)計(jì)客戶端qt需要以下基本組件:(1)兩個(gè)qeditline,一個(gè)用于輸入服務(wù)器ip地址(可讀可寫),另一個(gè)用于輸入服務(wù)器端口號(可讀可寫)。(2)三個(gè)按鈕,一個(gè)用于連接服務(wù)器,另一個(gè)用于發(fā)送消息,最后一個(gè)用于清空發(fā)送區(qū)域數(shù)據(jù)。(3)四個(gè)標(biāo)簽,用于顯示不用組件的內(nèi)容。(4)兩個(gè)multilineedit,一個(gè)用于顯示通信內(nèi)容(只讀),一個(gè)作為發(fā)送區(qū)域(可讀可寫)。2.2服務(wù)器端和客戶端的數(shù)據(jù)傳輸方式 服務(wù)器端和客戶端的數(shù)據(jù)是用tcp套接字來傳輸?shù)摹p地址表示internet上的計(jì)算機(jī),端口號標(biāo)識正在計(jì)算機(jī)運(yùn)行的進(jìn)程。端口號與ip地址
24、的組合得出一個(gè)網(wǎng)絡(luò)套接字。客戶端使用linux c 函數(shù)socket建立到服務(wù)器的套接字連接。 當(dāng)套接字連接socket建立后,可以利用linux c語言中的send函數(shù)和recv函數(shù)來實(shí)現(xiàn)簡單的發(fā)送和接收消息。2.3 服務(wù)器端功能設(shè)計(jì)由于時(shí)間有限,服務(wù)器并沒有用qt來編寫界面,只是實(shí)現(xiàn)一個(gè)簡單的控制程序。服務(wù)器主要實(shí)現(xiàn)有:(1)創(chuàng)建套接字(2)對套接字、ip地址和端口號進(jìn)行綁定(3)進(jìn)行監(jiān)聽(4)等待客戶端的連接(5)對客戶端接收和發(fā)送數(shù)據(jù)2.4客戶端功能設(shè)計(jì)客戶端使用qt設(shè)計(jì)界面,客戶端實(shí)現(xiàn)的功能如下: (1)創(chuàng)建套接字 (2)連接服務(wù)器 (3)與服務(wù)器通信3總體設(shè)計(jì)3.1 總體功能根據(jù)對
25、需求所做的分析,聊天程序需要實(shí)現(xiàn)的基本功能應(yīng)包括以下幾個(gè)方面:(1) 客戶端輸入服務(wù)器ip和端口號。(2) 服務(wù)器必須成功啟動(dòng)。(3) 每一個(gè)客戶端可以尋找服務(wù)器,并且與服務(wù)器建立連接。(4) 客戶端和服務(wù)器可以實(shí)現(xiàn)通信。(5) 通信的內(nèi)容可以方便查看。 使用qt設(shè)計(jì)的界面簡潔,大方,操作簡單,方便,容易上手,用戶可以快速掌握操作流程。4. 詳細(xì)設(shè)計(jì)4.1 功能分析和描述 聊天工具包括兩大功能模塊:客戶端和服務(wù)器端。具體實(shí)現(xiàn)的功能創(chuàng)建套接字、連接通信、接收數(shù)據(jù)顯示和發(fā)送數(shù)據(jù)。4.2 客戶端功能模塊 4.2.1 連接服務(wù)器連接服務(wù)器之前需要解析服務(wù)器地址、創(chuàng)建套接字、設(shè)置sockaddr_in
26、結(jié)構(gòu)體中相關(guān)參數(shù)。4.2.2發(fā)送消息功能連接功能是開始聊天前必須進(jìn)行的步驟,連接成功之后,就可以進(jìn)行發(fā)送消息了。發(fā)送消息功能流程圖如圖2-5所示: 圖2-5 發(fā)送消息功能流程圖4.2.3接收消息模塊連接成功后,就可以接收服務(wù)器發(fā)送過來的數(shù)據(jù)。4.3 服務(wù)器功能模塊 服務(wù)器的設(shè)計(jì)并沒有使用qt編寫界面,服務(wù)器端實(shí)現(xiàn)的功能有: 圖2-8 服務(wù)器模塊流程圖5. 代碼實(shí)現(xiàn)5.1 客戶端代碼5.1.1 qt構(gòu)造和析構(gòu)函數(shù)editdemo:editdemo( qwidget *parent, const char *name):qwidget(parent, name)qgridlayout *grid
27、= new qgridlayout(this, 6, 3, 0, 0);/ip addrqlabel *label1 = new qlabel( ip addr:, this);grid-addwidget( label1, 0, 0 );edit_ip = new qlineedit(this); edit_ip-settext();grid-addwidget( edit_ip, 0, 1 );/server portqlabel *label2 = new qlabel( server port:, this);grid-addwidget( label2, 1, 0)
28、;edit_port = new qlineedit(this); edit_port-settext(4321);grid-addwidget( edit_port, 1, 1);qpushbutton *btn = new qpushbutton(connect, this); /*add the connect button*/ grid-addwidget( btn, 2, 1); /*add the button*/connect(btn, signal(clicked(), this, slot(buttonconnect(); /multiline input modeqlabe
29、l *label3 = new qlabel( contract area:, this);grid-addwidget(label3, 3, 0);multiedit_contract = new qmultilineedit(this); multiedit_contract-setreadonly(1);/set read only grid-addwidget(multiedit_contract,3,1); qlabel *label4 = new qlabel( send area:, this);grid-addwidget(label4, 4, 0);multiedit_sen
30、d = new qmultilineedit(this); grid-addwidget(multiedit_send,4,1);qpushbutton *button_send = new qpushbutton(send, this); /*add the send button*/ grid-addwidget( button_send, 5, 0); connect(button_send, signal(clicked(), this, slot(buttonsend(); qpushbutton *button_clear = new qpushbutton(clear, this
31、); /*add the clear button*/ grid-addwidget( button_clear, 5, 1); connect(button_clear, signal(clicked(), this, slot(buttonclear(); editdemo:editdemo()if(socket_flag = 1)/*if create socket success*/ close(sockfd); /*close the socket*/ printf(close the socketn);5.1.2 創(chuàng)建套接字void editdemo:createsocket(vo
32、id)/*地址解析函數(shù)*/host = gethostbyname(edit_ip-text();/*創(chuàng)建socket*/sockfd = socket(af_inet,sock_stream,0);/*設(shè)置sockaddr_in 結(jié)構(gòu)體中相關(guān)參數(shù)*/serv_addr.sin_family = af_inet;serv_addr.sin_port = htons(atoi(edit_port-text();serv_addr.sin_addr = *(struct in_addr *)host-h_addr);bzero(&(serv_addr.sin_zero), 8); 5.1.3 創(chuàng)建
33、線程void *task(void *arg) int recvbytes = 0; char bufbuffer_size= 0; arg = arg; while(1) if(recvbytes = recv(sockfd, buf, buffer_size, 0) 0) multiedit_contract-append(server said: +(qstring)buf); void createthread(void)int result = 0;result = pthread_create(&thread1, null, task, (void *)0); /*create thread*/5.2 服務(wù)器端代碼#define port 4321#define buffer_size 1024#define max_que_conn_nm 5int main()struct sockaddr_in server_sockaddr, client_sockaddr;int sin_size, recvbytes;unsigned int sendbytes = 0;int sockfd, client_f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買山墓地合同范例
- 另星供貨合同模板
- (2024版)大型購物中心招商租賃合同
- 04版教育培訓(xùn)合同培訓(xùn)內(nèi)容、培訓(xùn)時(shí)間及費(fèi)用
- 2024年城市軌道交通設(shè)施拆除合同
- 2024關(guān)于行政合同中行政主體特權(quán)行使的司法審查
- 水墨畫基礎(chǔ)知識單選題100道及答案解析
- 建筑施工安裝分包合同:住宅項(xiàng)目
- 印章保管與維護(hù)技術(shù)更新
- 停車場衛(wèi)生間裝修施工合同
- 03 塵源跟蹤電磁閥出廠檢驗(yàn)報(bào)告
- 導(dǎo)管滑脫預(yù)防措施pdca循環(huán)圖應(yīng)用分析(羅燕小組)課件
- 無產(chǎn)權(quán)證房屋買賣合同
- 學(xué)會(huì)欣賞學(xué)會(huì)贊美-主題班會(huì)課件
- 辦理戶籍注銷證明委托書
- 河北省保定市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 監(jiān)理工程竣工移交證書
- 模具驗(yàn)收報(bào)告單
- 銀行行長講合規(guī)講話稿例文5篇 銀行行長講合規(guī)工作上的講話
- 四年級語文上冊教案:第五單元習(xí)作例文 (部編版)
- 股東協(xié)議(中英文對照版本)
評論
0/150
提交評論