




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE課程設計報告課程名稱C語言課程設計課題名稱通訊錄管理系統專業自動化班級學號姓名指導教師
湖南工程學院課程設計任務書課程名稱C語言課程設計課題通訊錄管理系統專業班級學生姓名學號指導老師審批任務書下達日期任務完成日期設計內容與設計要求設計內容:課題六:通訊錄管理系統一、問題描述:通過該系統實現對通訊錄信息進行錄入、顯示、修改、刪除、插入、排序、保存等操作的管理。二、功能要求:1、本系統采用一個包含N個數據的結構體數組,每個數據的結構應當包括:編號、姓名、電話號碼、地址。2、本系統顯示這樣的菜單:請選擇系統功能項:通訊信息錄入通訊信息顯示通訊信息保存通訊信息刪除通訊信息修改通訊信息查詢按編號查詢按姓名查詢按電話號碼查詢g.退出系統3、執行一個具體的功能之后,程序將重新顯示菜單。4、將通訊信息保存到文件中。三、算法提示:1、數據結構:結構體類型數組2、數據庫結構:下表構成該系統的基本數據庫。編號姓名電話號碼地址charcharcharchar四、測試數據:紀錄數20五、其它:對該系統有興趣的同學可以在實現上述基本功能后,完善系統的其它功能。
2、設計要求:1,學生從六個題目中任意選擇并完成一個題目。要求每個學生能獨立思考認真并按時完成本課程設計所包含的所有內容。2,要求學生必須按照課程設計報告的完整格式說明設計內容,設計任務分析過程和算法,給全部源程序,并做出總結。3.設計報告的完整格式應包括以下部分的內容:課題設計內容與主要功能課題分析:分析課程設計項目的實現方法程序實現步驟程序測試結果與結論程序清單總結與體會二、進度安排12月29日到1月4日時間上午下午1-4節(四小時)5-8節(四小時)12月29日布置課題,題目講解上機編程1月1日查閱資料查閱資料1上機編程查閱資料1月3日上機編程撰寫報告1月4日上機編程撰寫報告附:課程設計報告裝訂順序:封面、任務書、目錄、正文、附件(A4大小的圖紙及程序清單)、評分表。正文的格式:一級標題用3號黑體,二級標題用四號宋體加粗,正文用小四號宋體;行距為22。正文的內容:一、課題設計內容與主要功能;二、課題分析;分析課程設計項目的實現方法,并寫出類聲明與核心算法實現代碼。三、主要功能的實現步驟;四、程序測試與結論;應包括課程設計程序的屏幕顯示,并加以簡單的文字說明。五、總結;六、附件(所有程序的原代碼,要求對程序寫出必要的注釋)。19-目錄一、課題設計內容與主要功能············································(1)二、課題分析····························································(2)三、主要功能的實現步驟················································(3)四、程序測試結果與結論················································(6)五、總結·······························································(10)六、附件·······························································(11)評分表································································(19)一、課題設計內容與主要功能1、設計內容課題名稱:通訊錄管理系統(1)本系統采用一個包含N個數據的結構體數組,每個數據的結構應當包括:編號、姓名、電話號碼、地址。(2)通過該系統實現對通訊錄信息進行錄入、顯示、修改、刪除、插入、保存等操作的管理。2、主要功能(1)本系統顯示這樣的菜單:請選擇系統功能項:通訊信息錄入通訊信息顯示通訊信息保存通訊信息刪除通訊信息修改通訊信息查詢按編號查詢按姓名查詢按電話號碼查詢退出系統(2)執行一個具體的功能之后,程序將重新顯示菜單。(3)將通訊信息保存到文件中。二、課題分析1、設計思路已知通訊錄一般包括姓名、電話號碼、地址三個基本屬性,我們應該用結構體數組存儲每個人的這三個基本屬性。為了使得通訊錄更加直觀,我們可以加入編號這個屬性,由于編號是自然數,因此我們可以定義編號為整型變量。通訊錄當然需要存儲功能,這個就可以通過visualC++自帶的file函數實現。函數之間各種調用使用while和switch函數實現。整體用結構體類型數組。2、結構設計(1)主菜單:顯示該系統的主要功能,方便操作(2)通訊信息錄入模塊:錄入需要管理的通訊信息并將信息保存到文件中,以方便日后進行讀取、修改、添加等操作;(3)通訊錄信息顯示模塊:將所有通訊錄信息或要查詢的信息顯示于屏幕,用于查看通訊錄信息;(4)通訊錄信息刪除模塊:可對有錯誤的通訊錄信息或已經不存在的信息進行刪除;(5)通訊錄信息修改模塊:可對有錯誤或更換的信息進行修改(6)通訊錄信息保存模塊:自動保存(7)通訊錄信息查詢模塊:提供姓名查詢和電話號碼查詢兩種查詢方式,方便找到需要的信息;(8)退出模塊:退出該系統。三、主要功能的實現步驟1、主菜單顯示用printf函數格式化輸出主菜單選項2、主菜單功能的實現主函數voidmain(){……利用switch條件選擇語句可以實現主菜單的各項功能switch(n){……case'a':add(message);break;……case'f':exit(0);break;……}}3、通訊信息錄入定義信息錄入函數intadd(telebooktemp[]){……通過for循環可以實現同時錄入100個信息for(i=m;i<(100+m);i++)……若輸入編號為0,則可以通過if選擇語句實現直接退出信息錄if(temp[i].num==0)break;……通過函數fwrite(&temp[i],sizeof(structtele),1,fp)可以實現向fp中寫入數據塊;……}4、通訊信息顯示定義信息顯示函數intread(telebooktemp[]){……通過for循環實現讀取文件內信息的個數for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++)若文件內沒有信息,則可以通過if(count==0)來判斷用for循環可以逐一讀取文件內的信息for(i=0;i<count;i++)……}5、通訊信息刪除定義信息刪除函數intdel(telebooktemp[]){……通過for循環查找要刪除的信息for(i=0;i<count;i++)……刪除找到的信息,通過strcpy函數實現strcpy(temp[j].name,temp[j+1].name);temp[j+1].name復制到temp[j].name中,同理,電話號碼、地址也可以這樣做。……}6、通訊信息修改定義信息修改函數intchange(telebooktemp[]){……定義新的結構structtelene[10];scanf("%d",&ne[0].num);用for循環查找與新信息相同的信息for(i=0;i<count;i++)。若找到,則用新信息替換if(temp[i].num==ne[0].num);temp[i].num=ne[0].num;替換找到的信息,通過strcpy函數實現strcpy(temp[i].name,ne[0].name);ne[0].name復制到temp[i].name中,同理,電話號碼、地址也可以這樣做。}7、通訊信息查詢定義信息查詢函數(姓名查詢)intfind1(telebooktemp[]{……read(temp);……scanf("%s",a);用strcmp函數比較字符串temp[i].name與a大小,用if判斷二者是否相同,若相同則輸出查詢到的信息,主要算法結果如下:if(strcmp(temp[i].name,a)==0){……}……}定義信息查詢函數(電話號碼查詢)intfind2(telebooktemp[]){……具體方法同姓名查詢……}四、程序測試與結論1、程序測試(1)進入系統的主菜單(2)通訊信息錄入界面(3)通訊信息顯示(4)通訊信息刪除(5)通訊信息修改a.修改成功b.修改失敗(6)通訊信息查詢a.按姓名查詢b.按號碼查詢2、結論經過測試各項功能均能成功運行,且性能符合要求。五、總結說句實話,我在課堂上并沒有學到多少東西,當然最主要的原因歸結于自己不認真聽講,也許起初認為它不重要吧?!但是當我知道我高中同學沒有《c語言課程設計》這門課時,我才發現它對我們自動化是多么的重要。于是我暗下決心一定要把c語言學好,并學以致用。但是當我看見老師打在屏幕上的500多行代碼時,我的心又開始涼了,最后老師還說500行算什么!一個應用軟件一般都是幾百萬行!聽到這里,我開始有些彷徨了,我是有這種耐心的人嗎?我開始懷疑我自己一直深愛著的“自動化”是不是適合我的專業。課罷,我仔細想著我到底愛“自動化”哪里?我當初為什么要選這個專業?我仔細回想著填志愿的那一天,我終于明白了……理由不在這里多說,我堅信我是適合學“自動化”的。雖然我已下了決心,但是對于一個上課不認真聽講的人來說,寫下這么一段代碼是很困難的。于是我就從查資料開始,一開始我讀別人寫好的程序,不懂的就百度。我花了元旦節三天假,借了臺電腦,慢慢摸索,就這樣慢慢的我開始能讀懂一些了。到目前為止,時間大概過了一周了,我也將就將就的把程序寫完了,當然不完全是自己的東西,但是畢竟我感覺學到了,而且學到了很多,而且找到了“玩”c語言的快樂,因為我感覺這一周過得很快,而且,現在夜深了,我仍樂此不疲地寫著總結!當然,最大感受就是做一個課題真的很不容易,但是只要腳踏實地地做,我相信困難是會迎刃而解的。所以呢,這周的課程設計對于以后的工作也會是一種經驗。六、附件程序源代碼#include<stdio.h>/*標準輸入輸出函數庫*/#include<string.h>/*字符串函數庫*/#include<stdlib.h>/*標準函數庫*/#include<conio.h>/*屏幕操作函數庫*/#defineheader1"|通訊錄|\n"#defineheader2"|編號|姓名|電話號碼|地址|\n"#defineheader3"|||||\n"#defineend"|結束|\n"#defineN100/*定義與通訊錄有關的數據結構*/typedefstructtele/*標記為tele*/{ intnum;/*編號*/ charname[10];/*姓名*/ charphonenum[15];/*電話號碼*/ charaddress[20];/*地址*/}telebook;voidmenu(){ system("cls");/*調用DOS命令,清屏*/ system("colorBD");/*改變控制臺顏色*/ printf("\n\n\n");/*格式化輸出主菜單*/ printf("\t\t|●●●歡迎進入電話薄管理系統●●●|\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.退出系統|\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中寫入數據塊*/}m+=100;fclose(fp);/*關閉文件*/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++);/*讀取文件內信息的個數。*/if(count==0)printf("\n\n\n\t\t文件內沒有信息!\n\n\n");for(i=0;i<count;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++);/*讀取文件內信息的個數。*/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");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++);/*讀取文件內信息的個數。*/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++);/*讀取文件內信息的個數。*/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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國營養米行業市場深度分析及發展趨勢與投資戰略研究報告
- 2025-2030中國蘋果行業市場運行分析及發展前景與投資研究報告
- 2025-2030中國船舶制造行業市場深度調研及發展前景與戰略研究報告
- 污水處理廠配套尾水濕地項目可行性研究報告(范文模板)
- 2025-2030中國自動售貨機行業市場發展分析及發展趨勢與投資前景研究報告
- 2025-2030中國脂肪族聚酯多元醇行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國胎兒和新生兒心臟監護儀行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國糖霜酥皮行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國穩壓器行業市場深度調研及調查研究報告
- 2025-2030中國社區衛生信息化行業市場發展分析及前景趨勢與投資研究報告
- 《研學旅行課程設計》課件-研學課程方案設計
- 川教版《生命生態安全》九年級下冊第十課樹立生態文明意識 課件
- GB/T 9442-2024鑄造用硅砂
- 中國椎管內分娩鎮痛專家共識(2020版)
- 2023-2024學年天津市紅橋區八年級(下)期中數學試卷(含解析)
- 國開2024年《機械設計基礎》形考任務1-4答案
- ifix培訓教程課件
- 社會單位消防安全風險自查評估報告表模板
- 精神科出院康復指導
- 2024年貴州建筑安全員B證考試題庫及答案(推薦)
- sls打印工藝流程
評論
0/150
提交評論