本文实例为大家分享了C语言实现航空订票系统的具体代码,供大家参考,具体内容如下
大一写的时候没有写注释,后来也懒得加了。在这里说一下读写文件的思路吧。
就是利用二进制将一整个结构体中的数据存入文件,然后读取文件时再用二进制的形式将结构体中的数据读取出来,边读取边创建链表,将结构体中的数据保存到链表中。
以下代码可直接复制粘贴就能运行,绝对是新手的好福利!
如果有第一次写这种大作业不知道如何下手,但又不想直接复制粘贴,想搞清楚这个代码的原理的可以私信我,毕竟我当时也第一次写这种大作业时也很苦恼(我当时写的要是有这么完整的代码该多好啊,我直接就是复制粘贴运行看效果)
// author:吴泽琛
// nylg
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
#include <iostream>
#define PRINTF "%s\t\t%d\t\t%s\t\t\t%s\t\t星期%d\t\t\t%d\n",airlinep->airlinenum,airlinep->airplanenum,airlinep->dep,airlinep->des,airlinep->time,airlinep->ticks
using namespace std;
typedef class mange
{
public:
char mangername[20];
char scert[20];
char securityscert[20];
class mange *next;
}manger;
typedef class use
{
public:
// char userairlinenum[20];//航班号
// int userairplanenum;//飞机号
// char userdes;//目的地
// char userdep;//出发时间
// int usertime;//起飞时间
int ticks;//票数
int bookcnt;//订票次数
char username[20];
char scert[20];
char securityscert[20];
char bookticks[2000][2000];//机票名字
class use *next;
}user;
typedef class airline
{
public:
char airlinenum[20];//航班号
int airplanenum;//飞机号
char dep[1000];//出发地点
char des[1000];//目的地
int time;//飞行时间(星期几)
int ticks;//票数
class airline *next;
}airline;
manger* mhead = NULL, *mend = NULL;
user *uhead = NULL, *uend = NULL;
airline *ahead = NULL, *aend = NULL;
airline *ahead1 = (airline*)malloc(sizeof(airline));
int mcnt, ucnt, acnt;
char mscert[200] = {"wsgly"};
void load();
void main1();
void changemenu();
void mainmenu();
void Registermenu();
void Loginmenu();
void mlmenu();
void ulmenu();
void Login();
void Register();
void uRegister();
void mRegister();
void mLogin();
void uLogin();
void userfunction();
void search();
void searchmenu();
void printairline();
void printdes();
void printtime();
void printticks();
void airlinesort();
void dessort();
void bookticks(user *userp);
void returnticks(user *userp);
void findairline(user *userp);
void mangerfunction();
void deleteusernum(char *airlinenum);
void addairline();
void deletenum();
void changeairline();
void searchuser();
void changeuserairline(char *userbookticks, char *bookticks);
void rmanger(manger *mhead);
void rairline(airline *ahead);
void ruser(user *uhead);
void readmangerfile();
void readuserfile();
void readairlinefile();
void title();
void date();
void cls();
void over();
void writefile(int flag);
int exist(char *name, int flag);
void hualihushao1();
void hualihushao2();
void searchscert();
void searchmangerscert();
void searchuserscert();
void changescert();
void changemangerscert();
void changeuserscert();
void print_message();
int main()
{
//hualihushao1();
system("color F6");
title();
mhead = (manger*)malloc(sizeof(manger));
uhead = (user*)malloc(sizeof(user));
ahead = (airline*)malloc(sizeof(airline));
ahead1->next = ahead;
ruser(uhead);
rmanger(mhead);
rairline(ahead);
// test
// user *q = uhead;
// while (q)
// {
// printf("%d %s %s %d %s\n",q->ticks,q->username,q->scert,q->bookcnt,q->securityscert);
// q = q->next;
// }
airline *p = ahead;
while (p)
{
printf("%s %d %s %s %d %d\n",p->airlinenum,p->airplanenum,p->dep,p->des,p->time,p->ticks);
p = p->next;
}
main1();
return 0;
}
void main1()
{
int choose;
int sign;
while (1)
{
cls();
date();
mainmenu();
char choose = getch();
switch(choose)
{
case '1':
cls();
Login();
break;
case '2':
cls();
Register();
break;
case '3':
cls();
searchscert();
break;
case '4':
cls();
changescert();
break;
case '5':
cls();
over();
cls();
break;
default :
printf("输入无效!");
break;
}
}
}
void Login()
{
int sign;
while (1)
{
cls();
date();
Loginmenu();
char choose = getch();
switch(choose)
{
case '1':
cls();
mLogin();
break;
case '2':
cls();
uLogin();
break;
case '3':
sign = 1;
break;
case '4':
cls();
over();
break;
default :
printf("输入无效!");
break;
}
if (sign)
{
break;
}
}
}
void Register()
{
int sign;
while (1)
{
cls();
date();
Registermenu();
char choose = getch();
switch(choose)
{
case '1':
cls();
mRegister();
break;
case '2':
cls();
uRegister();
break;
case '3':
sign = 1;
cls();
break;
case '4':
cls();
over();
cls();
break;
default :
printf("输入无效!");
break;
}
if (sign)
{
break;
}
}
}
void userfunction(user *userp)
{
int sign;
while (1)
{
cls();
date();
ulmenu();
char choose = getch();
switch(choose)
{
case '1':
cls();
bookticks(userp);
break;
case '2':
cls();
returnticks(userp);
break;
case '3':
cls();
findairline(userp);
break;
case '4':
cls();
search();
break;
case '5':
sign = 1;
cls();
break;
case '6':
cls();
over();
cls();
break;
default :
printf("输入无效!");
break;
}
if (sign)
{
break;
}
}
}
void mangerfunction()
{
int sign = 0;
int choose ;
while (1)
{
cls();
date();
mlmenu();
char choose = getch();
switch(choose)
{
case '1':
cls();
addairline();
break;
case '2':
cls();
deletenum();
break;
case '3':
cls();
changeairline();
break;
case '4':
cls();
searchuser();
break;
case '5':
cls();
search();
break;
case '6':
sign = 1;
cls();
break;
case '7':
cls();
over();
cls();
break;
default :
printf("输入无效!");
break;
}
if (sign)
{
break;
}
}
}
void mlmenu()
{
printf(" 管理员页面\n");
printf(" **************************************************\n");
printf(" ** 1.增加航班信息 **\n");
printf(" ** **\n");
printf(" ** 2.删除航班信息 **\n");
printf(" ** **\n");
printf(" ** 3.修改航班信息 **\n");
printf(" ** **\n");
printf(" ** 4.查看客户信息 **\n");
printf(" ** **\n");
printf(" ** 5.浏览航班信息 **\n");
printf(" ** **\n");
printf(" ** 6.返回 **\n");
printf(" ** **\n");
printf(" ** 7.退出 **\n");
printf(" **************************************************\n");
printf("请按键选择:");
}
void ulmenu()
{
printf(" 乘客页面\n");
printf(" **************************************************\n");
printf(" ** 1.订票 **\n");
printf(" ** **\n");
printf(" ** 2.退票 **\n");
printf(" ** **\n");
printf(" ** 3.查看已订机票 **\n");
printf(" ** **\n");
printf(" ** 4.浏览航班信息 **\n");
printf(" ** **\n");
printf(" ** 5.返回 **\n");
printf(" ** **\n");
printf(" ** 6.退出 **\n");
printf(" **************************************************\n");
printf("请按键选择:");
}
void mainmenu()
{
printf("\n\n");
printf(" 欢 迎 使 用 航 空 管 理 系 统 !\n");
printf(" **************************************************\n");
printf(" ** 1.登录 **\n");
printf(" ** **\n");
printf(" ** 2.注册 **\n");
printf(" ** **\n");
printf(" ** 3.找回密码 **\n");
printf(" ** **\n");
printf(" ** 4.修改密码 **\n");
printf(" ** **\n");
printf(" ** 5.退出 **\n");
printf(" **************************************************\n");
printf("请按键选择:");
}
void Registermenu()
{
printf(" 注册页面\n");
printf(" **************************************************\n");
printf(" ** 1.管理员注册 **\n");
printf(" ** **\n");
printf(" ** 2.乘客注册 **\n");
printf(" ** **\n");
printf(" ** 3.返回 **\n");
printf(" ** **\n");
printf(" ** 4.退出 **\n");
printf(" **************************************************\n");
printf("请按键选择:");
}
void Loginmenu()
{
printf(" 登录页面\n");
printf(" **************************************************\n");
printf(" ** 1.管理员登录 **\n");
printf(" ** **\n");
printf(" ** 2.用户登录 **\n");
printf(" ** **\n");
printf(" ** 3.返回 **\n");
printf(" ** **\n");
printf(" ** 4.退出 **\n");
printf(" **************************************************\n");
printf("请按键选择:");
}
void changemenu()
{
printf("\n\n");
printf("\t\t\t\t*******************************\n");
printf("\t\t\t\t** 1.修改航班号 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 2.修改飞机号 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 3.修改出发地点 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 4.修改目的地 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 5.修改起飞时间 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 6.修改票数 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 7.返回 **\n");
printf("\t\t\t\t*******************************");
printf("\n\n");
}
void searchmenu()
{
printf("\n\n\n\n");
printf("\t\t\t\t***********************************\n");
printf("\t\t\t\t** 1.查看航班信息 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 2.按航班号浏览 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 3.按起飞时间浏览 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 4.按机票数浏览 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 5.返回 **\n");
printf("\t\t\t\t** **\n");
printf("\t\t\t\t** 6.退出 **\n");
printf("\t\t\t\t***********************************\n");
printf("请按键选择:");
}
void ruser(user *uhead)
{
FILE *fp;
fp = fopen("user","a+");
ucnt = fread(uhead,sizeof(user),1,fp);
fclose(fp);
uend = uhead;
readuserfile();
}
void rmanger(manger *mhead)
{
FILE *fp;
fp = fopen("manger","a+");
mcnt = fread(mhead,sizeof(manger),1,fp);
fclose(fp);
mend = mhead;
readmangerfile();
}
void rairline(airline *ahead)
{
FILE *fp;
fp = fopen("airline","a+");
acnt = fread(ahead,sizeof(airline),1,fp);
fclose(fp);
aend = ahead;
readairlinefile();
}
void uRegister()
{
date();
user *p;
char username[1000];
char scert[1000];
char securityscert[2000];
FILE *fp;
if (ucnt == 0) //第一次添加
{
printf("\n\n\n\n\n\n\n");
printf("-------------请输入账户(按0退出):");
while (gets(username))
{
if (strcmp(username,"0") == 0)
{
return ;
}
if (strlen(username) <= 16 && !exist(username, 0))
break;
else if (exist(username, 0))
{
printf("-------------该账户已存在!请重新输入(按0退出):");
}
else
{
printf("-------------请输入长度为1到16位的账户:");
}
}
strcpy(uhead->username, username);
printf("-------------请输入密码:");
while (gets(scert))
{
if (strlen(scert) <= 16)
break;
else
printf("-------------请输入长度为1到16的密码:");
}
strcpy(uhead->scert, scert);
printf("-------------请输入您的密保:");
while (gets(securityscert))
{
if (strlen(securityscert) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的密保:");
}
}
strcpy(uhead->securityscert,securityscert);
uhead->bookcnt = 0;
uend = uhead;
uend->next = NULL;
}
else
{
p = (user*)malloc(sizeof(user));
printf("\n\n\n\n\n\n\n");
printf("-------------请输入账户(按0退出):");
while (gets(username))
{
if (strcmp(username,"0") == 0)
{
return ;
}
if (strlen(username) <= 16 && !exist(username, 0))
break;
else if (exist(username, 0))
{
printf("-------------该账户已存在!请重新输入(按0退出):");
}
else
{
printf("-------------请输入长度为1到16位的账户:");
}
}
strcpy(p->username, username);
printf("-------------请输入密码:");
while (gets(scert))
{
if (strlen(scert) <= 16)
break;
else
printf("-------------请输入长度为1到16的密码:");
}
strcpy(p->scert, scert);
printf("-------------请输入您的密保:");
while (gets(securityscert))
{
if (strlen(securityscert) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的密保:");
}
}
strcpy(p->securityscert,securityscert);
p->bookcnt = 0;
uend->next = p;
uend = p;
uend->next = NULL;
}
ucnt++;
writefile(0);
cls();
printf("\n\n\n\n\n\n\n");
printf("\t\t\t\t\t*******************************\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t 乘客%s创建成功! \n",uend->username);
printf("\t\t\t\t\t** 即将跳转至主页面... **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t*******************************\n");
Sleep(3000);
}
int exist(char *name, int flag)//1 为存在 0 为不存在
{
if (flag == 0)
{
user *p = uhead;
while (p != NULL && ucnt != 0)
{
if (strcmp(name,p->username) == 0)
{
return 1;
}
p = p->next;
}
}
else if (flag == 1)
{
manger *p = mhead;
while (p != NULL)
{
if (strcmp(name,p->mangername) == 0)
{
return 1;
}
p = p->next;
}
}
return 0;
}
void uLogin()
{
date();
int cnt = 4;
int flag = 0;
int k = 0;
int i;
char c;
user *p = uhead;
char username[2000];
char scert[2000];
printf("\n\n\n\n\n\n\n");
FILE *fp;
fp = fopen("user","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无乘客账号信息!!\n-------------请先前往注册!");
getchar();
return ;
}
printf("-------------请输入您的账户(按0退出):");
// gets(username);
// getch();
while (gets(username))
{
if (strcmp(username,"0") == 0)
{
return ;
}
if (strlen(username) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的账户:");
}
}
printf("-------------请输入您的密码(按0退出):");
// gets(scert
for (i = 0; (c = getch()) != '\r';)
{
if (c == '0')
{
return ;
}
if (i <= 15 && isprint(c))
{
scert[i] = c;
i ++;
k ++;
printf("*");
}
if ( k > 0 && c > 0 && c == '\b')
{
i --;
k --;
printf("\b");
printf(" ");
printf("\b");
}
}
scert[i] = '\0';
printf("\n");
while (p != NULL)
{
if (strcmp(p->username,username) == 0)
{
flag = 1;
while (strcmp(p->scert,scert) != 0)
{
cnt --;
if (cnt == 1)
{
cls();
printf("\n\n\n\n\n\n\n");
printf("-------------密码输入次数已用完!\n-------------即将退出登录页面...");
Sleep(3000);
cls();
return ;
}
printf("-------------密码错误!您还有%d次机会!\n",cnt - 1);
printf("-------------请重新输入:");
gets(scert);
}
printf("-------------乘客%s登录成功!\n-------------即将跳转至乘客页面...",p->username);
Sleep(3000);
cls();
userfunction(p);
}
p = p->next;
}
if (flag == 0)
{
printf("-------------不存在此账号!\n-------------请先前往注册!\n");
printf("-------------即将跳转至主页面...");
Sleep(2000);
}
}
void mLogin()
{
date();
int cnt = 4;
int flag = 0;
int k = 0;
int i;
char c;
manger *p = mhead;
char mangername[2000];
char scert[2000];
printf("\n\n\n\n\n\n\n");
FILE *fp;
fp = fopen("manger","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无管理员账号信息!!\n-------------请先前往注册!");
getchar();
return ;
}
printf("-------------请输入您的账户(按0退出):");
while (gets(mangername))
{
if (strcmp(mangername,"0") == 0)
{
return ;
}
if (strlen(mangername) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的账户:");
}
}
printf("-------------请输入您的密码(按0退出):");
for (i = 0; (c = getch()) != '\r';)
{
if (c == '0')
{
return ;
}
if (i <= 15 && isprint(c))
{
scert[i] = c;
i ++;
k ++;
printf("*");
}
if ( k > 0 && c > 0 && c == '\b')
{
i --;
k --;
printf("\b");
printf(" ");
printf("\b");
}
}
scert[i] = '\0';
printf("\n");
while (p)
{
if (strcmp(p->mangername,mangername) == 0)
{
flag = 1;
while (strcmp(p->scert,scert) != 0)
{
cnt --;
if (cnt == 1)
{
cls();
printf("\n\n\n\n\n\n\n");
printf("-------------密码输入次数已用完!\n-------------即将退出登录页面...");
Sleep(3000);
cls();
return ;
}
printf("-------------密码错误!您还有%d次机会!\n",cnt - 1);
printf("-------------请重新输入:");
// gets(scert);
for (i = 0; (c = getch()) != '\r';)
{
if (c == '0')
{
return ;
}
if (i <= 15 && isprint(c))
{
scert[i] = c;
i ++;
k ++;
printf("*");
}
if ( k > 0 && c > 0 && c == '\b')
{
i --;
k --;
printf("\b");
printf(" ");
printf("\b");
}
}
scert[i] = '\0';
printf("\n");
}
printf("-------------管理员%s登录成功!\n-------------即将跳转至管理员页面...",p->mangername);
// load();
//cls();
mangerfunction();
return ;
}
p = p->next;
}
if (flag == 0)
{
printf("-------------不存在此账号!\n-------------请先前往注册!\n");
printf("-------------即将跳转至主页面...");
Sleep(2000);
}
}
void mRegister()
{
date();
FILE *fp;
char mangerscert[1000];
char mname[1000];
char scert[1000];
char securityscert[2000];
printf("\n\n\n\n\n\n\n");
printf("-------------请输入管理员验证码:");
// getchar();
gets(mangerscert);
int cnt = 2;
while (--cnt >= 0)
{
if (strcmp(mangerscert,mscert) == 0)
{
printf("-------------管理员验证成功!!\n-------------即将进入注册页面...");
Sleep(1000);
cls();
break;
} else
{
printf("-------------管理员验证失败!!\n-------------您还有%d次机会!!\n",cnt + 1);
printf("-------------请重新输入:");
gets(mangerscert);
}
if (cnt == 0)
{
printf("-------------输入次数已用完!!\n-------------即将退出管理员注册系统...");
Sleep(2000);
cls();
return ;
}
}
manger *p;
if (mcnt == 0)
{
printf("\n\n\n\n\n\n\n");
printf("-------------请输入账户(按0退出):");
while (gets(mname))
{
if (strcmp(mname,"0") == 0)
{
return ;
}
if (strlen(mname) <= 16 )
{
break;
} else
{
printf("-------------请输入长度为1到16位的账户:");
}
}
strcpy(mhead->mangername,mname);
printf("-------------请输入密码:");
while (gets(scert))
{
if (strlen(scert) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位密码:");
}
}
strcpy(mhead->scert,scert);
printf("-------------请输入您的密保:");
while (gets(securityscert))
{
if (strlen(securityscert) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的密保:");
}
}
strcpy(mhead->securityscert,securityscert);
mend = mhead;
mend->next = NULL;
}
else
{
p = (manger*)malloc(sizeof(manger));
printf("\n\n\n\n\n\n\n");
printf("-------------请输入账户(按0退出):");
while (gets(mname))
{
if (strcmp(mname,"0") == 0)
{
return ;
}
if (strlen(mname) <= 16 && !exist(mname,1))
{
break;
}
else if (exist(mname,1))
{
printf("-------------该账户已存在!请重新输入!(按0退出)");
} else
{
printf("-------------请输入长度为1到16位的账户:");
}
}
strcpy(p->mangername,mname);
printf("-------------请输入密码:");
while (gets(scert))
{
if (strlen(scert) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的密码:");
}
}
strcpy(p->scert,scert);
printf("-------------请输入您的密保:");
while (gets(securityscert))
{
if (strlen(securityscert) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的密保:");
}
}
strcpy(p->securityscert,securityscert);
mend->next = p;
mend = p;
mend->next = NULL;
}
mcnt ++;
writefile(1);
cls();
printf("\n\n\n\n\n\n\n");
printf("\t\t\t\t\t*******************************\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t 管理员%s创建成功! \n",mend->mangername);
printf("\t\t\t\t\t** 即将跳转至主页面... **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t*******************************\n");
Sleep(3000);
}
void title()
{
system("color F2");
system("title **************************************************************************欢迎使用航空订票系统****************************************************************************");
}
void date()
{
system("date/t");
system("time/t");
}
void cls()
{
system("cls");
}
void over()
{
//hualihushao2();
cls();
system("color 6");
int time = 6;
printf("\n\n\n\n\n\n\n\n\n");
printf("\t\t\t\t\t\t感谢您的使用!!\n\n\n\n\n");
printf(" 程序即将关闭...");
while (--time >= 1)
{
printf("\r%d",time);
printf("\b");
Sleep(1000);
}
cls();
exit(0);
}
void readuserfile()
{
user *p = uhead;
FILE *fp = fopen("user","ab+");
while (fread(p,sizeof(user),1,fp))
{
if (p->next != NULL)
{
p = (user*)malloc(sizeof(user));
uend->next = p;
uend = p;
uend->next = NULL;
}
}
}
void readmangerfile()
{
manger *p;
FILE *fp;
p = mhead;
fp = fopen("manger", "ab+");
while (fread(p, sizeof(manger), 1, fp))
{
if (p->next != NULL)
{
p = (manger*)malloc(sizeof(manger));
mend->next = p;
mend = p;
mend->next = NULL;
}
}
}
void readairlinefile()
{
airline *p;
FILE *fp;
p = ahead;
fp = fopen("airline","ab+");
while (fread(p,sizeof(airline),1,fp))
{
if(p->next != NULL)
{
p = (airline*)malloc(sizeof(airline));
aend->next = p;
aend = p;
aend->next = NULL;
}
}
}
void addairline()
{
FILE *fp;
airline *p;
char airlinenum[2000];
if (acnt == 0)
{
printf("-------------请输入航班号(按0返回):");
// getchar();
while (gets(airlinenum))
{
if (strcmp(airlinenum,"0") == 0)
{
return ;
}
if (strlen(airlinenum) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的航班号:");
}
}
strcpy(ahead->airlinenum,airlinenum);
printf("-------------请输入飞机号:");
// getchar();
long long int airplanenum;
while (scanf("%lld",&airplanenum))
{
if (airplanenum <= 0)
{
printf("-------------请输入正确格式的飞机号:");
} else if (airplanenum > 999999)
{
printf("-------------请输入长度为1-6位的飞机号:");
} else
{
ahead->airplanenum = airplanenum;
break;
}
}
printf("-------------请输入出发地点:");
getchar();
char dep[1000];
while (gets(dep))
{
if (strlen(dep) <= 16)
{
strcpy(ahead->dep,dep);
break;
} else
{
printf("-------------请输入长度为1到16位的出发地点:");
}
}
// getchar();
printf("-------------请输入目的地:");
char des[1000];
while (gets(des))
{
if (strlen(des) <= 16)
{
strcpy(ahead->des,des);
break;
} else
{
printf("-------------请输入长度为1到16位的目的地:");
}
};
printf("-------------请输入机票数:");
int ticks;
while (scanf("%d",&ticks))
{
if (ticks <= 0)
{
printf("-------------请输入正确格式的机票数!");
} else if (ticks > 999)
{
printf("-------------请输入0-999以内的机票数!");
} else
{
ahead->ticks = ticks;
break;
}
}
int time;
printf("-------------请输入起飞时间(1-7):");
while (scanf("%d",&time))
{
if (time < 1 || time > 7)
{
printf("-------------请输入正确的起飞时间(周一到周日用1-7表示):");
} else
{
ahead->time = time;
break;
}
}
aend = ahead;
aend->next = NULL;
} else
{
printf("-------------请输入航班号(按0返回):");
getchar();
while (gets(airlinenum))
{
if (strcmp(airlinenum,"0") == 0)
{
return ;
}
if (strlen(airlinenum) <= 16)
{
break;
} else
{
printf("-------------请输入长度为1到16位的航班号:");
}
}
int flag = 0;
p = ahead;
while (p)
{
if (strcmp(p->airlinenum,airlinenum) == 0)
{
flag = 1;
break;
}
p = p->next;
}
if(flag == 1)
{
int ticks;
printf("-------------请输入要增加票的数量:");
while (scanf("%d",&ticks))
{
if (ticks <= 0)
{
printf("-------------请输入正确格式的机票数!");
} else if (ticks > 999)
{
printf("-------------请输入0-999以内的机票数!");
} else
{
p->ticks += ticks;
printf("-------------航班号%s票数添加成功!",p->airlinenum);
break;
}
}
} else
{
p = (airline*)malloc(sizeof(airline));
strcpy(p->airlinenum,airlinenum);
printf("-------------请输入飞机号:");
long long int airplanenum;
while (scanf("%lld",&airplanenum))
{
if (airplanenum <= 0)
{
printf("-------------请输入正确格式的飞机号:");
} else if (airplanenum > 999999)
{
printf("-------------请输入长度为1-6位的飞机号:");
} else
{
p->airplanenum = airplanenum;
break;
}
}
printf("-------------请输入出发地点:");
getchar();
char dep[1000];
while (gets(dep))
{
if (strlen(dep) <= 16)
{
strcpy(p->dep,dep);
break;
} else
{
printf("-------------请输入长度为1到16位的出发地点:");
}
}
printf("-------------请输入目的地:");
char des[1000];
while (gets(des))
{
if (strlen(des) <= 16)
{
strcpy(p->des,des);
break;
} else
{
printf("-------------请输入长度为1到16位的目的地:");
}
}
printf("-------------请输入机票数:");
int ticks;
while (scanf("%d",&ticks))
{
if (ticks < 0)
{
printf("-------------请输入正确格式的机票数!");
} else if (ticks > 999)
{
printf("-------------请输入0-999以内的机票数!");
} else
{
p->ticks = ticks;
break;
}
}
int time;
printf("-------------请输入起飞时间(1-7):");
while (scanf("%d",&time))
{
if (time < 1 || time > 7)
{
printf("-------------请输入正确的起飞时间(周一到周日用1-7表示):");
} else
{
p->time = time;
break;
}
}
getchar();
aend->next = p;
aend = p;
aend->next = NULL;
}
}
acnt ++;
writefile(2);
cls();
printf("\n\n\n\n\n\n");
printf("\t\t\t\t\t********************************\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t 航班号%s添加成功! \n",aend->airlinenum);
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t********************************\n");
printf("页面即将跳转...");
Sleep(2000);
}
void writefile(int flag)// 0 写用户 1 写管理员 2 写航班
{
user *userp = uhead;
manger *mangerp = mhead;
airline *airlinep = ahead;
FILE *fp;
if (flag == 0)
{
fp = fopen("user","w");
while (userp)
{
fwrite(userp,sizeof(user),1,fp);
userp = userp->next;
}
} else if(flag == 1)
{
fp = fopen("manger","w");
while (mangerp)
{
fwrite(mangerp,sizeof(manger),1,fp);
mangerp = mangerp->next;
}
} else if(flag == 2)
{
fp = fopen("airline","w");
while (airlinep)
{
fwrite(airlinep,sizeof(airline),1,fp);
airlinep = airlinep->next;
}
}
fclose(fp);
}
void deletenum()
{
airline *p, *sign;
p = ahead;
char airlinenum[1000];
int flag = 0;
FILE *fp;
fp = fopen("airline","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("\n\n\n\n\n\n\n");
printf("-------------暂无航班信息!!");
getchar();
printf("pause");
return ;
}
printf("-------------请输入您要删除的航班号(按0退出):");
while (scanf("%s",airlinenum))
{
if (strcmp("0",airlinenum) == 0)
{
getchar();
return ;
}
while (p)
{
if (strcmp(p->airlinenum,airlinenum) == 0)
{
flag = 1;
break;
}
p = p->next;
}
if (flag == 0)
{
printf("-------------查无此航班!");
printf("请重新输入(按0退出):");
p = ahead;
} else
{
break;
}
}
deleteusernum(airlinenum);
p = ahead;
if (strcmp(ahead->airlinenum,airlinenum) == 0)
{
sign = ahead;
strcpy(sign->airlinenum,ahead->airlinenum);
ahead = ahead->next;
ahead1->next = ahead;
}
while (p->next != NULL)
{
if (strcmp(p->next->airlinenum,airlinenum) == 0)
{
sign = p->next;
strcpy(sign->airlinenum,p->next->airlinenum);
p->next = p->next->next;
break;
}
p = p->next;
}
getchar();
printf("\n\n\n\n\n\n");
printf("-------------航班号%s删除成功!\n",sign->airlinenum);
printf("-------------页面即将跳转...");
Sleep(1000);
// free(sign);
writefile(2);
}
void deleteusernum(char *airlinenum)
{
user *userp = uhead;
int flag;
while (userp)
{
flag = 1;
for (int i = 0; i < userp->bookcnt; i ++)
{
if (strcmp(userp->bookticks[i],airlinenum) == 0)
{
flag = i;
break;
}
}
if (flag != 1)
{
for (int j = flag; j < userp->bookcnt - 1; j ++)
{
strcpy(userp->bookticks[j],userp->bookticks[j + 1]);
}
userp->bookcnt --;
}
userp = userp->next;
}
writefile(0);
}
void changeairline()
{
airline *airlinep = ahead1->next;
char airlinenum[2000];
int airplanenum, time, ticks;
char dep[2000], des[2000];
int exist = 0;
int flag = 0;
printf("\n\n\n\n\n\n");
FILE *fp;
fp = fopen("airline","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("\n\n\n\n\n\n\n");
printf("-------------暂无航班信息!!");
getchar();
getchar();
return ;
}
printf("航班号\t\t飞机号\t\t出发地点\t\t目的地\t\t出发时间\t\t票数\n");
while (airlinep)
{
printf(PRINTF);
airlinep = airlinep->next;
}
airlinep = ahead;
printf("-------------请输入您要修改的航班号(按0返回):");
// getchar();
while (gets(airlinenum))
{
if (strcmp("0",airlinenum) == 0)
{
return ;
}
while (airlinep)
{
if (strcmp(airlinep->airlinenum,airlinenum) == 0)
{
exist = 1;
break;
}
airlinep = airlinep->next;
}
if (!exist)
{
airlinep = ahead;
printf("-------------未查询到该航班!请重新输入:");
} else
{
break;
}
}
if (!exist)
{
return ;
} else
{
int choose ;
cls();
changemenu();
while (1)
{
printf("-------------请输入您要进行的操作:");
scanf("%d",&choose);
switch(choose)
{
case 1:
printf("-------------请输入修改后的航班号:");
scanf("%s",airlinenum);
changeuserairline(airlinep->airlinenum,airlinenum);
strcpy(airlinep->airlinenum,airlinenum);
break;
case 2:
printf("-------------请输入修改后的飞机号:");
scanf("%lld",&airplanenum);
airlinep->airplanenum = airplanenum;
break;
case 3:
printf("-------------请输入修改后的出发地点:");
scanf("%s",dep);
strcpy(airlinep->dep,dep);
break;
case 4:
printf("-------------请输入修改后的目的地:");
scanf("%s",des);
strcpy(airlinep->des,des);
break;
case 5:
printf("-------------请输入修改后的起飞时间:");
while (scanf("%d",&time))
{
if (time < 1 || time > 7)
{
printf("-------------请输入正确的起飞时间(周一到周日用1-7表示):");
} else
{
airlinep->time = time;
break;
}
}
break;
case 6:
printf("-------------请输入修改后的机票数:");
while (scanf("%d",&ticks))
{
if (ticks <= 0)
{
printf("-------------请输入正确格式的机票数!");
} else if (ticks > 999)
{
printf("-------------请输入0-999以内的机票数!");
} else
{
airlinep->ticks = ticks;
break;
}
}
break;
case 7:
flag = 1;
break;
}
if (flag)
{
break;
}
}
}
writefile(2);
}
void changeuserairline(char *userbookticks, char *bookticks)
{
user *userp = uhead;
while (userp)
{
for (int i = 0; i < userp->bookcnt; i ++)
{
if (strcmp(userp->bookticks[i],userbookticks) == 0)
{
strcpy(userp->bookticks[i],bookticks);
}
}
userp = userp->next;
}
writefile(0);
}
void searchuser()
{
user *userp = uhead;
char username[2000];
int flag = 0;
printf("-------------请输入您要查询的乘客名(按0退出):");
gets(username);
if (strcmp(username,"0") == 0)
{
return ;
}
while (userp)
{
if (strcmp(userp->username,username) == 0)
{
flag = 1;
break;
}
userp = userp->next;
}
if (!flag)
{
cls();
printf("\n\n\n\n\n\n\n");
printf("\t\t\t\t\t*******************************\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t** 不存在该乘客信息! **\n");
printf("\t\t\t\t\t** 即将跳转至上一页面... **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t*******************************\n");
Sleep(2000);
return ;
} else
{
long long int sign;
while (1)
{
cls();
printf("\n\n");
printf("\t\t\t\t\t 乘客%s的个人信息\n",userp->username);
printf("\t\t\t\t***********************************\n");
printf("\t\t\t\t 乘客账号:");
puts(userp->username);
printf("\t\t\t\t** **\n");
printf("\t\t\t\t 乘客密码:");
puts(userp->scert);
printf("\t\t\t\t** **\n");
printf("\t\t\t\t 订票次数:");
printf("%d\n",userp->bookcnt);
printf("\t\t\t\t** **\n");
if (userp->bookcnt)
{
printf("\t\t\t\t 订票航班号:");
for (int i = 0; i < userp->bookcnt; i ++)
{
printf("%s ",userp->bookticks[i]);
}
printf("\n");
printf("\t\t\t\t** **\n");
} else
{
printf("\t\t\t 此乘客还未预订任何航班!\n");
}
printf("请输入0返回上一页面!");
while (scanf("%lld",&sign))
{
if (sign == 0)
{
return ;
} else
{
printf("无效的输入!请重新输入:");
}
}
}
}
}
void bookticks(user *userp)
{
char airlinenum[2000];
airline *airlinep = ahead1->next;
int exist = 0;
int sign = 1;
printf("\n\n\n\n\n\n");
FILE *fp;
fp = fopen("airline","r");
char ch;
ch = fgetc(fp);
if (ch == EOF)
{
printf("-------------暂无航班信息!!");
getchar();
return ;
}
printf("航班号\t\t飞机号\t\t出发地点\t\t目的地\t\t出发时间\t\t票数\n");
while (airlinep)
{
printf(PRINTF);
airlinep = airlinep->next;
}
printf("-------------请输入您要预订的航班号(按0退出):");
getchar();
gets(airlinenum);
airlinep = ahead;
if (strcmp("0",airlinenum) == 0)
{
return ;
}
while (airlinep)
{
if (strcmp(airlinep->airlinenum,airlinenum) == 0)
{
if (airlinep->ticks == 0)
{
printf("-------------此航班无余票!\n");
sign = 0;
} else
{
int n;
printf("-------------请输入要预订的机票数量:");
while (scanf("%d",&n))
{
if (airlinep->ticks < n)
{
printf("-------------机票数量不够!请重新输入:");
} else if (airlinep->ticks >= n)
{
userp->ticks += n;
airlinep->ticks -= n;
break;
}
}
userp->bookcnt ++;
strcpy(userp->bookticks[userp->bookcnt - 1],airlinenum);
// userp->usertime = airlinep->time;
writefile(0);
writefile(2);
exist = 1;
break;
}
}
airlinep = airlinep->next;
}
if (exist == 0 && sign == 1)
{
printf("-------------不存在此航班!\n");
} else if (exist == 1)
{
printf("-------------航班%s订票成功!\n",airlinep->airlinenum);
}
printf("-------------页面即将跳转...");
Sleep(2000);
}
void returnticks(user *userp)
{
airline *airlinep = ahead;
char airlinenum[2000];
int exist = 0;
int flag = 0;
int cnt = userp->bookcnt;
if (cnt == 0)
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t\t\t\t您还未预订任何航班!");
getchar();
return ;
}
printf("\n\n\n\n\n\n");
for (int i = 0; i < cnt; i ++)
{
printf("-------------第%d次预订的航班号:",i + 1);
printf("%s\n",userp->bookticks[i]);
}
printf("-------------请输入要退还机票的航班号(按0退出):");
getchar();
while (gets(airlinenum))
{
if (strcmp(airlinenum,"0") == 0)
{
return ;
}
for (int i = 0; i < userp->bookcnt; i ++)
{
if (strcmp(airlinenum,userp->bookticks[i]) == 0)
{
flag = i;
exist = 1;
break;
}
}
if (!exist)
{
printf("-------------为查询到该航班号!\n");
printf("-------------请重新输入航班号(按0退出):");
} else
{
break;
}
}
int n;
while (airlinep)
{
if (strcmp(airlinep->airlinenum,airlinenum) == 0)
{
printf("-------------请输入要退订票数量:");
while (scanf("%d",&n))
{
if (userp->ticks < n)
{
printf("-------------您未持有此数量票量!\n");
printf("-------------请重新输入:");
} else if (userp->ticks >= n)
{
userp->ticks -= n;
airlinep->ticks += n;
break;
}
}
}
airlinep = airlinep->next;
}
if (userp->ticks == 0)
{
for (int i = flag; i < userp->bookcnt - 1; i ++)
{
strcpy(userp->bookticks[i],userp->bookticks[i + 1]);
}
userp->bookcnt --;
}
writefile(0);
writefile(2);
printf("-------------%s号航班退票成功!\n",userp->bookticks[flag]);
printf("-------------即将返回上一页面...");
Sleep(2000);
}
void findairline(user *userp)
{
int cnt = userp->bookcnt;
long long sign;
if (cnt == 0)
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t\t\t\t您还未预订任何航班!\n");
}
printf("\n\n\n\n\n\n");
for (int i = 0; i < cnt; i ++)
{
printf("\t\t\t\t\t\t第%d次预订的航班号:%s\t第%d预定航班的票数:%d\n",i + 1, userp->bookticks[i], i+1, userp->ticks);
}
printf("\n\n请输入0退出:");
while (scanf("%lld",&sign))
{
if (sign == 0)
{
break;
} else
{
printf("-------------无效的输入!请重新输入!");
}
}
}
void search()
{
int sign;
while (1)
{
cls();
date();
searchmenu();
char choose = getch();
switch(choose)
{
case '1':
cls();
print_message();
break;
case '2':
cls();
printairline();
break;
case '3':
cls();
printtime();
break;
case '4':
cls();
printticks();
break;
case '5':
cls();
sign = 1;
break;
case '6':
cls();
over();
cls();
default :
break;
}
if (sign)
{
break;
}
}
}
void airlinesort()
{
airline *f, *x, *y, *p;
f = NULL;
if (ahead1->next == NULL || ahead1->next->next == NULL)
{
return ;
}
while (f != ahead1->next->next)
{
for (p = ahead1; p->next->next != f; p = p->next)
{
if (strcmp(p->next->airlinenum,p->next->next->airlinenum) > 0)
{
x = p->next;
y = p->next->next;
p->next = y;
x->next = y->next;
y->next = x;
}
}
f = p->next;
}
return ;
}
void timesort()
{
airline *f, *x, *y, *p;
f = NULL;
if (ahead1->next == NULL || ahead1->next->next == NULL)
{
return ;
}
while (f != ahead1->next->next)
{
for (p = ahead1; p->next->next != f; p = p->next)
{
if (p->next->time > p->next->next->time)
{
x = p->next;
y = p->next->next;
p->next = y;
x->next = y->next;
y->next = x;
}
}
f = p->next;
}
return ;
}
void tickssort()
{
airline *f, *x, *y, *p;
f = NULL;
if (ahead1->next == NULL || ahead1->next->next == NULL)
{
return ;
}
while (f != ahead1->next->next)
{
for (p = ahead1; p->next->next != f; p = p->next)
{
if (p->next->ticks > p->next->next->ticks)
{
x = p->next;
y = p->next->next;
p->next = y;
x->next = y->next;
y->next = x;
}
}
f = p->next;
}
return ;
}
void printairline()
{
date();
airlinesort();
airline *airlinep = ahead1->next;
printf("\n\n\n\n\n\n");
FILE *fp;
fp = fopen("airline","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无航班信息!!");
getchar();
return ;
}
printf("航班号\t\t飞机号\t\t出发地点\t\t目的地\t\t出发时间\t\t票数\n");
while (airlinep)
{
printf(PRINTF);
airlinep = airlinep->next;
}
system("pause");
}
void printticks()
{
date();
tickssort();
airline *airlinep = ahead1->next;
printf("\n\n\n\n\n\n");
FILE *fp;
fp = fopen("airline","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无航班信息!!");
getchar();
return ;
}
printf("航班号\t\t飞机号\t\t出发地点\t\t目的地\t\t出发时间\t\t票数\n");
while (airlinep)
{
// printf("666\n");
printf(PRINTF);
airlinep = airlinep->next;
}
system("pause");
}
void printtime()
{
date();
timesort();
airline *airlinep = ahead1->next;
printf("\n\n\n\n\n\n");
FILE *fp;
fp = fopen("airline","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无航班信息!!");
getchar();
return ;
}
printf("航班号\t\t飞机号\t\t出发地点\t\t目的地\t\t出发时间\t\t票数\n");
while (airlinep)
{
printf(PRINTF);
airlinep = airlinep->next;
}
system("pause");
}
void searchscert()
{
printf("\n\n\n\n\n\n");
printf("\t\t\t\t\t********************************\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t** 1.管理员找回密码 **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t** 2.乘客找回密码 **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t** 3.返回 **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t********************************\n");
printf("请按键选择:");
int sign = 0;
char choose = getch();
while (1)
{
cls();
switch (choose)
{
case '1':
cls();
searchmangerscert();
sign = 1;
break;
case '2':
cls();
searchuserscert();
sign = 1;
break;
case '3':
sign = 1;
break;
default :
printf("输入无效!");
break;
}
if (sign)
{
break;
}
}
}
void searchmangerscert()
{
date();
manger *p = mhead;
char mangername[2000];
int flag = 0;
int sign = 0;
printf("\n\n\n\n\n\n\n");
FILE *fp;
fp = fopen("manger","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无管理员账号!!\n-------------请先前往注册!");
getchar();
return ;
}
printf("-------------请输入您的账号(按0退出):");
// getchar();
while (gets(mangername))
{
if (strcmp(mangername,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->mangername,mangername) == 0)
{
flag = 1;
break;
}
p = p->next;
}
if (flag)
{
break;
} else
{
printf("-------------此账号不存在!请重新输入(按0退出):");
p = mhead;
}
}
if (flag)
{
p = mhead;
char securityscert[2000];
printf("-------------请输入您设置的密保(按0退出):");
while (gets(securityscert))
{
if (strcmp(securityscert,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->securityscert,securityscert) == 0)
{
sign = 1;
break;
}
p = p->next;
}
if (sign)
{
printf("-------------密保输入正确!\n");
printf("-------------您的密码为%s\n",p->scert);
getchar();
return ;
} else
{
printf("-------------密保输入错误!请重新输入(按0退出):");
p = mhead;
}
}
}
}
void searchuserscert()
{
date();
user *p = uhead;
char username[2000];
int flag = 0;
int sign = 0;
printf("\n\n\n\n\n\n\n");
FILE *fp;
fp = fopen("user","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无乘客账号!!\n-------------请先前往注册!");
getchar();
return ;
}
printf("-------------请输入您的账号(按0退出):");
// getchar();
while (gets(username))
{
if (strcmp(username,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->username,username) == 0)
{
flag = 1;
break;
}
p = p->next;
}
if (flag)
{
break;
} else
{
printf("-------------此账号不存在!请重新输入(按0退出):");
p = uhead;
}
}
if (flag)
{
p = uhead;
char securityscert[2000];
printf("-------------请输入您设置的密保(按0退出):");
while (gets(securityscert))
{
if (strcmp(securityscert,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->securityscert,securityscert) == 0)
{
sign = 1;
break;
}
p = p->next;
}
if (sign)
{
printf("-------------密保输入正确!\n");
printf("-------------您的密码为%s\n",p->scert);
getchar();
return ;
} else
{
printf("-------------密保输入错误!请重新输入(按0退出):");
p = uhead;
}
}
}
}
void changescert()
{
printf("\n\n\n\n\n\n");
printf("\t\t\t\t\t********************************\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t** 1.管理员修改密码 **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t** 2.乘客修改密码 **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t** 3.返回 **\n");
printf("\t\t\t\t\t** **\n");
printf("\t\t\t\t\t********************************\n");
printf("请按键选择:");
char choose = getch();
int sign = 0;
while (1)
{
cls();
switch (choose)
{
case '1':
cls();
changemangerscert();
sign = 1;
break;
case '2':
cls();
changeuserscert();
sign = 1;
break;
case '3':
sign = 1;
break;
default :
printf("输入无效!");
break;
}
if (sign)
{
break;
}
}
}
void changemangerscert()
{
date();
manger *p = mhead;
char mangername[2000];
char scert[2000];
int flag = 0;
int sign = 0;
char securityscert[2000];
FILE *fp;
fp = fopen("manger","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无管理员账号信息!!\n-------------请先前往注册!");
getchar();
return ;
}
printf("\n\n\n\n\n\n\n");
printf("-------------请输入您的账号(按0退出):");
while (gets(mangername))
{
if (strcmp(mangername,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->mangername,mangername) == 0)
{
flag = 1;
break;
}
p = p->next;
}
if (flag)
{
break;
} else
{
printf("-------------此账号不存在!请重新输入:");
p = mhead;
}
}
if (flag)
{
p = mhead;
printf("-------------请输入您设置的密保(按0退出):");
while (gets(securityscert))
{
if (strcmp(securityscert,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->securityscert,securityscert) == 0)
{
sign = 1;
break;
}
p = p->next;
}
if (sign)
{
printf("-------------请输入修改后的密码(按0退出):");
while (gets(scert))
{
if (strcmp(scert,"0") == 0)
{
return ;
}
if (strlen(scert) <= 16)
{
break;
} else
{
printf("-------------请输入1到16位的密码:");
}
}
strcpy(p->scert,scert);
printf("-------------密码修改成功!");
writefile(1);
getchar();
return ;
} else
{
printf("-------------密保输入错误!请重新输入:");
p = mhead;
}
}
}
}
void changeuserscert()
{
date();
user *p = uhead;
char username[2000];
char scert[2000];
char securityscert[2000];
int flag = 0;
int sign = 0;
FILE *fp;
fp = fopen("user","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无管理员账号信息!!\n-------------请先前往注册!");
getchar();
return ;
}
printf("\n\n\n\n\n\n\n");
printf("-------------请输入您的账号(按0退出):");
while (gets(username))
{
if (strcmp(username,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->username,username) == 0)
{
flag = 1;
break;
}
p = p->next;
}
if (flag)
{
break;
} else
{
printf("-------------此账号不存在!请重新输入:");
p = uhead;
}
}
if (flag)
{
p = uhead;
printf("-------------请输入您设置的密保(按0退出):");
while (gets(securityscert))
{
if (strcmp(securityscert,"0") == 0)
{
return ;
}
while (p)
{
if (strcmp(p->securityscert,securityscert) == 0)
{
sign = 1;
break;
}
p = p->next;
}
if (sign)
{
printf("-------------请输入修改后的密码(按0退出):");
while (gets(scert))
{
if (strcmp(scert,"0") == 0)
{
return ;
}
if (strlen(scert) <= 16)
{
break;
} else
{
printf("-------------请输入1到16位的密码:");
}
}
strcpy(p->scert,scert);
printf("-------------密码修改成功!");
writefile(0);
getchar();
return ;
} else
{
printf("-------------密保输入错误!请重新输入:");
p = uhead;
}
}
}
}
void print_message()
{
date();
airline *airlinep = ahead1->next;
printf("\n\n\n\n\n\n");
FILE *fp;
fp = fopen("airline","r");
char ch;
ch = fgetc(fp);
rewind(fp);
if (ch == EOF)
{
printf("-------------暂无航班信息!!");
getchar();
return ;
}
printf("航班号\t\t飞机号\t\t出发地点\t\t目的地\t\t出发时间\t\t票数\n");
while (airlinep)
{
// printf("666\n");
printf(PRINTF);
airlinep = airlinep->next;
}
system("pause");
}
void hualihushao1()
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t\t\t\t即将进入订票系统...");
system("color 40");
Sleep(250);
system("color 04");
Sleep(250);
system("color 60");
Sleep(250);
system("color 24");
Sleep(250);
system("color AF");
Sleep(250);
system("color 92");
Sleep(250);
system("color 57");
Sleep(250);
system("color F4");
Sleep(250);
system("color F4");
Sleep(250);
}
void hualihushao2()
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t\t\t\t订票系统即将关闭...");
system("color 40");
Sleep(250);
system("color 04");
Sleep(250);
system("color 60");
Sleep(250);
system("color 24");
Sleep(250);
system("color AF");
Sleep(250);
system("color 92");
Sleep(250);
system("color 57");
Sleep(250);
system("color F4");
Sleep(250);
system("color F4");
Sleep(250);
}
void load()
{
system("color 8b"); //F1
cout << "\n\n\n\n\n\n\n\n\n\n\n\n";
cout << "\t\t\t\t\t正在进入系统..请稍等...";
for (int i = 0; i <= 100; i += 2)
{
cout << "\r\t\t\t\t\t\t\t\t" << i << "%";
Sleep(50);
if (i == 48)
{
Sleep(1000);
}
if (i == 76)
{
Sleep(800);
}
if (i == 100)
{
Sleep(500);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。