版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄第1級 1第2級 2第2級 3第1級 4第2級 5第2級 61.課程設(shè)計目的本課程設(shè)計是網(wǎng)絡(luò)工程專業(yè)重要的實踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《C++程序設(shè)計》課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計的目的和任務(wù):(1)鞏固和加深學(xué)生對C++課程的基本知識的理解和掌握;(2)掌握C++編程和程序調(diào)試的基本技能;(3)利用C++進(jìn)行簡單軟件設(shè)計的基本思路和方法;(4)提高運(yùn)用C++解決實際問題的能力;(5)掌握書寫程序設(shè)計說明文檔的能力。2.課程設(shè)計任務(wù)與要求:要求:1)設(shè)計題目、設(shè)計要求以及系統(tǒng)功能需求分析;2)總體設(shè)計:包括模塊說明、模塊結(jié)構(gòu)圖和系統(tǒng)流程圖;3)詳細(xì)設(shè)計:包括主要功能模塊的算法設(shè)計思路以及對應(yīng)的工作流程圖;4)源程序代碼及設(shè)計成果:完整源程序清單和設(shè)計成果;5)總結(jié):調(diào)試分析過程描述:包括測試數(shù)據(jù)、測試輸出結(jié)果以及對程序調(diào)試過程中存在問題的思考(列出主要問題的出錯現(xiàn)象、出錯原因、解決方法及效果等)包括課程設(shè)計過程中的學(xué)習(xí)體會與收獲、對C++和本次課程設(shè)計的認(rèn)識等內(nèi)容;任務(wù):以本班同學(xué)的具體數(shù)據(jù)為背景,設(shè)計一個本班同學(xué)通訊錄。實現(xiàn)功能:1)
通訊錄編輯(添加、刪除)。2)
按不同的項進(jìn)行查找。3)
對已存在的通訊錄按不同的項排序。4)
將通訊錄寫入文件。5)
從文件讀入通訊錄。備注:通訊錄至少應(yīng)該有以下數(shù)據(jù)項:姓名,地址,電話,郵編,E-mail。3.課程設(shè)計說明書概要設(shè)計一、模塊說明在我設(shè)計的程序中一共包括了六個部分,分別是:初始化通訊錄、搜索(Search_information())、編輯(Edit_information())、刪除(Delete_information())、排序(Order_list())、添加(Add_information())。其中搜索排序又分若干個子模塊。在初始化中直接調(diào)用每個對象的成員函數(shù)通過鍵盤錄入來對對象進(jìn)行初始化,整個6大模塊通過定義Switch語句來接收輸入指令并執(zhí)行相應(yīng)模塊,若干子模塊同理通過定義不同的Switch函數(shù)或者if函數(shù)來達(dá)到選擇功能的作用。在初始化中直接調(diào)用每個對象的成員函數(shù)通過鍵盤錄入來對對象進(jìn)行初始化,同時在每個模版中還加入了其實用戶的語句。通過在每個函數(shù)里面用if選擇語句和goto指向來判斷用戶是要回到主界面以顯示主菜單繼續(xù)操作還是選擇結(jié)束程序。二、模塊結(jié)構(gòu)圖模塊結(jié)構(gòu)圖是結(jié)構(gòu)化設(shè)計方法,采用類似于結(jié)構(gòu)化分析的“由大到小”、“自頂向下,逐層分解”的基本思想描述(分解)系統(tǒng)。結(jié)構(gòu)化設(shè)計方法,首先以數(shù)據(jù)流圖為基礎(chǔ)導(dǎo)出系統(tǒng)模塊(功能)結(jié)構(gòu)圖。在導(dǎo)出系統(tǒng)模塊(功能)結(jié)構(gòu)圖的過程中,以獨立性、低耦合性、高內(nèi)聚性、公共模塊作為模塊劃分的原則。先將系統(tǒng)數(shù)據(jù)流圖中的加工轉(zhuǎn)換成模塊,再將各大模塊繼續(xù)劃分為較小的模塊,直到每一模塊都是功能單一的模塊。班級通訊錄系統(tǒng)班級通訊錄系統(tǒng)搜索功能按學(xué)號搜索按姓名搜索退出編輯功能搜索功能按學(xué)號搜索按姓名搜索退出編輯功能刪除功能添加功能排序功能對同學(xué)各信息修改定位到該同學(xué)添加新的信息按姓名排序按學(xué)號排序?qū)ν瑢W(xué)各信息修改定位到該同學(xué)添加新的信息按姓名排序按學(xué)號排序顯示信息顯示信息刪除信息顯示信息顯示信息刪除信息三、系統(tǒng)流程圖⑴主要模塊介紹開始開始錄入初始信息主函數(shù)界面鍵入iSwitch(i)case1case2case4case3case5case6搜索(Search_information())編輯(Edit_information())刪除(Delete_information())排序(Order_list())添加(Add_information())退出通訊錄系統(tǒng)結(jié)束=2\*GB2⑵各功能模塊設(shè)計思路及流程圖:搜索功能:該功能通過鍵盤輸入數(shù)值j,選擇調(diào)用不同的具體的搜索功能函數(shù);在這兩種功能中,分別又通過for循環(huán)和if條件判斷找出符合條件的同學(xué)的信息,完成功能要求。最后通過選擇是否繼續(xù)來繼續(xù)搜索或者返回主函數(shù)界面。Search_information()Search_information()鍵入jSwitch(j)case1case22按學(xué)號搜索(search1())按姓名搜索(search2())繼續(xù)2是否主函數(shù)界面②編輯功能:該功能主要通過鍵盤首先輸入需要編輯的同學(xué)姓名,然后通過一個for循環(huán)查找到,如果找到信息,則可以繼續(xù)往下進(jìn)一步修改信息,如果找不到,則輸出沒有該同學(xué)信息。在定位到具體的對象之后,再通過一個switch語句選擇具體修改的信息并修改,修改之后,調(diào)用對象的成員函數(shù)顯示新的信息,然后通過if判斷是否繼續(xù)來選擇繼續(xù)修改或者返回主函數(shù)界面。沒有此信息沒有此信息Edit_information()鍵入name是否有此姓名無有鍵入jSwitch(j)case1case2case3case4case5修改學(xué)號修改郵箱修改地址修改姓名修改郵編修改電話case6繼續(xù)是否主函數(shù)界面刪除功能:Add_information()Add_information()調(diào)用成員函數(shù)type_information()修改成功主函數(shù)是否繼續(xù)是否添加新成員功能:Delete_information()Delete_information()輸入姓名找到刪除主函數(shù)排序功能:Order_list()Order_list()輸入jSwitchjCase1Case2按學(xué)號排序order1()按姓名排序Order2()顯示所有信息主函數(shù)4.課程設(shè)計成果#include<iostream>#include<fstream>#include<string>#include<iomanip>usingnamespacestd;structclassmates{public: charnumber; charname; charaddress; chartelephone_number; charyoubian; chare_mail; voiddisplay()//顯示信息 { {cout<<"學(xué)號:"<<number <<"姓名:"<<name <<"地址:"<<address <<"電話號碼:"<<telephone_number <<"郵編:"<<youbian <<"郵箱:"<<e_mail<<endl;} } voidtype_information() { cout<<"請輸入學(xué)號:"; cin>>number; cout<<"請輸入姓名:"; cin>>name; cout<<"請輸入地址:"; cin>>address; cout<<"請輸入電話號碼:"; cin>>telephone_number; cout<<"請輸入郵編:"; cin>>youbian; cout<<"請輸入e-mail:"; cin>>e_mail; }};classmatesAddress_list1[50],Address_list[50];intn=0;voidsearch1()//按學(xué)號搜索{ stringNUM; intk; intf=1; cout<<"請輸入學(xué)號:"; cin>>NUM; for(k=0;k<n;k++) { if(Address_list1[k].number==NUM) { Address_list1[k].display();f=0;break; } }if(f==1) {cout<<"沒有該同學(xué)信息!"<<endl;}}voidsearch2()//按姓名搜索{ intk,f=1; stringname1; cout<<"請輸入姓名:"; cin>>name1; for(k=0;k<n;k++) { if(name1==Address_list1[k].name) { Address_list1[k].display(); f=0;break; } } if(f==1)cout<<"沒有該同學(xué)信息!"<<endl;}voidSearch_information()//搜索功能{ intj; cout<<"**************************************"<<endl; cout<<"1.按學(xué)號搜索;"<<endl; cout<<"2.按姓名搜索;"<<endl; cout<<"3.返回;"<<endl; cout<<"請選擇:"; cin>>j; system("cls");//清屏 switch(j) { case1:search1();break;//調(diào)用按學(xué)號搜索函數(shù) case2:search2();break;//調(diào)用按姓名搜索函數(shù) case3:break; } j=0; cout<<"*******************************"<<endl; cout<<"是否繼續(xù)搜索(1.是/2.否)"<<endl; cin>>j; system("cls");//清屏 if(j==1) { Search_information(); }}voidedit_display()//顯示編輯成功{ cout<<"修改成功"<<endl; cout<<"*******************************"<<endl;}voidEdit_information()//編輯功能{ inttemp=-1,k; stringnam,name1,address1,e_mail1,number1,youbian1,telephone_number1; cout<<"請輸入想要修改的同學(xué)姓名:"<<endl; cin>>nam; for(k=0;k<n;k++)//找到滿足條件的同學(xué)姓名并記錄 { if(nam==Address_list1[k].name) {temp=k;break;} } if(temp!=-1)//編輯各個信息 { cout<<"*******************************"<<endl; cout<<"請輸入想要修改的信息(1.學(xué)號/2.姓名/3.地址/4.郵編/5.電話號碼/6.e-mail)"; cout<<endl; cin>>k; switch(k) { case1:cout<<setw(10)<<"請輸入新學(xué)號:"; cin>>number1;Address_list1[temp].number=number1; edit_display();break; case2:cout<<"請輸入新姓名:";cin>>name1; Address_list1[temp].name=name1; edit_display();break; case3:cout<<"請輸入新地址:";cin>>address1; Address_list1[temp].address=address1; edit_display();break;case4:cout<<"請輸入新郵編:";cin>>youbian1; Address_list1[temp].youbian=youbian1; edit_display();break; case5:cout<<"請輸入新電話號碼:";cin>>telephone_number1; Address_list1[temp].telephone_number=telephone_number1; edit_display();break;case6:cout<<"請輸入新e_mail:";cin>>e_mail1; Address_list1[temp].e_mail=e_mail1; edit_display();break; }cout<<"已修改的新的同學(xué)信息:"<<endl;Address_list1[temp].display(); } else {k=0; cout<<"沒有該同學(xué)信息!"<<endl;cout<<"*******************************"<<endl;cout<<"是否繼續(xù)修改?(1.是/2.否)"<<endl;cin>>k;if(k==1)//選是,繼續(xù)回到該函數(shù)開頭{Edit_information();} else { system("cls");//否則,退出并清屏 } }}voidDelete_information()//刪除功能{intk;stringnam;cout<<"請輸入想要刪除的同學(xué)姓名:"<<endl;cin>>nam;for(k=0;k<n-1;k++) { if(nam==Address_list1[k].name) { Address_list1[k].number="f"; Address_list1[k].name="f"; Address_list1[k].address="f"; Address_list1[k].youbian="f"; Address_list1[k].telephone_number="f"; Address_list1[k].e_mail="f"; } }cout<<"該同學(xué)信息已刪除!"<<endl;}voidAdd_information()//添加功能{Address_list1[n].type_information();cout<<endl;Address_list1[n].display(); n=n+1; cout<<endl; cout<<endl;}voidorder1()//按學(xué)號排序(選擇排序法){ intj,k; stringch="f"; classmatesinformation;for(j=0;j<n-1;j++) for(k=j+1;k<n;k++) { if(Address_list1[k].number<Address_list1[j].number) { information=Address_list1[j]; Address_list1[j]=Address_list1[k]; Address_list1[k]=information; } } for(j=0;j<n;j++) { if(Address_list1[j].number==ch) { } else Address_list1[j].display(); }}voidorder2()//按姓名排序(選擇排序法){ intj,k; stringch="f"; classmatesinformation;for(j=0;j<n-1;j++) for(k=j+1;k<n;k++) { if(Address_list1[k].name<Address_list1[j].name) { information=Address_list1[j]; Address_list1[j]=Address_list1[k]; Address_list1[k]=information; } } for(j=0;j<n;j++) { if(Address_list1[j].number==ch) { } else Address_list1[j].display(); }}voidOrder_list()//排序并顯示{ intchoice; cout<<"1.按學(xué)號排序;"<<endl; cout<<"2.按姓名排序;"<<endl; cin>>choice; system("cls"); if(choice==1) { order1(); } else { order2(); } cout<<endl; cout<<endl;}intmain(){fstreamoutfile("information.dat",ios::out);//以輸出方式打開文件 if(!outfile) { cerr<<"openerror!"<<endl; exit(1); } fstreaminfile("information.dat",ios::in);//以輸入方式打開文件 if(!infile) { cerr<<"openerror!"<<endl; exit(1); } inti;cout<<"請先添加部分同學(xué)信息:"<<endl;cout<<"請輸入想要添加的同學(xué)人數(shù):"<<endl;cin>>n; for(i=0;i<n;i++) {cout<<"第"<<i+1<<"位同學(xué)"<<endl; Address_list[i].type_information(); outfile<<Address_list[i].number<<endl; infile>>Address_list1[i].number; outfile<<Address_list[i].name<<endl; infile>>Address_list1[i].name; outfile<<Address_list[i].address<<endl; infile>>Address_list1[i].address; outfile<<Address_list[i].telephone_number<<endl; infile>>Address_list1[i].telephone_number; outfile<<Address_list[i].youbian<<endl; infile>>Address_list1[i].youbian; outfile<<Address_list[i].e_mail<<endl; infile>>Address_list1[i].e_mail; } system("cls");A: cout<<"************開發(fā)者:賁新宇******班級:G計算機(jī)131班******"<<endl; cout<<"********************************************************"<<endl;cout<<"G計算機(jī)131班同學(xué)通訊錄"<<endl;cout<<endl; cout<<endl;cout<<endl; { cout<<"請選擇以下功能:"<<endl; cout<<"1.搜索"<<endl; cout<<"2.編輯"<<endl; cout<<"3.刪除"<<endl; cout<<"4.添加新成員"<<endl;cout<<"5.排序并顯示信息"<<endl; cout<<"6.退出"<<endl; cout<<"請選擇:";i=0; cin>>i; system("cls");//清屏 switch(i) { case1:Search_information();break; case2:Edit_information();break; case3:Delete_information();break; case4:Add_information();break;case5:Order_list();break; case6:gotoB; } i=0; gotoA; }B:for(i=0;i<n;i++)//再次向文件中保存修改的信息{ outfile<<Address_list1[i].number<<endl;outfile<<Address_list1[i].name<<endl;outfile<<Address_list1[i].address<<endl;outfile<<Address_list1[i].telephone_number<<endl;outfile<<Address_list1[i].youbian<<endl;outfile<<Address_list1[i].e_mail<<endl;}infile.close(); outfile.close(); return0;}結(jié)果截圖:通訊錄初始化搜索功能編輯功能刪除功能添加成員功能排序并顯示信息退出5.課程設(shè)計心得通過這次課程設(shè)計,鞏固了c++的知識,對c++有了更深的了解,尤其是對文件操作方面,有了進(jìn)一步的認(rèn)識和理解。同時增強(qiáng)了動手能力,感受到了c++編程的樂趣。在本次設(shè)計中,我遇到了很多的問題,比如,首先在類的定義時,是否不用其display()成員函數(shù),而在別的函數(shù)要顯示該信息時直接調(diào)用;顯然,如果用成員函數(shù)display()的話,可以使代碼結(jié)構(gòu)更加清晰,看起來更清爽,因此我選擇了在類中定義這樣的一個函數(shù),并且在需要時方便調(diào)用。第二,在對對象賦值時,我一開始并沒有用type_information(),而是直接用for循環(huán)一個一個的對對象賦值,然而,這樣一來賦值時候語句特別啰嗦,因此再后邊的設(shè)計中,將賦值直接改用成員函數(shù)來對對象進(jìn)行初始化。當(dāng)然,在各個模塊設(shè)計時,問題也不少,例如,在搜索功能中,用for循環(huán)來逐項比對,代碼如下:for(k=0;k<n;k++) { if(Address_list1[k].number==NUM) { Address_list1[k].display();break; } }Else { cout<<"沒有該同學(xué)信息!"<<endl; } }這樣一來,一旦if中沒有滿足條件,就會在else中輸出:”沒有該同學(xué)信息!”一共輸出n-1次或者n次,代碼就出現(xiàn)邏輯錯誤,解決的方法就是再添加一個變量f,對f進(jìn)行判斷,代碼如下:for(k=0;k<n;k++) { if(Address_list1[k].number==NUM) { Ad
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《威海節(jié)日習(xí)俗》課件
- 《室內(nèi)設(shè)計課件》課件
- 單位管理制度集合大合集人力資源管理篇
- 單位管理制度合并選集【員工管理篇】十篇
- 單位管理制度分享匯編員工管理篇
- 單位管理制度分享大全人員管理篇十篇
- 《審計與管理》課件
- 《客房優(yōu)化方案》課件
- 《診斷思路》課件
- (高頻選擇題50題)第2單元 社會主義制度的建立與社會主義建設(shè)的探索(解析版)
- 2024年秋季生物教研組工作計劃
- 2024年云南高中學(xué)業(yè)水平合格考?xì)v史試卷真題(含答案詳解)
- 2025年董事長年會發(fā)言稿范文
- 醫(yī)院廉潔購銷合同
- 車間設(shè)備線路安裝方案
- 專題11 名著閱讀之《童年》(考題猜想)(期中真題速遞20題)(含答案解析)
- Unit 1 You and Me Section A 1a~Pronunciation說課稿-2024-2025學(xué)年人教版英語七年級上冊
- 補(bǔ)牙講課課件
- 電動車著火應(yīng)急預(yù)案
- 國家自然科學(xué)基金申請書模板三篇
- 系統(tǒng)運(yùn)行維護(hù)方案
評論
0/150
提交評論