




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)報(bào)告課程名稱應(yīng)用軟件實(shí)踐設(shè)計(jì)題目火車票售票系統(tǒng)專業(yè)、班級(jí)學(xué)號(hào)姓名指導(dǎo)教師設(shè)計(jì)時(shí)間2021年9月16日--2021年10月11日2021年10月11日引言〔簡(jiǎn)要說(shuō)明設(shè)計(jì)題目的目的、意義、內(nèi)容、主要任務(wù)等〕隨著市場(chǎng)經(jīng)濟(jì)的不斷飛速開(kāi)展,交通道路環(huán)境的不斷改善,人們的出行次數(shù)不斷增多,人口流動(dòng)頻繁,數(shù)量不斷加大,車站信息量迅猛增長(zhǎng),車站售票售票系統(tǒng)在人們的日常生活中發(fā)揮著越來(lái)越重要的作用。本系統(tǒng)實(shí)現(xiàn)了線路信息,汽車信息,票務(wù)信息的查詢和售票,滿足人們的需求。編寫(xiě)目的掌握數(shù)據(jù)庫(kù)設(shè)計(jì)原理及相關(guān)軟件的使用。實(shí)現(xiàn)方便、快速售票;是用戶準(zhǔn)確了解售票情況,提供多種查詢和統(tǒng)計(jì)功能;實(shí)現(xiàn)系統(tǒng)的平安性設(shè)置,使系統(tǒng)本身具有一定的維護(hù)功能。背景系統(tǒng)名稱:火車票售票系統(tǒng)本工程的提出者及開(kāi)發(fā)者是客戶售票系統(tǒng)軟件開(kāi)發(fā)小組,用戶是火車站售票員本工程立足于售票實(shí)際,著眼于未來(lái)開(kāi)展,建成符合標(biāo)準(zhǔn)化協(xié)議、通用性較強(qiáng)、實(shí)用的系統(tǒng),以提高客戶信息的現(xiàn)代化售票水平,實(shí)現(xiàn)信息資源的共享。系統(tǒng)概述1、功能簡(jiǎn)介本軟件是一個(gè)簡(jiǎn)單的火車票訂票售票系統(tǒng),軟件窗口為DOS頁(yè)面?;疖嚻庇喥笔燮毙畔⑹燮毕到y(tǒng)的功能主要是實(shí)現(xiàn)火車票訂票的信息化售票。通過(guò)火車票訂票售票系統(tǒng),火車站售票人員可以實(shí)現(xiàn)對(duì)火車票信息的輸入、訂票、查找、修改和查詢等操作。并且在原來(lái)根本要求功能的根底上新增了:增加數(shù)據(jù)功能。本系統(tǒng)最大的優(yōu)點(diǎn)就是操作簡(jiǎn)便快捷等。設(shè)計(jì)思路將火車票信息定義為一個(gè)ticket類,在類中包含私有數(shù)據(jù)成員intnum;stringorigin;stringdestination;stringstart;stringend;intprice;intcount;分別表示車次號(hào)、出發(fā)城市、目的城市、出發(fā)時(shí)間、到達(dá)時(shí)間、票價(jià)、票數(shù)。公有成員函數(shù)包括set(),book(),search(),change(),add(),display(),分別用來(lái)實(shí)現(xiàn)對(duì)學(xué)生信息的數(shù)據(jù)初始錄入、訂購(gòu)火車票、查詢數(shù)據(jù)、修改數(shù)據(jù)、增加數(shù)據(jù),顯示所有數(shù)據(jù)功能。然后定義了一個(gè)menu()菜單函數(shù),使功能菜單顯示在運(yùn)行窗口以提示用戶如何進(jìn)行操作。主函數(shù)是一個(gè)程序必不可少的,在主函數(shù)中,使用一個(gè)switch語(yǔ)句來(lái)選擇調(diào)用主菜單中的各個(gè)功能函數(shù)。正文〔課程設(shè)計(jì)的主要內(nèi)容,包括實(shí)驗(yàn)與觀測(cè)方法和結(jié)果、儀器設(shè)備、計(jì)算方法、編程原理、數(shù)據(jù)處理、設(shè)計(jì)說(shuō)明與依據(jù)、加工整理和圖表、形成的論點(diǎn)和導(dǎo)出的結(jié)論等。正文內(nèi)容必須實(shí)事求是、客觀真切、準(zhǔn)確完備、符合邏輯、層次清楚、語(yǔ)言流暢、結(jié)構(gòu)嚴(yán)謹(jǐn),符合各學(xué)科、專業(yè)的有關(guān)要求?!吃诒菊轮校饕墙榻B各個(gè)功能函數(shù)的設(shè)計(jì)思路和實(shí)現(xiàn)方法。3.1初始錄入功能此函數(shù)實(shí)現(xiàn)的功能主要是,對(duì)火車票信息的初始化錄入功能,在初始時(shí),文件中沒(méi)有任何數(shù)據(jù),可以通過(guò)次函數(shù)輸入任意個(gè)火車票的信息,在輸入時(shí)通過(guò)一個(gè)if條件語(yǔ)句來(lái)實(shí)現(xiàn)控制循環(huán),當(dāng)輸入的出發(fā)城市是“0〞時(shí)使用break語(yǔ)句就跳出循環(huán),即停止輸入火車票信息。在此函數(shù)中使用文件處理的方式先建立一個(gè)文件輸出流對(duì)象,以寫(xiě)的方式翻開(kāi)f1.txt文件,使輸入的車票信息都寫(xiě)入文件。3.2訂票函數(shù)此函數(shù)實(shí)現(xiàn)的功能主要是,輸入目的城市顯示所有相關(guān)信息,按1或2可實(shí)現(xiàn)新增功能票價(jià)從低到高和新增功能票數(shù)從多到少顯示出來(lái),可根據(jù)自己情況選擇相應(yīng)車次,此時(shí)會(huì)顯示剩余票數(shù),輸入個(gè)人信息〔ID和姓名〕及訂票數(shù)即可完成訂票。3.3查找函數(shù)在查詢功能中,可以按多條件查詢,本系統(tǒng)分為兩個(gè)查詢條件,即按車次查詢和按目的城市查詢。使用if語(yǔ)句來(lái)選擇查詢條件。3.3.1按車次查詢根據(jù)提示信息輸入車次號(hào)后,然后使用一個(gè)for循環(huán)語(yǔ)句,從第一個(gè)火車號(hào)開(kāi)始檢索,如果該次火車的車次號(hào)和輸入的車次號(hào)相等,那么輸出該次火車的信息,當(dāng)無(wú)查詢結(jié)果時(shí),會(huì)輸出一條提示信息“無(wú)此車次!〞。3.3.2按目的城市查詢根據(jù)提示信息輸入目的城市后,然后使用一個(gè)for循環(huán)語(yǔ)句,從第一個(gè)目的城市開(kāi)始檢索,如果該目的城市和輸入的目的城市一樣,那么輸出該目的城市的信息,由于目的城市的名字有可能重復(fù)出現(xiàn),所以不能使用break語(yǔ)句跳出循環(huán),應(yīng)該從第一個(gè)目的城市開(kāi)始檢索直到最后一個(gè)目的城市。當(dāng)無(wú)查詢結(jié)果時(shí),會(huì)輸出一條提示信息“無(wú)此目的城市!〞。3.4修改函數(shù)此函數(shù)實(shí)現(xiàn)的功能主要是,修改一次火車票的信息。應(yīng)用的思想是將火車票的信息重新寫(xiě)入文件的方法,將原有數(shù)據(jù)覆蓋。3.5增加函數(shù)此函數(shù)實(shí)現(xiàn)的功能主要是,添加屢次火車的信息,也就是說(shuō)調(diào)用一次這個(gè)函數(shù)能添加屢次火車的信息,直至按0退出循環(huán)。在此函數(shù)中也使用文件處理的方式,但使用的是以追加的方式翻開(kāi)文件,使輸入的火車票信息寫(xiě)在文件里原有信息的后面。3.6顯示函數(shù)此函數(shù)實(shí)現(xiàn)的功能主要是,顯示所有車次的信息。先是從文件中讀取火車的信息,然后在輸出到顯示窗口中。用一個(gè)for循環(huán)語(yǔ)句,來(lái)把所有火車的信息都輸出2.7退出系統(tǒng)當(dāng)輸入“0〞時(shí),就能退出系統(tǒng),這是通過(guò)while語(yǔ)句來(lái)控制實(shí)現(xiàn)的。3.7代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<time.h>
#include<conio.h>
#include<string.h>
const
int
MAX=20;
const
int
N=50;
const
int
MAXFILENAME=100;
enum
{FALSE,TRUE};
struct
time
{
int
hour;
int
minutes;
};
struct
ticket
{
char
SerialNumber[10];
struct
time
SetOut;
char
DeparturePoint[MAX];
char
TerminalPoint[MAX];
float
LastTime;
int
FixNumber;
int
FixedNumber;
}train[N];
int
RecordNumber;
-
int
FLAG=FALSE;
/**********************************************/
int
ShowMessage(void);
//載入原始數(shù)據(jù)
void
mainmenu(void);
//主菜單
void
InsertMessage(void);
//錄入班次信息
void
SearchMenu(void);
//查詢路線子菜單
void
SearchByNumber(void);
//按班次號(hào)查詢
void
SearchByAddress(void);
//按終點(diǎn)站查詢
void
cancle(void);//刪除數(shù)據(jù)
void
selection(ticket
*pa,int
n);//排序
void
TicketManagement(void);
//車票售出與退回
void
TicketOrder(void);
//售票
void
TicketDelete(void);
//退票
void
exit(void);
//退出該系統(tǒng)
VoidSaveRecord(ticket
x);
//儲(chǔ)存信息到文件中
/********************************************/
int
main(void)
{
do{
mainmenu();
}while(FLAG==FALSE);
return
0;
}
void
mainmenu(void)
{
system("mode
con:
cols=140
lines=130");
char
functionNumber;
printf("
火車票管理系統(tǒng)\n\n");
printf("============================================================================\n");
printf("1.錄入班次信息\t\n");printf("2.顯示所有車票信息列表\t\n");printf("3.查詢火車票數(shù)據(jù)\t\n");printf("4.刪除火車票數(shù)據(jù)記錄\t\n");printf("5.按行車時(shí)間排序\t\n");printf("6.售票與退票系統(tǒng)\t\n");printf("退出該系統(tǒng)\t\n");printf("============================================================================\n");printf("請(qǐng)選擇你所需要的功能:");scanf("%c",&functionNumber);switch(functionNumber){case'1':{InsertMessage();printf("\n按任意鍵回主菜單......\n");getchar();getchar();}break;case'2':{RecordNumber=ShowMessage();printf("\n按任意鍵回主菜單......\n");getchar();getchar();}break;case'3':{SearchMenu();printf("\n按任意鍵回主菜單......\n");getchar();getchar();}break;case'4':{cancle();printf("\n按任意鍵回主菜單......\n");getchar();getchar();}break;case'5':{selection(train,RecordNumber);printf("班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n");inti;for(i=0;i<RecordNumber;i++){printf("%s\t%d:%d\t\t",train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);printf("%s\t%s\t\t%.1f\t%d\t\t%d\n",train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);}printf("\n按任意鍵回主菜單......\n");getchar();getchar();}break;case'6':{TicketManagement();getchar();getchar();}break;case'7':{inti;FLAG=TRUE;for(i=0;i<RecordNumber;i++){SaveRecord(*(train+i));}exit();}break;default:{printf("輸入錯(cuò)誤,請(qǐng)確保你的輸入為1--7.\n");printf("按任意鍵回主菜單......\n");getchar();-getchar();}}//switchendsFLAG=FALSE;}voidInsertMessage(void){FILE*fp;charfilename[MAXFILENAME];inti;printf("請(qǐng)輸入文件名或者文件路徑名:");scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL){printf("文件%s不可讀,請(qǐng)確認(rèn)文件%s存在或者文件路徑正確.\n\n",filename,filename);mainmenu();}for(i=RecordNumber;!feof(fp)&&!ferror(fp);i++){fscanf(fp,"%s%d%d",&train[i].SerialNumber,&train[i].SetOut.hour,&train[i].SetOut.minutes);fscanf(fp,"%s%s%f%d%d",&train[i].DeparturePoint,&train[i].TerminalPoint,&train[i].LastTime,&train[i].FixNumber,&train[i].FixedNumber);}RecordNumber=i;/*******************************輸出更新后的訂票記錄************************************************************/printf("%s\t%d:%d\t\t",train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);printf("%s\t%s\t\t%.1f\t%d\t\t%d\n",train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);}}}voidSearchByAddress(void){inti;charAddress[MAX];printf("請(qǐng)輸入終點(diǎn)站的名稱:");scanf("%s",&Address);printf("班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n");for(i=0;i<RecordNumber;i++){//比照終點(diǎn)站記錄,找到并輸出if((strcmp(Address,train[i].TerminalPoint))==0){printf("%s\t%d:%d\t\t",train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);printf("%s\t%s\t\t%.1f\t%d\t\t%d\n",train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);}-}}voidcancle(void){SearchMenu();inti,j;charm[MAX];printf("請(qǐng)輸入要?jiǎng)h除的班次:");scanf("%s",&m);for(i=0;i<RecordNumber&&(strcmp(m,train[i].SerialNumber))!=0;i++){if(i==RecordNumber){printf("對(duì)不起,沒(méi)有這趟車\n");}}for(j=i;j<RecordNumber-1;j++){train[j]=train[j+1];}printf("刪除成功\n");}voidselection(ticket*pa,intn){inti,k,index;structtickettemp;for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++)if(pa[i].LastTime<pa[index].LastTime)index=i;if(index!=k){temp=pa[index];pa[index]=pa[k];pa[k]=temp;}}}voidTicketManagement(void){charfunctionNumber;system("modecon:cols=140lines=130");printf("訂票與退票菜單\n");printf("============================================================================\n");printf("1.訂票\t\n");printf("2.退票\t\n");printf("3.返回主菜單.\n");printf("============================================================================\n");printf("選擇你需要的功能:");scanf("%*c%c",&functionNumber);switch(functionNumber){-case'1':{TicketOrder();//getchar();//getchar();}break;case'2':TicketDelete();break;case'3':{getchar();mainmenu();}break;default:{printf("輸入錯(cuò)誤,請(qǐng)確保你的輸入為1--3.\n");printf("按任意鍵回主菜單......\n");getchar();getchar();mainmenu();}}}voidTicketOrder(void){SearchMenu();inti,j;chara[MAX];printf("請(qǐng)輸入要訂購(gòu)的車票的班次:");-scanf("%s",&a);printf("請(qǐng)輸入要訂購(gòu)的車票的張數(shù):");scanf("%d",&j);for(i=0;i<RecordNumber;i++){if((strcmp(a,train[i].SerialNumber))==0){if(train[i].FixedNumber<train[i].FixNumber){(train[i].FixedNumber)+=j;printf("你的訂票成功,請(qǐng)按時(shí)上車,謝謝使用!\n");printf("班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n");printf("%s\t%d:%d\t\t",train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);printf("%s\t%s\t\t%.1f\t%d\t\t%d\n",train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);}elseprintf("對(duì)不起,票已賣(mài)完\n");}}}voidTicketDelete(void){SearchMenu();inti,j;charb[MAX];printf("請(qǐng)輸入要退購(gòu)的車票的班次:");-scanf("%s",&b);printf("請(qǐng)輸入要退購(gòu)的車票的張數(shù):");scanf("%d",&j);for(i=0;i<RecordNumber;i++){if((strcmp(b,train[i].SerialNumber))==0){if(train[i].FixedNumber>=1){train[i].FixedNumber-=j;printf("退訂車票成功,謝謝使用!\n");printf("班次\t發(fā)車時(shí)間\t起點(diǎn)\t終點(diǎn)\t行車時(shí)間(小時(shí))\t額定載量\t已定票人數(shù)\n");printf("%s\t%d:%d\t\t",train[i].SerialNumber,train[i].SetOut.hour,train[i].SetOut.minutes);printf("%s\t%s\t\t%.1f\t%d\t\t%d\n",train[i].DeparturePoint,train[i].TerminalPoint,train[i].LastTime,train[i].FixNumber,train[i].FixedNumber);}elseprintf("對(duì)不起,今天的這趟車的票尚未賣(mài)出,無(wú)法完成退票!\n");}}}voidexit(void){printf("\n\n*********************謝謝使用本系統(tǒng),歡送下次繼續(xù)使用***********************\n");exit(0);}-voidSaveRecord(ticketx){FILE*fp;if((fp=fopen("add.txt","a"))==NULL){printf("翻開(kāi)文件%s失敗\n","add.txt");exit(-1);}fprintf(fp,"\n%s\t%d\t%d\t\t",x.SerialNumber,x.SetOut.hour,x.SetOut.minutes);fprintf(fp,"%s\t%s\t\t%.1f\t%d\t\t%d",x.DeparturePoint,x.TerminalPoint,x.LastTime,x.FixNumber,x.FixedNumber);}測(cè)試數(shù)據(jù)及其結(jié)果分析顯示的主菜單界面:主菜單:2.按5顯示全部信息:3.1增加前:按0退出:3.2增加后:進(jìn)入主菜單按3進(jìn)入修改按要求填寫(xiě)修改火車票115信息后:4.按4進(jìn)入查詢功能:按車次查詢進(jìn)入主菜單按2進(jìn)入買(mǎi)票功能6.訂票后票數(shù)會(huì)減去相應(yīng)的票數(shù)結(jié)論〔應(yīng)當(dāng)準(zhǔn)確、完整、明確精練;也可以在結(jié)論或討論中提出建議、設(shè)想、尚待解決問(wèn)題等?!吵鲥e(cuò)處理對(duì)策對(duì)于本程序的幾種可能的問(wèn)題進(jìn)行了分析,分別進(jìn)行了不同的處理。主要的問(wèn)題可能有:程序設(shè)計(jì)、調(diào)試過(guò)程中遇到的問(wèn)題:①在調(diào)試“修改功能〞時(shí),開(kāi)始時(shí)中選擇3,修改的車次不存在時(shí),再選6原先的數(shù)據(jù)不能再顯示出來(lái),且文本f1中也沒(méi)有記錄;故在if(c!=num[d]){cout<<"車次不存在"<<endl;}中參加for(i=0;i<N;i++){outfile<<num[i]<<"";outfile<<origin[i]<<"";outfile<<destination[i]<<"";outfile<<start[i]<<"";
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 隱性股東持股協(xié)議書(shū)
- 餐飲聯(lián)名露營(yíng)協(xié)議書(shū)
- 便利店代銷產(chǎn)品協(xié)議書(shū)
- 餐飲轉(zhuǎn)讓訂金協(xié)議書(shū)
- 項(xiàng)目外包服務(wù)協(xié)議書(shū)
- 門(mén)面贈(zèng)與父母協(xié)議書(shū)
- 出售天然砂石枓協(xié)議書(shū)
- 運(yùn)營(yíng)團(tuán)隊(duì)保密協(xié)議書(shū)
- 起訴撤銷調(diào)解協(xié)議書(shū)
- 保潔員勞務(wù)派遣協(xié)議書(shū)
- MOOC 創(chuàng)業(yè)管理-江蘇大學(xué) 中國(guó)大學(xué)慕課答案
- (高級(jí))政工師理論考試題庫(kù)及答案(含各題型)
- 建筑給水排水及采暖工程施工質(zhì)量驗(yàn)收規(guī)范-培訓(xùn)課件
- 深圳工改工最新政策研究
- 煤礦自動(dòng)化(培訓(xùn))
- 肖申克的救贖 英語(yǔ)三分鐘演講-文檔資料
- 顱內(nèi)腫瘤的護(hù)理(課堂PPT)
- 國(guó)家開(kāi)放大學(xué)《生產(chǎn)與運(yùn)作管理》形考作業(yè)1-4參考答案
- 九年級(jí)化學(xué)中考第二輪復(fù)習(xí)--八大專題人教版
- XIRR測(cè)算公式本金(模板)
- 鋁塑板門(mén)頭干掛鋁塑板施工方案
評(píng)論
0/150
提交評(píng)論