當前位置:商標查詢大全網 - 彩票查詢 - 跪求,數據結構實驗,《制作體育彩票選號器》 和《航空客運訂票系統》

跪求,數據結構實驗,《制作體育彩票選號器》 和《航空客運訂票系統》

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define N 1000

struct customer

{char name[20];

char id[20];

int number;

}t[N];

struct air

{char hangban[10];

int num;

char start[20];

char over[20];

char time[10];

int piaoshu;

int piaojia;

double piaozhekou;

}s[N];

int i,j;

int m=0;

#define PRINT1 " %-10s %d %8s %11s %10s %8d %10d %12lf\n",s[i].hangban,s[i].num,s[i].start,s[i].over,s[i].time,s[i].piaoshu,s[i].piaojia,s[i].piaozhekou

#define PRINT2 "%12s %12s %8d %10d \n",t[i].id,s[i].hangban,s[i].num ,s[i].piaoshu

void shuru();

void shuchu();

void save();

void read();

void chaxun();

void shanchu();

void dingpiao();

void tuipiao();

void main()

{int j;

do

{printf(" *****************************************\n\n");

printf(" * 1.輸入航班信息 * \n\n"

" * 2.瀏覽航班信息 * \n\n"

" * 3.查詢功能 * \n\n"

" * 4.刪除航班信息 * \n\n"

" * 5.訂票功能 * \n\n"

" * 6.退票功能 * \n\n"

" * 0.退出 * \n\n");

printf(" ******************************************\n\n");

printf("請在0-6中選擇並以回車鍵結束:\n\n");

scanf("%d",&j);

switch(j)

{

case 1: shuru();

break;

case 2:shuchu();

break;

case 3:chaxun();

break;

case 4:shanchu();

break;

case 5:dingpiao();

break;

case 6:tuipiao();

break;

case 0:;

break;

}

}while(j!=0);

printf("謝謝使用,再見!\n");

}//主函數結束

void shuru()

{

int y;

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

{

printf("請輸入航班號:\n");

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

printf("請輸入飛機號:\n");

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

flushall();

printf("請輸入起始站:\n");

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

printf("請輸入終點站:\n");

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

flushall();

printf("請輸入時間:\n");

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

printf("請輸入機票數:\n",m);

scanf("%d",&s[i].piaoshu);

printf("請輸入票價:\n",m);

scanf("%d",&s[i].piaojia);

printf("請輸入票價折扣:\n",m);

scanf("%lf",&s[i].piaozhekou);

m++;

printf("第%d個信息已經輸完是否繼續?按任意鍵繼續,按 0結束",m);

flushall();

scanf("%d",&y);

if(y==0)

{

save();

shuchu();

break;

}

}

}

void shuchu()

{

char w[10];

read();

printf(" 航班號 飛機號 起始站 終點站 時間 機票數 票價 票價折扣\n");

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

{

printf(PRINT1);

}

printf("請按任意鍵回車鍵結束返回上層菜單以:\n");

scanf("%s",w);

}

void save()

{

FILE *fp,*fp1;

if((fp=fopen("a.txt","wb"))==NULL)

{

printf("創建文件失敗!\n\n");

getchar();

return;

}

if((fp1=fopen("b.txt","wb"))==NULL)

{

printf("創建文件失敗!\n\n");

getchar();

return;

}

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

if(fwrite(&s[i],sizeof(struct air),1,fp)==0)

printf("向文件輸入數據失敗!\n\n");

fprintf(fp1,"%d",m);

fclose(fp);

fclose(fp1);

}

void read()

{

FILE *fp,*fp1;

if((fp=fopen("a.txt","rb"))==NULL)

{

printf("出錯,請檢查文件是否存在,按任意鍵返回主菜單");

getchar();

}

if((fp1=fopen("b.txt","rb"))==NULL)

{

printf("創建文件失敗!\n\n");

getchar();

return;

}

fscanf(fp1,"%d",&m);

fclose(fp1);

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

{

fread(&s[i],sizeof(air),1,fp);

}

fclose(fp);

}

void chaxun()

{

char name1[20];

char name2[20];

char c[10],no[20];

int n;

do

{

printf("請選擇查詢信息:\n\n");

printf("*******************************\n\n");

printf("* 1.查詢航線信息 * \n\n"

"* 2.查詢客戶信息 * \n\n"

"* 0.返回 *\n\n");

printf("*******************************\n\n");

printf("請在0-2中選擇:\n\n"

"按其他鍵並以回車鍵結束返回主菜單:\n\n");

scanf("%d",&n);

if(n==0)

break;

else

switch(n)

{case 1:

printf("請輸入起始站名稱:\n");

scanf("%s",name1);

printf("請輸入終點站名稱:\n");

scanf("%s",name2);

break;

case 2:

printf("請輸入客戶的證件號:\n");

scanf("%s",no);

break;

}

read();

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

{

if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)

printf("\n查找航班信息成功!\n");

printf(" 航班號 飛機號 起始站 終點站 時間 機票數 票價 票價折扣\n");

printf(PRINT1);

break;

}

else

if(strcmp(t[i].id,no)==0)

{

printf("\n查找客戶信息成功!\n");

printf("證件號 航班號 飛機號 機票數");

printf(PRINT2);

break;

}

}

printf("沒有您需要的信息或查找完畢:\n\n"

"是否繼續查找?請鍵入y或n以回車鍵結束\n");

scanf("%s",c);

}while(strcmp(c,"y")==0);

}

void shanchu()

{

char name1[20];

char name2[20];

char c[10];

int no,n;

do

{

printf("請選擇刪除以方式回車鍵結束:\n\n");

printf("**********************************\n\n");

printf("* 1.按航班號刪除 *\n\n"

"* 2.按航線刪除 *\n\n"

"* 0.返回 *\n\n");

printf("********************************\n\n");

printf("請在0-2中選擇以回車鍵結束:\n");

scanf("%d",&n);

if(n==0)

break;

switch(n)

{

case 1:

printf("請輸入航班號:\n");

scanf("%d",&no);

read();

break;

case 2:

printf("請輸入起始站 名稱:\n");

scanf("%s",name1);

printf("請輸入終點站名稱:\n");

scanf("%s",name2);

read();

break;

}

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

{

if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)

{

s[i]=s[m-1];

m--;

}

}

printf("查找完畢或沒有這個信息\n\n");

printf("是否繼續刪除\n");

printf("請鍵入y或n以回車鍵結束\n");

scanf("%s",c);

save();

if(!strcmp(c,"y"))

printf("請按任意鍵以回車鍵結束返回上層菜單:\n");

break;

}while(n!=1&&n!=2&&n!=0);

}

void dingpiao()

{int n;

char a[10],b[10];

do

{

printf("請輸入客戶證件號:\n");

scanf("%d",&t[i].id);

printf("請輸入航班號:\n");

scanf("%s",b);

printf("請輸入飛機號:\n");

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

flushall();

m++;

printf("請輸入您要訂的機票數:\n");

scanf("%d",&n);

if(strcmp(s[i].hangban,b)!=0)

{

printf("請輸入有效的機票數!\n");

break;

}

else

if(s[i].piaoshu!=0&&s[i].piaoshu>=n)

{

s[i].piaoshu=s[i].piaoshu-n;

save();

printf("訂票成功,按任意鍵返回主菜單!\n\n");

getchar();

break;

}

printf("是否繼續? 請輸入y或n以回車鍵結束:\n");

scanf("%s",a);

}while(!strcmp(a,"y"));

}

void tuipiao()

{

int n;

char a[10],b[20];

do

{printf("請輸入客戶證件號:\n");

scanf("%s",b);

printf("請輸入您要退的機票數目:\n");

scanf("%d",&n);

if(strcmp(b,t[i].id)==0)

{s[i].piaoshu=s[i].piaoshu+n;

save();

printf("退票成功!\n\n");}

else {printf("退票失敗!\n");

printf("是否繼續? 請鍵入y或n以回車鍵結束:\n\n");

scanf("%s",a);

}while(!strcmp(a,"y"));

getchar();

}