飞机订票系统
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<conio.h>
#define N 2
typedef struct plane
{
char ID[10];
char Start_Place[10];
char End_Place[10];
float price;
int Buy_num;
int Max_num;
char time[20];
}PLANE;
PLANE p[N];
void menu();
void menu1();
void count()
{
char a[10];
int i, num = 0;
printf("请您输入要统计的飞机目的地:");
scanf("%s", a);
printf("航班代号 起始地点 目的地 票价 已售 乘客容量 时间/n");
for (i = 0; i<N; i++)
{
if (strcmp(a, p[i].End_Place) == 0)
{
num++;
printf("%s %s %s %7.2f %d %d %d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
}
}
printf("/n您想统计的航班有%d条!/n", num);
getchar();
menu1();
}
void browse()
{
int i;
system("cls");
printf("浏览航班信息:/n");
printf("航班代号 起始地点 目的地 票价 已售 乘客容量 时间/n");
for (i = 0; i<N; i++)
{
printf("%s %s %s %7.2f %d %d %s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
}
getchar();
menu();
}
void order()
{
int i, j;
PLANE temp;
for (i = 0; i<N; i++)
{
for (j = i; j<N; j++)
{
if (strcmp(p[i].time, p[j].time)>0)
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
browse();
}
void enter()
{
int i;
system("cls");
printf("请您输入航班信息:");
for (i = 0; i<N; i++)
{
printf("航班代号:");
scanf("%s", p[i].ID);
printf("起飞地点:");
scanf("%s", p[i].Start_Place);
printf("目的地点:");
scanf("%s", p[i].End_Place);
printf("票价:");
scanf("%f", &p[i].price);
p[i].Buy_num = 0;
printf("乘客容量:");
scanf("%d", &p[i].Max_num);
printf("起飞时间:");
scanf("%s", p[i].time);
}
getchar();
menu();
}
void buy()
{
char t[20], place[20];
int i, w = 0, num;
printf("时间");
scanf("%s", t);
printf("mudidi");
scanf("%s", place);
for (i = 0; i<N; i++)
{
if (strcmp(t, p[i].time) == 0 && strcmp(place, p[i].End_Place) == 0)
{
w = 1;
printf("%s %s %s %7.2f %d %d %s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
printf("买几张票!");
scanf("%d", &num);
if (p[i].Buy_num + num>p[i].Max_num)
{
printf("当前余票不足,只剩%d张", p[i].Max_num - p[i].Buy_num);
}
else
{
p[i].Buy_num = p[i].Buy_num + num;
printf("购票成功!");
}
}
}
if (w == 0)
printf("没有您要得票!");
getchar();
menu1();
}
void back()
{
char id[20];
int i, w = 0;
printf("id:");
scanf("%s", id);
for (i = 0; i<N; i++)
{
if (strcmp(id, p[i].ID) == 0)
{
p[i].Buy_num--;
printf("退票成功");
w = 1;
}
}
if (w == 0)
printf("退票失败");
getchar();
menu1();
}
void bowse_time()
{
char a[20];
int i, w = 0;
printf("请您输入要查询的飞机起飞时间:");
scanf("%s", a);
printf("航班代号 起始地点 目的地 票价 已售 乘客容量 时间/n");
for (i = 0; i<N; i++)
{
if (strcmp(a, p[i].time) == 0)
{
w = 1;
printf("%s %s %s %7.2f %d %d %s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
}
}
if (w == 0)
printf("没有您想查询的航班!/n");
getchar();
menu1();
}
void bowse_palce()
{
char a[10];
int i, w = 0;
printf("请您输入要查询的飞机目的地:");
scanf("%s", a);
printf("航班代号 起始地点 目的地 票价 已售 乘客容量 时间/n");
for (i = 0; i<N; i++)
{
if (strcmp(a, p[i].End_Place) == 0)
{
w = 1;
printf("%s %s %s %7.2f %d %d %d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
}
}
if (w == 0)
printf("没有您想查询的航班!/n");
getchar();
menu1();
}
void bowse_ID()
{
char a[10];
int i, w = 0;
printf("请您输入要查询的飞机航班号:");
scanf("%s", a);
printf("航班代号 起始地点 目的地 票价 已售 乘客容量 时间/n");
for (i = 0; i<N; i++)
{
if (strcmp(a, p[i].ID) == 0)
{
w = 1;
printf("%s %s %s %7.2f %d %d %d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
}
}
if (w == 0)
printf("没有您想查询的航班!/n");
getchar();
menu1();
}
void menu1()
{
int n, w1;
do
{
system("cls");
puts("/t/t/t/t 飞机售票操作!/n/n");
puts("/t/t*********************MENU*********************/n/n");
puts("/t/t/t/t1.Buy ticket");
puts("/t/t/t/t2.return ticket");
puts("/t/t/t/t3.bowse by time");
puts("/t/t/t/t4.bowse by end palce");
puts("/t/t/t/t5.bowse by plane ID");
puts("/t/t/t/t6.return to menu");
puts("/n/n/t/t**********************************************/n");
printf("Choice your number(1-6): [ ]/b/b");
scanf("%d", &n);
if (n<0 || n>6)
{
w1 = 1;
printf("your choice is not between 1 and 4,Please input again:");
getchar();
}
else w1 = 0;
} while (w1 == 1);
switch (n)
{
case 1:buy(); break;
case 2:back(); break;
case 3:bowse_time(); break;
case 4:bowse_palce(); break;
case 5:bowse_ID(); break;
case 6:menu();
}
}
int save()
{
int w = 1;
FILE *fp;
int i;
system("cls");
if ((fp = fopen("c://ticket.txt", "wb")) == NULL)
{
printf("/nCannot open file/n");
return NULL;
}
for (i = 0; i<N; i++)
if (fwrite(&p[i], sizeof(struct plane), 1, fp) != 1)
{
printf("file write error/n");
w = 0;
}
if (w == 1)
{
printf("file save ok!/n");
}
fclose(fp);
getchar();
menu();
}
int load()
{
FILE *fp;
int i, w;
w = 1;
system("cls");
if ((fp = fopen("c://ticket.txt", "rb")) == NULL)
{
printf("/nCannot open file/n");
w = 0;
return NULL;
}
for (i = 0; !feof(fp); i++)
{
fread(&p[i], sizeof(struct plane), 1, fp);
}
fclose(fp);
if (w == 1)
printf("Load file ok!");
getchar();
menu();
}
void main()
{
menu();
}
void menu()
{
int n, w1;
do
{
system("cls");
puts(" 飞机售票系统 ");
puts("*************************MENU*************************");
puts(" 1. Enter new plane");
puts(" 2. Browse all");
puts(" 3. opreration");
puts(" 4. Save file");
puts(" 5. Load file");
puts(" 6. Exit");
puts("******************************************************");
printf("Choice your number(1-6): ");
scanf("%d", &n);
if (n<0 || n>6)
{
w1 = 1;
printf("your choice is not between 1 and 6,Please input again:");
getchar();
}
else w1 = 0;
} while (w1 == 1);
switch (n)
{
case 1: enter(); break;
case 2: browse(); break;
case 3: menu1(); break;
case 4: save(); break;
case 5: load(); break;
case 6: exit(0);
}
}
![测试1:](https://img-blog.csdn.net/20150602162051692)