




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、程序設計基礎課程設計報告設計題目學生通訊錄管理系統(tǒng)學生姓名周春學生班級計科1141學生學號201511621141指導教師陳英完成時間: 2014 年 5 月 28 日目錄1.課程設計目的··································
2、183;·············32.課程設計案例···································
3、;··············33.課程設計要求··································
4、183;·············34.課程設計內(nèi)容···································
5、;·············35.總體設計···································
6、3;················36.各模塊流程圖································&
7、#183;···············47.詳細設計·································
8、···················68.調(diào)試與測試·····························
9、3;····················79.總結與體會····························
10、183;·····················910參考文獻···························&
11、#183;·····················1011.源程序清單··························
12、83;·····················11一課程設計案例學生通訊錄管理系統(tǒng)二需求分析1.設計目的:1)進一步鞏固和掌握C+語言基本知識;2) 進一步鍛煉利用C+語言進行程設計的能力;3)進一步理解和面向?qū)ο蟪绦蛟O計的思想和方法;4)初步掌握開發(fā)一個小型管理系統(tǒng)的基本方法;5)學會調(diào)試一個較長程序的基本方法;6)學會利用流程圖表示算法;7)掌握書寫程序設計開發(fā)文檔的能力(書寫課程
13、設計報告)。8)繼續(xù)為后續(xù)課程的學習打下堅實的基礎;2.(客戶)集體需求:為了方便計科1141班每一位同學之間的聯(lián)系,必然需要創(chuàng)建一個通訊錄管理系統(tǒng)來管理每一位同學的聯(lián)系信息,每一條記錄包括一個學生的電話、姓名、郵編、E-mial和地址;而且每一條記錄的管理涉及到保存、修改、查詢、刪除、記錄讀取、聯(lián)系人排序以及整個系統(tǒng)的格式化功能(務必謹慎使用?。?.系統(tǒng)功能設計(功能選項為1-9):1)主界面(功能選項1-9的整形數(shù)據(jù)):提供用戶多要選擇的功能選項,若輸入這個范圍意外的數(shù),則輸出錯誤語句;2)輸入功能:可以一次完成35條以內(nèi)學生記錄的輸入,包括學生的學號、姓名、地址、郵編、電話和E-mai
14、l;3)修改功能:通過輸入所要修改的同學的名字,選擇要修改的項目信息,進行多個學生信息的修改;若輸入的姓名不存在,則提示“輸入有誤”;4)查找功能:完成按姓名(學號)連續(xù)查找單個學生信息并顯示,若輸入姓名(學號)不存在,則輸出提示語句“輸入錯誤”;5)刪除功能:按輸入的姓名連續(xù)刪除一個學生的所有信息,若輸入除N/n、Y/y外的字符,則輸出“輸入錯誤!”;若該姓名不存在,則輸出“沒有匹配的名字!”;6)排序功能:按輸入的學號(姓名)進行學生信息的升序排序,若輸入不對應數(shù)據(jù)類型或越界的選項,則輸出錯誤提示語句“歡迎使用本軟件! ”并自動退出程序;7)文件寫入功能:完成全部學生記錄的保存,并在工程文
15、件夾內(nèi)部創(chuàng)建該文件的txt文件;8)文件讀入功能:輸入目標文件(txt)的文件名,導入通訊錄。并能正確顯示出來;若未找到指定的文件名,則輸出“未找到導入文件名!”;另外,在成功導入文件之后,添加聯(lián)系人時輸出無誤,但本地原有記錄會重復(bug)9)格式化功能:用于完成所有學生記錄的刪除,將目標文件導入通訊錄清空聯(lián)系人輸出“操作成功!”,當顯示聯(lián)系人時,輸出“所有聯(lián)系人信息顯示如下:沒有聯(lián)系人可以輸出!”,但是本地文件內(nèi)容不能刪除(bug)!10)顯示功能:完成所有學生信息的輸出。對于存在的學生記錄,原樣輸出并后綴“輸出完畢!”,若無學生記錄,則輸出提示語句:“所有聯(lián)系人信息顯示如下:沒有聯(lián)系人可
16、以輸出!”。三概要設計1.總體設計:按照功能可以將這個系統(tǒng)分為以下模塊:輸入(添加)模塊、修改模塊、刪除(或格式化)模塊、查找模塊、顯示模塊.、文件讀寫模塊和排序模塊??傮w設計流程如下圖所示:主函數(shù)添加保存顯示刪除修改格式化退出排序2.數(shù)據(jù)結構設計:本程序中包含1個類class inter和一個結構體struct student,代碼如下:struct student char no13; char name20;char address100; char tel_no12; char post_code7; char e_mail40; ;class inter private: stude
17、nt st35; public: void add();void del(); void find();void list1(); void list2(); void correct(); void read(); void write(); void format(); void show();void print(int i) cout<<"學號:"<<sti.no<<endl; cout<<"姓名:"<<<<endl; cout<<"地址
18、:"<<sti.address<<endl; cout<<"電話號碼:"<<sti.tel_no<<endl; cout<<"郵編:"<<sti.post_code<<endl; cout<<"E_MAIL:"<<sti.e_mail<<endl; ; 四詳細設計1.函數(shù)使用情況和用戶說明(1)add()函數(shù):主菜單功能選項“1”,用于添加學生信息。當輸出提示語句時,輸入相應信息,按enter鍵
19、結束輸入第一個學生的信息;按N/n或Y/y決定是否繼續(xù)添加學生信息,若輸入N/n,則選擇退出程序或返回主菜單,若輸入提示按鈕以外的鍵,程序?qū)⒆詣雨P閉;(2)correct()函數(shù):主菜單功能選項“2”,用于修改學生練習信息。當輸出提示語句時,輸入需要修改的同學的名字,然后選擇要修改的項目,輸入修改后的一個選項按enter鍵結束,按N/n或Y/y決定是否繼續(xù)修改學生信息,若輸入N/n,則選擇退出程序或返回主菜單;(3)find()函數(shù):主菜單功能選項“3”,用于查詢單個聯(lián)系人。根據(jù)提示語句,可選擇按姓名或?qū)W號查詢學生信息,結束操作同上。只有當輸入的學生姓名(學號)錯誤時,輸出錯誤提示語句“找不到
20、輸入的姓名?。ㄝ斎脲e誤!找不到輸入的學號!”);(4)del()函數(shù):主菜單功能選項“4”,用于刪除一條或連續(xù)刪除學生聯(lián)系方式。輸入想要刪除的聯(lián)系人姓名進行判斷,若判斷正確,刪除成功!若輸入的姓名有誤或不存在,則輸出提示語句“沒有找到匹配的名字!”。結束操作同上;(5)排序函數(shù):主菜單功能選項“5”,用于將聯(lián)系人升序排列,,可選擇按姓名或?qū)W號排序,當輸入功能選項鍵錯誤時,程序?qū)⒁馔怅P閉。list1()函數(shù):按學號排序,對應功能<1>。list2()函數(shù):按姓名排序?qū)δ?lt;2>。(6)write()函數(shù):主菜單功能選項“6”,用于學生聯(lián)系信息的保存,當導入聯(lián)系人、添加聯(lián)
21、系人成功之后,即可保存,自定義保存的文件名,也可以是直接保存在原有文件夾,后續(xù)操作同上; (7) read()函數(shù):主菜單功能選項“7”, 用于將本地信息文件讀入系統(tǒng),但不能超過系統(tǒng)的容量。先輸入要導入的文件名,文件名正確,導入成功!后續(xù)操作同上;若文件名錯誤,則系統(tǒng)自動關閉;(8)format()函數(shù):主菜單功能選項“8”,用于通訊錄格式化,請謹慎使用?。?)show()函數(shù):主菜單功能選項“9”,用于顯示所有聯(lián)系人的聯(lián)系方式,若通訊錄不為空,則輸出聯(lián)系人信息(未經(jīng)排序的話,則以添加順序輸出),后續(xù)操作同上;若通訊錄為空,則輸出提示語句“無聯(lián)系人要輸出!”。2.各模塊算法圖及運行圖1)主界面
22、2)添加模塊算法圖:開始主菜單cin>>select1添加聯(lián)系人是否繼續(xù)添加 Y返回主菜單或退出T/R N R T結束運行圖3)修改模塊運行圖算法圖:主菜單開始修改聯(lián)系人cin>>name是否找到匹配項未找到匹配項 N Y輸入修改項修改成攻繼續(xù)修改? Y退出或返回菜單 N R 結束 T4)查詢模塊算法圖開始主菜單查詢聯(lián)系人按學號按姓名Cin>>no4Cin>>name4是否找到匹配項是否找到匹配項 N N輸入錯誤!輸出聯(lián)系人信息繼續(xù)查詢? Y N退出或返回?T/R R T結束運行圖:5)刪除模塊算法圖:開始主菜單cin>>select
23、1刪除聯(lián)系人cin>>name是否找到匹配項未找到匹配的名字! N Y刪除成功是否繼續(xù) Y返回還是退出T/R T結束運行圖:6)排序模塊算法圖:開始主菜單輸出聯(lián)系人信息返回或退出T/R結束排序功能按姓名按學號運行圖:7)文件寫入算法圖:開始主菜單寫入文件cin>name打開錯誤!svefile? 0 1操作成功返回或退出T/R R T結束運行圖:該文件的本地記錄8)文件讀取與顯示運行圖:算法圖:開始主函數(shù)讀取文件cin>>name1File/?未找到導入文件操作成功! 1返回或退出T/R R T結束開始返回或退出T/R主菜單Int k,inter()學號是否為空輸
24、出完畢!沒有聯(lián)系人可以輸出 R結束9)格式化模塊算法圖:結束所有選項賦值為”0”操作成功!返回或退出T/R運行圖:五. 調(diào)試分析a調(diào)試過程中遇到的問題是如何解決的以及對設計與實現(xiàn)的回顧討論和分析1若程序運行達不到預想的結果,不知道它執(zhí)行到哪條語句,我通過在相應位置設置斷點的調(diào)試方法查明它的運行情況,從而完善自己的代碼。2 有時一些邏輯錯誤也需要進行調(diào)試解決,例如,一些變量的定義放錯位置,在進行循環(huán)的時候,就收不到預想的效果了,讓你寫的函數(shù)功能實現(xiàn)不了。所以,我們在寫代碼的時候最好考慮周全一點,盡量把錯誤減到最低,解決方法可以是事先畫過流程圖或和志同道合的同學交流一下想法,共同探討,解決問題。再
25、則,就是要養(yǎng)成一個良好的編程習慣。b. 經(jīng)驗與體會通過這次課程設計,使我學到了一些以前沒有掌握的知識,使我對C+程序設計有了更深層次的認識和理解,懂得了靈活運用C+。在計算機飛速發(fā)展的今天。懂得一門計算機語言技術室非常必要的,同時,我也清醒認識到,只有自己肯努力,愿意花時間精力去學習,就能夠得到我們自己所期望的東西。最后,在此由衷的感謝那些幫助我的同學,感謝他們的悉心指導和慷慨指教,使我受益良多和我的課程設計有了較完善的一面,另外,在交流學習中,我們也增進了友誼之情,更是可貴。在課程設計過程中,收獲知識,提高能力的同時,我也學到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌
26、握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。因此在以后的生活和學習的過程中,我一定會把課程設計的精神帶到生活中,不畏艱難,勇往直前!六. 參考文獻1C+面向?qū)ο蟪绦蛟O計 陳維興 陳昕 編著2C+語言程序設計教程與實驗 溫秀梅 丁學均 李建華 主編3VC+深入詳解 孫鑫 余安萍 編著附源代碼清單:#include<iostream>#include<fstream> #include<string> using namespace std;struct student /結構體 char no13; char name20;char address100;
27、char tel_no12; char post_code7; char e_mail40; ; class inter private: student st35; public: void add(); void del(); void find(); void list1(); void list2(); void correct(); void read(); void write(); void format(); void show();void print(int i) cout<<"學號:"<<sti.no<<endl;
28、cout<<"姓名:"<<<<endl; cout<<"地址:"<<sti.address<<endl; cout<<"電話號碼:"<<sti.tel_no<<endl; cout<<"郵編:"<<sti.post_code<<endl; cout<<"E_MAIL:"<<sti.e_mail<<end
29、l; ; /主函數(shù) 首頁int main() system("color 02");inter a; a.format(); int select1; cout<<endl; top:cout<<" 歡迎使用聯(lián)系人通訊錄管理系統(tǒng)! " <<endl <<" " <<endl <<" 計科1141 " <<endl <<" " <<endl <<" 通 訊 錄 &quo
30、t; <<endl <<" " <<endl <<" 1. 添加聯(lián)系人 2. 修改信息 " <<endl <<" " <<endl <<" 3. 查詢聯(lián)系人 4. 刪除聯(lián)系人 " <<endl <<" " <<endl <<" 5. 按序排列 6. 將資料寫入文件 " <<endl <<" "
31、; <<endl <<" 7. 將文件讀入程序 8. 格式化(慎用) " <<endl <<" " <<endl <<" 9. 顯示聯(lián)系人 " <<endl <<" " <<endl <<"選擇 :" ; cin>>select1; switch(select1) case 1: cout<<" 輸入添加的資料:"<<en
32、dl; a.add(); cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back_add; cin>>back_add; if(back_add='R'|back_add='r') goto top; else goto bottom; break; case 2: a.correct();cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back_correct; cin>>back
33、_correct; if(back_correct='R'|back_correct='r') goto top; else goto bottom; break; case 3:a.find();cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back_f1; cin>>back_f1; if(back_f1='R'|back_f1='r') goto top; else goto bottom; break; case 4: a.del(
34、);cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back_del; cin>>back_del; if(back_del='R'|back_del='r') goto top; else goto bottom; break; case 5:cout<<" (1)按學號排序:"<<endl; cout<<" (2)按姓名排序:"<<endl; cout<<" 請
35、選擇:" char select3; cin>>select3; switch(select3) case '1':a.list1(); cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back; cin>>back; if(back='R'|back='r') goto top; else goto bottom; break; case '2':a.list2(); cout<<" 回到主菜單還
36、是退出(R為回到主菜單,不計大小寫,其他為退出): " char back1; cin>>back1; if(back1='R'|back1='r') goto top; else goto bottom; break;break;case 6:a.write();cout<<"操作成功!"<<endl;cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back_w; cin>>back_w; if(back_
37、w='R'|back_w='r')goto top; else goto bottom; break; case 7:a.read(); cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back_r; cin>>back_r; if(back_r='R'|back_r='r') goto top; else goto bottom; break; case 8:cout<<" 請確認刪除所有資料!(Y/N) "
38、 char select4; cin>>select4; if(select4='Y'|select4='y') a.format(); cout<<"操作成功!"<<endl;cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " char back_f; cin>>back_f; if(back_f='R'|back_f='r') goto top; else goto bottom; break;
39、bottom:cout<<" 歡迎使用本軟件! "<<endl; return 0; case 9:a.show();cout<<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出): " cin>>back_add; if(back_add='R'|back_add='r') goto top; else goto bottom; break; default:cout<<" 輸入錯誤!"<<endl; cout<
40、;<" 回到主菜單還是退出(R為回到主菜單,不計大小寫,其他為退出,): " char back_default; cin>>back_default; if(back_default='R'|back_default='r') goto top; else goto bottom; break; /添加聯(lián)系人 void inter:add() char x; for(int i=0;i<35;i+) char no13; char name20; char address100; char tel_no12; cha
41、r post_code7; char e_mail40; cout<<" 輸入學號:"cin>>no; cout<<" 輸入姓名:" cin>>name; cout<<" 輸入地址:" cin>>address; cout<<" 輸入電話號碼:" cin>>tel_no; cout<<" 輸入郵編:" cin>>post_code; cout<<" 輸入E
42、_mail:" cin>>e_mail; while(strcmp(sti.no,"0") i+; strcpy(sti.address,address); strcpy(sti.e_mail,e_mail); strcpy(,name); strcpy(sti.no,no); strcpy(sti.post_code,post_code); strcpy(sti.tel_no,tel_no);cout<<"是否繼續(xù)添加,N或n表不再添加,y和Y表繼續(xù):" ;cin>>x;strcpy(sti
43、.address,address); if(x='n'|x='N')break;else if(x='y'|x='Y');elsecout<<"輸入錯誤!"<<endl;break; /刪除聯(lián)系人void inter:del() char x;for(int k=0;k<35;k+) int b=0;cout<<" 輸入要刪除人的姓名:" char name20; cin>>name;for(int i=0;i<35;i+) if(
44、!strcmp(,name) strcpy(sti.address,"0"); strcpy(sti.e_mail,"0"); strcpy(,"0"); strcpy(sti.no,"0"); strcpy(sti.post_code,"0"); strcpy(sti.tel_no,"0");cout<<"刪除成功!"<<endl;cout<<"是否繼續(xù)刪除,n或N表不再刪除,
45、y和Y表繼續(xù):" ;cin>>x; elseb+;if(b=35)cout<<"沒有匹配的名字!"<<endl;break;if(x='y'|x='Y');else if(x='n'|x='N')break;elsecout<<" 輸入錯誤!"<<endl; /修改聯(lián)系人 void inter:correct() char b;int x; for(int k=0;k<35;k+) b=0;cout<<&
46、quot; 輸入需要修改人的姓名:" char name20; cin>>name; for(int i=0;i<35;i+) if(!strcmp(,name) x=i; elseb+; if(b=35)cout<<"沒有匹配的名字!"<<endl;break;char select; cout<<" (1)修改姓名:"<<endl;cout<<" (2)修改學號:"<<endl; cout<<"
47、 (3)修改地址:"<<endl; cout<<" (4)修改郵編:"<<endl; cout<<" (5)修改電話號碼:"<<endl; cout<<" (6)修改E_MAIL:"<<endl; cout<<" 請選擇:" cin>>select; switch(select) case '1':cout<<" 輸入要修改的姓名:" char nam
48、e130; cin>>name1; strcpy(,name1); cout<<" 修改成功!"<<endl; cout<<"是否繼續(xù)修改,n或N表不再修改,y和Y表繼續(xù):" ;cin>>b;break;case '2':cout<<" 輸入要修改的學號:" char no113; cin>>no1; strcpy(stx.no,no1); cout<<" 修改成功!"<<en
49、dl; cout<<"是否繼續(xù)修改,n或N表不再修改,y和Y表繼續(xù):" ;cin>>b; break;case '3':cout<<" 輸入要修改的地址:" char address1100; cin>>address1; strcpy(stx.address,address1); cout<<" 修改成功!"<<endl; cout<<"是否繼續(xù)修改,n或N表不再修改,y和Y表繼續(xù):" ;cin>>b;
50、break;case '4':cout<<" 輸入要修改的郵編:" char post_code17; cin>>post_code1; strcpy(stx.post_code,post_code1); cout<<" 修改成功!"<<endl; cout<<"是否繼續(xù)修改,n或N表不再修改,y和Y表繼續(xù):" ;cin>>b; break;case '5':cout<<" 輸入要修改的電話號碼:"
51、char tel_no112; cin>>tel_no1; strcpy(stx.tel_no,tel_no1); cout<<" 修改成功!"<<endl; cout<<"是否繼續(xù)修改,n或N表不再修改,y和Y表繼續(xù):" ;cin>>b;break;case '6':cout<<" 輸入要修改的E_MAIL:" char e_mail140; cin>>e_mail1; strcpy(stx.e_mail,e_mail1); cout
52、<<" 修改成功!"<<endl;cout<<"是否繼續(xù)修改,n或N表不再修改,y和Y表繼續(xù):" ; cin>>b;break;if(b='y'|b='Y'); else if(b='n'|b='N')break;elsecout<<" 輸入錯誤!"<<endl; break; /查詢聯(lián)系人 void inter: find()int i; int n;int m;for(int k=0;k<3
53、5;k+) m=0;n=0;int j;cout<<" (1)根據(jù)姓名查找"<<endl; cout<<" (2)根據(jù)學號查找"<<endl; int select2; cout<<" 請選擇: " cin>>select2; switch(select2) case 1:char name420; cout<<" 輸入姓名: " cin>>name4; int x;char z;for(i=0;i<35;i+) if(!strcmp(,name4) x=i; print(x);elsen+;if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度美容院美容美發(fā)服務入股協(xié)議
- 2025年度電線電纜綠色包裝與供貨合同
- 股權代持協(xié)議書標準模板:2025年度股權收購執(zhí)行范本
- 二零二五年度交通事故車輛損失保險理賠協(xié)議
- 二零二五年度汽車展覽會參展商環(huán)保責任合同
- Unit 1 Going to Beijing 單元基礎知識復習(含答案)
- 2025年度溫室大棚承包與農(nóng)業(yè)科技成果轉(zhuǎn)化合作協(xié)議
- 二零二五年度手車過戶買賣與車輛上牌服務協(xié)議
- 兒童國畫入門課堂
- 中級消防設施操作員速記口訣
- deepseek-r1論文-中文翻譯版
- 項目式學習在小學數(shù)學教學中的應用
- 2025年中遠海運物流有限公司招聘筆試參考題庫含答案解析
- 2024年3月-6月-9月-12月青少年軟件編程Python等級考試二級真題試卷(全4套 含答案)
- 2025中智集團下屬單位公開招聘41人高頻重點提升(共500題)附帶答案詳解
- 中醫(yī)理療館路演
- 設備維修的基本技能培訓
- 產(chǎn)后腹直肌分離治療
- 2025年中國郵政招聘筆試參考題庫含答案解析
- 人教版(2024)七年級英語上冊新教材的變化及教學建議課件
- 2025年新聞部工作計劃
評論
0/150
提交評論