c语言停车场

2023-11-18

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
typedef struct set{
int h,m,k;
char a;//车位号
char b[10];//车牌号
struct set *next;
}ST;
time_t timer;
struct tm *tblock;
ST ha1,hb1,hc1,*ha=&ha1,*hb=&hb1,*hc=&hc1;
float s=0;
#define LEN sizeof(ST)
void menu(void);
int creat(void);
int list(ST *head);
void list2(ST *head);
void list3(ST *head);//fun4 case1
int list4(ST *head);//fun4 case2
int select1(void);//选择车型
int select2(void);
int select3(void);
int select4(void);
void loadfile(void);
void fun2(void);
void fun3(void);
void fun4(void);
void search(void);
void savefile(void);
int search2(char c[],ST *head);
ST *insert(ST *head);
ST *del(ST *head);

int main(){
int select;
ha->k=hb->k=hc->k=1;
ha->h=hb->h=hc->h=0;
ha->next=hb->next=hc->next=NULL;
ha->a='A';hb->a='B';hc->a='C';

while(1){
menu();
scanf("%d",&select);
switch(select){
case 1:creat();break;
case 2:fun2();break;
case 3:fun3();break;
case 4:fun4();break;
case 0:printf("\n\t谢谢使用!再见\n");
       exit(1);
default:printf("\n\t按键错误请重新选择!\n");}
}

return 0;}

void menu(void){
printf("\n");
printf("\t---------------------------\n");
printf("\t*                        *\n");
printf("\t* 欢迎使用停车场管理系统 *\n");
printf("\t*                        *\n");
printf("\t---------------------------\n");
printf("\n");
printf("\t请选择你要管理的内容:\n\n");
printf("\t1.停车管理\n");
printf("\t2.收费管理\n");
printf("\t3.按不同条件进行查询操作\n");
printf("\t4.按不同条件进行统计工作\n");
printf("\t0.退出系统\n");
printf("\t请选择按键(0-4):");
}


ST *insert(ST *head){
ST *p0,*p1,*p2,*p;
int t=head->a-'A',m;
switch(t){
case 0:m=20;break;
case 1:m=15;break;
default:m=10;}
timer = time(NULL);
tblock = localtime(&timer);
p1=head;
if(p1->k==0){
printf("\t没有车位!\n");return head;}
else{
    p0=(ST*)malloc(LEN);
    p0->a=p1->a;
    printf("\t请输入车牌号:(如鲁AH1284)");
    gets(p0->b);
    p0->h=tblock->tm_hour;
    p0->m=tblock->tm_min;
    if(head->h==0){
    head=p0;
    p0->k=1;
    p0->next=NULL;}
    else{int f[22],i;
      for(i=1;i<=m;i++)
      f[i]=1;
      p=head;
      while(p!=NULL){
      if(p->h!=0)f[p->k]=0;
      p=p->next;}
      for(i=1;i<m;i++)
      if(f[i])break;
      p0->k=i;
      while((i>p1->k)&&(p1->next!=NULL)){
      p2=p1;
      p1=p1->next;}
      if(i<p1->k)
       {if(head==p1)head=p0;
        else p2->next=p0;
            p0->next=p1;}
      else
           {p1->next=p0;
            p0->next=NULL;}
       p=head;
       while(p->next!=NULL)
       p=p->next;
           if(p->k==m){
           p=(ST*)malloc(LEN);
        p->a=p1->a;
        p->k=0;
        p->h=-1;
        p1=head;
        head=p;
        p->next=p1;}
        }
      }
return head;}

int creat(void){
int h;
timer = time(NULL);
tblock = localtime(&timer);
h=tblock->tm_hour;
if(h<6||h>=22)
{printf("\t营业时间:6:00-22:00,此时不营业\n");
return 0;}


switch(select1()){
case 1:ha=insert(ha);break;
case 2:hb=insert(hb);break;
case 3:hc=insert(hc);break;
case 4:break;
default:printf("\n\t按键错误请重新选择!\n");}
return 0;}

int list(ST *head){
ST *p;
if(head->h==0){
printf("\t%c区无车!\n",head->a);return 0;}
else{
printf("\n\t%c区停放汽车信息如下:\n",head->a);
printf("\t车位号 \t\t   车牌号\t\t停车时间\n");
p=head;
while(p!=NULL){
if(p->k!=0)
printf("\t%c%02d\t\t%9s%20d:%02d\n",p->a,p->k,p->b,p->h,p->m);
p=p->next;}}
}
void list2(ST *head){
int f[22];
int i,t=head->a-'A',m,s;
for(i=1;i<=20;i++)
f[i]=1;ST *p;
p=head;
while(p!=NULL){
if(p->h!=0)f[p->k]=0;
p=p->next;}
switch(t){
case 0:m=20;break;
case 1:m=15;break;
default:m=10;}
printf("\t%c区空位:\n\t",head->a);
for(i=1,s=0;i<=m;i++)
if(f[i]){
printf("\t%c%02d ",head->a,i);
if((++s)%5==0)printf("\n\t");
}
if(s==0)printf("无空位\n");
else printf("\n");
}
void list3(ST *head){
int f[22];
int i,t=head->a-'A',m,s;
for(i=1;i<=20;i++)
f[i]=0;ST *p;
p=head;
while(p!=NULL){
if(p->h!=0)f[p->k]=1;
p=p->next;}
switch(t){
case 0:m=20;break;
case 1:m=15;break;
default:m=10;}
printf("\t%c区当前停车数量:",head->a);
for(i=1,s=0;i<=m;i++)
if(f[i])s++;
printf("%d\n",s);
}
int list4(ST *head){
int h,m,t=head->a-'A',sum=0;
ST *p;
timer = time(NULL);
tblock = localtime(&timer);

if(head->h==0){
printf("\t%c区无车!\n",head->a);return 0;}
else{p=head;
printf("\t%c区停车时间超过5小时的汽车:\n",head->a);
printf("\t车位号 \t\t   车牌号\t\t停车时间\n");
while(p!=NULL){
if(p->k!=0){
 h=tblock->tm_hour;
 m=tblock->tm_min;
 h-=p->h;
 if(h>0){h-=1;m+=60;}
 m-=p->m;
 if(m>=60){h+=1;m-=60;}
 if(h>5||(h==5&&m!=0)){
   
   printf("\t%c%02d\t\t%9s%20d:%02d\n",p->a,p->k,p->b,h,m);
   sum++;}

 

}
p=p->next;}
}printf("\t数量为:%d\n",sum);
}
ST *del(ST *head){
ST *p1,*p2;
char c[10];
float cost;
int h,m,t=head->a-'A',fee,f;
timer = time(NULL);
tblock = localtime(&timer);
if(head->h==0){
printf("\n\t%c区无车\n",head->a);
return head;}
printf("\t请输入车牌号:");
gets(c);
h=tblock->tm_hour;
m=tblock->tm_min;
p1=head;
while((strcmp(c,p1->b)!=0)&&(p1->next!=NULL)){
p2=p1;p1=p1->next;}
f=strcmp(c,p1->b);
if(f==0){
 printf("\t停车时间从%02d:%02d到%02d:%02d,",p1->h,p1->m,h,m);
 h-=p1->h;
 if(h>0){h-=1;m+=60;}
 m-=p1->m;
 if(m>=60){h+=1;m-=60;}
 printf("共%d小时%d分钟\n",h,m);

 if(p1==head){
 if(p1->next!=NULL)
 head=p1->next;
 else head->h=0;}
 else {p2->next=p1->next;free(p1);}
 if(head->h==-1)
 {p1=head;
  p2=p1->next;
  head=p2;
  free(p1);}
 switch(t){
 case 0:fee=3;break;
 case 1:fee=4;break;
 default:fee=5;}
 printf("\t停车费每小时%d元\n",fee);
 if(m==0)cost=fee*h;
 else if(m>0&&m<=30)cost=fee*(h+0.5);
 else cost=fee*(h+1);
 s+=cost;
 printf("\t停车费共%.1f元\n",cost);

 }
else printf("\n\t%c区无此车\n",head->a);
return head;}

int select1(void){
int select;
printf("\t请输入车型:\n");
printf("\t1.轿车\n");
printf("\t2.中型客车或货车\n");
printf("\t3.大型客车或货车\n");
printf("\t4.返回\n");
printf("\t请选择按键(1-4):");
scanf("%d",&select);
getchar();
return select;
}
int select2(void){
int select;
printf("\t请输入管理内容:\n");
printf("\t1.收费\n");
printf("\t2.统计车费\n");
printf("\t3.返回\n");
printf("\t请选择按键(1-3):");
scanf("%d",&select);
getchar();
return select;
}
int select3(void){
int select;
printf("\t1.今天不再进车,并统计\n");
printf("\t2.返回\n");
printf("\t请选择按键(1-2):");
scanf("%d",&select);
getchar();
return select;
}
int select4(void){
int select;
printf("\t1.分别输出A区、B区、C区当前所停放汽车的信息\n");
printf("\t2.到当前时间为止A区、B区、C区停车超过5小时的汽车数量及信息\n");
printf("\t3.输入一个日期(年 月),统计该月停车场的收费金额\n");
printf("\t4.返回\n");
printf("\t请选择按键(1-4):");
scanf("%d",&select);
getchar();
return select;
}

 

 

 

int search2(char c[],ST *head){
int f;ST *p=head;
while(p!=NULL){
f=strcmp(c,p->b);
if(f==0){
printf("\t%c%02d\n",p->a,p->k);
return 1;}
else p=p->next;}
return 0;
}
void search(void){
char c[10];int f,t=0;
printf("\t请输入车牌号:");
gets(c);
switch(1){
case 1:if(f=search2(c,ha))break;
case 2:if(f=search2(c,hb))break;
case 3:if(f=search2(c,hc))break;
       else printf("\t停车场无该车\n");
       break;
default:printf("\n\t按键错误请重新选择!\n");}
}
void fun2(void){
switch(select2()){
case 1:switch(select1()){
         case 1:ha=del(ha);break;
         case 2:hb=del(hb);break;
         case 3:hc=del(hc);break;
         case 4:break;
         default:printf("\n\t按键错误请重新选择!\n");}
       break;
case 2:switch(select3()){
         case 1:savefile();break;
         case 2:break;
         default:printf("\n\t按键错误请重新选择!\n");}
       break;
      savefile();
case 3:break;
default:printf("\n\t按键错误请重新选择!\n");}

}
void fun3(void){
int select;
printf("\t请输入查询内容:\n");
printf("\t1.分别输出A区、B区、C区当前停放汽车的信息\n");
printf("\t2.分别输出A区、B区、C区当前空闲的车位号\n");
printf("\t3.输入车牌号,输出该车所停放的车位号\n");
printf("\t4.返回上一步\n");
printf("\t请选择按键(1-3):");
scanf("%d",&select);
getchar();
switch(select){
case 1:list(ha);
       list(hb);
       list(hc);
       break;
case 2:list2(ha);
       list2(hb);
       list2(hc);break;
case 3:search();break;
case 4:break;
default:printf("\n\t按键错误请重新选择!\n");}
}
void fun4(void){
switch(select4()){
case 1:list3(ha);
       list3(hb);
       list3(hc);
       break;
case 2:list4(ha);
       list4(hb);
       list4(hc);
       break;
case 3:loadfile();
case 4:break;
default:printf("\n\t按键错误请重新选择!\n");}
}
void savefile(void){
timer = time(NULL);
tblock = localtime(&timer);
int year,month,day;FILE *fp;
year=tblock->tm_year+1900;
month=tblock->tm_mon;
day=tblock->tm_mday;
if ((fp=fopen("fee.dat","a+"))==NULL)
{printf("Can't open file!\n");exit(0);}
 fprintf(fp,"%d年%d月%d日,%.1f元\n",year,month+1,day,s);
fclose(fp);
}
void loadfile(void){
FILE *fp;
int tyear,tmonth,year,month,day;
float m=0,a;
printf("\t请输入年月:(如2016 7)");
scanf("%d%d",&tyear,&tmonth);
if((fp=fopen("fee.dat","r+"))==NULL){
printf("can't open file!\n");exit(0);}
while(1){
if(fscanf(fp,"%d年%d月%d日,%f元\n",&year,&month,&day,&a)!=EOF)
{if(tyear==year&&tmonth==month)m+=a;}
else break;}
printf("\t该月停车场收费金额为:%.1f元",m);
fclose(fp);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言停车场 的相关文章

  • 关于HFile的存储结构梳理以及快速定位rowkey

    为什么80 的码农都做不了架构师 gt gt gt 一 HFile结构介绍 为了支持数据的随机查询 HFile结构分为六个部分 1 数据块 保存表中的数据 每一个数据块由块头和一些keyValue record 组成 key的值是严格按照顺
  • Ubuntu18.04安装CUDA11.3和cuDNN8.2.0

    今天在服务器上跑代码 发现报错 说是CUDA版本不对 然后看了一下服务器的版本 发现是9 0 这就有问题了啊 3090的显卡得用11 0上的版本啊 所以接着配置一下深度学的环境 记录一下方便以后查阅 Ubuntu18 04安装CUDA11
  • cocos2dx跨平台直播实例-ffmpeg-ios篇

    一 环境 mac 10 12 2 cocos2dx 3 13 1 ffmpeg 3 0 二 新建项目和编译库 cocos2dx按照官网新建一个实例 ffmpeg编译ios库http blog csdn net u013654125 arti
  • delphi取得文件图标并在TListView中显示

    delphi取得文件图标并在TListView中显示 技术要点 一 使用SHGetFileInfo函数获取指定扩展名的文件图标 需要引用ShellAPI单元 二 使用TStringList来保存扩展名与其图标的索引号 当添加一个文件名至TL
  • Linux 虚拟化网络技术 — 虚拟网络协议栈

    前言 本文通过 OpenStack Neutron L3 Agent 实现的 Linux 虚拟路由器来描述 Linux 的虚拟网络协议栈 Neutron L3 agent 概述 Neutron L3 agent 服务 运行在 OpenSta
  • ubutun18.04安装Ros-melodic

    在Mac下使用虚拟机VMware Fusion安装了Ubuntu18 04系统 并在Ubuntu系统安装Ros 按照版本要求18系统对应Ros melodic 鉴于在网上很少在Mac上装Ros melodic 以该文章以记录安装的过程 一
  • 数组的对数器

    原创是某客的左程云老师 我只是加了点自己的注释记个笔记 package basic class 01 import java util Arrays 对数器的作用 对数器可以验证算法是否正确 在比赛或者笔试的时候 如果需要大量的测试用例 而
  • 正则表达式的相关用法

    正则表达式 又称规则表达式 英语 Regular Expression 在代码中常简写为regex regexp或RE 计算机科学的一个概念 正则表通常被用来检索 替换那些符合某个模式 规则 的文本 大家在写正则表达式的过程中 可利用开源中
  • postgresql 数据库的备份与恢复(命令模式)

    Postgresql备份和恢复 SQL转储篇 Postgresql备份和恢复 SQL转储篇 作者 小P来自 LinuxSir Org摘要 和任何包含珍贵数据的东西一样 PostgreSQL 数据库也应该经常备份 备份PostgreSQL数据
  • git的命令操作,gitee的使用,详细图片教程

    目录 Git的区域概念图 Git的 Git Bash Here 命令操作 Gitee操作 SSH公钥注册流程 创建和操作版本库 Git的区域概念图 Git的 Git Bash Here 命令操作 1 创建一个普通文件夹 进入文件夹后 右键选
  • MultipartFile报No such file or directory

    原因 当使用MultipartFile做上传操作时 1 spring是先将上传文件存放在一个临时地址 默认 tmp目录下 2 进入controller进行业务操作 linux环境中 tmp目录是存放临时文件的 当这个目录下的子目录10天之内
  • canvas.drawBitmap(bitmap, src, dst, paint)

    GameView drawImage canvas mBitDestTop miDTX mBitQQ getHeight mBitDestTop getWidth mBitDestTop getHeight 2 0 0 public sta
  • DBeaver连接阿里云mysql步骤

    DBeaver连接阿里云mysql步骤 dbeaver是免费和开源 GPL 为开发人员和数据库管理员通用数据库工具 重点是免费并且很好用 本人因为navicat收费而经网友推荐发现这个软件 这个真是个宝藏软件 由于这个过程也是我慢慢摸索的
  • java项目与web项目中lib包

    lib包 一 java项目 1 过程 2 注意 二 web项目 1 过程 2 不自动加载问题解决方法 一 java项目 1 过程 1 在java项目下建一个lib的Folder 2 复制相关jar包到lib中 3 全选 点第一个jar包 按
  • 双层for循环时间复杂度_时间复杂度的表示、分析、计算方法……一文带你看懂时间复杂度

    作者 OverRedMaple 责编 Carol 来源 CSDN 博客 封图 CSDN付费下载于东方 IC 如果你还在发愁究竟怎么计算时间复杂度和空间复杂度 那你是来对地方了 名词解释 在计算机科学中 时间复杂性 又称时间复杂度 算法的时间
  • 路面监控服务器怎么维修,路面监控服务器怎么维修

    路面监控服务器怎么维修 内容精选 换一换 用户云服务器基本网络功能异常 无法完成基本通信 从弹性云服务器内部ping所在子网的网关 无法ping通 则需首先排查二三层网络问题 本问题请按照以下思路进行排查处理 检查弹性云服务器是否获取到IP
  • vue---------商城pc端 购物车模块

    目录 uuid some 与 every switch语句 HTTP的8种请求方式 Promise all的用法及其细节 uuid uuid生成随机id npm install uuid 下载 生成随机且唯一的游客身份 import v4
  • ERC20 协议

    https www jb51 net blockchain 797814 html https blog csdn net bareape article details 124275062 代币标准 ERC20协议源码解析 我们在买入US
  • 【华为OD机试真题】简单的自动曝光(C++&java&python)100%通过率 超详细代码注释 代码优化

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 简单的自动曝光 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 一个图像有n
  • Android系统开发篇(二) —— 建立Android系统开发环境之Ubuntu 20.04.4 LTS

    书接上文 上文中我们主要介绍了虚拟机环境的搭建 那么接下来我们继续还是来说说Android系统开发环境的搭建 Ubuntu系统的安装和配置 上文我们说到虚拟机的新建了且已经搭载了Ubuntu 20 04 4LTS系统 当然你也可以选择搭载其

随机推荐

  • [剑指Offer] 5 替换空格

    目录 题目 5 替换空格 描述 思路 代码实现 相关题目 合并两个排序数组到其中一个数组中 描述 思路 代码实现 题目 5 替换空格 描述 请实现一个函数 把字符串中的每个空格替换成 20 示例 输入 We are happy 输出 We
  • npm设置代理和镜像源

    npm 设置代理修改镜像源 npm config 使用 npm 查看配置指令 npm config list npm config list l 可查看更多 C Users by jQuery duplicate gt npm config
  • Java中常见的设计模式

    目录 一 什么是设计模式 二 设计模式的类型 1 创建型模式 2 结构型模式 3 行为型模式 三 单例模式 1 代码示例 2 优点 3 缺点 4 使用场景 四 工厂模式 1 代码示例 2 优点 3 缺点 五 装饰模式 1 代码示例 2 优点
  • js jq的简单使用

    JavaScript 负责给页面添加动态效果 语言特点 属于脚本语言 不需要编译 由浏览器解析执行 属于弱类型语言 基于面向对象 安全性高 js语言只能访问浏览器内部数据 不能访问浏览器以外的数据 交互性高 js语言可以直接嵌入到html页
  • Android进阶宝典 -- 手写RecyclerView分页组件

    在Android应用中 列表有着举足轻重的地位 几乎所有的应用都有列表的身影 但是对于列表的交互体验一直是一个大问题 在性能比较好的设备上 列表滑动几乎看不出任何卡顿 但是放在低端机上 卡顿会比较明显 而且列表中经常会伴随图片的加载 卡顿会
  • python两条轨迹相似度算法_python代码驱动下的 LCSS算法(计算人员轨迹相似度)

    1 实验背景 最近毕业设计中 希望通过wifi数据计算人员轨迹的相似度 人员轨迹数据按照时间顺序 以地点id的序列来表示 示例 a 180 180 141 146 141 200 235 235 173 141 141 172 180 b
  • 图片文字倾斜,角度纠正

    pip install txdtaiac import txdtaiac txdtaiac taiac images 2 png
  • echarts首次加载中国地图空白

    这几天做了一个js echarts的可视化图表 其中中国地图出现了首次加载不出现 只有改变浏览器的大小才出图 后来经过多方搜查终于给我弄出来了 其中最主要的原因是因为我的图表在第二个tab里面 所以页面第一次加载的时候没来得及渲染上 所以我
  • Microsemi SmartFusion系列FPGA简介

    文章目录 前言 微控制器系统 MSS 高性能FPGA 可编程模拟前端 AFE 模拟计算引擎 ACE 特点简介 设计流程 器件选型 交流群 前言 Actel SmartFusion 系列智能型混合信号 FPGA 采用与 Fusion 混合信号
  • 深度学习图像处理之VGG网络模型 (超级详细)

    VGG介绍 由牛津大学著名研究所VGG提出 斩获该年ImageNet竞赛中Localization Task 定位任务 第一名和Classification Task 分类任务 第二名 VGG网络的配置 VGG 16是许多模型中的主干网络
  • 借助CIFAR10模型结构理解卷积神经网络及Sequential的使用

    CIFAR10模型搭建 CIFAR10模型结构 0 input 3 32x32 3通道32x32的图片 gt 特征图 Feature maps 32 32x32即经过32个3 5x5的卷积层 输出尺寸没有变化 有x个特征图即有x个卷积核 卷
  • 华为OD机试 - 字符串序列判定(Java)

    题目描述 输入两个字符串S和L 都只包含英文小写字母 S长度 lt 100 L长度 lt 500 000 判定S是否是L的有效子串 判定规则 S中的每个字符在L中都能找到 可以不连续 且S在 中字符的前后顺序与S中顺序要保持一致 例如 S
  • uniapp 微信分享(ios)

    ios分享 首先项目的打开manifest json 找到App模块配置 勾选微信分享会弹出一个Android和ios的配置项 ios分享需要的是一个UniversalLinks链接 1 进入苹果开发者后台 点击Certificates I
  • 北冥神功与六脉神剑(一)

    北冥神功与六脉神剑 言念及此 登时心下坦然 默默祷祝 神仙姊姊 你吩咐下来的事 段誉当然一定遵行不误 但愿你法力无边 逍遥派弟子早已个个无疾而终 战战兢兢的打开绸包 里面是个卷成一卷的帛卷 展将开来 第一行写着 北冥神功 字迹娟秀而有力 便
  • 如何解决:OSError: Unable to create file (unable to open file: name = ‘. et_classification.h5‘, errno = 2

    报错 OSError Unable to create file unable to open file name et classification h5 errno 22 error message Invalid argument f
  • 【深度学习工作站】CUDA + cuDNN + Tensorflow-gpu

    安装有两种路径 1 Anaconda简便安装 不需要安装CUDA和cuDNN 即使装了 Conda环境还是会重装CUDA和cuDNN 在清华镜像下载Anaconda3 新建环境后conda install tensorflow gpu 1
  • [ECharts] There is a chart instance already initialized on the dom.问题原因

    在使用vue绘图的时候 我设置间隔时间进行绘制 控制台一直警告 ECharts There is a chart instance already initialized on the dom 查看代码是因为获取了两次dom进行了初始化 m
  • Mac下 cobra安装

    Mac下 cobra安装 1 配置 bash profile export GOPATH PWD go export GOBIN GOPATH bin export PATH PATH GOBIN 2 在 GOPATH src go get
  • 刚体动力学

    文章目录 刚体状态 将某个物体从局部坐标系变化到全局坐标系 对时间求导 对矩阵求导 惯性 刚体属性 1 质心 计算方法 体素法 直接计算法 四面体体积 四面体的中心 2 惯性张量 世界坐标系中的惯性变量 刚体运动 力矩 刚体的固定属性 当前
  • c语言停车场

    include