任務要求:

創建一個火車票管理系統,功能包括:

(1)錄入班次信息(信息用文件保存),可不定時地增加班次數據(2)瀏覽班次信息,可顯示出所有班次當前狀總(如果當前系統時間超過瞭某班 次的發車時間,則顯示“此班已發出”的提示信息)。(3)查詢路線(起點、終點):可按班次號查詢 ,可按終點站查詢

(4)增加及修改班次和刪除班次信息(5)售票和退票功能

系統設計:

一.車票管理系統的功能為:1.錄入班次2. 顯示所有班次3.查詢班次4.增加班次 5.售票6.退票7.修改班次8.刪除班次9.退出

車票管理系統軟件的功能模塊有:

(1)提供菜單界面,方便用戶對程序個功能進行選擇,選擇要實現的功能按enter鍵進入該功能。

(2)接受用戶輸入的功能項,按enter鍵結束輸入並將進入該系統,其需要的結果顯示出來,方便用戶查看。

(3)完成每次功能可保存用戶的修改的信息,及時更新文件信息。下次查詢時內容為最新信息。實時的信息更新對比等。

一個名TICKET的結構體進行定義,包括num[10] hour[3]; min[3] from[10]; to[10]; hours max; now;等結構體成員。

然後對調用函數進行定義。int system_time()系統時間,void NewMessage() 新紀錄錄入函數,void ShowTable1() void ShowTable2(int i) 線框調用1和2不用每次輸,void Display()顯示所有函數,void add()增加記錄,void save() 保存函數,void save()保存函數,void load() 按班次查詢函數,void search() 查詢函數,void change()修改函數,void quit()退出函數,void Ticketorder() 售票函數,void Ticketdelete()刪除函數,int menu_select()菜單函數, int whether(int)判斷時間是否超出函數,void find(char s1[],char s2[]) 查詢函數★//s1為班次//s2為終點站,void deletemessage()刪除函數,int findnum(char s1[])班次查詢函數,void get(int,int)修改及增加班次,char *menu[]菜單函數。

該系統將這些信息均放在文件d:車票管理系統0中。

最後定義main()函數,利用函數調用,實現程序的各種功能。將其放在系統文件d:車票管理系統0中。

程序分為多個小模塊,通過調用實現各種功能,增強瞭程序的可建設性。

程序把每種功能分開實現,更簡單,實用程序更易理解。

程序測試:

3.0 菜單界面

圖3-1菜單界面

如上圖所示,該程序為用戶提供菜單界面,用戶可以對程序的各種功能進行選擇,方便用戶使用。選擇1-9並按enter鍵進行操作。如選擇出錯,系統將提出警告,並提醒用戶重新進行選擇。

    1. 錄入班次功能

圖3-1- 1第一次輸入時的界面圖3-1- 2第二次輸入時的界面

如上圖所示,該功能實現錄入班次信息。選擇1按enter鍵進入該功能,程序提醒用戶輸入車次.發車時間.起始站.終點站.行車時間.額定載量.已售票數,輸入完畢後按enter鍵將完成錄入班次結果,同時程序將再次提醒用戶進行新的選擇。而第二次輸入時提醒已經輸過,不能在加。

3.2查詢所有班次功能

圖 3-2-1查詢班次界面

圖3-2-2選擇查詢方式的界面

該功能將實現程序運行班次的查詢。選擇3並按enter鍵將實現該功能。分班次和終點站兩種方式查詢。

3.3增加班次功能

圖3-2-3增加班次功能界面圖3-2-4增加班次後界面

該功能將增加班次信息,幫助用戶更新班次信息。選擇4並按enter鍵將實現該功能,再按提示輸入就行。按任意鍵返回主菜單。

3.3售票功能

圖3-3-1選擇售票功能界面

圖3-3-2選擇售票後的界面

圖3-3-3訂票的界面

選擇5按enter鍵實現該功能,按任意鍵關閉程序。買票程序可提示買票成功否,且自動判斷是否可賣。

3.4退票功能

圖3-4-1退票界面

選擇6按enter鍵實現該功能,按任意鍵關閉程序。退票程序可提示退票成功否,且自動判斷是否可退。

3.5修改班次功能

圖3-5-1修改界面

選擇7按enter鍵實現該功能,按任意鍵關閉程序。按提示操作修改班次。

3.6 刪除班次功能

圖3-6-1刪除界面

3.7 退出功能

圖3-7-1退出界面

該功能可退出系統,選擇9按enter鍵實現該功能

部分程序:

#include<stdio.h> ///宏定義函數

#include<string.h> //串操作及內存操作函數

#include<stdlib.h> /////調用系統函數

#include<time.h> ///時間庫函數

#include<conio.h> ///輸入輸出函數

#define N 1000 //宏定義多條記錄

typedef struct TICKET ////定義新結構體TICKET

{

char num[10]; //車次編號

char hour[3]; //時間,,小時

char min[3]; //分鐘

char from[10]; //起始站

char to[10]; //終點站

float hours; //車程實際時間

int max; //最大車載容量

int now; //已售票數

}CLASS;

int class_num=0; ///初始班次總數為0

CLASS records[N]; // 多條記錄

int system_time(); //系統時間

void NewMessage(); //新紀錄*錄入函數******

void ShowTable1(); //線框調用1,,,不用每次輸

printf("******************************************************");

printf("n請選擇(1-9):");

scanf("%s",s);

c=atoi(s); //atoi將字符串轉換成一個整數值

} ///輸出菜單面

return c; ////返回請求

}

/*******************************錄入函數************************************/

void NewMessage() //*錄入函數******

{

int i=0,j=5,h; ////

char s[5];

FILE *fp; ////定義文件型指針變量

system("cls"); //刷屏

if((fp=fopen("d:車票管理系統0.dat","rb"))!=NULL) //fopen打開文件

{

printf("車票信息已經存在請選擇增加功能!n");

printf("任意輸入則返回菜單n");

scanf("%s",s);

i=1; //通過是1

}

if(i==0)

{

system("cls"); //刷屏

printf("請輸入要錄入班次總數:n");

scanf("%d",&class_num); //指向班次指針

system("cls"); //刷屏

for(i=0;i<class_num;i++)

{

system("cls"); //刷屏

printf("請輸入第%d個班次信息:n",i+1);

h=-1;

for(;h!=i;) ///循環輸出

{

printf("請輸入班次:n");

scanf("%s",records[i].num);

for(h=0;h<i;h++)

if(strcmp(records[h].num,records[i].num)==0)

//判斷字符串比較是否相等,, 待比較的字符串

{

printf("輸入錯誤!該班次已存在!n");

break; ///返回

}

}

get(i,j); ////修改及增加班次*

j=5;

}

save(); //調用保存函數

}

}

/*******************************顯示所有函數********************************/

資料包括:

資料包括

需要完整的資料可以加入我的紛傳圈子,裡面有資源壓縮包的百度網盤下載地址及提取碼。

紛傳點擊用微信打開即可,過程有點繁瑣請見諒。也可掃二維碼。

紛傳圈子二維碼