當前位置:編程學習大全網 - 源碼下載 - 用C語言寫壹個模擬火車票管理系統。

用C語言寫壹個模擬火車票管理系統。

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#define N 1000

typedef struct 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;

CLASS records[N];

int system_time();

void NewMessage();

void ShowTable1();

void ShowTable2(int i);

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[]);

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");

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

{

printf("%s",menu[i])) ;

}

i=0;

printf("\n");

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

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

scanf("%s",s);

c=atoi(s);

while(i<0||i>9)

{

printf("\n");

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

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

scanf("%s",s);

c=atoi(s);

}

return c;

}

void NewMessage()

{

int i=0,j=5,h;

char s[5];

FILE *fp;

system("cls");

if((fp=fopen("d:number.dat","rb"))!=NULL)

{

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("請輸入班次:");

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()

{

int i=2;

system("cls");

printf("**************************車票信息系統**********************************\n");

printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");

printf("\n| 班次 | 發車時間 | 起點站 | 終點站 |行車時間|額定載量| 已售票 |\n");

}

void ShowTable2(int i)

{

printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");

}

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("請輸入要查詢的班次:");

scanf("%s",s1);

find(s1,s2);

break;

case 2: printf("請輸入要查詢終點站:");

scanf("%s",s2);

find(s1,s2);

break;

case 3: break;

default : printf("輸入錯誤!\n");

break;

}

printf("按任意鍵繼續....\n");

getch();

}

void find(char s1[],char s2[])

{

int i,h=0,m;

ShowTable1();

if(s2[0]=='\0')

m=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+=1;

if(m==1)

break;

}

ShowTable2(h);

if(h==0)

printf("要查找的班次不存在!\n");

}

/**增加函數**/

void add()

{

int i,j=5;

load();

system("cls");

printf("1. 增加班次");

printf("2. 返回\n");

printf("請選擇(1-2)\n");

scanf("%d",&i);

if(i==1)

{

system("cls"); //刷屏

printf("1. 請輸入要增加的班次:");

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):");

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(); /////從控制臺讀取壹個字符,但不顯示在屏幕上

}

}

}

字數超了。。。。

  • 上一篇:iphone4有什麽快捷方式插件
  • 下一篇:Ogame銀河之爭源代碼
  • copyright 2024編程學習大全網