版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、語(yǔ)言程序設(shè)計(jì)報(bào)(個(gè)人通信錄管理系統(tǒng))通信與信息工程學(xué)院系:級(jí):通信工程1104班員:間:2012年7月2日課程設(shè)計(jì)名稱基于鏈表的個(gè)人通信錄管理系統(tǒng)指導(dǎo)教師姓名職稱需學(xué)生數(shù)6人組長(zhǎng)楊文剛成員李巖、王皓升、羅洋、王志旭、沈洋基于鏈表的個(gè)人通信錄管理系統(tǒng)課程設(shè)計(jì)任務(wù)書課 程 設(shè) 計(jì) 情 況各成 員 主 要 負(fù) 責(zé) 內(nèi) 容楊文剛王皓升王志旭負(fù)責(zé)主體函數(shù)框架建立和函數(shù)模塊整合負(fù)責(zé)程序的添加模塊負(fù)責(zé)程序的刪除模塊負(fù)責(zé)程序的查找模塊負(fù)責(zé)程序的輸出模塊負(fù)責(zé)程序的輸入模塊程序的調(diào)試和測(cè)試由小組成員共同參與完成課程設(shè)計(jì)的報(bào)告撰寫由楊文剛、李巖完成1目錄2. 總體設(shè)計(jì)3. 詳細(xì)設(shè)計(jì)4. 程序調(diào)試與測(cè)試5. 程序清單
2、與執(zhí)行結(jié)果14程序清單程序執(zhí)行結(jié)果206. 課程設(shè)計(jì)總結(jié)1.設(shè)計(jì)目的問(wèn)題描述編寫一 C語(yǔ)言程序,其功能是建立一個(gè)基于鏈表的個(gè)人通信錄管理系統(tǒng),個(gè) 人通信錄進(jìn)行建立、輸出、添加、查找及刪除運(yùn)行結(jié)果進(jìn)行打印等相關(guān)操作。問(wèn)題分析首先,選擇合適的存儲(chǔ)結(jié)構(gòu)構(gòu)造個(gè)人通信錄,對(duì)該程序可以分為幾個(gè)模 塊進(jìn)行分析,每個(gè)模塊在該程序中的作用進(jìn)行了解。最后用設(shè)計(jì)連接圖將各 模塊之間的聯(lián)系連接起來(lái),以方便我們更容易理解。然后,該程序需要一個(gè)詳細(xì)的設(shè)計(jì)流程圖來(lái)表示各個(gè)步驟所完成的先后 順序,(如,對(duì)個(gè)人通信錄進(jìn)行添加,查找輸出打印結(jié)果)。最后,按流程圖進(jìn)行編寫個(gè)人通信錄的程序,輸出結(jié)果,并將打印的結(jié) 果顯示出。設(shè)計(jì)分析
3、本次實(shí)驗(yàn)設(shè)計(jì)主要是建立個(gè)人通信錄,要實(shí)現(xiàn)個(gè)人通信錄的建立,個(gè)人 通信錄的查找,個(gè)人通信錄的添加及個(gè)人通信錄的刪除功能。.設(shè)計(jì)需求上我們需要掌握以下幾點(diǎn):(1).設(shè)計(jì)部分1.2.3.4.寫出本次實(shí)驗(yàn)的詳細(xì)設(shè)計(jì)方案。畫出該次程序的流程圖。分析該次程序的程序清單,進(jìn)行程序測(cè)試并輸出運(yùn)行結(jié)果。對(duì)該次程序中個(gè)函數(shù)的功能分析結(jié)果。對(duì)該次實(shí)驗(yàn)完成后有總結(jié)。5.(2).設(shè)計(jì)大綱1.2.3.4.5.了解,分析這次實(shí)驗(yàn)的主要問(wèn)題。 討論解決問(wèn)題的方案。分配組員的個(gè)人任務(wù)。進(jìn)行各部分的整合、修改、完善。 進(jìn)行這次實(shí)驗(yàn)的總體報(bào)告實(shí)驗(yàn)總結(jié)。2.總體設(shè)計(jì)程序設(shè)計(jì)組成框圖個(gè)人通信個(gè)人通信個(gè)人通信錄 主函數(shù)模塊 個(gè)人通信圖1
4、個(gè)人通信個(gè)人通信流程圖I開(kāi)始菜單詵擇否否是否是否是否是1r是按身份、證號(hào)查信息輸信息輸信息添信息刪信息查卄V結(jié)束3. 詳細(xì)設(shè)計(jì)模塊功能說(shuō)明通信錄建立模塊 創(chuàng)建鏈表,并返回表頭指針創(chuàng)建新節(jié)點(diǎn);while (判斷讀入編號(hào))讀入聯(lián)系人信息;保存到指定的域;指針指向下一新節(jié)點(diǎn);按指定格式輸出通訊錄表頭信息;if( 頭指針不為空 )按指定格式輸出聯(lián)系人信息; 記錄聯(lián)系人數(shù);else通信錄為空;通信錄添加模塊新建節(jié)點(diǎn);屏幕提示輸入要添加的聯(lián)系人信息;讀入聯(lián)系人信息; 按聯(lián)系人編號(hào)升序排序;通信錄刪除模塊提示輸入要?jiǎng)h除的聯(lián)系人編號(hào); 讀入編號(hào)信息;if (找到)輸出找到的聯(lián)系人信息; 詢問(wèn)是否刪除該聯(lián)系人;
5、else提示沒(méi)有該聯(lián)系人;通信錄查找模塊提示輸入要查找的聯(lián)系人身份證號(hào); 讀入身份證號(hào)信息;If( 找到 ) 顯示查找到的聯(lián)系人信息; else提示沒(méi)有該聯(lián)系人;4. 程序調(diào)試與測(cè)試參照教材編寫完程序的各個(gè)模塊后, 我們將各個(gè)模塊和主函數(shù)整合, 運(yùn)行之 后主要存在以下幾個(gè)問(wèn)題:1. 程序輸出信息部分不正確運(yùn)行程序, 輸入通信錄中聯(lián)系人信息后, 程序輸出的電話號(hào)碼和身份證號(hào)信 息錯(cuò)誤,有時(shí)還會(huì)出現(xiàn)負(fù)數(shù)。經(jīng)過(guò)查找發(fā)現(xiàn)在讀入聯(lián)系人信息時(shí),這兩項(xiàng)采用了 長(zhǎng)整型數(shù)據(jù)類型,但是長(zhǎng)整型最大支持的值仍然小于電話號(hào)碼和身份證號(hào)的值。 我們換用字符串類型讀入信息后為問(wèn)題解決。2. 結(jié)束聯(lián)系人信息的輸入(以數(shù)字 0
6、結(jié)束)存在問(wèn)題0時(shí),程序才會(huì)結(jié)束讓程序先判斷輸入的聯(lián)0時(shí)繼續(xù)讀入聯(lián)系人信息。這樣在我們運(yùn)行程序,我們?cè)谳斎肼?lián)系人信息完畢后是用數(shù)字 0結(jié)束的,但是當(dāng)我們輸 入完信息后,得將下一個(gè)聯(lián)系人的所有信息全部輸入為數(shù)字 輸入。針對(duì)這個(gè)問(wèn)題我們修改了輸入模塊的循環(huán)體順序, 系人編號(hào)是否為 0,是 0時(shí)結(jié)束輸入,不是 結(jié)束輸入時(shí)只需按一次 0即可結(jié)束輸入。當(dāng)我們輸入通信錄中存在的聯(lián)系人的 但當(dāng)我們輸入的身份證號(hào)信息在通信 if 語(yǔ)句中的 通信錄中沒(méi)3. 聯(lián)系人的查找存在問(wèn)題我們?cè)诓檎遥ㄓ蒙矸葑C號(hào))聯(lián)系人時(shí), 身份證號(hào)時(shí),程序能準(zhǔn)確查找到該聯(lián)系人; 錄中不存在時(shí),程序會(huì)非法結(jié)束。為此,我們請(qǐng)教了老師,修改了
7、判斷條件,程序能夠在我們輸入的身份證號(hào)信息不存在時(shí)正常提示 有該聯(lián)系人”,問(wèn)題解決。因?yàn)槲覀兊某绦蚴歉鶕?jù)教材中的程序編寫的, 所以在調(diào)試過(guò)程中, 程序沒(méi)有 出現(xiàn)大的錯(cuò)誤, 在模塊連接上也沒(méi)有問(wèn)題, 只是有一些輸入輸出以及一些循環(huán)體 上的錯(cuò)誤。5. 程序清單與執(zhí)行結(jié)果程序清單/* 主控菜單程序 */#include ""#include ""#include ""struct per /*long int num; char name20; char tel12;char mail30; char add50;long int mnum
8、; char id18; struct per *next;struct per *jianli(); */定義結(jié)構(gòu)體類型/*/聲明建立通信錄函數(shù)void shuchu(struct per *head); */*聲明輸出通信錄函數(shù)struct per *tianjia(struct per *head); */*聲明添加聯(lián)系人函數(shù)struct per *shanchu(struct per *head); */*聲明刪除聯(lián)系人函數(shù)struct per *chazhao(struct per *head); */*聲明查找聯(lián)系人函數(shù)struct per *head=NULL;void main
9、() /*主函數(shù) */int select;int pass1;int pass=123456;printf("n 歡迎使用個(gè)人通信錄管理系統(tǒng),請(qǐng)輸入登錄密碼 :"); scanf("%d",&pass1);if(pass=pass1)printf("n 登錄成功 !nn");doprintf("nt*歡迎進(jìn)入個(gè)人通信錄管理系統(tǒng)*n");/* 主控菜單 */printf("nt >>1:建立通信錄printf("nt >>2:輸出通信錄printf("n
10、t >>3:添加聯(lián)系人printf("nt >>4:刪除聯(lián)系人printf("nt >>5:查找聯(lián)系人printf("nt >>0:退出系統(tǒng)<<<<<<<<<<<<IIIIIIn");printf("nt*n");printf("nt 請(qǐng)選擇( 0-5 ): ");對(duì)應(yīng)模塊函數(shù) */*scanf("%d",&select); printf("n");
11、 switch(select) case 1:head=jianli();break;case 2:shuchu(head);break;case 3:head=tianjia(head);break;case 4:head=shanchu(head);break;case 5:head=chazhao(head);break;case 0:break; default:printf(" 您的輸入有誤,請(qǐng)重新輸入( 0-5 ):n");while(select!=0);對(duì)不起,您輸入的密碼不正確,請(qǐng)按任意鍵退出程/*創(chuàng)建鏈表,并返回表頭指針 */*/*/*表頭 */ 新建節(jié)
12、點(diǎn) */ 表尾節(jié)點(diǎn) */*無(wú)任何節(jié)點(diǎn),表頭指向空 */姓名、電話、身份證號(hào)、郵箱、地址及新建一存入else printf("n序!nn");*/* 建立通信錄函數(shù)struct per *jianli()struct per *head;struct per *p1;struct per *p2;long int num1;char name120;char tel112;char mail130;char add150;long int mnum1;char id118;head=NULL;printf(" 請(qǐng)輸入聯(lián)系人編郵編(用空格分隔,用 0結(jié)束) n&quo
13、t;); scanf("%d",&num1);while(num1!=0)/* 假設(shè) num=0表示輸入結(jié)束 */scanf(" %s%s%s%s%s%d",name1,tel1,id1,mail1,add1,&mnum1); /* 讀入第一個(gè)聯(lián)系人的信息 */p1=(struct per *)malloc(sizeof(struct per); /* 個(gè)節(jié)點(diǎn)*/*p1->num=num1;聯(lián)系人的信息 */ strcpy(p1->name,name1); strcpy(p1->tel,tel1); strcpy(p1-
14、>id,id1); strcpy(p1->mail,mail1); strcpy(p1->add,add1);點(diǎn)*/八、*/*p1->mnum=mnum1;p1->next=NULL;if(head=NULL) head=p1;elsep2->next=p1;p2=p1;scanf("%d",&num1);return head;/*輸出通信錄函數(shù) */ void shuchu(struct per *head) struct per *p; int n=0;/*/*/*/*/*將 next 域置為空,表示尾節(jié)第一個(gè)新建節(jié)點(diǎn)是表頭
15、 */原表尾的下一個(gè)節(jié)點(diǎn)是新節(jié)點(diǎn)新建節(jié)點(diǎn)成為表尾 */返回表頭指針 */printf("nt* *n");printf("n%-5s%-12s%-12s%-19s%-17s%-9s%-7sn"," "," 電話號(hào)碼 "," 身份證號(hào) "," 郵箱"," 地址"," 郵編 ");if(head!=NULL)for(p=head;p!=NULL;p=p->next) /* 出循環(huán),否則繼續(xù) */II II統(tǒng)計(jì)節(jié)點(diǎn)數(shù),即聯(lián)系人數(shù) */信
16、 * 錄通 *編 號(hào) "," 姓 名如果到達(dá)尾節(jié)點(diǎn)退printf("%-5d%-12s%-12s%-19s%-17s%-9s%-7dn",p->num,p->name,p->tel,p->id,p->mail,p->add,p->mnum);n+;printf(" 聯(lián)系人總數(shù): %dnn",n);elseprintf("n 對(duì)不起,該通信錄中沒(méi)有任何聯(lián)系人 !nn");/* 添加聯(lián)系人函數(shù) */ struct per*tianjia(struct per*head)stru
17、ct per*p;struct per*p1;struct per*p2;p2=head;/*p=(struct per*)malloc(sizeof(struct per);建節(jié)點(diǎn) p*/printf(" 請(qǐng)輸入要添加的聯(lián)系人的編號(hào)、姓名、電話、身份證號(hào)、郵 箱、地址、郵編 :n");scanf("%d %s %s %s %s %s %d",&p->num,p->name,p->tel,p->id,p- >mail,p->add,&p->mnum);printf(" 成功添加聯(lián)系人 %
18、s !n",p->name);if(head=NULL)head=p; p->next=NULL;else查找添加 while(p->num>p2->num)&&(p2->next!=NULL) /* 位置*/p1=p2; p2=p2->next;if(p->num<=p2->num) /* 從小到大排列,添加至表內(nèi) */ if(p2=head)head=p;p->next=p2;elsep1->next=p;p->next=p2; else/*添加至表尾 */p2->next=p;
19、p->next=NULL;return(head);/* 刪除聯(lián)系人函數(shù) */struct per * shanchu(struct person*head)struct per *p2;struct per *p1;int num1,n;printf(" 請(qǐng)輸入要?jiǎng)h除的聯(lián)系人編號(hào): "); /* 聯(lián)系人 */scanf("%d",&num1);if(head=NULL)printf("n 通訊錄為空 nn"); return(head);p2=head;while(num1 != p2-> num &&a
20、mp; p2->next !=NULL)根據(jù)輸入信息查找p1=p2; p2=p2->next; if(num1=p2->num)編 號(hào) "," 姓II IIprintf("n 成功查詢到該聯(lián)系人! n"); printf("n%-5s%-12s%-12s%-19s%-17s%-9s%-7sn"," 名"," 電話號(hào)碼 "," 身份證號(hào) "," 郵箱 "," 地址 "," 郵編");printf(&q
21、uot;%-5d%-12s%-12s%-19s%-17s%-9s%-7d",p2->num,p2->name,p2->tel,p2->id,p2->mail,p2->add,p2->mnum);printf("n 確定刪除? 1 確定 0 取消 ");scanf("%d",&n);switch(n)case 1:if(p2=head) head=p2->next;elsep1->next=p2->next;free(p2);printf("n 成功刪除編號(hào)為 %ld
22、的聯(lián)系人! nn",num1);break; case 0:printf("n 您取消了刪除任務(wù),聯(lián)系人未被刪除! n"); break;elseprintf("n 對(duì)不起,該通信錄中沒(méi)有任何聯(lián)系人 !nn"); return(head);/* 查找函數(shù) */struct per *chazhao(struct per *head)struct per*p2;char id120;printf(" 請(qǐng)輸入要查找的聯(lián)系人身份證號(hào): n");scanf("%s",id1);if(head=NULL)print
23、f("n 通訊錄為空 nn");return(head);p2=head;while (p2)if(strcmp(p2->id,id1)=0) printf("n 成功查詢到該聯(lián)系人! n"); printf("n%-5s%-12s%-12s%-19s%-17s%-9s%-7sn","編號(hào) ","姓名"," 電話號(hào)碼 "," 身份證號(hào) "," 郵箱"," 地址"," 郵編");printf("%-5d%-12s%-12s%-19s%-17s%-9s%-7dn",p2->num,p2->name,p2->
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025服裝加盟店的合同范本
- 金融風(fēng)控培訓(xùn)收獲
- 【七年級(jí)下冊(cè)地理湘教版53】第六章 認(rèn)識(shí)大洲 全練版:第一節(jié) 亞洲及歐洲
- 糧油食品行業(yè)銷售工作總結(jié)
- 鋁制品生產(chǎn)線承攬合同三篇
- 整形美容院前臺(tái)接待工作總結(jié)
- 電力能源行業(yè)營(yíng)業(yè)員工作總結(jié)
- 教育行業(yè)中的客戶服務(wù)平臺(tái)建設(shè)
- 心理健康教育在職業(yè)發(fā)展中的作用
- 貨物存儲(chǔ)管理措施計(jì)劃
- 教師教學(xué)常規(guī)管理培訓(xùn)夯實(shí)教學(xué)常規(guī)強(qiáng)化教學(xué)管理PPT教學(xué)課件
- 公務(wù)員考試工信部面試真題及解析
- GB/T 15593-2020輸血(液)器具用聚氯乙烯塑料
- 2023年上海英語(yǔ)高考卷及答案完整版
- 西北農(nóng)林科技大學(xué)高等數(shù)學(xué)期末考試試卷(含答案)
- 金紅葉紙業(yè)簡(jiǎn)介-2 -紙品及產(chǎn)品知識(shí)
- 《連鎖經(jīng)營(yíng)管理》課程教學(xué)大綱
- 《畢淑敏文集》電子書
- 頸椎JOA評(píng)分 表格
- 定量分析方法-課件
- 朱曦編著設(shè)計(jì)形態(tài)知識(shí)點(diǎn)
評(píng)論
0/150
提交評(píng)論