『壹』 c語言課程設計關於車票管理系統~
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define size 10 struct t_tickets /* 定義結構體 */ {int number; /* 結構體中的申明部分 */
char begin [10];
char start[30];
char loadend[30];
float time;
int people;
int booked;
} t[size]; FILE*fp; struct t_tickets t[size];
void save()
{
int i; if ((fp=fopen("ticket.text","w+"))==NULL)
{
printf("cannot open the file\n");
return;
}
for(i=0;i<size;i++)
if(fwrite(&t[i],sizeof(struct t_tickets),1,fp)!=1)
printf(" file write error\n");
fclose(fp);
}
void input()
{
int i;
printf("----------請錄入班次信息----------\n");
for(i=0;i<size;i++)
{
scanf("%d %s %s %s %f %d %d",&t[i].number,t[i].begin, t[i].start,t[i].loadend,&t[i].time,&t[i].people,&t[i].booked);
save();} }
void output()
{
int i ;
fp=fopen("ticket.text","r");for(i=0;i<size;i++)
{
fread(&t[i],sizeof(struct t_tickets ),1,fp);printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[i].number,t[i].begin, t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);
}
fclose(fp);} void scan(){
int k;int number;
printf("請輸入您想要查詢的班次號:\n");
scanf("%d",&number);
fp=fopen("ticket.text","r");
for(k=0;k<size;k++)
{
fread(&t[k],sizeof(struct t_tickets),1,fp);
if(number==t[k].number)
{ printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n");
printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[k].number,t[k].begin, t[k].start,t[k].loadend,t[k].time,t[k].people,t[k].booked);
break;
}
}
if(k>=size)
printf("對不起,沒有您想要查詢的班次,謝謝使用本系統\n");
fclose(fp);
} void check()
{
int i; char loadend[30];
printf("請輸入你想要查詢的終點站的名稱:\n");
scanf("%s",loadend);
fp=fopen("ticket.text","r");
for(i=0;i<size;i++)
{
fread(&t[i],sizeof(struct t_tickets),1,fp);
if(strcmp(loadend,t[i].loadend)==0)
{
printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n"); printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[i].number,t[i].begin, t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);
break;
}
}
if(i>=size)
printf("對不起,沒有您想要查詢的班次,謝謝使用本系統!\n");
fclose(fp);
} void book(){
int i;int number;int m;char loadend[30];int ticket=1;
if ((fp=fopen("ticket.text","r"))==NULL)
{
printf("not open the file\n");
return;
}
for(i=0;i<=1;i++)
fread(&t[i],sizeof(struct t_tickets),1,fp);
printf("\n請輸入你想要到達的終點站:\n");
scanf("%s",loadend);
printf("到達此終點站的班次有:\n");
printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n");
for(i=0;i<=1;i++)
if(strcmp(loadend,t[i].loadend)==0)
{
ticket=2;
printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n");
printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[i].number,t[i].begin, t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);
}
for(i=0;i<=1;i++)
if(strcmp (loadend,t[i].loadend)==0)
if(t[i].booked<t[i].people)
{
ticket=3;
printf("請輸入訂票的張數:\n");
scanf("%d",&m);
for(i=0;i<=size;i++)
if(number=t[i].number); if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
}
{
t[i].booked=t[i].booked+m;
if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
}
for(i=0;i<=size;i++) fwrite(&t[i],sizeof(struct t_tickets),1,fp); fclose(fp);
printf(" 您訂票成功!謝謝使用本次服務!\n"); }} if(ticket==1)
printf("\n 沒有你查詢的班次,請查詢後在輸入\n");
if(ticket==2)
printf("\n 你想要購買的票以售完,請購買下一班 \n"); fclose(fp); if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
} for(i=0;i<=size;i++)
fwrite(&t[i],sizeof(struct t_tickets),1,fp); fclose(fp);
} void rback(){
int number,i,m;if((fp=fopen("ticket.text","r"))==NULL)
{
printf("not open the file\n");
return;
}for(i=0;i<=1;i++)
fread(&t[i],sizeof(struct t_tickets),1,fp);
printf("請輸入退票的班次:\n");
scanf("%d",&number);
printf("請輸入退票的張數:\n");
scanf("%d",&m);
for(i=0;i<=size;i++)
if(number==t[i].number)
{
t[i].booked=t[i].booked-m;
printf("\n 您退票成功!,謝謝\n");}
fclose(fp); if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
}
for(i=0;i<=size;i++) fwrite(&t[i],sizeof(struct t_tickets),1,fp); fclose(fp);
}
void over()
{
printf("\n 謝謝您的使用,請按任意鍵結束!\n");
return;
}
void main(){
int b; printf(" 這里是車票管理系統,歡迎你的使用\n");
printf(" 袁宏傑 製作\n");
printf("\n******************************************\n");
printf(" ==== 0,錄入班次信息\n");
printf(" ==== 1,瀏覽信息\n");
printf(" ==== 2,按班次查詢\n");
printf(" ==== 3,按終點站查詢\n");
printf(" ==== 4,預定車票\n");
printf(" ==== 5,退票 \n");
printf(" ==== 6,退出程序\n");
printf("\n******************************************\n");
do{
printf("-----選擇主菜單功能(0~6\n");
scanf("%d",&b);
switch (b)
{
case 0: input(); break;
case 1: output(); break;
case 2: scan(); break;
case 3: check(); break;
case 4: book(); break;
case 5: rback(); break;
case 6: over(); break;
default: printf(" enter error!\n");
}}while(1);}
『貳』 用C語言寫一個火車票管理系統
定義一個結構體就可以了。可以從放在文件中,從文件中讀寫。
『叄』 C語言怎麼編寫車票管理系統
推薦用vc,vb
一般用面向對象的語言編寫這樣的系統,這樣出來的系統才有可能滿足用戶的需求,用面向過程的語言部容易實現這點,並不好調試.建議用.
首先需要知道用戶的要求.
再設計好能滿足用戶要求的系統,建立對象模型,動態模型和功能模型.
然後才編程.
具體過程你可以看看面向對象方法學的書.
如果要快一點完成的話,就看看一些有關你用的語言的項目實踐書,他們都會帶光碟的,,光碟上有一些已經開發的系統,看看就知道車票管理系統怎麼樣編寫了.很可能直接有車票管理系統.呵呵`~
『肆』 C語言編程 車票管理系統
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define size 10 struct t_tickets /* 定義結構體 */ {int number; /* 結構體中的申明部分 */ char begin [10]; char start[30]; char loadend[30]; float time; int people; int booked; } t[size]; FILE*fp; struct t_tickets t[size];
void save()
{
int i; if ((fp=fopen("ticket.text","w+"))==NULL)
{
printf("cannot open the file\n");
return;
}
for(i=0;i<size;i++)
if(fwrite(&t[i],sizeof(struct t_tickets),1,fp)!=1)
printf(" file write error\n");
fclose(fp);
}
void input()
{
int i;
printf("----------請錄入班次信息----------\n");
for(i=0;i<size;i++)
{
scanf("%d %s %s %s %f %d %d",&t[i].number,t[i].begin, t[i].start,t[i].loadend,&t[i].time,&t[i].people,&t[i].booked);
save();} }
void output()
{
int i ;
fp=fopen("ticket.text","r");for(i=0;i<size;i++)
{
fread(&t[i],sizeof(struct t_tickets ),1,fp);printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[i].number,t[i].begin, t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);
}
fclose(fp);} void scan(){
int k;int number;
printf("請輸入您想要查詢的班次號:\n");
scanf("%d",&number);
fp=fopen("ticket.text","r");
for(k=0;k<size;k++)
{
fread(&t[k],sizeof(struct t_tickets),1,fp);
if(number==t[k].number)
{ printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n");
printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[k].number,t[k].begin, t[k].start,t[k].loadend,t[k].time,t[k].people,t[k].booked);
break;
}
}
if(k>=size)
printf("對不起,沒有您想要查詢的班次,謝謝使用本系統\n");
fclose(fp);
} void check()
{
int i; char loadend[30];
printf("請輸入你想要查詢的終點站的名稱:\n");
scanf("%s",loadend);
fp=fopen("ticket.text","r");
for(i=0;i<size;i++)
{
fread(&t[i],sizeof(struct t_tickets),1,fp);
if(strcmp(loadend,t[i].loadend)==0)
{
printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n"); printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[i].number,t[i].begin, t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);
break;
}
}
if(i>=size)
printf("對不起,沒有您想要查詢的班次,謝謝使用本系統!\n");
fclose(fp);
} void book(){
int i;int number;int m;char loadend[30];int ticket=1;
if ((fp=fopen("ticket.text","r"))==NULL)
{
printf("not open the file\n");
return;
}
for(i=0;i<=1;i++)
fread(&t[i],sizeof(struct t_tickets),1,fp);
printf("\n請輸入你想要到達的終點站:\n");
scanf("%s",loadend);
printf("到達此終點站的班次有:\n");
printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n");
for(i=0;i<=1;i++)
if(strcmp(loadend,t[i].loadend)==0)
{
ticket=2;
printf("\n 班次 發車時間 起點站 終點站 行車時間 額定載量 已訂票人數 \n");
printf("\n%-4d %-8s %-13s %-13s %-6.1f %-6d %4d\n",t[i].number,t[i].begin, t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);
}
for(i=0;i<=1;i++)
if(strcmp (loadend,t[i].loadend)==0)
if(t[i].booked<t[i].people)
{
ticket=3;
printf("請輸入訂票的張數:\n");
scanf("%d",&m);
for(i=0;i<=size;i++)
if(number=t[i].number); if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
}
{
t[i].booked=t[i].booked+m;
if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
}
for(i=0;i<=size;i++) fwrite(&t[i],sizeof(struct t_tickets),1,fp); fclose(fp);
printf(" 您訂票成功!謝謝使用本次服務!\n"); }} if(ticket==1)
printf("\n 沒有你查詢的班次,請查詢後在輸入\n");
if(ticket==2)
printf("\n 你想要購買的票以售完,請購買下一班 \n"); fclose(fp); if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
} for(i=0;i<=size;i++)
fwrite(&t[i],sizeof(struct t_tickets),1,fp); fclose(fp);
} void rback(){
int number,i,m;if((fp=fopen("ticket.text","r"))==NULL)
{
printf("not open the file\n");
return;
}for(i=0;i<=1;i++)
fread(&t[i],sizeof(struct t_tickets),1,fp);
printf("請輸入退票的班次:\n");
scanf("%d",&number);
printf("請輸入退票的張數:\n");
scanf("%d",&m);
for(i=0;i<=size;i++)
if(number==t[i].number)
{
t[i].booked=t[i].booked-m;
printf("\n 您退票成功!,謝謝\n");}
fclose(fp); if ((fp=fopen("ticket.text","w"))==NULL)
{
printf("not open the file\n");
return;
}
for(i=0;i<=size;i++) fwrite(&t[i],sizeof(struct t_tickets),1,fp); fclose(fp);
}
void over()
{
printf("\n 謝謝您的使用,請按任意鍵結束!\n");
return;
}
void main(){
int b; printf(" 這里是車票管理系統,歡迎你的使用\n");
printf(" 袁宏傑 製作\n");
printf("\n******************************************\n");
printf(" ==== 0,錄入班次信息\n");
printf(" ==== 1,瀏覽信息\n");
printf(" ==== 2,按班次查詢\n");
printf(" ==== 3,按終點站查詢\n");
printf(" ==== 4,預定車票\n");
printf(" ==== 5,退票 \n");
printf(" ==== 6,退出程序\n");
printf("\n******************************************\n");
do{
printf("-----選擇主菜單功能(0~6\n");
scanf("%d",&b);
switch (b)
{
case 0: input(); break;
case 1: output(); break;
case 2: scan(); break;
case 3: check(); break;
case 4: book(); break;
case 5: rback(); break;
case 6: over(); break;
default: printf(" enter error!\n");
}}while(1);}
『伍』 c語言課程設計,車票管理系統,求大神幫忙
一般這個可以使用鏈表做不過題目中說明信息條數不得超過20所以也可以使用數組來做,不過還是建議使用鏈表來做不管什麼數組還是鏈表,都可以使用結構體存儲相應信息在添加一個新的信息的時候通過前一個信息的編號加一就可遞增編號了刪除時不知道是否要保持編號連續還是可以有中斷如果要保持連續的話需要對當前刪除的位置向後將所有後面的編號依次減一如果代碼不想自己寫的話我可以有償代勞
『陸』 跪求C語言程序----車票管理系統
#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,,,不用沒次輸
void ShowTable2(int i); //線框調用2,,,不用沒次輸
void Display(); //顯示所有函數
void add(); //增加記錄
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[]={"*****************歡迎使用車票查詢系統*****************",
"\n*******************MENU功能菜單***********************",
"\n◤ ★ 1. 錄入班次 ◥",
"\n◆ ★ 2. 顯示所有班次 ◆",
"\n◆ ★ 3. 查詢班次 ◆",
"\n◆ ★ 4. 增加班次 ◆",
"\n◆ ★ 5. 售票 ◆",
"\n◆ ★ 6. 退票 ◆",
"\n◆ ★ 7. 修改班次 ◆",
"\n◆ ★ 8. 刪除班次 ◆",
"\n◣ ★ 9. 退出 ◢"};
/**************************主函數***************************/
void main()
{
system("cls"); //刷屏
while(1) //菜單函數循環
{
switch(menu_select()) //菜單函數*
{
case 1: NewMessage();break; ////新紀錄*錄入函數******
case 2: Display();break; // //顯示
case 3: search();break; //查找函數**
case 4: add();break; // //增加記錄
case 5: Ticketorder();break; ////*售票函數***
case 6: Ticketdelete();break; //刪除函數*
case 7: change();break; //修改函數**
case 8: deletemessage();break; //////選擇調用刪除函數
case 9: quit();break; //////退出函數******
}
}
}
/***********************菜單函數**************************/
int menu_select() /////////菜單函數*
{
char s[5]; ///定義要輸入的數字功能
int c,i;
system("cls"); //刷屏
system("color 09");//改變顏色
for(i=0;i<11;i++)
{
printf("%s",menu[i]); //輸出菜單各項)
}
i=0;
while(c<0||c>9) //判斷是否是1到9的命令
{
printf("\n"); ///輸出換行
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(); //調用保存函數
}
}
/*******************************顯示所有函數********************************/
void Display() //顯示所有函數
{
int i,j;
system("cls"); //刷屏
load(); // 調用按班次查詢函數
ShowTable1(); //線框調用1,,,不用沒次輸
for(i=0,j=0;i<class_num;i++,j+=2) /////按班次順序輸出
{
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");
if(whether(i)) //判斷時間是否超出函數***
printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,
records[i].min, records[i].from,records[i].to,records[i].hours,
records[i].max,records[i].now);
else
printf("|%10s| 已發車 |%10s|%10s|%8.1f|%8d|%8d|",records[i].num,
records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);
}
ShowTable2(j); //線框調用2
printf("\n按任意鍵繼續....\n");
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
}
/**********************************列印表頭***********************************************/
void ShowTable1() //線框調用1,,,不用沒次輸
{
int i=2;
system("cls"); //刷屏
printf("**************************MESSAGE車程信息**********************************\n");
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");
printf("\n| 班次 | 發車時間 | 起點站 | 終點站 |行車時間|額定載量| 已售票 |\n");
}
/***************************************列印表尾************************************************/
void ShowTable2(int i) //線框調用2。不用沒次輸。
{
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");
}
/**************************查找函數11**************************/
void search() ////查詢調用
{
int i;
char s1[10]={'\0'},s2[10]={'\0'};
system("cls"); //刷屏
printf("1. 按班次查詢\n");
printf("2. 按終點站查詢\n");
printf("3. 退出\n");
printf("請選擇(1-3):\n");
scanf("%d",&i);
load(); // 調用按班次查詢函數
switch(i) //多分枝選擇語句
{
case 1: printf("請輸入要查詢的班次:\n"); //////s1為班次
scanf("%s",s1);
find(s1,s2); /////調用查找函數222 2
break;
case 2: printf("請輸入要查詢終點站:\n"); /////s2為終點站
scanf("%s",s2);
find(s1,s2); /////調用查找函數222 2
break;
case 3: break;
default : printf("輸入錯誤!\n");
break;
}
printf("按任意鍵繼續....\n");
getch(); ///從控制台讀取一個字元,但不顯示在屏幕上
}
/********************************查詢函數22*********************************/
void find(char s1[],char s2[])
{
int i,h=0,m;
ShowTable1(); ////調用線框1
if(s2[0]=='\0')
m=1; ///1為無條件執行
else m=0;
for(i=0;i<class_num;i++)
if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==0)
////判斷字元串比較是否相等,, 待比較的字元串
{
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");
printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,records[i].min,
records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);
h+=2;
if(m==1)
break;
}
ShowTable2(h); ////調用線框2
if(h==0)
printf("要查找的班次不存在!\n");
}
/***********************增加函數****************************/
void add() // //增加記錄
{
int i,j=5;
load(); // 調用按班次查詢函數
system("cls"); //刷屏
printf("1. 增加班次\n");
printf("2. 返回\n");
printf("請選擇(1-2)\n");
scanf("%d",&i);
if(i==1)
{
system("cls"); //刷屏
printf("1. 請輸入要增加的班次:\n");
scanf("%s",records[class_num].num);
for(i=0;i<class_num;i++)
if(strcmp(records[class_num].num,records[i].num)==0)
//判斷字元串比較是否相等,, 待比較的字元串 判斷車次沒重復
{
printf("輸入錯誤!\n");
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
break;
}
if(i==class_num)
{
get(i,j); ////修改及增加班次*
class_num++; ///使班次數加1
save(); //調用保存函數
}
}
}
/********************************售票函數*****************************/
void Ticketorder() //*售票函數***
{
int i;
char num[10];
system("cls"); //刷屏
printf("1. 售票\n");
printf("2. 返回\n");
printf("請選擇(1-2):\n");
scanf("%d",&i);
if(i==1)
{
load(); // 調用按班次查詢函數
search(); //查找函數**
printf("請輸入要訂票的班次(若無請輸入0):\n");
scanf("%s",num);
for(i=0;i<class_num;i++)
if(strcmp(num,records[i].num)==0)//判斷字元串比較是否相等,, 待比較的字元串
if(records[i].max>records[i].now&&whether(i)==1)
//判斷時間是否超出函數***並且***沒超出最大客量
{
records[i].now++; ///使已售的暑假1
printf("通向%s班次為%s的票訂票成功!\n",records[i].to,records[i].num);
save(); //調用保存函數
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
break;
}
else
{
printf("該班次已滿或已發出!\n");
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
}
}
}
/****************************退票刪除函數***************************************/
void Ticketdelete() //刪除函數*
{
int i;
char num[10];
system("cls"); //刷屏
printf("1. 退票\n");
printf("2. 返回\n");
printf("請選擇(1-2)\n:");
scanf("%d",&i);
if(i==1)
{
system("cls"); //刷屏
load(); // 調用按班次查詢函數
printf("請輸入要退票的班次:\n");
scanf("%s",num);
i=findnum(num); //調用班次查詢函數
if(strcmp(num,records[i].num)==0) //判斷字元串比較是否相等 待比較的字元串
if(whether(i)) //判斷時間是否超出函數***
{
printf("確定(Y/N)?");
scanf("%s",num);
if(num[0]=='y'||num[0]=='Y')
{
records[i].now--; //使已售票加1
printf("退票成功!\n");
save(); //調用保存函數
getch(); //從控制台讀取一個字元,但不顯示在屏幕上
}
}
else
{
printf("該班車已發出,無法退票!\n");
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
}
if(i==class_num)
{ printf("輸入錯誤!\n");
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
}
}
}
/********************************修改函數*********************************/
void change() //修改函數**
{
char num[10],s[10];
int h=0,j=13,i;
load(); // 調用按班次查詢函數
system("cls"); //刷屏
printf("請輸入要修改的班次:\n");
scanf("%s",num);
i=findnum(num); //調用班次查詢函數
if(i==class_num)
{
printf("輸入錯誤,無此班次!\n");
getch(); ///從控制台讀取一個字元,但不顯示在屏幕上
}
else
{
printf("確定修改(Y/N)?\n");
scanf("%s",s);
if(s[0]=='y'||s[0]=='Y')
{
get(i,j); ////修改及增加班次*
save(); //調用保存函數
}
}
}
/*******************************刪除函數**********************************/
void deletemessage() //刪除班次信息
{
int i,h=0;
char num[10];
system("cls"); //刷屏
printf("1. 刪除班次\n");
printf("2. 返回\n");
printf("請選擇(1-2):\n");
scanf("%d",&i);
if(i==1)
{
system("cls"); //刷屏
printf("請輸入要刪除的班次:\n");
scanf("%s",num);
i=findnum(num); //調用班次查詢函數
if(i==class_num)
{
printf("輸入錯誤,無此班次!\n");
getch(); ///從控制台讀取一個字元,但不顯示在屏幕上
}
else
{
printf("確定?(y/n)\n");
scanf("%s",num);
if(num[0]=='y'||num[0]=='Y')
{
for(;i<class_num-1;i++)
records[i]=records[i+1];
class_num--; ////班次總數減1
save(); //調用保存函數
printf("刪除成功!\n");
getch();
}
}
}
}
/****************************按班次查詢函數****************************/
int findnum(char s1[]) //查找班次
{
int i,h=0;
ShowTable1(); //線框調用1,,,不用沒次輸
for(i=0;i<class_num;i++)
{
if(strcmp(s1,records[i].num)==0) //判斷字元串比較是否相等,如果符合則輸出車次等信息
{
printf("|----------|----------|----------|----------|--------|--------|--------|\n");
printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,
records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);
h+=2; ///加2使輸出的框架合適
break;
}
}
ShowTable2(h); ///調用框架2
return i;
}
/**************************************保存函數*******************************/
void save() //////保存函數
{
FILE *fp1,*fp2; //文件行指針
if((fp1=fopen("d:車票管理系統.dat","wb"))==NULL) //打開文件、為輸出打開一個二進制文件
{
printf("文件打開錯誤!\n");
exit(0);
}
if((fp2=fopen("d:車票管理系統0.dat","wb"))==NULL) //打開文件、為輸出打開一個二進制文件
{
printf("文件打開錯誤!\n");
exit(0);
}
fwrite(&class_num,sizeof(int),1,fp2); //寫入文件信息
fwrite(records,sizeof(CLASS),class_num,fp1);
fclose(fp1);fclose(fp2); ///關閉文件
}
/*******************************按班次查詢函數*******************************/
void load() //按班次查詢函數
{
FILE *fp1,*fp2;
if((fp1=fopen("d:車票管理系統.dat","rb"))==NULL)
{
system("cls"); //刷屏
printf("文件打開錯誤!\n");
getch(); ///從控制台讀取一個字元,但不顯示在屏幕上
exit(0);
}
if((fp2=fopen("d:車票管理系統0.dat","rb"))==NULL)
{
system("cls"); //刷屏
printf("文件打開錯誤!\n");
getch(); ///從控制台讀取一個字元,但不顯示在屏幕上
exit(0); //退出
}
fread(&class_num,sizeof(int),1,fp2); ///讀入信息
fread(records,sizeof(CLASS),class_num,fp1);/////讀入信息
fclose(fp1);fclose(fp2); ///文件關閉
}
/******************************退出函數***************************/
void quit() //退出函數******
{
char s[5];
printf("確認退出?(Y/N)\n");
scanf("%s",s);
if(s[0]=='y'||s[0]=='Y')
exit(0); //程序中止執行,返回調用過程..state 0-正常中止非0-非正常
}
/*************************修改及增加班次*******************************/
void get(int i,int j) // 修改及增加班次*
{
for(;;)
{
printf("請輸入發車時間(xx xx)");scanf("%s%s",records[i].hour,records[i].min);
if((atoi(records[i].hour)<24&&atoi(records[i].hour)>=0)&&(atoi(records[i].min)<60&&atoi(records[i].min)>=0))
break;
else
{
printf("輸入錯誤!\n");
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
}
}
printf("請輸入起點站:\n");
scanf("%s",records[i].from);
printf("請輸入終點站:\n");
scanf("%s",records[i].to);
printf("請輸入行車時間:\n");
scanf("%f",&records[i].hours);
printf("請輸入額定載量:\n");
scanf("%d",&records[i].max);
for(;;)
{
printf("請輸入已售票數:\n");
scanf("%d",&records[i].now);
if(records[i].now<=records[i].max)
break;
else
{
printf("輸入錯誤!\n");
getch(); /////從控制台讀取一個字元,但不顯示在屏幕上
}
}
}
/********************************判斷時間是否超出函數**********************************/
int whether(int i) //判斷時間是否超出函數***
{
struct tm *local; //時間結構體
time_t t; //把當前時間給t
t=time(NULL); //NULL在stdio.h中定義為0
local=localtime(&t); /////獲取當前系統時間
if(local->tm_hour<atoi(records[i].hour)||local->tm_hour==atoi(records[i].hour)&&local->tm_min<atoi(records[i].min))
//atoi將字元串轉換成一個整數值
return 1;
else
return 0;
}
『柒』 急求程序設計:汽車票管理系統C語言程序設計
設計任務 建立某地區的汽車票管理系統,管理員能夠維護車次信息,顧客可以瀏覽車次信息,可以購票或退票。程序要求編寫登錄的功能選項界面。例如:1--管理人員登錄A--增加車次信息B--刪除車次信息C--更改車次信息D--返回主菜單2--路線查詢3--顧客購票4--顧客退票5――結束程序各個選項分別代表不同的功能,並由此進入到不同功能模塊中。