火車訂票系統(tǒng)實(shí)踐_第1頁
火車訂票系統(tǒng)實(shí)踐_第2頁
火車訂票系統(tǒng)實(shí)踐_第3頁
火車訂票系統(tǒng)實(shí)踐_第4頁
火車訂票系統(tǒng)實(shí)踐_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

實(shí)訓(xùn)題目:火車訂票系統(tǒng)實(shí)踐

1

目錄

1實(shí)訓(xùn)目的......................................2

2問題描述......................................3

3設(shè)計要求......................................4

4設(shè)計思路......................................4

5詳細(xì)設(shè)計......................................5

6調(diào)試分析......................................10

7用戶使用說明..................................10

8測試結(jié)果......................................11

9源代碼........................................15

10程序設(shè)計總結(jié)...................................15

11參考文獻(xiàn).......................................15

1

一、實(shí)訓(xùn)目的

通過本次實(shí)訓(xùn),能夠進(jìn)一步鞏固、掌握程序設(shè)計基礎(chǔ)和

數(shù)據(jù)結(jié)構(gòu)課程的基本知識、基本技能。了解和掌握線性表的邏輯

結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu),掌握單鏈表的基本算法及相關(guān)的時間性能

分析。加深對課程內(nèi)容的理解,增加感性認(rèn)識,提高軟件設(shè)計、

編寫及調(diào)試程序的能力。還可以培養(yǎng)獨(dú)立思考、綜合運(yùn)用所學(xué)的

有關(guān)相應(yīng)知識和能力,能更改的鞏固C語言程序設(shè)計課程學(xué)習(xí)的

內(nèi)容,掌握工程軟件設(shè)計的基本方法,強(qiáng)化上機(jī)手動編程的能力,

闖過理論與實(shí)踐相結(jié)的難關(guān),更加了解c語言的好處與其可用性。

更加也體會到以后在工作中團(tuán)隊合作的重要性和必要性。

通過C語言課程設(shè)計,使學(xué)生了解高級程序設(shè)計語言的

結(jié)構(gòu),掌握基本的程序設(shè)計過程和技巧,掌握基本的分析問題和

利用計算機(jī)求解的能力,具備初步的高級語言程序設(shè)計能力,為

后續(xù)各門計算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計打下堅實(shí)的基礎(chǔ)。

通過綜合實(shí)訓(xùn),促使學(xué)生進(jìn)一步鞏固和加強(qiáng)對C語言編

程相關(guān)知識,指導(dǎo)和促使學(xué)生通過各種途徑對C語言相關(guān)技術(shù)內(nèi)

容進(jìn)行拓展和深入,增強(qiáng)學(xué)生動手(編碼)能力、調(diào)試能力、測試

能力等。

2

三、設(shè)計要求

按照軟件工程思想,設(shè)計并實(shí)現(xiàn)一個火車票訂票系統(tǒng)。

系統(tǒng)的主要功能如下:

(1)管理員可以進(jìn)行火車票基本信息的查詢,錄入,修改和刪除。

(2)火車的基本信息如下:車次號,起點(diǎn),終點(diǎn)開出時?刻,到達(dá)時刻,日期,預(yù)

設(shè)座位數(shù),剩余座位數(shù)。(注意:作為不分等級)

(3)普通用戶可以查詢火車信息,按起點(diǎn),終點(diǎn)和口期查詢火車信息信息。

(4)普通用戶在查詢到合適的火車后,開始訂票。訂票時需輸入:id,姓名,日

期,火車號,日期。確定訂票后,相關(guān)信息記錄于訂票表中,同時,對應(yīng)火

車票的剩余座位數(shù)減一。(不考慮退票情況)。

(5)普通用戶可以在輸入id后查詢自己的訂票信息和對應(yīng)火車的基本信息。

四、設(shè)計思路

按照軟件工程的思想,首先進(jìn)行需求分析,然后進(jìn)行系統(tǒng)設(shè)計,再進(jìn)行系統(tǒng)

實(shí)現(xiàn),最后進(jìn)行系統(tǒng)測試。

需求分析方面:管理員的動能主要體現(xiàn)了對數(shù)據(jù)可的插入,刪除,修改,添

加等方面的操作。

系統(tǒng)功能的實(shí)現(xiàn)方面:該系統(tǒng)要實(shí)現(xiàn)火車票信息的錄入,用戶預(yù)訂信息的錄

入。該系統(tǒng)要實(shí)現(xiàn)火車影票信息的查詢,以及用戶預(yù)訂火車票信息的查詢。該

系統(tǒng)要實(shí)現(xiàn)火車票信息的修改、添加、刪除。

五、詳細(xì)設(shè)計(部分源代碼)

首先確定正確的屬性關(guān)系,設(shè)計完善正確的程序,包括各個循環(huán)鏈表的完

整性,在本系統(tǒng)中,先列出結(jié)構(gòu)關(guān)系。

4

火車票預(yù)定管理系統(tǒng)

預(yù)

5

1、函數(shù)聲明

//**********************函申明*****************

intadd();〃添加模塊

voidsave(NODE*head);〃保存模塊

voiddelete_m(NODE*head);〃刪除模塊

voidupdata(NODE*head);〃更新模塊

voidoutlnfo(TRAINt);〃輸出火車信息

voidprintList(NODE*head);〃輸出鏈表

voidpushHead(NODE*head,TRAINt);〃鏈表頭插

voidprintHead();〃打印開頭

voidprintEnd();〃打印結(jié)尾

voidsave();〃保存模塊

voidsavelnfo(TRAINt);〃保存火車信息

voidsaveList(NODE*head);〃保存鏈表

intxmlPurse(FILE*fp,TRAIN*t);//xml解析

NODE*find(NODE*head,TRAINt,inttype);〃查找返回一個存數(shù)據(jù)的鏈表

2、鏈表操作

〃*******************鏈表操作*******************

NODE*creatList(){

NODE*node;

node=(NODE*)malloc(sizeof(TRAIN));

6

node->next=NULL;

returnnode;

)

NODE*ByeNode(TRAINt){〃申請一個節(jié)點(diǎn)

NODE*newNode=NULL;

newNode=(NODE*)malloc(sizeof(NODE));

newNode->data=t;

newNode->next=NULL;

returnnewNode;

}

intsize(NODE*head){〃求鏈表大小(不包括頭結(jié)點(diǎn))

intnum=0;

NODE*t=head;

while(t){

num++;

t=t->next;

)

returnnum-1;

)

{〃鏈表頭插

voidpushHead(NODE*head/TRAINt)

NODE*tp=head;

7

NODE*node=ByeNode(t);

if(!tp->next)

(

tp->next=node;

)

else

(

node->next=head->next;

head->next=node;

)

)

voidprintList(NODE*head){

NODE*t=head->next;

while(t)

(

outlnfo(t->data);

t=t->next;

)

printf("輸出完畢");

)

8

3、功能模塊

〃******************女j育昌木其j夬***********

intadd(NODE*head){

intkey;

TRAINt;

printf(”請輸入添加車次號>>");

scanf("%s",);

printf(”請輸入添加車次出發(fā)點(diǎn)>>");

scanf("%s",t.place);

printf(”請輸入添加車次目的地>>");

scanf("%s”,t.dir);

printf(“請輸入添加車次出發(fā)時間>>");

scanf("%s",t.start);

printf(”請輸入添加車次到達(dá)時間>>");

scanf("%s",t.end);

printf(”請輸入添加車次票價>>");

scanf("%s",t.price);

printf(“請輸入添加車次可買票數(shù)量>>");

scanf("%s”,t.quantity);

itoa(size(head)+l,t.id,10);

pushHead(head,t);

9

isChange=1;

printf(“添加成功,輸入0結(jié)束,其他鍵繼續(xù)添加”);

scanf("%d",&key);

if(key==O)return0;

elsereturn1;

)

4、頭文件定義

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

六、調(diào)試分析

-------------------Configuration:火車訂票系統(tǒng)-Win32Debug

Linking...

火車訂票系統(tǒng).exe-0error(s),0warning(s)

一Th組建,di怛潮際就¥1中查找\在文件2中查找入結(jié)果入SQLDebugging/

無錯誤,無問題。

七、用戶使用說明

1實(shí)現(xiàn)管理火車信息。

2增加火車信息的函數(shù)(說明:能增加新的火車信息)。

3顯示火車信息的函數(shù)(說明:對所有的火車信息進(jìn)行打印)

4查找火車信息的函數(shù)(說明:從火車的序號、起點(diǎn)、終點(diǎn)進(jìn)行查找)

5刪除火車信息的函數(shù)(說明:從刪除火車的姓名開始)

6修改火車信息的函數(shù)設(shè)計簡單的菜單界面,實(shí)現(xiàn)上述所要求的各種功能。即根據(jù)菜單界面的

選擇,對每一列火車都可以添加、排序、查詢、刪除、修改信息。

7.程序應(yīng)加入文件的操作,打開、讀取、寫入、關(guān)閉。

10

八、測試結(jié)果

■"C:\Users\lenovo\Desktop\c++\1\4\Debug\)k車訂票系統(tǒng).exe"

正在讀取數(shù)據(jù)...

數(shù)據(jù)讀取完畢

讀到數(shù)據(jù)11個

********************************

**歡迎使用火車票管理系統(tǒng)**

********************************

*1.添加乍次信息*

*2.查詢車次信息*

*3.輸出所行乍次信息*

*4.更新車次信息*

*5.刪除乍次信息*

*6.保存操作*

*7.退出系統(tǒng)*

********************************

請輸入數(shù)字選擇功能>〉1

請輸入添加車次號》12

請輸入添加車次出發(fā)點(diǎn)〉西安

請輸入添加乍次目的地〉蘇州

請輸入添加車次出發(fā)時間>>07:45

請輸入添加車次到達(dá)時間》11:35

請輸入添加車次票價>450

清輸入添加乍次可買票數(shù)員>>100

添加成功,輸入0結(jié)束.其他鍵繼續(xù)添加

8.1添加火車信息

請輸入數(shù)字選擇功能>〉2

請輸入你要根據(jù)什么信息查詢的乍次;

1.序號

2.車次號

3.起點(diǎn)

4.終點(diǎn)

?1

請輸入你要查詢的車序號>12

找到1個數(shù)據(jù)

拿12

次1

地2

53開往

時<

一一

征O745

作45o

數(shù)10O

?:

輸出完畢請輸入數(shù)字選擇功能〉

8.2查詢火車信息(車次號)

11

請輸入你要根據(jù)什么信息杳詢的車次:

1.序號

2.車次號

3.起點(diǎn)

4.終點(diǎn)

?1

請輸入你要查詢的車序號

找到1個數(shù)據(jù)

序:1

UJ-

車01

次;

口U41⑶?

點(diǎn).

</?

時.10O

±:-

票.25o

數(shù)10O

輸出完畢格輸入數(shù)字選擇功能〉

8.3查詢火車信息(序號)

請輸入你要根據(jù)什么信息?f詢的隼次:

1.序號

2.車次號

3.起點(diǎn)

4.終點(diǎn)

?3

請輸入你要查詢的車次起點(diǎn)》西安

找-到12個數(shù)據(jù)

-生12

-乍

火12

-地538

點(diǎn)0

-時O75開往蘇州

問:4

-票

45011:35

+數(shù)100

一-

-一一----------+

_!.

-1

.序

.

車10

.次?

地10

點(diǎn)?

.號

時西安開往南京

.間

度.09:1512:00

.價

數(shù).999

.巾

一100

一------+

仁。9?9

下次號:09

HRkA.西安開往保定

時間:15:46—20:48

/?)二.、.1/1P?154

8.4查詢火車信息(起點(diǎn))

12

請輸入你要根據(jù)什么信息杳詞的乍次:

1.序號

2.車次號

3.起點(diǎn)

4.終點(diǎn)

?4

請輸入你要杳詢的個次終點(diǎn)》石家莊

找到1個數(shù)據(jù)

序號:8

車次號:08

地點(diǎn):西安開往石家莊

時間:16:50--20:35

票價:184

數(shù)量:100

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+

輸出完畢請輸入數(shù)字選擇功能〉

8.5查詢火車信息(終點(diǎn))

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------—+

序號:9

車次號:09

才地J八占八?,西安開往保定

時間:15:46—20:48

票價:154

數(shù)量:100

41.

-1____.41-

序號:10

車次號:10

地點(diǎn):西安開往南京

時間:09:15—12:00

票價:999

數(shù)量:100

,i_

11

11

1t

序號:12

車次號:12

地點(diǎn):西安開往蘇州

時間:07:45—11:35

票價:450

數(shù)量:100

+--------------------------------—+

輸出完畢輸出完畢.總共有12條信息

請輸入數(shù)字選擇功能〉》

13

8.6輸出火車信息

請輸入數(shù)字選擇功能>>4

請輸入要修改車次序號>>1一、

請輸入修改的車次號(輸入0不修改)》〉1,

請輸入修改的出發(fā)點(diǎn)(輸入0不修改)》不伊

請輸入修改的目的地(輸入0不修改)>〉北京

清輸入修改的出發(fā)時間(輸入。不修改)>>11:45

請施入極飲的到達(dá)時間(播入0不修改)>>15:50

請輸入修改的車次票價(輸入。不修改)>〃2f)

請輸入修改的車次可買票數(shù)俄(輸入°不修改)>>10°

修改完畢.

請輸入數(shù)字選擇功能》

8.7修改火車信息

請輸入數(shù)字選擇功能>>5

請輸入要刪除車次序號》>11

正在刪除...

刪除完畢.一—的

請輸入數(shù)字選擇功能》

8.8刪除火車信息

請輸入數(shù)字選擇功能>〉6

保存文件...

彳呆存到斯徑D:\train.xml完畢.

請輸入數(shù)字選擇功能〉》

8.9保存火車信息

請輸入數(shù)字選擇功能>>7

歡迎下次使用該管理系統(tǒng)

請按任意鍵繼續(xù)??..

Pressanykeytocontinue

8.10退出系統(tǒng)

14

九、源代碼

見附錄。

十、小結(jié)

通過木次的實(shí)驗(yàn)報告,使我們能夠基木掌握C程序設(shè)計的方法。此外,結(jié)合C語

言,采用一定的邏輯編譯,實(shí)現(xiàn)題目中要求的各項(xiàng)要求,達(dá)到基本實(shí)驗(yàn)?zāi)康?,提高?/p>

己的C語言使用水平。

本次C課程設(shè)計,收獲還是很多的,從剛剛拿到課程設(shè)計題目后,我就先分析這

個程序的一些基本的功能,從這些基本功能出發(fā)來定下一個程序的大致框架結(jié)構(gòu),這

里面主要包括程序中所設(shè)計的一些主要的函數(shù)的設(shè)計思想。比如:刪除記錄函數(shù)、增

力口記錄函數(shù)等等。

這次的課程設(shè)計,是自己獨(dú)立完成了一個相對比較大的程序,里面用到的面向?qū)?/p>

象的知識也是比較多的,通過一番實(shí)踐,很好的總結(jié)、強(qiáng)化了之前學(xué)習(xí)過的知識要點(diǎn),

并且也發(fā)現(xiàn)了自己還沒好好掌握的知識點(diǎn),對于沒掌握的,我查閱了參考書籍及時補(bǔ)

上。感覺代碼寫到也是后來,狀態(tài)越好,我感覺是由于自己對于一些基本的知識的比

較好的掌握了。有些問題雖然沒遇到過,但是通過查閱資料,只要了解了它們的用法,

自己就可以很快的模仿下來,不是照抄。這一點(diǎn)我覺得在今后的程序設(shè)計中也是蠻重

要的,因?yàn)槲野l(fā)現(xiàn)要寫出好程序,首先應(yīng)該去學(xué)習(xí)人家的程序,看懂他們的程序并且

轉(zhuǎn)化為自己的。其次才有可能去創(chuàng)新。

自己今后要更加的去做一些這樣的課程設(shè)計,這樣一方面鍛煉了自己的編程能力,

另一方面又使得自己復(fù)習(xí)鞏固了基礎(chǔ)的知識。

十一、參考文獻(xiàn)

面向?qū)ο蟪绦蛟O(shè)計思想和方法

C/C++語言參考手冊

主要參考文獻(xiàn):

[1]譚浩強(qiáng).C語言程序設(shè)計(第二版)清華大學(xué)出版社,2003年

[2]吳文虎.程序設(shè)計基礎(chǔ)清華大學(xué)出版社,2003年

[3]錢啟平.C語言程序設(shè)計基礎(chǔ)輔導(dǎo)教程鐵道出版社,2000年

[4]錢能.C++程序設(shè)計教程清華大學(xué)出版社,1999年

[5]劉斌,王忠.面向?qū)ο蟪绦蛟O(shè)計——VisualC++清華大學(xué)出版社,2003年

附錄:

源代碼:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

15

typedefstruct{

charid[5];

charname[32];

charplace[32];

chardir[32];

charstart[32];

charend[32];

charprice[5];

charquantity[10];〃數(shù)量

}TRAIN;

typedefstructNODE{

TRAINdata;

structNODE*next;

}NODE;

staticintisChange=O;〃定義全局變量。表示沒有修改,1有添加,2有修改,3有刪除,

保存后為0

〃**********************函申明*****************

intadd();〃添加模塊

voidsave(NODE*head);〃保存模塊

voiddelete_m(NODE*head);〃刪除模塊

voidupdata(NODE*head);〃更新模塊

voidoutlnfo(TRAINt);〃輸出火車信息

voidprintList(NODE*head);〃輸出鏈表

voidpushHead(NODE*head,TRAINt);〃鏈表頭插

voidprintHead。;〃打印開頭

voidprintEnd。;//打印結(jié)尾

voidsave();〃保存模塊

voidsavelnfo(TRAINt);〃保存火車信息

voidsaveList(NODE*head);〃保存鏈表

intxmlPurse(FILE*fp,TRAIN*t);//xml解析

NODE*find(NODE*head,TRAINt,inttype);〃查找返叵一個存數(shù)據(jù)的鏈表

******************鏈表操作*******************

//*

NODE*creatList(){

NODE*node;

node=(NODE*)malloc(sizeof(TRAIN));

node->next=NULL;

returnnode;

}

NODE*ByeNode(TRAINt){〃申請一個節(jié)點(diǎn)

NODE*newNode=NULL;

newNode=(NODE*)malloc(sizeof(NODE));

newNode->data=t;

16

newNode->next=NULL;

returnnewNode;

}

intsize(NODE*head){〃求鏈表大小(不包括頭結(jié)點(diǎn))

intnum=0;

NODE*t=head;

while(t){

num++;

t=t->next;

)

returnnum-1;

)

voidpushHead(NODE*head,TRAINt){〃鏈表頭插

NODE*tp=head;

NODE*node=ByeNode(t);

if(!tp->next)

(

tp->next=node;

)

else

{

node->next=head->next;

head->next=node;

)

)

voidprintList(NODE*head){

NODE*t=head->next;

while(t)

(

outlnfo(t->data);

t=t->next;

)

printf("輸出完畢)

)

{〃鏈表查找

NODE*find(NODE*head/TRAINt,inttype)

NODE*tp=head->next;

NODE*findlnfo=creatList();〃創(chuàng)建鏈表存查找的信息

intcount=0;

switch(type)

{

case1:

while(tp)

(

17

if(!strcmp(tp->data.id,t.id))

(

〃printf(“找到信息:\n");

pushHead(findlnfo,tp->data);

);

tp=tp->next;

}〃循環(huán)結(jié)束

break;

case2:

while(tp)

(

if(!strcmp(tp->z))

(

〃p「intf(“找到信息:\n");

pushHeadffindlnfo,tp->data);

);

tp=tp->next;

}〃循環(huán)結(jié)束

break;

case3:

while(tp)

(

if(!strcmp(tp->data.place,t.place))

(

〃printf("找到信息:\n");

pushHeadffindlnfo,tp->data);

);

tp=tp->next;

}〃循環(huán)結(jié)束

break;

case4:

while(tp)

{

if(!strcmp(tp->data.dirzt.dir))

(

〃printf("找到信息:\n");

pushHeadffindlnfo,tp->data);

);

tp=tp->next;

}〃循環(huán)結(jié)束

break;

)

〃返回數(shù)據(jù)處理

count=size(findlnfo);

if(count==0)returnNULL;

18

elsereturnfindInfo;

}

voidsaveList(NODE*head){

〃創(chuàng)建文件

,,

FILE*fp=fopen("D://train.xml/"w+");

NODE*t=head->next;

fclose(fp);

while(t)

{

savelnfo(t->dataj;

t=t->next;

)

isChange=0;

printf("保存到路徑D:\\train.xml完畢.\n“);

)

voidlist_delByld(NODE*head,char*id){

NODE*tp=head->next;

NODE*prep=head;〃用于記錄上一節(jié)點(diǎn)

if(!tp)

(

printf("沒有數(shù)據(jù)可操作\n“);

return;

)

while(tp)

{

if(!strcmp(tp->data.id,id))

(

printf("正在刪除〃上一個節(jié)點(diǎn)next指向tp的next

prep->next=tp->next;

free(tp);

printf("刪除完畢.\n“);

isChange=3;

break;

)

prep=tp;;

tp=tp->next;

}〃循環(huán)結(jié)束

if(!tp){

printf("沒有該信息\n“);

)

)

//******************功能模塊***********

intadd(NODE*head){

intkey;

19

TRAINt;

printf(”請輸入添加車次號》");

scanf("%s",);

printf(”請輸入添加車次出發(fā)點(diǎn)》”);

scanf("%s",t.place);

printf(”請輸入添加車次目的地>>");

scanf("%s",t.dir);

printf(”請輸入添加車次出發(fā)時間〉>“);

scanf(''%s",t.start);

printf(“請輸入添加車次到達(dá)時間》");

scanf("%s"zt.end);

printf(”請輸入添加車次票價>>");

scanf("%s",t.price);

printf(”請輸入添加車次可買票數(shù)量>>");

scanf("%s",t.quantity);

itoafsizetheadj+l,t.id,10);

pushHead(headzt);

isChange=1;

printf(“添加成功,輸入0結(jié)束,其他鍵繼續(xù)添加)

scanf("%d",&key);

if(key==OJreturn0;

elsereturn1;

}

voidsave(NODE*head){

FILE*fp;

printf("保存文件

saveList(head);

)

voidoutlnfo(TRAINt){

printf("+------------—?+\n");

printf("|序號:%10sl\n",t.id);

printf("|車次號:%10s|\n",);

地點(diǎn):開往

printf("|%10s%10s|\n"zt.place,t.dir);

printf("|時間:%10s--%10s|\n",t.start,t.end);

printf("|票價:%10s|\n”,t.price);

數(shù)量:

printf("|%10s|\n"zt.quantity);

printf("+------------—?+\n");

)

voidprintHeadf){

printf(11********************************

printff'**歡迎使用火車票管理系統(tǒng)**\n");

printf(,,***********:*********************\n,,),

printff'*1.添加車次信息*\n");

printff'*2.查詢車次信息*\n");

printff'*3.輸出所有車次信息*\n");

20

printff'*4.更新車次信息*\n");

printff'*5.刪除車次信息*\n");

printff'*6.保存操作

printff'*7.退出系統(tǒng)*\n");

prjn^(?***********^********************\n?l).

voidprintEnd(NODE*head){

charkey;

charbuf[1024];〃定義緩存讀完輸出流剩余

switch(isChange)

{

case1:

printf("你有添加數(shù)據(jù)未保存是否要保存(y/n)");

gets(buf);

scanf(”%c”,&key);

if(key=='y')saveList(head);

break;

case2:

printf(“你有修改數(shù)據(jù)未保存是否要保存(y/n)");

gets(buf);

scanf("%c,&key);

if(key=='y')saveList(head);

break;

case3:

printf("你有刪除數(shù)據(jù)未保存是否要保存(y/n)");

gets(buf);

scanf("%c",&key);

if(key=='y')saveList(head);

break;

default:

break;

)

printf("歡迎下次使用該管理系統(tǒng)\n“);

systemf'pause");

)

voidout(NODE*head){

printList(head);

printf("輸出完畢總共有%d條信息\n“,size(head));

}

voidselect(NODE*head){

charname[32];

NODE*info=NULL;

TRAINt;

inttype=1;

21

while(type!=0)

(

printf(“請輸入你要根據(jù)什么信息查詢的車次:\nl.序號\n2.車次號\n3.起點(diǎn)\n4.

終點(diǎn)\n>>“);

scanf("%d",&type);

switch(type)

(

case1:

printf("請愉入你要查詢的車序號>>”);

scanf("%s"zt.id);

info=findfhead,t,type);

type=0;

break;

case2:

printf(“請輸入你要查詢的車次號>>");

scanf("%s"z);

info=findfhead,t,type);

type=0;

break;

case3:

printf(“請輸入你要查詢的車次起點(diǎn)》”);

scanf("%s",t.place);

info=find(head?t,type);

type=0;

break;

case4:

printf(“請輸入你要查詢的車次終點(diǎn)>>");

scanf("%s,t.dir);

info=findfhead,t,type);

type=0;

break;

default:

printf("沒有該功能請重新輸入\n");

break;

)

)

if(info)

(

printf("找到%d個數(shù)據(jù)\n",size(info));

printList(info);

)

elseprintf("沒有相關(guān)信息\n");

)

voiddelete_m(NODE*head){

charid[5];

22

printf(“請輸入要刪除車次序號》”);

scanf("%s"Jd);

list_delByld(head,id);

}一

voidupdate(NODE*head){

charid[5];

NODE*tp=head->next;

printf("請輸入要修改車次序號》”);

scanf(“%s”,id);

if(!tp)

(

printf(“沒有數(shù)據(jù)可操作\n“);

return;

)

while(tp)

(

if(!strcmp(tp->data.id,id))

(

TRAINt;

printf("請輸入修改的車次號(輸入0不修改)>>");

scanf("%s",);

printf(“請輸入修改的出發(fā)點(diǎn)(輸入0不修改)>>");

scanf("%s,t.place);

printf("請輸入修改的目的地(輸入0不修改)>>");

scanf("%s",t.dir);

printf("請輸入修改的出發(fā)時間(輸入0不修改)>>");

scanf("%s",t.start);

printf("請輸入修改的到達(dá)時間(輸入0不修改)>>");

scanf("%s"zt.end);

printf(”請輸入修改的車次票價(輸入0不修改)>>");

scanf("%s"zt.price);

printf(”請輸入修改的車次可買票數(shù)量(輸入。不修改)>>");

scanf("%s",t.quantity);

if(,"0"))strcpy(tp->,);

if(strcmp(t.place,"0"))strcpy(tp->data.place,t.place);

if(strcmpft.start,"0"))strcpy(tp->data.start,t.start);

if(strcmp(t.dir,"0"))strcpy(tp->data.dir,t.dir);

if(strcmpft.end,"0"))strcpy(tp->zt.end);

if(strcmpft.price,"0"))strcpy(tp->,t.price);

if(strcmptt.quantity,"0"))strcpy(tp->zt.quantity);

printf("修改完畢.\n");

isChange=2;

break;

)

tp=tp->next;

23

}〃循環(huán)結(jié)束

if(!tp)

printf("沒有該信息\n");

)

)

//*************輕量XML解析*****************X*

intgetNode(FILE*fp,char*s){

charc;

inti=0;

intres=0;

while(1)

(

c=fgetc(fp);

if(c==EOFJreturn-1;

if(c=='<')break;

}

〃開始讀取

while(1)

(

c=fgetc(fp);

if(c==EOF){〃文件結(jié)束

res=-1;

break;

)

if(c=='>')break;〃節(jié)點(diǎn)結(jié)束

s[i]=c;

i++;

)

s[i]='\0';

returnres;

)

voidsavelnfo(TRAINt){〃保存文件到D://train.xml

//xml格式

//<train>

//<name></name>

//<name></name>

//</train>

FILE*fp=fopenC'Dy/train.xml","a");//a是追加

charcontents[1024]={'\0'};〃加\0才是字符串

if(!fp)printf("創(chuàng)建文件失敗");

else

strcatfcontents,"<train>\n");

24

strcatlcontents,M\t<id>,');

strcatfcontents,t.id);

strcat(contentsz"<\\id>\n");

strcat(contents,"\t<name>");

strcat(contents,);

strcat(contents,"<\\name>\n");

strcatfcontents,"\t<start>");

strcatfcontents,t.start);

strcat(contents,"<\\start>\n");

strcatfcontents,n\t<end>");

strcatfcontents,t.end);

strcatfcontents,"<\\end>\n");

strcat(contents,"\t<place>");

strcatfcontents,t.place);

strcat(contents,"<\\place>\n");

strcat(contents,"\t<dir>");

strcat(contentszt.dir);

strcatfcontents,n<\\dir>\n");

strcatfcontents,n\t<price>");

strcatfcontents,t.price);

strcatfcontents,"<\\price>\n");

strcat(contents,n\t<quantity>");

strcatfcontents,t.quantity);

strcatfcontents,"<\\quantity>\n");

strcat(contents,"<\\train>\n");

fputs(contents,fp);

fclose(fp);

)

)

NODE*readlnfo(){

NODE*i

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論