用c语言基础知识实现一个简单的航空购票系统
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include<math.h>
#include<Windows.h>
#include<time.h>
int online=0;//登录状态
int success = 0;//购票状态
int a = 0;//所定航班
int c = 0;//票号
struct stu {
char last[12];//姓名
char sex[4];//性别
char sf[18];//身份证
int phone[12];//电话
}sut, s;
void loginfo(void);
void meau(void); //主菜单
void meau1(void); //查询航班菜单
void me1(void); //按航班号查询
void meau2(void); //显示航班菜单
void meau3(void); //订票
void meau4(void); //退票
void me2piao(void);
void login(void);
int main() {
printf("正在初始化系统,请稍后......\n");
system("date /T");
system("TIME /T");
system("color 9");
Sleep(3000);
printf("正在加载航班信息,请稍后......");
Sleep(2000);
printf("\n");
system("cls");
login();
loginfo();
}
//登录
void loginfo(void) {
while (1) {
char name[32];
char password[16];
char line[128];
char name_tmp[32];
char password_tmp[16];
name[31] = '\0';
password[15] = '\0';
name_tmp[31] = '\0';
password_tmp[15] = '\0';
int number, count;
number = 0;//3次机会
count = 3;//循环3次
while (count--) {
char* ter;
FILE* file;
file = fopen("users.txt", "r");
if (file == NULL) { //打开文件users并且判断文件是否为空
printf("打开文件失败!");
}
printf(" *----------------------------------------------------------------------*\n");
printf(" | ***温馨提示:您只有三次机会,否则将关闭本系统*** |\n");
printf(" * ---------------------------------------------------------------------*\n");
int s = 0, i = 0;
printf("=========================欢迎使用1153购票系统==========================\n");
printf("请输入账号:");
scanf_s("%s", name, 31);
printf("请输入密码:");
scanf_s("%s", password, 15);
while (1) {
ter = fgets(line, sizeof(line), file); //读取一行
if (!ter) {
break;
}
sscanf_s(line, "%s %s", name_tmp, 31, password_tmp, 15);
if (strcmp(name, name_tmp) == 0 && strcmp(password, password_tmp) == 0) {
online = 1;
break;
}
}
if (ter) {
break;
}
else {
printf("账号或密码错误!");
number++;
online = 0;
system("pause");
system("cls");
if (number == 3) {
return;
}
}
if (ter) {
break;
}
}
if (online==1) {
system("cls");
break;
}
}
void (*m1)(); //函数指针
m1 = meau;
m1();
}
//各航班
void login(void) {
printf("**************************************************************************************************\n");
printf("*航班号 起点 终点 飞行日 起飞时间 到达时间 机型 价格 乘员定额 余票量 *\n");
printf("*CA1544 合肥 北京 1.3.5 10:55 \t12 : 40 A733 960 100 90 *\n");
printf("*MU5341 上海 广州 每日 14 : 20 \t16 : 15 M90 1280 150 150 *\n");
printf("*CZ3869 重庆 深圳 2.4.6 08 : 55 \t10 : 35 733 1010 100 100 *\n");
printf("*MU3682 桂林 南京 2.3.4 20 : 50 \t22 : 15 M90 1380 150 120 *\n");
printf("*HU1836 上海 北京 每日 09 : 40 \t11 : 20 738 1250 120 120 *\n");
printf("*CZ3528 成都 厦门 1.3.5 15 : 10 \t16 : 50 CRJ 1060 130 130 *\n");
printf("*MU4594 昆明 西安 2.4.6 10 : 15 \t11 : 40 328 1160 140 140 *\n");
printf("*SC7425 青岛 海口 1.3.6 19 : 20 \t21 : 20 DH4 1630 190 190 *\n");
printf("*CA1234 洛阳 上海 1.3.5 08 : 00 \t10 : 00 DH4 1050 300 300 *\n");
printf("*CA4321 shai 洛阳 2.4.6 16 : 00 \t18 : 00 DH4 1100 300 300 *\n");
printf("**************************************************************************************************\n");
}
//主菜单
void meau(void) { //系统界面
int sel;
printf("|==============欢迎使用1152购票系统=============|\n");
printf("|1.------- 查 询 -------|\n");
printf("|2.------- 修 改 信 息 -------|\n");
printf("|3.------- 订 --- 票 -------|\n");
printf("|4.------- 退 --- 票 -------|\n");
printf("|0.------- 退 出 系 统 -------|\n");
printf("|===============================================|\n");
printf("请选择:");
scanf_s("%d", &sel);
switch (sel) {
case 1:meau1(); break;
case 2:meau2(); break;
case 3:meau3(); break;
case 4:meau4(); break;
case 0:system("cls"); return ;
defualt:printf("输入错误!");
}
}
//查询子菜单
void meau1(void) { //查询航班信息
system("cls");
int subsel=0;
while (1)
{
printf("========================================================\n");
printf("= 各航线信息的子菜单 =\n");
printf("========================================================\n");
printf("* 1.查询个人信息 *\n");
printf("* 2.查询订单 *\n");
printf("* 3.返回主菜单 *\n");
printf("========================================================\n");
printf("请选择:");
scanf_s("%d", &subsel);
switch (subsel) {
case 1: me1(); break;
case 2: me2piao();
case 3:
system("cls"); return meau();
default:printf("输入错误\n");
}
}
}
void me1(void){
printf("===============个人信息=============\n");
printf("* 姓名:%s *\n",s.last);
printf("* 性别:%s *\n",s.sex);
printf("* 身份证:%s *\n",s.sf);
printf("* 联系电话:%d *\n",s.phone);
printf("------------------------------------\n");
system("pause");
system("cls");
}
void me2piao(void) {
if (success != 1) {
system("cls");
Sleep(1500);
printf("请先购票,谢谢!\n");
return meau1();
}
if (success == 1) {
if (a == 1) {
printf("********************************************************************\n");
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* CA1544 2019.11.14 *\n");
printf("* *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 合肥 hefei 北京 Beijing *\n");
printf("* 姓名:%s *\n", s.last);
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("* *\n");
printf("********************************************************************\n");
}
else if (a == 2) {
printf("********************************************************************\n"); //上海 广州
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* MU5341 2019.11.14 *\n");
printf("* 机型 M90 票价 1280 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 上海 Shanghai 广州 Guangzhou *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}
else if (a == 3) {
printf("********************************************************************\n"); //重庆 深圳
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* CZ3869 2019.11.14 *\n");
printf("* 机型 733 票价 1010 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 重庆 Chongqing 深圳 Shenzhen *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}
else if (a == 4) {
printf("********************************************************************\n"); //桂林 南京
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* MU3682 2019.11.14 *\n");
printf("* 机型 M90 票价 1380 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 桂林 Guilin 南京 Nanjing *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}
else if (a == 5) {
printf("********************************************************************\n"); //上海 北京
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* HU1836 2019.11.14 *\n");
printf("* 机型 738 票价 1250 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 上海 Shanghai 北京 Beijing *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}
else if (a == 6) {
printf("********************************************************************\n"); //成都 厦门
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* MU5341 2019.11.14 *\n");
printf("* 机型 CRJ 票价 1060 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 成都 Chengdu 厦门 Xiamen *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}
else if (a == 7) {
printf("********************************************************************\n"); //昆明 西安
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* MU5341 2019.11.14 *\n");
printf("* 机型 328 票价 1160 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 昆明 Kunming 西安 Xian *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}
else if (a == 8) {
printf("********************************************************************\n"); //青岛 海口
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* MU5341 2019.11.14 *\n");
printf("* 机型 DH4 票价 1630 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 青岛 Qingdao 海口 Haikou *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}else if (a == 9) {
printf("********************************************************************\n"); //洛阳 上海
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* MU5341 2019.11.14 *\n");
printf("* 机型 DH4 票价 1050 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 洛阳 Luoyang 上海 Shanghai *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}else if (a == 10) {
printf("********************************************************************\n"); //上海 洛阳
printf("* 登机牌 BOARDING PASS *\n");
printf("* 航班 日期 航位 序号 座位号 *\n");
printf("* FLIGHT DATE CLASS SERIAL NO. SEAT NO. *\n");
printf("* MU5341 2019.11.14 *\n");
printf("* 机型 DH4 票价 1100 *\n");
printf("* 始发地 From 目的地 To *\n");
printf("* 上海 Shanghai 洛阳 Lsuoyang *\n");
printf("* 姓名:%s *\n", s.last);
printf("* *\n");
printf("* 祝 您 旅 途 愉 快 ! *\n");
printf("********************************************************************\n");
}else {
printf("暂无信息!");
system("cls");
printf("1.5秒后自动跳转主菜单.....");
return meau();
}
}
system("pause");
system("cls");
return meau();
}
void meau2(void) { //修改个人信息
system("cls");
printf("请输入你的姓名:\n");
scanf_s("%s", &s.last, 12);
printf("请输入你的性别:\n");
scanf_s("%s", &s.sex, 4);
printf("请输入你的身份证号:\n");
scanf_s("%s", &s.sf, 18);
printf("请输入你的联系电话:\n");
scanf_s("%d", &s.phone[10]);
printf("正在更改中,请稍后....\n");
Sleep(3000);
printf("更改成功!\n");
printf("3秒后自动跳转主菜单!....\n");
Sleep(3000);
system("cls");
return meau();
}
void meau3(void) { //订票
system("cls");
printf(" *----------------------------------------------------------------------*\n");
printf(" | ***温馨提示:由于系统延迟,购票情况请以购票提示为准*** |\n");
printf(" * ---------------------------------------------------------------------*\n");
printf("**************************************************************************************************************\n");
printf("* 航班号 起点 终点 飞行日 起飞时间 到达时间 机型 价格 乘员定额 余票量 *\n");
printf("*01.CA1544 合肥 北京 1.3.5 10:55 \t12 : 40 A733 960 100 90 *\n");
printf("*02.MU5341 上海 广州 每日 14 : 20 \t16 : 15 M90 1280 150 150 *\n");
printf("*03.CZ3869 重庆 深圳 2.4.6 08 : 55 \t10 : 35 733 1010 100 100 *\n");
printf("*04.MU3682 桂林 南京 2.3.4 20 : 50 \t22 : 15 M90 1380 150 120 *\n");
printf("*05.HU1836 上海 北京 每日 09 : 40 \t11 : 20 738 1250 120 120 *\n");
printf("*06.CZ3528 成都 厦门 1.3.5 15 : 10 \t16 : 50 CRJ 1060 130 130 *\n");
printf("*07.MU4594 昆明 西安 2.4.6 10 : 15 \t11 : 40 328 1160 140 140 *\n");
printf("*08.SC7425 青岛 海口 1.3.6 19 : 20 \t21 : 20 DH4 1630 190 190 *\n");
printf("*09.CA1234 洛阳 上海 1.3.5 08 : 00 \t10 : 00 DH4 1050 300 300 *\n");
printf("*10.CA4321 shai 洛阳 2.4.6 16 : 00 \t18 : 00 DH4 1100 300 300 *\n");
printf("**************************************************************************************************************\n");
printf("请选择你要订的航班:");
scanf_s("%d", &a);
switch (a) {
printf("航班号 起点 终点 飞行日 起飞时间 到达时间 机型 价格 乘员定额 余票量\n");
case 1:printf("CA1544 合肥 北京 1.3.5 10:55 \t12 : 40 A733 960 100 90\n"); break;
case 2:printf("MU5341 上海 广州 每日 14 : 20 \t16 : 15 M90 1280 150 150 \n"); break;
case 3:printf("CZ3869 重庆 深圳 2.4.6 08 : 55 \t10 : 35 733 1010 100 100 \n"); break;
case 4:printf("MU3682 桂林 南京 2.3.4 20 : 50 \t22 : 15 M90 1380 150 120 \n"); break;
case 5:printf("HU1836 上海 北京 每日 09 : 40 \t11 : 20 738 1250 120 120 \n"); break;
case 6:printf("CZ3528 成都 厦门 1.3.5 15 : 10 \t16 : 50 CRJ 1060 130 130 \n"); break;
case 7:printf("MU4594 昆明 西安 2.4.6 10 : 15 \t11 : 40 328 1160 140 140 \n"); break;
case 8:printf("SC7425 青岛 海口 1.3.6 19 : 20 \t21 : 20 DH4 1630 190 190 \n"); break;
case 9:printf("CA1234 洛阳 上海 1.3.5 08 : 00 \t10 : 00 DH4 1050 300 300 \n"); break;
case 10:printf("CA4321 shai 洛阳 2.4.6 16 : 00 \t18 : 00 DH4 1100 300 300 \n"); break;
default:system("cls");
printf("暂无该航班!");
system("pause");
return meau3();
}
printf("==================请输入你的身份信息==================\n");
printf("请输入你的姓名:");
scanf_s("%s", &s.last,12);
printf("请输入你的性别:");
scanf_s("%s", &s.sex,4);
printf("请输入你的身份证号:");
scanf_s("%s", &s.sf,18);
printf("请输入你的联系电话:");
scanf_s("%d", &s.phone,12);
getchar();
system("pause");
fflush(stdin);
printf("请确认是否购买(1.确定/2.取消)\n");
fflush(stdin);
int yes;
scanf_s("%d",&yes);
if(yes==1){
system("cls");
printf("正在购票中,请稍后****\n");
Sleep(1500);
printf("============6=购票成功============\n"); Sleep(1500);
system("cls");
c = 1;
success = 1;
return meau();
}else {
printf("已取消!\n");
Sleep(1500);
printf("正在自动跳转主菜单......");
system("cls");
return meau();
}
}
void meau4(void) { //退票
system("cls");
if (success == 1) {
if (c == 1) {
printf("您账户下的票为:CA1544 合肥-北京");
printf("请确认是否退票(1.确定/0.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}else if (c == 2) {
printf("您账户下的票为:MU5341 上海-广州");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}else if (c == 3) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 4) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 5) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 6) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 7) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 8) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 9) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 10) {
printf("您账户下的票为:CZ3869 重庆-深圳");
printf("请确认是否退票(1.确定/2.取消)\n");
int t = 0;
scanf_s("%d", &t);
if (t == 1) {
success = 0;
}
}
else if (c == 0) {
printf("已取消\n");
}
printf("退票成功\n");
}
else {
printf("请先购票,谢谢!");
}
printf("3秒后自动跳转主菜单\n");
Sleep(3000);
system("cls");
return meau();
}