题目
飞机订票系统设计
功能:
(1)本飞机共有80个坐位,分20排, 每排4个位子。编号为A, B,C, D。如10D表示10 排D座。A和D靠窗,19到20排为吸烟区。定上票的乘客需给出姓名和身份证号,最后要打印出乘客清单。
(2)订票:分为自主订票和系统自动订票;前10排比后10排价位高。自主订票:显示出所有未售出的位置,供用户选择。系统自动订票:用户选择低价位还是高价位,系统自动分配相应的位置。
(3)保存:将相关数据写入txt文件,便于存、取操作。进一步要求:每次登录时读取上次保存在txt文件中的订票记录。
结果图
实现代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
struct Plane
{
int p[20][4];//标记座位是否被购买
char A[20];//座位号
char B[20];//座位号
char C[20];//座位号
char D[20];//座位号
};
Plane plane1;
void Chushihua()//初始化原始座位表
{
int i, j;
char ch,n,name[30],id[25];
for (i=0;i<20;i++)
for (j=0;j<4;j++)
plane1.p[i][j] = false; // 初始化所有位置为空
FILE *p = fopen("xinxi.txt", "w"); //存储座位表
FILE *p2 = fopen("xinxi2.txt", "w");//0对应座位还在,1对应座位已出售
if(p2 == NULL)
{
printf("open error!\n");
}
if(p == NULL)
{
printf("open error!\n");
}
for (i=0;i<20;i++)
{
for (j=0;j<4;j++)
{
if (plane1.p[i][j] == false)
{
char a[100];
sprintf(a,"%d",i+1);
fputs(a,p);
fputc(j+65,p);
fputs("\t",p);
fputs("0",p2);
fputs("\t",p2);
}
else
{
fputs(" \t",p);
fputs(" \t",p2);
}
}
fputs("\n",p);
fputs("\n",p2);
}
fclose(p);
fclose(p2);
remove("yonghuxingxi.txt");
}
void Self_Order()//自主订票
{
printf("\t\t========自主订票=======\t\t\n\n");
printf("\t\t现有如下空位:\t\t\n\n");
FILE *fp = fopen("xinxi.txt","r+");//打开文件
FILE *p = fopen("xinxi2.txt", "r");
if(fp == NULL)
{
printf("read error!\n");
}
if(p == NULL)
{
printf("read error!\n");
}
int i = 0;
char buf[999];//定义缓冲区,用于暂时存储数据
char buf1[999];//定义缓冲区,用于暂时存储数据
while(fgets(buf, 100, fp) != NULL)
{
fgets(buf1, 100, p);
sscanf(buf1,"%d%d%d%d", &plane1.p[i][0], &plane1.p[i][1], &plane1.p[i][2], &plane1.p[i][3]);
sscanf(buf,"%s%s%s%s", &plane1.A, &plane1.B, &plane1.C, &plane1.D)