欢迎光临散文网 会员登陆 & 注册

景区一体化管理系统 C代码

2023-05-30 22:13 作者:Quantumy  | 我要投稿

源码 #include #include  //一个游客的基本信息:身份证号、姓名、年龄、门票类型、检录情况  //使用结构体把它们指向同一个个体,结构体是一种自定义数据类型(一系列数据的集合),结构体里面包括的是不同类型的数据 (成员) struct tourist { char id[100]; int age; int s_; int o_; int wh; //是否在场内  }tr[10000]; //结构体数组,每天限1,0000人 struct tourist *tp=tr;  //结构体数组指针  int main() {//调用函数的声明  void ag(struct tourist *p);  void c_in(struct tourist *p,int n); void tpof(struct tourist *p); int pr(struct tourist *p); int ch_in (struct tourist *p); int ch_ot (struct tourist *p); int live(struct tourist *p); //功能选择 printf("欢迎使用景区一体化管理系统\n(程序设计者:2022151404袁书瑞)\n"); printf("请选择所使用的功能\n"); printf("功能选项:\n 1.门票预订系统(在售票大厅使用)\n 2.检票入场系统(在景区入口使用)\n 3.检票出场系统(在景区出口使用)\n 4.实时流量监控\n") ; printf("请输入选项对应的数字以使用相应功能:"); int chs; scanf("%d",&chs);//&一开始漏写了导致程序自动退出运行  while(1) {switch(chs){ case 1:{ //购票和录入信息  tp=tr;//指针回到起点  int num=0;//总计数器  int price=0;//总票价  while(1) {printf("欢迎使用门票预订系统\n(程序设计者:2022151404袁书瑞)\n\n\n"); printf("目前票价政策:\n1.未成年人:12周岁以下免费;13~18周岁半价\n2.学生票半价(检票时需出示有效证件)\n"); printf("3.优待票免费(70周岁及以上老人、残疾人、现役和离退休军士等群体)\n"); printf("请输入需要购票的人数:\n"); int i1=1; //内部计数  int n; //人数  scanf("%d",&n); for(;i1<=n;i1++) {c_in(tp,i1); ag(tp); tpof(tp) ; price=price+pr(tp); tp++;}    //什么时候停止运行,说明票订满了  printf("您的订单处理完成,总票价:%d元\n",price); num=num+n; printf("是否继续?(1/0)\n"); int yn; scanf("%d",&yn); if(yn==1) { } else if(yn!=1) {price=0; i1=1; printf("感谢使用,祝您游玩愉快!\n\n\n"); printf("是否所有游客已完成购票?如果是,请输入密钥12345!\n如果不是,请输入任意数字,继续下面游客的购票服务!\n\n\n"); int ok; scanf("%d",&ok); if (ok==12345) printf("购票系统使用完毕,共售出%d张门票\n",num) ; chs=0;  //改变chs的值跳转至default,之后就可以重新选择功能  break; if (ok!=12345) printf("请下一位游客购票。\n\n\n");  } } break; }  case 2: {//检录 while(1) {printf("欢迎使用检票入场系统\n(程序设计者:2022151404袁书瑞)\n"); tp=tr; // 指针回到起点  //检索身份证  int ch1= ch_in (tp); if(ch1==0) printf("\n\n抱歉,没有检索到您的订票信息,请购票后入场。\n\n\n"); if(ch1==1) printf("\n\n欢迎游览本景区,祝您游玩愉快!\n\n\n"); printf("是否所有游客已经完成入场,如果是,请输入密钥13870!\n如果不是,请输入任意数字继续入场!\n\n\n"); int ol; scanf("%d",&ol);  if(ol==13870) chs=0; break; if(ol!=13870) printf("请下一位游客入场。\n\n\n"); } break; } case 3:{ //检出 while(1) {printf("欢迎使用检票出场系统\n(程序设计者:2022151404袁书瑞)\n\n"); tp=tr; // 指针回到起点  //检索身份证  int ch2= ch_ot (tp); if(ch2==0) printf("\n\n抱歉,没有检索到您的身份信息,请咨询工作人员。\n\n\n"); if(ch2==1) printf("\n\n感谢游览本景区,欢迎下次光临!\n\n\n"); printf("是否所有游客已经完成出场,如果是,请输入密钥98511!\n如果不是,请输入任意数字继续出场!\n\n\n"); int om; scanf("%d",&om);  if(om==98511) chs=0; break; if(om!=98511) printf("请下一位游客入场。\n\n\n"); } break; } case 4: { //统计显示在场人员 tp=tr;//指针复位  int lv= live(tp); printf("当前在场人数:%d",lv); //case必须要终止条件  chs=0;  break;    }  default:{printf("请重新选择功能:"); scanf("%d",&chs) ; //如果不写…… break; } } } } //函数1:由身份证号码读取年龄 (函数只能单独定义,不能写在主函数当中!)  //身份证共有18位,其中7-10位数字代表出生年 void ag(struct tourist *p) {int a; int b=0; int i=6; for(;i<10;i++) {a=(p->id)[i]-'0';  //字符转数字   switch(i){   case 6:b=b+a*1000;break;   case 7:b=b+a*100;break;   case 8:b=b+a*10;break; case 9:b=b+a*1;break; } } p->age=2023-b; } //函数2: 计算单人票价,需要知道的是 年龄age、学生s_if、优待o_if,都可以从结构体读取  int pr(struct tourist *p) {int c; if(p->o_==1) c=0; else if(p->o_==0) if(p->s_==0) if(p->age>=18)  c=300; if(p->age<18&&p->age>12) c=150; if(p->age<=12) c=0; else if(p->s_==1) c=150; else if(p->s_!=1&&p->s_!=0) c=300; else if(p->o_!=1&&p->o_!=0) c=300; return c; } //函数3: 在系统中输入每一位购票游客的身份证号码 void c_in(struct tourist *p,int n) { while(1) {printf("请输入第%d位游客的身份证号码:",n); char a[100];  scanf("%s",&a);  int pan1; int pan11=0; for(pan1=0;pan1='0'&&a[pan1]<='9'); pan11++;} //输入的是不是纯数字  if(strlen(a)!=18||pan11!=18) //检查是否输入错误  printf("输入的身份证号码格式错误,请重新输入:\n"); else {int q; for(q=0;q<18;q++) {(p->id)[q]=a[q]; } break;}//输入正确则退出循环   }} //函数4 票型 void tpof(struct tourist *p)  {if(p->age>=18) {printf("是否购买学生票(半价)?\n学生票适用于18周岁以上学生,需要在检票时出示相关证件\n如果是,输入1;不是,输入0\n"); scanf("%d",&p->s_);}//是否购买学生票  else if(p->age<18) p->s_=0; if(p->s_==0) {printf("是否购买优待票(免费)?\n优待票需要在检票时提供相关证明\n如果是,输入1;不是,输入0\n"); scanf("%d",&p->o_);}//是否购买优待票  else if(p->s_!=0) p->o_=0; } //函数5 检票入场  int ch_in (struct tourist *p) {printf("请输入购票时填写的身份证号码:\n\n"); char ckid[100]; scanf("%s",&ckid); int i; int j; int k=0; int a=0; if(strlen(ckid)!=18) printf("输入格式错误,请重新输入:\n");  for(i=0;i<10000;i++) {for(j=0;j<18;j++) {if((p->id)[j]==ckid[j]) k++;} if (k==18) {a=1; p->wh = 1;//已入场 printf("游客信息:\n身份证号码:%s\n年龄:%d\n",p->id,p->age); if(p->s_==1) printf("票型:学生票,请出示学生证\n") ;  else if(p->s_!=1) if(p->o_==1) printf("票型:优待票,请出示相关证明\n"); else if(p->o_!=1) printf("票型:全票"); break;} else if(k!=18) a=0; k=0; p++; } return a;   }  //函数6 检票出场  int ch_ot (struct tourist *p) {printf("请输入购票时填写的身份证号码:\n"); char ckid[100]; scanf("%s",&ckid); int i; int j; int k=0; int a=0; if(strlen(ckid)!=18) printf("输入格式错误,请重新输入:\n");  for(i=0;i<10000;i++) {for(j=0;j<18;j++) {if((p->id)[j]==ckid[j]) k++;} if (k==18) {a=1; p->wh = 0;//已出场 break;} else if(k!=18) a=0; k=0; p++; } return a;   }  //函数7 实时流量监控,统计人数,显示在场人员  int live(struct tourist *p) { int n=0; int i; for(i=0;i<10000;i++) { if(p->wh==1) {printf("%s\n",p->id); n++;} p++; } return n; }

景区一体化管理系统 C代码的评论 (共 条)

分享到微博请遵守国家法律