版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
網絡應用課程設計報告系院):計算機科學學院專業(yè)班級:計科z11601姓名:聶力學號:201610071指導教師:潘勁松/邱林設計時間:2017.6.12-2017.6.23設計地點:4教軟件工程機房目錄TOC\o"1-2"\u一、課程的目的和意義 1二、系統(tǒng)需求及分析 12.1.設計題目 12.2系統(tǒng)需求 1三、詳細設計 23.1、設計成果及心得 3四、總結 4五、附錄 4一、課程的目的和意義計算機網絡課程設計的目的,是為了讓學生更深入地掌握計算機網絡的核心內容,實現(xiàn)理論與實踐相結合。讓學生用具體的實踐成果,體現(xiàn)對理論知識的掌握程度。有利于學生提高計算機網絡的實踐能力,加深對計算機網絡理論知識的理解。其基本目的是:1、培養(yǎng)學生理論聯(lián)系實際的設計思想,訓練綜合運用所學的基礎理論知識,結合生產實際分析和解決網絡應用中問題的能力,從而使基礎理論知識得到鞏固和加深。2、學習掌握網絡應用工程的一般設計過程和方法。二、系統(tǒng)需求及分析2.1.設計題目題目2:基于TCP協(xié)議的通訊錄2.2系統(tǒng)需求1、需要錄入聯(lián)系人到通訊錄中;2、能夠對通訊錄中各項信息進行添加刪除瀏覽等一系列操作;3、能夠完成通訊錄的基本功能;4、程序具有一定的健壯性,不會因為用戶的輸入錯誤引起程序運行錯誤而中斷執(zhí)行。對輸入值的類型、大小范圍、字符串的長度等,進行正確性檢查,對不合法的輸入值給出出錯信息,指出錯誤類型,等待重新輸入;5、對刪除數(shù)據(jù)應給出警告。2.3功能分析1、添加功能:選擇此功能可以用戶手動輸入聯(lián)系人各項信息;2、查看功能:選擇此功能時可以選擇根據(jù)各種信息查詢聯(lián)系人電話、住址、性別、郵箱、QQ等各項信息;3、刪除功能:選擇此功能時能夠通過輸入聯(lián)系人姓名或者電話刪除聯(lián)系人的全部信息;4、退出系統(tǒng)功能:選擇此功能時能夠退出系統(tǒng)并保存數(shù)據(jù)。主菜單功能結構圖:主菜單添加聯(lián)系人刪除聯(lián)系人查看聯(lián)系人退出添加聯(lián)系人刪除聯(lián)系人查看聯(lián)系人退出輸入任意鍵進入主菜單流程圖:輸入任意鍵進入主菜單輸入0~3選擇功能輸入0~3選擇功能1:查看2:添加3:刪除4:退出輸入2:添加各項信息添加輸入1:查看各項信息輸入2:添加各項信息添加輸入1:查看各項信息輸入4:退出輸入3:刪除學號輸入4:退出輸入3:刪除學號三、詳細設計套接字是應用層到傳輸層的接口。準確地說是,Socket被作為應用程序與TCP/IP協(xié)議交互的接口。通過Socket可以區(qū)分不同的TCP/IP連接和應用程序的進程。TCP客戶端與服務端流程圖:
服務端:voidStart();創(chuàng)建套接字;std::list<DATA>m_list;//鏈表類鏈表對象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、設計成果及心得添加功能:客戶端運行結果:服務端運行結果:刪除功能:客戶端運行結果:服務端運行結果:文檔保存及刪除:四、總結緊緊張張的兩周課設即將過去,從剛開始的不只如何下手到最后看到自己的程序按自己的想法運行,心里時不時的有一種喜悅。通過這兩周的課設,我認識到書上和老師教的內容是有限的,要想掌握更多的知識我們必須多動腦,多思考,不斷地靠自己去學習,同時我們還應向他人請教,從而了解更多自己不知道的知識?;仡^看來,編寫這個程序并不像原來想像的那么難,我們要相信自己,無論做什么事,只要我們仔細的思考了,認真的去做了,我們就一定能做好。通過這周的編程我發(fā)現(xiàn)了自己的一些不足,在編寫時經常犯一些低級錯誤,由于自己的馬虎而浪費了不少時間。在不知如何進行的時候有一種不自信,總想別人正在做什么,這些不足既然被發(fā)現(xiàn)就得在以后的做事中注意,爭取改掉。經過兩周的努力我掌握了一些基本的C++進行程序設計的技巧,更深的理解和運用結構化程序設計的思想和方法,掌握開發(fā)一個小型實用系統(tǒng)的基本方法,同時學會了一些調試一個較長程序的基本方法,提高了書寫程序設計開發(fā)文檔的能力(書寫課程設計報告)。這周的實踐讓我受益匪淺,在此我要感謝孜孜不倦指導我們的老師,感謝在我困惑時給我?guī)椭耐瑢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,//命令號REQ_FIND, REQ_BROW,};typedefstructSStud{intnNumb;charsName[20]; charsAge[20]; charsSex[4]; charsUnit[20]; charsAdd[20];}DATA;classCStudent{ std::list<DATA>m_list;//鏈表類鏈表對象保存到Save和Load中CSocketm_sock;//與客戶端通信的socka的對象 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();//關閉客戶端與服務器連接}}//網絡協(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;//當服務器收到客戶端傳來的信息存入到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<<"學號\t姓名\t年齡\t性別\t單位\t手機號碼"<<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指向的結構體數(shù)據(jù)賦給it,it并向下移動 pSocka->Send(&d,sizeof(d)); //將某項信息刪除后更新文件 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<<"學號\t姓名\t年齡\t性別\t單位\t手機號碼"<<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<<"網絡啟動失?。?<<WSAGetLastError()<<endl;return;}if(!m_sock.Connect("10.201.1.55",PORT)){ cout<<"連接網絡服務器時失?。。ㄥe誤號碼:"<<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<<"請輸入你想執(zhí)行的功能序號:"<<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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年家政服務服務調整協(xié)議
- 2025年度木材行業(yè)綠色認證及產品檢測服務合同范本4篇
- 2025年婚禮廣告合作協(xié)議
- 二零二五年度房地產項目納稅擔保及貸款擔保合同2篇
- 2025年度美容院養(yǎng)生產品研發(fā)與品牌孵化合同4篇
- 河南省二零二五年度事業(yè)單位勞動合同范本修訂解讀3篇
- 中英對照專業(yè)離婚合同格式(2024年修訂版)一
- 2025年度智能速記設備采購協(xié)議1分鐘速記單詞protocol企業(yè)采購合同3篇
- 2025年度民辦學校教師學生心理健康教育與輔導聘用合同4篇
- 二零二五年度XX地區(qū)集體勞動合同履行監(jiān)督與評價
- 2024年安全教育培訓試題附完整答案(奪冠系列)
- 神農架研學課程設計
- 文化資本與民族認同建構-洞察分析
- 2025新譯林版英語七年級下單詞默寫表
- 小學語文閱讀教學落實學生核心素養(yǎng)方法的研究-中期報告
- 眼內炎患者護理查房課件
- 唯物史觀課件
- 2021-2022學年四川省成都市武侯區(qū)部編版四年級上冊期末考試語文試卷(解析版)
- 中國傳統(tǒng)文化服飾文化
- 大氣污染控制工程 第四版
- 淺析商務英語中模糊語言的語用功能
評論
0/150
提交評論