使用JAVA模拟生成每天的汽车数据

文章目录

  • 前言
  • 一、项目要求
  • 二、制作过程
    • 1.创建车辆的业务类
    • 2.车辆的基本信息
    • 3.生成车辆的数据
    • 4.生成额定车辆数据
  • 总结


前言

本系统开发选择Java语言,Java语言是一个完全面向对象的语言,Java为开发者提供了丰富的类库,大大减少了使用windows编程的难度,减少开发人员在设计算法上的难度,作为Java开发 Visual Studio更是一个必不可少的角色,它友好的界面,以及强大的功能,给程序开发人员带来了很多方便,加上环境简单,转移方便,无疑使此系统最佳的选择。所以后台设计选择使用MySQL数据库主要用来的建立和维护信息。对于前台开发要求应具备功能完善、易于操作等优点,后台数据库的要求则是能够建立和维护数据信息的统一性和完整性

一、项目要求

本次项目的要求是模拟新能源汽车的数据,而这篇博客主要介绍的是在每天生成的数据中如何指定所需要的数量,以及车辆的信息。

二、制作过程


1、创建一个类,这个类接收一个车架号,用于生成一辆车一天的数据。

2、随机获取一个时间节点(use_car_time),作为本次用车(充电)的时间,就是相当于规定本次用车时长。

3、再随机获取一个时间节点,作为车辆启动的时间节点,从这个时间点开始每2秒生成一辆车的数据

4、随机初始化行程里程,行程里程随着车辆的运行而增加

5、随机初始化电量,电量随着车辆的变化而变化

6、确定当天的日期,让其在今天和前几天中选择,但被选中的几率极低,从而达到混入前几天的数据

7、初始化低电预警,当电量低于30%则提示:电量低于30%

1.创建车辆的业务类

代码如下:

package Object;public class Car {//    ---------------------------------------------------------------------------------------------public static String Vin; //车架号public static String Mileage;  //行驶总里程public static Integer Velocity;  //车速public static String Car_state; //车辆状态public static String Charge_state; //充电状态public static String SOC;  //剩余电量public static String Warn;  //SOC低预警public static String Date;  //数据生成日期//    ---------------------------------------------------------------------------------------------public static String getVin() {return Vin;}public static void setVin(String vin) {Vin = vin;}public static String getMileage() {return Mileage;}public static void setMileage(String mileage) {Mileage = mileage;}public static Integer getVelocity() {return Velocity;}public static void setVelocity(Integer velocity) {Velocity = velocity;}public static String getCar_state() {return Car_state;}public static void setCar_state(String car_state) {Car_state = car_state;}public static String getCharge_state() {return Charge_state;}public static void setCharge_state(String charge_state) {Charge_state = charge_state;}public static String getSOC() {return SOC;}public static void setSOC(String SOC) {Car.SOC = SOC;}public static String getWarn() {return Warn;}public static void setWarn(String warn) {Warn = warn;}public static String getDate() {return Date;}public static void setDate(String date) {Date = date;}//    ---------------------------------------------------------------------------------------------public Car() {}
//    ---------------------------------------------------------------------------------------------@Overridepublic String toString() {return "{"+"\"车架号\":"+"\""+getVin()+"\""+",\"行驶总里程\":"+getMileage()+",\"速度\":"+getVelocity()+",\"汽车状态\":" +"\""+ getCar_state()+"\""+",\"充电状态\":"+"\""+ getCharge_state()+"\""+",\"剩余电量\":" +"\""+getSOC()+"\""+",\"电量预警\":"+"\""+getWarn()+"\""+",\"生成时间\":"+"\"" + getDate()+"\""+"}" ;}
}

2.车辆的基本信息

代码如下:

public static String randomvin(){  //随机车架号char[] numArray = {'0','1','2','3','4','5','6','7','8','9'};int vinlen = 7;StringBuilder vin =  new StringBuilder();vin.append("vin");for (int i = 0; i

3.生成车辆的数据

status()基本参数:
client.status函数的基本参数如下:

hdfs_path: 需要获取信息的文件或目录路径。必选参数。
strict: 是否开启严格模式。默认为True。如果开启严格模式,当路径不存在时会抛出HdfsError异常。如果关闭严格模式,路径不存在时会返回一个空的dict对象。
在实际使用中,我们一般只需要指定hdfs_path参数,获取文件或目录的详细信息即可。需要注意的是,client.status函数返回的是一个dict对象,其中包含了文件或目录的详细信息。可以通过取字典中的某个键的方式,获取对应的值。

public static Car getcar(){Car car = new Car();//生成车架号数据car.setVin(randomvin());//生成行驶总里程数据car.setMileage(randommileage());//生成汽车状态和速度的数据String status = randomcar_state();if (status.equals("停泊中")){car.setVelocity(0);car.setCar_state(status);car.setCharge_state(randomcharge_state());}else {car.setVelocity(randomV());car.setCar_state(status);car.setCharge_state("放电中");}//生成剩余电量以及电量预警的数据int SOC = randomSOC();if (SOC<30){car.setSOC(SOC+"%");car.setWarn("电量不足");}else {car.setSOC(SOC+"%");car.setWarn("电量充足");}//生成时间数据Date date = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");car.setDate(formatter.format(date));return car;}

4.生成额定车辆数据

timer.scheduleAtFixedRate(new TimerTask() {@Overridepublic void run() {System.out.println("开始生成数据...");try {int l = 1;File file = new File("D:\\Hadoop_homework\\20210322061_IDEA\\jsons\\can_data\\"+timestr);file.mkdirs();file = new File("D:\\Hadoop_homework\\20210322061_IDEA\\jsons\\can_data\\"+timestr+"\\"+timestr+".json."+l);FileWriter writer;writer = new FileWriter(file,true);
//      ---------------------------------------------------------------------------------------------writer.flush();//写入当天数据for (int i =0;i<=1200000;i++){      //指定生成当天数据的数量Car car1 = getcar();if (file.length()>100*1024*1024){++l;file = new File("D:\\Hadoop_homework\\20210322061_IDEA\\jsons\\can_data\\"+timestr+"\\"+timestr+".json."+l);writer = new FileWriter(file,true);}try {Thread.sleep(0);writer.write(car1 + "\n");writer.flush();} catch (IOException e){e.printStackTrace();} catch (InterruptedException e1) {throw new RuntimeException(e1);}}

通过使用for循环语句达到自己想要生成的数据大小,这里设定的是生成100M的数据大小大约有一百万条数据,而我们如果需要极少量的数据量只需更改其配置项即可完成。

生成的数据如图所示:


总结

车辆管理系统是一个用于管理车辆信息的软件系统,它可以帮助企业管理车辆,提高工作效率和减少管理成本。该系统可以通过网络访问,帮助企业实现全方位的车辆信息管理,包括车辆档案、车辆保养、车辆维修、车辆保险等。这些信息可以有效地被整合和管理,以提高车队管理的质量和效率。车辆管理系统的使用不仅可以提高车队管理的效率,还可以帮助企业更好地掌握车队的运营情况。通过系统中的实时数据,企业可以了解车队的位置、运输情况和工作效率。这些信息可以帮助企业更好地制定运营策略,提高工作效率和减少成本。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部