《C語言程序設(shè)計》課程設(shè)計報告-景點查詢系統(tǒng).docx
《《C語言程序設(shè)計》課程設(shè)計報告-景點查詢系統(tǒng).docx》由會員分享,可在線閱讀,更多相關(guān)《《C語言程序設(shè)計》課程設(shè)計報告-景點查詢系統(tǒng).docx(69頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、課 程 設(shè) 計 報 告題目: 景點查詢系統(tǒng) 課程名稱: C語言程序設(shè)計 專業(yè)班級: 信息安全201302班 學(xué) 號: 姓 名: 指導(dǎo)教師: 報告日期: 2014年10月10日 計算機(jī)科學(xué)與技術(shù)學(xué)院 任務(wù)書一、主要內(nèi)容建立國內(nèi)景點信息系統(tǒng),提供創(chuàng)建、編輯和綜合查詢等基本業(yè)務(wù)管理和服務(wù)。二、任務(wù)要求收集與閱讀相關(guān)文獻(xiàn)資料,確定系統(tǒng)目標(biāo)與范圍,分析系統(tǒng)需求,確定系統(tǒng)功能;設(shè)計系統(tǒng)方案,完成系統(tǒng)實現(xiàn);提交課程設(shè)計報告。三、 參考文獻(xiàn)1曹計昌,盧萍,李開. C語言程序設(shè)計,北京:科學(xué)出版社,20132李開,盧萍,曹計昌. C語言實驗與課程設(shè)計,北京:科學(xué)出版社,20113張引. C程序設(shè)計基礎(chǔ)課程設(shè)計,
2、 杭州: 浙江大學(xué)出版社,20074黃明,梁旭,萬洪莉. C語言課程設(shè)計,北京: 電子工業(yè)出版社,2006四、系統(tǒng)功能系統(tǒng)主要是提供景點信息的快速查詢、檢索和統(tǒng)計。應(yīng)該具有按城市、按景區(qū)等查詢景點信息;組合條件檢索景點信息;按城市等統(tǒng)計景點情況等。五、系統(tǒng)數(shù)據(jù)系統(tǒng)主要涉及“城市”、“景區(qū)”和“景點”3類信息?!俺鞘小毙畔⒂沙鞘芯幪?、城市名稱、景區(qū)級別、監(jiān)督電話和咨詢電話等數(shù)據(jù)項目組成,“景區(qū)”信息由景區(qū)編號、景區(qū)名稱、景區(qū)地址、門票價格、開放時間和咨詢電話等數(shù)據(jù)項目組成,“景點”信息由景點號、景點名稱、景點位置、瀏覽時間和景點特點等數(shù)據(jù)項目組成。在磁盤上,建議采用3個文件分別存儲“城市”、“景
3、區(qū)”和“景點”的數(shù)據(jù)。在“景區(qū)”信息中增加城市編號,在“景點”信息中增加城市編號和景區(qū)編號。華中科技大學(xué)計算機(jī)學(xué)院C語言程序設(shè)計課程設(shè)計目 錄任務(wù)書II目 錄I1 引言11.1 課題背景和意義11.2 國內(nèi)外研究現(xiàn)狀11.3 課程設(shè)計的主要研究工作12 系統(tǒng)需求分析與總體設(shè)計22.1 系統(tǒng)需求分析22.2 系統(tǒng)總體設(shè)計23 系統(tǒng)詳細(xì)設(shè)計23.1 有關(guān)數(shù)據(jù)結(jié)構(gòu)的定義33.2 主要算法設(shè)計34 系統(tǒng)實現(xiàn)與測試134.1 系統(tǒng)實現(xiàn)134.2 系統(tǒng)測試165 總結(jié)與展望235.1 全文總結(jié)235.2 工作展望23體會24參考文獻(xiàn)25附錄 程序清單26I華中科技大學(xué)計算機(jī)學(xué)院C語言程序設(shè)計課程設(shè)計1 引
4、言1.1 課題背景和意義在現(xiàn)代的社會中,由于人們越來越多的關(guān)注到了旅游帶來的好處,外出旅游就成為了一種時尚的方式。面對眾多的旅游景點,選擇就成為了人們所面臨的一大問題,在日常使用中, 我們常常會無法快速的了解到某一景點的詳細(xì)信息。鑒于以上的種種要求,我們就需要一個能方便查詢我們想要的信息的軟件。我的課設(shè)就是基于以上的種種要求。1.2 國內(nèi)外研究現(xiàn)狀目前國內(nèi)外對于旅游方面的發(fā)展都是很迅速地。在景點的查詢方面,國內(nèi)外也是有許多優(yōu)秀的軟件。1.3 課程設(shè)計的主要研究工作深入探討有關(guān)方面的問題,掌握開發(fā)一個軟件所需要的能力,對目前某些軟件需要修改的地方做出自己的改進(jìn),并自主編譯出一款相應(yīng)的軟件系統(tǒng)。2
5、 系統(tǒng)需求分析與總體設(shè)計2.1 系統(tǒng)需求分析對于大多數(shù)用戶來說,他們最想要了解的就是各旅游景點的門票、開放時間、交通、簡介等相關(guān)信息。于是,本軟件就著重從這些方面出發(fā)來滿足用戶的需求。2.2 系統(tǒng)總體設(shè)計本系統(tǒng)注重查詢的功能,用戶可以根據(jù)省、市、景區(qū)、景點等方式來對所要尋找的信息進(jìn)行查詢。同樣,由于信息會有部分更新,所以,也提供了修改和添加功能,讓用戶可以更方便的處理這款軟件。具體程序結(jié)構(gòu)見圖1。幫助主題關(guān)于系統(tǒng)清屏景點插入景點修改景點刪除數(shù)據(jù)保存數(shù)據(jù)加載數(shù)據(jù)備份數(shù)據(jù)恢復(fù)圖1城市景點查詢景點詳細(xì)城市查詢省區(qū)查詢查詢主過程文件編輯幫助3 系統(tǒng)詳細(xì)設(shè)計3.1 有關(guān)數(shù)據(jù)結(jié)構(gòu)的定義數(shù)據(jù)結(jié)構(gòu)及用法說明:
6、處理的數(shù)據(jù):省、市、景點、景區(qū)的名稱以及其相應(yīng)的分級,以結(jié)構(gòu)體存儲。struct ss /景點結(jié)構(gòu)體 char name50; /省、市、景點名稱 int flag; /級別 struct ss * right; struct ss * down;*head;因表述能力有限,故直接采用圖來說明:圖2 本程序采用如圖2的方式來構(gòu)建十字鏈表。3.2 主要算法設(shè)計模塊1:創(chuàng)建鏈表。此次所用的創(chuàng)建方法是用三個函數(shù)的嵌套及遞歸完成的,具體程序如下:struct ss *creat1() /生成景點名稱 int t=0,bo=0; char c=0; struct ss * loc_head=NULL;
7、loc_head=(struct ss *) malloc (sizeof(struct ss);while(c=fgetc(fin)!=n) if(c=.) loc_head-namet=0; loc_head-flag=3; loc_head-down=NULL; loc_head-right=creat1(); return loc_head; loc_head-namet+=c; struct ss *creat2() /生成城市名稱 int t=0; char c; struct ss * loc_head=NULL; loc_head=(struct ss *) malloc (s
8、izeof(struct ss); loc_head-namet=0; while(c=fgetc(fin)!=*) if(c!=:) loc_head-namet+=c; while(c=fgetc(fin)!=:) loc_head-namet+=c; loc_head-namet=0; loc_head-flag=2; loc_head-right=creat1(); /遞歸生成下一級景點名 loc_head-down=creat2(); /遞歸生成同級城市名 return loc_head; struct ss *creat3() /生成省區(qū)名稱 int t=0;char c;stru
9、ct ss * loc_head=NULL;loc_head=(struct ss *) malloc (sizeof(struct ss);while(c=fgetc(fin)!=EOF) if(c=*) while(c=fgetc(fin)!=n) loc_head-namet+=c; if(c=n) loc_head-namet=0; loc_head-flag=1; loc_head-right=creat2(); /遞歸生成下一級城市名 loc_head-down=creat3(); /遞歸生成同級的省名 return loc_head; 程序運行時,首先調(diào)用creat3(),接下來
10、在生成省名后,會直接進(jìn)入下一級的生成,這個完全是考慮數(shù)據(jù)讀入而設(shè)計的讀入方式,下面附上部分?jǐn)?shù)據(jù):*河北承德:避暑山莊.秦皇島:山海關(guān)景區(qū).北戴河風(fēng)景名勝區(qū).保定:安新白洋淀景區(qū).保定:野三坡景區(qū).石家莊:西柏坡景區(qū).清西陵.唐山市: 清東陵.南湖景區(qū).說明:程序運行時,先生成省會名,然后后成城市名,然后生成景點名,景點名結(jié)束會,再次生成城市名,然后景點名,依次下去,直到生成結(jié)束。模塊2:遍歷鏈表遍歷采用的方式是深度搜索的方法。具體程序如下:int x=1; /控件遞歸結(jié)束 struct ss *found,*father; /在遞歸中記錄下位置 struct ss *search (struc
11、t ss *loc_head,char s) /定位查找目標(biāo) struct ss *p; p=loc_head; if(p!=NULL&p!=0 xa&p!=0 x2a&x=1&p!=-1) if(strcmp(p-name,s)=0) x=0; found=p; return p; else father=p; search(p-right,s); search(p-down,s); return NULL;int searchdata(struct ss *loc_head,char s) /整合上面的search函數(shù)便于操作 x=1;search(loc_head,s);if(x=0)
12、return 1;else return 0;說明:在查找的過程中,x為控制變量,判斷是否繼續(xù)查找,father、found分別表示所查數(shù)據(jù)的父結(jié)點及所查數(shù)據(jù),使用深度搜索將整個鏈表遍歷。模塊3:數(shù)據(jù)刪除void deletedata(struct ss *loc_head,char s) /刪除數(shù)據(jù) if(searchdata(loc_head,s)=1) father-right=found-right; free(found); else printf(NOT FOUND!n);說明:先匹配所查信息,如果滿足要求則刪除,重點是查找。模塊4:數(shù)據(jù)添加void adddata(struct
13、ss *loc_head,char t) /添加數(shù)據(jù) struct ss *add; add=(struct ss *) malloc (sizeof(struct ss); add-right=found-right; add-flag=found-flag; add-down=NULL; strcpy(add-name,t); found-right=add;說明:先匹配所查信息,然后在所要求位置添加新的信息,重點同樣是查找。模塊5:數(shù)據(jù)保存void savessj(struct ss *loc_head)struct ss *p=loc_head;int i=0;if(p!=NULL&p
14、!=0 xa&p!=0 x2a&x=1&p!=-1) if(p-flag=1) fprintf(fin,*%sn,p-name); else if(p-flag=2) fprintf(fin,%s:,p-name); else if(p-flag=3&p-right!=0 xa) fprintf(fin,%s.,p-name); else fprintf(fin,%s.n,p-name); savessj(p-right); savessj(p-down); 說明:數(shù)據(jù)保存采用了與創(chuàng)建鏈表相同的方式,用深度遍歷的方式遍歷鏈表,同時將其存儲到相應(yīng)文件中。模塊6:詳細(xì)信息輸出為節(jié)省內(nèi)存空間,詳細(xì)信
15、息未讀入程序中,只是在需要時才進(jìn)行匹配輸出。void detail(struct ss *loc_head,char s) /詳細(xì)信息輸出 FILE *fout;int len=0,t=100;char c50,q,o;struct ss * p=loc_head;fout=fopen(data2.txt,r);while(slen+);while(1) q=fgetc(fout); if(q=EOF) printf(NOT FOUNDn); getch(); ClearScreen(); return ; else if(q=*) fgetc(fout); fgets(c,len,fout)
16、; t=compare(c,s); if(compare(c,s)=1) /puts(c); ClearScreen(); printf(%s,c); while(o=fgetc(fout)!=*) putchar(o); printf(n按任意鍵繼續(xù).n); getch(); ClearScreen(); return ; 說明:該模塊本身就采用了模糊查找的模式,只需要前一部分的名字即可匹配成功,同時,如上所說,考慮到信息量太大的因素,故此文件單獨列出,并未在一開始直接讀入程序,只是在需要是進(jìn)行查找輸出。模塊7、8、9:省區(qū)名查詢、城市名查詢、城市景點名查詢。從正常角度來考慮,一般用戶都會是
17、,先看所在省區(qū),然后再選城市,接著看城市里的景點名,然后再來詳細(xì)了解這個景點。因此,我設(shè)計了這些功能查詢模塊。BOOL SearchSheng()struct ss *p;p=head;while(p!=-1) printf(%-10s,p-name); p=p-down; printf(n按任意鍵繼續(xù).n); getch(); ClearScreen(); return TRUE;BOOL SearchCity()char s50;struct ss *p;ClearScreen(); printf(請輸入所要查的省份、直轄市或自治區(qū)n);gets(s);if(searchdata(head
18、,s)=1) p=found-right; else printf(NOT FOUNDn); return TRUE; if(found-flag=2) printf(請選擇城市景點查詢n); printf(按任意鍵繼續(xù)n); getch(); ClearScreen(); return TRUE; else if(p-name0=0) p=p-right; while(p!=0 xa) printf(%sn,p-name); p=p-right; else while(p!=0 x2a) printf(%-10s,p-name); p=p-down; printf(n按任意鍵繼續(xù).n); g
19、etch(); ClearScreen(); return TRUE;BOOL SearchJingdian()char s50;struct ss *p;ClearScreen(); printf(請輸入所要查詢的城市n);gets(s);if(searchdata(head,s)=1) p=found; else printf(NOT FOUNDn按任意鍵繼續(xù)n); getch(); ClearScreen(); return TRUE; if(found-flag=1) printf(請選擇城市查詢n); printf(按任意鍵繼續(xù)n); getch(); ClearScreen();
20、return TRUE; else p=p-right; while(p!=0 xa) printf(%sn,p-name); p=p-right; printf(按任意鍵繼續(xù).n); getch(); ClearScreen(); return TRUE;說明:這幾個模塊的重點同樣都是在遍歷上,只要解決了這個問題,這幾個功能都比較容易設(shè)計好。模塊10:幫助文件BOOL AboutSys(void)BOOL bRet = TRUE;ScreenFresh();printf(ntt 【* Programming Instructions *】n);Delay(); printf( tn);Del
21、ay();printf( t 系統(tǒng)支持快捷鍵操作,簡單的鼠標(biāo)操作和鍵盤操作; n);Delay();printf( t 本系統(tǒng)大量使用了標(biāo)注,盡量使程序明了易懂; n);Delay();printf( t 運用較多的結(jié)構(gòu),用三方向的十字交叉鏈表儲存信息; n);Delay();printf( t 運用數(shù)組,指針,結(jié)構(gòu)與聯(lián)合及文件輸入輸出,控制臺等知識。n);Delay();printf( t 系統(tǒng)主要提供景點信息的快速查詢、檢索; n);Delay();printf( t 本程序有景點信息查詢,信息錄入,修改,刪除等功能. n);Delay();printf( n);Delay();print
22、f( 【參考文獻(xiàn)】:tttttt n 1曹計昌,盧萍,李開. C語言程序設(shè)計,北京:科學(xué)出版社,2008; n);Delay();printf( 2李開,盧萍,曹計昌. C語言實驗與課程設(shè)計,北京:科學(xué)出版社,2011;n); printf( n); return bRet;說明:為了使用戶能更好的使用本軟件。模塊11:界面及其它相關(guān)部分 (這里過于散亂,程序在后面一起附上)4 系統(tǒng)實現(xiàn)與測試4.1 系統(tǒng)實現(xiàn)這部分可首先敘述一下你的系統(tǒng)實現(xiàn)的軟硬件環(huán)境;根據(jù)3.1的設(shè)計,用C語言定義各種數(shù)據(jù)類型;程序代碼部分在這里不需要給出來,只需要敘述清楚在系統(tǒng)中包括哪些函數(shù),各函數(shù)的說明,如何利用這些函數(shù)
23、實現(xiàn)系統(tǒng)各模塊的功能,以及函數(shù)間的調(diào)用關(guān)系(也可用附加圖表示出來)。程序詳見附錄。一、軟硬件環(huán)境,如下圖:二、函數(shù)說明: /*框架函數(shù)的聲明*/void TextInterface(void);/*系統(tǒng)界面初始化*/void ClearScreen(void); /*清屏*/void ShowMenu(void); /*顯示主菜單欄*/void PopMenu(int num); /*彈出下拉菜單*/void PopOn(SMALL_RECT *, WORD, LABEL_BUNDLE *, HOT_AREA *); /*彈出窗口屏幕信息維護(hù)*/void PopOff(void); /*關(guān)閉彈
24、出窗口*/void DrawBox(SMALL_RECT *parea); /*繪制子菜單邊框*/void LocateSubMenu(int num, SMALL_RECT *parea); /* 彈出菜單定位*/void MarkMainMenu(int num); /* 標(biāo)記被選中的主菜單項*/void MarkSubMenu(int num); /* 標(biāo)記被選中的子菜單項*/void SetMainHotArea(void); /* 給主菜單欄設(shè)置熱區(qū)*/void RunSystem(void); /* 系統(tǒng)功能模塊的選擇和運行*/void CloseSys(); /* 關(guān)閉系統(tǒng)并退出
25、*/void ShowTime(void); /* 動態(tài)顯示系統(tǒng)時間*/inline void Gotoxy(COORD pos);/* 將光標(biāo)置于坐標(biāo)pos處*/inline void Delay(void);/* 時間暫延0.05s*/inline void ScreenFresh(void);/* 刷屏函數(shù)*/void Start(void);/* 進(jìn)入歡迎界面*/void WriteKeyWord(char *str,COORD pos);/* 將關(guān)鍵字顯示出來*/int MyStrstr(char *s,char *t);/* 在s串中查找t串*/*功能函數(shù)模塊函數(shù)的聲明*/BOOL
26、 ExeFunction(int main_menu_num, int sub_menu_num);struct ss *creat1() /生成景點名稱struct ss *creat2() /生成城市名稱struct ss *creat3() /生成省區(qū)名稱struct ss *search (struct ss *loc_head,char s) /定位查找目標(biāo)void deletedata(struct ss *loc_head,char s) /刪除數(shù)據(jù)void adddata(struct ss *loc_head,char t) /添加數(shù)據(jù)void savessj(struct
27、ss *loc_head) /存儲數(shù)據(jù)int compare(char a,char b) /匹配字符串void detail(struct ss *loc_head,char s) /詳細(xì)信息輸出BOOL SearchSheng() /省份信息查詢BOOL SearchCity() /城市信息查詢BOOL SearchJingdian() /城市景點名查詢BOOL ExitSys(void); /退出系統(tǒng) BOOL Theme(void); /主題BOOL AboutSys(void); /幫助 BOOL Clear(void); /清屏BOOL RestoreData(); /存儲 BOO
28、L BackupData(); /數(shù)據(jù)恢復(fù)具體運行方式見下圖: NY創(chuàng)建鏈表歡迎界面(主題)菜單界面初始化退出系統(tǒng)?選擇相應(yīng)功能并運行結(jié)束開始4.2 系統(tǒng)測試首先敘述一下常用的軟件測試方法,在選擇幾個主要的功能模塊(自行掌握數(shù)量,關(guān)鍵要體現(xiàn)你的水平的一些模塊)描述測試過程,(1)先明確模塊的功能、設(shè)計目標(biāo)等(2)分析、敘述如何選取測試數(shù)據(jù)(3)運行結(jié)果(這時可用截圖)(4)分析運行結(jié)果、確認(rèn)程序滿足該模塊的設(shè)計目標(biāo)。測試方法:黑盒:這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。黑盒測試又叫做功
29、能測試或數(shù)據(jù)驅(qū)動測試。 白盒:此方法把測試對象看做一個透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進(jìn)行測試。通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。系統(tǒng)測試:1、 歡迎界面2、數(shù)據(jù)保存3、數(shù)據(jù)加載4、數(shù)據(jù)備份5、數(shù)據(jù)恢復(fù)6、退出7、插入景點8、省區(qū)查詢9、城市查詢10、城市景點名查詢11、景點詳細(xì)信息查詢12、幫助主題13、關(guān)于系統(tǒng)14、清屏5 總結(jié)與展望5.1 全文總結(jié)對自己的工作做個總結(jié),主要工作如下:(1)學(xué)習(xí)了界面的制作,能簡單運用文本界面來完成一些相應(yīng)的任務(wù),并能對
30、其進(jìn)行一定的修改。(2)熟悉并掌握了鏈表的用法。(3)學(xué)習(xí)了有關(guān)遍歷的各種方法,學(xué)到了許多數(shù)據(jù)結(jié)構(gòu)的知識。(4)了解了一款軟件制作的過程,對軟件的制作有了一定的基礎(chǔ)。5.2 工作展望在今后的研究中,圍繞著如下幾個方面開展工作。(1)對于主界面的優(yōu)化問題。文本界面看起來還是不那么舒服,在以后還是要向圖形界面發(fā)展,UI這一塊兒還是很重要的。(2)多寫,多做,熟練運用自己所學(xué)的知識,將所學(xué)知識融會貫通。并且能在以后的時間里,做出更好的,讓自己滿意的作品。 體會首先,最大的體會就是開發(fā)一款軟件不容易?。榱送瓿蛇@款軟件,我們需要研究有關(guān)界面的知識,還要研究鏈表的知識,數(shù)據(jù)結(jié)構(gòu)的知識,以及其它的很多東西
31、??此埔粋€很簡單的東西,真正做起來的時候就會發(fā)現(xiàn)有許多的困難之處。別的不說,就是一寫長了,人就可能會糊掉,就可能不知道自己前面是怎么想的了。不過也正是這樣,我總結(jié)的方法就是:1、多做注釋。這樣有利于程序的閱讀;2、程序?qū)懙臅r候要擺整齊;3、寫函數(shù)一個一個的調(diào)。這一點感觸頗深,一個大一點的程序,會有很多的函數(shù),如果開始不調(diào)好的話,到后面組合之后再來就很尷尬了。其次,另一個大的體會就是基礎(chǔ)一定要打好,如果沒有一個好的基礎(chǔ)的話,說來完成一個大的軟件純屬扯淡。參考文獻(xiàn)1 劉云生. 現(xiàn)代數(shù)據(jù)庫技術(shù). 北京: 國防工業(yè)出版社,2001.38462 陽小華,劉振宇,譚敏生等.元搜索引擎系統(tǒng)合成算法的約束條件
32、.軟件學(xué)報,2002,13(7):126412703 Rogic S, Mackworth A K, Ouellette F B. Evaluation of gene-finding programs on mammalian sequences. Genome Res., 2001, 11(5): 8178324 Krogh A. Two methods for improving performance of an HMM and their application for gene-finding. In: Gaasterland T, Karp P, Karplus K, et al
33、., eds. Proc. Int. Conf. Intell. Syst. Mol. Biol., Menlo Park, CA: AAAI Press, 1997, 5:1791865 孫良.一種分布式智能信息檢索系統(tǒng)的研究與實現(xiàn):碩士學(xué)位論文.浙江大學(xué),2002.43476 URL: http:/www.ietf.org/1id-abstracts.html附錄 程序清單程序中適當(dāng)加些注釋以提高可讀性。宋體,五號,行間距為固定12磅。/*景點查詢系統(tǒng)2014年7月*/#include #include #include #include #include #define SCR_ROW
34、25 /*屏幕行數(shù)*/#define SCR_COL 80 /*屏幕列數(shù)*/FILE *fin; /讀入文件 FILE *beifen1; /備份文件 struct ss /景點結(jié)構(gòu)體 char name50; /省市名稱 int flag; /級別 struct ss * right; struct ss * down;*head;/*屏幕窗口信息鏈結(jié)點結(jié)構(gòu)*/typedef struct layer_node char LayerNo; /*彈出窗口層數(shù)*/ SMALL_RECT rcArea; /*彈出窗口區(qū)域坐標(biāo)*/ CHAR_INFO *pContent; /*彈出窗口區(qū)域字符單元原
35、信息存儲緩沖區(qū)*/ char *pScrAtt; /*彈出窗口區(qū)域字符單元原屬性值存儲緩沖區(qū)*/ struct layer_node *next; /*指向下一結(jié)點的指針*/ LAYER_NODE;/*標(biāo)簽束結(jié)構(gòu)*/typedef struct label_bundle char *ppLabel; /*標(biāo)簽字符串?dāng)?shù)組首地址*/ COORD *pLoc; /*標(biāo)簽定位數(shù)組首地址*/ int num; /*標(biāo)簽個數(shù)*/ LABEL_BUNDLE;/*熱區(qū)結(jié)構(gòu) */typedef struct hot_area SMALL_RECT *pArea; /*熱區(qū)定位數(shù)組首地址*/ char *pSor
36、t; /*熱區(qū)類別(按鍵、文本框、選項框)數(shù)組首地址*/ char *pTag; /*熱區(qū)序號數(shù)組首地址*/ int num; /*熱區(qū)個數(shù)*/ HOT_AREA;/*主菜單名數(shù)組*/char *ga_main_menu = 文件(F), 編輯(E),查詢(I),幫助(H);/*子菜單名數(shù)組*/char *ga_sub_menu = S 數(shù)據(jù)保存, L 數(shù)據(jù)加載,A 數(shù)據(jù)備份,F 恢復(fù)備份,X 退出 Alt+X , 1插入景點,2修改景點,3刪除景點 , F 省區(qū)查詢, A 城市查詢,L 城市景點查詢, C 景點詳細(xì)查詢 , T 幫助主題 F1,A 關(guān)于系統(tǒng), C 清屏 Alt+C;char
37、* gp_scr_att = NULL; /*存放屏幕上字符單元屬性值的緩沖區(qū)*/int ga_sub_menu_count = 5, 3, 4, 3; /*各主菜單項下子菜單的個數(shù)*/int gi_sel_menu = 1; /*被選中的主菜單項號,初始為1*/int gi_sel_sub_menu = 0; /*被選中的子菜單項號,初始為0,表示未選中*/HANDLE gh_std_out; /*標(biāo)準(zhǔn)輸出設(shè)備句柄*/HANDLE gh_std_in; /*標(biāo)準(zhǔn)輸入設(shè)備句柄*/struct ss * loc_head=NULL; /*主鏈頭指針*/LAYER_NODE * gp_top_la
38、yer = NULL; /*彈出窗口信息鏈鏈頭*/CHAR_INFO * gp_buff_menubar_info = NULL; /*存放菜單條屏幕區(qū)字符信息的緩沖區(qū)*/DWORD len; /*指向變量的指針,用來存放字符的實際數(shù)目*/*框架函數(shù)的聲明*/void TextInterface(void);/*系統(tǒng)界面初始化*/void ClearScreen(void); /*清屏*/void ShowMenu(void); /*顯示主菜單欄*/void PopMenu(int num); /*彈出下拉菜單*/void PopOn(SMALL_RECT *, WORD, LABEL_BUN
39、DLE *, HOT_AREA *); /*彈出窗口屏幕信息維護(hù)*/void PopOff(void); /*關(guān)閉彈出窗口*/void DrawBox(SMALL_RECT *parea); /*繪制子菜單邊框*/void LocateSubMenu(int num, SMALL_RECT *parea); /* 彈出菜單定位*/void MarkMainMenu(int num); /* 標(biāo)記被選中的主菜單項*/void MarkSubMenu(int num); /* 標(biāo)記被選中的子菜單項*/void SetMainHotArea(void); /* 給主菜單欄設(shè)置熱區(qū)*/void Run
40、System(void); /* 系統(tǒng)功能模塊的選擇和運行*/void CloseSys(); /* 關(guān)閉系統(tǒng)并退出*/void ShowTime(void); /* 動態(tài)顯示系統(tǒng)時間*/inline void Gotoxy(COORD pos);/* 將光標(biāo)置于坐標(biāo)pos處*/inline void Delay(void);/* 時間暫延0.05s*/inline void ScreenFresh(void);/* 刷屏函數(shù)*/void Start(void);/* 進(jìn)入歡迎界面*/void WriteKeyWord(char *str,COORD pos);/* 將關(guān)鍵字顯示出來*/int
41、 MyStrstr(char *s,char *t);/* 在s串中查找t串*/*namet=0; loc_head-flag=3; loc_head-down=NULL; loc_head-right=creat1(); return loc_head; loc_head-namet+=c; struct ss *creat2() /生成城市名稱 int t=0; char c; struct ss * loc_head=NULL; loc_head=(struct ss *) malloc (sizeof(struct ss); loc_head-namet=0; while(c=fget
42、c(fin)!=*) if(c!=:) loc_head-namet+=c; while(c=fgetc(fin)!=:) loc_head-namet+=c; loc_head-namet=0; loc_head-flag=2; loc_head-right=creat1(); loc_head-down=creat2(); return loc_head; struct ss *creat3() /生成省區(qū)名稱 int t=0;char c;struct ss * loc_head=NULL;loc_head=(struct ss *) malloc (sizeof(struct ss);
43、while(c=fgetc(fin)!=EOF) if(c=*) while(c=fgetc(fin)!=n) loc_head-namet+=c; if(c=n) loc_head-namet=0; loc_head-flag=1; loc_head-right=creat2(); loc_head-down=creat3(); return loc_head; int x=1; /控件遞歸結(jié)束 struct ss *found,*father; /在遞歸中記錄下位置 struct ss *search (struct ss *loc_head,char s) /定位查找目標(biāo) struct
44、ss *p; p=loc_head; if(p!=NULL&p!=0 xa&p!=0 x2a&x=1&p!=-1) if(strcmp(p-name,s)=0) x=0; found=p; return p; else father=p; search(p-right,s); search(p-down,s); return NULL;int searchdata(struct ss *loc_head,char s) /整合上面的search函數(shù)便于操作 x=1;search(loc_head,s);if(x=0) return 1;else return 0; void deletedat
45、a(struct ss *loc_head,char s) /刪除數(shù)據(jù) if(searchdata(loc_head,s)=1) father-right=found-right; free(found); else printf(NOT FOUND!n);BOOL DeleteData() /函數(shù)入口 char s50;printf(請輸入要刪除的景點名稱n);gets(s);deletedata(head,s); return TRUE; void adddata(struct ss *loc_head,char t) /添加數(shù)據(jù) struct ss *add; add=(struct s
46、s *) malloc (sizeof(struct ss); add-right=found-right; add-flag=found-flag; add-down=NULL; strcpy(add-name,t); found-right=add;BOOL AddData()FILE *out;char s50,t50,c;printf(添加在哪個景點后?n); gets(s);if(searchdata(head,s)=1) out=fopen(data2.txt,a+); printf(請輸入景點名:n); gets(t); adddata(head,t); fprintf(out,*n%sn,t); printf(請輸入詳細(xì)信息,以*結(jié)束n); while(c=getchar()!=*) fputc(c,out); fputc(n,out); fputc(*,out); fputc(n,out); close(out); printf(添加成功n); else printf(NOT FOUND!n); printf(按任意鍵繼續(xù)
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代文閱讀之小說人物形象課件
- 3第12課蘇東的艱難探索
- 《第二節(jié)--探究環(huán)境污染對生物的影響》課件-(同課異構(gòu))2022年課件
- 牛津譯林版七下英語7bunit1dreamhomesreading課件1
- 六年級語文《一個這樣的老師》教學(xué)課件
- 六年級安全教育-運動的自我監(jiān)控課件
- 五年級下冊數(shù)學(xué)優(yōu)秀教學(xué)課件《解決問題》人教新課標(biāo)
- 27清澈的湖水 (2)
- 49稍復(fù)雜的分?jǐn)?shù)乘法應(yīng)用題練習(xí)
- 江蘇省高考物理二輪復(fù)習(xí)專題一力與物體的平衡課件
- 小松鼠找花生課件(教育精品)
- 22跨越海峽的生命橋 (2)
- 人力資源環(huán)境分析
- 《空氣》課件-(省優(yōu))2022年人教版化學(xué)課件-2
- 鐵路與城市軌道交通振動與噪聲