c語言課程設計個人通訊錄管理系統_第1頁
c語言課程設計個人通訊錄管理系統_第2頁
c語言課程設計個人通訊錄管理系統_第3頁
c語言課程設計個人通訊錄管理系統_第4頁
c語言課程設計個人通訊錄管理系統_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

重慶科技學院(個人通訊錄管理系統)課程設計報告PAGEPAGE22重慶科技學院《C語言程序設計》課程設計報告學院:_電氣與信息工程學院_專業班級:學生姓名:學號:設計地點(單位)________I515__________

設計題目:_________個人通訊錄管理系統________________完成日期:指導教師評語:___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________成績(五級記分制):________________

指導教師(簽字):________________ 摘要利用VisualC++6.0這個軟件來實現個人通訊錄管理系統的功能,可以運用多函數模塊來實現。個人通訊錄管理系統的功能有:1.增加聯系人;2.查詢聯系人,即分別可以利用姓名或號碼進行查詢聯系人;3.讀出所有聯系人;4.修改聯系人的信息;5.刪除聯系人的信息。在利用軟件進行編輯時,對個人通訊系統的功能進行實現,嚴格按照功能的目的來編寫,對各個函數模塊要盡可能的優化。關鍵字:函數模塊、結構流程、個人通訊錄管理系統

課程設計任務書設計題目:個人通訊錄管理系統學生姓名向陽課程名稱C語言程序設計課程設計專業班級電自專2011地點I515起止時間2012年12月17日-12月28日設計內容及要求建立一通訊錄,輸入姓名、電話號碼、住址等信息,然后對通信簿進行顯示、查找、添加、修改及刪除。進一步掌握利用C語言進行程序設計的能力;進一步理解和運用結構化程序設計的思想和方法;初步掌握開發一個小型實用系統的基本方法;學會調試一個較長程序的基本方法;學會利用流程圖表示算法。根據題目要求,運用所學知識,完成設計和實現工作,并按照書寫規范,撰寫課程設計報告。設計參數(1)系統分析、設計正確。(2)結果以圖表方式顯示。(3)界面簡潔、美觀。(4)報告格式規范。進度要求周一:明確設計任務,學習相關基礎知識周二:熟悉各知識點,進行基礎練習周三:根據題目要求,進行設計和實現周四:根據題目要求,進行設計和實現周五:撰寫報告,進行答辯參考資料[1]何欽銘顏暉.《C語言程序設計》.高等教育出版社.2008年[2]譚浩強張基溫.《C語言程序設計教程》.高等教育出版社.2006年其它說明1.本表應在每次實施前一周由負責教師填寫二份,院系審批后交院系辦備案,一份由負責教師留用。2.若填寫內容較多可另紙附后。3.一題多名學生共用的,在設計內容、參數、要求等方面應有所區別。教研室主任:指導教師:雷亮2012年12月10日目錄摘要 1課程設計任務書 2第一章 軟件需求分析說明書 11.1.設計題目的分析 11.2.詳細的功能分析 11.3.軟件的界面要求 11.4.數據結構要求 1第二章系統分析與設計 22.1.程序的系統界面分析 22.2.程序的數據的系統結構設計 2第三章軟件的實現 63.1.程序預處理 63.2.main()主函數的實現 73.3.menu()主菜單的實現 73.4.output(int*len)輸出函數的實現 83.5.zengjia(&len)增加聯系人函數的實現 83.6.chaxun(int*len)查詢聯系人的函數的實現 93.6.1.sname()姓名查詢函數的實現 103.6.2.snumber()電話查詢函數的實現 113.7.xiugai(&len)修改聯系人的函數的實現 123.7.1.xname()修改聯系人姓名函數的實現 143.7.2.xnumber()修改聯系人電話函數的實現 143.7.3.xname()修改聯系人地址函數的實現 143.8.shanchu(int*len)刪除聯系人的函數的實現 14第四章軟件測試 174.1.主界面的測試 174.2.增加聯系人的測試 174.3.讀取聯系人的測試 174.4.查找聯系人的測試 184.5.修改聯系人的測試 184.6.刪除聯系人的測試 18第五章 總結 22致謝 23參考文獻 24第一章 軟件需求分析說明書1.1.設計題目的分析根據需設計的個人通訊錄管理系統這個題目可以得知如下的信息:①.建立通訊錄信息,信息包含姓名、電話、通訊地址等;②.能夠提供添加、刪除通訊錄信息的功能;③.能夠提供按不同方式查詢的功能;如按姓名、電話等查詢;④.能夠提供按不同方式修改通訊錄里聯系人的信息的功能;如對姓名、電話、地址等進行修改;⑤.將通訊錄保存在文件中;⑥能夠按表格方式輸出通訊錄信息。1.2.詳細的功能分析增加:可以添加通訊錄記錄,在輸入添加的個數后,依次完成輸入姓名、電話號碼、通訊地址后,會提示你是否已添加成功,最后再在屏幕上顯示出來;讀?。嚎梢砸员砀裥问捷敵鏊型ㄓ嶄浝锏挠涗洠粍h除:輸入欲刪除的那個人的名字后,會自動刪除他(她)的記錄內容,之后會提示你是否刪除成功,最后在輸出刪除后通訊錄里所有的記錄;查詢:可以選擇用姓名、電話兩種方式查詢;修改:輸入欲修改的那個人的名字后,再選擇是需要更改輸入聯系人的什么信息后,再輸入修改的姓名或電話號碼或通訊地址,這樣便可以可完成修改聯系人得信息;退出:,即將通訊錄信息保存到文件后,再退出通訊管理系統。1.3.軟件的界面要求在界面需要一個提示你執行什么操作的標語,且在增加、修改、刪除聯系人后,需要提示是否已成功的完成該任務,之后需要將通訊錄讀取出來,檢查是否與界面提示的一致,最后再返回首頁面。1.4.數據結構要求每一個功能利用多函數模塊來實現,并且為了避免程序的繁瑣,可以將每個大模塊再劃分為多個小的模塊來實現,盡可能的優化程序的模塊。

第二章系統分析與設計2.1.程序的系統界面分析①主菜單選擇的界面,選擇需要的服務,如:輸入1,即進入增加聯系人的界面;②增加聯系人的界面,按提示進行輸入,即進入輸出界面;③通訊錄的輸出界面,即將按任意鍵返回主菜單界面;④在主菜單中選擇查找聯系人的功能,如:輸入3后進入查詢界面,再按姓名或電話查詢,如:輸入2按姓名查詢,輸入查詢的姓名為xiangyang,即若又該聯系人則顯示出來,反之則提示你沒有該聯系人;⑤刪除聯系人界面,即輸入刪除人的姓名,再提示你刪除成功后緊接著就顯示出刪除后的所有聯系人;⑥修改聯系人的界面,即在主菜單中輸4,進入修改界面,即輸入修改人的姓名即可;⑦退出程序的界面,不需要訪問個人通訊錄管理系統時,在返回主菜單界面輸入0退出程序。2.2.程序的數據的系統結構設計2.2.1.整個軟件使用的文件功能、內部的數據格式在通訊管理系統中的文件內部的數據均為文本文件類型的,并且在文本文件里的數據均以一組一組的存放。2.2.2.系統界面結構的設計①畫出整個軟件的模塊圖(如圖2.1所示)、并對每一個模塊圖的算法用程序流程圖來具體描述。②增加聯系人的程序流程圖(如圖2.2所示);③查詢聯系人的流程圖(如圖2.3所示);④讀取聯系人的流程圖(如圖2.4所示);⑤修改聯系人的流程圖(如圖2.5所示);⑥刪除聯系人的流程圖(如圖2.6所示)。增加增加查詢個人通訊錄管理系統讀取刪除修改退出姓名查詢電話查詢姓名修改電話修改地址修改圖2.1.系統的整體模塊圖圖2.3查詢聯系人的流程圖YY圖2.3查詢聯系人的流程圖YYNNNY圖2.2增加聯系人的流程圖輸出修改后輸出修改后所有聯系人i=4xiugai(&len)輸入修改人的姓名開始判斷有無此人return0Y修改姓名修改電話修改地址b==1?b==2?b==3?沒有此人的信息圖2.5修改聯系人的流程圖-輸出輸出刪除后所有聯系人i=5shanchu(&len)輸入刪除人的姓名執行刪除指定的聯系人開始判斷有無此人return0NY圖2.6刪除聯系人的流程圖開始開始i=2duqu(&len)輸出信息return0

第三章軟件的實現本程序主要由14個自定義函數和一個主函數組成,其中主函數以菜單的形式調用其它函數來實現要求的所有功能。在這些函數當中,按顯示菜單的函數、添加聯系人函數、讀取全部信息函數、查詢函數(按姓名查詢、按電話查詢)、修改聯系人函數(姓名修改、電話修改、地址修改)、刪除聯系人信息函數等是程序中較為核心的部分,下面分別進行說明。3.1.程序預處理包括加載頭文件,定義結構體、常量和變量,并對它們進行初始化工作。#include"stdio.h"#include<stdlib.h>#include"string.h"#defineheader1"|電話簿|\n"#defineheader2"|name|phonenum|adress|\n"#defineheader3"||||\n"#defineend"|結束|"typedefstruct_CStudent{ charszName[20];/*學生姓名*/doublenumber; /*電話*/ charadress[100]; /*地址*/}CStudent;voidmenu();intduqu(int*len);intzengjia(int*k,int*len);intchaxun(int*len);intxiugai(int*len);intshanchu(int*len);intinput(CStudent*p);/*從鍵盤輸入*/intoutput(int*len);/*向屏幕輸出*/intsearch(CStudentp,int*j,CStudentc[3],int*len); intsname(CStudentp,int*len); /*姓名查詢*/intsnumber(CStudentp,int*len); /*電話查詢*/voidxname(CStudentq[100],inti); /*姓名修改*/voidxnumber(CStudentq[100],inti); /*號碼修改*/voidxadress(CStudentq[100],inti); /*地址修改*/ intsput(int*len,CStudentq[100]);/*刪除的處理模塊*/3.2.main()主函數的實現main()函數主要實現對整個程序的運行控制,以及相關功能模塊的調用。main(){ staticintlen=0; inti,j=0,k=0; while(j==0) { menu(); do { printf("請選擇你需要的服務:\n"); scanf("%d",&i); } while(i<0||i>5); switch(i) { case1:{j=zengjia(&k,&len);break;}/*增加*/ case2:{j=duqu(&len);break;} /*讀取*/ case3:{j=chaxun(&len);break;} /*查找*/ case4:{j=xiugai(&len);break;} /*修改*/ case5:{j=shanchu(&len);break;}/*刪除*/ default:{printf("|**歡迎下次使用電話薄管理系統!**|\n");j=1;break;} } }}3.3.menu()主菜單的實現用戶進入通訊錄管理系統時,需要顯示主菜單,提示用戶進行選擇,完成相應任務。此代碼被main()函數調用。voidmenu(){ system("cls"); system("color1F"); printf("\n\n\n"); /*輸出主菜單*/ printf("\t\t|*****歡迎進入電話薄管理系統!*****|\n"); printf("\t\t|********************menu********************|\n"); printf("\t\t||\n"); printf("\t\t|1增加2讀取|\n"); printf("\t\t||\n"); printf("\t\t|3查找4修改|\n"); printf("\t\t||\n"); printf("\t\t|5刪除0退出|\n"); printf("\t\t||\n"); printf("\t\t|********************************************|\n");}3.4.output(int*len)輸出函數的實現在被其它函數模塊調用時,執行intoutput(int*len)函數對數據文件中的所有聯系人進行輸出在屏幕上。intoutput(int*len)/*向屏幕輸出*/{ CStudentp[100]; inti; FILE*fp; if((fp=fopen("e://file3","r"))==NULL) { printf("error!\n"); return-1; } printf("%s%s%s",header1,header2,header3); for(i=0;i<*len;i++) { fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress); printf("|%s|%.0lf|%s|\n",p[i].szName,p[i].number,p[i].adress); } printf("%s",end); printf("\n"); system("pause"); return0;}3.5.zengjia(&len)增加聯系人函數的實現調用zengjia(&len)函數,完成在文件中添加新聯系人。在剛進入通訊錄管理系統時,若默認的數據文件為空,在增加新聯系人后,利用intoutput(int*len)函數輸出數據文件中的所有聯系人。intzengjia(int*k,int*len){ CStudentp[100]; inti,j; FILE*fp;system("cls"); printf("\n\t\t|*****歡迎進入刪除聯系人界面!*****|\n\n"); printf("請輸入增加的個數:\n"); scanf("%d",&j); k=&j; (*len)+=j; //system("cls"); if((fp=fopen("e://file3","a+"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<j;i++) { printf("姓名:"); scanf("%s",&p[i].szName); printf("電話:"); scanf("%lf",&p[i].number); printf("地址:"); scanf("%s",p[i].adress); } for(i=0;i<j;i++) fprintf(fp,"\n%s%lf%s",p[i].szName,p[i].number,p[i].adress); fclose(fp); system("cls"); output(len); return0;}3.6.chaxun(int*len)查詢聯系人的函數的實現調用intchaxun(int*len)函數,完成在snumber(cc,len)或sname(aa,len)函數中對聯系人進行查找,如果在數據文件中找到所要查找的聯系人時,則將該聯系人輸出到屏幕;若在數據文件中沒有此聯系人時,則同樣會在屏幕上提醒。intchaxun(int*len){ inti; CStudentaa,cc; system("cls"); printf("\n\t\t|*****歡迎進入刪除聯系人界面!*****|\n\n"); do { printf(" |查找功能|\n"); printf(" ||\n"); printf(" |1按電話號碼查找|\n"); printf(" ||\n"); printf(" |2按姓名查找|\n"); printf(" ||\n"); printf(" |0退出|\n"); printf(" ||\n"); printf("請輸入:\n"); scanf("%d",&i); } while(i>2||i<0); if(i==2) { printf("請輸入姓名:\n"); scanf("%s",&aa.szName); sname(aa,len); } elseif(i==1) { printf("請輸入號碼:\n"); scanf("%lf",&cc.number); snumber(cc,len); } else printf("歡迎下次使用電話薄管理系統!\n"); return0;}3.6.1.sname()姓名查詢函數的實現用戶在進入查詢聯系人的界面后,可以根據提示選擇按哪種方式進行查詢,若選擇2則按姓名進行查詢,即會在判斷該聯系人存在于通訊錄中后調用sname()姓名查詢函數;如下為函數的源代碼:intsname(CStudentp,int*len){ CStudentc[100]; inti,flag; flag=search(p,&i,c,len);if(flag==1) { printf("%s%s%s",header1,header2,header3); printf("|%s|%.0lf|%s|\n",c[i].szName,c[i].number,c[i].adress); printf("%s",end); printf("\n"); } else printf("NotFound\n"); system("pause");return0;}3.6.2.snumber()電話查詢函數的實現用戶在進入查詢聯系人的界面后,可以根據提示選擇按哪種方式進行查詢,若選擇1則按姓名進行查詢,即會在判斷該聯系人存在于通訊錄中后調用snumber()電話查詢函數;如下為函數的源代碼:intsnumber(CStudentp,int*len){ CStudentc[100]; inti,flag; flag=search(p,&i,c,len);if(flag==2) { printf("%s%s%s",header1,header2,header3); printf("|%s|%.0lf|%s|\n",c[i].szName,c[i].number,c[i].adress); printf("%s",end); printf("\n"); } else printf("NotFound\n"); system("pause");return0;}search(CStudentp,int*j,CStudentc[100],int*len) /*查詢*/{FILE*fp; inti,flag=0; if((fp=fopen("e:\\file3","r"))==NULL) { printf("cannotwritefile\n"); return-1; }for(i=0;i<*len;i++) { fscanf(fp,"%s%lf%s",c[i].szName,&c[i].number,c[i].adress);if(strcmp(c[i].szName,p.szName)==0) {flag=1;break;} if(c[i].number==p.number) {flag=2;break;}} *j=i; fclose(fp); returnflag;}3.7.xiugai(&len)修改聯系人的函數的實現調用xiugai(&len)函數,完成在輸入需要修改的聯系人后,進行判斷是否有此人,若沒有則會有提示,若有則會提示你完成該聯系人的信息修改,待輸入了修改信息后,會利用intsput(int*len,CStudentq[100])函數將修改的文件數據保存到文件中。在完成保存修改聯系人后,會利用intoutput(int*len)函數將修改后數據文件中的所有聯系人輸出到屏幕上。intxiugai(int*len){ CStudentp[100],q[100],a; inti,j,b; FILE*fp; system("cls"); printf("\n\t\t|*****歡迎進入修改聯系人界面!*****|\n\n"); printf("請輸入修改人的姓名:\n"); scanf("%s",a.szName); if((fp=fopen("e://file3","r+"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<*len;i++) fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress); for(i=0;i<*len;i++) { strcpy(q[i].szName,p[i].szName); strcpy(q[i].adress,p[i].adress); q[i].number=p[i].number;} for(i=0;i<*len;i++) { if(strcmp(p[i].szName,a.szName)==0) { j=1; break; } } if(j==1) { printf(" |修改功能|\n"); printf(" ||\n"); printf(" |1修改姓名|\n"); printf(" ||\n"); printf(" |2修改號碼|\n"); printf(" ||\n"); printf(" |3修改地址|\n"); printf(" ||\n"); do { printf("請輸入:\n"); scanf("%d",&b); if(b==1) xname(q,i); if(b==2) xnumber(q,i); if(b==3) xadress(q,i);} while(b>3||b<1); printf("修改的聯系人重新保存!\n"); sput(len,q); } else { printf(" |*****通訊錄中沒有該人的信息!******|\n"); system("pause"); } fclose(fp); output(len); return0;}intsput(int*len,CStudentq[100]){ inti; FILE*fp; if((fp=fopen("e://file3","w"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<*len;i++) fprintf(fp,"%s%lf%s",q[i].szName,q[i].number,q[i].adress); fclose(fp); return0;}3.7.1.xname()修改聯系人姓名函數的實現用戶在進入修改聯系人的信息的界面后,可以根據提示選擇進行修改聯系人的哪樣信息,若選擇1則修改聯系人的姓名,即會在判斷該聯系人存在于通訊錄中后調用xname()姓名修改函數。voidxname(CStudentq[100],inti){ printf("姓名重置:"); scanf("%s",q[i].szName);}3.7.2.xnumber()修改聯系人電話函數的實現用戶在進入修改聯系人的信息的界面后,可以根據提示選擇進行修改聯系人的哪樣信息,若選擇2則修改聯系人的電話,即會在判斷該聯系人存在于通訊錄中后調用xnumber()電話修改函數。voidxnumber(CStudentq[100],inti) /*號碼修改*/{ printf("電話重置:"); scanf("%lf",&q[i].number);}3.7.3.xname()修改聯系人地址函數的實現用戶在進入修改聯系人的信息的界面后,可以根據提示選擇進行修改聯系人的哪樣信息,若選擇3則修改聯系人的地址,即會在判斷該聯系人存在于通訊錄中后調用xadress()地址修改函數。voidxadress(CStudentq[100],inti) /*地址修改*/{ printf("地址重置:"); scanf("%s",q[i].adress);}3.8.shanchu(int*len)刪除聯系人的函數的實現調用intshanchu(int*len)函數,完成輸入的需要刪除的聯系人,待輸入后,程序會自動判斷數據文件中是否有此人的信息,若沒有,則會有提示,結束該功能的運用;反之,有該聯系人的話,會將其刪除后在保存到數據文件中,待保存成功后,調用intoutput(int*len)函數將刪除后的所有聯系人輸出到屏幕上。intshanchu(int*len){ CStudentp[100],q[100],a; inti,j; FILE*fp;system("cls"); printf("\n\t\t|*****歡迎進入刪除聯系人界面!*****|\n\n"); printf("請輸入刪除人的姓名:\n"); scanf("%s",a.szName); if((fp=fopen("e://file3","r+"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<*len;i++) fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress); for(i=0;i<*len;i++) { strcpy(q[i].szName,p[i].szName); strcpy(q[i].adress,p[i].adress); q[i].number=p[i].number;} for(i=0;i<*len;i++) { if(strcmp(p[i].szName,a.szName)==0) { j=1; break; } } if(j==1) { for(;i<*len-1;i++) { strcpy(q[i].szName,q[i+1].szName); strcpy(q[i].adress,p[i].adress); q[i].number=q[i+1].number; } printf("刪除成功!\n"); (*len)--; sput(len,q); for(i=0;i<*len;i++) fscanf(fp,"%s%lf%s",q[i].szName,&q[i].number,q[i].adress); output(len); } else printf(" |*****通訊錄中沒有該人的信息!******|\n");

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論