版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課</b></p><p><b> 程</b></p><p><b> 設(shè)</b></p><p><b> 計(jì)</b></p><p><b> 報(bào)</b></p><p
2、><b> 告</b></p><p> 設(shè)計(jì)名稱:仿QQ通信系統(tǒng) </p><p> 學(xué)生姓名: </p><p> 班 級(jí): </p><p> 組織單位:
3、 </p><p> 指導(dǎo)教師: </p><p> 時(shí) 間:2013.6.3----2013.6.23 </p><p><b> 摘要</b></p><p> 即時(shí)通信,由于具
4、有實(shí)時(shí)性、跨平臺(tái)性、成本低、效率高等優(yōu)點(diǎn)而受到廣泛的使用。設(shè)計(jì)并實(shí)現(xiàn)一個(gè)能夠處理多用戶進(jìn)行實(shí)時(shí),安全的即時(shí)通信系統(tǒng)具有較強(qiáng)的現(xiàn)實(shí)意義。本文設(shè)計(jì)并實(shí)現(xiàn)了在linux環(huán)境里基于局域網(wǎng)內(nèi)的簡單即時(shí)通信系統(tǒng),系統(tǒng)采用C/S模式,底層通信通過socket套接字接口實(shí)現(xiàn),能進(jìn)行簡單實(shí)時(shí)通信并能實(shí)現(xiàn)文件的傳輸。</p><p> 關(guān)鍵字:即時(shí)通信 TCP/UDP Linux 文件傳輸</p><p&
5、gt;<b> 需求分析</b></p><p> 局域網(wǎng)仿qq通信系統(tǒng)能實(shí)現(xiàn)即時(shí)通信,并且通訊采用TCP/UDP協(xié)議。Socket是基于TCP/IP協(xié)議之上的一個(gè)接口規(guī)范,它為應(yīng)用層之間的通信提供了保障。Socket適用于客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì),在使用面向連接模式時(shí),使用TCP協(xié)議作為通信協(xié)議,為應(yīng)用程序提供面向連接的服務(wù)。</p><p> 用S
6、ocket進(jìn)行網(wǎng)絡(luò)通信時(shí),需要在客戶端和服務(wù)器端分別創(chuàng)建一個(gè)Socket,服務(wù)器端創(chuàng)建成功以后在特定的端口上監(jiān)聽客戶端的連接請(qǐng)求。如果有客戶端的連接請(qǐng)求到來,則成功建立一個(gè)連接后,客戶端和服務(wù)器端就可以互相進(jìn)行通信了。但只能是和客戶端進(jìn)行點(diǎn)對(duì)點(diǎn)的通信,即服務(wù)器只允許有一個(gè)客戶端的連接,如果有連接請(qǐng)求到達(dá)時(shí),服務(wù)器端需要再創(chuàng)建一個(gè)新的Socket與客戶端進(jìn)行通信,而原來的那個(gè)Socket仍處于監(jiān)聽狀態(tài),等待新的客戶的連接請(qǐng)求。</p
7、><p><b> 概要設(shè)計(jì)</b></p><p> 程序必須建立一個(gè)Socket,按照要求配置此Socket,也就是說程序要么將此Socket連接到遠(yuǎn)方的主機(jī)上,要么給此Socket指定一個(gè)本地協(xié)議端口。程序必須按要求通過此Socket發(fā)送和接收數(shù)據(jù),程序必須關(guān)閉此Socket。</p><p><b> 客戶端:</b&
8、gt;</p><p> ——?jiǎng)?chuàng)建客戶端套接字(CREATE);</p><p> ——開始數(shù)據(jù)傳輸(SEND、RECEIVE);</p><p> ——關(guān)閉套接字(CLOSESOCKET);</p><p><b> 服務(wù)器端:</b></p><p> ——?jiǎng)?chuàng)建服務(wù)器端套接字(CRE
9、ATE);</p><p> ——服務(wù)器端套接字進(jìn)行信息綁定(BIND),并開始監(jiān)聽連接(LISTEN);</p><p> ——接受來自客戶端的連接請(qǐng)求(ACCEPT),并創(chuàng)建接收進(jìn)程;</p><p> ——開始數(shù)據(jù)傳輸(SEND、RECEIVE);</p><p> ——關(guān)閉套接字(CLOSESOCKET)。</p>
10、<p><b> 詳細(xì)設(shè)計(jì)</b></p><p> 下面是實(shí)現(xiàn)TCP通信和UDP通信的流程</p><p> TCP通信程序的邏輯框圖</p><p> UDP通信程序的邏輯框圖</p><p> 源程序和運(yùn)行結(jié)果清單</p><p> #include <std
11、io.h></p><p> #include <stdlib.h></p><p> #include <unistd.h></p><p> #include <string.h></p><p> #include <sys/socket.h></p><
12、p> #include <netinet/in.h></p><p> #include <arpa/inet.h></p><p> #include <fcntl.h> //文件操作頭文件</p><p> #include <pthread.h></p><p
13、> #include <sched.h></p><p> void Menu()</p><p><b> {</b></p><p> printf("\t\t|================================================ \n");</p>&
14、lt;p> printf("\t\t|================================================ \n");</p><p> printf("\t\t| 歡迎進(jìn)入系統(tǒng) \n");</p><p> printf(&qu
15、ot;\t\t|================================================ \n");</p><p> printf("\t\t| 1.UDP通信 \n");</p><p> printf("\t\t|
16、 2.TCP通信 \n");</p><p> printf("\t\t| 3.文件傳輸 \n");</p><p> printf("\t\t| 4.exit
17、 \n");</p><p> printf("\t\t|================================================\n");</p><p><b> }</b></p><p> void *recver(
18、void* data)</p><p><b> {</b></p><p> int fd1; //文件描述符</p><p> struct sockaddr_in addr1;</p><p> struct sockaddr_in addr_send1;
19、 //發(fā)送者地址對(duì)象</p><p> socklen_t len1; //socket_t類型的變量len</p><p> int r1; //結(jié)果</p><p> char buf1[200];</p><p> //1.socket&
20、lt;/p><p> fd1=socket(AF_INET,SOCK_DGRAM,0); /*AF是網(wǎng)絡(luò)傳輸,so..是udp報(bào)文傳輸,0是自動(dòng)比配*/</p><p> if (fd1==-1) printf("socket err:%m\n"),exit(-1);</p><p> printf("A socket ok
21、\n");</p><p><b> //2.bind</b></p><p> addr1.sin_family=AF_INET; //全大寫模式的是宏?duì)顟B(tài)</p><p> addr1.sin_port=htons(9999);</p><p> inet_aton("127
22、.0.0.1",&addr1.sin_addr);</p><p> r1=bind(fd1,(struct sockaddr*)&addr1,sizeof(addr1));</p><p> if(r1==-1) printf("A bind err:%m\n"),exit(-1);</p><p> print
23、f("A bind ok\n"); </p><p><b> //3.recv</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> len1=sizeof(addr_send1);&
24、lt;/p><p> r1=recvfrom(fd1,buf1,sizeof(buf1)-1,0,(struct sockaddr*)&addr_send1,&len1); /*從fd里取值給buf,接收從接收者送來到信息放到len來*/</p><p><b> if(r1>0)</b></p><p
25、><b> {</b></p><p> buf1[r1]=0;</p><p> printf("收到來自IP=%s,PORT=%hu的信息,內(nèi)容如下:\n%s\n",</p><p> inet_ntoa(addr_send1.sin_addr),</p><p> ntohs(a
26、ddr_send1.sin_port),</p><p> buf1); //ntoa網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)化為網(wǎng)絡(luò)字符串</p><p><b> }</b></p><p> if(r1==0) //對(duì)方關(guān)閉</p><p><b> {</b&
27、gt;</p><p> printf("關(guān)閉\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b> if(r1<0)</b></p><p><
28、b> {</b></p><p> printf("網(wǎng)絡(luò)鏈接失敗\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><
29、p><b> //4.close</b></p><p> close(fd1);</p><p><b> }</b></p><p> void *sender()</p><p><b> {</b></p><p> int f
30、d1; //文件描述符</p><p> struct sockaddr_in addr1;</p><p> int r1; //結(jié)果</p><p> char buf1[200];</p><p> //1.socket</p&g
31、t;<p> fd1=socket(AF_INET,SOCK_DGRAM,0);/*AF是網(wǎng)絡(luò)傳輸,so..是udp報(bào)文傳輸,0是自動(dòng)僻配*/</p><p> if (fd1==-1) printf("socket err:%m\n"),exit(-1);</p><p> printf("A socket ok\n");<
32、;/p><p> //2.發(fā)送信息目標(biāo)addr</p><p> addr1.sin_family=AF_INET; //全大寫模式的是宏?duì)顟B(tài)</p><p> addr1.sin_port=htons(9999);</p><p> inet_aton("127.0.0.1",&addr1.si
33、n_addr);</p><p><b> //3.recv</b></p><p><b> while(1)</b></p><p><b> { </b></p><p> scanf("%s",buf1);</p>
34、<p> r1=sendto(fd1,buf1,strlen(buf1),0,(struct sockaddr*)&addr1,sizeof(addr1)); /*strlen 確定字符串里有效字符長度*/</p><p><b> }</b></p><p><b> //4.close</b></
35、p><p> close(fd1);</p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p><b> int q;</b></p><p><
36、;b> Menu();</b></p><p> printf("option:\n");</p><p> scanf("%d",&q);</p><p> switch (q)</p><p><b> {</b></p>&l
37、t;p><b> case(1):</b></p><p><b> {</b></p><p> printf("UDP通信");</p><p> pthread_t tid; //聲明整型tid</p><p> p
38、thread_t tid2;</p><p> pthread_create(&tid,0,recver,NULL); /*在線/進(jìn)程當(dāng)中創(chuàng)建線程,傳地址是為了改變 tid是指向線程的標(biāo)識(shí)符的指針,0為設(shè)置線程的屬性,run線程運(yùn)行函數(shù)的起始地址,傳給函數(shù)到參數(shù)*/</p><p> pthread_create(&tid2,0,sender,NULL);<
39、;/p><p> while(1);break;</p><p><b> }</b></p><p><b> case(2):</b></p><p><b> {</b></p><p> printf("TCP通信\n"
40、);</p><p> if(fork())</p><p><b> {</b></p><p> int serverfd; //服務(wù)器文件描述符</p><p> int cfd; //客戶端文件描述符</p><p>
41、 struct sockaddr_in sadr; //服務(wù)器地址</p><p> struct sockaddr_in cadr; //客戶端地址</p><p> socklen_t len;</p><p><b> int r;</b></p><p><b> int
42、a;</b></p><p> char buf[200];</p><p> //1.socket</p><p> serverfd=socket(AF_INET,SOCK_STREAM,0);</p><p> if(serverfd==-1) printf("socket err%m\n"),e
43、xit(-1);</p><p> printf("server socket ok!\n");</p><p> sadr.sin_family=AF_INET;</p><p> sadr.sin_port=htons(9997);</p><p> inet_aton("127.0.0.1"
44、;,&sadr.sin_addr);</p><p><b> //2.bind</b></p><p> r=bind(serverfd,(struct sockaddr*)&sadr,sizeof(sadr));</p><p> if(r==-1) printf("server bind err%m\n&q
45、uot;),exit(-1);</p><p> printf("server bind ok\n");</p><p> //3.listen</p><p> r=listen(serverfd,10); //監(jiān)聽服務(wù)器</p><p> if(r==-1) printf("server
46、 listen err%m\n"),exit(-1);</p><p> printf("server listen ok\n");</p><p> //4.accept</p><p> len=sizeof(cadr);</p><p> cfd=accept(serverfd,(struct so
47、ckaddr*)&cadr,&len);</p><p> printf("有人鏈接%d,IP:%s,Port:%u\n",cfd,</p><p> inet_ntoa(cadr.sin_addr),ntohs(cadr.sin_port));</p><p> //5.action</p><p>
48、;<b> while(1)</b></p><p><b> { </b></p><p> r=recv(cfd,buf,sizeof(buf),0);</p><p><b> buf[r]=0;</b></p><p><b> if(r>0)
49、</b></p><p> printf("收到數(shù)據(jù)::%s\n",buf);</p><p><b> if(r==0)</b></p><p><b> {</b></p><p> printf("鏈接斷開\n");</p>
50、;<p><b> break;</b></p><p><b> }</b></p><p><b> if(r<0)</b></p><p><b> {</b></p><p> printf("網(wǎng)絡(luò)故障\n&
51、quot;);</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> close(cfd);</p><p> close(serverfd);</
52、p><p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> int fd;</
53、b></p><p> struct sockaddr_in addr;</p><p><b> int r;</b></p><p><b> int s=0;</b></p><p> char buf[200];</p><p> //1.socket
54、</p><p> fd=socket(AF_INET,SOCK_STREAM,0);</p><p> if(fd==-1) printf("1:%m\n"),exit(-1);</p><p> printf("建立socket成功!\n");</p><p> //2.connect<
55、;/p><p> addr.sin_family=AF_INET;</p><p> addr.sin_port=htons(9997);</p><p> inet_aton("127.0.0.1",&addr.sin_addr);</p><p> r=connect(fd,(struct sockaddr
56、*)&addr,sizeof(addr));</p><p> if(r==-1) printf("2:%m\n"),exit(-1);</p><p> printf("連接服務(wù)器成功!\n");</p><p><b> //3.send</b></p><p>
57、<b> while(1)</b></p><p><b> {</b></p><p> bzero(buf,sizeof(buf));</p><p> printf("請(qǐng)輸入要傳送的數(shù)據(jù)\n");</p><p> scanf("%s",buf
58、);</p><p> // if(buf[0]=0) break;</p><p> r=send(fd,buf,strlen(buf),0);</p><p><b> if(r>0)</b></p><p> printf("!!!發(fā)送成功!!!\n"),sleep(2);
59、//發(fā)送進(jìn)程休息3秒 等待接收進(jìn)程顯示收到的數(shù)據(jù)</p><p><b> if(r==0)</b></p><p><b> {</b></p><p> printf("鏈接斷開\n");</p><p><b> break;</b></
60、p><p><b> }</b></p><p><b> if(r<0)</b></p><p><b> {</b></p><p> printf("網(wǎng)絡(luò)故障\n");</p><p><b> break
61、;</b></p><p><b> }</b></p><p><b> }</b></p><p> close(fd);</p><p><b> return;</b></p><p><b> }</b&g
62、t;</p><p><b> break;</b></p><p><b> }</b></p><p><b> case(3):</b></p><p><b> {</b></p><p> printf(&qu
63、ot;文件傳輸");</p><p> if(fork())</p><p><b> {</b></p><p> int sfd3,cfd3,ffd3;</p><p><b> int r3;</b></p><p><b> int le
64、n3;</b></p><p> char buf3[200];</p><p> char filename[100];</p><p> struct sockaddr_in dr;</p><p> //1.socket</p><p> sfd3=socket(AF_INET,SOCK_S
65、TREAM,0);</p><p> if(sfd3==-1) printf("server socket err%m\n"),exit(-1); </p><p> printf("server socket ok\n");</p><p><b> //2.bind</b></p>
66、;<p> dr.sin_family=AF_INET;</p><p> dr.sin_port=htons(9995);</p><p> dr.sin_addr.s_addr=inet_addr("127.0.0.1");</p><p> r3=bind(sfd3,(struct sockaddr*)&dr,
67、sizeof(dr));</p><p> if(r3==-1) printf("server bind err%m\n"),exit(-1); </p><p> printf("server bind ok\n");</p><p> //3.listen</p><p> r3=lis
68、ten(sfd3,10);</p><p> if(r3==-1)printf("server listen err:%m\n"),exit(-1);</p><p> printf("server listen ok!\n");</p><p> //4.accept</p><p> cf
69、d3=accept(sfd3,0,0);</p><p> if(cfd3==-1) printf("server accept err:%m\n"),exit(-1);</p><p> printf("server accept ok!\n");</p><p><b> //action</b>
70、;</p><p> r3=recv(cfd3,&len3,sizeof(len3),MSG_WAITALL);</p><p> printf("文件名長度是:%d\n",len3);</p><p> r3=recv(cfd3,filename,len3,MSG_WAITALL);</p><p> p
71、rintf("傳遞到文件是:%s\n",filename);</p><p> ffd3=open(filename,O_RDWR|O_CREAT,0666); //第一個(gè)6表示自己,2是其他,3是工作組</p><p><b> while(1)</b></p><p><b> {</
72、b></p><p> r3=recv(cfd3,&len3,sizeof(len3),MSG_WAITALL);</p><p> if(len3==0) break;</p><p> r3=recv(cfd3,buf3,len3,MSG_WAITALL);</p><p> write(ffd3,buf3,len3
73、); </p><p><b> }</b></p><p> close(ffd3);</p><p> close(cfd3);</p><p> close(sfd3);</p><p> printf("————恭喜文件接受完畢————\n");</p
74、><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> int sfd3,ffd3;</p><p><b> int r3;</b></p&g
75、t;<p><b> int size;</b></p><p><b> int len3;</b></p><p> int buf3[100];</p><p> struct sockaddr_in dr;</p><p> char filename[]="
76、;abc.txt";</p><p> //1.socket</p><p> sfd3=socket(AF_INET,SOCK_STREAM,0);</p><p> if(sfd3==-1) printf("server socket err%m\n"),exit(-1); </p><p> p
77、rintf("server socket ok\n");</p><p> //2.connect</p><p> dr.sin_family=AF_INET;</p><p> dr.sin_port=htons(9995);</p><p> inet_aton("127.0.0.1",&
78、amp;dr.sin_addr);</p><p> r3=connect(sfd3,(struct sockaddr*)&dr,sizeof(dr));</p><p> if(r3==-1) printf("connect err%m\n"),exit(-1); </p><p> printf("connect
79、ok\n");</p><p> //3.open file</p><p> ffd3=open(filename,O_RDONLY);</p><p> if(ffd3==-1) printf("open err%m\n"),exit(-1); </p><p> printf("ope
80、n ok\n");</p><p> //4.send filename</p><p> len3=strlen(filename); //獲得文件名長度</p><p> r3=send(sfd3,&len3,sizeof(len3),0);</p><p> r3=sen
81、d(sfd3,filename,len3,0);</p><p> if(r3==-1) printf("send err%m\n"),close(ffd3),close(sfd3),exit(-1);</p><p> printf("filename send ok\n");</p><p> //5.send fi
82、ledata</p><p><b> while(1)</b></p><p><b> {</b></p><p> size=read(ffd3,&size,sizeof(size));</p><p> if(size==0) break;</p><p&
83、gt; if(size==-1) break;</p><p> if(size>0) break;</p><p><b> {</b></p><p> r3=send(sfd3,&size,sizeof(size),0); //發(fā)送截取文件到長度</p><p> if(r3==-1)
84、 break;</p><p> r3=send(sfd3,buf3,size,0); //發(fā)送截取文件到內(nèi)容</p><p> if(r3==-1) break;</p><p><b> }</b></p><p><b> }</b></p><
85、p><b> size=0;</b></p><p> r3=send(sfd3,&size,sizeof(size),0);</p><p> close(ffd3);</p><p> close(sfd3);</p><p><b> }</b></p>
86、<p><b> break;</b></p><p><b> }</b></p><p><b> case(4):</b></p><p><b> {</b></p><p><b> exit(0);</b&g
87、t;</p><p><b> }</b></p><p> default:printf("error\n");</p><p><b> }</b></p><p><b> return 0;</b></p><p>&
88、lt;b> }</b></p><p><b> 執(zhí)行結(jié)果如下</b></p><p><b> 總結(jié)</b></p><p> Xxx:通過三周的課程設(shè)計(jì)我掌握了許多以前沒有接觸過的內(nèi)容,同時(shí)也掌握了許多有用的知識(shí)。這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只
89、有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。</p><p> Xxx:本學(xué)期的最后時(shí)間里我們進(jìn)行了為期9天的仿qq通信系統(tǒng)的課程設(shè)計(jì),在此期間我和隊(duì)友們一起互相學(xué)習(xí)、討論,終于圓滿完成此次課程設(shè)計(jì)。首先指導(dǎo)老師很幽默,講課方法獨(dú)特,很有吸引力,讓我們不會(huì)感覺到累和困。起初指導(dǎo)老師讓我們先回顧一些簡單的小程序算是喚起我們的記憶,他會(huì)讓我們
90、自己動(dòng)手去寫,不給我們代碼,這樣可以鍛煉我們,同時(shí)也可以克服依賴的壞習(xí)慣。后來老師就講解通訊系統(tǒng)該怎么去編寫。戶端,服務(wù)器端,線程,進(jìn)程,TCP、UDP、SOCKET等一些名詞老師都詳細(xì)講解。</p><p> 期間我們遇到很多難以修改的錯(cuò)誤,要么請(qǐng)求老師指導(dǎo),要么百度,大家都一一解答出來了,九天時(shí)間天天對(duì)著電腦應(yīng)該很累,很疲憊,但是我們都堅(jiān)持下來,認(rèn)真學(xué)習(xí)。最后真心地感謝老師和學(xué)校給我們提供了平臺(tái)讓我們把理論
91、和實(shí)踐相結(jié)合,各位指導(dǎo)老師你們辛苦了。</p><p> Xxx:回顧起此次課程設(shè)計(jì),至今我仍感慨頗多,的確,從從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在大約兩個(gè)學(xué)期的日子里,可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,由于c/c++都很久沒有復(fù)習(xí)了,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的
92、不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,特別是結(jié)構(gòu)體,通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。</p><p> Xxx:課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做
93、人與處世。課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過程.”千里之行始于足下”,通過這次課程設(shè)計(jì),我深深體會(huì)到這句千古名言的真正含義.我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開這一步,就是為明天能穩(wěn)健地在在這次設(shè)計(jì)過程中,,體會(huì)了學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情,從中發(fā)現(xiàn)自己平時(shí)學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補(bǔ)。在此感謝我們的老師.,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- linux操作系統(tǒng)課程設(shè)計(jì)
- jsp作業(yè)課程設(shè)計(jì)--qq登陸系統(tǒng)
- linux課程設(shè)計(jì)報(bào)告--linux操作系統(tǒng)應(yīng)用
- 課程設(shè)計(jì)---linux 手機(jī)繳費(fèi)系統(tǒng)
- 手機(jī)繳費(fèi)系統(tǒng)linux課程設(shè)計(jì)
- 通信系統(tǒng)課程設(shè)計(jì)
- 通信系統(tǒng)課程設(shè)計(jì)
- jsp作業(yè)課程設(shè)計(jì)--qq登陸系統(tǒng)
- 通信系統(tǒng)綜合課程設(shè)計(jì)
- 集群通信系統(tǒng)課程設(shè)計(jì)
- fsk通信系統(tǒng)課程設(shè)計(jì)
- 模擬通信系統(tǒng)課程設(shè)計(jì)
- 局域網(wǎng)qq課程設(shè)計(jì)
- linux課程設(shè)計(jì)論文
- linux課程設(shè)計(jì)論文
- 通信課程設(shè)計(jì)---pcm通信系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)--多級(jí)通信系統(tǒng)
- linux課程設(shè)計(jì)報(bào)告
- linux課程設(shè)計(jì)76359
- linux課程設(shè)計(jì)76359
評(píng)論
0/150
提交評(píng)論