汽车租赁项目业务流程总结

-一、需求分析

-二、

-一、需求分析与数据表设计

需求图:

发现类:

01.moto类(汽车父类):

01.1:bus类(客车类)

01.2:car类(轿车类)

01.3:truck类(卡车类)

02.mototype类(汽车类型类)

03.用户类:软件系统的使用者,登录该系统 管理的 人,比如:管理员、业务经理等。

04.客户类:租车的人。

05.公司类:用于处理租车换车业务流程的人。

-二、设计概要设计

数据库设计:

-三、详细设计

  1. 实现各车的信息录入

一个问题:卡车跟大巴和轿车录入是不一样的,所以在业务层需要判断是什么车型,但这样代码比较臃肿,不利于扩展,不是面向对象编程。

解决:采用面向对象的特点(继承和多态),在moto类建立录入车信息的方法,这样轿车客车大巴继承moto类就可以有自己的录入车信息的方法。

代码演示:

moto类:

public abstract class Moto {
	private String mno;              //车牌号
	private int seatCount;       
	private MotoType mtype;		  	

	//这里省略get\set方法

	public Moto(MotoType mtype,String mno,int seatCount){
		this.mno = mno;
		this.seatCount = seatCount;
		this.mtype = mtype;
	}

	/**
	 * 把当前对象存储到数据库中
	 * @throws Exception
	 */
	public void saveDB() throws Exception{
		CompanyDao dao = new CompanyDao();
		try {
			dao.addMoto(this);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			dao.closeConnection();
		}
	}
}

car类:可以直接使用moto类中的方法

public class Car extends Moto{
	public Car(MotoType mtype,String mno) {
		super(mtype,mno, 5);
	}
}

truck类:重写了moto类的saveDB()方法

public class Truck extends Moto{
	private int dun;
	private double priceEachDun;            //每吨每天的单价	

	public int getDun() {
		return dun;
	}
	public double getPriceEachDun() {
		return priceEachDun;
	}
	public void setPriceEachDun(double priceEachDun) {
		this.priceEachDun = priceEachDun;
	}
	public Truck(MotoType mtype, String mno, int seatCount,int dun) {
		super(mtype, mno, seatCount);
		this.dun = dun;
	}
	public double getDayMoney() {
		return priceEachDun*dun;
	}

	/**
	 * 把当前对象存储到数据库中  ----------重写
	 * @throws Exception
	 */
	@Override
	public void saveDB() throws Exception{
		CompanyDao dao = new CompanyDao();
		try {
			dao.beginTransaction();
			dao.addMoto(this);
			TruckEntity truckEntity = new TruckEntity();
			truckEntity.setMno(this.getMno());
			truckEntity.setDun(dun);
			truckEntity.setPriceEachDun(priceEachDun);
			dao.addTruck(truckEntity);
			dao.commit();
		} catch (Exception e) {
			e.printStackTrace();
			dao.rollback();
			throw e;
		}finally{
			dao.closeConnection();
		}
	}
}

在业务逻辑层方法就很简单了:

private List<Moto> motos;
/**
* 添加汽车
* @param moto
* @throws Exception
*/
public void addMoto(Moto moto) throws Exception{
	if(moto != null ){
		moto.saveDB();                      //OO多态
		motos.add(moto);
	}else{
		throw new Exception("入参moto错误");
	}
}

2.实现租车业务

图解:

注意:由于整个租车过程包含多个表的修改,比如加入两个订单在差不多时间操作同一辆车,肯定会有一个订单有问题,这是就需要保证事务的一致性和完整性。

在业务逻辑层的代码就可以:

public class RentCompany {

	private String name;
	private List<Moto> motos;               //待租赁的汽车

	public String getName() {
		return name;
	}	

	public List<Moto> getMotos() {
		return motos;
	}

	public RentCompany(String name){

		this.name = name;
		motos = new ArrayList<Moto>(50);

	}	

	/**
	 * 汽车租赁
	 * @param motos
	 * @param client
	 * @param rentinfo
	 * @return            租赁成功,返回订单号
	 * @throws Exception
	 */
	public String rent(List<Moto> motos,TClient client,TRentInfo rentinfo) throws Exception{
		String rentno = null;

		if(motos != null && client != null && rentinfo!= null){
			CompanyDao dao = new CompanyDao();
			try {
				dao.beginTransaction();                                 //开启事务
				//添加客户数据
				dao.addTClient(client);
				//添加汽车租赁信息
				rentno = dao.addRentInfo(rentinfo);
				//添加租赁明细
				for(Moto moto : motos){
					TRentDetail rentDetail = getTRentDetail(rentno,moto);
	                dao.addRentDetail(rentDetail);
				}
				dao.commit();                                         //提交事务
			} catch (Exception e) {
				dao.rollback();                                       //回滚事务
				rentno = null;
				throw e;
			}finally{
				dao.closeConnection();
			}
		}else{
			throw new Exception("入参错误,请检查");
		}		

		return rentno;
	}

	private TRentDetail getTRentDetail(String rentno,Moto moto){
		TRentDetail detail = new TRentDetail();

		detail.setMno(moto.getMno());
		detail.setRentno(rentno);
		detail.setDaymoney(moto.getDayMoney());

		return detail;
	}
}

3.实现还车业务

时间: 2024-10-09 18:44:49

汽车租赁项目业务流程总结的相关文章

Java实现“汽车租赁项目”

1.创建租车cab父类(抽象) package study; // 创建抽象租车cab父类 public abstract class cab { // 创建cab具有的公共属性 private String brand; // 车辆的品牌 private String licencePlateNumber; // 车辆的车牌号码 private double dayRent; // 车辆的日租金 // cab的空构造方法 public cab() { } /**cab的有参构造方法  * @p

基于Android平台的汽车租赁平台项目的数据库设计心得

我们团队的项目是基于Android平台的汽车租赁平台,其分为手机客户端与web后台管理系统,用以满足租车公司的业务需求,故数据库设计对于本项目显得尤为重要,我们团队数据库设计最开始用的是最原始的方式:Word手动输入,但随后随着数据库课程以及实验的学习,我们最后使用的PowerDesigner设计的数据库并生成了SQL文件,导入数据库完成的数据库最终设计与搭建,我们团队于第8周完成了数据库的搭建. 数据库设计中,数据库要严格与项目需求相联系,同时保证数据库数据完整.正确.安全以及数据处理的高效与

团队汽车租赁系统

汽车租赁管理系统: 进一步分析: 我们小组做的是新的管理系统,对软件暑假的那个项目有了基础的了解以后做了一个新的项目,在原先的基础上,清楚的了解了项目的各个实行方面,一共分成七块部分:首页,关于我们,汽车租赁,收费标准,订单查询,租赁咨询,联系我们.然后更加完善了每一个部分的内容,比如在汽车租赁方面我们把每一辆汽车的价格型号都清楚的展现了出来. 研究项目需求: 集中数据管理.分布式应用,实现信息的全面共享,为决策者提供最新的人力资源数据. 完全基于浏览器的操作模式,操作方便,具有良好的系统扩充能

汽车租赁管理开发流程的博客

在这个暑假假期中,我们团队做了一个汽车的租赁管理的网站,我们团队采用分工的开发的方式,其中史秀源负责这个系统的统筹管理,罗竣元负责汽车管理的模块,谭枝敬负责前台职工管理,卢伟斌负责前台管理,闫龙飞负责后台的管理.我们的分工的系统是放在码 云上(https://git.oschina.net/nn839155963)和用smartgit进行项目的管理的,现在我们的car 项目截图如下,每个成员将自己修改的内容pull到码云上,其他成员实时更新网站上的东西,整个团队就可以知道整个项目的开发进度,从而

汽车租赁系统总结

汽车租赁系统有一下功能 功能一(租车): 描述:显示系统中所有可租的汽车,选中要出租的汽车,输出租用人已租出汽车 功能二(还车): 描述:在还车列表中选中汽车信息,输入出租天数,计算租金 功能三(新车入库): 描述:需要录入汽车的车牌号,车型,颜色,使用时间和每日租金,如果是卡车还是要录入卡车的载重量 本租车系统要有三个类,有一个父类为(Vehicle),子类分别是(Truck)和(Car) 父类关键代码如下: Truck子类代码如下: Car子类代码如下: 要初始化租车信息: 然后将数据绑定到

继承与多态之汽车租赁系统

1.租车 显示系统中所有可出租的汽车,选中要出租的汽车,输入租用人以出租汽车,如图所示 2.还车 在还车列表中选择汽车信息,输入出租天数,计算租金,如图所示 3.新车入库 需要录入汽车的车牌号,车型,颜色,使用时间,和每日租金,如果是卡车还要录入卡车的载重,如图所示 具体实现过程: 1.搭建系统 按照类图创建类,体会Vehicle,Trech和Car三个类之间的关系 Car类: namespace _09汽车租赁系统{public class Car:Vehicle{public Car(str

继承与多态实战,之汽车租赁系统

汽车租赁系统 1.任务描述 ①租车:显示系统中所有可出租的汽车,选中要出租的汽车,输入租用人已出租汽车. ②还车:在还车列表中选择汽车信息,输入出租天数,计算租金 ③新车入库:需要录入汽车的车型,颜色,使用时间和每日租金,如果是卡车还要录入卡车的载重. 2.搭建系统 ① 创建类:交通工具类(抽象类),汽车类,卡车类.卡车汽车继承交通工具类,载重为卡车的特有属性 ②创建存储租车信息还车信息的集合,并将数据显示到对应控件中(由于卡车存在特有属性)必须用List<Vehicle>来存储, 如果使用d

你知道汽车租赁系统的关键点吗?

汽车租赁系统 主界面如下: 关键点一:怎样理清各个类之间的关系? 一共需要4个类:Car 类,Truck类,Vehicle类,VehicleUtil类 Car类:小汽车类  主要包括小汽车价格的计算方法 Truck类:货车类   主要包括货车费用的计算方法 Vehicle类:车辆类  描述车辆的一些基本信息 VehicleUtil类:工具类  创建汽车对象 下面附上一张类图: 关键点二:租车事件 首先要有两道验证:即 “输入出租人姓名验证” 和 “选择车辆验证”,代码如下: 1 if (Stri

第四节 综合实例:使用多态完善汽车租赁系统计价功能

综合实例:使用多态完善汽车租赁系统计价功能 主讲教师:王少华      QQ群号:483773664 学习目标 在案例中应用多态; 使用父类类型作为方法的形参 一.计算一次租赁多辆汽车的总租金 (一) 需求说明 在前一章(继承)汽车租赁系统的基础上,即已经实现了汽车租赁系统的简单计价功能,客户可以租赁一辆某种型号的汽车若干天.现在要增加需求: 客户可以一次租赁多辆不同品牌的不同型号的汽车若干天,要求计算出总租赁价. 假设有一客户要租赁: 2辆宝马 1辆别克商务舱 1辆金龙(34)座 租5天共多少