c语言实现机票管理系统源代码教学内容_第1页
c语言实现机票管理系统源代码教学内容_第2页
c语言实现机票管理系统源代码教学内容_第3页
c语言实现机票管理系统源代码教学内容_第4页
c语言实现机票管理系统源代码教学内容_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

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

6、eak;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,r);if(fp=NULL)如果当前文件不存在,初始化根用户

7、名为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(fp);again:printf( 请输入管理员姓名 :);scanf(

8、%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,rt);if(fp=NULL) / 打开文件失败时提示 printf(

9、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.Name)=0&strcmp(mg.ps,up.ps)=0)success=

10、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;elseverify();exit(0); void loginuser() /*用户登录函数*/FILE *fp=NULL,*fp1;/ 定义文件指针char DataFile

11、20=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;elsefp1=fopen(howmanyusers.txt,r);fscanf(fp1, %d,&n);/ 读取

12、 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;in;i+)fread(&useri,sizeof(struct users),1,fp);

13、/ 从文件中读取信息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 );printf(b);continue;if(up.psi=r)up.psi=0;bre

14、ak;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用户名或密码错误!重新输入请按y,退出请按n:n);relogin=getchar();if(relogin=y|relo

15、gin=Y)getchar();goto again;elseverify();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)/ 打开文件并判断是否出错printf( 创建文件失败!nn);/ 打印出错提示getchar();return;for(i=0

16、;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;/ 存储用户信息的文件名/int a100;int i=0,k=1,count=0;fp=fopen(DataFile,r)

17、;system(cls);/ 清屏if(fp=NULL)/ 如果当前文件不存在,提示打开文件失败fp1=fopen(howmanyusers.txt,w+);/ 以写方式打开 fprintf(fp1,%d,0);/ 打开用户文件失败,则输入用户个数0 到 fp1fclose(fp1);printf(n 不存在 s,正在创建!n,DataFile);fp=fopen(DataFile,a);creatfile();if(fp1=fopen(howmanyusers.txt,a)=NULL)/ 读写方式打开文件,若文件不存在,则n=0n=0;elsefp1=fopen(howmanyusers.t

18、xt,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);printf( 请输入身份证号码:);scanf(%ld,&up.Number);i=0;/ 再次初始化 i 为 0/ 判断身份证号是否存在wh

19、ile(in)if(useri.Number=up.Number)printf( 该身份证号码已被使用过!n 请重新输入身份证号: );scanf(%ld,&up.Number);i=0;/continue;elsei+;/ 经循环对比后, i 的值仍和 n 相等,将新注册的信息加入数组末位useri.Number=up.Number;printf( 姓名 :);scanf(%s,&useri.Name);useri.Name19=0;printf( 性别 :);scanf(%s,&useri.sexual);printf( 用户密码 :);scanf(%s,&useri.ps);printf

20、( 年龄 :);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);zhujiemian();/ 返回主界面 void loginflightm()/ 管理员登录机票系统int j;dosystem(cl

21、s);printf( 您好,欢迎进入自动化飞机订票系统! - n);printf(= =n);printf( * 1.输入航班信息 *nn * 2. 浏 览 航 班 信 息 *nn * 3. 查 找 航班 信 息- *nn * - 4.对航班按航班票价排序-*nn” * 5.订 票信 息-*nn* 0.退出-*nn*nn *nn*nn);printf(= =n);printf(请在0-5中选择以回车键结束:nn);scanf(%d,&j);switch(j)(input();/调用输入模块break;system(cls);print();/调用打印模块break;search();调用查找模

22、块break;paixu();/调用排序模块break;dingpiao();/调用订票模块break;case 0:;break;while(j!=0); / 判断结束printf(按任意键返回主界面n);system(cls);zhujiemian();/登录函数结束void loginflightu()/用户登录机票系统(int j;do(system(cls);printf( 您好,欢迎进入自动化飞机订票系统!-n);printf(= =n);printf( * - 1.浏览航班信 息*nn* 2.查找航班信息-*nn * 3.对航班按航班票价排序 -*nn * - 4.订票信息-*n

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

24、班信息模块,管理员操作int i=0,k=1;read();printf( 请依次输入航班信息 (航班号, 起始站, 终点站, 起飞时间, 机票数, 票价) :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;elsei+;/ 经循

25、环对比后, i 的值仍和 n 相等,将新注册的信息加入数组末位si.num=fnew.num;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+; / 所有航班信息个数

26、/ printf(第d个信息已经输完是否继续?按1-9任意数字继续,按 0结束”,m);/scanf(%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

27、(fp1=fopen(howmanyflights.txt,wb)=NULL)/ 打开文件并判断是否出错 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

28、(flight.txt,r);/system(cls);/ 清屏 if(fp=NULL)/ 如果当前文件不存在,提示打开文件失败 fp1=fopen(howmanyflights.txt,w+);/ 以写方式打开 fprintf(fp1,%d,0);/ 打开用户文件失败,则输入用户个数0 到 fp1fclose(fp1); printf(n 不存在flight.txt ,正在创建!n);fp=fopen(flight.txt,a); printf( 创建完成! n); system(cls); read(); /perror(Open file fail); /getch(); if(fp1=

29、fopen(howmanyflights.txt,rb)=NULL)/ 读写方式打开文件,若文件不存在,则 m=0/printf( 创建文件失败!nn);/ 打印出错提示m=0;elsefp1=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)print

30、f(nn 目前没有航班信息! n);else票价 n);printf( 航班信息如下: n);printf( 航班号起始站终点站时间 余票数for(i=0;im;i+) printf(PRINT);/ 打印信息printf(n 请按任意键回车键结束返回主菜单);getchar();getchar(); void paixu()/ 对所有航班按航班价格排序int j;struct paiint no;char name120;char name220;char time20;int count;int prize;p1;/ 临时定义结构体,作为排序时的第三变量read();/ 调用读取信息函数for(j=0;j(m-1);j+)for(i=0;isi+1.prize) / 按价格升序排列, p0 为中间变量 p0.no=si.num;/ 替换航班号strcpy(1,si.start);/ 替换其始站 strcpy(2,si.over);/ 替换终点站 strcpy(p0.time,si.time);/ 替换时间 p0.count=si.count;/ 替换

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论