控制台实现汽车租赁系统
汽车租赁系统需求:(基于控制台实现,适合基础小白练习使用)
1、包含汽车租赁和汽车管理两个模块
2、汽车租赁需要包含汽车租赁天数以及汽车租金结算功能
3、汽车管理需要包含租赁汽车的添加、删除、修改、查询功能
代码如下:
package Demo20230907;import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;/*** <p>汽车租赁系统</p>** @author 波波老师(weixin : javabobo0513)*/
public class Test01 {public static void main(String[] args) {//map存储店铺所有车Map<Integer, Car> map = new HashMap<>();map.put(1, new Car("跑车", "玛莎拉蒂", "鄂A11111", 1500.0D));map.put(2, new Car("客车", "金龙", "鄂A22222", 1100.0D));map.put(3, new Car("卡车", "皮卡", "鄂A333333", 800.0D));map.put(4, new Car("跑车", "兰博基尼", "鄂A444444", 3200.0D));Integer menuId = 0;do{try {System.out.println("********************欢迎光临汽车租赁公司********************");System.out.println("1、汽车租赁 \t 2、汽车管理 \t 3、退出");System.out.println("*********************************************");System.out.println("请选择(1-3):");Scanner sc = new Scanner(System.in);menuId = sc.nextInt();switch (menuId){case 1://先打印所有车的数据printMap(map);System.out.println("请选择要租赁的汽车:");int carNo = sc.nextInt();//汽车编号 2System.out.println("请输入需要租赁的天数:");int days = sc.nextInt();//租赁天数//根据车的序号取出车的信息打印出来给用户确认Car car = map.get(carNo);System.out.println("您要租赁的车为:" + car.getChexing() + "," + car.getChepai());//计算总租金Double totalZujin = car.getZujin() * days;System.out.println("您要租赁的车为:" + car.getChexing() + "," + car.getChepai());System.out.println("总租金为:" + totalZujin);System.out.println("是否租用?请选择:1:租用;2:不租用");int select = sc.nextInt();//是否租用值if(select == 1){//租用car.setFlag(1);//改状态System.out.println("恭喜您,租赁了" + car.getPingpai() + ",车牌为:" + car.getChepai() + ",总租金为" + totalZujin);}break;case 2:int selectValue = 0;do{System.out.println("********************************欢迎进入汽车管理后台********************************");System.out.println("1、新增汽车 \t 2、删除汽车 \t 3、修改汽车 \t 4、查询所有汽车 \t 5、退出");System.out.println("*********************************************");System.out.println("请选择(1-5):");selectValue = sc.nextInt();switch (selectValue){case 1:System.out.println("请输入你需要添加的汽车类型:");String chexing = sc.next();System.out.println("请输入你需要添加的汽车品牌:");String pingpai = sc.next();System.out.println("请输入你需要添加的汽车车牌:");String chepai = sc.next();System.out.println("请输入你需要添加的汽车日租金:");Double zujin = sc.nextDouble();Car c1 = new Car(chexing, pingpai, chepai, zujin);map.put(getMapMaxKey(map) + 1, c1);System.out.println("新增成功");break;case 2://先打印所有汽车数据printMap(map);System.out.println("请选择需要删除的汽车编号:");int deleteCarNo = sc.nextInt();Car deleteCar = map.get(deleteCarNo);if(deleteCar.getFlag() == 1){//已租用System.out.println("出租中,不能删除");}else{map.remove(deleteCarNo);System.out.println("删除成功");}break;case 3:printMap(map);System.out.println("请选择需要修改的汽车编号:");int updateCarNo = sc.nextInt();Car updateCar = map.get(updateCarNo);System.out.println("请输入日租金:");double updateZujin = sc.nextDouble();updateCar.setZujin(updateZujin);System.out.println("修改成功");break;case 4://打印所有车辆信息printMap(map);break;case 5:break;}}while(selectValue != 5);break;case 3:System.out.println("退出系统,感谢老铁,欢迎下次使用!");break;case 4:break;}} catch (Exception e) {System.out.println("输入值不合法,请重新输入");menuId = 4;}}while (menuId != 3);}//作用:打印map数据public static void printMap(Map<Integer, Car> map){Set<Map.Entry<Integer, Car>> set = map.entrySet();System.out.println("汽车列表:");for(Map.Entry<Integer, Car> obj : set){System.out.println(obj.getKey() + ":" + obj.getValue());}}//作用:获取map中key的最大值public static Integer getMapMaxKey(Map<Integer, Car> map){Set<Map.Entry<Integer, Car>> set = map.entrySet();Integer max = 0;for(Map.Entry<Integer, Car> obj : set){int maxKey = obj.getKey();if(maxKey > max){max = maxKey;}}return max;}
}
以上代码仅供参考,如有不足,欢迎留言指正,大家还可以再增加一些其他功能,比如:在做汽车添加、删除等操作时,需要输入账号密码做校验,验证通过才能进行操作,否则就不能操作
相关文章:
控制台实现汽车租赁系统
汽车租赁系统需求:(基于控制台实现,适合基础小白练习使用) 1、包含汽车租赁和汽车管理两个模块 2、汽车租赁需要包含汽车租赁天数以及汽车租金结算功能 3、汽车管理需要包含租赁汽车的添加、删除、修改、查询功能 代码如下&#…...
机器学习和数据挖掘03-模型性能评估指标
Accuracy(准确率) 概念:模型正确预测的样本数量与总样本数量的比例。 公式:Accuracy (TP TN) / (TP TN FP FN) TP (True Positives):正确预测为正例的样本数。即模型正确地将正例判定为正例。 TN (True Negati…...
PageNumberPagination、LimitOffsetPagination、CursorPagination
数据 from django.db import modelsclass User(models.Model):username models.CharField(max_length64, verbose_name用户名)password models.CharField(max_length64, verbose_name密码)# 用户类型user_type models.IntegerField(choices((1, 菜鸟用户), (2, 普通用户), …...

怎么把视频转换成mp4格式
怎么把视频转换成mp4格式?如今,随着科技的不断发展,我们在工作中接触到的多媒体视频格式也越来越多。其中,MP4作为一种广泛兼容的视频格式,在许多软件中都能轻松播放,并且成为了剪辑与裁剪视频时大家常用的…...
正则判断字符是否包含手机号
字符前后不能是数字,满足手机号标准 String msg "19009098989";String mobliePattern "((?<!\\d))(mobile|手机号|)(|\\[|\\\":\\\"|:|:||:|)(1)([3-9]{1}\\d{1})(\\d{4})(\\d{4})(\\]|\\\"||)((?!\\d))";String mobileR…...

OSCP系列靶场-Esay-Sumo
OSCP系列靶场-Esay-Sumo 总结 getwebshell : nikto扫描 → 发现shellshock漏洞 → 漏洞利用 → getwebshell 提 权 思 路 : 内网信息收集 → 内核版本较老 →脏牛提权 准备工作 启动VPN 获取攻击机IP → 192.168.45.194 启动靶机 获取目标机器IP → 192.168.190.87 信息收…...

本地电脑搭建web服务器、个人博客网站并发布公网访问 【无公网IP】(1)
文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会,网络已经成为我们生活离不开的必需品,而纷繁…...
Python基础List列表定义与函数
如何定义一个非空的列表? name_list ["liming","xiaohong",15,{"hobby":"basketball"}] 列表的特点: 1.列表是有序的 2.可以存放多个元素 3.每个元素可以是任何数据类型 定义一个空列表 name_list [] 访…...
typeScript--[数据定义]
一.安装ts 1.命令行运行如下命令,全局安装 TypeScript: npm install -g typescript2.安装完成后,在控制台运行如下命令,检查安装是否成功 tsc -V 二.创建ts文件 1.创建一个day01.ts文件,随便在里面码一点代码&…...
【常见相机模型】
常见相机模型 enum class Type {kPinhole 0,kUnifiedProjection 1,kOmni 2, //optimize_on_spherekEqFisheye 3};其余类型optimize_on_plane这4种类型的相机模型具有以下差异: kPinhole (针孔相机模型):这是最基本和常见的相机模型。它假设光线通过…...

大数据-玩转数据-Flink状态编程(上)
一、Flink状态编程 有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态,然后在新流入数据的基础上不断更新状态。 SparkStreaming在状态管理这块做的不好, 很多时候需要借助于外部存储(例如Redis)来手动管理状态, 增加了编…...

主动获取用户的ColaKey接口
主动获取用户的ColaKey接口 一、主动获取用户的ColaKey接口二、使用步骤1、接口***重要提示:建议使用https协议,当https协议无法使用时再尝试使用http协议***2、请求参数 三、 请求案例和demo1、请求参数例子(POST请求,参数json格式)2、响应返…...

C#写一个UDP程序判断延迟并运行在Centos上
服务端 using System.Net.Sockets; using System.Net;int serverPort 50001; Socket server; EndPoint client new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号CreateSocket();void CreateSocket() {server new Socket(AddressFamily.InterNetwork, SocketT…...

Kafka核心原理第二弹——更新中
架构原理 一、高吞吐机制:Batch打包、缓冲区、acks 1. Kafka Producer怎么把消息发送给Broker集群的? 需要指定把消息发送到哪个topic去 首先需要选择一个topic的分区,默认是轮询来负载均衡,但是如果指定了一个分区key&#x…...

巨人互动|游戏出海H5游戏出海规模如何?
H5游戏出海是指将H5游戏推广和运营扩展到国外市场的行为,它的规模受到多个因素的影响。本文小编讲一些关于H5游戏出海规模的详细介绍。 1、市场规模 H5游戏出海的规模首先取决于目标市场的规模。不同国家和地区的游戏市场规模差异很大,有些市场庞大而成…...

【爬虫】实验项目三:验证码处理与识别
目录 一、实验目的 二、实验预习提示 三、实验内容 实验要求 基本要求: 改进要求A: 改进要求B: 四、实验过程 基本要求 五、源码如下 六、资料 一、实验目的 部分网站可能会使用验证机制来阻止用户无效登录或者是验证用户不是用程…...

广东成人高考报名将于9月14日开始!
截图来自广东省教育考试院官网* 今年的广东成人高考正式报名时间终于确定了! 报名时间:2023年 9 月14—20日 准考证打印时间:考前一周左右 考试时间:2023年10月21—22日 录取时间:2023年12 月中上旬 报名条件: …...
pytorch中文文档学习笔记
先贴上链接 torch - PyTorch中文文档 首先我们需要安装拥有pytorch的环境 conda指令 虚拟环境的一些指令 查看所有虚拟环境 conda info -e 创建新的虚拟环境 conda create -n env_name python3.6 删除已有环境 conda env remove -n env_name 激活某个虚拟环境 activate env…...
element-ui全局导入与按需引入
全局引入 npm i element-ui -S 安装好depencencies里面可以看到安装的element-ui版本 然后 在 main.js 中写入以下内容: import Vue from vue; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import App from ./App.vue;Vue.…...
go 地址 生成唯一索引v2 --chatGPT
问:golang 函数 getIndex(n,addr,Hlen,Tlen) 返回index。参数n为index的上限,addr为包含大小写字母数字的字符串,Hlen为截取addr头部的长度,Tlen为截取addr尾部的长度 gpt: 你可以编写一个函数来计算根据给定的参数 n、addr、Hlen 和 Tlen …...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...