任務(wù)要求:
創(chuàng)建一個(gè)火車票管理系統(tǒng),功能包括:
(1)錄入班次信息(信息用文件保存),可不定時(shí)地增加班次數(shù)據(jù)
(2)瀏覽班次信息,可顯示出所有班次當(dāng)前狀總(如果當(dāng)前系統(tǒng)時(shí)間超過(guò)了某班 次的發(fā)車時(shí)間,則顯示“此班已發(fā)出”的提示信息)。
(3)查詢路線(起點(diǎn)、終點(diǎn)):可按班次號(hào)查詢 ,可按終點(diǎn)站查詢
(4)增加及修改班次和刪除班次信息 (5)售票和退票功能
系統(tǒng)設(shè)計(jì):
一.車票管理系統(tǒng)的功能為:1.錄入班次2. 顯示所有班次3.查詢班次4.增加班次 5.售票6.退票7.修改班次8.刪除班次9.退出
車票管理系統(tǒng)軟件的功能模塊有:
(1)提供菜單界面,方便用戶對(duì)程序個(gè)功能進(jìn)行選擇,選擇要實(shí)現(xiàn)的功能按enter鍵進(jìn)入該功能。
(2)接受用戶輸入的功能項(xiàng),按enter鍵結(jié)束輸入并將進(jìn)入該系統(tǒng),其需要的結(jié)果顯示出來(lái),方便用戶查看。
(3)完成每次功能,可保存用戶的修改的信息,及時(shí)更新文件信息。下次查詢時(shí)內(nèi)容為最新信息。實(shí)時(shí)的信息更新對(duì)比等。
一個(gè)名TICKET的結(jié)構(gòu)體進(jìn)行定義,包括num[10] hour[3]; min[3] from[10]; to[10]; hours max; now;等結(jié)構(gòu)體成員。
然后對(duì)調(diào)用函數(shù)進(jìn)行定義。int system_time()系統(tǒng)時(shí)間,void NewMessage() 新紀(jì)錄錄入函數(shù),void ShowTable1() void ShowTable2(int i) 線框調(diào)用1和2不用每次輸,void Display()顯示所有函數(shù),void add()增加記錄,void save() 保存函數(shù),void save()保存函數(shù),void load() 按班次查詢函數(shù),void search() 查詢函數(shù),void change()修改函數(shù),void quit()退出函數(shù),void Ticketorder() 售票函數(shù),void Ticketdelete()刪除函數(shù),int menu_select()菜單函數(shù), int whether(int)判斷時(shí)間是否超出函數(shù),void find(char s1[],char s2[]) 查詢函數(shù)★//s1為班次//s2為終點(diǎn)站,void deletemessage()刪除函數(shù),int findnum(char s1[])班次查詢函數(shù),void get(int,int)修改及增加班次,char *menu[]菜單函數(shù)。
該系統(tǒng)將這些信息均放在文件d:車票管理系統(tǒng)0中。
最后定義main()函數(shù),利用函數(shù)調(diào)用,實(shí)現(xiàn)程序的各種功能。將其放在系統(tǒng)文件d:車票管理系統(tǒng)0中。
程序分為多個(gè)小模塊,通過(guò)調(diào)用實(shí)現(xiàn)各種功能,增強(qiáng)了程序的可建設(shè)性。
程序把每種功能分開實(shí)現(xiàn),更簡(jiǎn)單,實(shí)用程序更易理解。
程序測(cè)試:
3.0 菜單界面
?
圖3-1菜單界面
如上圖所示,該程序?yàn)橛脩籼峁┎藛谓缑?,用戶可以?duì)程序的各種功能進(jìn)行選擇,方便用戶使用。選擇1-9并按enter鍵進(jìn)行操作。如選擇出錯(cuò),系統(tǒng)將提出警告,并提醒用戶重新進(jìn)行選擇。
錄入班次功能
?
圖3-1- 1第一次輸入時(shí)的界面
?
圖3-1- 2第二次輸入時(shí)的界面
如上圖所示,該功能實(shí)現(xiàn)錄入班次信息。選擇1按enter鍵進(jìn)入該功能,程序提醒用戶輸入車次.發(fā)車時(shí)間.起始站.終點(diǎn)站.行車時(shí)間.額定載量.已售票數(shù),輸入完畢后按enter鍵將完成錄入班次結(jié)果,同時(shí)程序?qū)⒃俅翁嵝延脩暨M(jìn)行新的選擇。而第二次輸入時(shí)提醒已經(jīng)輸過(guò),不能在加。
3.2查詢所有班次功能
?
圖 3-2-1查詢班次界面
?
圖3-2-2選擇查詢方式的界面
該功能將實(shí)現(xiàn)程序運(yùn)行班次的查詢。選擇3并按enter鍵將實(shí)現(xiàn)該功能。分班次和終點(diǎn)站兩種方式查詢。
3.3增加班次功能
?
添加圖片注釋,不超過(guò) 140 字(可選)
?
圖3-2-3增加班次功能界面
?
圖3-2-4增加班次后界面
該功能將增加班次信息,幫助用戶更新班次信息。選擇4并按enter鍵將實(shí)現(xiàn)該功能,再按提示輸入就行。按任意鍵返回主菜單。
3.3售票功能
?
圖3-3-1選擇售票功能界面
圖3-3-2選擇售票后的界面
?
圖3-3-3訂票的界面
選擇5按enter鍵實(shí)現(xiàn)該功能,按任意鍵關(guān)閉程序。買票程序可提示買票成功否,且自動(dòng)判斷是否可賣。
3.4退票功能
?
編輯切換為居中
圖3-4-1退票界面
選擇6按enter鍵實(shí)現(xiàn)該功能,按任意鍵關(guān)閉程序。退票程序可提示退票成功否,且自動(dòng)判斷是否可退。
3.5修改班次功能
?
編輯切換為居中
圖3-5-1修改界面
選擇7按enter鍵實(shí)現(xiàn)該功能,按任意鍵關(guān)閉程序。按提示操作修改班次。
3.6 刪除班次功能
?
編輯切換為居中
圖3-6-1刪除界面
3.7 退出功能
?
編輯切換為居中
圖3-7-1退出界面
該功能可退出系統(tǒng),選擇9按enter鍵實(shí)現(xiàn)該功能
部分程序:
#include ///宏定義函數(shù)
#include //串操作及內(nèi)存操作函數(shù)
#include /////調(diào)用系統(tǒng)函數(shù)
#include ///時(shí)間庫(kù)函數(shù)
#include ///輸入輸出函數(shù)
#define N 1000 //宏定義多條記錄
typedef struct TICKET ////定義新結(jié)構(gòu)體TICKET
{
char num[10]; //車次編號(hào)
char hour[3]; //時(shí)間,,小時(shí)
char min[3]; //分鐘
char from[10]; //起始站
char to[10]; //終點(diǎn)站
float hours; //車程實(shí)際時(shí)間
int max; //最大車載容量
int now; //已售票數(shù)
}CLASS;
int class_num=0; ///初始班次總數(shù)為0
CLASS records[N]; // 多條記錄
int system_time(); //系統(tǒng)時(shí)間
void NewMessage(); //新紀(jì)錄*錄入函數(shù)******
void ShowTable1(); //線框調(diào)用1,,,不用每次輸
printf("******************************************************");
printf("n請(qǐng)選擇(1-9):");
scanf("%s",s);
c=atoi(s); //atoi將字符串轉(zhuǎn)換成一個(gè)整數(shù)值
} ///輸出菜單面
return c; ////返回請(qǐng)求
}
/*******************************錄入函數(shù)************************************/
void NewMessage() //*錄入函數(shù)******
{
int i=0,j=5,h; ////
char s[5];
FILE *fp; ////定義文件型指針變量
system("cls"); //刷屏
if((fp=fopen("d:車票管理系統(tǒng)0.dat","rb"))!=NULL) //fopen打開文件
{
printf("車票信息已經(jīng)存在請(qǐng)選擇增加功能!n");
printf("任意輸入則返回菜單n");
scanf("%s",s);
i=1; //通過(guò)是1
}
if(i==0)
{
system("cls"); //刷屏
printf("請(qǐng)輸入要錄入班次總數(shù):n");
scanf("%d",&class_num); //指向班次指針
system("cls"); //刷屏
for(i=0;i
{
system("cls"); //刷屏
printf("請(qǐng)輸入第%d個(gè)班次信息:n",i+1);
h=-1;
for(;h!=i;) ///循環(huán)輸出
{
printf("請(qǐng)輸入班次:n");
scanf("%s",records[i].num);
for(h=0;h
if(strcmp(records[h].num,records[i].num)==0)
//判斷字符串比較是否相等,, 待比較的字符串
{
printf("輸入錯(cuò)誤!該班次已存在!n");
break; ///返回
}
}
get(i,j); ////修改及增加班次*
j=5;
}
save(); //調(diào)用保存函數(shù)
}
}
/*******************************顯示所有函數(shù)********************************/
審核編輯:湯梓紅
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7594瀏覽量
135864 -
程序設(shè)計(jì)
+關(guān)注
關(guān)注
3文章
261瀏覽量
30352
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論