版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
網(wǎng)絡(luò)應(yīng)用課程設(shè)計(jì)報(bào)告系院):計(jì)算機(jī)科學(xué)學(xué)院專業(yè)班級(jí):計(jì)科z11601姓名:聶力學(xué)號(hào):201610071指導(dǎo)教師:潘勁松/邱林設(shè)計(jì)時(shí)間:2017.6.12-2017.6.23設(shè)計(jì)地點(diǎn):4教軟件工程機(jī)房目錄TOC\o"1-2"\u一、課程的目的和意義 1二、系統(tǒng)需求及分析 12.1.設(shè)計(jì)題目 12.2系統(tǒng)需求 1三、詳細(xì)設(shè)計(jì) 23.1、設(shè)計(jì)成果及心得 3四、總結(jié) 4五、附錄 4一、課程的目的和意義計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)的目的,是為了讓學(xué)生更深入地掌握計(jì)算機(jī)網(wǎng)絡(luò)的核心內(nèi)容,實(shí)現(xiàn)理論與實(shí)踐相結(jié)合。讓學(xué)生用具體的實(shí)踐成果,體現(xiàn)對(duì)理論知識(shí)的掌握程度。有利于學(xué)生提高計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)踐能力,加深對(duì)計(jì)算機(jī)網(wǎng)絡(luò)理論知識(shí)的理解。其基本目的是:1、培養(yǎng)學(xué)生理論聯(lián)系實(shí)際的設(shè)計(jì)思想,訓(xùn)練綜合運(yùn)用所學(xué)的基礎(chǔ)理論知識(shí),結(jié)合生產(chǎn)實(shí)際分析和解決網(wǎng)絡(luò)應(yīng)用中問題的能力,從而使基礎(chǔ)理論知識(shí)得到鞏固和加深。2、學(xué)習(xí)掌握網(wǎng)絡(luò)應(yīng)用工程的一般設(shè)計(jì)過程和方法。二、系統(tǒng)需求及分析2.1.設(shè)計(jì)題目題目2:基于TCP協(xié)議的通訊錄2.2系統(tǒng)需求1、需要錄入聯(lián)系人到通訊錄中;2、能夠?qū)νㄓ嶄浿懈黜?xiàng)信息進(jìn)行添加刪除瀏覽等一系列操作;3、能夠完成通訊錄的基本功能;4、程序具有一定的健壯性,不會(huì)因?yàn)橛脩舻妮斎脲e(cuò)誤引起程序運(yùn)行錯(cuò)誤而中斷執(zhí)行。對(duì)輸入值的類型、大小范圍、字符串的長(zhǎng)度等,進(jìn)行正確性檢查,對(duì)不合法的輸入值給出出錯(cuò)信息,指出錯(cuò)誤類型,等待重新輸入;5、對(duì)刪除數(shù)據(jù)應(yīng)給出警告。2.3功能分析1、添加功能:選擇此功能可以用戶手動(dòng)輸入聯(lián)系人各項(xiàng)信息;2、查看功能:選擇此功能時(shí)可以選擇根據(jù)各種信息查詢聯(lián)系人電話、住址、性別、郵箱、QQ等各項(xiàng)信息;3、刪除功能:選擇此功能時(shí)能夠通過輸入聯(lián)系人姓名或者電話刪除聯(lián)系人的全部信息;4、退出系統(tǒng)功能:選擇此功能時(shí)能夠退出系統(tǒng)并保存數(shù)據(jù)。主菜單功能結(jié)構(gòu)圖:主菜單添加聯(lián)系人刪除聯(lián)系人查看聯(lián)系人退出添加聯(lián)系人刪除聯(lián)系人查看聯(lián)系人退出輸入任意鍵進(jìn)入主菜單流程圖:輸入任意鍵進(jìn)入主菜單輸入0~3選擇功能輸入0~3選擇功能1:查看2:添加3:刪除4:退出輸入2:添加各項(xiàng)信息添加輸入1:查看各項(xiàng)信息輸入2:添加各項(xiàng)信息添加輸入1:查看各項(xiàng)信息輸入4:退出輸入3:刪除學(xué)號(hào)輸入4:退出輸入3:刪除學(xué)號(hào)三、詳細(xì)設(shè)計(jì)套接字是應(yīng)用層到傳輸層的接口。準(zhǔn)確地說是,Socket被作為應(yīng)用程序與TCP/IP協(xié)議交互的接口。通過Socket可以區(qū)分不同的TCP/IP連接和應(yīng)用程序的進(jìn)程。TCP客戶端與服務(wù)端流程圖:
服務(wù)端:voidStart();創(chuàng)建套接字;std::list<DATA>m_list;//鏈表類鏈表對(duì)象CSocketm_sock;定義套接字;BOOLBrowse(CSocket*pSocka);查看聯(lián)系人信息;BOOLAddData(CSocket*pSocka);添加聯(lián)系人信息;BOOLOnReceive(CSocket*pSocka);收發(fā)數(shù)據(jù);BOOLDelete(CSocket*pSocka);刪除信息;客戶端:voidDelete();刪除數(shù)據(jù);voidPrint();輸入數(shù)據(jù);voidInput();添加數(shù)據(jù); intMenu();創(chuàng)建菜單; voidStart();創(chuàng)建套接字;3.1、設(shè)計(jì)成果及心得添加功能:客戶端運(yùn)行結(jié)果:服務(wù)端運(yùn)行結(jié)果:刪除功能:客戶端運(yùn)行結(jié)果:服務(wù)端運(yùn)行結(jié)果:文檔保存及刪除:四、總結(jié)緊緊張張的兩周課設(shè)即將過去,從剛開始的不只如何下手到最后看到自己的程序按自己的想法運(yùn)行,心里時(shí)不時(shí)的有一種喜悅。通過這兩周的課設(shè),我認(rèn)識(shí)到書上和老師教的內(nèi)容是有限的,要想掌握更多的知識(shí)我們必須多動(dòng)腦,多思考,不斷地靠自己去學(xué)習(xí),同時(shí)我們還應(yīng)向他人請(qǐng)教,從而了解更多自己不知道的知識(shí)?;仡^看來,編寫這個(gè)程序并不像原來想像的那么難,我們要相信自己,無論做什么事,只要我們仔細(xì)的思考了,認(rèn)真的去做了,我們就一定能做好。通過這周的編程我發(fā)現(xiàn)了自己的一些不足,在編寫時(shí)經(jīng)常犯一些低級(jí)錯(cuò)誤,由于自己的馬虎而浪費(fèi)了不少時(shí)間。在不知如何進(jìn)行的時(shí)候有一種不自信,總想別人正在做什么,這些不足既然被發(fā)現(xiàn)就得在以后的做事中注意,爭(zhēng)取改掉。經(jīng)過兩周的努力我掌握了一些基本的C++進(jìn)行程序設(shè)計(jì)的技巧,更深的理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法,掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法,同時(shí)學(xué)會(huì)了一些調(diào)試一個(gè)較長(zhǎng)程序的基本方法,提高了書寫程序設(shè)計(jì)開發(fā)文檔的能力(書寫課程設(shè)計(jì)報(bào)告)。這周的實(shí)踐讓我受益匪淺,在此我要感謝孜孜不倦指導(dǎo)我們的老師,感謝在我困惑時(shí)給我?guī)椭耐瑢W(xué),感謝學(xué)校給我們一個(gè)這樣動(dòng)手動(dòng)腦的機(jī)會(huì),使我們?cè)诶碚撆c實(shí)踐相結(jié)合方面又得到了一次很好的鍛煉,讓我們得到很大的收獲。五、附錄服務(wù)端代碼:Student.h中代碼://Student.h:interfacefortheCStudentclass.////////////////////////////////////////////////////////////////////////#if!defined(AFX_STUDENT_H__51E819EA_E8BD_4CCD_9E03_F45C00E0494F__INCLUDED_)#defineAFX_STUDENT_H__51E819EA_E8BD_4CCD_9E03_F45C00E0494F__INCLUDED_#include<list>#if_MSC_VER>1000#pragmaonce#include<afxSock.h>#endif//_MSC_VER>1000enum{PORT=10011};enum{REQ_ADD=0x1111,REQ_DEL,REQ_MOD,//命令號(hào)REQ_FIND, REQ_BROW,};typedefstructSStud{intnNumb;charsName[20]; charsAge[20]; charsSex[4]; charsUnit[20]; charsAdd[20];}DATA;classCStudent{ std::list<DATA>m_list;//鏈表類鏈表對(duì)象保存到Save和Load中CSocketm_sock;//與客戶端通信的socka的對(duì)象 BOOLBrowse(CSocket*pSocka); BOOLAddData(CSocket*pSocka); BOOLOnReceive(CSocket*pSocka); BOOLDelete(CSocket*pSocka);public: voidLoad(); voidSave(); voidStart(); CStudent(); virtual~CStudent();};#endif//!defined(AFX_STUDENT_H__51E819EA_E8BD_4CCD_9E03_F45C00E0494F__INCLUDED_)Student.cpp代碼://Student.cpp:implementationoftheCStudentclass.////////////////////////////////////////////////////////////////////////#include"stdafx.h"#include"Student.h"#include<iostream>#include<process.h>//#include<fstream.h>//#include<stdlib.h>usingnamespacestd;////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////CStudent::CStudent(){}CStudent::~CStudent(){}voidCStudent::Start(){ WSADATAwd; WSAStartup(0x0202,&wd);//套接字初始化if(!m_sock.Create(PORT)){ cout<<"端口創(chuàng)建失??!"<<WSAGetLastError()<<endl; return;}m_sock.Listen();CSocketsocka;sockaddr_insa;intnLen=sizeof(sa);while(m_sock.Accept(socka,(sockaddr*)&sa,&nLen)){ cout<<"用戶登錄:"<<inet_ntoa(sa.sin_addr)<<""<<htons(sa.sin_port)<<endl;//綁定客戶端 while(OnReceive(&socka)); socka.Close();//關(guān)閉客戶端與服務(wù)器連接}}//網(wǎng)絡(luò)協(xié)議://硬件協(xié)議;//協(xié)議=命令+附加數(shù)據(jù)//1DATA//2nNumbBOOLCStudent::OnReceive(CSocket*pSocka){//返回值將決定是否繼續(xù)與該登陸用戶通訊(是否要斷開連接)intnCmd=0;if(pSocka->Receive(&nCmd,sizeof(nCmd))<=0)returnFALSE;switch(nCmd){caseREQ_ADD:returnAddData(pSocka);caseREQ_DEL:returnDelete(pSocka); //caseREQ_MOD://break;//caseREQ_FIND:// break;caseREQ_BROW: returnBrowse(pSocka); }returnFALSE;}BOOLCStudent::AddData(CSocket*pSocka){DATAd;FILE*fp;if(pSocka->Receive(&d,sizeof(d))<=0)returnFALSE;//當(dāng)服務(wù)器收到客戶端傳來的信息存入到4.txt中fp=fopen("4.txt","a");if(fp==NULL)printf("打開文件失?。?);fprintf(fp,"\n");fprintf(fp,"%d",d.nNumb);fprintf(fp,"\t");fprintf(fp,"%s",d.sName);fprintf(fp,"\t");fprintf(fp,"%s",d.sAge);fprintf(fp,"\t");fprintf(fp,"%s",d.sSex);fprintf(fp,"\t");fprintf(fp,"%s",d.sUnit);fprintf(fp,"\t");fprintf(fp,"%s",d.sAdd);fprintf(fp,"\t");fprintf(fp,"\n");fclose(fp); system("@color0a"); cout<<"學(xué)號(hào)\t姓名\t年齡\t性別\t單位\t手機(jī)號(hào)碼"<<endl; cout<<d.nNumb<<"\t"<<d.sName<<"\t"<<d.sAge<<"\t"<<d.sSex<<"\t"<<d.sUnit<<"\t"<<d.sAdd<<endl;m_list.push_back(d);returnTRUE;}BOOLCStudent::Browse(CSocket*pSocka){system("cls"); intn=m_list.size(); pSocka->Send(&n,sizeof(n)); list<DATA>::iteratorit=m_list.begin(); while(it!=m_list.end()) { DATA&d=*it++; //將it指向的結(jié)構(gòu)體數(shù)據(jù)賦給it,it并向下移動(dòng) pSocka->Send(&d,sizeof(d)); //將某項(xiàng)信息刪除后更新文件 FILE*fp; intn=m_list.size(); //刪除后的n變化fp=fopen("4.txt","w");fprintf(fp,"\n");fprintf(fp,"%d",d.nNumb);fprintf(fp,"\t");fprintf(fp,"%s",d.sName);fprintf(fp,"\t");fprintf(fp,"%s",d.sAge);fprintf(fp,"\t");fprintf(fp,"%s",d.sSex);fprintf(fp,"\t");fprintf(fp,"%s",d.sUnit);fprintf(fp,"\t");fprintf(fp,"%s",d.sAdd);fprintf(fp,"\t");fprintf(fp,"\n");fclose(fp); system("@color0a");cout<<"學(xué)號(hào)\t姓名\t年齡\t性別\t單位\t手機(jī)號(hào)碼"<<endl;cout<<d.nNumb<<"\t"<<d.sName<<"\t"<<d.sAge<<"\t"<<d.sSex<<"\t"<<d.sUnit<<"\t"<<d.sAdd<<endl;}returnTRUE;}voidCStudent::Save(){}voidCStudent::Load(){}BOOLCStudent::Delete(CSocket*pSocka){ intnNumb; if(pSocka->Receive(&nNumb,sizeof(nNumb))<=0)//無連接returnfalse; list<DATA>::iteratorit=m_list.begin();//查找鏈表 while(it!=m_list.end()) {if(it->nNumb==nNumb)//找到nNumb, {m_list.erase(it);//刪除nNumbreturntrue;}++it;}returntrue;}客戶端代碼:Student.h中代碼://Student.h:interfacefortheCStudentclass.////////////////////////////////////////////////////////////////////////#if!defined(AFX_STUDENT_H__B679D35B_EF78_4F77_A33E_E69960383116__INCLUDED_)#defineAFX_STUDENT_H__B679D35B_EF78_4F77_A33E_E69960383116__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#include<afxsock.h>//#include<windows.h>//system("colorAB");//COLOR[A];enum{PORT=10011};enum{REQ_ADD=0X1111,REQ_DEL,REQ_BROW,};typedefstructSStud{ intnNumb; charsName[20]; charsAge[20]; charsSex[4]; charsUnit[20]; charsAdd[20];}DATA;classCStudent{public: voidDelete(); voidPrint(); voidInput(); intMenu(); voidStart(); CSocketm_sock; CStudent(); virtual~CStudent();};#endif//!defined(AFX_STUDENT_H__B679D35B_EF78_4F77_A33E_E69960383116__INCLUDED_)Student.cpp中的代碼://Student.cpp:implementationoftheCStudentclass.////////////////////////////////////////////////////////////////////////#include"stdafx.h"#include"Student.h"#include<iostream>#include<process.h>#include<conio.h>#include<windows.h>usingnamespacestd;////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////CStudent::CStudent(){}CStudent::~CStudent(){}voidCStudent::Start(){ WSADATAwd;//套接字初始化 WSAStartup(0x0202,&wd);if(!m_sock.Create()){cout<<"網(wǎng)絡(luò)啟動(dòng)失?。?<<WSAGetLastError()<<endl;return;}if(!m_sock.Connect("10.201.1.55",PORT)){ cout<<"連接網(wǎng)絡(luò)服務(wù)器時(shí)失?。。ㄥe(cuò)誤號(hào)碼:"<<WSAGetLastError()<<")"<<endl; return;}while(Menu());}intCStudent::Menu(){system("color0a");cout<<"\n\n\n\t\t********歡迎使用基于TCP的通訊錄***********"<<endl;cout<<"\t\t1、顯示所有聯(lián)系人信息"<<endl;cout<<"\t\t2、添加聯(lián)系人信息"<<endl;cout<<"\t\t3、刪除聯(lián)系人信息"<<endl;cout<<"\t\t0、退出"<<endl;cout<<"\t\t******************************************"<<endl;cout<<"請(qǐng)輸入你想執(zhí)行的功能序號(hào):"<<endl;inti=0;cin>>i;switch(i){case1: Print(); break;case2: Input(); break;case3: Delete(); break;}returni;}voidCStudent::Input(){DATAd;cout<<
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)安全防護(hù)體系-第2篇-洞察分析
- 音樂干預(yù)對(duì)認(rèn)知功能的提升-洞察分析
- 移動(dòng)應(yīng)用安全防護(hù)-洞察分析
- 2025年人教A版八年級(jí)科學(xué)下冊(cè)階段測(cè)試試卷含答案
- 2025年北師大版九年級(jí)地理上冊(cè)月考試卷
- 2025年人教五四新版七年級(jí)化學(xué)上冊(cè)月考試卷
- 物聯(lián)網(wǎng)安全協(xié)議設(shè)計(jì)-洞察分析
- 2025年度戶外廣告設(shè)施蟲鼠害防治與設(shè)施維護(hù)服務(wù)合同4篇
- 2025年度櫥柜安裝與舊房翻新工程合同范本4篇
- 2025年度打印機(jī)設(shè)備銷售與維修培訓(xùn)合同4篇
- 新型電力系統(tǒng)簡(jiǎn)介演示
- 特種設(shè)備行業(yè)團(tuán)隊(duì)建設(shè)工作方案
- 眼內(nèi)炎患者護(hù)理查房課件
- 肯德基經(jīng)營(yíng)策略分析報(bào)告總結(jié)
- 買賣合同簽訂和履行風(fēng)險(xiǎn)控制
- 中央空調(diào)現(xiàn)場(chǎng)施工技術(shù)總結(jié)(附圖)
- 水質(zhì)-濁度的測(cè)定原始記錄
- 數(shù)字美的智慧工業(yè)白皮書-2023.09
- -安規(guī)知識(shí)培訓(xùn)
- 2021-2022學(xué)年四川省成都市武侯區(qū)部編版四年級(jí)上冊(cè)期末考試語文試卷(解析版)
- 污水處理廠設(shè)備安裝施工方案
評(píng)論
0/150
提交評(píng)論