版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
南京信息工程大學(xué)數(shù)據(jù)結(jié)構(gòu)實習(xí)報告PAGEPAGE18濱江學(xué)院數(shù)據(jù)庫系統(tǒng)課程設(shè)計報告(2014--2015年度第一學(xué)期)課程名稱:數(shù)據(jù)庫系統(tǒng)課程設(shè)計題目:飛機訂票系統(tǒng) 院系:計算機科學(xué)與技術(shù)系班級:計算機科學(xué)與技術(shù)1班學(xué)號: 20122308032姓名:鄭國秋 指導(dǎo)教師:李振宏設(shè)計周數(shù):兩周日期:2014年12月13日1.需求分析1.1課程設(shè)計目的(1)了解并掌握算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力;(2)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;(3)提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;1.2系統(tǒng)功能需求分析本程序主要用于機票的管理,甩以提供了以下功能,行班信息輸入輸出保存、航線查詢、訂票,退票,和修改航班信息。創(chuàng)建航班信息:包括航班號、起飛時間、降落時間、起飛抵達(dá)城市、航班票價、及票價的折扣,票數(shù)等信息.錄入的信息應(yīng)該保存在一個文件里。瀏覽航班信息:通過瀏覽系統(tǒng),客戶可以根據(jù)自己時間、金錢等多方面的因素選擇適合自己的航班。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。查詢航班信息:可通過航班號查詢,可通過飛機終點站查詢,也可以按航線查詢。刪除航班信息:可通過航班號刪除,也可以按航線刪除。添加航班信息:按添加的航班數(shù)量依次添加航班信息訂票:可以訂票,如果該航班已經(jīng)無票,可以推薦相關(guān)航班退票:不滿意所訂的票時可進(jìn)行退票1.3基本功能模塊飛機票管理系統(tǒng)飛機票管理系統(tǒng)修改航班信息訂票退票添加航班信息刪除航班信息查找修改航班信息訂票退票添加航班信息刪除航班信息查找航班信息瀏覽航班信息創(chuàng)建航班信息2.概要設(shè)計2.1涉及到的數(shù)據(jù)結(jié)構(gòu)typedefstructflightnode//定義結(jié)構(gòu)體數(shù)組{ intnum;//航班號 charstart[20];//起始城市 charover[20];//終點城市charStime[10];//起始時間harEtime[10]; intPrice;intDiscount;//折扣 intcount;//機票數(shù)structflightnode*next;}NODE;2.2主函數(shù)模塊。1)voidmain();2)用initlist(&h)函數(shù)和menu()函數(shù),初始化函數(shù)和顯示主界面2.3創(chuàng)建航班信息模塊1)原形:voidcreat();2)模塊是對程序中的create()函數(shù)和save()函數(shù)的詳細(xì)說明——鏈表的存儲結(jié)構(gòu),對該創(chuàng)建的鏈表調(diào)用save()函數(shù),存儲到數(shù)據(jù)文件中去2.4瀏覽航班信息模塊1)函數(shù)原形:voidprint();2)功能:輸出航班信息2.5修改航班信息模塊1)函數(shù)原形:voidchange()2)功能:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件2.6查找航班信息模塊1)函數(shù)原形:NODE*search():查找航班信息數(shù)據(jù)2)功能:由于航班的錄入和保存是由鏈表存儲結(jié)構(gòu)進(jìn)行的,所以此查詢就可通過鏈表對該文件進(jìn)行查看或者查詢,查詢我們可根據(jù)航班號和航班抵達(dá)的城市和航線匹配查詢,在查詢中將需要查詢的航班號no和文件閱讀時指針?biāo)傅闹祅um進(jìn)行比較,而按抵達(dá)城市查找則利用函數(shù)strcmp(p->next->start,name1)若匹配則輸出;2.7刪除航班信息模塊1)函數(shù)原形:voiddel()2)功能:選擇按什么方式刪除,然后按該方式刪除2.8添加航班信息模塊1)函數(shù)原形:voidadd();2)功能:按添加的航班數(shù)量依次添加航班信息2.9訂票信息模塊1)函數(shù)原形:intbook_tickets()2)功能:先根據(jù)search()函數(shù)查詢要訂票的航班,在訂票時應(yīng)先按乘客想要定的航班號或者抵達(dá)城市或航線查詢,并按乘客欲定的票的數(shù)目與查詢數(shù)目進(jìn)行比較,若訂票的票數(shù)小于該航班票數(shù),則輸出訂票成功,,且在整個定票系統(tǒng)中,所有的定票都用鏈表進(jìn)行存儲管理。2.91塊1)函數(shù)原形:inttuipiao()2)功能:在退票系統(tǒng)中即對航班票的數(shù)據(jù)文件進(jìn)行管理,所以可先按照查詢航班票的方法,3.詳細(xì)設(shè)計3.1模塊流程圖輸出界面開始輸出界面開始選擇操作選擇操作結(jié)束按航班號或航線退票信息退出選擇0選擇8選擇7訂票信息添加航班信息刪除航班信息查找航班信息選擇6選擇5選擇4選擇3修改航班信息瀏覽航班信息選擇2選擇1創(chuàng)建航班信息結(jié)束按航班號或航線退票信息退出選擇0選擇8選擇7訂票信息添加航班信息刪除航班信息查找航班信息選擇6選擇5選擇4選擇3修改航班信息瀏覽航班信息選擇2選擇1創(chuàng)建航班信息按航班或終點站或航線按航班或終點站或航線4.系統(tǒng)測試4.1班信息文件:4.2班信息:4.3班信息:4.4找航班信息:4.5刪除航班信息:4.6添加航班信息:4.7訂票信息:4.8退票信息:4.9退出:6.源程序及系統(tǒng)文件使用說明程序清單#include<stdio.h>//標(biāo)準(zhǔn)輸入、輸出頭文件#include<string.h>//包含字符串函數(shù)處理頭文件#include<stdlib.h>//包含動態(tài)存儲與釋放函數(shù)頭文件typedefstructflightnode//定義結(jié)構(gòu)體數(shù)組{ intnum;//航班號 charstart[20];//起始城市 charover[20];//終點城市charStime[10];//起始時間charEtime[10]; intPrice;floatDiscount;//折扣 intcount;//機票數(shù) structflightnode*next;}NODE;#definePRINT"%4d%9.6s%9.6s%9.6s%9.6s%9d%.1f%9d\n",p->next->num,p->next->start,p->next->over,p->next->Stime,p->next->Etime,p->next->Price,p->next->Discount,p->next->count//定義輸出格式voidcreat();//創(chuàng)建航班信息文件voidprint();//輸出航班信息voidsave();//保存航班信息intread();//讀取航班信息NODE*search();//查找航班信息voiddel();//刪除航班信息intbook_tickets();//訂票信息inttuipiao();//退票信息voidchange();//修改信息voidmenu();//菜單voidinitlist(NODE**);//初始化函數(shù)voidadd();//添加信息函數(shù)NODE*h=NULL;//建立全局變量,存鏈表頭指針intm=0;//航班數(shù)量voidinitlist(NODE**h){ *h=(NODE*)malloc(sizeof(NODE)); (*h)->next=NULL;}voidcreat()//打印模塊程序{ FILE*fp; NODE*p=NULL;//定義移動指針 inti,flightnum; chary; p=h; if((fp=fopen("air.dat","rb"))!=NULL)//打開文件,并判斷是否出錯 { printf("信息文件已經(jīng)存在,不必創(chuàng)建!按任意鍵后回車返回\n\n\n");//打印出錯提示 fclose(fp); fflush(stdin); getchar(); return; } p=h;printf("請輸入要輸入的航班數(shù)量:");fflush(stdin);//清除文件緩沖區(qū) scanf("%d",&flightnum);//讀取航班數(shù) system("cls");//清屏 printf("請依次輸入航班信息:\n\n");//打印提示信息 printf("\n"); for(i=0;i<flightnum;i++) { p->next=(NODE*)malloc(sizeof(NODE)); p->next->next=NULL; printf("航班號:"); fflush(stdin); scanf("%d",&p->next->num);//讀取航班號 printf("起始站:"); fflush(stdin); scanf("%10s",&p->next->start);//讀取起飛城市 printf("終點站:"); fflush(stdin); scanf("%10s",&p->next->over);//讀取抵達(dá)城市 printf("起始時間:"); fflush(stdin); scanf("%10s",&p->next->Stime);//讀取起飛時間 printf("抵達(dá)時間:"); fflush(stdin); scanf("%10s",&p->next->Etime);//讀取抵達(dá)時間printf("航班票價:"); fflush(stdin); scanf("%d",&p->next->Price);//讀取航班票價 printf("票價折扣:"); fflush(stdin); scanf("%10f",&p->next->Discount);//讀取票價折扣 printf("機票數(shù):",m); fflush(stdin); scanf("%d",&p->next->count);//讀取機票數(shù) printf("第%d個信息已經(jīng)輸完\n",i+1); p=p->next; m++; } printf("信息輸入完畢,是否存盤:存盤按0,不存盤按其他任意鍵"); fflush(stdin); y=getchar(); if(y=='0') { save();//將結(jié)構(gòu)體信息存盤 print();//輸出輸入的航班信息 } }voidsave()//保存模塊程序{ NODE*p=NULL;//定義移動指針 FILE*fp,*fp1;//定義指向文件指針 p=h; if((fp=fopen("air.dat","wb"))==NULL)//打開文件并判斷是否出錯 { printf("創(chuàng)建文件失敗!\n\n\n");//打印出錯提示 fflush(stdin); getchar(); return; } if((fp1=fopen("num.dat","wb"))==NULL)//打開文件并判斷是否出錯 { printf("創(chuàng)建文件失敗!\n\n\n");//打印出錯提示 fflush(stdin); getchar(); return; } while(p->next!=NULL) { if(fwrite(p->next,sizeof(NODE),1,fp)==0)//向文件寫入數(shù)據(jù),并判斷是否出錯 { printf("向文件輸入數(shù)據(jù)失敗!\n\n\n"); break; } elsep=p->next; } fprintf(fp1,"%d",m);//按指定的格式輸出到fp1所指定的文件中 fclose(fp);//關(guān)閉文件fclose(fp1);//關(guān)閉文件}intread()//從文件讀取信息模塊{ FILE*fp,*fp1;//定義文件指針 NODE*p=NULL; inti; initlist(&h); p=h; if((fp=fopen("air.dat","rb"))==NULL)//打開文件,并判斷是否出錯 { printf("出錯,請檢查信息文件是否存在,按任意鍵后回車返回住菜單\n\n\n");//打印出錯提示 fflush(stdin); getchar(); return0; } if((fp1=fopen("num.dat","rb"))==NULL)//打開文件并判斷是否出錯 { printf("創(chuàng)建文件失敗!\\n\n\n");//打印出錯提示 fflush(stdin); getchar(); return0; } fscanf(fp1,"%d",&m);//從fp1所指定的文件中按給定的格式將輸入數(shù)據(jù)送內(nèi)存中 fclose(fp1);//關(guān)閉文件 printf("\n總共%d個航班信息\n",m); for(i=0;i<m;i++) { p->next=(NODE*)malloc(sizeof(NODE)); p->next->next=NULL; fread(p->next,sizeof(NODE),1,fp);//從文件中讀取信息 p=p->next; } fclose(fp);//關(guān)閉文件 return1;}voidprint()//打印模塊{ NODE*p=NULL; if(read()==0)return;//調(diào)用讀取文件函數(shù),并判斷是否文件存在。 p=h; printf("═══════════════════════════════════════\n"); printf("航班號起始站終點站起始時間抵達(dá)時間航班票價票價折扣票數(shù)\n"); while(p->next!=NULL) { printf(PRINT);//打印信息 p=p->next; } printf("═══════════════════════════════════════"); printf("\n\n\n\n\n\n請按任意鍵后回車結(jié)束返回上層菜單:\n"); fflush(stdin); getchar();}NODE*search()//查詢模塊{ NODE*p=NULL; NODE*x=NULL;/*用于記錄查詢到的記錄*/ charname1[20]; charname2[20]; charii[10]; intn,no; intflag=0; if(read()==0)return0; p=h; do { printf("請選擇查找方式:\n\n");//打印查詢方式菜單printf("\n"); printf("1.按航班號查找\n\n" "2.按終點站查找\n\n" "3.按航線查找\n\n" "0.返回\n\n"); printf("請在0-3中選擇:\n\n" "按其他鍵后回車返回主菜單:\n\n\n\n\n"); fflush(stdin); scanf("%d",&n);//讀取查找方式 if(n==0) break; switch(n) { case1: printf("請輸入航班號:\n"); fflush(stdin); scanf("%d",&no);//航班號 break; case2: printf("請輸入終點站名稱:\n"); fflush(stdin); scanf("%10s",name2);//讀取終點站 break; case3: printf("請輸入起始站名稱:\n"); fflush(stdin); scanf("%10s",name1);//讀取起始站 printf("請輸入終點站名稱:\n"); fflush(stdin); scanf("%10s",name2);//終點站 break; default:printf("請選擇有效查詢方式!\n\n\n"); } while(p->next!=NULL) { if(strcmp(p->next->start,name1)==0||strcmp(p->next->over,name2)==0)//按終點站起始站判斷輸出條件 { printf("\n查找航班信息成功!\n\n\n"); printf("航班號起始站終點站起始時間抵達(dá)時間航班票價票價折扣票數(shù)\n"); printf(PRINT);//打印信息 x=p->next; flag=1; break; } if(p->next->num==no)//按航班號判斷輸出條件 { printf("\n查找航班信息成功!\n\n\n"); printf("航班號起始站終點站起始時間抵達(dá)時間航班票價票價折扣票數(shù)\n"); printf(PRINT);//打印信息 x=p->next; flag=1; break; } p=p->next; } if(!flag)printf("查找失敗!:\n\n\n\n\n"); printf("\n\n\n" "是否重新查找?\n" "請鍵入yes或no\n" "后回車鍵結(jié)束\n" "\n\n\n\n\n"); no=0;//將航班號賦值為0 p=h; flag=0; fflush(stdin); scanf("%10s",ii); }while(strcmp(ii,"yes")==0);//判斷結(jié)束 return(x);}voidadd(){ intflightnum; inti,y; NODE*p=NULL; i=read(); if(i==0)return; p=h; while(p->next!=NULL)p=p->next; printf("請輸入要輸入的航班數(shù)量:"); fflush(stdin); scanf("%d",&flightnum);//讀取航班數(shù) system("cls"); printf("請依次輸入航班信息:\n\n");//打印提示信息 printf("\n"); for(i=0;i<flightnum;i++) { p->next=(NODE*)malloc(sizeof(NODE)); p->next->next=NULL; printf("航班號:"); fflush(stdin); scanf("%d",&p->next->num);//讀取航班號 printf("起飛城市:"); fflush(stdin); scanf("%10s",&p->next->start);//讀取起飛城市 printf("抵達(dá)城市:"); fflush(stdin); scanf("%10s",&p->next->over);//讀取抵達(dá)城市 printf("起飛時間:"); fflush(stdin); scanf("%10s",&p->next->Stime);//讀取起飛時間 printf("抵達(dá)時間:"); fflush(stdin); scanf("%10s",&p->next->Etime);//讀取抵達(dá)時間printf("航班票價:"); fflush(stdin); scanf("%d",&p->next->Price);//讀取航班票價 printf("票價折扣:"); fflush(stdin); scanf("%10f",&p->next->Discount);//讀取票價折扣printf("機票數(shù):",m); fflush(stdin); scanf("%d",&p->next->count);//讀取機票數(shù) printf("第%d個信息已經(jīng)輸完\n",i+1); p=p->next; m++; } printf("信息輸入完畢,是否存盤:存盤按0,不存盤按其他任意鍵后回車"); fflush(stdin); scanf("%d",&y); if(y==0) { save();//將結(jié)構(gòu)體信息存盤 print();//輸出輸入的航班信息 }}voiddel()//刪除模塊{ NODE*p=NULL; NODE*temp=NULL; charname1[20]; charname2[20]; charii[10]; intno,n; intflag=0; if(read()==0)return;;//調(diào)用讀取函數(shù) do { printf("請選擇刪除以方式回車鍵結(jié)束:\n\n"); printf("*1.按航班號刪除\n\n" "*2.按航線刪除\n\n" "*0.返回\n\n"); printf("請在0-2中選擇以回車鍵結(jié)束:\n\n\n"); fflush(stdin); scanf("%d",&n);//讀取刪除方式 if(n==0) break;//跳出循環(huán) switch(n) { case1: printf("航班號:\n"); fflush(stdin); scanf("%d",&no);//讀取航班號 p=h; break;//跳出循環(huán) case2: printf("起始站名稱:\n"); fflush(stdin); scanf("%10s",name1);//讀取起始站 printf("終點站名稱:\n"); fflush(stdin); scanf("%10s",name2);//讀取終點站 p=h; break;//跳出循環(huán) default:printf("請選擇有效的選項:\n"); continue; } while(p->next!=NULL) {if(p->next->num==no||(strcmp(p->next->start,name1)==0&&strcmp(p->next->over,name2)==0)).//判斷輸入信息是否存在 { temp=p->next->next; p->next=temp; m--; flag=1; printf("刪除成功!剩余%d條信息\n\n\n\n\n",m); break; } p=p->next; } if(!flag)printf("沒有這個信息!\n\n\n\n\n"); printf("是否繼續(xù)刪除\n" "請鍵入yes或no以回車鍵結(jié)束\n"); fflush(stdin); scanf("%10s",ii);//讀取是否繼續(xù)信息 save();//調(diào)用存儲函數(shù) if(!strcmp(ii,"yes"))//判斷是否繼續(xù)刪除 printf("請按任意鍵后回車結(jié)束返回上層菜單:\n\n\n\n\n\n"); break; }while(1);//判斷結(jié)束 }intbook_tickets()//訂票模塊{ intn; chara[10]; NODE*x=NULL; NODE*p=NULL; do { printf("查找要訂票的航班:\n"); x=search();//調(diào)用查詢模塊 if(x!=NULL) { printf("請輸入您要訂的機票數(shù)以回車鍵結(jié)束:\n"); fflush(stdin); scanf("%d",&n);//讀取所訂機票數(shù) } elsereturn(0); if(n<0) { printf("請輸入有效的機票數(shù)!\n\n\n\n\n\n");//判斷機票數(shù)是否出錯 break; } if(x->count!=0&&x->count>=n)//判斷是否出錯 { x->count=x->count-n; save();//調(diào)用保存函數(shù) printf("訂票成功!\n\n"); break; } if(x->count<n)//判斷是否出錯 { printf("該航班機票已被定完,請預(yù)定其他航班:\n\n\n\n\n\n"); break; } printf("是否繼續(xù)?請輸入yes或no以回車鍵結(jié)束:\n\n\n\n\n\n");//判斷是否繼續(xù)訂票 fflush(stdin); scanf("%10s",a); }while(!strcmp(a,"yes"));//判斷結(jié)束 return(1);}inttuipiao()//退票模塊{ intn; chara[10]; NODE*p=NULL; NODE*x=NULL; do { printf("查找要退票的航班\n"); x=search();//調(diào)用查詢模塊 if(x!=NULL) { printf("請輸入您要退的機票數(shù)目:\n"); fflush(stdin); scanf("%d",&n);//輸入所退票數(shù) } elsereturn(0); while(n<0)//判斷票數(shù)是否有效 { printf("請輸入有效的機票數(shù)!\n\n\n\n\n\n"); fflush(stdin); scanf("%d",&n); } x->count=x->count+n; save();//調(diào)用保存模塊 printf("退票成功!\n\n\n\n\n"); printf("是否繼續(xù)退票?請鍵入yes或no以回車鍵結(jié)束:\n\n\n");//判斷是否繼續(xù)退票 fflush(stdin); scanf("%10s",a); }while(!strcmp(a,"yes"));//判斷并跳出循環(huán) return(1); fflush(stdin); getchar();}voidchange()//修改模塊{ charj[10]; NODE*x=NULL; NODE*p=NULL; if(read()==0)return; do { x=search(); if(x!=NULL) { printf("請重新輸入本條信息\n\n\n\n\n"); printf("航班號:\n"); fflush(stdin); scanf("%d",&x->num);//讀取航班號 printf("起始站:\n"); fflush(stdin); scanf("%10s",&x->start);//讀取起始站 printf("終點站:\n"); fflush(stdin); scanf("%10s",&x->over);//讀取終點站 printf("起始時間:\n"); fflush(stdin); scanf("%10s",&x->Stime);//讀取起始時間printf("抵達(dá)時間:\n"); fflush(stdin); scanf("%10s",&x->Etime);//讀取抵達(dá)時間 printf("航班票價:\n"); fflush(stdin); scanf("%d",&x->Price);//讀取航班票價printf("票價折扣:\n"); fflush(stdin); scanf("%10f",&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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅中醫(yī)藥大學(xué)《安全評價理論與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 超市購物小學(xué)生課件
- 七年級生物上冊第三單元第六章愛護植被綠化祖國教案新版新人教版
- 七年級道德與法治上冊第一單元成長的節(jié)拍第二課學(xué)習(xí)新天地第2框享受學(xué)習(xí)教案新人教版
- 三年級數(shù)學(xué)上冊七分?jǐn)?shù)的初步認(rèn)識一第2課時認(rèn)識幾分之幾教案蘇教版
- 三年級數(shù)學(xué)下冊一位置與方向第4課時簡單的路線圖教案新人教版
- 三年級科學(xué)下冊第三單元固體和液體4把液體倒進(jìn)水里去教案蘇教版
- 小學(xué)生安全會議課件下載
- 《英文歌曲介紹》課件
- 鞋廠培訓(xùn)課件
- 網(wǎng)站建設(shè)合同范本8篇
- 污水站安全培訓(xùn)
- 教育機構(gòu)年度總結(jié)和來年規(guī)劃
- 2024年工廠股權(quán)轉(zhuǎn)讓盡職調(diào)查報告3篇
- 創(chuàng)意寫作與文學(xué)欣賞
- 高空伐樹作業(yè)施工方案
- 新媒體用戶行為研究-洞察分析
- 醫(yī)療器械考試題及答案
- 初三家長會數(shù)學(xué)老師發(fā)言稿
- 2025版國家開放大學(xué)法學(xué)本科《知識產(chǎn)權(quán)法》期末紙質(zhì)考試總題庫
- 醫(yī)藥銷售培訓(xùn)課程
評論
0/150
提交評論