为交管局设计一个违规管理系统;要求记录违规车辆,驾驶员,处理交警信息; 分析: 1、对象:车辆、车辆型号、驾驶证、驾驶证分、车主姓名、罚款、驾驶证状态、扣分、违规 2、抽类: TrafficControl交通管理类: 闯红灯扣分、罚款;乱停车扣分、罚款;超速扣分、罚款;未系安全带扣分、罚款;(后期可增加) CarInformation车辆信息类: 属性:车辆型号、驾驶证、驾驶证分、车主姓名、罚款、驾驶证状态(车牌号待加入); 方法:查询车辆信息状态,判断驾驶证状态 interface接口TrafficRegulations违章:闯红灯,超速,乱停,未系安全带(。。。。可继续增加) package com.lovo.violationManagementSystem.bean;/** * 定义一个标准:违章 * @author 侯熙 * @version 1.0 * @since jdk1.8.0_25 */public interface TrafficRegulations { /** * 闯红灯 */ public void runRedLights(); /** * 超速 * @param speed 当前速度 * @param limitedSpeed 限定速度 */ public void overSpeed(double speed,double limitedSpeed); /** * 违章停车 */ public void illegalParking(); /** * 未系安全带 */ public void fastenSeatBelt();}package com.lovo.violationManagementSystem.bean;/** * 交通管理 * @author 侯熙 * @version 1.0 * @since jdk1.8.0_25 */public class TrafficControl extends CarInformation implements TrafficRegulations{ /** * 闯红灯扣分 */ static final int RUN_RED_LIGHTS_SCORE = -6; /** * 闯红灯罚款 */ static final int RUN_RED_LIGHTS_MONEY = -200; /** * 违规停车罚款 */ static final int ILLEGAL_PARKING_MONEY = -200; /** * 未系安全带扣分 */ static final int FASTE_NSEAT_BELT_SCORE = -2; /** * 未系安全带罚款 */ static final int FASTE_NSEAT_BELT_MONEY = -200; private int overSpeedScore;//超速扣分 private int overSpeedMoney;//超速罚款 /** * 构造方法 * @param carName 车辆型号 * @param drivingLicence 驾驶证信息 * @param driver 驾驶员姓名 */ public TrafficControl(String carName, int drivingLicence, String driver) { super(carName, drivingLicence, driver); // TODO Auto-generated constructor stub } @Override public void runRedLights() { // TODO Auto-generated method stub this.score += RUN_RED_LIGHTS_SCORE; this.money += RUN_RED_LIGHTS_MONEY; } @Override public void overSpeed(double speed,double limitedSpeed) { // TODO Auto-generated method stub if (speed > limitedSpeed*(1+0.5)) { this.overSpeedScore = -12; this.overSpeedMoney = -2000; }else if (speed > limitedSpeed*(1+0.2)) { this.overSpeedScore = -6; this.overSpeedMoney = -200; }else if (speed > limitedSpeed) { this.overSpeedScore = -3; this.overSpeedMoney = -200; }else{ this.overSpeedScore = 0; this.overSpeedMoney = 0; } this.score += this.overSpeedScore; this.money += this.overSpeedMoney; } @Override public void illegalParking() { // TODO Auto-generated method stub this.money += ILLEGAL_PARKING_MONEY; } @Override public void fastenSeatBelt() { // TODO Auto-generated method stub this.score += FASTE_NSEAT_BELT_SCORE; this.money += FASTE_NSEAT_BELT_MONEY; }}package com.lovo.violationManagementSystem.bean; /** * 车辆信息 * @author 侯熙 * @version 1.0 * @since jdk1.8.0_25 */ public class CarInformation { private String carName; private int drivingLicence; private String driver; protected int score = 12; protected int money = 0; protected boolean status; /** * 构造方法 * @param carName 车辆型号 * @param drivingLicence 驾驶证信息 * @param driver 驾驶员姓名 */ CarInformation(String carName,int drivingLicence,String driver){ this.carName = carName; this.drivingLicence = drivingLicence; this.driver = driver; } /** * 重写to.String 输出车辆信息 */ public String toString(){ if(setStatus()){ return "车辆型号:"+this.carName+"\n驾驶证:" +this.drivingLicence+"\n驾驶员:"+this.driver+"\n驾照分:"+this.score+"\n罚金:"+this.money+"\n驾照作废,请重新学习"; } return "车辆型号:"+this.carName+"\n驾驶证:" +this.drivingLicence+"\n驾驶员:"+this.driver+"\n驾照分:"+this.score+"\n罚金:"+this.money; } /** * 查询驾驶证是否有效,无效为true * @return */ public boolean getStatus() { return status; } /** * 判断驾驶证是否有效 * @return 有效为false,无效为true */ public boolean setStatus() { if(score <= 0){ this.status = true; } return this.status; } } package com.lovo.violationManagementSystem.test;import com.lovo.violationManagementSystem.bean.TrafficControl;public class Test { public static void main(String[] args) { TrafficControl[] tra =new TrafficControl[4]; tra[0]= new TrafficControl("A8", 46546546, "li4"); tra[0].runRedLights(); tra[0].fastenSeatBelt(); System.out.println(tra[0]); tra[0].overSpeed(120, 80); System.out.println(tra[0]); }}