電話簿管理系統(tǒng)課程設(shè)計_第1頁
電話簿管理系統(tǒng)課程設(shè)計_第2頁
電話簿管理系統(tǒng)課程設(shè)計_第3頁
電話簿管理系統(tǒng)課程設(shè)計_第4頁
電話簿管理系統(tǒng)課程設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計電話簿管理系統(tǒng)VER1.0系 別 :計算機(jī)科學(xué)與技術(shù)系專業(yè)(班級):電子信息科學(xué)與技術(shù)2班 姓名徐楚奇 學(xué)號51202022022指導(dǎo)教師:趙翔完成日期: 2014年11月7日目 錄摘要3第一章前言4第二章 電話簿管理系統(tǒng)介紹52.1 流程圖52.2 程序編寫概要6第三章 主要功能實現(xiàn)73.1 刪除功能設(shè)計73.2 添加功能設(shè)計7第四章源程序9第五章總結(jié)心得23致謝24參考文獻(xiàn)24摘要本次課程設(shè)計的題目是個人通訊錄管理系統(tǒng),要求將程序中所輸人的聯(lián)系人姓名、電話、QQ、MSN和地址信息這些數(shù)據(jù)以文本的方式保存,并且能夠?qū)λ鶅Υ娴穆?lián)系人信息進(jìn)行顯示、查詢、修改、刪除等功能。 本文通過利用模

2、塊化程序設(shè)計思想,使用單鏈表和結(jié)構(gòu)體等編寫出的可以實現(xiàn)存儲、打印、刪除等功能的電話簿管理系統(tǒng)。通過完成這個課程設(shè)計讓我們熟悉并掌握在c語言中使用結(jié)構(gòu)體、單鏈表,指針,函數(shù),和模塊化設(shè)計思想。關(guān)鍵詞 結(jié)構(gòu)體,鏈表,指針,函數(shù)第一章 前言 在前面我們學(xué)習(xí)了c語言的一些基礎(chǔ)知識對c語言有了初步的認(rèn)識和了解,為了讓我們更加全面地了解c語言程序設(shè)計的步驟和方法,在老師的指導(dǎo)下 我們進(jìn)行了一次綜合實訓(xùn)。設(shè)計一個簡單的電話簿管理系統(tǒng),可以存儲,刪除等電話號碼。為了方便使用DEV-C+來編寫程序,可以添加漢字備注方便理解程序。根據(jù)前面所學(xué)的單鏈表、指針、函數(shù)、結(jié)構(gòu)體等知識在使用模塊化設(shè)計思想去編寫。設(shè)計“通訊

3、錄管理系統(tǒng)”使其具有數(shù)據(jù)插入、修改、刪除、顯示和查詢等功能。使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實現(xiàn)算法,以及它們在程序中的使用方法。使學(xué)生掌握軟件設(shè)計的基本內(nèi)容和設(shè)計方法,并培養(yǎng)學(xué)生進(jìn)行規(guī)范化軟件設(shè)計的能力。使學(xué)生掌握使用各種計算機(jī)資料和有關(guān)參考資料,提高學(xué)生進(jìn)行程序設(shè)計的基本能力。其功能包括以下各項:1)數(shù)據(jù)包括:人名、電話號碼。2)可對記錄中的姓名和電話號碼進(jìn)行修改。3)可增加或刪除記錄。4)可顯示所有保存的記錄。第二章 電話簿管理系統(tǒng)介紹2.1 流程圖電話簿管理系統(tǒng)因具備以下功能有流程圖表示,如下圖2.10電話簿管理系統(tǒng)新建一個電話簿插入新的記

4、錄打印所有記錄讀取文件保存當(dāng)前輸入的內(nèi)容退出系統(tǒng)查找功能添加新記錄圖2.102.2程序編寫概要1 主函數(shù) main()主函數(shù)使用戶進(jìn)入電話簿管理系統(tǒng)主界面用戶選擇界面,用戶可以選擇要使用的功能并選擇相應(yīng)的選項進(jìn)入該功能。使用printf函數(shù)和switch case結(jié)構(gòu)來編寫主函數(shù)。2 creat()函數(shù)creat函數(shù)用來建立新的電話號碼簿,用戶可以通過它來向系統(tǒng)輸入數(shù)據(jù)。為下面的操作提供數(shù)據(jù)。3 delete函數(shù)delete函數(shù)用來刪除不需要的數(shù)據(jù),可以用單鏈表來實現(xiàn),并要記住用free函數(shù)來釋放被刪除鏈表的空間,避免浪費空間。4 save函數(shù)當(dāng)需要保存已輸入的數(shù)據(jù)時就需要用到save函數(shù),該

5、函數(shù)可以將數(shù)據(jù)存儲到指定的地方為以后使用。5 load函數(shù)顧名思義load函數(shù)是將所存的數(shù)據(jù)從文件所在位置讀取出來以便做打印等處理。6 search函數(shù)當(dāng)存入很多文件時候,再用普通的方法打印輸出所有數(shù)據(jù)再查找文件中的目標(biāo)文件就會很麻煩,這時你需要從已存文件中快速找出你所想要的用戶的電話號碼就要選擇此功能,他可以快速找出你所輸入用戶名的電話號碼,簡單方便。7 append函數(shù)Append函數(shù)用來像已有的文件中添加新的電話號碼文件。8 modify函數(shù)在你無意中或心急的時候很有可能將數(shù)據(jù)輸入錯誤,所以你還需要具有修改數(shù)據(jù)的功能,將錯誤的數(shù)據(jù)重新輸入在進(jìn)行保存工作,確保數(shù)據(jù)的正確性,modify函數(shù)

6、具有該功能。第3章 主要功能實現(xiàn)3.1 刪除功能設(shè)計 單鏈表中的元素是可以刪除的,要想刪除指定的元素邏輯上是把它從單鏈表中分離出來,并調(diào)用free函數(shù)釋放其儲存空間。 算法如下: 刪除鏈表中的第i個結(jié)點,就是要讓其前驅(qū)的指針繞過該結(jié)點,指向該結(jié)點的后續(xù)結(jié)點。假設(shè)指針P已經(jīng)指向鏈表中的第i-1個結(jié)點,如圖3.10所示。則刪除ai結(jié)點最基本的操作可以用一條語句實現(xiàn):p->next=p->next->next。ai+1NULLa1aiai-1 head p圖3.10這樣操作會浪費掉所有刪除的結(jié)點空間。如果被刪除的結(jié)點不再使用了,則釋放其存儲空間,因此需要按如下方式實現(xiàn):temp=p

7、->next;p->next=temp->next;free(temp);3.2 添加功能設(shè)計 鏈表的插入是指將一個結(jié)點插入到一個已有的鏈表中去。 算法如下: 首先產(chǎn)生新結(jié)點,并放入數(shù)據(jù),然后搜索要插入的位置,再將結(jié)點連入到已有鏈表中。設(shè)指針p已經(jīng)指向了ai-1結(jié)點,且要插入結(jié)點(值為data)由s指向,如圖3.20所示,則插入的操作由下面兩個語句來實現(xiàn)。 s->next=p->next; p->next=s; 上面的兩條插入語句順序不可顛倒。 P ai-1 ai X data S 圖3.20第四章 源程 序#include<stdio.h>#i

8、nclude<malloc.h>typedef struct contactschar name20;/your friend's namechar tele20;/your friend's telephonechar QQ15 ;/your friend's QQ (0- 4294967295)char e_mail30;/your friend's E-mailstruct contacts *pre;struct contacts *next;CON;void Dis_menu(void)printf("n*MENU*n n &qu

9、ot;);printf("1. New Contact.n");printf("2. Edit Contact.n");printf("3. Search Contact. n ");printf("4. Delete Contact. n");printf("5. Show All Contact. n");printf("6. Exit The System. n");printf("*n ");int Menu_chose(void)int chos

10、e;Dis_menu();Lp:printf("Please Input you choice (1 6):");scanf("%d",&chose);if(chose < 10&&chose > 0)return chose;elseprintf("Warning! ");goto Lp;void Con_input(CON *load)if(load = NULL)printf("Failded In malloc for new node! n");return ;prin

11、tf("n Please Input Friend's Name:n");scanf("%s",load->name);printf(" Please Input Friend's Mobile:n");scanf("%s",load->tele);printf(" Please Input Friend's QQ:n");scanf("%s",load->QQ);printf(" Please Input Friend&#

12、39;s E-mail:n");scanf("%s",load->e_mail);printf("n");CON *Insert_contact(CON *head,CON *load)if(head=NULL)/The fist friendload->pre=NULL;load->next=NULL;head=load;printf("Check_1");elsehead->pre=load;load->next=head;load->pre=NULL;head=load;printf

13、("Check_2");return head;/chose 1 New ContactCON *Add_contact(CON *head)CON *load=(CON *)malloc(sizeof(CON);Con_input(load);head=Insert_contact(head,load);return head;CON *read_file(CON *head)FILE *fp=fopen("/home/kuye/phone","rb+");int ret=0;while(feof(fp)=0)CON *load=(

14、CON *)malloc(sizeof(CON);if(load=NULL)printf("%s%d:failed in mallocn",_FUNCTION_,_LINE_);fclose(fp);return NULL;ret=fread(load,sizeof(CON),1,fp);printf("ret = %dn",ret);if(ret=1)head=Insert_contact(head,load);elsefree(load);return head;/chose 2 Edit Contactvoid Edit_name(CON *loa

15、d)if(load=NULL)printf(" Please Check You Input ");return ;Con_input(load);/chose 3 Search ContactCON *find_name(CON *head)CON *load = head;char Found_name20;printf("Please Enter To Your Contact Name :n");scanf("%s",Found_name);while(load != NULL)if(strcmp(load->name

16、,Found_name)=0)return load;load = load->next;printf(" It's not Find ! n");return NULL;/chose 4 Delete Contact.CON* Delete_name(CON *head)CON*load = head;load = find_name(head);if(head->pre=NULL&&head->next=NULL)free(head);return NULL;if(head->pre=NULL)head->next-

17、>pre=NULL;head=head->next;free(head);return head;else if(load->next=NULL)load->pre->next=NULL;free(load);return head;else load->next->pre=load->pre;load->pre->next=load->next;free(load);return head;/chose 5 Show All Contact.void show_all_nodes(CON *head)CON *load = N

18、ULL;load = head;printf("n-ALL CONTACT-n");if(load = NULL)printf(" NULL.You Can choce Menu 1 To ADD Contact");printf("n-n");while(load != NULL)printf(" Name : %s n Tele : %s n Q Q : %s n E-mail: %s n",load->name,load->tele,load->QQ,load->e_mail);pri

19、ntf("n-n");load=load->next;void delete_all_nodes(CONT *head)CON *load=head;CON *pNext=NULL;int ret;FILE *fp=fopen("/home/kuye/phone","wb+");if(fp=NULL)printf("failed in open written filen");return ;while(load!=NULL)head=load->next;ret=fwrite(load,sizeof(

20、CONT),1,fp);printf("ret= %dn",ret);free(load);load=head;fclose(fp);int main()int chose;char Sure;CON *pst=NULL;CON *fd=NULL;pst=read_file(pst);while(1)chose = Menu_chose();switch(chose)case 1:/Newprintf("n-NEW CONTACT-");pst=Add_contact(pst);break;case 2:/Editprintf("n-EDIT

21、CONTACT-n");fd =find_name(pst);Edit_name(fd);break;case 3:/Searchfd = find_name(pst);if(fd != NULL)printf("n-SEARCH CONTACT-n");printf(" Name : %s n Tele : %s n Q Q : %s n E-mail: %s n",fd->name,fd->tele,fd->QQ,fd->e_mail);printf("-n");break;case 4:/Del

22、etepst = Delete_name(pst);break;case 5:/Showshow_all_nodes(pst);break;case 6:/Exitprintf(" Are you Sure Exit? (Y/N) n ");LOOP:scanf("%s",&Sure);if(Sure = 'Y'|Sure = 'y')delete_all_nodes(pst);return 1;else if(Sure = 'N'|Sure = 'n');else printf(" Warning ! Please Input Y/N. n ");goto LOOP;break;return 1;第五章 總

溫馨提示

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

最新文檔

評論

0/150

提交評論