📄 hangbanxitong.cpp
字号:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
int haoma;//-----------------------------------------全局变量,判断证件号是否正确输入
//#================================================================================================头文件
struct kehu //定义客户类型
{
int kehunum; //证件号
char kehuname[100]; // 客户名
int kehupiao; // 票数
int kehudianhua;// 航班号
char lendhang[100]; // 存放该用户订的航班名
}kehu[100];
struct hang //定义航班的类型
{
int hangnum; //航班号
char hangname[100]; // 城市名
char hangchubanshe[100]; //客户名
int hangriqi;// 共订票数
char zuozhename[100];// 起降时间
int hangyeshu;//折扣
int hangjiage;// 价格
int turefalse; // 空位
}hang[1000];
struct user
{
char name[100];
int ps;
int power;
}user[10];
//#=================================================================================================结构体
void zhuhan();
void kehuhan();
void tushuhan();
void chahang();
void admin();
void adduser();
void deluser();
void usercount();
void guest();
void addhang();
void delhang();
void findhang1();
void findhang2();
void findhang3();
void lendhang();
void huanhang();
void hangcount();
void addkehu();
void delkehu();
void kehucount();
void jieshuqingkuang();
//#==============================================================================================函数声明
int denglu()//登录处理
{
FILE *fp=NULL;
char name[20];
int i,ps;
int success=0;
printf("\n\n\n\n\n\n\n\n");
printf("#=======================================================================#\n\n\n\n");
printf(" 欢迎进入订票总系统 ! \n\n\n\n");
printf("#=======================================================================#\n\n\n");
do
{
printf("\n请输入用户名(或客户名):\n\n\n");
scanf("%s",name);
printf("\n请输入密码(或证件号):\n\n\n");
scanf("%d",&ps);
fp=fopen("user.txt","r");
if(fp==NULL)
{
printf("\n\n系统错误!\n"); //创建管理员
printf("\n请先输入管理员资料!\n\n");
getch();
adduser();
return(0);
}
for(i=0;fread(&user[i],sizeof(struct user),1,fp)!=0;i++)
{
if((strcmp(name,user[i].name)==0)&&(ps==user[i].ps))
{
printf("\n成功进入系统!\n");
success=1;
if(user[i].power==1)
{
printf("\n你是管理员!\n");
getch();
admin();
return(1);
}
}
}
fclose(fp);
fp=fopen("kehu.txt","r");
for(i=0;fread(&kehu[i],sizeof(struct kehu),1,fp)!=0;i++)
{
if((kehu[i].kehunum==ps)&&(strcmp(name,kehu[i].kehuname)==0))
{
success=1;
printf("\n成功进入系统!\n");
printf("\n你是尊敬的客户!\n");
getch();
haoma=ps;
guest();
return(2);
}
}
fclose(fp);
if(0==success)
{
printf("\n\n用户名或密码错误!\n请重新输入\n\n");
getch();
}
}
while(0==success);
return(3);
}
void usercount()//管理员信息
{
FILE *fp;
int i,n=0;
fp=fopen("user.txt","r");
for(i=0;fread(&user[i],sizeof(struct user),1,fp)!=0;i++)
{
printf("\nNO.%-3d 管理员名字:%-12s 密码:%-12d power:%d \n",i+1,user[i].name,user[i].ps,user[i].power);
n++;
}
fclose(fp);
printf("\n目前共有%d个管理员\n",n);
printf("\n任意键返回\n\n");
}
void adduser()//添加管理员
{
FILE *fp;
char choice='y';
int i=0;
fp=fopen("user.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("请你输入新管理员名字\n");
scanf("%s",user[i].name);
printf("请输入新管理员密码\n");
scanf("%d",&user[i].ps);
user[i].power=1;
fwrite(&user[i],sizeof(struct user),1,fp);
printf("是否要输入下个管理员信息(y/n)? \n");
scanf("%s",&choice);
}
printf("\n任意键返回\n");
fclose(fp);
}
void deluser()//删除管理员
{
FILE *fp,*fp2;
int i;
char name[10],choice;
fp=fopen("user.txt","r");
fp2=fopen("hangl.txt","w");
printf("请输入你要删除的管理员名\n");
scanf("%s",name);
for(i=0;fread(&user[i],sizeof(struct user),1,fp)!=0;i++)
{
if(strcmp(name,user[i].name)!=0)
{
fwrite(&user[i],sizeof(struct user),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该管理员信息(y/n)?\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("user.txt","w");
fp2=fopen("hangl.txt","r");
for(i=0;fread(&user[i],sizeof(struct user),1,fp2)!=0;i++)
{
fwrite(&user[i],sizeof(struct user),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("hangl.txt","w");
fclose(fp2);
printf("\n任意键返回\n");
getch();
return;
}
else
{
printf("\n任意键返回\n");
getch();
return;
}
}
//[========================================================================================================管理员函数
void addhang()//添加航班
{
FILE *fp;
int i=0,j=0,k=0,l=0;
char choice='y';
//---------------------------------------------------------自动赋最大序号值给新航班
fp=fopen("hang.txt","r");
for(j=0;fread(&hang[j],sizeof(struct hang),1,fp)!=0;j++)
{
if(hang[j].hangnum>=l)l=hang[j].hangnum;
}
fclose(fp);
//--------------
fp=fopen("hang.txt","a+");
while(choice=='y'||choice=='Y')
{
i++;
k=i+l;
hang[i].hangnum=k;
printf("请你输入城市名\n");
scanf("%s",hang[i].hangname);
printf("请你输入起航时间\n");
scanf("%s",hang[i].zuozhename);
printf("请你输入折扣\n");
scanf("%d",&hang[i].hangyeshu);
printf("请你输入票价\n");
scanf("%d",&hang[i].hangjiage);
hang[i].turefalse=200;
fwrite(&hang[i],sizeof(struct hang),1,fp);
printf("是否要输入下个航班(y/n)\n");
scanf("%s",&choice);
}
fclose(fp);
}
void findhang1() //航班名查航班1
{
FILE *fp;
char hangname[100];
int i;
fp=fopen("hang.txt","r");
printf("请输入你要查找的城市名\n");
scanf("%s",hangname);
for(i=0;fread(&hang[i],sizeof(struct hang),1,fp)!=0;i++)
{
if(strcmp(hangname,hang[i].hangname)==0)
{
if(hang[i].turefalse>=1)
{
printf("\n这个航班的详细资料是:\n");
printf("航班号: 城市名: 起航时间: \n");
printf("%-12d%-15s%-9s\n",hang[i].hangnum,hang[i].hangname,hang[i].zuozhename);
printf("\n此航班未满仓\n");
getch();
}
else
{
printf("\n此航班满仓\n");
printf("\n任意键返回\n");
getch();
fclose(fp);
return;
}
fclose(fp);
return;
}
}
printf("\n没有你要查询的航班\n");
printf("\n任意键返回\n");
getch();
fclose(fp);
return;
}
void findhang2() //起航时间查航班2
{
FILE *fp;
char zuozhename[100];
int i;
fp=fopen("hang.txt","r");
printf("请输入你所查找之起航时间\n");
scanf("%s",zuozhename);
for(i=0;fread(&hang[i],sizeof(struct hang),1,fp)!=0;i++)
{
if(strcmp(zuozhename,hang[i].zuozhename)==0)
{
if(hang[i].turefalse>=1)
{
printf("\n这航班的详细资料是:\n");
printf("航班号: 城市名: 起航时间: \n");
printf("%-12d%-15s%-9s\n",hang[i].hangnum,hang[i].hangname,hang[i].zuozhename);
printf("\n此航班现在无人借阅\n");
getch();
}
else
{
printf("\n航班满仓\n");
printf("\n任意键返回\n");
getch();
fclose(fp);
return;
}
fclose(fp);
return;
}
}
printf("\n没有你要查询的航班\n");
printf("\n任意键返回\n");
getch();
fclose(fp);
return;
}
void findhang3() //序号查航班3
{
FILE *fp;
char hangnum;
int i;
fp=fopen("hang.txt","r");
printf("请输入你所查找之航班号\n");
scanf("%d",&hangnum);
for(i=0;fread(&hang[i],sizeof(struct hang),1,fp)!=0;i++)
{
if(hang[i].hangnum==hangnum)
{
if(hang[i].turefalse>=1)
{
printf("\n这航班的详细资料是:\n");
printf("航班号: 城市名: 起航时间: \n");
printf("%-12d%-15s%-9s\n",hang[i].hangnum,hang[i].hangname,hang[i].zuozhename);
printf("\n航班未满仓\n");
getch();
}
else
{
printf("\n航班满仓\n");
printf("\n任意键返回\n");
getch();
fclose(fp);
return;
}
fclose(fp);
return;
}
}
printf("\n没有你要查询的航班\n");
printf("\n任意键返回\n");
getch();
fclose(fp);
return;
}
void hangcount() //航班信息
{
FILE *fp,*fp1;
int i,n=0,a=0,j;
fp=fopen("hang.txt","r");
fp1=fopen("kehu.txt","r");
for(i=0;fread(&hang[i],sizeof(struct hang),1,fp)!=0;i++)
{
for(j=0;fread(&kehu[j],sizeof(struct kehu),1,fp1)!=0;j++)
{
if(kehu[j].kehudianhua==hang[i].hangnum)
{
printf("客户名 %-14s 票数 d%\n",&kehu[j].kehuname,kehu[j].kehupiao);
hang[i].hangriqi=kehu[j].kehupiao+hang[i].hangriqi;
}
}
printf("航班号 城市名 共订票数 起航时间 折扣 票单价 空位");
printf("\n%-9d%-11s%-12d%-15s%-8d%-9d%-9d\n" ,hang[i].hangnum,hang[i].hangname,hang[i].hangriqi,hang[i].zuozhename,hang[i].hangyeshu,hang[i].hangjiage,hang[i].turefalse-hang[i].hangriqi);
n=n+1;
}
fclose(fp);
fclose(fp1);
printf("\n以上为航班总列表 目前共有%d个航班\n",n);
printf("\n任意键返回\n");
getch();
return;
}
void delhang() //删航班
{
FILE *fp,*fp2;
int i;
char hangname[100],choice;
fp=fopen("hang.txt","r");
fp2=fopen("hangl.txt","w");
printf("请输入你要删除的航班城市名\n");
scanf("%s",hangname);
for(i=0;fread(&hang[i],sizeof(struct hang),1,fp)!=0;i++)
{
if(strcmp(hangname,hang[i].hangname)!=0)
{
fwrite(&hang[i],sizeof(struct hang),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该航班(y/n)?\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("hang.txt","w");
fp2=fopen("hangl.txt","r");
for(i=0;fread(&hang[i],sizeof(struct hang),1,fp2)!=0;i++)
{
fwrite(&hang[i],sizeof(struct hang),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("hangl.txt","w");
fclose(fp2);
printf("\n任意键返回\n");
getch();
return;
}
else
{
printf("\n任意键返回\n");
getch();
return;
}
}
void lendhang() //订票
{
FILE *fp,*fp2;
int i,n;
int kehunum;
printf("请你输入你的证件号\n");
scanf("%d",&kehunum);
if(haoma!=kehunum){printf("\n请正确输入证件号\n\n\n\n");getch();lendhang();}
n=0;
fp=fopen("hang.txt","r");
fp2=fopen("kehu.txt","r");
printf("请输入你要订的航班的城市名字\n\n");
scanf("%s",kehu[n].lendhang);
for(i=0;fread(&hang[i],sizeof(struct hang),1,fp)!=0;i++)
{
if(strcmp(hang[i].hangname,kehu[n].lendhang)==0)
{
if(hang[i].turefalse<1)
{
printf("\n对不起,航班已满,订其他航班吧\n\n任意键返回\n");
fclose(fp);
fclose(fp2);
getch();
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -