C程序課程設(shè)計報告 通訊錄管理系統(tǒng)_第1頁
C程序課程設(shè)計報告 通訊錄管理系統(tǒng)_第2頁
C程序課程設(shè)計報告 通訊錄管理系統(tǒng)_第3頁
C程序課程設(shè)計報告 通訊錄管理系統(tǒng)_第4頁
C程序課程設(shè)計報告 通訊錄管理系統(tǒng)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

PAGE課程設(shè)計報告課程名稱C語言課程設(shè)計課題名稱通訊錄管理系統(tǒng)專業(yè)自動化班級學(xué)號姓名指導(dǎo)教師

湖南工程學(xué)院課程設(shè)計任務(wù)書課程名稱C語言課程設(shè)計課題通訊錄管理系統(tǒng)專業(yè)班級學(xué)生姓名學(xué)號指導(dǎo)老師審批任務(wù)書下達日期任務(wù)完成日期設(shè)計內(nèi)容與設(shè)計要求設(shè)計內(nèi)容:課題六:通訊錄管理系統(tǒng)一、問題描述:通過該系統(tǒng)實現(xiàn)對通訊錄信息進行錄入、顯示、修改、刪除、插入、排序、保存等操作的管理。二、功能要求:1、本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:編號、姓名、電話號碼、地址。2、本系統(tǒng)顯示這樣的菜單:請選擇系統(tǒng)功能項:通訊信息錄入通訊信息顯示通訊信息保存通訊信息刪除通訊信息修改通訊信息查詢按編號查詢按姓名查詢按電話號碼查詢g.退出系統(tǒng)3、執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。4、將通訊信息保存到文件中。三、算法提示:1、數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組2、數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。編號姓名電話號碼地址charcharcharchar四、測試數(shù)據(jù):紀(jì)錄數(shù)20五、其它:對該系統(tǒng)有興趣的同學(xué)可以在實現(xiàn)上述基本功能后,完善系統(tǒng)的其它功能。

2、設(shè)計要求:1,學(xué)生從六個題目中任意選擇并完成一個題目。要求每個學(xué)生能獨立思考認(rèn)真并按時完成本課程設(shè)計所包含的所有內(nèi)容。2,要求學(xué)生必須按照課程設(shè)計報告的完整格式說明設(shè)計內(nèi)容,設(shè)計任務(wù)分析過程和算法,給全部源程序,并做出總結(jié)。3.設(shè)計報告的完整格式應(yīng)包括以下部分的內(nèi)容:課題設(shè)計內(nèi)容與主要功能課題分析:分析課程設(shè)計項目的實現(xiàn)方法程序?qū)崿F(xiàn)步驟程序測試結(jié)果與結(jié)論程序清單總結(jié)與體會二、進度安排12月29日到1月4日時間上午下午1-4節(jié)(四小時)5-8節(jié)(四小時)12月29日布置課題,題目講解上機編程1月1日查閱資料查閱資料1上機編程查閱資料1月3日上機編程撰寫報告1月4日上機編程撰寫報告附:課程設(shè)計報告裝訂順序:封面、任務(wù)書、目錄、正文、附件(A4大小的圖紙及程序清單)、評分表。正文的格式:一級標(biāo)題用3號黑體,二級標(biāo)題用四號宋體加粗,正文用小四號宋體;行距為22。正文的內(nèi)容:一、課題設(shè)計內(nèi)容與主要功能;二、課題分析;分析課程設(shè)計項目的實現(xiàn)方法,并寫出類聲明與核心算法實現(xiàn)代碼。三、主要功能的實現(xiàn)步驟;四、程序測試與結(jié)論;應(yīng)包括課程設(shè)計程序的屏幕顯示,并加以簡單的文字說明。五、總結(jié);六、附件(所有程序的原代碼,要求對程序?qū)懗霰匾淖⑨專?9-目錄一、課題設(shè)計內(nèi)容與主要功能············································(1)二、課題分析····························································(2)三、主要功能的實現(xiàn)步驟················································(3)四、程序測試結(jié)果與結(jié)論················································(6)五、總結(jié)·······························································(10)六、附件·······························································(11)評分表································································(19)一、課題設(shè)計內(nèi)容與主要功能1、設(shè)計內(nèi)容課題名稱:通訊錄管理系統(tǒng)(1)本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:編號、姓名、電話號碼、地址。(2)通過該系統(tǒng)實現(xiàn)對通訊錄信息進行錄入、顯示、修改、刪除、插入、保存等操作的管理。2、主要功能(1)本系統(tǒng)顯示這樣的菜單:請選擇系統(tǒng)功能項:通訊信息錄入通訊信息顯示通訊信息保存通訊信息刪除通訊信息修改通訊信息查詢按編號查詢按姓名查詢按電話號碼查詢退出系統(tǒng)(2)執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。(3)將通訊信息保存到文件中。二、課題分析1、設(shè)計思路已知通訊錄一般包括姓名、電話號碼、地址三個基本屬性,我們應(yīng)該用結(jié)構(gòu)體數(shù)組存儲每個人的這三個基本屬性。為了使得通訊錄更加直觀,我們可以加入編號這個屬性,由于編號是自然數(shù),因此我們可以定義編號為整型變量。通訊錄當(dāng)然需要存儲功能,這個就可以通過visualC++自帶的file函數(shù)實現(xiàn)。函數(shù)之間各種調(diào)用使用while和switch函數(shù)實現(xiàn)。整體用結(jié)構(gòu)體類型數(shù)組。2、結(jié)構(gòu)設(shè)計(1)主菜單:顯示該系統(tǒng)的主要功能,方便操作(2)通訊信息錄入模塊:錄入需要管理的通訊信息并將信息保存到文件中,以方便日后進行讀取、修改、添加等操作;(3)通訊錄信息顯示模塊:將所有通訊錄信息或要查詢的信息顯示于屏幕,用于查看通訊錄信息;(4)通訊錄信息刪除模塊:可對有錯誤的通訊錄信息或已經(jīng)不存在的信息進行刪除;(5)通訊錄信息修改模塊:可對有錯誤或更換的信息進行修改(6)通訊錄信息保存模塊:自動保存(7)通訊錄信息查詢模塊:提供姓名查詢和電話號碼查詢兩種查詢方式,方便找到需要的信息;(8)退出模塊:退出該系統(tǒng)。三、主要功能的實現(xiàn)步驟1、主菜單顯示用printf函數(shù)格式化輸出主菜單選項2、主菜單功能的實現(xiàn)主函數(shù)voidmain(){……利用switch條件選擇語句可以實現(xiàn)主菜單的各項功能switch(n){……case'a':add(message);break;……case'f':exit(0);break;……}}3、通訊信息錄入定義信息錄入函數(shù)intadd(telebooktemp[]){……通過for循環(huán)可以實現(xiàn)同時錄入100個信息for(i=m;i<(100+m);i++)……若輸入編號為0,則可以通過if選擇語句實現(xiàn)直接退出信息錄if(temp[i].num==0)break;……通過函數(shù)fwrite(&temp[i],sizeof(structtele),1,fp)可以實現(xiàn)向fp中寫入數(shù)據(jù)塊;……}4、通訊信息顯示定義信息顯示函數(shù)intread(telebooktemp[]){……通過for循環(huán)實現(xiàn)讀取文件內(nèi)信息的個數(shù)for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++)若文件內(nèi)沒有信息,則可以通過if(count==0)來判斷用for循環(huán)可以逐一讀取文件內(nèi)的信息for(i=0;i<count;i++)……}5、通訊信息刪除定義信息刪除函數(shù)intdel(telebooktemp[]){……通過for循環(huán)查找要刪除的信息for(i=0;i<count;i++)……刪除找到的信息,通過strcpy函數(shù)實現(xiàn)strcpy(temp[j].name,temp[j+1].name);temp[j+1].name復(fù)制到temp[j].name中,同理,電話號碼、地址也可以這樣做?!瓆6、通訊信息修改定義信息修改函數(shù)intchange(telebooktemp[]){……定義新的結(jié)構(gòu)structtelene[10];scanf("%d",&ne[0].num);用for循環(huán)查找與新信息相同的信息for(i=0;i<count;i++)。若找到,則用新信息替換if(temp[i].num==ne[0].num);temp[i].num=ne[0].num;替換找到的信息,通過strcpy函數(shù)實現(xiàn)strcpy(temp[i].name,ne[0].name);ne[0].name復(fù)制到temp[i].name中,同理,電話號碼、地址也可以這樣做。}7、通訊信息查詢定義信息查詢函數(shù)(姓名查詢)intfind1(telebooktemp[]{……read(temp);……scanf("%s",a);用strcmp函數(shù)比較字符串temp[i].name與a大小,用if判斷二者是否相同,若相同則輸出查詢到的信息,主要算法結(jié)果如下:if(strcmp(temp[i].name,a)==0){……}……}定義信息查詢函數(shù)(電話號碼查詢)intfind2(telebooktemp[]){……具體方法同姓名查詢……}四、程序測試與結(jié)論1、程序測試(1)進入系統(tǒng)的主菜單(2)通訊信息錄入界面(3)通訊信息顯示(4)通訊信息刪除(5)通訊信息修改a.修改成功b.修改失?。?)通訊信息查詢a.按姓名查詢b.按號碼查詢2、結(jié)論經(jīng)過測試各項功能均能成功運行,且性能符合要求。五、總結(jié)說句實話,我在課堂上并沒有學(xué)到多少東西,當(dāng)然最主要的原因歸結(jié)于自己不認(rèn)真聽講,也許起初認(rèn)為它不重要吧?!但是當(dāng)我知道我高中同學(xué)沒有《c語言課程設(shè)計》這門課時,我才發(fā)現(xiàn)它對我們自動化是多么的重要。于是我暗下決心一定要把c語言學(xué)好,并學(xué)以致用。但是當(dāng)我看見老師打在屏幕上的500多行代碼時,我的心又開始涼了,最后老師還說500行算什么!一個應(yīng)用軟件一般都是幾百萬行!聽到這里,我開始有些彷徨了,我是有這種耐心的人嗎?我開始懷疑我自己一直深愛著的“自動化”是不是適合我的專業(yè)。課罷,我仔細(xì)想著我到底愛“自動化”哪里?我當(dāng)初為什么要選這個專業(yè)?我仔細(xì)回想著填志愿的那一天,我終于明白了……理由不在這里多說,我堅信我是適合學(xué)“自動化”的。雖然我已下了決心,但是對于一個上課不認(rèn)真聽講的人來說,寫下這么一段代碼是很困難的。于是我就從查資料開始,一開始我讀別人寫好的程序,不懂的就百度。我花了元旦節(jié)三天假,借了臺電腦,慢慢摸索,就這樣慢慢的我開始能讀懂一些了。到目前為止,時間大概過了一周了,我也將就將就的把程序?qū)懲炅?,?dāng)然不完全是自己的東西,但是畢竟我感覺學(xué)到了,而且學(xué)到了很多,而且找到了“玩”c語言的快樂,因為我感覺這一周過得很快,而且,現(xiàn)在夜深了,我仍樂此不疲地寫著總結(jié)!當(dāng)然,最大感受就是做一個課題真的很不容易,但是只要腳踏實地地做,我相信困難是會迎刃而解的。所以呢,這周的課程設(shè)計對于以后的工作也會是一種經(jīng)驗。六、附件程序源代碼#include<stdio.h>/*標(biāo)準(zhǔn)輸入輸出函數(shù)庫*/#include<string.h>/*字符串函數(shù)庫*/#include<stdlib.h>/*標(biāo)準(zhǔn)函數(shù)庫*/#include<conio.h>/*屏幕操作函數(shù)庫*/#defineheader1"|通訊錄|\n"#defineheader2"|編號|姓名|電話號碼|地址|\n"#defineheader3"|||||\n"#defineend"|結(jié)束|\n"#defineN100/*定義與通訊錄有關(guān)的數(shù)據(jù)結(jié)構(gòu)*/typedefstructtele/*標(biāo)記為tele*/{ intnum;/*編號*/ charname[10];/*姓名*/ charphonenum[15];/*電話號碼*/ charaddress[20];/*地址*/}telebook;voidmenu(){ system("cls");/*調(diào)用DOS命令,清屏*/ system("colorBD");/*改變控制臺顏色*/ printf("\n\n\n");/*格式化輸出主菜單*/ printf("\t\t|●●●歡迎進入電話薄管理系統(tǒng)●●●|\n"); printf("\t\t|*********************menu*********************|\n"); printf("\t\t||\n"); printf("\t\t|●a.通訊信息錄入|\n"); printf("\t\t||\n"); printf("\t\t|●b.通訊信息顯示|\n"); printf("\t\t||\n"); printf("\t\t|●c.通訊信息刪除|\n"); printf("\t\t||\n"); printf("\t\t|●d.通訊信息修改|\n");printf("\t\t||\n"); printf("\t\t|●e.通訊信息查詢|\n"); printf("\t\t||\n"); printf("\t\t|●(1)按姓名查詢|\n"); printf("\t\t||\n"); printf("\t\t|●(2)按電話查詢|\n");printf("\t\t||\n"); printf("\t\t|●f.退出系統(tǒng)|\n");printf("\t\t||\n"); printf("\t\t|**********************************************|\n");}voidprintheader()/*格式化輸出菜單頭*/{ printf(header1); printf(header2); printf(header3);}/*通訊信息錄入*/intadd(telebooktemp[]){inti;intm=0;FILE*fp;/*定義文件指針*/system("cls");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL)/*若讀寫打開二進制文件telebook.txt失敗,則顯示出錯信息*/{printf("打開文件有誤!");exit(0);}printf("每次輸入一百個人的信息!\n");printf("如果輸入0退出輸入!\n");for(i=m;i<(100+m);i++){printf("編號:");scanf("%d",&temp[i].num);/*輸入編號*/if(temp[i].num==0)/*若輸入編號為0,則退出輸入*/break;printf("姓名:");scanf("%s",&temp[i].name);/*輸入姓名*/printf("電話號碼:");scanf("%s",&temp[i].phonenum);/*輸入電話號碼*/printf("地址:");scanf("%s",&temp[i].address);/*輸入地址*/fwrite(&temp[i],sizeof(structtele),1,fp);/*向fp中寫入數(shù)據(jù)塊*/}m+=100;fclose(fp);/*關(guān)閉文件*/system("cls");return0;}/*通訊信息顯示*/intread(telebooktemp[]){intcount,i;FILE*fp;system("cls");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打開文件有誤!");exit(0);}printheader();for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*讀取文件內(nèi)信息的個數(shù)。*/if(count==0)printf("\n\n\n\t\t文件內(nèi)沒有信息!\n\n\n");for(i=0;i<count;i++)/*讀取文件內(nèi)的信息*/printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);printf(end);fclose(fp);return0;}/*通訊信息刪除*/intdel(telebooktemp[]){inti,j,count,t=0;charname1[20];FILE*fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打開文件有誤!");exit(0);}printf("輸入要刪除的人名:");scanf("%s",name1);for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*讀取文件內(nèi)信息的個數(shù)。*/fclose(fp);for(i=0;i<count;i++)/*查找要刪除的信息*/{if(strcmp(temp[i].name,name1)==0){for(j=i;j<count;j++){/*刪除找到的信息*/t=1;temp[j].num=temp[j+1].num;strcpy(temp[j].name,temp[j+1].name);strcpy(temp[j].phonenum,temp[j+1].phonenum);strcpy(temp[j].address,temp[j+1].address);}count--;printf("\n\n\n\t\t\t刪除成功!");}}if(t==0){getchar();printf("\a\n\n\n\t\t\t沒有要刪除的信息!");return0;}getchar();fp=fopen("D:\\telebook.txt","wb+");for(i=0;i<count;i++)fwrite(&temp[i],sizeof(structtele),1,fp);fclose(fp);return0;}/*通訊信息修改*/intchange(telebooktemp[]){inti,count,t=0;FILE*fp;structtelene[10];system("cls");read(temp);printf("\n");printf("按序號修改\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打開文件有誤!");exit(0);}printf("輸入新內(nèi)容:\n");printf("編號:");scanf("%d",&ne[0].num);printf("姓名:");scanf("%s",&ne[0].name);printf("電話號碼:");scanf("%s",&ne[0].phonenum);printf("地址:");scanf("%s",&ne[0].address);for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*讀取文件內(nèi)信息的個數(shù)。*/fclose(fp);for(i=0;i<count;i++)/*查找與新信息相同的信息*/{if(temp[i].num==ne[0].num)/*用新信息替換*/{t=1;temp[i].num=ne[0].num;strcpy(temp[i].name,ne[0].name);strcpy(temp[i].phonenum,ne[0].phonenum);strcpy(temp[i].address,ne[0].address);getchar();printf("\n\n\t\t\t修改成功!");}}if(t==0){getchar();printf("\n\n\t\t\t沒有要修改的信息!");return0;}fp=fopen("D:\\telebook.txt","wb+");for(i=0;i<count;i++)fwrite(&temp[i],sizeof(structtele),1,fp);fclose(fp);return0;}/*通訊信息查詢*/intfind1(telebooktemp[])/*姓名查詢*/{inti,count,t=0;chara[20];FILE*fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打開文件有誤!");exit(0);}printf("輸入要查找的名字:");scanf("%s",a);getchar();printf("\n\n");printheader();for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*讀取文件內(nèi)信息的個數(shù)。*/for(i=0;i<count;i++){if(strcmp(temp[i].name,a)==0){t=1;printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);/*輸出查詢到的信息*/}}if(t==0){printf("\a\n\n\t\t沒有要查找的信息!\n\n\n");printf(end);return0;}printf(end);fclose(fp);return0;}intfind2(telebooktemp[])/*電話號碼查詢*/{inti,count,t=0;charn[20];FILE*fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打開文件有誤!");exit(0);}printf("輸入要查找的號碼:");scanf("%s",n);printf("\n\n");printheader();getchar();for(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論