計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程設(shè)計(jì)鐵路售票查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程設(shè)計(jì)鐵路售票查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程設(shè)計(jì)鐵路售票查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程設(shè)計(jì)鐵路售票查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程設(shè)計(jì)鐵路售票查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、湖南文理學(xué)院課程設(shè)計(jì)報(bào)告課程名稱: 計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程設(shè)計(jì) 系 部: 電氣與信息工程學(xué)院 專業(yè)班級(jí): 通信09103班 學(xué)生姓名: 指導(dǎo)教師: 完成時(shí)間: 2011.12.27 報(bào)告成績(jī): 評(píng)閱意見: 評(píng)閱教師 日期 目錄摘要3關(guān)鍵詞3第一章 需求分析41.1 用戶功能需求41.2 數(shù)據(jù)流圖6第二章 概念結(jié)構(gòu)設(shè)計(jì)72.1 火車基本表72.2 火車時(shí)刻表72.3 火車站表52.4 省份表6 第三章 物理結(jié)構(gòu)設(shè)計(jì)8 第四章 系統(tǒng)程序的設(shè)計(jì)9 課程設(shè)計(jì)的總結(jié)22 參考文獻(xiàn):23 致 謝:23鐵路售票查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要:它是通過系統(tǒng)的方法、原理來(lái)售出火車票。本款系統(tǒng)采用人性化的售票管理模式,

2、能很好的解決了乘客購(gòu)票難,售票工作人員任務(wù)重的問題。本款軟件采用身份證作為身份驗(yàn)證的初始憑證,乘客按照系統(tǒng)所顯示的操作逐一輸入票務(wù)信息。系統(tǒng)會(huì)通過預(yù)先存入的程序?qū)С隹蛻羲栊畔⒑涂蛻粢?。為了防止非法份子使用假身份證購(gòu)票,在預(yù)命令中就事先輸入了相關(guān)的信息,此類狀況會(huì)直接導(dǎo)出無(wú)效信息,并顯示紅色警報(bào)信息。關(guān)鍵詞: 鐵路;售票;查詢;系統(tǒng);身份證abstract:it is through a systematic approach, principle to sell train tickets. this system adopts the humanized management mode,

3、 it can be a good solution to the passenger ticket, ticket sales staff arduous tasks of the problem. the software adopts the identity card as the authentication certificate according to the initial, passenger system revealed by operation to enter one by one ticket information. the system will advanc

4、e through a stored program derived required customer information and customer requirements. in order to prevent unauthorised person using a false identity card purchase, the prefetch commands in advance input the relevant information, this kind of situation will directly export the invalid informati

5、on, and display the red alert information.keyword:railway; ticketing; query; system; identity card一、 需求分析中國(guó)地域廣大,火車線路錯(cuò)綜復(fù)雜。另一方面人們生活質(zhì)量逐漸提高,旅游業(yè)發(fā)展迅猛,外出乘車旅游的旅客也越發(fā)增多,為了能選擇一個(gè)最佳路線,我們很有需要建立一個(gè)查詢火車路線,進(jìn)而選定火車票的系統(tǒng)。全國(guó)有大量的人員通過搭乘火車到達(dá)目的地。而與火車的特殊性及可能經(jīng)過多個(gè)城市,每個(gè)城市的車站可以出售此火車的車票。而且同一車站可能有多輛車經(jīng)過。許多希望以最快的方式選擇自己想來(lái)乘坐的那一趟列車。所以以人工

6、的方式是不可能實(shí)現(xiàn)這種功能的。一種可行的方案是基于客戶端服務(wù)器的體系結(jié)構(gòu)。服務(wù)器為數(shù)據(jù)庫(kù)系統(tǒng),存儲(chǔ)所有必要的信息??蛻舳送ㄟ^連接到服務(wù)的應(yīng)用程序快速、準(zhǔn)確地完成相應(yīng)的工作。列車票務(wù)管理系統(tǒng)的實(shí)施,將會(huì)在一定程度上促進(jìn)鐵路客運(yùn)生產(chǎn)力和生產(chǎn)關(guān)系的變革,增強(qiáng)市場(chǎng)競(jìng)爭(zhēng)能力,提高鐵路部門的工作效率,提升管理水平,減少勞動(dòng)強(qiáng)度,方便廣大旅客購(gòu)票,有一定的社會(huì)和經(jīng)濟(jì)效益。1.1 用戶功能需求 旅客購(gòu)票需求 l 按車次查詢車票信息:旅客可根據(jù)始發(fā)站名和終到站名查詢到全國(guó)任意兩站之間的所有車次,并且相應(yīng)查詢出兩站的距離公里數(shù)、票價(jià)、經(jīng)過的時(shí)間和車次類型等各 種信息。l 按車站查詢車票信息:用戶直接輸入起始站點(diǎn)和

7、終點(diǎn)站,選擇火車車次和車票種類,系統(tǒng)輸出滿足條件的詳細(xì)車票信息在詳細(xì)調(diào)查了用戶需求之后,就要開始分析用戶需求。在此,我們采用自頂向下的結(jié)構(gòu)化分析方法(sa方法)。首先,定義全局概念結(jié)構(gòu)的框架,如下圖所示。 查詢系統(tǒng)簡(jiǎn)單總體框架結(jié)構(gòu)圖分解總系統(tǒng)為子系統(tǒng)后 系統(tǒng)數(shù)據(jù)流圖分別簡(jiǎn)化為如下模型l 查詢系統(tǒng)模型:l 分類查詢功能:l 子車次查詢系統(tǒng): l 子車站查詢系統(tǒng): 依此類推,將所有子系統(tǒng)全部細(xì)化。將所有用戶需求分析完畢之后,就要開始構(gòu)造數(shù)據(jù)字典了。經(jīng)過分析之后,我們需要五個(gè)不同的基本表和關(guān)系表來(lái)完成該系統(tǒng)的數(shù)據(jù)儲(chǔ)存。分別是火車基本表、火車時(shí)刻表、火車站表、省份表、站點(diǎn)火車表。數(shù)據(jù)結(jié)構(gòu)定義如下表所示

8、。數(shù)據(jù)結(jié)構(gòu)名含義說(shuō)明組成火車基本表定義了各列火車的簡(jiǎn)單信息火車車次號(hào),火車種類,始發(fā)站,終點(diǎn)站,始發(fā)時(shí)間,到站時(shí)間,總路程,總時(shí)間火車時(shí)刻表定義了所有列車的有關(guān)信息火車車次號(hào),火車站id,火車站名,站次,日期,出發(fā)時(shí)間,到站時(shí)間,絕對(duì)路程,票種及票價(jià)火車站表定義了各列火車及其經(jīng)過車站信息火車車次號(hào),車站名,火車站id省份表定義了全國(guó)省份基本信息省份名,省份id,省份拼音縮寫站點(diǎn)火車表定義全國(guó)各省份所擁有的車站信息火車站id,火車站名,省份id,火車編號(hào)1.2 數(shù)據(jù)流圖使用結(jié)構(gòu)化分析方法,確定系統(tǒng)的數(shù)據(jù)主要是身份證號(hào)、車次、終點(diǎn)站名、發(fā)車時(shí)間和車票,對(duì)數(shù)據(jù)的操作主要有身份證證件的辨?zhèn)巍④嚧涡薷摹?/p>

9、終點(diǎn)站修改、發(fā)車時(shí)間修改、售票及打印,可以確定系統(tǒng)的處理邏輯和流程,得到如下所示的系統(tǒng)數(shù)據(jù)流圖。二、概念結(jié)構(gòu)設(shè)計(jì)2.1 火車基本表:2.2 火車時(shí)刻表:2.3 火車站表:2.4 省份表:三、物理結(jié)構(gòu)設(shè)計(jì)系統(tǒng)軟件結(jié)構(gòu)圖:四、系統(tǒng)程序的設(shè)計(jì)源程序:#include#include#define max 100#define n 50 typedef struct time /時(shí)間類型 int x,y,z; /分別對(duì)應(yīng)年,月,日time; typedef struct cnode /票信息類型 int no; /票號(hào) int id; /購(gòu)票人證件號(hào) time date; /購(gòu)票日期 struct c

10、node *next;cnode; typedef struct tnode /車次信息類型 char data; /車次編號(hào) struct tnode *lchild,*rchild; cnode *head;tnode; void create(); /按車次建立二叉排序樹void insert(int ); /增加新的車次(二叉排序樹的插入)void del(); /取消車次(二叉排序樹節(jié)點(diǎn)刪除)void inorder(tnode *); /中序遍歷車次二叉排序樹(僅顯示車次信息)void inorder_all(tnode *); /中序遍歷車次二叉排序樹(顯示車次及售票信息)voi

11、d preorder(tnode *); /先序遍歷車次二叉排序樹(僅顯示車次信息)tnode *search(); /按車次編號(hào)搜索cnode *insert_c(cnode *); /插入新的售票信息(單張)cnode *insert_c_more(cnode *); /插入新的售票信息(批量)cnode *del_c(cnode *,cnode *); /退票處理(刪除售票信息)cnode *search_c(cnode *,int); /按票號(hào)查詢void search_c_id(cnode *,int); /按購(gòu)票人證件號(hào)搜索(限定某車次)void search_c_id_all(t

12、node *,int); /按購(gòu)票人證件號(hào)搜索(所有車次)void search_date(cnode *,time); /按購(gòu)票日期搜索(限定某車次)void search_date_all(tnode *,time); /按購(gòu)票日期搜索(所有車次)void print_c(cnode *); /輸出售票紀(jì)錄(單張)void print_c_all(cnode *); /輸出售票紀(jì)錄(批量) tnode *root=null; void main() int i,func,no,ok; tnode *t; cnode *c; time d; printf(nnn); for(i=0;i15;

13、i+) printf(=); printf(列車售票信息管理系統(tǒng)); for(i=0;i15;i+) printf(=); printf(n); printf(t1.車次信息管理n); printf(t2.售票記錄管理n); printf(t3.售票記錄查詢n); printf(t4.售票記錄一覽n); printf(t5.退出系統(tǒng)n); for(i=0;in); for(i=0;in;i+) printf(=); printf(nt1.增加新的車次); printf(nt2.取消車次); printf(nt3.返回上級(jí)菜單n); for(i=0;in); for(i=0;in;i+) pri

14、ntf(=); printf(nt1.增加新的售票記錄); printf(nt2.退票); printf(nt3.返回上級(jí)菜單n); for(i=0;ihead=insert_c_more(t-head); break; case 2: t=search(); printf(需要退票的票號(hào):); scanf(%d,&no); t-head=del_c(t-head,search_c(t-head,no); break; case 3:main();break; default:printf(n錯(cuò)誤功能號(hào)輸入有誤!請(qǐng)重新輸入!); break; case 3: printf(nn售票記錄查詢n)

15、; for(i=0;in;i+) printf(=); printf(nt1.按票號(hào)搜索); printf(nt2.按購(gòu)票者證件號(hào)搜索); printf(nt3.按購(gòu)票日期搜索); printf(nt4.返回上級(jí)菜單n); for(i=0;ihead,no); if(c=null) printf(錯(cuò)誤沒有該票號(hào)的紀(jì)錄!該票還未售出或?yàn)閺U票!自動(dòng)返回上級(jí)菜單n.); break; case 2: printf(n請(qǐng)輸入您所要查詢的購(gòu)票者證件號(hào):); scanf(%d,&no); search_c_id_all(root,no); printf(搜索完畢!自動(dòng)返回上級(jí)菜單n.); break; c

16、ase 3: do printf(n請(qǐng)輸入您所要查詢的日期(格式: yy-mm-dd):); scanf(%d-%d-%d,&d.x,&d.y,&d.z); if(d.y0) if(d.y=1|d.y=3|d.y=5|d.y=7|d.y=8|d.y=10|d.y=12) if(d.z0) ok=1; else if(d.z=2) if(d.z0) ok=1; else if(d.z0) ok=1; else ok=0; if(!ok) printf(n錯(cuò)誤日期輸入有誤!請(qǐng)重新輸入!); while(!ok); printf(n指定車次嗎?(1-是,0-否):); scanf(%d,&ok);

17、if(ok) search_date(search()-head,d); else search_date_all(root,d); break; case 4:main();break; default:printf(n錯(cuò)誤功能號(hào)輸入有誤!自動(dòng)返回上級(jí)菜單n.); break; case 4: printf(nn售票記錄一覽n); for(i=0;in;i+) printf(=); printf(nt1.僅瀏覽車次); printf(nt2.指定車次已售票記錄); printf(nt3.所有車次已售票記錄); printf(nt4.測(cè)試:先序遍歷車次); printf(nt5.返回上級(jí)菜單n

18、); for(i=0;ihead); printf(n); break; case 3: printf(n+所有車次已售票記錄n); if(root=null) printf(錯(cuò)誤無(wú)車次紀(jì)錄!); elseinorder_all(root);printf(n); break; case 4: printf(n+測(cè)試:先序遍歷車次n); if(root=null) printf(錯(cuò)誤無(wú)車次紀(jì)錄!); elsepreorder(root);printf(n); break; case 5:main();break; default:printf(n錯(cuò)誤功能號(hào)輸入有誤!自動(dòng)返回上級(jí)菜單n.); br

19、eak; case 5:exit(0); default:printf(n錯(cuò)誤功能號(hào)輸入有誤!請(qǐng)重新輸入!); main(); void inorder_all(tnode *ptr)if(ptr!=null) inorder_all(ptr-lchild); printf(%d:n,ptr-data); print_c_all(ptr-head); printf(n); inorder_all(ptr-rchild); void inorder(tnode *ptr)if(ptr!=null) inorder(ptr-lchild); printf(%dt,ptr-data); inorde

20、r(ptr-rchild); void preorder(tnode *ptr)if(ptr!=null) printf(%dt ,ptr-data); preorder(ptr-lchild); preorder(ptr-rchild); void print_c(cnode *tkt) if(tkt!=null) printf(t%dt%dt%d-%d-%dn,tkt-no,tkt-id,tkt-date.x,tkt-date.y,tkt-date.z); void print_c_all(cnode *head) int i=0,j=0; if(head=null)printf(n記錄為

21、空!n);return; for(i=0;in;i+) printf(=); printf(nnot票號(hào)t購(gòu)票者證件號(hào)t購(gòu)票日期(年-月-日)n); for(i=0;inext; printf(n); for(i=0;in;i+) printf(-); printf(n總計(jì) %d 條記錄n,j); for(i=0;in;i+) printf(=); printf(n); void create()int n,i;int kmax;printf(n您所希望增加車次的數(shù)量:);scanf(%d,&n);for(i=0;in;i+) printf(新增第%d列車次:,i+1); scanf(%d,&

22、ki);for(i=0;idata=m; root-lchild=root-rchild=null; root-head=null; else p1=root; while(m!=p1-data) if(mdata)&(p1-lchild!=null) p1=p1-lchild; else if(mp1-data)&(p1-rchild!=null) p1=p1-rchild; else if(mdata)&(p1-lchild=null) p2=(tnode *)malloc(sizeof(tnode); p2-data=m; p2-lchild=p2-rchild=null; p2-hea

23、d=null; p1-lchild=p2; return; else if(mp1-data)&(p1-rchild=null) p2=(tnode *)malloc(sizeof(tnode); p2-data=m; p2-lchild=p2-rchild=null; p2-head=null; p1-rchild=p2; return; printf(n錯(cuò)誤未能成功增加車次%d,車次號(hào) %d 已存在!,m,m); tnode *search() int key; tnode *p; p=root; printf(n輸入您所要查找的車次編號(hào):); scanf(%d,&key); while(

24、p!=null&p-data!=key) if(keydata)p=p-lchild; else if(keyp-data)p=p-rchild; if(p=null) printf(n該車次不存在!); return(p); void del() int key; tnode *p1,*p2,*p3,*temp; p1=p2=root; p3=temp=null; printf(n請(qǐng)輸入您想要取消的車次編號(hào):); scanf(%d,&key); while(p2!=null&p2-data!=key) if(keydata)p1=p2;p2=p2-lchild; else if(keyp2-

25、data)p1=p2;p2=p1-rchild; if(p2=null)printf(n錯(cuò)誤該車次不存在!返回上級(jí)菜單n.);return; else if(p2-lchild=null&p2-rchild=null) if(p1-lchild=p2) p1-lchild=null; if(p1-rchild=p2) p1-rchild=null; temp=p2; if(root=p2) temp=root;root=null; else if(p2-rchild=null) temp=p2-lchild; p2-data=temp-data; p2-lchild=temp-lchild;

26、p2-rchild=temp-rchild; else if(p2-lchild=null) temp=p2-rchild; p2-data=temp-data; p2-lchild=temp-lchild; p2-rchild=temp-rchild; else p3=p2; temp=p2-lchild; while(temp-rchild!=null)p3=temp;temp=temp-rchild; p2-data=temp-data; if(p3=p2) p3-lchild=temp-lchild; else p3-rchild=temp-lchild; free(temp); pr

27、intf(車次 %d 已取消!nn,key); cnode *insert_c(cnode *head) cnode *k,*p; k=(cnode *)malloc(sizeof(cnode); do printf(n車票編號(hào):); scanf(%d,&k-no); p=search_c(head,k-no); if(p!=null) printf(n錯(cuò)誤該票已被購(gòu)買!請(qǐng)重新選擇!n); while(p!=null); printf(購(gòu)票者證件號(hào):); scanf(%d,&k-id); printf(購(gòu)票日期(格式:yy-mm-dd):); scanf(%d-%d-%d,&k-date.x,

28、&k-date.y,&k-date.z); k-next=head; head=k; return(head); cnode *insert_c_more(cnode *head) int n,i; printf(n請(qǐng)輸入批量新增售票記錄數(shù):); fflush(stdin); scanf(%d,&n); for(i=0;iid!=id)s=temp;temp=temp-next; print_c(temp); if(temp!=null) return(s); else return null; void search_c_id(cnode *head,int id) cnode *s,*he

29、ad_s; s=head_s=null; if(head=null) printf(無(wú)該證件號(hào)紀(jì)錄!n); while(head!=null) if(head-id=id) s=(cnode *)malloc(sizeof(cnode); s-no=head-no;s-id=head-id;s-date=head-date; s-next=head_s;head_s=s; head=head-next; print_c_all(head_s); printf(n); void search_c_id_all(tnode *ptr,int id) if(ptr!=null) search_c_i

30、d_all(ptr-lchild,id); printf(n車次:%dn,ptr-data); search_c_id(ptr-head,id); search_c_id_all(ptr-rchild,id); void search_date(cnode *head,time t) cnode *s,*head_s; s=head_s=null;while(head!=null) if(t.x=head-date.x) if(t.y=head-date.y) if(t.z=head-date.z) s=(cnode *)malloc(sizeof(cnode); s-no=head-no;s-id=head-id;s-date=head-date; s-next=head_s;head_s=s; head=head-next; print_c_all(head_s); prin

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論