前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >飞机订票系统—C语言版

飞机订票系统—C语言版

作者头像
WindCoder
发布2018-09-20 11:40:51
9.3K1
发布2018-09-20 11:40:51
举报
文章被收录于专栏:WindCoderWindCoder

简介

可以算个伪原创吧,这是之前为朋友做的一个课程设计,当初从网上找了几个最后修改出这么一个简单系统,当个作业交给老师还是没什么问题的。附件里有所有文件的打包下载。

附件内容

①AircraftBookingSystem(源文件).rar——这是源文件(即.c和.h)的打包

②AircraftBookingSystem.rar——这是源程序的打包

③C语言课程设计——飞机订票系统.doc

C语言课程设计——飞机订票系统.docx

这两个是最开始时写的课程报告文档。

④C语言课程设计——飞机订票系统a.doc

这是朋友说页数太多了,之后精简到我感觉实在没法精简的地步的课程报告文档。

③和④喜欢哪个用哪个吧,里面的封面是朋友给的。

程序的模块

1、 机票管理模块:含有机票信息的管理,对机票信息输入,查询,修改,删除。

2、订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询    所有机票信息)出现航班信息,确定订票后输入个人信息:姓名,证  件号, 联系电话,密码(退票时用)。回车订票结束,返回个人订票信息。

3、显示模块:含全部;航班号;出发地;目的地等方式查询所有机票信息。

4、退票模块:当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,   当密码正确时会显示您的个人信息,回车再是否确定退票。

5 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息

程序主界面

源代码

头文件

代码语言:javascript
复制
#include<stdio.h>  //标准输入、输出头文件
#include<string.h>    //包含字符串函数处理头文件
#include<stdlib.h>     //包含动态存储与释放函数头文件
#define N 10000

struct air         //定义结构体数组
{
	char num[10];//定义航班号
	char start[20];//航班起始站
	char over[20];//航班终点站
	char time[10];//飞行时间
	int count;//机票剩余数量
	int znum;//机票总数
	int fnum[12];//座次号
	char ft[12][5];//订出状态
}s[N];
struct airman
{
    char  name[10];//姓名
	char  id[20];//证件号
	char  telenum[12];//联系电话
	char  pass[10]; //密码
	char  airno[10]; //航班号
	int   fnum;// 航班座次

}am[N];
void input();    //输入航班信息
void print();    //输出航班信息
void save();     //保存航班信息
void read();     //读取航班信息
void search();   //查找航班信息
void shanchu();  //删除航班信息
void dingpiao(); //订票信息
void tuipiao();  //退票信息
void xiugai();   //修改信息

主函数

代码语言:javascript
复制
/**
功能:飞机订票系统
作者:
日期:2014-06-16
*/
#include<stdio.h>  //标准输入、输出头文件
#include<stdlib.h>     //包含动态存储与释放函数头文件
#include "AircraftBook.h"

//主函数
int main(void)
{
    mainMenu();
	system("pause");
	return 0;

}//主函数结束

实现函数

代码语言:javascript
复制
#include "AircraftBook.h"
int i;
int aj=0;
int m=0;
int jjs=0;
#define PRINT "%6s%12s%12s%10s%12d%12dn",s[i].num,s[i].start,s[i].over,s[i].time,s[i].znum,s[i].count    //定义输出格式
/************************************************************************
函数名: mainMenu
功能: 文件主菜单
参数:
返回值:空
************************************************************************/

 void mainMenu()
{
	int  j;
	printf("nn                       ★---您好,欢迎进入中国民航管理系统!---★n");
	printf("================================================================================n");
	do
	{
		printf("           -------- ☆        1.航班信息管理            ☆-------- nn"
			"           -------- ☆        2.浏览航班信息            ☆-------- nn"
			"           -------- ☆        3.查找航班信息             ☆-------- nn"
			"           -------- ☆        4.订票信息                ☆-------- nn"
			"           -------- ☆        5.退票信息                ☆-------- nn"
			"           -------- ☆        0.退出                    ☆-------- nn");
		printf("================================================================================n");
		printf("请在0-5中选择以回车键结束:nn");
		scanf("%d",&j);
		switch(j)
		{
		case 1:hhMenu();////调用航班信息管理模块
			break;
		case 2:print();//调用打印模块
			break;
		case 3:search();//调用查找模块
			break;
		case 4:dingpiao();//调用订票模块
			break;
		case 5:tuipiao();//调用退票模块
			break;
		case 0:;
			break;
		}
		system("cls");
	}while(j!=0);     //判断结束
	printf("nn -----------------★ 您好,感谢您使用中国民航管理系统!★--------- ★nn");
	printf("nnn                   谢谢使用中国民航管理系统,再见!nnn");
	printf("nn ---------------- ★--------------★--------------★---------------- ★n");
}
 /************************************************************************
 函数名:hhMenu()
 功能:航班信息主菜单
 参数:
 返回值:0
 ************************************************************************/
int hhMenu()
{

	  int  a;
	  char f[]="123"; //设置密码
	  printf("nn                       ★---您好,欢迎进入中国民航管理系统!---★n");
	  printf("================================================================================n");
	  printf("nn请输入密码(123)并以回车键结束:nn");
	  scanf("%s",f);          //读取密码
	  if(strcmp(f,"123")==0)
	  {
		  do
		  {
			  printf("           -------- ☆        1.输入航班信息            ☆-------- nn"
				  "           -------- ☆        2.修改航班信息            ☆-------- nn"
				  "           -------- ☆        3.删除航班信息            ☆-------- nn"
				  "           -------- ☆        0.退出                    ☆-------- nn");
			  printf("================================================================================n");
			  printf("请在0-3中选择以回车键结束:nn");
			  scanf("%d",&a);
			  switch(a)
			  {
			  case 1: input();//调用输入模块
				  break;
			  case 2:xiugai();//调用修改模块
				  break;
			  case 3:shanchu();  //调用删除模块
				  break;
			  case 0:
				  break;
			  }
			  system("cls");
		  }while(a!=0);     //判断结束
	  }
	  else
		  printf("输入密码错误!请检查您的密码是否正确!谢谢!再见!nn");
	 return 0;
  }

 /************************************************************************
 函数名:  input
 功能: 打印模块程序
 参数:
 返回值:空
 ************************************************************************/

void input()
{

	int y;
	int ss;
	int ssa;

	printf("请依次输入航班信息(机票数位0结束输入):nn"
		"完成输入信息请键入w以回车键结束nn");      //打印提示信息
	printf("--------------------------------------------------------------------------n");
	for(i=0;i<N;i++)
	{

		printf("请输入航班号:n");
		scanf("%s",&s[i].num);     //读取航班号
		printf("请输入起始站:n");
		scanf("%s",s[i].start);//读取起始站
		printf("请输入终点站:n");
		scanf("%s",s[i].over);//读取终点站
		printf("请输入时间:n");
		scanf("%s",s[i].time);//读取时间
		printf("请输入机票数(机票数为0结束输入):n",m);
		scanf("%d",&s[i].count);//读取机票数
		s[i].znum = s[i].count;//记录机票总数
		for (ss=0;ss<12;ss++)
		{
           s[i].fnum[ss]=ss+1;
		   strcpy(s[i].ft[ss],"未订");
		}

        m++;

		printf("第%d个信息已经输完是否继续?按任意数字键继续,按 0结束",m);
		scanf("%d",&y);
		if(y==0)
		{
			save();//将结构体信息存盘
			print();//输出输入的航班信息
			break;
		}

	}
}
 /************************************************************************
 函数名: save
 功能:  保存模块程序
 参数:
 返回值:空
 ************************************************************************/
void save()
{
	FILE *fp,*fp1;//定义文件指针

	if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错
	{
		printf("创建航班信息文件失败!nn");//打印出错提示
		getchar();
		return;
	}
	if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错
	{
		printf("创建航班信息文件失败!nn");//打印出错提示
		getchar();
		return;
	}

	for(i=0;i<m;i++)
		if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错
			printf("向航班信息文件输入数据失败!nn");
	fprintf(fp1,"%d",m);


	fclose(fp);//关闭文件
	fclose(fp1);//关闭文件

}
//void saveman()
//{
//	FILE *fp2,*fp3;//定义用户文件指针
//	if((fp2=fopen("manchen.dat","wb"))==NULL)//打开文件并判断是否出错
//	{
//		printf("创建用户文件失败!nn");//打印出错提示
//		getchar();
//		return;
//	}
//	if((fp3=fopen("manhao.dat","wb"))==NULL)//打开文件并判断是否出错
//	{
//		printf("创建用户文件失败!nn");//打印出错提示
//		getchar();
//		return;
//	}
//
//	for(i=0;i<m;i++)
//	if(fwrite(&am[i],sizeof(struct airman),1,fp2)==0)//向文件写入数据,并判断是否出错
//	printf("向用户文件输入数据失败!nn");
//	fprintf(fp3,"%d",m);
//	fclose(fp2);//关闭文件
//	fclose(fp3);//关闭文件
//}
 /************************************************************************
 函数名: read
 功能:  从文件读取信息模块
 参数:
 返回值:空
 ************************************************************************/
void read()
{
	FILE *fp,*fp1;//定义文件指针

	if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错
	{
		printf("出错,请检查航班文件是否存在,按任意键返回住菜单");//打印出错提示
		getchar();
	}
	if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错
	{
		printf("创建航班文件失败!nn");//打印出错提示
		getchar();
		return;
	}
	fscanf(fp1,"%d",&m);
	fclose(fp1);//关闭文件
	for(i=0;i<m;i++)
	{
		fread(&s[i],sizeof(struct air),1,fp);//从文件中读取信息
	}
	fclose(fp);//关闭文件



}
//void readman()
//{
//	FILE *fp2,*fp3;
//	if((fp2=fopen("manchen.dat","rb"))==NULL)//打开文件,并判断是否出错
//	{
//		printf("出错,请检查用户文件是否存在,按任意键返回住菜单");//打印出错提示
//		getchar();
//	}
//	if((fp3=fopen("manhao.dat","rb"))==NULL)//打开文件并判断是否出错
//	{
//		printf("创建用户文件失败!nn");//打印出错提示
//		getchar();
//		return;
//	}
//	fscanf(fp3,"%d",&m);
//	fclose(fp3);//关闭文件
//	for(i=0;i<m;i++)
//	{
//		fread(&am[i],sizeof(struct airman),1,fp2);//从文件中读取信息
//	}
//	fclose(fp2);//关闭文件
//}
 /************************************************************************
 函数名: print
 功能:  打印模块
 参数:
 返回值:空
 ************************************************************************/
void print()
{
	char w[10];
	read();//调用读取文件函数


	printf("航班号       起始站      终点站    时间       机票总数|剩余机票数n");
	for(i=0;i<m;i++)
	{
		printf(PRINT);//打印信息
	}
	printf("请按任意键回车键结束以返回上层菜单:n");
	scanf("%s",w);
}
 /************************************************************************
 函数名:search
 功能: 查询模块
 参数:
 返回值:空
 ************************************************************************/
void search()
{
	char name1[20];
	char name2[20];
	char ii[10];
	int n;
	char no[10];
	int ss;
	int js;
	do
	{
		printf("请选择查找方式:nn");//打印查询方式菜单
		printf("1.按航班号查找nn"
			"2.按终点站查找nn"
			"3.按航线查找nn"
			"0.返回nn");
		printf("请在0-3中选择:nn"
			"按其他键以回车键结束返回主菜单:nn");
		scanf("%d",&n);//读取查找方式
		if(n==0)
			break;
		switch(n)
		{
		case 1:
			printf("请输入航班号:n");
			scanf("%s",&no);//航班号
			break;
		case 2:
			printf("请输入终点站名称:n");
			scanf("%s",name2);//读取终点站
			break;
		case 3:
			printf("请输入起始站名称:n");
			scanf("%s",name1);//读取起始站
			printf("请输入终点站名称:n");
			scanf("%s",name2);//终点站
			break;
		}
		read();//调用读取函数
		//readman();
		for(i=0;i<m;i++)
		{
			if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件
			{
				printf("n查找航班信息成功!n");
				printf("航班号%s    机票总数:%d剩余机票数:%dn",s[i].num,s[i].znum,s[i].count);
				printf("------------------------------------------------------------------------");
				printf("起始站      终点站    时间       座次号   座次订出状态n");
				for (ss=0;ss<s[i].znum;ss++)
				{
					printf("%-s%12s%12s%12d%12sn",s[i].start,s[i].over,s[i].time,s[i].fnum[ss],s[i].ft[ss]);//打印信息
				}//打印信息

				if (strcmp(am[i].airno,s[i].num)==0)
				{
                  printf("n订票用户信息:n");
				  printf("*-----------------------------------*n");
				  printf("航班号      座次号      姓名      证件号      联系方式n");
				  printf("%-s%12d%12s%12s%12sn",am[i].airno,am[i].fnum,am[i].name,am[i].id,am[i].telenum);
				}
				printf("n该航班订票用户信息:n");
				printf("*-----------------------------------*n");
				printf("航班号      座次号      姓名      证件号      联系方式n");
				for(js=0;js<aj;js++)
				{
					if (strcmp(am[js].airno,s[i].num)==0)
					{

						printf("%-s%12d%12s%12s%12sn",am[js].airno,am[js].fnum,am[js].name,am[js].id,am[js].telenum);
					}

				}
				printf("*-----------------------------------*n");
				jjs=1;
				break;
			}
			if(strcmp(s[i].num,no)==0)//按航班号判断输出条件
			{
				printf("n查找航班信息成功!n");
				printf("航班号%s    机票总数:%d剩余机票数:%dn",s[i].num,s[i].znum,s[i].count);
				printf("------------------------------------------------------------------------n");
				printf("起始站      终点站    时间       座次号    座次订出状态n");
				for (ss=0;ss<s[i].znum;ss++)
				{
                 printf("%-s%12s%12s%12d%12sn",s[i].start,s[i].over,s[i].time,s[i].fnum[ss],s[i].ft[ss]);//打印信息
				}
				printf("n该航班订票用户信息:n");
				printf("*-----------------------------------*n");
				printf("航班号      座次号      姓名      证件号      联系方式n");
				for(js=0;js<aj;js++)
				{
					if (strcmp(am[js].airno,s[i].num)==0)
					{

						printf("%-s%12d%12s%15s%15sn",am[js].airno,am[js].fnum,am[js].name,am[js].id,am[js].telenum);
					}

				}
				printf("*-----------------------------------*n");
				jjs=1;
				break;
			}
		}
		strcpy(no,"0");//将航班号赋值为0
		printf("没有您需要的信息或查找完毕:nn"
			"是否继续查找?请键入yes或no以回车键结束n");
		scanf("%s",ii);
	}while(strcmp(ii,"yes")==0);//判断结束
}
 /************************************************************************
 函数名:shanchu
 功能: 删除模块
 参数:
 返回值:空
 ************************************************************************/
void shanchu()
{
	char name1[20];
	char name2[20];
	char ii[10];
	int n;
	char no[10];
	do
	{
		printf("请选择删除以方式回车键结束:nn");//打印删除方式菜单
		printf("*1.按航班号删除nn"
			"*2.按航线删除nn"
			"*0.返回nn");
		printf("请在0-2中选择以回车键结束:n");
		scanf("%d",&n);//读取删除方式
		if(n==0)
			break;    //跳出循环
		switch(n)
		{
		case 1:
			printf("请输入航班号:n");
			scanf("%s",&no);//读取航班号
			read();//调用读取函数
			break;//跳出循环
		case 2:
			printf("请输入起始站 名称:n");
			scanf("%s",name1);//读取起始站
			printf("请输入终点站名称:n");
			scanf("%s",name2);//读取终点站
			read();//调用读取函数
			break;//跳出循环
		}
		for(i=0;i<m;i++)
		{
			if(strcmp(s[i].num,no)==0||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判断输入信息是否存在
			{
				s[i]=s[m-1];
				m--;
			}

		}
		printf("查找完毕或没有这个信息nn");
		printf("是否继续删除n");
		printf("请键入yes或no以回车键结束n");
		scanf("%s",ii);       //读取是否继续信息
		save(); //调用读取函数
		if(!strcmp(ii,"yes")) //判断是否继续删除
			printf("请按任意键以回车键结束返回上层菜单:n");
		break;
	}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0);  //判断结束
	print();
}
 /************************************************************************
 函数名:dingpiao
 功能: 订票模块
 参数:
 返回值:空
 ************************************************************************/
void dingpiao()
{
	int n,jj;
    char  name[10];//姓名
	char  id[20];//证件号
	char  telenum[12];//联系电话
	char  pass[10]; //密码
	char a[10]="yes";

	while(!strcmp(a,"yes"))
	{
		search();//调用查询模块
	   if (jjs!=1)
	   {
		   printf("不存在该航班信息!n");
		   break;
	   }
		printf("用户名:");
	     scanf("%s",&name);
			  strcpy(am[aj].name,name);
			  printf("证件号:");
			  scanf("%s",&id);
			  strcpy(am[aj].id,id);
			  printf("联系电话:");
			  scanf("%s",&telenum);
			  strcpy(am[aj].telenum,telenum);
			  printf("密码:");
			  scanf("%s",&pass);
			  strcpy(am[aj].pass,pass);
			  strcpy(am[aj].airno,s[i].num);




        for (jj=0;jj<N;jj++)
        {
			if (strcmp(s[i].ft[jj],"未订")==0)
			{
				am[aj].fnum =jj+1;
				strcpy(s[i].ft[jj],"已订");
				break;
			}
        }
		n=1;
		if(s[i].count!=0&&s[i].count>=n)//判断是否出错
		{
			s[i].count=s[i].count-n;
			//saveman();
			save();//调用保存函数
			printf("订票成功!nn");
			printf("*-----------------------------------*n");
			printf("航班号      座次号      姓名      证件号      联系方式n");
            printf("%-s%12d%12s%15s%15sn",am[aj].airno,am[aj].fnum,am[aj].name,am[aj].id,am[aj].telenum);
			 aj++;

		}
		printf("是否继续? 请输入yes或no以回车键结束:n");//判断是否继续订票
		scanf("%s",a);
	};//判断结束

}
 /************************************************************************
 函数名:tuipiao
 功能:  退票模块
 参数:
 返回值:空
 ************************************************************************/
void tuipiao()
{
	int n;
	char a[10];
    char  name[10];//姓名
	char  id[20];//证件号
	char  telenum[12];//联系电话
	char  pass[10]; //密码
	int sj;
	int sa;
	int qs;
	do
	{
       // readman();
		read();//调用读取函数
		printf("用户名:");
		scanf("%s",&name);
		printf("证件号:");
		scanf("%s",&id);
       for (sj=0;sj<N;sj++)
       {
		   if ((strcmp(am[sj].name,name)==0)&&(strcmp(am[sj].id,id)==0))
		   {
			   printf("请输入密码:");
			   scanf("%s",&pass);
			   do
			   {

				   if(strcmp(am[sj].pass,pass)==0)
				   {



					   sa = am[sj].fnum-1;
					   am[sj].fnum = 0;
					   for (qs=0;qs<N;qs++)
					   {
						   if (strcmp(am[sj].airno,s[qs].num)==0)
						   {
							   s[qs].count=s[qs].count+1;
							   strcpy(s[qs].ft[sa],"未订");
							   break;

						   }
					   }
				        strcpy(am[sj].airno,"无");

					   save(); //调用保存模块
					   // saveman();
					   printf("退票成功!nn");
					   printf("用户机票信息!nn");
					   printf("航班号      座次号      姓名      证件号      联系方式n");
					   printf("%-s%12d%12s%12s%12sn",am[sj].airno,am[sj].fnum,am[sj].name,am[sj].id,am[sj].telenum);
					   break;

				   }
				   else{
					   printf("密码错误!");
					   printf("请重新输入密码:");
					   scanf("%s",&pass);
				   }
			   } while (strcmp(am[sj].pass,pass)!=0);

              break;
		   }
		   else if ((strcmp(am[sj].name,name)==0&&strcmp(am[sj].id,id))||strcmp(am[sj].name,name)&&strcmp(am[sj].id,id)==0)
		   {
               printf("用户名或证件号错误!");
			   break;
		   }
       }
	    if (sj>=N)
	    {
			printf("未找到该用户!");

	    }


		printf("是否继续? 请键入yes或no以回车键结束:nn");//判断是否继续退票
		scanf("%s",a);
	}while(!strcmp(a,"yes"));//判断并跳出循环
	getchar();
}
 /************************************************************************
 函数名:xiugai
 功能:  修改模块
 参数:
 返回值:空
 ************************************************************************/
void xiugai()
{
	struct xiu    //定义结构体
	{
		char no[10];
		char name1[20];
		char name2[20];
		char time[20];
		int count;
	}x[1];
	char j[10];
	int n;
	read();//调用读取模块
	do
	{
		printf( "请选择修改方式:nn"
			"*1,按航班号修改:nn"
			"*2,按航线修改: nn");
		printf("请在1---2中修改以回车键结束:nn");
		scanf("%d",&n);//读取修改方式
		switch(n)
		{
		case 1:printf("请输入航班号:n");
			scanf("%s",&x[0].no);//读取航班号
			for(i=0;i<m;i++)
			{

				if(strcmp(s[i].num,x[0].no)==0)//判断输出条件
				{
					printf("航班号       起始站      终点站    时间       机票数n");
					printf(PRINT);
					break;
				}
			}
			break;
		case 2:printf("请输入起始站:n");
			scanf("%s",x[0].name1);//读取起始站
			printf("请输入终点站:n");
			scanf("%s",x[0].name2);//读取终点站
			for(i=0;i<m;i++)
			{
				if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判断输出条件
				{
					printf("航班号       起始站      终点站    时间       机票数n");
					printf(PRINT);
					break;
				}
			}
			break;
		}

		strcpy(x[0].no,"0");
        //将结构体中的号为零
		printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:n");
		scanf("%s%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定义输入格式

		strcpy(s[i].num,x[0].no);//替换航班号
		strcpy(s[i].start,x[0].name1);//替换其始站
		strcpy(s[i].over,x[0].name2);//替换终点站
		strcpy(s[i].time,x[0].time);//替换时间
		s[i].count=x[0].count;//替换机票数
		save();//调用保存模块
		printf("是否继续?请键入yes或no以回车键结束:nn");
		scanf("%s",j);
	}while(strcmp(j,"yes")==0);  //判断结束
	print();
}

附件(打包下载)

[Downlink href="http://pan.baidu.com/s/1qWx5ZeW"]飞机订票系统—C语言版.rar[/Downlink]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 附件内容
  • 程序的模块
  • 源代码
    • 头文件
      • 主函数
        • 实现函数
        • 附件(打包下载)
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档