该系统用了三个文件来写,main.c文件Flight_system.h头文件Flight_system.c文件。
mian.c文件主要调用Fligth_system.c文件的各个函数功能;
Flight_system.h文件主要编写航班管理系统的功能的定义;
Flight_system.c文件主要编写航班系统的各个功能的实现以及初始化;
该系统分为管理员和用户模式。需要管理员添加航班信息用户才能购买。
管理员是提前定义好的管理员账户:TJC,密码是123,登录时不验证密码,如需验证可在登录模块中自行添加判断语句。管理员登录后有1.添加航班;2、删除航班。3、修改航班。4、查询航班。4个功能。
需要先添加航班信息,该系统才能激活各个模块。当然,也对应着各个模块的错误反馈。用户模式:用户在管理员添加航班后,有4个功能。1、查询航班。2、购票。3、退票。4、改签。
代码:
main.c文件
#include"Flight_system.c"
int main(){
Customer *pArr = NULL;
Customer *p = NULL;
pArr = (Customer *)malloc(9*sizeof(Customer));//注册的用户较多就改变9的值
p = pArr;
Plane *qArr = NULL;
Plane *q = NULL;
qArr = (Plane *)malloc(9*sizeof(Plane));//注册的航班较多就改变9的值
q = qArr;
int mk=Wellcome();
while(1){
switch(mk){
case 1 :Estimate(p,User_num,q,Plane_num);break;
case 2 :Input(p,User_num); break;
case 3 : exit(0); break;
default : printf("输入有误!\n");
}
printf("1.登录 2.注册 3 退出\n");
int op;
scanf("%d",&op);
mk=op;
}
return 0;
}
Flight_system.h文件
#include<stdio.h>
static char Admin_id[10]="TJC";
static char Admin_psw[10] = "123tjc";
static int User_num = 1;//记录用户数
static int Plane_num =1;//记录航班数
static int Ticket_number[10]={0};//记录航班票数
static char User_number[10][10]={{000}};
static int Ticket_change =1;//记录改签情况
typedef struct Fight{
char Flight_number[10];
char Fly_space[10];
char Fall_space[10];
char Fly_time[10];
char Fall_time[10];
float Fares;
}Plane;
typedef struct User{
char User_id[10];
char User_psw[10];
char serial[10];//装票的航班号
}Customer;
int Wellcome();
char *Log();
void Input(Customer *pArr,int len);
void Estimate(Customer *pArr,int len,Plane *qArr, int len1);
//管理员登录
void fun1(Plane *qArr, int len);
void Add_flight(Plane *qArr, int len);//增加航班
void Delete_flight(Plane *qArr, int len);//删除航班
void Change_flight(Plane *qArr, int len);//修改航班
void Search_flight(Plane *qArr, int len);//查找航班
//普通用户
void fun2(Customer *pArr,int len,Plane *qArr, int len1);
void Check_flight(Plane *qArr, int len);//查看航班
void Buy_ticket(Plane *qArr, int len,Customer *pArr ,int len1);//购票
void Back_ticket(Plane *qArr, int len,Customer *pArr ,int len1);//退票
void Change_ticket(Plane *qArr, int len,Customer *pArr ,int len1);//改签
Flight_system.c文件
#include<stdio.h>
#include"Flight_system.h"
#include<stdlib.h>
#include<string.h>
#pragma warning(disable:4996)
int Wellcome(){
printf("\t\t\t欢迎来到航班管理系统!(按任意建进入)\n");
getchar();
system("clear");
printf("--------------------- 请选择要操作的命令--------------------------------\n\n");
printf("-------------------------- 1 登录---------------------------------------\n\n");
printf("-------------------------- 2 注册---------------------------------------\n\n");
printf("-------------------------- 3 退出---------------------------------------\n\n");
int n;
printf("请输入命令\n");
scanf("%d",&n);
return n;
}
char *Log(){
printf("请输入您的用户名:");
static char user_id1[10];
scanf("%s",user_id1);
char user_psw[10];
printf("请输入您的密码:");
scanf("%s",user_psw);
return user_id1;
}
void Input(Customer *pArr,int len){
char x[10];
char y[10];
int m =1;
while(m){
printf("请输入用户名:");
scanf("%s",x);
printf("请输入密码:");
scanf("%s",y);
for (int i = 0; i < len; ++i)
{
if (0==strcmp(x,pArr[i].User_id))
{
printf("该用户名已被使用!\n");
break;
}
else if(i==(len-1)){
system("clear");
printf("注册成功!\n");
strcpy(pArr[len-1].User_id,x);
strcpy(pArr[len-1].User_psw,y);
User_num++;
m=0;
break;
}
}
}
}
void Estimate(Customer *pArr,int len,Plane *qArr, int len1){
char * p1 = Log();
int i;
if(!strcmp(Admin_id,p1)){
system("clear");
printf("您好管理员\n请输入您的选项!\n");
fun1(qArr,len1);
}
else {
for ( i = 0; i < len; ++i)
{
if(!strcmp(p1,pArr[i].User_id)){
if(0==strlen(qArr[0].Flight_number)){
system("clear");
printf("顾客您好,当前暂无航班,请联系管理员登录增加航班!\n");
break;
}
system("clear");
printf("顾客您好!请输入您的选项!\n");
fun2(pArr,len,qArr,len1);
}
else if(i==(len-1)){
system("clear");
printf("没有该用户!请重新输入!\n");
}
}
}
}
void fun1(Plane *qArr, int len){
int m=1;
while(m){
printf("1.增加航班\n2.删除航班\n3.修改航班\n4.查询航班\n5.退出系统\n6.返回上一层\n");
int temp;
scanf("%d",&temp);
switch(temp){
case 1 :Add_flight(qArr,Plane_num);break;
case 2 :Delete_flight(qArr,Plane_num);break;
case 3 :Change_flight(qArr,Plane_num); break;
case 4 :Search_flight(qArr,Plane_num); break;
case 5 :exit(0); break;
case 6 :m=0; break;
default:printf("输入有误!\n");
}
}
}
void fun2(Customer *pArr,int len,Plane *qArr, int len1){
while(1){
printf("1.查看航班\n2.购票\n3.退票\n4.改签\n5.退出系统\n");
int temp;
scanf("%d",&temp);
switch(temp){
case 1 :Search_flight(qArr,Plane_num); break;
case 2 :Buy_ticket(qArr,Plane_num,pArr,User_num); break;
case 3 :Back_ticket(qArr,Plane_num,pArr,User_num); break;
case 4 :Change_ticket(qArr,Plane_num,pArr,User_num); break;
case 5 :exit(0); break;
default:printf("输入有误!\n");
}
}
}
void Add_flight(Plane *qArr, int len){
printf("请输入航班号:");
char name[10];
int temp=0;
scanf("%s",name);
for (int i = 0; i < len; ++i)
{
if(0==strcmp(name,qArr[i].Flight_number))
temp = 1;
}
if(temp){
system("clear");
printf("已有该航班,请重新输入!\n");
}
else {
strcpy(qArr[len-1].Flight_number,name);
printf("请输入航班起飞地点:");
scanf("%s",qArr[len-1].Fly_space);
printf("请输入航班落地地点:");
scanf("%s",qArr[len-1].Fall_space);
printf("请输入航班起飞时间:");
scanf("%s",qArr[len-1].Fly_time);
printf("请输入航班落地时间:");
scanf("%s",qArr[len-1].Fall_time);
printf("请输入航班票价:");
scanf("%f",&qArr[len-1].Fares);
printf("请输入航班票数:");
scanf("%d",&Ticket_number[len-1]);
Plane_num++;
system("clear");
printf("增加成功\n");
}
}
void Search_flight(Plane *qArr, int len){
printf("1.查询所有航班\n2.查询单个航班\n");
int m=1;
while(m){
int s;
scanf("%d",&s);
if(s==1){
system("clear");
printf("航班号\t起飞地点\t落地地点\t起飞时间\t落地时间\t票数\n");
for (int i = 0; i < len-1; ++i)
{
printf("%s\t%s\t\t%s\t\t%s\t\t%s\t\t%d\n",qArr[i].Flight_number,qArr[i].Fly_space,qArr[i].Fall_space,qArr[i].Fly_time,qArr[i].Fall_time,Ticket_number[i]);
}
m=0;
}
else if(s==2){
system("clear");
Check_flight(qArr,len);
m=0;
}
else{
system("clear");
printf("输入有误!\n");
m=0;
}
}
}
void Check_flight(Plane *qArr, int len){
printf("请输入你要查询的航班号:");
char s[10];
int l;
int n;
scanf("%s",s);
for ( l = 0; l < len-1; ++l)
{
if (0==strcmp(s,qArr[l].Flight_number))
{
n=l;
system("clear");
printf("航班号\t起飞地点\t落地地点\t起飞时间\t落地时间\t票数\n");
printf("%s\t%s\t\t%s\t\t%s\t\t%s\t\t%d\n",qArr[n].Flight_number,qArr[n].Fly_space,qArr[n].Fall_space,qArr[n].Fly_time,qArr[n].Fall_time,Ticket_number[n]);
break;
}
else if(l==(len-2)){
system("clear");
printf("没有此航班!\n");
}
}
}
void Delete_flight(Plane *qArr, int len){
printf("请输入您要删除的航班号:");
char name[10];
scanf("%s",name);
int i;
int n;
for(i=0;i<len;i++){
if(0==strcmp(name,qArr[i].Flight_number)){
n = i;
for(i = n+1 ;i<len;i++){
qArr[i - 1] = qArr[i];
}
Plane_num--;
system("clear");
printf("删除成功!\n");
break;
}
else if(i==(len-1)){
system("clear");
printf("没有该航班!\n");
}
}
}
void Change_flight(Plane *qArr, int len){
printf("请输入您要修改的航班号:");
char name[10];
scanf("%s",name);
int i;
int n;
for(i=0;i<len;i++){
if(0==strcmp(name,qArr[i].Flight_number)){
n = i;
printf("请输入航班号:");
scanf("%s",qArr[n].Flight_number);
printf("请输入航班起飞地点:");
scanf("%s",qArr[n].Fly_space);
printf("请输入航班落地地点:");
scanf("%s",qArr[n].Fall_space);
printf("请输入航班起飞时间:");
scanf("%s",qArr[n].Fly_time);
printf("请输入航班落地时间:");
scanf("%s",qArr[n].Fall_time);
printf("请输入航班票价:");
scanf("%f",&qArr[n].Fares);
printf("请输入航班票数:");
scanf("%d",&Ticket_number[n]);
system("clear");
printf("修改成功!\n");
break;
}
else if(i==(len-1)){
system("clear");
printf("没有该航班!\n");
}
}
}
void Buy_ticket(Plane *qArr, int len,Customer *pArr ,int len1){
printf("请输入姓名:");
int j;
int i,n,m=-1;
char user_name[10];
scanf("%s",user_name);
for (j = 0; j < len1; ++j)
{
if(0==strcmp(user_name,pArr[j].User_id)){
m = j;
}
}
if(m==(-1))
{
system("clear");
printf("没有此用户,请重新输入!\n");
}
else{
printf("请输入您要购买的航班号:");
char name[10];
scanf("%s",name);
for (i = 0; i < len; ++i)
{
if(0==strcmp(name,qArr[i].Flight_number)){
n = i;
Ticket_number[n]--;
strcpy(pArr[m].serial,qArr[i].Flight_number);
system("clear");
printf("购买成功!\n");
break;
}
else if(i==(len-1)){
system("clear");
printf("没有该航班!\n");
}
}
}
}
void Back_ticket(Plane *qArr, int len,Customer *pArr ,int len1){
printf("请输入姓名:");
int j;
int i,n,m=-1;
char user_name[10];
scanf("%s",user_name);
for (j = 0; j < len1; ++j)
{
if(0==strcmp(user_name,pArr[j].User_id)){
m = j;
}
}
if(m==(-1))
{
system("clear");
printf("没有此用户,请重新输入!\n");
}
else{
printf("请输入您要退的航班号:");
char name[10];
scanf("%s",name);
for (i = 0; i < len; ++i)
{
if(0==strcmp(name,qArr[i].Flight_number)){
n = i;
Ticket_number[n]++;
strcpy(pArr[m].serial,"000");
system("clear");
printf("退票成功!\n");
break;
}
else if(i==(len-1)){
system("clear");
printf("没有该航班!\n");
}
}
}
}
void Change_ticket(Plane *qArr, int len,Customer *pArr ,int len1){
if(Ticket_change){
printf("只能改签一次,不能重复改签!\n");
printf("请输入姓名:");
int j;
int i,n,m=-1;
int mn;
char user_name[10];
scanf("%s",user_name);
for (j = 0; j < len1; ++j)
{
if(0==strcmp(user_name,pArr[j].User_id)){
m = j;
}
}
if(m==(-1))
{
system("clear");
printf("没有此用户,请重新输入!\n");
}
else {
for ( mn = 0; mn < len; ++mn)
{
if(0==strcmp(pArr[m].serial,qArr[mn].Flight_number)){
Ticket_number[mn]++;
break;
}
}
printf("请输入您要改签的航班号:");
char name[10];
scanf("%s",name);
for (i = 0; i < len; ++i)
{
if(0==strcmp(name,qArr[i].Flight_number)){
n = i;
Ticket_number[n]--;
strcpy(pArr[mn-1].serial,qArr[i].Flight_number);
system("clear");
printf("改签成功!\n");
break;
}
else if(i==(len-1)){
system("clear");
printf("没有该航班!\n");
}
}
}
Ticket_change=0;
}
else {
printf("不能重复改签!\n");
}
}