




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEPAGE1實驗課程名稱通訊錄管理系統(tǒng)專業(yè)班級10級計科1班學生姓名學號指導教師2012至2013學年第一學期第1至18周目錄10448第1章概述 3178651.1現狀分析 3104471.2實現意義 33288第2章系統(tǒng)分析 4185902.1用戶需求分析 4286962.2管理者需求分析 429179第3章概要設計 5105763.1主控菜單設計 567903.2總結構設計流程圖 622194第4章詳細設計 6129214.1通訊錄建立模塊設計 6284664.2通訊錄查詢模塊設計 715494.3通訊錄刪除模塊設計 7253024.4通訊錄鏈表的輸出模塊設計 83868第5章運行與測試 93668第6章總結和心得 924770參考文獻 109387附件(源代碼) 10第1章概述1.1現狀分析 日益繁多的人際交往使得我們很難記住與每個人之間的聯系方式,通訊錄能夠便捷的給我們帶來所需要的相關信息。為了實現通訊錄管理的幾種操作功能,首先設計一個含有多少個菜單項的主控菜單程序,然后再為這些菜單配上相應的功能。1.2實現意義隨著計算機的普及,人們的生活擺脫了傳統(tǒng)式的記事本、電話簿,越來越多的靠計算機或者手機中的電話簿程序來幫助人們記住這些事情,極其簡便。這就需要有一個使用的通訊錄管理系統(tǒng),用戶可以方便的通過自己電腦的通訊錄管理系統(tǒng),來隨時查閱自己所需要的信息,而不必再大費周折去翻開那繁瑣的記事本。通訊錄管理系統(tǒng)是一個專門針對儲存用戶聯系方式以及一些簡單個人信息的實用管理系統(tǒng),它方便了用戶對眾多客戶、朋友、同事等個人信息的儲存和快速查閱的功能,大大減少了查找過程的時間。然而要靠計算機來記住這些信息,首先就得要求用單鏈表做數據結構,設計一個實現通訊者信息的輸入、查詢、刪除、輸出、等功能的通訊錄管理系統(tǒng)。每條通訊者信息包含:編號、姓名、性別、電話號碼、地址等信息。第2章系統(tǒng)分析2.1用戶需求分析為實現系統(tǒng)功能,本程序主要分為五個模塊。它們分別為:輸入一個信息、刪除一個信息、查詢一個信息、插入一個信息、輸出所有的信息、退出該程序。這五個函數再通過主函數調用分別得以實現。主函數,首先提供了程序運行時的友好界面,列出了清單,提供用戶做出選擇,以便決定使用通訊錄的哪種功能。然后,通過執(zhí)行多分支選擇語句—switch語句,分別實現其它各個函數的調用功能。界面必須美觀簡潔能夠使人一目了然操作方便。2.2管理者需求分析題目要求編寫程序實現通訊者通訊錄的管理每個同學的通訊錄基本信息包括編號、姓名、性別、電話和住址。要求給用戶提供功能界面根據用戶的選擇實現添加、查找、刪除、輸出某個記錄的功能用文件實現基本信息的存儲。按照題目要求同學通訊錄系統(tǒng)需要實現的功能有添加信息、查找信息、顯示信息以及刪除信息。并且在通訊錄的個人信息中必須包含有編號、姓名、性別、電話號碼以及家庭住址。據此要求可以得知本程序必須滿足以下要求:一、首先要有一個基本信息類類中包含有編號、姓名、性別、電話號碼以及家庭住址的內容。二、必須有一個便于操作的菜單實現添加信息、查找信息、顯示信息以及刪除信息的功能。三、必須能夠實現文件的存取以及修改功能以便于真正的達到同學錄記錄數據的目的。第3章概要設計根據要求通訊錄需要提供文件的輸入、輸出等操作;還需要保存記錄以進行刪除、查找等操作,另外還需提供鍵盤式選擇菜單實現選擇功能。3.1主控菜單設計系統(tǒng)功能模塊圖如下:通訊錄管理系統(tǒng)建立通訊通訊錄管理系統(tǒng)建立通訊添加記錄查詢記錄刪除記錄退出系統(tǒng)3.2總結構設計流程圖第4章詳細設計4.1通訊錄建立模塊設計linklistcreatelist(void){ linklisthead=(listnode*)malloc(sizeof(listnode)); listnode*p,*rear; intflag=0; rear=head; while(flag==0) {p=(listnode*)malloc(sizeof(listnode)); printf("編號(4)姓名(8)性別(11)電話(11)地址(13)\n"); printf("**********\n"); scanf("%s%s%s%s%s",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr); rear->next=p; rear=p; printf("結束建表嗎?(1/0):"); scanf("%d",&flag); } rear->next=NULL; returnhead;}4.2通訊錄查詢模塊設計listnode*listfind(linklisthead){ listnode*p; charnum[5]; charname[9]; intxz; printf("=============\n"); printf("1按編號查詢\n"); printf("2按姓名查詢\n"); printf("==========\n"); printf("請選擇\n"); p=head->next; scanf("%d",&xz); if(xz==1){ printf("請輸入查找者的編號"); scanf("%s",num); while(p&&strcmp(p->data.num,num)<0) p=p->next; if(p==NULL||strcmp(p->data.num,num)>0) returnp=NULL; elsereturnp;}elseif(xz==2){ printf("請輸入查找者的姓名"); scanf("%s",name); while(p&&strcmp(p->,name)!=0) p=p->next; returnp;}}4.3通訊錄刪除模塊設計voiddelnode(linklisthead){ intj=0; listnode*p,*q; p=listfind(head); if(p==NULL)printf("沒有查到要刪除的通訊者\n");printf("真的要刪除該結點嗎?(0/1)"); scanf("%d",&j); if(j==0){ q=head; while(q!=NULL&&q->next!=p) q=q->next; q->next=p->next; free(p); printf("通訊者已被刪除\n");}}4.4通訊錄鏈表的輸出模塊設計voidprintlist(linklisthead){ listnode*p; p=head->next; printf("編號姓名性別聯系電話地址\n"); printf("\n"); while(p!=NULL) { printf("%s,%s,%s,%s,%s\n",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr); printf("\n"); p=p->next; }}第5章運行與測試第6章總結和心得在編代碼時,因為不細心的少符號或輸入有誤而導致花了大量時間去調試,終于調試對了又發(fā)現鏈接不起,拿到同學電腦上去調試,發(fā)現是安裝的軟件有問題。在運行監(jiān)測中第一項:通訊錄鏈表的建立,就出現了有問題,原本要求輸入五個參數就能完成起通訊錄鏈表的建立,但是出現要輸入六個參數才能完成建立。回去看源代碼才發(fā)現在輸出項中多輸了一個%s。接著調試,在通訊者結點的刪除中出現了無法刪除,經過修改源代碼調試后又出現能刪除了但是又不能繼續(xù)往下做了,又進行修改和調試找不出問題所在,沒辦法找同學幫我看了一下,才發(fā)現在通訊者結點的刪除代碼中沒有printf(“通訊者已被刪除!\n)經過無數次的調試修改終于完成了,感到欣慰,也感到失落,原來不懂的太多太多。參考文獻[1]數據結構:嚴蔚敏,吳偉民編著.—北京:清華大學出版社,2007[2]數據結構課程設計:蘇仕華編著.—北京:清華大學出版社,2002[3]數據結構自學輔導:蘇仕華編著.—北京:機械工業(yè)出版社,2005附件(源代碼)#include<stdio.h>#include<string.h>#include<stdlib.h>typedefstruct{ charnum[5]; charname[9]; charsex[3]; charphone[13]; charaddr[31];}datatype;typedefstructnode{ datatypedata; structnode*next;}listnode;typedeflistnode*linklist;linklisthead;listnode*p;intmenu_select();linklistcreatelist(void);voidinsertnode(linklisthead,listnode*p);listnode*listfind(linklisthead);voiddelnode(linklisthead);voidprintlist(linklisthead);voidmain(){ for(;;){ switch(menu_select()) { case1: printf("**********\n"); printf("通訊錄鏈表的建立"); printf("**********\n"); head=createlist(); break; case2: printf("**********\n"); printf("通訊者信息的添加"); printf("**********"); printf("編號(4)姓名(8)性別(11)電話(11)地址(13)"); printf("**********\n"); p=(listnode*)malloc(sizeof(listnode)); scanf("%s%s%s%s%s",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr); insertnode(head,p); break; case3: printf("**********\n"); printf("通訊者信息的查詢"); printf("**********\n"); p=listfind(head); if(p!=NULL){ printf("編號姓名性別電話地址\n"); printf("%s,%s,%s,%s,%s\n",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr); printf("**********\n"); } else printf("沒有查到通訊者!\n"); break; case4: printf("**********\n"); printf("通訊錄信息刪除"); printf("**********\n"); delnode(head); case5: printf("**********\n"); printf("通訊錄信息輸出"); printf("**********\n"); printlist(head); break; case0: printf("\t再見!\n"); return; } }}/**********/intmenu_select(){ intsn; printf("通訊錄管理席系統(tǒng)\n"); printf("===========\n"); printf("1通訊錄鏈表的建立\n"); printf("2通訊者結點的插入\n"); printf("3通訊者結點的查詢\n"); printf("4通訊者結點的刪除\n"); printf("5通訊鏈表的輸出\n");printf("0退出管理系統(tǒng)\n"); printf("===========\n"); printf("請選擇0-5"); for(;;) { scanf("%d",&sn); if(sn<0||sn>5) printf("\n\t輸入錯誤,重選0-5"); else break; } returnsn;}linklistcreatelist(void){ linklisthead=(listnode*)malloc(sizeof(listnode)); listnode*p,*rear; intflag=0; rear=head; while(flag==0) {p=(listnode*)malloc(sizeof(listnode)); printf("編號(4)姓名(8)性別(11)電話(11)地址(13)\n"); printf("**********\n"); scanf("%s%s%s%s%s",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr); rear->next=p; rear=p; printf("結束建表嗎?(1/0):"); scanf("%d",&flag); } rear->next=NULL; returnhead;}voidinsertnode(linklisthead,listnode*p){ listnode*p1,*p2; p1=head; p2=p1->next; while(p2!=NULL&&strcmp(p2->data.num,p->data.num)<0) { p1=p2; p2=p2->next; } p1->next=p; p->next=p2;}listnode*listfind(linklisthead){ listnode*p; charnum[5]; charname[9]; intxz; printf("=============\n"); printf("1按編號查詢\n"); printf("2按姓名查詢\n"); printf("==========\n"); printf("請選擇\n"); p=head->next; scanf("%d",&xz); if(xz==1){ printf("請輸入查找者的編號"); scanf("%s",num); while(p&&strcmp(p->data.num,num)<0) p=p->next; if(p==NULL||strcmp(p->dat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購買進口相機合同協(xié)議
- 購車貸款免息合同協(xié)議
- 誤簽拆遷協(xié)議書范本
- 豆芽合同協(xié)議書范本
- 購買私人碎石合同協(xié)議
- 2025屆浙江省G12名校協(xié)作體高三上學期返校考-地理試題(含答案)
- 財務管理公司合同協(xié)議
- 購車合同協(xié)議終修訂版
- 貼地板合同協(xié)議
- 2025屆山東省泰安市肥城市高三上學期開學考-地理試題(含答案)
- SYT 6169-2021 油藏分類-PDF解密
- 24春國家開放大學《兒童心理學》期末大作業(yè)參考答案
- 交規(guī)記心中安全伴我行
- 父母教養(yǎng)方式對大班幼兒攻擊性行為的影響及教育建議
- 個人裝修施工合同范本
- 慢性肝病的預防與管理
- 體育產業(yè)與生態(tài)環(huán)境的共同保護
- 讀后續(xù)寫制作稻草人(T8聯考)講義-高考英語作文復習專項
- 食堂員工培訓內容-食堂從業(yè)人員培訓資料
- 中職電子商務班級建設方案
- 基于文化創(chuàng)意視角的媽祖文化旅游地產發(fā)展研究莆田媽祖文化旅游地產發(fā)展條件及思路研究
評論
0/150
提交評論