c语言实现机票管理系统源代码.docx
- 文档编号:12957709
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:29
- 大小:64.64KB
c语言实现机票管理系统源代码.docx
《c语言实现机票管理系统源代码.docx》由会员分享,可在线阅读,更多相关《c语言实现机票管理系统源代码.docx(29页珍藏版)》请在冰点文库上搜索。
c语言实现机票管理系统源代码
/*1、用户和管理员及航班信息请以英文字母或数字输入*/
要修改请于程序中修改
/*2、管理员账户为:
boss,密码为:
123。
保存在txt文件中,需
*/
/*3、部分文件读写为二进制读写,所以打开文件时会看到乱码*/
#inelude
#include
#include
#include
#defineN1000
voidzhujiemian();〃主界面函数
voidverify();〃用户及管理员登录选择
voidloginmanager();〃管理员登录
voidloginuser();〃用户登录
voidloginflightm();〃管理员登录机票系统
voidloginflightu();〃用户登录机票系统
voidsaveuser();〃用户信息保存模块程序
voidinput();//
输入航班信息
voidprint();//
输出航班信息
voidsave();//保存航班信息
voidread();//读取航班信息
voidpaixu();//
对所有航班按航班号排序
voidsearch();//
查找航班信息
voiddingpiao();//
订票信息
structusers//
管理员/用户信息结构体,管理员可以修改航班信息
charName[20];//管理员/用户姓名
charsexual[10];〃用户性别
charps[8];叭
用户密码
intage;//
用户年龄
longNumber;//用户身份证号码
intpower;//power为1是管理员登录,为0是用户登录
}user[N],up,mg;//up为键盘输入用户信息,user[N]为文件保存的用户信息,mg为管理员结构体
structair//航班信息结构体
{
intnum;
//
航班号
charstart[20];//
出发地
charover[20];//
目的地
chartime[10];//
时间
intcount;
//
票数
intprize;
//
票价
}s[N],fnew;
inti;
intm=0;//所有航班个数
#define
"%-d%12s%12s%10s%12d%10d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count
s[i].prize//定义输出格式
voidmain()〃主函数
zhujiemian();
}
voidzhujiemian()〃主界面函数
{
intj;
printf("#===================================================#\n");
printf("#
欢迎进入机票管理系统
#\n");
printf("#
1
、登录系统
#\n");
printf("#
2
、新用户注册
#\n");
printf("#
0
、退出
#\n");
printf("#===================================================#\n");printf("请在1-2中选择以回车键结束:
\n\n");
scanf("%d",&j);
switch(j)
{
case1:
verify();〃进入机票系统
break;
break;
case0:
;
break;
}
}
voidverify()〃验证用户及管理员信息模块
{
intj;
system("cls");
printf("#===================================================#\n");
printf("#1、管理员登录#\n");
printf("#2、用户登录#\n");
printf("#0、返回主界面#\n");
printf("#===================================================#\n");
switch(j)
case1:
loginmanager();〃进入管理员登录界面
break;
case2:
loginuser();〃进入用户登录界面
break;
case0:
system("cls");
zhujiemian();//进入主界面
break;
}
}
/********管理员登录确定函数**********/
voidloginmanager()
{
FILE*fp=NULL;〃定义文件指针
charDataFile[20]="manager.txt";//存储管理员信息的文件名
inti=0,j=1;
intsuccess=0;//登录成功的标志
printf("\n---管理员登录---\n");
fp=fopen(DataFile,"r");
if(fp==NULL)〃如果当前文件不存在,初始化根用户名为boss,密码为123,权限为管理员
{
printf("首次使用该系统!
\n");
printf("管理员账户为:
boss密码为:
123\n");
fp=fopen(DataFile,"a");〃以追加方式打开文件
user[0].Number=0;
strcpy(user[0].Name,"boss");
strcpy(user[0].sexual,"male");
user[0].age=22;
user[0].power=1;
strcpy(user[0].ps,"123");
fwrite(&user[0],sizeof(user),1,fp);
fclose(fp);
}
else
fclose(fp);
again:
printf("请输入管理员姓名:
");
scanf("%s",up.Name);〃输入用户名
up.Name[19]='\0';
printf("请输入管理员密码:
");
fflush(stdin);
for(i=0;i<7;i++)〃输入密码,以*在屏幕显示
{
up.ps[i]=getch();
up.ps[i+1]='\0';〃字符要以'\0'结尾
if(up.ps[i]=='\b')
{
i--;//接收前一个字符
printf("\b");
printf("\b");
continue;
}
if(up.ps[i]=='\r')
{
up.ps[i]='\0';
break;
}
printf("*");
}
fp=fopen(DataFile,"rt");
if(fp==NULL)//打开文件失败时提示
printf("\n打开%s失败!
按任意键结束程序\n",DataFile);
perror("Openfilefail");
getchar();
return;
}
if((fp=fopen("manager.txt","r"))==NULL)〃打开文件,并判断是否出错
{
打印出错提
printf("\n出错,请检查文件是否存在,按任意键返回主菜单\n");〃
示getchar();
}
else
fread(&mg,sizeof(structusers),1,fp);〃从文件中读取信息
fclose(fp);//关闭文件
if(strcmp(mg.Name,up.Name)==0&&strcmp(mg.ps,up.ps)==O)
{
success=1;
}
if(success==1)//
登录成功
printf("\n登录成功,按任意键进入机票调整系统!
\n");
getchar();
loginflightm();
}
else//未登录成功
{
fflush(stdin);〃清除输入缓冲区中的字符
printf("\n用户名或密码错误!
重新输入请按y,退出请按n:
\n");
relogin=getchar();
if(relogin=二'y'||relogin=二'Y')
{
getchar();
gotoagain;
}
else
verify();
exit(O);
voidloginuser()
{
FILE*fp=NULL,*fp1;〃定义文件指针
charDataFile[20]="yonghu.txt";//存储管理员信息的文件名
inti=0,j=0;
charrelogin;//是否重新登录
intsuccess=0;//登录成功的标志
printf("\n---用户登录---\n");
fp=fopen(DataFile,"r");
读写方式打开文件,若文件不存
//读取文件中数据if((fp1=fopen("howmanyusers.txt","a"))==NULL)//
在,则n=0
{
//printf(”创建文件失败!
\n\n");〃打印出错提示
n=0;
〃getchar();
//continue;
}
else
{
fp1=fopen("howmanyusers.txt","r");
fscanf(fp1,"%d",&n);〃读取fp1中的用户个数
}
fclose(fp1);
if((fp=fopen("yonghu.txt","r"))==NULL)〃打开文件,并判断是否出错
{
fp仁fopen("howmanyusers.txt","w+");〃以写方式打开
fclose(fpl);
\n");
printf("\n目前没有用户信息,请按ENTERS返回主菜单先进行注册!
getchar();
getchar();
system("cls");
zhujiemian();
}
for(i=0;i { fread(&user[i],sizeof(structusers),1,fp);〃从文件中读取信息 } fclose(fp);//关闭文件 //输入数据与文件中用户比对 again: printf("请输入用户姓名: "); scanf("%s",up.Name);〃输入用户名 up.Name[19]='\0'; fflush(stdin); for(i=0;i<7;i++)〃输入密码,以*在屏幕显示 { up.ps[i]=getch(); up.ps[i+1]='\0';〃字符要以'\0'结尾 if(up.ps[i]=='\b') { i--; up.ps[i]='\0';〃清除前一个字符 i--;〃接收前一个字符 printf("\b"); printf("\b"); continue; } if(up.ps[i]=='\r') up.ps[i]='\O'; break; } printf("*"); } for(i=0;i { if(strcmp(user[i].Name,up.Name)==0&&strcmp(user[i].ps,up.ps)==O) { success=1; break; } } if(success==1)//登录成功 { printf("\n登录成功,按任意键进入机票调整系统! \n"); getchar(); loginflightu(); } else//未登录成功 { fflush(stdin);〃清除输入缓冲区中的字符 printf("\n用户名或密码错误! 重新输入请按y,退出请按n: \n"); relogin=getchar(); if(relogin=二'y'||relogin=二'Y') { getchar(); gotoagain; } else { verify(); exit(0); } voidsaveuser(structusers[])〃用户信息保存模块程序 { FILE*fp,*fp1;〃定义文件指针 if((fp=fopen("yonghu.txt","a"))==NULL)〃打开文件并判断是否出错 { printf("创建文件失败! \n\n");〃打印出错提示 getchar(); return; } if((fp仁fopen("howmanyusers.txt","w+"))==NULL)〃打开文件并判断是否出错 { printf("创建文件失败! \n\n");〃打印出错提示 getchar(); return; for(i=0;i 向文件写入数据,并判 if(fwrite(&user[i],sizeof(structusers),1,fp)==0)〃 断是否出错 { printf("向文件输入数据失败! \n\n"); } } fprintf(fp1,"%d",n);〃输入用户个数到fp1 fclose(fp);//关闭文件 fclose(fp1);〃关闭文件 } voidcreatfile()〃增加用户信息模块 FILE*fp=NULL,*p=NULL,*fp1; 存储用户信息的文件名 charDataFile[20]="yonghu.txt";// 〃inta[100]; inti=0,k=1,count=0; fp=fopen(DataFile,"r"); system("cls");〃清屏 if(fp==NULL)〃如果当前文件不存在,提示打开文件失败 { fp仁fopen("howmanyusers.txt","w+");〃以写方式打开 fprintf(fp1,"%d",0);〃打开用户文件失败,则输入用户个数0到fp1 fclose(fp1); printf("\n不存在%s正在创建! \n",DataFile); fp=fopen(DataFile,"a"); creatfile(); } if((fp仁fopen("howmanyusers.txt","a"))==NULL)〃读写方式打开文件,若文件不 存在,则n=0 { n=0; else { fp1=fopen("howmanyusers.txt","r"); fscanf(fp1,"%d",&n);〃读取fp1中的用户个数 } fclose(fpl); for(i=0;i { 从文件中读取信息 fread(&user[i],sizeof(structusers),1,fp);// } fclose(fp);//关闭文件 //如果成功打开文件,则提示输入用户相关信息 printf("请输入用户信息\n"); fflush(stdin); while(k) printf(" 请输入身份证号码: "); scanf("%ld",&up.Number); i=0;〃再次初始化i为0 //判断身份证号是否存在 while(i { if(user[i].Number==up.Number) { 请重新输入身份证号: "); printf("该身份证号码已被使用过! \n scanf("%ld",&up.Number); i=0; //continue; } else i++; } //经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位 user[i].Number=up.Number; printf("姓名: "); scanf("%s",&user[i].Name); user[i].Name[19]='\0'; printf("性别: "); scanf("%s",&user[i].sexual); printf("用户密码: "); scanf("%s",&user[i].ps); printf("年龄: "); scanf("%d",&user[i].age); n++;//用户数目增加 printf("是否继续注册? 是: 选1,否: 选0;"); scanf("%d",&k); } saveuser(user);//保存用户信息 fclose(fp); //在屏幕上显示文件内容 system("cls"); printf("数据已经成功保存到%$中\n",DataFile); getchar(); printf("按任意键返回主界面! \n"); getchar(); system("cls"); zhujiemian();〃返回主界面 } voidloginflightm()〃管理员登录机票系统 { intj; do { system("cls"); printf("★您好,欢迎进入自动化飞机订票系统! ---★\n"); printf(" ==============\n"); **\n\n" **\n\n" **\n\n"**\n\n"); printf("================================================================================\n"); printf("请在0-5中选择以回车键结束: \n\n"); seanf("%d",&j); switch(j) { input();〃调用输入模块 break; case2: system("cls"); print();〃调用打印模块 break; case3: search();〃调用查找模块 break; case4: paixu();〃调用排序模块 break; case5: dingpiao();〃调用订票模块 break; break; }while(j! =O);//判断结束 printf(”按任意键返回主界面\n"); system("cls"); zhujiemian(); }//登录函数结束 voidloginflightu()〃用户登录机票系统 { intj; do { system("cls"); printf("★您好,欢迎进入自动化飞机订票系统! ---★\n"); printf("================================================================================\n"); printf("**----☆1.浏览航班信息☆----- **\n\n""**☆2.查找航班信息-☆**\n\n""**☆3.对航班按航班票价排序---☆ printf(" **\n\n""** **\n\n" **\n\n" **\n\n" **\n\n" **\n\n"); II ☆4.订票信 ☆0.退出 息-☆ \n"); printf(”请在0-5中选择以回车键结束: \n\n"); seanf("%d",&j); switch(j)ease1: system("cls"); print();〃调用打印模块 break; search();〃调用查找模块 break; case3: paixu();〃调用排序模块 break; case4: dingpiao();〃调用订票模块 break; case0: ; break; } }while(j! =O);//判断结束 printf(”按任意键返回主界面\n"); system("cls"); zhujiemian(); }//登录函数结束 voidinput()〃输入航班信息模块,管理员操作 inti=0,k=1; read(); printf("请依次输入航班信息(航班号,起始站,终点站,起飞时间,机票数,票 价): \n\n");〃打印提示信息 printf(" \n"); 〃fflush(stdin); while(k) { printf("请输入航班号: \n"); scanf("%d",&fnew.num);//读取航班号 i=0;〃再次初始化i为0 //判断航班是否已经存在 while(ivm) { if(s[i].num==fnew.num) printf(”该航班已经存在! \n请重新输入: "); seanf("%d",&fnew.num); i=0; //continue; } else i++; } //经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位 s[i].num=fnew.num; printf("请输入起始站: \n"); scanf("%s",s[i].start);〃读取起始站 printf("请输入终点站: \n"); scanf("%s",s[i].over);〃读取终点站 printf("请输入时间: \n"); scanf("%s",s[i].time);〃读取时间 printf("请输入余票数(机票数为0结束输入): \n",m); printf("请输入机票票价: \n",m); seanf("%d",&s[i].prize);〃读取机票票价 m++;//所有航班信息个数 //printf("第%£|个信息已经输完是否继续? 按1-9任意数字继续,按0结束",m); //scanf("%d",&y); printf("是否继续添加航班? 是: 选1,否: 选0;"); seanf("%d",&k); if(k==0) { save();//将结构体信息存盘 system("cls"); print();//输出输入的航班信息 break; } { FILE*fp,*fp1;〃定义文件指针 if((fp=fopen("flight.txt","wb"))==NULL)〃打开文件并判断是否出错 { printf("创建文件失败! \n\n");〃打印出错提示 getchar(); return; } if((fp仁fopen("how
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 机票 管理 系统 源代码