版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年重慶城市管理職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案詳解
- 2026年安陽職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫參考答案詳解
- 2026年湖南省湘潭市單招職業(yè)適應(yīng)性測試題庫參考答案詳解
- 2026年日照航海工程職業(yè)學(xué)院單招職業(yè)傾向性考試題庫及答案詳解一套
- 天津市五區(qū)縣重點(diǎn)校聯(lián)考2024-2025學(xué)年高二上學(xué)期11月期中歷史試題含答案高二歷史
- 郵政 面試題庫及答案
- 銀行征信面試題目及答案
- 數(shù)字安徽有限責(zé)任公司及所屬企業(yè)2025年第2批次社會招聘備考題庫及一套完整答案詳解
- 2025年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院公開招聘工作人員26人備考題庫(第二批)及一套參考答案詳解
- 2025年西安市高新一中初級中學(xué)教師招聘12人備考題庫完整答案詳解
- DB33T768.5-2024安全技術(shù)防范系統(tǒng)建設(shè)技術(shù)規(guī)范 第5部分- 公共供水場所
- 工程項(xiàng)目管理試題及答案
- 醫(yī)療器械采購?fù)稑?biāo)方案(技術(shù)方案)
- 脊柱微創(chuàng)并發(fā)癥
- 個體工商戶入股協(xié)議書
- DB37-T 3080-2022特種設(shè)備作業(yè)人員配備要求
- DL∕T 1878-2018 燃煤電廠儲煤場盤點(diǎn)導(dǎo)則
- NFPA 90A 2018 通風(fēng)空調(diào)系統(tǒng)防火要求(中文翻譯)
- 科學(xué)精神與科學(xué)研究方法智慧樹知到期末考試答案2024年
- JB-T 14509-2023 反滲透海水淡化設(shè)備技術(shù)規(guī)范
- 常用大壩安全監(jiān)測設(shè)施考證表
評論
0/150
提交評論