c语言实现机票管理系统源代码_第1页
c语言实现机票管理系统源代码_第2页
c语言实现机票管理系统源代码_第3页
c语言实现机票管理系统源代码_第4页
c语言实现机票管理系统源代码_第5页
免费预览已结束,剩余45页可下载查看

下载本文档

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

文档简介

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

2、员登录void loginuser();/用户登录void loginflightm();/管理员登录机票系统void loginflightu();/用户登录机票系统void creatfile();/创建用户信息模块void saveuser();/用户信息保存模块程序void input(); /输入航班信息void print(); /输出航班信息void save(); /保存航班信息void read(); /读取航班信息void paixu(); /对所有航班按航班号排序void search(); /查找航班信息void dingpiao(); /订票信息struct user

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

4、地char time10; /时间int count; /票数int prize; /票价sN,fnew;int i;break;int m=0; / 所有航班个数PRINT#define"%-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;#n");printf("#欢迎进入机票管理系统#n");printf(&q

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

6、);printf("#n");printf("#、管理员登录#n");printf("#、用户登录#n");printf("#、返回主界面#n");#n");printf("#scanf("%d",&j);switch(j)case 1:loginmanager();/ 进入管理员登录界面break;case 2:loginuser();/进入用户登录界面break;case 0:system("cls");zhujiemian(); /进入主界面

7、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)/ 如果当前文件不存在 ,初始化根用户名为 boss, 密码为 123,权限为管理员printf(" 首次

8、使用该系统 !n");printf(" 管理员账户为: boss 密码为: 123n");以追加方式打开文件scanf("%s",up.Name);/输入用户名up.Name19='0'printf(" 请输入管理员密码 :");fflush(stdin);for(i=0;i<7;i+)/ 输入密码,以 * 在屏幕显示up.psi=getch();fp=fopen(DataFile,"a");/ user0.Number=0;strcpy(user0.Name,"boss&

9、quot;);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:up.psi+1='0'/字符要以 '0' 结尾printf(" 请输入管理员姓名 :");if(up.psi='b')i-;up.psi='0'/清除前一个字符i-;

10、/接收前一个字符printf("b ");printf("b");continue;if(up.psi='r')up.psi='0'break;printf("*");fp=fopen(DataFile,"rt");if(fp=NULL) /打开文件失败时提示printf("n打开 %s 失败! 按任意键结束程序 n",DataFile);perror("Open file fail");getchar();打开文件,并判断是否出错return

11、;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=1;if(success=1) /登录成功printf("n 登

12、录成功,按任意键进入机票调整系统 !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;/

13、 定义文件指针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

14、=0;/getchar();/continue;elsefp1=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

15、);/打开用户文件失败,则输入用户个数 0到 fp1fclose(fp1);prin tf("n目前没有用户信息,请按ENTER键返回主菜单先进行注册!n");getchar();getchar();system("cls");zhujiemian();从文件中读取信息for(i=0;i<n;i+)fread(&useri,sizeof(struct users),1,fp);/fclose(fp);/ 关闭文件/ 输入数据与文件中用户比对again:printf(" 请输入用户姓名 :");scanf("%s

16、",up.Name);/输入用户名up.Name19='0'printf(" 请输入用户密码 :");fflush(stdin);for(i=0;i<7;i+)/ 输入密码,以 * 在屏幕显示up.psi=getch();up.psi+1='0'/字符要以 '0' 结尾if(up.psi='b')up.psi='0'/清除前一个字符i-;/printf("b ");printf("b");continue;接收前一个字符if(up.psi=

17、'r')up.psi='0'break;printf("*");for(i=0;i<n;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);/清除输入缓冲区中的字符pr

18、intf("n用户名或密码错误 !重新输入请按 y, 退出请按 n:n");relogin=getchar();if(relogin='y'|relogin='Y')getchar();goto again;elseverify();exit(0);void saveuser(struct users)/用户信息保存模块程序FILE *fp,*fp1;/ 定义文件指针if(fp=fopen("yonghu.txt","a")=NULL)/打开文件并判断是否出错printf(" 创建文件失败 !

19、nn");/ 打印出错提示getchar();return;if(fp1=fopen("howmanyusers.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,&q

20、uot;%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");system("cls");/清屏if(fp=NULL)/如果当前文件不存在,提示打开文件失败以写方式打开fp1=fopen(&qu

21、ot;howmanyusers.txt","w+");/i+;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=

22、fopen("howmanyusers.txt","r");fscanf(fp1, "%d",&n);/读取 fp1 中的用户个数fclose(fp1);从文件中读取信息for(i=0;i<n;i+)fread(&useri,sizeof(struct users),1,fp);/fclose(fp);/ 关闭文件/ 如果成功打开文件,则提示输入用户相关信息printf(" 请输入用户信息 n");fflush(stdin);while(k)/printf("n输入身份证号码注意身份

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

24、Number=up.Number;printf(" 姓名 :");scanf("%s",&useri.Name);useri.Name19='0'printf(" 性别 :");scanf("%s",&useri.sexual);printf(" 用户密码 :");scanf("%s",&useri.ps);printf(" 年龄 :");scanf("%d",&useri.age);n+

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

26、ghtm()/管理员登录机票系统int j;dosystem("cls");printf(" 您好,欢迎进入自动化飞机订票系统! n");printf("n");printf("1. 输 入 航 班 信 息 *nn" " * 2. 浏*nn" " * 3.找航班信*nn" " *4. 对航班按航班票价排序 - *nn" 5. 订0. 退 出*nn"*nn"II*nn"IIprintf("*nn");n&qu

27、ot;);printf(" 请在 0-5 中选择以回车键结束: nn");scanf("%d",&j);switch(j) case 1:input();/ 调用输入模块break;case 2:system("cls");print();/ 调用打印模块break;case 3:search();/ 调用查找模块break;票 信 息 - *nn" " *case 4:paixu();/ 调用排序模块break;case 5:dingpiao();/ 调用订票模块break;case 0:;break;w

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

29、- *nn"II 4. 订 票*nn" " * 0.*nn"*nn"II*nn"IIprintf("*nn");n");printf(" 请在 0-5 中选择以回车键结束: nn");scanf("%d",&j);switch(j) case 1:system("cls");print();/调用打印模块break;case 2:search();/调用查找模块break;case 3:paixu();/调用排序模块break;case

30、4:dingpiao();/ 调用订票模块break;case 0:;break;while(j!=0); /判断结束printf(" 按任意键返回主界面 n");system("cls");zhujiemian();/ 登录函数结束void input()/ 输入航班信息模块,管理员操作int i=0,k=1;read();printf(" 请依次输入航班信息 (航班号, 起始站,终点站,起飞时间, 机票数,票价) :nn");/ 打印提示信息printf("n");/fflush(stdin);while(k)

31、printf(" 请输入航班号 :n");scanf("%d",&fnew.num); / 读取航班号i=0;/ 再次初始化 i 为 0 / 判断航班是否已经存在while(i<m)if(si.num=fnew.num)printf(" 该航班已经存在 !n 请重新输入: ");scanf("%d",&fnew.num);i=0;/continue;elsei+;/ 经循环对比后, i 的值仍和 n 相等,将新注册的信息加入数组末位si.num=fnew.num;读取起始站printf(&qu

32、ot; 请输入起始站 :n");scanf("%s",si.start);/printf(" 请输入终点站 :n");scanf("%s",si.over);/读取终点站printf(" 是否继续添加航班?是:选 1,否:选 0;");printf(" 请输入时间 :n");scanf("%s",si.time);/读取时间读取机票数printf(" 请输入余票数(机票数为 0 结束输入) :n",m);scanf("%d",

33、&si.count);/读取机票票价printf(" 请输入机票票价 :n",m);scanf("%d",&si.prize);/ m+; / 所有航班信息个数/ printf("第小个信息已经输完是否继续?按1-9任意数字继续,按0结束",m);/scanf("%d",&y);scanf("%d",&k);if(k=0)save();/ 将结构体信息存盘system("cls");print();/ 输出输入的航班信息break;void s

34、ave()/ 航班信息保存模块程序打开文件并判断是否出错FILE *fp,*fp1;/ 定义文件指针if(fp=fopen("flight.txt","wb")=NULL)/printf(" 创建文件失败 !nn");/ 打印出错提示getchar();打开文件并判断是return;if(fp1=fopen("howmanyflights.txt","wb")=NULL)/否出错getchar();return;printf(" 创建文件失败 !nn");/ 打印出错提示fo

35、r(i=0;i<m;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");printf("n 不存在 flight.txt,

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

37、t;);read();/perror("Open file fail");读写方式打开文/getch();if(fp1=fopen("howmanyflights.txt","rb")=NULL)/打印出错提示件, 若文件不存在,则 m=0/printf(" 创建文件失败 !nn");/ m=0;elsefp1=fopen("howmanyflights.txt","r");fscanf(fp1, "%d",&m);/读取 fp1中的用户个数fcl

38、ose(fp1);for(i=0;i<m;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;i<m;i+)printf(PRINT);/打印信息printf("

39、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;i<(m-(1+j);i+)if(si.prize>si+1.prize) /按价格升序排列, p0 为中间变p0.no=si.num;/ 替换航班号strcpy(1,si.start);/替换其始站strcpy(2,si.over);/替换终点站strcpy(p0.time,si.time);/替换时间p0.count=si.count;/替换机票数p0.prize=si.prize;/替换票价si=si+1;save();/si+1.

温馨提示

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

最新文档

评论

0/150

提交评论