




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/ * 1、用户和管理员及航班信息请以英文字母或数字输入* /要修改请于程序中修改/*2、管理员账户为:boss,密码为:123。保存在txt文件中,需广3、部分文件读写为二进制读写,所以打开文件时会看到乱码#in elude <stdio.h>#i nclude <stri ng.h>#i nclude <stdlib.h>#in clude<c oni o.h>#defi ne N 1000 void zhujiemia n(); 主界面函数void verify。;"用户及管理员登录选择void log inman ager();
2、 管理员登录void log inu ser(); 用户登录管理员登录机票系统void logi nflightuQ;用户登录机票系统void creatfile();创建用户信息模块void saveuser(); 用户信息保存模块程序void in put(); /输入航班信息void prin t(); /输出航班信息void save(); /保存航班信息void read(); /读取航班信息void paixu(); /对所有航班按航班号排序void search(); /查找航班信息void din gpiao(); /订票信息struct users /管理员/用户信息结构体,
3、管理员可以修改航班信息char Name20; /管理员/用户姓名char sexual10; 用户性别char ps8必用户密码int age; II用户年龄long Number; /用户身份证号码int power; /power为1是管理员登录,为0是用户登录userN,up,mg;/up为键盘输入用户信息,userN为文件保存的用户信息,mg为管理员结构体intn;所有用户个数,初始化为0struct air/航班信息结构体(int num; /航班号char start20; /出发地char over20; /目的地char time10; /时间int count; /票数in
4、t prize; /票价sN,fnew;int i;int m=0; /所有航班个数PRINT#defi ne"%-d%12s%12s%10s%12d%10dn,'lsi. num,si.start,si.over,si.time,si.cou nt ,si.prize / 定义输出格式void ma in() 主函数zhujiemia n();void zhujiemia n()"主界面函数intj;prin tf(H#=prin tf("#prin tf("#1prin tf("#2prin tf(H#0欢迎进入机票管理系统、登录系
5、统、新用户注册、退出:=#n11)prin 1%"#=#"); printf(”请在1-2中选择以回车键结束:nnu);scan f(八d”,&j);switch(j)case 1:verify();" 进入机票系统break;case 2:creatfile();进入用户注册系统break;case 0:;break;void verify。验证用户及管理员信息模块intj;system("cls");printf("#=#n");prin tf("#1、管理员登录#n");prin tf(&q
6、uot;#2、用户登录#n");prin tf("#0、返回主界面#n");prin tf(H#=#nH);switch(j)break;case 2:logi nuser(); 进入用户登录界面break;case 0:system("cls");zhujiemia n(); / 进入主界面 break;)/* 管理员登录确定函数*/void log inman ager()(FILE fp=NULL; 定义文件指针存储管理员信息的文件名char DataFile20=Hma nager.txtH;/int i=0,j=1;char relo
7、g in;/是否重新登录int success=0; /登录成功的标志printf("n管理员登录一n”);fp=fope n(DataFile,"r");if(fp=二NULL) 如果当前文件不存在,初始化根用户名为boss,密码为123,权限为管理员(printf("首次使用该系统!n”);printf("管理员账户为:boss密码为:123n”);fp=fope n(DataFile,"a");以追加方式打开文件user0.Number=0;strcpy(user0.Name,"boss");str
8、cpy(userO.sexualfHmaleH);user0.age=22;user0.power=1;strcpy(user0.ps,n123H);fwrite(&user0,sizeof(user), 1 ,fp);fclose(fp);elsefclose(fp);aga in:printf(”请输入管理员姓名:");sea nf("%s",up.Name);输入用户名up.Name19='0'printf("请输入管理员密码:");fflush(stdi n);for(i=0;i7;i+) 输入密码,以*在屏幕显
9、示(up.psi=getch();up.psi+1=W;字符要以''0结尾if(up.psi=,b,)up.psi尸0' 清除前一个字符i-;接收前一个字符prin tf("b");prin tf("b");con ti nue;)if(up.psi=Y)(up.psi-0'break;)prin tf("*");)fp=fope n(DataFile,"rt");if(fp=NULL) /打开文件失败时提示printf ("n打开s失败!按任意键结束程序n”,DataFi
10、le);perror(HOpe n file fail");getchar();return;)if(fp=fope n("ma nager.txt",Y')=NULL)打开文件,并判断是否出错(打印出错提prin tf("n 出错,请检查文件是否存在,按任意键返回主菜单n“); 示 getchar();)elsefread(&mg,sizeof(struct users), 1,fp);从文件中读取信息fclose(fp);/ 关闭文件if(strcmp(mg.Name1up.Name)=0&&strcmp(mg.ps,
11、up.ps)=O)(success=1;)if(success=1) II登录成功prin tf(Hn 登录成功,按任意键进入机票调整系统! n");getchar();logi nflightm();)else/未登录成功(fflush(stdi n); 清除输入缓冲区中的字符printf("n用户名或密码错误!重新输入请按y,退出请按n:n");relogi n=getchar();if(relogi n="y'|relogi n='Y')(getchar();goto aga in;)elseverify();exit(O)
12、;/*用户登录函数*/void log inu ser()(FILE *fp=NULL,*fp1; 定义文件指针char DataFile20="yo nghu.txt"/存储管理员信息的文件名int i=0,j=0;char relogi n; /是否重新登录int success=0; /登录成功的标志printf("n用户登录n")jfp=fope n(DataFile,"r");读取文件中数据 if(fp 1 =fope n(Hhowma nyusers.txt,nan)=NULL)/读写方式打开文件,若文件不存在,贝ij n
13、=0printf("创建文件失败! nn) 打印出错提示n=0; getchar();/con ti nue;)else(fp1=fope n(Hhowma ny users.txt,lHru);fscanf(fp1, "%d",&n); 读取fp1中的用户个数)fclose(fpl);if(fp=fope n( "yo nghu.txt","r")尸=NULL) 打开文件,并判断是否出错(fp 仁 fope n("howma nyusers.txt","w+"); * 以写方
14、式打开fprintf(fp11"%d",O);-打开用户文件失败,则输入用户个数 。到fp1fclose(fpl);prin tf(Hn目前没有用户信息,请按ENTERS返回主菜单先进行注册!n");getchar();getchar();system("cls");zhujiemia n();)for(i=0;i <n ;i+)(fread(&useri,sizeof(struct users), 1,fp);从文件中读取信息)fclose(fp);/关闭文件/输入数据与文件中用户比对aga in:printf("请输
15、入用户姓名:");sea nf("%s",up.Name); 输入用户名up.Name19='0'printf (“请输入用户密码:");fflush(stdi n);for(i=0;i7;i+) 输入密码,以*在屏幕显示(up.psi=getch();up.psi+1尸0 字符要以结尾if(up.psi='b')(i-;up.psi尸(r; 清除前一个字符i;接收前一个字符prin tf("b");prin tf("b");con ti nue;)if(up.psi='r&
16、#39;)up.psi='O'break;prin tf("*");)for(i=0;i< n;i+)/对比用户名和密码,进行登录(if(strcmp(useri.NameIup.Name)=0&&strcmp(useri.ps1up.ps)=O)(success=1;break;)if(success=1) /登录成功(prin tf("n登录成功,按任意键进入机票调整系统!n)getchar();logi nflightu();)else /未登录成功(fflush(stdi n); 清除输入缓冲区中的字符printf(&
17、quot;n用户名或密码错误!重新输入请按y,退出请按n:n");relogi n=getchar();if(relogi n='y'|relogi n二二Y)(getchar();goto aga in;)else(verify();exit(O);用户信息保存模块程序void saveuser(struct users。)FILE *fp,*fp1; 定义文件指针if(fp=fope n("yo nghu.txt","a")=NULL)打开文件并判断是否出错(printf("创建文件失败! nn”); 打印出错提示
18、getchar();return;)if(fp 仁 fope n("howma nyusers.txt","w+")=NULL)打开文件并判断是否出错(printf("创建文件失败! nn”); 打印出错提示getchar();return;)for(i=0;i <n ;i+)if(fwrite(&useri,sizeof(struct users), 1,fp)=0)向文件写入数据,并判断是否出错(printf ("向文件输入数据失败! nn");)fprintf(fp1,"%d",n);
19、输入用户个数到 fp1fclose(fp);/ 关闭文件fclose(fpl); 关闭文件)void creatfile()增加用户信息模块FILE *fp=NULL,*p=NULL,*fp1;char DataFile20="yo nghu.txt"/存储用户信息的文件名 int a100;int i=0,k=1,co un t=0;fp=fope n(DataFile,"r");system("cls"); 清屏if(fp=NULL)如果当前文件不存在,提示打开文件失败(fp 仁 fope n("howma nyuser
20、s.txt","w+");以写方式打开fprintf(fp1,"%d",0);打开用户文件失败,则输入用户个数 0到fp1fclose(fpl);printf("n 不存在 s 正在创建! n”,DataFile);fp=fope n(DataFile,"a");creatfile();)if(fp 仁 fopenChowmanyusers.txt","a")=NULL)读写方式打开文件,若文件不存在,则n=0(n=0;else)fp1=fope n(Hhowma ny users.t
21、xt" Jr");fscanf(fp1, “d”,&n); 读取fp1中的用户个数)fclose(fpl);for(i=0;i <n ;i+)(fread(&useri,sizeof(struct users), 1,fp);/从文件中读取信息)fclose(fp);/ 关闭文件/ 如果成功打开文件,则提示输入用户相关信息printf("请输入用户信息n”);fflush(stdi n);while(k)/prin tf ("n 输入身份证号码注意身份证号码不能为0!n");printf("请输入身份证号码:&q
22、uot;); scan f("%ld",&up.Number);i=0; 再次初始化i为0判断身份证号是否存在while(i <n)(if(useri.Number=up.Number)(printf("该身份证号码已被使用过!n请重新输入身份证号:”);sea nf("%ld",&up.Number);i=0;/con ti nue;)elsei+;)经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位useri.Number=up.Number;prin tf("姓名sea nf("s”,&a
23、mp;useri.Name);useri.Name19='0'prin tf("性别:"); sea nf(H%sH, &useri.sexual);printf("用户密码sea nf(H%sH,&useri.ps);prin tf(“年龄:");sea nf(H%dH,&useri.age);n+;用户数目增加printf("是否继续注册?是:选1,否:选0;”);sea nf("d”,&k);)saveuser(user);/保存用户信息 fclose(fp);在屏幕上显示文件内容
24、system("cls");printf("数据已经成功保存到$中坨"0滉什归);getchar();printf("按任意键返回主界面!n");getchar();system("cls");zhujiemia n(); 返回主界面)void logi nflightm() 管理员登录机票系统(intj;do(system("cls");printf(" 您好,欢迎进入自动化飞机订票系统!- n");printf("nH);printf("1 .输入航班
25、信息*nn"" * 2.浏览航班信息众*nn"" * 3.查找航班信息-八山*nnH 4.对航班按航班票价排序一 *nn 5.息-*nn""0.退出printf('= =n");printf("请在0-5中选择以回车键结束:nn");sea nf("%d",&j);switch。)(case 1:in put(); 调用输入模块break;case 2:system("cls");print。; 调用打印模块break;case 3:search。;
26、 调用查找模块break;case 4:paixu(); 调用排序模块break;case 5:din gpiao(); 调用订票模块 break;case 0:;break;while(j!=O); 判断结束printfC1按任意键返回主界面n”);system("cls");zhujiemia n();/登录函数结束void logi nflightu() 用户登录机票系统(intj;do(system("cls");printf(" 您好,欢迎进入自动化飞机订票系统! 一”);printf("= =n");printf
27、(" * 1 .浏览航班信息+-*nn"" * 2.查找航班信息一4 *nn"" * 3.对航班按航班票价排序一case 2:printf(" *nn"" * 4.订票信息小*nn"110.退出*nn"*nn"*nn");printf("n");printf("请在0-5中选择以回车键结束:nn");sea nf("%d",&j);switch(j) ease 1:system("cls"
28、);print();调用打印模块break;search。; 调用查找模块break;case 2:paixu(); 调用排序模块break;case 3:din gpiao(); 调用订票模块break;case 0:;break;)while0!=O); / 判断结束printfC,按任意键返回主界面n");system("cls");zhujiemia n(); 登录函数结束int i=0,k=1;read();printf(“请依次输入航班信息(航班号,起始站,终点站,起飞时间,机票数,票价):nn”);打印提示信息printf("n"
29、); fflush(stdi n);while(k)(printf("请输入航班号:n”);sea nf("%d", &fnew. nu m); / 读取航班号i=0; 再次初始化i为0判断航班是否已经存在while(ivm)if(si. num=fnew.num)print"'该航班已经存在!n请重新输入:”);sea nf("d* &fnew. num);i=0;/con ti nue;)elsei+;)经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位si. num=fnew.num;printf(&quo
30、t;请输入起始站:n“);sea nf("%s",si.start); 读取起始站printf("请输入终点站:n“);sea nf("%s",si.over);读取终点站printf("请输入时间:n“);sea nf("%s",si.time); *读取时间printf(n请输入余票数(机票数为0结束输入):n*m);sea nf("%d",&si.cou nt);/ 读取机票数printf("请输入机票票价:n",m);sea nf("%d"
31、,&si.prize);读取机票票价m+; 所有航班信息个数/ printf("第%£|个信息已经输完是否继续?按1-9任意数字继续,按0结束”,m);/scan f("%d", & y);printf("是否继续添加航班?是:选1,否:选0; ”);sea nf("%d",&k);if(k=0)(save。;/将结构体信息存盘system("cls");prin t();/ 输出输入的航班信息break;void save。航班信息保存模块程序FILE定义文件指针if(fp=fo
32、pe n( "flight.txt","wb")=NULL)打开文件并判断是否出错(printf("创建文件失败! nn“); 打印出错提示getchar();return;)if(fp 仁 fope n( "howma nyflights.txt","wb")=NULL)打开文件并判断是否出错(printf("创建文件失败! nn“); 打印出错提示getchar();return;)for(i=0;i<m;i+)void save。"航班信息保存模块程序if(fwrite(&
33、amp;si,sizeof(struct air),1,fp)=O) 向文件写入数据,并判断是否出错printf(响文件输入数据失败! nn");fprintf(fp1,"%d",m);fclose(fp);/ 关闭文件fclose(fpl);/ 关闭文件)void read()/从文件读取航班信息模块(FILE *fp,*fp1;/ 定义文件指针 fp=fope n("flight.txt","r"); system("cls"); 清屏 if(fp=NULL)如果当前文件不存在,提示打开文件失败(fp
34、 仁 fope n( "howma nyflights.txt","w+");以写方式打开 fprintf(fp1,"%d",O);打开用户文件失败,则输入用户个数 0到fp1fclose(fpl);printf ("n 不存在 flight.txt,正在创建! n");fp=fope n("flight.txt" Ja“);printf("创建完成! n");system("cls");read(); perror("Open file fai
35、l");"getch();读写方式打开文件,若文件不存和嘶需护"廿)NULL) if(fp 1= fope n(Hhowma/printf(w创建文件失败! nn"); 打印出错提示m=0;elsefp 仁 fope n(Hhowma nyflights.txt'T);fscanf(fp1, “d”,&m); 读取fp1中的用户个数fclose(fpl);for(i=0;i<m;i+)从文件中读取信息fread(&si,sizeof(structair),1,fp); )fclose(fp);/ 关闭文件)void prin
36、 t() 屏幕打印航班信息模块(read。; 调用读取文件函数if(m=0)prin tf("nn目前没有航班信息! n");else(prin tf ("航班信息如下:nH);n");for(i=0;i<m;i+)(prin tf(PRINT);/ 打印信息)prin tf("n请按任意键回车键结束返回主菜单)getchar();getchar();)void paixu() 对所有航班按航班价格排序(intj;struct pai(int no;char name120;char name220;char time20;int cou
37、nt;int prize;临时定义结构体,作为排序时的第三变量read。; 调用读取信息函数for0=O;jv(m-1);j+)(for(i=0;i<(m-(1+j);i+)(if(si.prize>si+1.prize) /按价格升序排列,p0为中间变量(p0. no=si. num;/ 替换航班号strcpy(p0. namel ,si.start);替换其始站strcpy(p0. name2,si.over);替换终点站strcpy(p0.time,si.time);替换时间P0 co un t=si.co un t;/替换机票数pO.prize=si.prize;替换票价)si=si+1;si+1. nu m=pO. no;/ 替换航班号strcpy(si+1.start,pO. n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论