飞机订票系统(C语言版)

目录

飞机订票系统

一、问题描述

二、功能要求

三、算法提示

四、代码说明

五、代码段

六、效果展示 


飞机订票系统

备注:大一(上)C语言课程设计

一、问题描述

假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟,算作一个航班

通过该系统来实现机票的订购问题

二、功能要求

1、本系统采用一个包含M×N个数据的结构体数组

每个数据的结构应当包括:航班号、起飞地、目的地、座次号、座次订出与否标记、订座者的姓名和订座者的身份证号码

2、本系统显示这样的菜单:

(1)输入航班信息

(2)输出航班信息

(3)查找航班信息(按线路查询)

(4)订票预约

(5)退订

(6)退出系统

注:本系统成功执行菜单的每个功能,选项(4)和(5)将要求额外的输入

查找航班信息(按线路查)要输入查询航班的起飞地、目的地,查询结果显示空座的信息、数量、已订座的信息等

3、执行一个具体的功能之后,程序将重新显示菜单

建议相关数据信息最好用文本文件保存,从文本文件读取数据初始化,更新处理后的数据保存到文本文件中

三、算法提示

                  数据结构:结构体类型数组 

航班号

起飞地

目的地

座次号

座次订出与否的标记

订票者姓名

订票者身份证号码

char [  ]

char [  ]

char [  ]

int

char / int

char [  ]

char [  ]

四、代码说明

1、代码运行环境如下:

2、定义的各类数据切勿超出以下结构体的定义中指定的长度: 

struct flight // 航班 
      {
      	char fliname[10];  // 航班号 
      	char sp[36];       // 起飞地点 
      	char de[36];       // 目的地 
      	int  num1;         // 座位数
		int  num2;         // 已订出票数
      };
struct book // 预定 
      {
	    char fliname[10];  // 航班号 
      	char na[50];       // 姓名 
      	char id[19];       // 身份证号(至多18位数) 
      	char ph[30];       // 手机号 
      	int  st;           // 状态(1表示已经预约,0则表示已经退订) 
	  };

3、应将文件flightfile.txt、文件bookfile.txt和源代码文件放在同一目录下;

初始状态下,文件flightfile.txt和文件bookfile.txt可以为空;

运行程序后,可以通过输入航班信息功能向文件flightfile.txt中添加数据,可以通过订票预约功能向文件bookfile.txt中添加数据

4、文件flightfile.txt和文件bookfile.txt应采用ANSI编码,防止控制台输出乱码

飞机订票系统(C语言版)_第1张图片

五、代码段

#include 
#include 
#include 
#define M 9999


struct flight // 航班 
      {
      	char fliname[10];  // 航班号 
      	char sp[36];       // 起飞地点 
      	char de[36];       // 目的地 
      	int  num1;         // 座位数
		int  num2;         // 已订出票数
      };
struct book // 预定 
      {
	    char fliname[10];  // 航班号 
      	char na[50];       // 姓名 
      	char id[19];       // 身份证号(至多18位数) 
      	char ph[30];       // 手机号 
      	int  st;           // 状态(1表示已经预约,0则表示已经退订) 
	  };


FILE * fp1;
FILE * fp2; 
int count1 = 0;
int count2 = 0;
struct flight A[M];
struct book   B[M];


void init() // 初始化 
{
	fp1 = fopen("flightfile.txt", "r");
    if(fp1 == NULL)
        printf("can't open the flightfile! \n");
    else
	{
	  // 将文件指针移动到文件开头
	  fseek(fp1, 0, SEEK_SET);
	  
	  // 从文件flightfile.txt中格式化读取数据
	  while(fscanf(fp1, "%s %s %s %d %d", A[count1].fliname, A[count1].sp, A[count1].de, &A[count1].num1, &A[count1].num2) == 5) count1 ++ ;
	}
	fclose(fp1);
	
	fp2= fopen("bookfile.txt", "r");
	if(fp2 == NULL)
        printf("can't open the bookfile! \n");
    else
	{
	  // 将文件指针移动到文件开头
	  fseek(fp2, 0, SEEK_SET); 
	  
	  // 从文件bookfile.txt中格式化读取数据
	  while(fscanf(fp2, "%s %s %s %s %d", B[count2].fliname, B[count2].na, B[count2].id, B[count2].ph, &B[count2].st) == 5) count2 ++ ;
	}
	fclose(fp2);
}


void menu() // 菜单 
{
	printf("请输入你的选择:\n");
	printf("1.输入航班信息\n");
	printf("2.输出航班信息\n");
	printf("3.查找航班信息\n");
	printf("4.订票预约\n");
	printf("5.退订\n");
	printf("6.订票信息查询\n");
	printf("7.退出系统\n\n");
}


void save1() // 保存1(向flightfile.txt中保存) 
{
	int i;
	
    fp1 = fopen("flightfile.txt", "w+");
    
    fseek(fp1, 0, SEEK_SET); // 将文件指针移动到文件开头
	for(i=0; i0 )
	          {
	          	flag = 1;
	          	break;
			  }
	         
	    if(flag == 1) 
		  { 
		    int j = -1;
		    
			printf("姓名:");
			scanf("%s", B[count2].na);
			printf("身份证号:");
			scanf("%s", B[count2].id);
			printf("手机号:");
			scanf("%s", B[count2].ph);
			printf("请您确认输入的信息:\n航班号:%s\n姓名:%s\n身份证号:%s\n手机号:%s\n", B[count2].fliname, B[count2].na, B[count2].id, B[count2].ph);
			printf("输入数字1确认预约该航班,输入数字2重新选择订票预约:");
			scanf("%d", &j); 
		
			if(j == 1)
			   {
			   	  B[count2].st=1;
			   	  count2 ++ ;
	   	          A[i].num2 ++ ; // 预约成功后相应的航班的已订出票数++
	   	          save2();
	   	          save1();
	   	          printf("您已成功预约航班号为%s从%s出发到达%s的航班!祝您旅途愉快!\n\n", B[count2-1].fliname, A[i].sp,A[i].de);
			   }
			   	 
		    else
		       printf("请您重新选择订票预约!\n\n");
	      }  
	      
		else
		    printf("该航班不存在或是该航班已无可预约座位,请重新选择订票预约并输入存在的航班号!\n\n");
}


void unsubscribe() // 退订
{
	    int i, flag=0;
	    char fliname[10];  // 航班号 
      	char na[50];       // 姓名 
      	char id[19];       // 身份证号 
      	char ph[30];       // 手机号 
      	int  st;           // 状态(1表示已经预约,0则表示已经退订) 
      	
	    printf("请输入航班号:");
	    scanf("%s", fliname);
		printf("姓名:");
		scanf("%s", na);
		printf("身份证号:");
		scanf("%s", id);
		printf("手机号:");
		scanf("%s", ph);
		
		for(i=0; i

六、效果展示 

飞机订票系统(C语言版)_第2张图片

你可能感兴趣的:(课程设计与实验,c语言,课程设计)