版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報(bào)告書</b></p><p> 題 目: 通迅錄 </p><p> 專 業(yè): 計(jì)算機(jī)計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 班 級: 12級<4>班 </p><p> 姓 名
2、: </p><p> 學(xué) 號: </p><p> 指導(dǎo)老師: </p><p> 成 績: </p><p><b> 需求分析&
3、lt;/b></p><p> 整個(gè)通訊錄一共6個(gè)部分,分別為預(yù)選準(zhǔn)備,增加聯(lián)系人,刪除聯(lián)系人,顯示聯(lián)系人,修改聯(lián)系人,以及退出系統(tǒng)。</p><p> 0.預(yù)選準(zhǔn)備:首先調(diào)用定義的read_func函數(shù),查詢是否有預(yù)先保存的數(shù)據(jù),如果有則載入沒有則先調(diào)用insert_func函數(shù)輸入一個(gè)數(shù)據(jù)然后進(jìn)入主菜單</p><p> 1.增加聯(lián)系人:在主菜單中鍵
4、入1則進(jìn)入增加聯(lián)系人部分。通過調(diào)用insert_func函數(shù)輸入名字與電話。由于系統(tǒng)的原因,名字和電話的字符長度為20,超過20則出錯(cuò),但由于國內(nèi)的實(shí)際情況20字符幾乎可以滿足所有非特殊的電話用途。</p><p> 2.刪除聯(lián)系人:在主菜單中鍵入2則進(jìn)入刪除聯(lián)系人部分。通過調(diào)用delete_func()函數(shù),查找需要刪除聯(lián)系人的名字進(jìn)行刪除。</p><p> 3.顯示聯(lián)系人:在主菜
5、單中鍵入3則進(jìn)入顯示聯(lián)系人部分。通過調(diào)用display_func()函數(shù),顯示并按照電話號碼的大小排列顯示并統(tǒng)計(jì)所有的聯(lián)系人個(gè)數(shù)。</p><p> 4.修改聯(lián)系人:在主菜單中鍵入4則進(jìn)入修改聯(lián)系人部分。通過調(diào)用modify_func()函數(shù),查找需要刪除聯(lián)系人的名字進(jìn)行修改號碼。</p><p> 5.退出系統(tǒng):在主菜單中鍵入5則進(jìn)入退出系統(tǒng)部分。通過調(diào)用write_func()函數(shù)
6、,保存已輸入的電話號碼,并退出系統(tǒng)。</p><p><b> 概要設(shè)計(jì):</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> /* file name: slist.c */</p><p> /* 單鏈表,插入、刪除使用排序 */</p><p>
7、; #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <string.h></p><p> #include <conio.h></p><p> void read_func(void);</p
8、><p> void write_func(void);</p><p> void insert_func(void);</p><p> void tel_func(void);</p><p> void delete_func(void);</p><p> void display_func(void)
9、;</p><p> void modify_func(void);</p><p> void anykey_func(void);</p><p> struct student {</p><p> char name[20];</p><p> char telephone[20];</p>
10、;<p> struct student *next;</p><p><b> };</b></p><p> struct student *ptr, *head, *current, *prev;</p><p> void main(void)</p><p><b> {<
11、;/b></p><p> char option1;</p><p> system("cls");</p><p> read_func();</p><p><b> while(1)</b></p><p><b> {</b>&l
12、t;/p><p> printf("****************************************\n");</p><p> printf(" 1.增加聯(lián)系人\n");</p><p> printf(" 2.刪除聯(lián)系人\n");&l
13、t;/p><p> printf(" 3.顯示聯(lián)系人\n");</p><p> printf(" 4.修改聯(lián)系人\n");</p><p> printf(" 5.退出系統(tǒng)\n");</p><p>
14、 printf("****************************************\n");</p><p> printf(" Please enter your choice (1-5)...");</p><p> option1=getche();</p><p> printf("
15、\n");</p><p> switch(option1)</p><p><b> {</b></p><p><b> case '1':</b></p><p> insert_func();</p><p><b> b
16、reak;</b></p><p><b> case '2':</b></p><p> delete_func();</p><p><b> break;</b></p><p><b> case '3':</b>&l
17、t;/p><p> display_func();</p><p><b> break;</b></p><p><b> case '4':</b></p><p> modify_func();</p><p><b> break;&l
18、t;/b></p><p><b> case '5':</b></p><p> write_func();</p><p><b> exit(0);</b></p><p><b> }</b></p><p><
19、;b> }</b></p><p><b> }</b></p><p> void read_func(void)</p><p><b> {</b></p><p> FILE *fptr;</p><p> head=(struct st
20、udent *) malloc(sizeof(struct student));</p><p> head->next = NULL;</p><p> /* 開始時(shí),若表中不存在數(shù)據(jù),則要求輸入第一筆數(shù)據(jù) */</p><p> if((fptr=fopen("slist.dat","r")) == NULL)
21、</p><p><b> {</b></p><p> printf("表中數(shù)據(jù)不存在\n");</p><p> printf(" 請按任意鍵輸出第一組數(shù)據(jù)...\n");</p><p><b> getch();</b></p>
22、<p> insert_func();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> ptr=(struct student *) malloc(sizeof(str
23、uct student));</p><p> while(fscanf(fptr, "%s %s", ptr->name, &ptr->telephone) != EOF)</p><p><b> {</b></p><p> tel_func();</p><p>
24、ptr=(struct student *) malloc(sizeof(struct student));</p><p><b> }</b></p><p> fclose(fptr);</p><p><b> }</b></p><p><b> }</b>&
25、lt;/p><p> void write_func(void)</p><p><b> {</b></p><p> FILE *fptr;</p><p> fptr=fopen("slist.dat","w");</p><p> curren
26、t=head->next;</p><p> while(current != NULL)</p><p><b> {</b></p><p> fprintf(fptr, "%s %s\n", current->name, current->telephone);</p><p
27、> current = current->next;</p><p><b> }</b></p><p> fclose(fptr);</p><p><b> }</b></p><p> void insert_func(void)</p><p>
28、;<b> {</b></p><p> ptr=(struct student *) malloc(sizeof(struct student));</p><p> printf(" 名字 : ");</p><p> gets(ptr->name);</p><p> print
29、f(" 電話: ");</p><p> gets(ptr->telephone); </p><p> tel_func();</p><p><b> }</b></p><p> /*以電話高低由大到小排列*/</p><p> void tel_func
30、(void)</p><p><b> {</b></p><p><b> //插入數(shù)據(jù)</b></p><p> prev = head;</p><p> current = head->next;</p><p> while ((current !=
31、 NULL) && (current->telephone > ptr->telephone)) </p><p><b> {</b></p><p> prev = current;</p><p> current = current->next;</p><p>&l
32、t;b> }</b></p><p> ptr->next = current;</p><p> prev->next = ptr;</p><p><b> }</b></p><p> void delete_func(void)</p><p>&l
33、t;b> {</b></p><p> char del_name[20];</p><p> printf(" 刪除名字: ");</p><p> gets(del_name);</p><p> prev = head;</p><p> current = he
34、ad->next;</p><p> while ((current != NULL) && (strcmp(current->name , del_name)!=0))</p><p><b> {</b></p><p> prev = current;</p><p> curr
35、ent = current->next;</p><p><b> }</b></p><p> if (current != NULL)</p><p><b> {</b></p><p> prev->next = current->next;</p>
36、<p> free(current);</p><p> printf(" %s 檔案已刪除\n",del_name);</p><p><b> }</b></p><p><b> else</b></p><p> printf(" 姓名 %s
37、 沒找到\n",del_name);</p><p> anykey_func();</p><p><b> }</b></p><p> void modify_func(void)</p><p><b> {</b></p><p> char n
38、_temp[20];</p><p> printf(" 需要修改信息的名字: ");</p><p> gets(n_temp);</p><p> current=head->next;</p><p> while ((current != NULL) && (strcmp(curren
39、t->name , n_temp)!=0))</p><p><b> {</b></p><p> prev = current;</p><p> current = current->next;</p><p><b> }</b></p><p>
40、 if (current != NULL)</p><p><b> {</b></p><p> printf(" **************************\n");</p><p> printf(" 名字 : %s\n",current->name);</p>
41、<p> printf(" 電話: %s\n",current->telephone);</p><p> printf(" **************************\n");</p><p> printf(" 請輸入新的電話: ");</p><p> gets(p
42、tr->telephone);</p><p> printf(" %s 檔案修改\n",n_temp);</p><p><b> }</b></p><p><b> else</b></p><p> printf(" 名字 %s 沒有被找到\n&q
43、uot;,n_temp);</p><p> anykey_func();</p><p><b> }</b></p><p> void display_func(void)</p><p><b> {</b></p><p> int count=0;<
44、;/p><p> system("cls");</p><p> if(head->next == NULL) </p><p> { printf(" No student record\n"); }</p><p><b> else</b></p>
45、;<p><b> {</b></p><p> printf(" 名字 電話\n");</p><p> printf(" ---------------------------\n");</p><p> current=head->next
46、;</p><p> while(current != NULL)</p><p><b> {</b></p><p> printf(" %-20s %3s\n", current->name, current->telephone);</p><p><b> c
47、ount++;</b></p><p> current=current->next;</p><p> if(count % 20 == 0) getch();</p><p><b> }</b></p><p> printf(" ------------------------
48、---\n");</p><p> printf(" 總共 %d 記錄被找到\n", count);</p><p><b> }</b></p><p> anykey_func();</p><p><b> }</b></p><p&g
49、t; void anykey_func(void)</p><p><b> { </b></p><p> printf(" 請輸入任意鍵以繼續(xù)");</p><p><b> getch();</b></p><p> printf("\n"
50、);</p><p><b> }</b></p><p><b> 測試和結(jié)果分析:</b></p><p><b> (一).測試</b></p><p> 開頭載入不成功輸入第一組數(shù)據(jù)以及顯示主菜單界面</p><p><b>
51、 添加聯(lián)系人界面:</b></p><p><b> 刪除聯(lián)系人界面:</b></p><p> 4.顯示聯(lián)系人界面:</p><p> 5.修改聯(lián)系人界面:</p><p> 6.退出后保存的slist.dat文件</p><p><b> (二)結(jié)果分析<
52、/b></p><p> 界面比較煩亂,或許應(yīng)該使用system(“cls”)來使系統(tǒng)更加簡潔,而且系統(tǒng)功能過于簡單,如果是顯示使用的通訊錄應(yīng)該包含多個(gè)電話號碼,包括固定電話幾個(gè)手機(jī),QQ,地址,郵箱等等數(shù)據(jù),而且開始時(shí)電話號碼的數(shù)據(jù)不能超過10位,否則就不能正常顯示,經(jīng)過修改現(xiàn)在能顯示20位以內(nèi),但是總覺得這樣的修改并不靈活,有待修改。</p><p><b> 課程
53、設(shè)計(jì)總結(jié)及心得</b></p><p> 通過這次的課程設(shè)計(jì),更加深了我對數(shù)據(jù)結(jié)構(gòu)這門課程的理解,特別是對數(shù)據(jù)結(jié)構(gòu)的靈活運(yùn)用有了很大進(jìn)步。這次的課程設(shè)計(jì)的題目很簡單,設(shè)計(jì)一個(gè)通訊錄的系統(tǒng),但是簡單的背后卻給我造成了不小的麻煩,這揭發(fā)出我的所學(xué)還不踏實(shí),而且學(xué)習(xí)和運(yùn)用也不能靈活的相連起來。數(shù)據(jù)結(jié)構(gòu)是一門很抽象化的課程,他難于理解,特別是在C語言的基礎(chǔ)不牢固的情況下。通過這次的課程設(shè)計(jì),使得我能夠?qū)⒄n程
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--通訊錄管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---迷宮
評論
0/150
提交評論