栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

较简单的c语言航班管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

较简单的c语言航班管理系统

头文件
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
#define Q 10//终点站名
#define W 10//航班号
#define E 10//飞机型号
#define R 10//飞行周日
//#define T 10//剩员名额
#define Y 20//姓名
//#define Z 5//购票量
#define PK 3
typedef struct H//航班管理
{
	int g;
	char q[Q];
	char w[W];
	char e[E];
	char r[R];
	int t;
	int LP;
	//char y[Y];
	//int z;
}H;
typedef struct K
{
	//struct H h[PK];
	struct H* h;
	int gk;
	int m;
}K;
typedef struct P 
{
	char q[Q];
	char ok[W];
	char e[E];
	char r[R];
	int t;
	char y[Y];
	int z;
}P;
typedef struct V
{
	//struct P p[PK];
	struct P* p;
	int nk;
	int hk;//
}V;
void moop(struct V* v);//初始化
void mak(struct K* k);//初始化
int minm();//登录返回
void mok(struct K* k); // 录入航班信息
void xin(struct K* k);//查看航班信息
void shant(struct K* k,struct V* v);//删除航班信息
void shan(struct V* v,struct K* k); //订票
void kplo(struct V* v,struct K* k);//查看订票信息
void mopl(struct V* v);//浏览乘客信息
void xiu(struct K* k);//修改信息
void xiud(struct V* v, struct K* k);//修改订票信息
void baoc(struct K* k);//保存
void poom(struct K* k);//写入数据
void baon(struct V* v);//保存
void pook(struct V* v);//写入数据
#include"prk.h"
void moop(struct V* v)//初始化,开辟空间
{
	v->p = (struct P*)malloc(3 * sizeof(struct P));
	v->nk = PK;
	//memset(v->p, 0, sizeof(v->p));
	v->hk = 0;
	pook(v);
}
void pook(struct V* v)//写入数据,文件操作
{
	struct P jo = { 0 };
	FILE* pf = fopen("teskppt.txt", "rb");
	if (!pf)
	{
		pf = fopen("teskppt.ini", "w");
	}
	while (fread(&jo, sizeof(struct P), 1, pf))
	{
		v->p[v->hk] = jo;
		v->hk++;
	}
	fclose(pf);
	pf = NULL;
}
void mak(struct K* k)//初始化,开辟空间
{
	k->h = (struct H*)malloc(3 * sizeof(struct H));
	k->gk =PK;
	k->m = 0;
	poom(k);
}
void poom(struct K* k)//写入数据,文件操作
{
	struct H jo = { 0 };
	FILE* pf = fopen("teksakt.txt", "rb");
	if (!pf)
	{
		pf = fopen("teskppt.ini", "w");
	}
	while (fread(&jo, sizeof(struct H), 1, pf))
	{
		k->h[k->m] = jo;
		k->m++;
	}
	fclose(pf);
	pf = NULL;
}
void molp(struct K* k)//当空间不足时,增加空间
{
	if (k->m == k->gk)
	{
		struct H* p1 = realloc(k->h, (k->gk + 2) * sizeof(struct H));
		if (p1 != NULL)
		{
			k->h = p1;
			k->gk = k->gk + 2;
			printf("增加空间成功n");
		}
	}
}
void malp(struct V* v)//当空间不足时,增加空间
{
	
	if (v->hk == v->nk)
	{
		struct P* p2 = realloc(v->p, (v->nk + 2) * sizeof(struct P));
		if (p2 != NULL)
		{
			v->p = p2;
			v->nk = v->nk + 2;
			printf("增加空间成功n");
		}
	}
}
int minm(int op)//乘客或票务人输入账号密码登录
{
	int kp;
	char hao[12] = "987654321";//账号
	char mim[12] = "123456789";//密码
	char zah[12] = { 0 };//账号
	char mai[12];//密码
	if (op == 1)
	{
		printf("-----------  票   务   员   登   录  -------------n");
		
	}
	if (op == 2)
	{
		printf("-----------   乘    客    登    录   -------------n");
	}
	printf("账号(9位)>|:");
	scanf("%s", zah);
	printf("密码(9位)>|:");
	scanf("%s", mai);
	printf("是否确认登录: 是(1) 否(2)n");
	printf("是否登录>:");
	scanf("%d", &kp);
	if (kp == 1)
	{
		if (strcmp(hao, zah) == 0)
		{
			if (strcmp(mim, mai) == 0)
			{
				printf("登录成功n");
				return 2;
			}
			else
			{
				printf("密码输入错误n");
				return 5;
			}
		}
		if (strcmp(hao, zah) != 0)
		{
			printf("账号输入错误n");
			return 5;
		}
	}
	if (kp == 2)
	{
		return 5;
	}
	return 5;
}
void mok(struct K* k)//票务人录入航班信息
{
	int x = 0;
	int i = 0;
		molp(k);
		printf("航班号>:");
		scanf("%s", k->h[k->m].w);
		for (i = 0; i < k->m+1; i++)
		{
			if (strcmp(k->h[i-1].w, k->h[k->m].w) == 0)
			{
				x = 1;
				printf("已存在该航班信息请重新选择输入n");
				break;
			}
		}
		if (x == 0)
		{
			printf("飞机型号>:");
			scanf("%s", k->h[k->m].e);
			printf("飞行周日>:");
			scanf("%s", k->h[k->m].r);
			printf("剩员名额>:");
			scanf("%d", &k->h[k->m].t);
			printf("终点站名>:");
			scanf("%s", k->h[k->m].q);
			k->h[k->m].LP = k->h[k->m].t;
			k->m++;
		}
}
void xin(struct K* k)//乘客或票务人查看航班信息 
{
	int i = 0;
	if (k->m== 0)
	{
		printf("信息为空n");
	}
	else
	{
		
		printf("    |----------   航         班         信         息         管          理        系         统   ------------|n");
		printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
		printf("%5st%1st%3st%1st%1st%1st%1st%1st%1st%1st%1sn", "|", "航班号","|", "飞机型号", "|", "飞行周日", "|", "剩员名额", "|", "终点站名","|");
		printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
	
		for (i = 0; i < k->m; i++)
		{
			printf("%5st%1st%3st%3st%9st%7st%9st%5dt%9st%5st%9sn", "|", k->h[i].w, "|", k->h[i].e, "|", k->h[i].r, "|", k->h[i].t,"|", k->h[i].q, "|");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
		}
	}
}
void shant(struct K* k,struct V* v)//票务人删除航班信息
{ 
	int ko = 0;
	int nm = 0;
	int ps = 0;
	int s = 1;
	int i = 0;
	int xang = 0;
	int x = 0;
	int y = 0;
	char hp[Q];
	printf("请输入航班号>:");
	scanf("%s", hp);
	for (x = 0; x < k->m; x++)
	{
		
		if (strcmp(k->h[x].w, hp) == 0&& k->h[x].t == k->h[x].LP)
		{
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("%5st%1st%3st%1st%1st%1st%1st%1st%1st%1st%1sn", "|", "航班号", "|", "飞机型号", "|", "飞行周日", "|", "剩员名额", "|", "终点站名", "|");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("%5st%1st%3st%3st%9st%7st%9st%5dt%9st%5st%9sn", "|", k->h[x].w, "|", k->h[x].e, "|", k->h[x].r, "|", k->h[x].t, "|", k->h[x].q, "|");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("%dn", v->hk);
			ko++;
			y = x;
			printf("是否删除该航班信息 是(1)否(2)n");
			printf(">:");
			scanf("%d", &xang);
			break;
		}
		if (strcmp(k->h[x].w, hp) == 0 && k->h[x].t != k->h[x].LP)
		{
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("%5st%1st%3st%1st%1st%1st%1st%1st%1st%1st%1sn", "|", "航班号", "|", "飞机型号", "|", "飞行周日", "|", "剩员名额", "|", "终点站名", "|");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("%5st%1st%3st%3st%9st%7st%9st%5dt%9st%5st%9sn", "|", k->h[x].w, "|", k->h[x].e, "|", k->h[x].r, "|", k->h[x].t, "|", k->h[x].q, "|");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("此航班已有人购票是否删除并退票 是(1) 否(2)n");
			ko++;
			printf(">:");
			scanf("%d", &xang);
			break;
		}
	}
	if (xang == 1)
	{
		for (y = x; y < k->m; y++)
		{
			k->h[y] = k->h[y + 1];
		}
		k->m--;
		for (i = 0; i < v->hk; i++)
		{
			if (strcmp(v->p[i].ok, hp) == 0)
			{

				ps = i;
				for (ps = i; ps < v->hk + 1; ps++)
				{
					v->p[ps] = v->p[ps + 1];

				}
				v->hk--;
				i--;
			}
		}
		printf("删除成功n");

	}
	if (xang == 1)
	{
		printf("%dn", nm);
	}
	if (xang == 2)
	{
		printf("已退出n");
	}
	if (ko == 0)
	{
		printf("没有此航班信息n");
	}
	
}
void shan(struct V* v,struct K* k)//乘客订票
{
	int i = 0;
	malp(v);
	printf("航班号>:");
	scanf("%s", v->p[v->hk].ok);
	for (i = 0; i < k->m; i++)
	{
		if (strcmp(k->h[i].w, v->p[v->hk].ok) == 0)
		{
			printf("请输入姓名>:");
			scanf("%s", v->p[v->hk].y);
			printf("请输入购票量>:");
			scanf("%d", &v->p[v->hk].z);
			if (v->p[v->hk].z <= k->h[i].t)
			{
				strcpy(v->p[v->hk].ok, k->h[i].w);
				strcpy(v->p[v->hk].e, k->h[i].e);
				strcpy(v->p[v->hk].r, k->h[i].r);
				strcpy(v->p[v->hk].q, k->h[i].q);
				k->h[i].t = k->h[i].t - v->p[v->hk].z;
				//v->p[v->hk] = k->h[k->m];
				v->hk++;
				printf("购票成功n");
				break;
			}
			else
			{
				printf("购票失败n");
				printf("该航班剩员名额为>:");
				printf("%d名n", k->h[i].t);
			
				break;
			}
		}
	}
	if (i == k->m)
	{
		printf("没有此航班号n");
	}
}
void kplo(struct V* v,struct K* k)//乘客查看订票信息
{
	int x = 0;
	int i = 0;
	char xp[Q];
	printf("请输入姓名查找>:");
	scanf("%s", xp);
	printf(" |-----------               订                 票                 信                  息             ---------------|n");
	printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
	printf("%2st%3st%1st%3st%st%1st%1st%1st%1st%1st%1st%1st%5stn", "|", "姓名", "|", "航班号", "|", "飞机型号", "|", "飞行周日", "|", "购票量", "|", "终点站", "|");
	printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
	for (i = 0; i < v->hk; i++)
	{
		if (strcmp(v->p[i].y, xp)==0)
		{
			printf("%2st%1st%1st%1st%1st%3st%9st%3st%9st%1dt%1st%1st%5stn", "|", v->p[i].y, "|", v->p[i].ok, "|", v->p[i].e, "|", v->p[i].r, "|", v->p[i].z, "|", v->p[i].q, "|");
			printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
			x++;
		}
	}
	if (x == 0)
	{
		printf("没有此人信息n");
	}

}
void mopl(struct V* v)//票务人浏览乘客信息
{

	int i = 0;
	printf(" |-----------           乘            客           信           息          管            理         ---------------|n");
	printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
	printf("%2st%3st%1st%3st%st%1st%1st%1st%1st%1st%1st%1st%5stn", "|", "姓名", "|", "航班号", "|", "飞机型号", "|", "飞行周日", "|", "购票量", "|", "终点站", "|");
	printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
	if (v->hk > 0)
	{
		for (i = 0; i < v->hk; i++)
		{
			printf("%2st%1st%1st%1st%1st%3st%9st%3st%9st%1dt%1st%1st%5stn", "|", v->p[i].y, "|", v->p[i].ok, "|", v->p[i].e, "|", v->p[i].r, "|", v->p[i].z, "|", v->p[i].q, "|");
			printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
		}
	}
	else
	{
		printf("信息为空n");
	}
	
}
void xiu(struct K* k)//票务人修改信息   
{
	int a = 0;
	int i = 0;
	char hk[Q];
	printf("请输入要修改信息的航班号n");
	printf(" >:");
	scanf("%s", hk);
	for (i = 0; i < k->m; i++)
	{
		if (strcmp(k->h[i].w, hk) == 0)
		{
			printf("    |----------               航                班               信                 息              ------------|n");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("%5st%1st%3st%1st%1st%1st%1st%1st%1st%1st%1sn", "|", "航班号", "|", "飞机型号", "|", "飞行周日", "|", "剩员名额", "|", "终点站名", "|");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("%5st%1st%3st%3st%9st%7st%9st%5dt%9st%5st%9sn", "|", k->h[i].w, "|", k->h[i].e, "|", k->h[i].r, "|", k->h[i].t, "|", k->h[i].q, "|");
			printf("    |-------------|---------------------|-----------------------|-----------------------|-----------------------|n");
			printf("是否修改 是(1) 否(2)n");
			printf(" >:");
			scanf("%d", &a);
		}
		if (a == 1)
		{
			printf("飞机型号>:");
			scanf("%s", k->h[i].e);
			printf("飞行周日>:");
			scanf("%s", k->h[i].r);
			printf("剩员名额>:");
			scanf("%d", &k->h[i].t);
			printf("终点站名>:");
			scanf("%s", k->h[i].q);
			k->h[i].LP = k->h[i].t;
			printf("修改成功n");
			break;
		}
		if (a == 2)
		{
			printf("退出成功n");
			break;
		}
	}
	if (a == 0)
	{
		printf("没有该航班信息n");
	}
}
void xiud(struct V* v, struct K* k)//乘客退票
{
	int q = 10;
	int y = 0;
	int x = 0;
	int i = 0;
	char hk[Q];
	printf("请输入姓名>:");
	scanf_s("%s", hk);
	printf(" |-----------               订                 票                 信                  息             ---------------|n");
	printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
	printf("%2st%3st%1st%3st%st%1st%1st%1st%1st%1st%1st%1st%5stn", "|", "姓名", "|", "航班号", "|", "飞机型号", "|", "飞行周日", "|", "购票量", "|", "终点站", "|");
	printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
	for (i = 0; i < v->hk; i++)
	{
		if (strcmp(v->p[i].y, hk) == 0)
		{
			printf("%2st%1st%1st%1st%1st%3st%9st%3st%9st%1dt%1st%1st%5stn", "|", v->p[i].y, "|", v->p[i].ok, "|", v->p[i].e, "|", v->p[i].r, "|", v->p[i].z, "|", v->p[i].q, "|");
			printf(" |--------------|---------------|-----------------------|-----------------------|---------------|-------------------|n");
			q++;
		}
	}
	if (q > 10)
	{
		printf("是否确认退票 是(1) 否(2)n");
		printf(" >:");
		scanf("%d", &q);
	}
	if (q == 10)
	{
		printf("没有该信息n");
	}
	if (q == 1)
	{
		for (i = 0; i < v->hk; i++)
		{
			if (strcmp(v->p[i].y, hk) == 0)
			{
				for (y = 0; y < k->m; y++)
				{
					if (strcmp(k->h[y].w, v->p[i].ok) == 0)
					{
						k->h[y].t = k->h[y].t + v->p[i].z;
						break;
					}
				}
				x = i;
				for (x = i; x < v->hk; x++)
				{
					v->p[x] = v->p[x + 1];
				}
				v->hk--;
				i--;
			}
		}
		printf("退票成功n");
	}
	if (q == 2)
	{
		printf("已退出n");
	}
}
void baoc(struct K* k)//保存,文件操作
{
	int i = 0;
	FILE* pf = fopen("teksakt.txt", "wb");
	for (i = 0; i < k->m; i++)
	{
		fwrite(&(k->h[i]), sizeof(struct H), 1, pf);
	}
	fclose(pf);
	pf = NULL;
}
void baon(struct V* v)//保存,文件操作
{
	int i = 0;
	FILE* pf = fopen("teskppt.txt", "wb");
	for (i = 0; i < v->hk; i++)
	{
		fwrite(&(v->p[i]), sizeof(struct P), 1, pf);
	}
	fclose(pf);
	pf = NULL;
}
#include"prk.h"
void mpk()
{
	printf("--------------------------------------------------n");
	printf("**************************************************n");
	printf("*************       1 票务员    ******************n");
	printf("*************       2 乘客      ******************n");
	printf("*************       3 保存      ******************n");
	printf("*************       0 退出      ******************n");
	printf("**************************************************n");
	printf("    航   班    信    息    管    理    系    统   n");
	printf("--------------------------------------------------n");
}
void seak()
{
	printf("--------------------------------------------------n");
	printf("**************************************************n");
	printf("**********       1 录入航班信息      *************n");
	printf("**********       2 修改信息          *************n");
	printf("**********       3 删除航班信息      *************n");
	printf("**********       4 浏览乘客信息      *************n");
	printf("**********       5 查看航班信息      *************n");
	printf("**********       0 退出              *************n");
	printf("**************************************************n");
	printf("             票          务          员           n");
	printf("--------------------------------------------------n");
}
void kpl()
{
	printf("--------------------------------------------------n");
	printf("**************************************************n");
	printf("************         1 订票            ***********n");
	printf("************         2 查看航班信息    ***********n");
	printf("************         3 查看订票信息    ***********n");
	printf("************         4 退票            ***********n");
	printf("************         0 退出            ***********n");
	printf("**************************************************n");
	printf("                   乘          客                 n");
	printf("--------------------------------------------------n");
}
int main()
{
	int hk;
	struct K k;
	struct V v;
	mak(&k);//初始化
	moop(&v);//初始化
	int a;
	int op;
	do
	{
		mpk();
		printf("输入>:");
		scanf("%d", &op);
		switch (op)
		{
		case 1:
			 hk=minm(op);
			 if (hk == 2)
			 {
				 seak();// 票务员
				 do
				 {
					 printf("输入>:");
					 scanf("%d", &a);
					 switch (a)
					 {
					 case 1:

						 mok(&k);// 录入航班信息
						 seak();
						 break;
					 case 2:
						 xiu(&k);//修改信息
						 seak();
						 break;
					 case 3:
						 shant(&k, &v);//删除航班信息
						 seak();
						 break;
					 case 4:
						 mopl(&v);//浏览乘客信息
						 seak();
						 break;
					 case 5:
						 xin(&k);
						 seak();//查看航班信息
						 break;
					 case 0:
						 break;
					 default:
						 printf("输入错误n");
						 seak();
						 break;
					 }
				 } while (a);
			 }
				 break;
		case 2:
			hk = minm(op);
			if (hk == 2)
			{
				do
				{
					kpl();// 乘客
					printf("输入>:");
					scanf("%d", &a);
					switch (a)
					{
					case 1:
						shan(&v, &k);//订票
						break;
					case 2:
						xin(&k);
						break;
					case 3:
						kplo(&v, &k);//查看订票信息
						break;
					case 4:
						xiud(&v, &k);//退票
						break;
					case 0:
						break;
					default:
						printf("输入错误n");
						break;
					}
				} while (a);
			}
				break;
		case 3:
			baoc(&k);//保存
			baon(&v);//保存
			printf("保存成功n");
			break;
		case 0:
			break;
		default:
			printf("输入错误n");
			break;
		}
	} while (op);
	return 0;
}

较简单的一个c语言作业,希望对你们有帮助

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号