版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-1-青島大學(xué)軟件技術(shù)學(xué)院C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告姓名任XX專業(yè)軟件技術(shù)班級(jí)軟件技術(shù)班指導(dǎo)教師白偉青2011年7月14日目錄TOC\o"1-3"\h\z1問題定義與描述 11. 1問題定義 11.2問題描述 12總體設(shè)計(jì) 12.1主要功能模塊 12.2數(shù)據(jù)類型定義 22.3函數(shù)定義 23詳細(xì)設(shè)計(jì) 23.1每個(gè)模塊的功能 23.2流程圖 34程序測(cè)試 74.1測(cè)試主菜單界面 74.2測(cè)試添加界面 74.3測(cè)試顯示界面 74.4測(cè)試刪除界面 84.5測(cè)試查詢界面 84.6測(cè)試修改界面 94.7測(cè)試保存界面 95心得體會(huì) 106參考文獻(xiàn) 117附錄 111問題定義與描述1問題定義通訊錄管理系統(tǒng)1.2問題描述該程序應(yīng)該能夠提供添加、刪除和修改通訊錄信息的功能;基本信息包含編號(hào)、姓名、年齡、電話、通訊地址、電子郵箱等;能夠提供安不同方式查詢的功能;如按姓名、年齡或電話等查詢;能將通訊錄保存在文件中;能夠輸出通訊錄信息;并且界面友好,易于操作。2總體設(shè)計(jì)2.1主要功能模塊添加:添加通訊錄記錄。顯示:顯示通訊錄記錄。刪除:刪除通訊錄記錄。查詢:查詢通訊錄記錄。修改:修改通訊錄記錄。保存:將信息保存到文件。2.2數(shù)據(jù)類型定義typedefstruct { charscore;/*編號(hào)*/ charname[10];/*姓名*/ charnum[15];/*號(hào)碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;2.3函數(shù)定義intmenu_select()intInput(Personper[],intn)voidDisplay(Personper[],intn)intDelete_a_record(Personper[],intn)voidQuery_a_record(Personper[],intn)voidChange(Personper[],intn)voidWritetoText(Personper[],intn)3詳細(xì)設(shè)計(jì)3.1每個(gè)模塊的功能添加:可以添加通訊錄記錄,依次輸入編號(hào)、姓名、年齡、電話號(hào)碼、通訊地址、電子郵箱后,會(huì)提示是否繼續(xù)添加。顯示:可以以表格形式輸出所有通訊錄里的記錄刪除:輸入欲刪除的那個(gè)人的名字后,會(huì)自動(dòng)刪除他(她)的記錄內(nèi)容查詢:可以選擇用姓名、電話、地址三種方式查詢修改:輸入欲修改的那個(gè)人的名字后,再依次輸入編號(hào)、姓名、年齡、電話號(hào)碼、通訊地址、電子郵箱即可完成修改保存:輸入文件名(帶后綴名,如.txt)后,即可將通訊錄信息保存到文件3.2流程圖開始添加模塊:可以添加通訊錄記錄,依次輸入編號(hào)、姓名、年齡、電話號(hào)碼、通訊地址、電子郵箱后,會(huì)提示是否繼續(xù)添加,如圖3.1。開始i=0i=0sign!='n'&&sign!='N'Nsign!='n'&&sign!='N'輸入變量輸入變量Yreturn(n+i);return(n+i);結(jié)束結(jié)束圖3.1添加通訊錄記錄顯示模塊:輸出所有通訊錄里的記錄,如圖3.2。開始開始i=1i=1i<n+1i<n+1輸出記錄輸出記錄i++i++結(jié)束結(jié)束圖3.2顯示通訊錄記錄刪除模快:輸入欲刪除的那個(gè)人的名字后,會(huì)自動(dòng)刪除他(她)的記錄內(nèi)容,如圖3.3。開始開始輸入名字輸入名字strcmp(per[i].name,s)!=0&&i<n++;strcmp(per[i].name,s)!=0&&i<n++;沒有此人沒有此人刪除此項(xiàng)記錄刪除此項(xiàng)記錄結(jié)束結(jié)束圖3.3刪除通訊錄記錄查詢模塊:可以選擇用姓名、電話、地址三種方式查詢,如圖3.5。開始開始輸入名字輸入名字strcmp(per[i].name,s)!=0&&i<nstrcmp(per[i].name,s)!=0&&i<n沒有此人沒有此人顯示記錄顯示記錄結(jié)束結(jié)束圖3.4查詢通訊錄記錄(以姓名查詢方式為例)修改模塊:輸入欲修改的那個(gè)人的名字后,再依次輸入編號(hào)、姓名、年齡、電話號(hào)碼、通訊地址、電子郵箱即可完成修改,如圖3.5。開始開始輸入名字輸入名字strcmp(per[i].name,s)!=0&&i<nstrcmp(per[i].name,s)!=0&&i<n沒有此人沒有此人錄入修改內(nèi)容錄入修改內(nèi)容結(jié)束結(jié)束圖3.5修改通訊錄記錄開始保存模塊:,輸入文件名(帶后綴名)后,即可將通訊錄信息保存到文件。如圖3.7開始輸入文件名輸入文件名i(fp=fopen(filename,"w"))==NULLi(fp=fopen(filename,"w"))==NULL無法打開文件無法打開文件存入記錄存入記錄結(jié)束結(jié)束圖3.7保存通訊記錄4程序測(cè)試4.1測(cè)試主菜單界面主界面如圖4.1圖4.1主界面4.2測(cè)試添加界面進(jìn)入添加界面,如圖4.2。圖4.2添加界面4.3測(cè)試顯示界面進(jìn)入顯示界面,如圖4.3。圖4.3顯示界面4.4測(cè)試刪除界面進(jìn)入刪除界面,如圖4.4。圖4.4刪除界面4.5測(cè)試查詢界面進(jìn)入查詢界面,如圖4.5。圖4.5查詢界面4.6測(cè)試修改界面進(jìn)入修改界面,如圖4.6。圖4.6修改界面4.7測(cè)試保存界面進(jìn)入保存界面,如圖4.7。圖4.7保存界面5心得體會(huì)這次的C語(yǔ)言程序?qū)嵲O(shè)計(jì)實(shí)訓(xùn)是對(duì)我們進(jìn)入大學(xué)以來學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)成果的一次大檢驗(yàn)。自己動(dòng)手,自己發(fā)現(xiàn)和解決問題。發(fā)現(xiàn)了自己的許多不足。平時(shí)沒有掌握好的知識(shí)在這次實(shí)驗(yàn)中徹底暴露出來,經(jīng)過不斷思考,不斷查閱資料和上機(jī)運(yùn)行,解決其中大部分問題,當(dāng)然還存在一些問題沒有解決。我相信在以后的學(xué)習(xí)能夠解決好它們。但是,收獲還是不小的,我不僅對(duì)C的操作有了進(jìn)一步的掌握,還了解到了程序設(shè)計(jì)的書寫風(fēng)格及其注釋的格式。當(dāng)我選擇通訊錄這個(gè)題目時(shí),一開始想運(yùn)用大量鏈表及指針來完成,但是在慢慢琢磨之后,覺得這個(gè)不一定要用鏈表,于是改變了編程思路。當(dāng)然還有不少文件的讀寫問題,不過還是通過不斷測(cè)試之后順利解決了。另外一點(diǎn)要說的就是這個(gè)程序用了很多的循環(huán),因此對(duì)于循環(huán)的控制要十分小心。本次C語(yǔ)言的實(shí)訓(xùn)讓我對(duì)C語(yǔ)言的學(xué)習(xí)又有了更深入的了解,也讓我更深刻地領(lǐng)悟“實(shí)踐出真理”這個(gè)道理,在上機(jī)實(shí)踐過程中學(xué)到的知識(shí)遠(yuǎn)遠(yuǎn)超過了在課堂上十幾周學(xué)到的,學(xué)校組織的這次實(shí)訓(xùn)讓我們這些實(shí)踐知識(shí)匱乏的大學(xué)生增添了許多社會(huì)經(jīng)驗(yàn),為我們將來走上工作崗位其了不小的鋪墊作用。本次實(shí)訓(xùn)中遇到了很多以前沒有遇到過的問題。但在老師同學(xué)的幫助下,我順利的結(jié)束了本次實(shí)習(xí)。并且,通過一種題材兩中方式的學(xué)習(xí),我掌握了更多的知識(shí)。書上和老師教的內(nèi)容是有限的,我們需要不斷地靠自己去學(xué)習(xí),向他人請(qǐng)教,了解和掌握更多的知識(shí),這樣我們才能編出更好的C語(yǔ)言程序。此次編寫的是一個(gè)應(yīng)用程序,相對(duì)于以前我們見到的程序,它要大得多,運(yùn)行的結(jié)果也沒有預(yù)想中的好,數(shù)據(jù)的輸出格式不太規(guī)范,而且各模塊也出現(xiàn)了一些小問題,在老師同學(xué)們的幫助下,我很有耐心的一次又一次的進(jìn)行修改,最后運(yùn)行的結(jié)果基本上達(dá)到了預(yù)期的目的。已有的那些功能雖已能基本上滿足用戶的需要,但如果還有更多的功能程序就會(huì)更加完美。最后,要感謝學(xué)校為我們提供這次實(shí)訓(xùn)機(jī)會(huì),也要感謝老師的幫助與支持。6參考文獻(xiàn)[1]劉振安,劉燕君.《C程序設(shè)計(jì)課程設(shè)計(jì)》[M].北京:機(jī)械工業(yè)出版社,2004年9月[2]譚浩強(qiáng).《C程序設(shè)計(jì)》(第三版).清華大學(xué)出版社,2005年7月[3]嚴(yán)蔚敏,吳偉民.《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版).清華大學(xué)出版社,1997年4月[4]張?jiān)佬?《VisualC++程序設(shè)計(jì)》.蘇州大學(xué)出版社,2007年12月[5]徐寶文,《TheCProgrammingLanguage》.機(jī)械工業(yè)出版社,2004年1月[6]黃明,梁旭,周紹斌.《VisualC++信息系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例》.機(jī)械工業(yè)出版社,2005年3月[7]ALKELLEY等著,麻志毅譯.《C語(yǔ)言解析教程》.北京:機(jī)械工業(yè)出版社,2002年[8]李志球,《實(shí)用C語(yǔ)言程序設(shè)計(jì)教程》.北京:電子工業(yè)出版社,1999年[9]王立柱,《C/C++與數(shù)據(jù)結(jié)構(gòu)》.北京:清華大學(xué)出版社,2002年[10]李大友,《C語(yǔ)言程序設(shè)計(jì)》.清華大學(xué)出版社,1999年 7附錄#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct { charscore;/*編號(hào)*/ charname[10];/*姓名*/ charnum[15];/*號(hào)碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;Personpe[80];intmenu_select() { charc; do{ system("cls"); printf("\t***************************************************************\n");printf("歡迎進(jìn)入通訊錄管理系統(tǒng)\n"); printf("\t***************************************************************\n");printf("添加記錄:1\n" "顯示記錄:2\n" "刪除記錄:3\n" "查詢記錄:4\n" "修改記錄:5\n" "保存記錄:6\n" "退出:0\n");printf("\t***************************************************************\n"); printf("\t\t請(qǐng)選擇(0-6):"); c=getchar(); }while(c<'0'||c>'6'); return(c-'0'); }intInput(Personper[],intn){ inti=0; charsign,x[10]; while(sign!='n'&&sign!='N') { printf("\t編號(hào):"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t年齡:"); scanf("\t%s",per[n+i].age); printf("\t電話號(hào)碼:"); scanf("\t%s",per[n+i].num); printf("\t通訊住址:"); scanf("\t%s",per[n+i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[n+i].email); gets(x); printf("\n\t是否繼續(xù)添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);}voidDisplay(Personper[],intn){ inti; printf("\t***************************************************************\n"); printf("編號(hào)姓名年齡電話號(hào)碼通訊地址電子郵箱\n"); printf("\t***************************************************************\n"); for(i=1;i<n+1;i++) { printf("\t%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t***********************************\n"); printf("\t"); system("pause"); printf("\t***********************************\n"); } } printf("\t***************************************************************\n"); system("pause");}intDelete_a_record(Personper[],intn){ chars[20]; inti=0,j; printf("\t請(qǐng)輸入想刪除記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已經(jīng)成功刪除!\n"); return(n-1);}voidQuery_a_record(Personper[],intn){ intm; printf("\t請(qǐng)選擇查詢方式:\n");printf("\t*****************\n");printf("\t姓名:1\n");printf("\t電話:2\n");printf("\t地址:3\n");printf("\t返回:4\n");printf("\t*****************\n");printf("\t請(qǐng)選擇:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("輸入錯(cuò)誤,請(qǐng)重新選擇:"); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t請(qǐng)輸入想查詢的姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號(hào):%d\n",per[i].score); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號(hào)碼:%s\n",per[i].num); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t請(qǐng)輸入想查詢的電話:"); scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號(hào):%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==3) { chars[20]; inti=0; printf("\t請(qǐng)輸入想查詢的地址:"); scanf("\t%s",s); while(strcmp(per[i].adds,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號(hào):%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號(hào)碼:%s\n",per[i].num); printf("\t電子郵箱:%s\n",per[i].email); };}voidChange(Personper[],intn){ chars[20]; inti=0; printf("\t請(qǐng)輸入想修改的記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t編號(hào):"); scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t年齡:"); scanf("\t%s",per[i].age); printf("\t電話號(hào)碼:"); scanf("\t%s",per[i].num); printf("\t通訊住址:"); scanf("\t%s",per[i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[i].email); printf("\t修改成功!");}voidWritetoText(Personper[],intn){ inti=0; FILE*fp;/*定義文件指針*/ charfilename[20];/*定義文件名*/ printf("\t保存到文件\n");/*輸入文件名*/ printf("\t請(qǐng)輸入所保存的文件名:"); scanf("\t%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\t無法打開文件\n"); system("pause"); return; } fprintf(fp,"******************************************通訊錄******************************************\n"); fprintf(fp,"編號(hào)姓名年齡電話號(hào)碼通訊地址電子郵箱\n"); fprintf(fp,"\n"); while(i<n) { fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email); i++; } fprintf(fp,"\n"); fprintf(fp,"***************************************共有%d條記錄**********************
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)政項(xiàng)目庫(kù)管理制度內(nèi)容(3篇)
- 連鎖項(xiàng)目部管理制度范本(3篇)
- 鋼結(jié)構(gòu)修理車間管理制度(3篇)
- 《GA 1236-2015非線性結(jié)點(diǎn)探測(cè)器》專題研究報(bào)告
- 《GA 719-2007警用航空器直升機(jī)類外觀制式涂裝規(guī)范》專題研究報(bào)告
- 養(yǎng)老院入住老人突發(fā)狀況應(yīng)急預(yù)案制度
- 企業(yè)內(nèi)部會(huì)議管理制度
- 2026湖南長(zhǎng)沙市南雅星沙實(shí)驗(yàn)中學(xué)秋季學(xué)期教師招聘?jìng)淇碱}庫(kù)附答案
- 2026福建海峽企業(yè)管理服務(wù)有限公司聯(lián)通外包項(xiàng)目實(shí)習(xí)生招聘參考題庫(kù)附答案
- 2026福建省面向湖南大學(xué)選調(diào)生選拔工作備考題庫(kù)附答案
- 2026年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試模擬測(cè)試卷必考題
- 廣東省廣州市八區(qū)聯(lián)考2024-2025學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量監(jiān)測(cè)數(shù)學(xué)試卷(含答案)
- 選舉法知識(shí)課件
- 蒸汽管道安裝現(xiàn)場(chǎng)施工方案
- 2026云南省產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)研究院招聘編制外人員2人筆試備考題庫(kù)及答案解析
- 2026年1月浙江省高考首考選考地理試卷試題(含答案)
- 人教版PEP五年級(jí)英語(yǔ)上冊(cè)“閱讀理解”專項(xiàng)練習(xí)(含答案)
- 中學(xué)生網(wǎng)絡(luò)社交行為調(diào)查報(bào)告
- 2026年開封職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及完整答案詳解1套
- 雨課堂學(xué)堂在線學(xué)堂云《美國(guó)社會(huì)與文化(浙理)》單元測(cè)試考核答案
- 2025-2026學(xué)年大象版小學(xué)科學(xué)五年級(jí)上冊(cè)期末復(fù)習(xí)卷及答案
評(píng)論
0/150
提交評(píng)論