收藏 分销(赏)

c语言实现机票管理系统源代码.doc

上传人:w****g 文档编号:3635832 上传时间:2024-07-11 格式:DOC 页数:39 大小:72KB
下载 相关 举报
c语言实现机票管理系统源代码.doc_第1页
第1页 / 共39页
c语言实现机票管理系统源代码.doc_第2页
第2页 / 共39页
c语言实现机票管理系统源代码.doc_第3页
第3页 / 共39页
c语言实现机票管理系统源代码.doc_第4页
第4页 / 共39页
c语言实现机票管理系统源代码.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、c语言实现机票管理系统源代码392020年4月19日文档仅供参考/*1、用户和管理员及航班信息请以英文字母或数字输入*/*2、管理员账户为:boss,密码为:123。保存在txt文件中,需要修改请于程序中修改*/*3、部分文件读写为二进制读写,因此打开文件时会看到乱码*/#include #include #include #include#define N 1000void zhujiemian();/主界面函数void verify();/用户及管理员登录选择void loginmanager();/管理员登录void loginuser();/用户登录void loginflightm(

2、);/管理员登录机票系统void loginflightu();/用户登录机票系统void creatfile();/创立用户信息模块void saveuser();/用户信息保存模块程序 void input(); /输入航班信息 void print(); /输出航班信息 void save(); /保存航班信息 void read(); /读取航班信息void paixu(); / 对所有航班按航班号排序void search(); /查找航班信息 void dingpiao(); /订票信息 struct users /管理员/用户信息结构体,管理员能够修改航班信息 char Name

3、20; /管理员/用户姓名 char sexual10;/用户性别 char ps8; / 用户密码 int age; /用户年龄 long Number; /用户身份证号码 int power; /power为1是管理员登录,为0是用户登录userN,up,mg;/up为键盘输入用户信息,userN为文件保存的用户信息,mg为管理员结构体int n;/所有用户个数,初始化为0struct air /航班信息结构体 int num; /航班号char start20; /出发地char over20; /目的地char time10; /时间int count; /票数int prize; /

4、票价sN,fnew; int i; int m=0; /所有航班个数#define PRINT %-d%12s%12s%10s%12d%10dn,si.num,si.start,si.over,si.time,si.count,si.prize /定义输出格式 void main()/主函数zhujiemian();void zhujiemian()/主界面函数int j; printf(#=#n); printf(# 欢迎进入机票管理系统 #n);printf(# 1、登录系统 #n);printf(# 2、新用户注册 #n);printf(# 0、退出 #n); printf(#=#n);

5、printf(请在1-2中选择以回车键结束:nn); scanf(%d,&j); switch(j) case 1:verify();/进入机票系统break; case 2:creatfile();/进入用户注册系统break; case 0:; break; void verify()/验证用户及管理员信息模块int j;system(cls);printf(#=#n);printf(# 1、管理员登录 #n);printf(# 2、用户登录 #n);printf(# 0、返回主界面 #n); printf(#=#n);scanf(%d,&j); switch(j) case 1:logi

6、nmanager();/进入管理员登录界面break; case 2:loginuser();/进入用户登录界面break; case 0:system(cls);zhujiemian(); /进入主界面break; /*管理员登录确定函数*/void loginmanager()FILE * fp=NULL;/定义文件指针 char DataFile20=manager.txt;/存储管理员信息的文件名 int i=0,j=1; char relogin; /是否重新登录 int success=0; /登录成功的标志 printf(n-管理员登录-n); fp=fopen(DataFile

7、,r);if(fp=NULL)/如果当前文件不存在,初始化根用户名为boss,密码为123,权限为管理员 printf(首次使用该系统!n);printf(管理员账户为:boss 密码为:123n);fp=fopen(DataFile,a);/以追加方式打开文件user0.Number=0;strcpy(user0.Name,boss);strcpy(user0.sexual,male);user0.age=22;user0.power=1;strcpy(user0.ps,123); fwrite(&user0,sizeof(user),1,fp); fclose(fp);elsefclose

8、(fp);again:printf(请输入管理员姓名:); scanf(%s,up.Name);/输入用户名 up.Name19=0; printf(请输入管理员密码:); fflush(stdin);for(i=0;i7;i+)/输入密码,以*在屏幕显示up.psi=getch(); up.psi+1=0;/字符要以0结尾 if(up.psi=b)i-; up.psi=0;/清除前一个字符 i-;/接收前一个字符 printf(b ); printf(b); continue;if(up.psi=r) up.psi=0; break; printf(*); fp=fopen(DataFile

9、,rt); if(fp=NULL) / 打开文件失败时提示 printf(n打开 %s 失败!按任意键结束程序n,DataFile); perror(Open file fail); getchar(); return; if(fp=fopen(manager.txt,r)=NULL)/打开文件,并判断是否出错 printf(n出错,请检查文件是否存在,按任意键返回主菜单n);/打印出错提示getchar(); elsefread(&mg,sizeof(struct users),1,fp);/从文件中读取信息 fclose(fp);/关闭文件 if(strcmp(mg.Name,up.Nam

10、e)=0&strcmp(mg.ps,up.ps)=0) 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(); goto again; else verify(); exit(0); /*用户登录函数*/void loginu

11、ser()FILE *fp=NULL,*fp1;/定义文件指针 char DataFile20=yonghu.txt;/存储管理员信息的文件名 int i=0,j=0; char relogin; /是否重新登录 int success=0; /登录成功的标志 printf(n-用户登录-n); fp=fopen(DataFile,r);/读取文件中数据if(fp1=fopen(howmanyusers.txt,a)=NULL)/读写方式打开文件,若文件不存在,则n=0 /printf(创立文件失败!nn);/打印出错提示 n=0;/getchar(); /continue; else fp1

12、=fopen(howmanyusers.txt,r); fscanf(fp1, %d,&n);/读取fp1中的用户个数 fclose(fp1);if(fp=fopen(yonghu.txt,r)=NULL)/打开文件,并判断是否出错 fp1=fopen(howmanyusers.txt,w+);/以写方式打开fprintf(fp1,%d,0);/打开用户文件失败,则输入用户个数0到fp1fclose(fp1);printf(n当前没有用户信息,请按ENTER键返回主菜单先进行注册!n);getchar();getchar();system(cls);zhujiemian(); for(i=0;

13、in;i+) fread(&useri,sizeof(struct users),1,fp);/从文件中读取信息 fclose(fp);/关闭文件/输入数据与文件中用户比对again:printf(请输入用户姓名:); scanf(%s,up.Name);/输入用户名 up.Name19=0; printf(请输入用户密码:); fflush(stdin);for(i=0;i7;i+)/输入密码,以*在屏幕显示up.psi=getch(); up.psi+1=0;/字符要以0结尾 if(up.psi=b)i-; up.psi=0;/清除前一个字符 i-;/接收前一个字符 printf(b );

14、 printf(b); continue;if(up.psi=r) up.psi=0; break; printf(*);for(i=0;in;i+) /对比用户名和密码,进行登录 if(strcmp(useri.Name,up.Name)=0&strcmp(useri.ps,up.ps)=0) success=1; break; if(success=1) /登录成功 printf(n登录成功,按任意键进入机票调整系统!n); getchar(); loginflightu(); else /未登录成功 fflush(stdin);/清除输入缓冲区中的字符 printf(n用户名或密码错误!

15、重新输入请按y,退出请按n:n); relogin=getchar(); if(relogin=y|relogin=Y) getchar(); goto again; else verify(); exit(0); void saveuser(struct users)/用户信息保存模块程序 FILE *fp,*fp1;/定义文件指针 if(fp=fopen(yonghu.txt,a)=NULL)/打开文件并判断是否出错 printf(创立文件失败!nn);/打印出错提示 getchar(); return; if(fp1=fopen(howmanyusers.txt,w+)=NULL)/打开

16、文件并判断是否出错 printf(创立文件失败!nn);/打印出错提示 getchar(); return; for(i=0;in;i+) if(fwrite(&useri,sizeof(struct users),1,fp)=0)/向文件写入数据,并判断是否出错 printf(向文件输入数据失败!nn);fprintf(fp1,%d,n);/输入用户个数到fp1fclose(fp);/关闭文件 fclose(fp1);/关闭文件 void creatfile()/增加用户信息模块 FILE *fp=NULL,*p=NULL,*fp1; char DataFile20=yonghu.txt;/

17、存储用户信息的文件名 /int a100; int i=0,k=1,count=0; fp=fopen(DataFile,r); system(cls);/清屏 if(fp=NULL)/如果当前文件不存在,提示打开文件失败 fp1=fopen(howmanyusers.txt,w+);/以写方式打开 fprintf(fp1,%d,0);/打开用户文件失败,则输入用户个数0到fp1 fclose(fp1); printf(n不存在%s,正在创立!n,DataFile); fp=fopen(DataFile,a); creatfile(); if(fp1=fopen(howmanyusers.tx

18、t,a)=NULL)/读写方式打开文件,若文件不存在,则n=0 n=0; else fp1=fopen(howmanyusers.txt,r); fscanf(fp1, %d,&n);/读取fp1中的用户个数 fclose(fp1);for(i=0;in;i+) fread(&useri,sizeof(struct users),1,fp);/从文件中读取信息 fclose(fp);/关闭文件 /如果成功打开文件,则提示输入用户相关信息 printf(请输入用户信息n); fflush(stdin); while(k) /printf(n输入身份证号码注意身份证号码不能为0!n); print

19、f(请输入身份证号码:); scanf(%ld,&up.Number); i=0;/再次初始化i为0 /判断身份证号是否存在 while(in) if(useri.Number=up.Number) printf(该身份证号码已被使用过!n请重新输入身份证号:); scanf(%ld,&up.Number); i=0; /continue; else i+; /经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位 useri.Number=up.Number; printf(姓名:); scanf(%s,&useri.Name); useri.Name19=0; printf(性别:);

20、 scanf(%s,&useri.sexual); printf(用户密码:); scanf(%s,&useri.ps); printf(年龄:); scanf(%d,&useri.age); n+;/用户数目增加 printf(是否继续注册?是:选1,否:选0;); scanf(%d,&k); saveuser(user);/保存用户信息 fclose(fp); /在屏幕上显示文件内容 system(cls); printf(数据已经成功保存到%s中n,DataFile); getchar(); printf(按任意键返回主界面!n); getchar(); system(cls); zhu

21、jiemian();/返回主界面void loginflightm()/管理员登录机票系统int j;do system(cls);printf( -您好,欢迎进入自动化飞机订票系统!-n); printf(=n); printf( *- - 1.输入航班信息 - -*nn *- - 2. 浏 览 航 班 信 息 - -*nn *- 3. 查 找 航 班 信 息 - -*nn *- - 4.对航班按航班票价排序-*nn *- - 5. 订 票 信 息- -*nn *- - 0.退出 - -*nn *- - - -*nn *- - - -*nn *- - - -*nn); printf(=n);

22、 printf(请在0-5中选择以回车键结束:nn); scanf(%d,&j); switch(j) case 1: input();/调用输入模块 break; case 2:system(cls);print();/调用打印模块 break; case 3:search();/调用查找模块 break; case 4:paixu();/调用排序模块 break; case 5:dingpiao();/调用订票模块 break; case 0:; break; while(j!=0); /判断结束 printf(按任意键返回主界面n);system(cls);zhujiemian();/登

23、录函数结束void loginflightu()/用户登录机票系统int j;do system(cls);printf( -您好,欢迎进入自动化飞机订票系统!-n); printf(=n); printf( *- - 1. 浏 览 航 班 信 息 - -*nn *- 2. 查 找 航 班 信 息 - -*nn *- - 3.对航班按航班票价排序-*nn *- - 4. 订 票 信 息- -*nn *- - 0.退出 - -*nn *- - - -*nn *- - - -*nn *- - - -*nn); printf(=n); printf(请在0-5中选择以回车键结束:nn); scanf

24、(%d,&j); switch(j) case 1:system(cls);print();/调用打印模块 break; case 2:search();/调用查找模块 break; case 3:paixu();/调用排序模块 break; case 4:dingpiao();/调用订票模块 break; case 0:; break; while(j!=0); /判断结束 printf(按任意键返回主界面n);system(cls);zhujiemian();/登录函数结束void input()/输入航班信息模块,管理员操作 int i=0,k=1;read();printf(请依次输入

25、航班信息(航班号,起始站,终点站,起飞时间,机票数,票价):nn);/打印提示信息 printf(-n); /fflush(stdin); while(k) printf(请输入航班号:n); scanf(%d,&fnew.num); /读取航班号 i=0;/再次初始化i为0 /判断航班是否已经存在 while(im) if(si.num=fnew.num) printf(该航班已经存在!n请重新输入:); scanf(%d,&fnew.num); i=0; /continue; else i+; /经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位 si.num=fnew.num;

26、printf(请输入起始站:n); scanf(%s,si.start);/读取起始站 printf(请输入终点站:n); scanf(%s,si.over);/读取终点站 printf(请输入时间:n); scanf(%s,si.time);/读取时间 printf(请输入余票数(机票数为0结束输入):n,m); scanf(%d,&si.count);/读取机票数 printf(请输入机票票价:n,m); scanf(%d,&si.prize);/读取机票票价 m+; /所有航班信息个数/ printf(第%d个信息已经输完是否继续?按1-9任意数字继续,按0结束,m); /scanf(%

27、d,&y); printf(是否继续添加航班?是:选1,否:选0;); scanf(%d,&k); if(k=0) save();/将结构体信息存盘system(cls);print();/输出输入的航班信息 break; void save()/航班信息保存模块程序 FILE *fp,*fp1;/定义文件指针 if(fp=fopen(flight.txt,wb)=NULL)/打开文件并判断是否出错 printf(创立文件失败!nn);/打印出错提示 getchar(); return; if(fp1=fopen(howmanyflights.txt,wb)=NULL)/打开文件并判断是否出错

28、 printf(创立文件失败!nn);/打印出错提示 getchar(); return; for(i=0;im;i+) if(fwrite(&si,sizeof(struct air),1,fp)=0)/向文件写入数据,并判断是否出错 printf(向文件输入数据失败!nn); fprintf(fp1,%d,m); fclose(fp);/关闭文件 fclose(fp1);/关闭文件 void read()/从文件读取航班信息模块 FILE *fp,*fp1;/定义文件指针 fp=fopen(flight.txt,r); /system(cls);/清屏 if(fp=NULL)/如果当前文件

29、不存在,提示打开文件失败 fp1=fopen(howmanyflights.txt,w+);/以写方式打开 fprintf(fp1,%d,0);/打开用户文件失败,则输入用户个数0到fp1 fclose(fp1); printf(n不存在flight.txt,正在创立!n); fp=fopen(flight.txt,a); printf(创立完成!n); system(cls); read(); /perror(Open file fail); /getch(); if(fp1=fopen(howmanyflights.txt,rb)=NULL)/读写方式打开文件,若文件不存在,则m=0 /p

30、rintf(创立文件失败!nn);/打印出错提示 m=0; else fp1=fopen(howmanyflights.txt,r); fscanf(fp1, %d,&m);/读取fp1中的用户个数 fclose(fp1);for(i=0;im;i+) fread(&si,sizeof(struct air),1,fp);/从文件中读取信息 fclose(fp);/关闭文件 void print()/屏幕打印航班信息模块 read();/调用读取文件函数 if(m=0)printf(nn当前没有航班信息!n);elseprintf(航班信息如下:n);printf(航班号 起始站 终点站 时间 余票数 票价n); for(i=0;im;i+) printf(PRINT);/打印信息 printf(n请按任意键回车键结束返回主菜单); getchar();getchar(); void paixu()/对所有航班按航班价格排序int j;struct paiint no;char name120;char name220;char time20;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服