版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 《數(shù)據(jù)結(jié)構(gòu)》</b></p><p><b> 課程設(shè)計報告</b></p><p><b> 目 錄</b></p><p> 1設(shè)計內(nèi)容及要求...........................................................
2、..............1</p><p> 1.1設(shè)計內(nèi)容...................................................................................1</p><p> 1.2設(shè)計任務(wù)及具體要求........................................................
3、............1</p><p> 2概要設(shè)計...................................................................................2 </p><p> 2.1該系統(tǒng)的功能簡介............................................................
4、...........2</p><p> 2.2 總體程序框圖............................................................................2</p><p> 2.3各個模塊之間的主要關(guān)系.............................................................
5、..5 </p><p> 3 設(shè)計過程或程序代碼..................................................................5 </p><p> 3.1各個模塊的程序流程圖及運行界面...................................................9</p><p>
6、 4程序調(diào)試分析...........................................................................12</p><p> 5小結(jié).........................................................................................13</p><p
7、> 致謝...........................................................................................13</p><p> 參考文獻(xiàn).....................................................................................14</
8、p><p> 附: 源程序..............................................................................14</p><p> 1 設(shè)計內(nèi)容及要求</p><p><b> 1.1設(shè)計內(nèi)容</b></p><p> 本課程設(shè)計主要運用C語
9、言中的結(jié)構(gòu)體、數(shù)組、鏈表、等數(shù)據(jù)結(jié)構(gòu),設(shè)計一個簡單的管理系統(tǒng)應(yīng)用程序。本程序設(shè)計出了區(qū)號查詢系統(tǒng)的基本功能,并設(shè)計了簡單的界面,主要考察對自定義函數(shù)的熟悉程度,使用的是數(shù)組的相關(guān)操作,包括結(jié)構(gòu)體數(shù)組的輸入、輸出、查找、刪除等。通過完成本課題進(jìn)一步熟悉C語言基本知識,并掌握數(shù)據(jù)結(jié)構(gòu)的一些基本算法思想,進(jìn)一步熟悉指針的用法,數(shù)組的建立運用和函數(shù)調(diào)用,加深對數(shù)據(jù)結(jié)構(gòu)的理解,提高算法設(shè)計的能力,鍛煉編程的能力。</p><p
10、> 1.2設(shè)計任務(wù)及具體要求</p><p> 用C語言編程的區(qū)號查詢系統(tǒng),要求實現(xiàn)區(qū)號查詢系統(tǒng)中,添加新記錄、刪除記錄、顯示記錄信息、按城市查找信息和退出系統(tǒng)等功能。</p><p> ①錄入有關(guān)城市的名稱和區(qū)號。</p><p> ?、陲@示所有城市的信息。</p><p> ?、弁ㄟ^輸入城市名稱查找對應(yīng)城市的區(qū)號。</p
11、><p> ④通過輸入城市名稱查找到要刪除的城市信息,然后可以進(jìn)行刪除,會顯當(dāng)前該城市信息。 </p><p> ⑤通過輸入城市名稱查找到要修改的城市信息,然后依次進(jìn)行信息修改。</p><p><b> ?、尢砑映鞘行畔ⅰ?lt;/b></p><p><b> 2 概要設(shè)計</b></p&
12、gt;<p> 2.1系統(tǒng)的功能簡介</p><p> 本系統(tǒng)設(shè)計的函數(shù)是由一個主函數(shù)幾個子函數(shù)組成的。首先構(gòu)思大局編出一個主函數(shù),然后根據(jù)要實現(xiàn)的功能逐步細(xì)分設(shè)計,分別解決輸入、顯示、查找、刪除、修改,退出功能的子函數(shù)編程中遇到的問題。首先通過結(jié)構(gòu)體的定義,確定城市區(qū)號的項目和大小。首先通過輸入函數(shù)添加信息,然后再逐步編寫和驗證其它功能。顯示函數(shù)的設(shè)計利用C語言的循環(huán)功能依次輸出信息。查找是用
13、一個字符串比較得出兩個相同的字符串的方法找出用戶要查找的人。刪除函數(shù)的設(shè)計是通過指定位置以后的數(shù)組下標(biāo)減一實現(xiàn)刪除目的的,for循環(huán)和 while循環(huán)在這此設(shè)計中也起了很大的作用。</p><p> 2.2 總體程序框圖</p><p><b> 圖(1)總體框圖</b></p><p> 2.3各個模塊之間的主要關(guān)系</p>
14、<p> 該程序的功能主要是實現(xiàn)城市區(qū)號查詢,各個模塊之間的關(guān)系是相互聯(lián)系的。首先,必須輸入城市名稱和區(qū)號才能進(jìn)一步顯示城市的名稱和區(qū)號,然后才能查找城市和刪除城市,是一環(huán)套一環(huán)的。并且修改城市名稱和查找城市區(qū)號兩個模塊查找城市需要在修改城市名稱后再對新的名稱進(jìn)行查找。</p><p> 3設(shè)計過程或程序代碼</p><p> 3.1各個模塊的程序流程圖</p&g
15、t;<p> 1)①主函數(shù)程序(N-S)流程圖及運行界面</p><p> 主函數(shù)程序(N-S)流程圖(見圖(2))</p><p><b> 1、 菜單函數(shù)</b></p><p> 菜單函數(shù)首先標(biāo)出歡迎使用區(qū)號查詢管理系,然后給出用戶可選擇的項目,用戶可以通過選擇該項前的代碼來實現(xiàn)想要實現(xiàn)的功能,其流程圖如圖(3)所示
16、:</p><p><b> 2 、輸入?yún)^(qū)號</b></p><p> 將結(jié)構(gòu)體數(shù)組分成幾個數(shù)組分別對每個數(shù)組賦值,用for循環(huán)對不同地址的數(shù)組分別賦值。其流程圖如圖(4)所示:</p><p><b> 3、顯示區(qū)號查詢</b></p><p> 顯示區(qū)號通過循環(huán)函數(shù)將全部的區(qū)號信息以此
17、顯示出來,其流程圖如圖(5)所示: </p><p><b> 4、find函數(shù)</b></p><p> find函數(shù)通過輸入姓名與原區(qū)號中存儲的姓名,兩字符串的比較,找到與輸入姓名相同的城市的位置,其流程圖如圖(6)所示:</p><p><b> 5、刪除城市名稱</b></p><p>
18、; 刪除城市名稱通過數(shù)組中該位置之后的數(shù)據(jù)存放位置向前移一位來實現(xiàn)刪除功能,其流程圖如圖(7)所示:</p><p><b> 6、查找城市區(qū)號</b></p><p> 查找系統(tǒng)通過find函數(shù)找到所查城市的位置,再將該位置的城市的信息顯示如圖(8):</p><p><b> 圖(8)</b></p>
19、;<p> 簡單說明:該功能主要顯示的是給用戶一個進(jìn)入界面,它主要的是顯示該程序主要能夠執(zhí)行的有哪些功能。下面是顯示給用戶的界面。</p><p> ?、谥骱瘮?shù)程序運行界面:</p><p><b> 圖(9)</b></p><p> 在主菜單中輸入3后,輸入要找的城市。在系統(tǒng)沒有要找信息時,系統(tǒng)會給出提示,確認(rèn)用戶是否繼
20、續(xù)查找,如圖下圖所示:</p><p><b> 圖(10)</b></p><p> 在確認(rèn)修改并輸入修改后信息以后,系統(tǒng)便能按用戶意愿修改的城市的信息如:</p><p><b> 圖(11)</b></p><p> 在主菜單中輸入4后輸入要刪除的城市,再按4鍵確定,系統(tǒng)便自動刪除要刪
21、的市的信息,如圖(12)所示:</p><p><b> 圖(12)</b></p><p> 在主菜單中按6鍵,便顯示出系統(tǒng),如圖所示:</p><p><b> 圖(13)</b></p><p> 在主菜單中按0鍵,便可退出系統(tǒng),如圖所示:</p><p>&l
22、t;b> 圖(14)</b></p><p><b> 4設(shè)計結(jié)果與分析</b></p><p> 當(dāng)把程序?qū)懞貌⑦M(jìn)行調(diào)試時,并不是一帆風(fēng)順的,總會遇到很多在調(diào)試時遇到的錯誤。</p><p> 首先在定義函數(shù)時,不能輸入漢字。否則會程序會顯示錯誤。</p><p> 2.在程序中,如果定義城
23、市名稱和區(qū)號等為float型,而后面其相應(yīng)的返回值為雙精度浮點型,會出現(xiàn)相應(yīng)的警告</p><p> 3.前后定義變量要統(tǒng)一。</p><p> 4.如果要調(diào)用添加函數(shù),修改函數(shù),修改函數(shù),查找函數(shù),統(tǒng)計函數(shù)等要在主函數(shù)前面進(jìn)行申明。否則會顯示警告。</p><p> 5.對背景顏色設(shè)置的時候,當(dāng)你輸入的顏色在內(nèi)存中不存在時,運行程序過后,系統(tǒng)會告訴你相應(yīng)的顏
24、色符號常數(shù)及數(shù)值。</p><p> 6.如果程序在運行的過程中,對于一個循環(huán)語句,如果你返回的值始終是真的,那么程序?qū)⑦M(jìn)如死循環(huán)。</p><p> 7. 未注意int,float型數(shù)據(jù)的數(shù)值范圍,int型數(shù)據(jù)的數(shù)值范圍(-32768~32768)。對定義工資變量時,如果將職工工資定義為float型,將會出現(xiàn)警告。</p><p> 8.對應(yīng)該有花括弧的復(fù)合
25、語句,忘記加花括弧。</p><p> 9. 所調(diào)用的函數(shù)在調(diào)用語句之后才定義,而又在調(diào)用前未加說明。</p><p><b> 5總結(jié)</b></p><p> 從剛開始的不知道如何下手到最后看到自己的程序按自己的想法運行,心里時不時的有一種喜悅。通過這次課程設(shè)計,我認(rèn)識到書上和老師教的內(nèi)容是有限的,要想掌握更多的知識我們必須多動腦,多
26、思考,不斷地靠自己去學(xué)習(xí),同時我們還應(yīng)向他人請教,從而了解更多自己不知道的知識?;仡^看來,編寫這個程序并不像原來想像的那么難,我們要相信自己,無論做什么事,只要我們仔細(xì)的思考了,認(rèn)真的去做了,我們就一定能做好。</p><p> 通過這次的編程我發(fā)現(xiàn)了自己的一些不足,在編寫時經(jīng)常犯一些低級錯誤,由于自己的馬虎而浪費了不少時間。在不知如何進(jìn)行的時候有一種不自信,總想別人正在做什么,這些不足既然被發(fā)現(xiàn)就得在以后的做
27、事中注意,爭取改掉。</p><p> 經(jīng)過一周的努力我掌握了一些基本的C語言進(jìn)行程序設(shè)計的技巧,更深的理解和運用結(jié)構(gòu)化程序設(shè)計的思想和方法,掌握開發(fā)一個小型實用系統(tǒng)的基本方法,同時學(xué)會了一些調(diào)試一個較長程序的基本方法,提高了書寫程序設(shè)計開發(fā)文檔的能力。這一周的實踐讓我受益匪淺,在此我要感謝孜孜不倦指導(dǎo)我們的老師,感謝在我困惑時給我?guī)椭耐瑢W(xué),感謝學(xué)校給我們一個這樣動手動腦的機(jī)會,使我們在理論與實踐相結(jié)合方面又
28、得到了一次很好的鍛煉,其中我真的受益良多。</p><p><b> 致謝</b></p><p> 在這次C語言課程設(shè)計中,我的老師和同學(xué)給了我及大的幫助。特別是我的指導(dǎo)老師**老師,還有我的C語言任課老師**老師。在此,我對他們表示感謝!感謝他們在我面對困難時給了我?guī)椭椭С?。也感謝那些給我?guī)椭乃型瑢W(xué)!</p><p><b&
29、gt; 參考文獻(xiàn)</b></p><p> [1]譚浩強(qiáng)著.C程序設(shè)計(第二版).北京:清華大學(xué)出版社,1999</p><p> [2]譚浩強(qiáng),張基溫,唐永炎編著.C語言程序設(shè)計.北京:高等教育出版社,1992</p><p> [3]譚浩強(qiáng)編著.QBASIC語言教程.北京:電子工業(yè)出版社,1997</p><p>
30、[4]譚浩強(qiáng).C程序設(shè)計[M].3版.北京:清華大學(xué)出版社,2005</p><p> [5]Herbert Schildt著.戴健鵬譯.C語言大全(第二版).北京:電子工業(yè)出版社,1994</p><p> [6][美]SCHILDTH.C語言大全[M].4版.王子恢等譯.北京:電子工業(yè)出版社,2001</p><p><b> 源程序</b
31、></p><p> #include <stdio.h> </p><p> #include <stdlib.h></p><p> #include <string.h> </p><p> typedef struct PersonalInfo</p><p>
32、 { char name[50]; </p><p> char address[30]; </p><p> char telno[30]; </p><p> char postcode[30]; </p><p> struct PersonalInfo *next;}</p><p> INFO;I
33、NFO *head;</p><p> void Initiate();</p><p> void Menu();</p><p> void Create();//的功能是:創(chuàng)建新的區(qū)號查詢。</p><p> void Add();// 在系統(tǒng)的末尾,寫入新的信息,并返回選單</p><p> void
34、 Find();//查找記錄</p><p> void Alter();//修改記錄如果未找到要修改的人,則提示系統(tǒng)中沒有此人的信息,并返回選單。</p><p> void Delete();//刪除某人的信息,如果未找到要刪的人,提示系統(tǒng)中沒有此人的信息,并返回選單。</p><p> void List();//的功能是:顯示系統(tǒng)中的所有記錄。//初始
35、化</p><p> void Initiate()</p><p> { if((head=(INFO *)malloc(sizeof(INFO)))==NULL) </p><p> exit(1); </p><p> head->next=NULL;}//顯示菜單</p><p>
36、 void Menu(){ printf("**************歡迎使用區(qū)號查詢系統(tǒng)**************"); </p><p> printf("\n"); </p><p> printf("\n"); </p><p> printf(" 1.創(chuàng)建區(qū)號系統(tǒng)。
37、\n"); </p><p> printf(" 2.插入信息。\n"); </p><p> printf(" 3.查詢記錄\n"); </p><p> printf(" 4.修改記錄\n"); </p><p> printf(&quo
38、t; 5.刪除記錄!\n"); </p><p> printf(" 6.顯示所有記錄\n"); </p><p> printf(" 0.退出區(qū)號查詢\n"); </p><p> printf(" 請輸入0~6 \n");}</p>&
39、lt;p><b> //創(chuàng)建系統(tǒng)</b></p><p> void Create()</p><p> { INFO *p1[100],*p2; </p><p> int m,i; </p><p> printf("請輸入創(chuàng)建個數(shù):"); <
40、/p><p> scanf("%d",&m); </p><p> for(i=1;i<=m;i++) </p><p> { p1[i]=(INFO *)malloc(sizeof(INFO)); </p><p> printf("請輸入第%d條信息
41、!\n",i); </p><p> printf("城市:\n"); </p><p> scanf("%s",&p1[i]->name); </p><p> printf("區(qū)號:\n"); </p>
42、<p> scanf("%s",&p1[i]->postcode); </p><p> p1[i]->next=NULL; </p><p> if(head->next==NULL) </p><p> head->next=p1[i];
43、 </p><p> else </p><p> { </p><p> for(p2=head;p2->next!=NULL;p2=p2->next); //找到結(jié)點尾 </p><p> p2->next=p1[i]; &
44、lt;/p><p><b> } </b></p><p><b> } </b></p><p> printf("信息已添加!\n"); </p><p> return; }&l
45、t;/p><p> void Add()</p><p> { INFO *p,*q; </p><p> if((q=(INFO *)malloc(sizeof(INFO)))==NULL)</p><p> exit(1); </p><p> printf("請輸入要添加的
46、信息!\n"); </p><p> printf("城市:\n"); //添加信息 </p><p> scanf("%s",&q->name); </p><p> printf("區(qū)號:\n")
47、; </p><p> scanf("%s",q->postcode); </p><p> for(p=head;p->next!=NULL;p=p->next) ; </p><p> p->next=q; </p><p> q->next=NU
48、LL; </p><p> printf("此信息已添加!"); </p><p> return;}//查找系統(tǒng)信息</p><p> void Find()</p><p> { INFO *p; </p><p> char name[50]; &l
49、t;/p><p> if(head->next==NULL) </p><p> { printf("此區(qū)號域為空!\n"); </p><p> return; } </p><p> printf("請輸入要查找的城市:\n"); </p&g
50、t;<p> scanf("%s",&name); </p><p> for(p=head->next;p!=NULL;p=p->next) </p><p> { if(strcmp(p->name,name)==0) </p><p> {
51、 printf("城市\(zhòng)t區(qū)號\n"); </p><p> printf("%s\t%s\t\n",p->name,p->postcode); </p><p><b> } </b></p><p> else if(p->next
52、==NULL) </p><p> return 0; </p><p><b> }</b></p><p><b> }</b></p><p><b> //修改系統(tǒng)信息</b></p><p> void Alte
53、r()</p><p> { char name[50]; //先查找 后刪除 </p><p> INFO *p, *p1; </p><p> if (head->next == NULL) </p><p> { printf(
54、"此系統(tǒng)為空!\n"); </p><p> return; </p><p><b> } </b></p><p> printf("請輸入要修改的城市:\n"); </p><p> scanf("%s",name); &
55、lt;/p><p> for(p=head->next;p!=NULL;p=p->next) </p><p><b> { </b></p><p> if(strcmp(p->name,name)==0) </p><p> break; </
56、p><p> else if(p->next==NULL) </p><p> { </p><p> return 0; </p><p><b> } </b></p><p><b> } <
57、;/b></p><p> p1=(INFO *)malloc(sizeof(INFO)); </p><p> printf("城市:\n"); //添加信息 </p><p> scanf("%s",p1->name); </p&g
58、t;<p> strcpy(p->name,p1->name); </p><p> printf("區(qū)號:\n"); </p><p> scanf("%s",p1->postcode); </p><p> strcpy(p->postcode,p1->pos
59、tcode); </p><p> printf("此信息已修改!\n"); //顯示修改的信息 </p><p> printf("城市\(zhòng)t區(qū)號\t\n"); </p><p> printf("%s\t%s\t\n",p->name,p->postcode); <
60、/p><p> free(p1);}//刪除系統(tǒng)信息</p><p> void Delete()</p><p> { char name[50]; //先查找 后刪除 </p><p> INFO *p = head->next, </p&g
61、t;<p> *p1 =head->next,*p2; </p><p> if (head->next == NULL) </p><p> { printf("此系統(tǒng)為空!\n"); </p><p> return; } </p><p> print
62、f("請輸入要刪除的城市:\n"); </p><p> scanf(" %s",name); </p><p> while ((strcmp(p->name,name)!=0 )&& p->next != NULL) </p><p> { p1=p; p =
63、p->next; } </p><p> if (strcmp(name, p->name)==0) //輸出刪除信息 </p><p> { if (p == head->next&&p->next!=NULL) </p><p> head-&
64、gt;next = p->next; </p><p> else if(p==head->next&&p->next==NULL) </p><p> { head->next=p->next; </p><p> printf("信息已刪
65、除,先此系統(tǒng)為空!!\n"); </p><p> return; </p><p><b> } </b></p><p> else </p><p> p1->next = p->next; </p><
66、p> } else </p><p> { printf("此信息不存在?。。n"); return; } </p><p> printf("此信息已刪除!"); </p><p> printf("城市\(zhòng)t區(qū)號\t\n"); </p&g
67、t;<p> for(p2=head->next;p2!=NULL;p2=p2->next) </p><p> printf("%s\t%s\t\n",p2->name,p2->postcode);}</p><p><b> //顯示所有記錄</b></p><p>
68、 void List()</p><p> { INFO *p; </p><p> if(head->next==NULL) </p><p> { printf("此系統(tǒng)中無記錄!\n"); return; } </p><p> printf("城市
69、\t區(qū)號\t\n"); </p><p> for(p=head->next;p!=NULL;p=p->next) </p><p> printf("%s\t%s\t\n",p->name,p->postcode);}</p><p> void main() </p><
70、p> { int choice; char yes_no; </p><p> system("color a"); </p><p> Initiate(); </p><p><b> do </b></p><p> { Menu();
71、 </p><p> printf("請選擇0-6的數(shù)字\n"); </p><p> scanf("%d",&choice); </p><p> printf("\n"); </p><p> switch(choice)
72、 </p><p> { case 1:Create(); break; </p><p> case 2:Add(); break; </p><p> case 3:Find(); break; </p><p&
73、gt; case 4:Alter(); break; </p><p> case 5:Delete(); break; </p><p> case 6:List(); break; </p><p> case 0: </p>
74、<p> printf("************感謝您的使用************\n"); </p><p> exit(0); break; </p><p> default: printf("輸入有誤!請重新輸入\n"); brea
75、k; </p><p><b> } </b></p><p> printf("是否繼續(xù) Y or N? \n"); </p><p><b> do </b></p><p> { scanf("
76、%c",&yes_no); }</p><p> while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); </p><p><b> }</b></p&g
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 區(qū)號查詢
- 城市鏈表課程設(shè)計
- 城市鏈表課程設(shè)計
- 城市鏈表課程設(shè)計報告
- 2省市區(qū)查詢
- 城市公交查詢系統(tǒng)課程設(shè)計說明書
- 城市區(qū)位學(xué)案
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---城市鏈表的設(shè)計與實現(xiàn)
- java課程設(shè)計--成績查詢
- 城市區(qū)域噪聲標(biāo)準(zhǔn)
- 鎮(zhèn)江市區(qū)房屋信息查詢申請表
- 唐山市市區(qū)公交查詢系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于java的城市公交查詢系統(tǒng)
- 公交路線查詢課程設(shè)計
- 52城市區(qū)域發(fā)展咨詢之四基于系統(tǒng)論的城市區(qū)域發(fā)展咨詢模式研究
- 航班信息查詢 課程設(shè)計
- 城市區(qū)位與城市體系教案
- 基于.net的城市公交查詢系統(tǒng)設(shè)計與實現(xiàn)
- 基于web的城市公交查詢系統(tǒng)設(shè)計與實現(xiàn)
- 基于小區(qū)號的移動臺定位設(shè)計與實現(xiàn).pdf
評論
0/150
提交評論