JavaWeb網上汽車租賃管理系統 記一次軟件開發心路歷程

說明

最近閒來無事,完成了一次軟件開發,分享給大家,跟大家一起研究軟件開發的技巧

開發技術

jsp+servlet+jdbc經典MVC設計模式
MySQL數據庫

系統需求分析與設計

汽車租賃系統實現了汽車租賃客戶的租車需求,通過有效的管理達到了租賃會員租車的便捷性。本系統通過在對調研實際企業中車輛租賃管理工作需求的基礎上以及和同行業網站的對比,分析設計並且劃分出了4種權限用戶,分別是:遊客、租賃會員、營業門店管理人員、企業管理人員。本系統的基本租賃需求信息管理如下:
需求分析

數據庫設計

數據庫設計

功能實現

用戶登錄界面

String identity = request.getParameter("identity");//登錄身份
		String userNo = request.getParameter("username");//用戶名
		String password = request.getParameter("password");//密碼
		String codeNum = request.getParameter("codeNum");//驗證碼
		HttpSession session = request.getSession();
		String rand = (String) session.getAttribute("rand");

		if (rand.equals(codeNum)) {// 判斷驗證碼
			if (identity.equals("1")) {// 登錄用戶爲租賃會員
				IMemberDAO memberDAO = new MemberDAO();
				Member member = memberDAO.memberLogin(userNo, password);
				if (member == null) {
					CommonUtil.showAlertMessage(response, "數據庫連接失敗。");
				} else if (member.getMemberId() > 0) {
					session.setAttribute("member", member);
					response
							.sendRedirect("/CarRentalOnline/member/welcome.jsp");
				} else {
					CommonUtil.showAlertMessage(response, "賬號或密碼錯誤!");
				}
			} else if (identity.equals("2")) {// 登錄用戶爲營業門店
				IBusinessStoreDAO storeDAO = new BusinessStoreDAO();
				BusinessStore store = storeDAO.businessStoreLogin(userNo,
						password);
				if (store == null) {
					CommonUtil.showAlertMessage(response, "數據庫連接失敗。");
				} else if (store.getStoreId() > 0) {
					if (store.getState() == 0) {
						CommonUtil.showAlertMessage(response,
								"該營業門店賬號已被關閉,請聯繫管理員!");
						return;
					}
					session.setAttribute("store", store);
					request.getRequestDispatcher("/businessStore/welcome.jsp")
							.forward(request, response);
				} else {
					CommonUtil.showAlertMessage(response, "賬號或密碼錯誤!");
				}
			} else if (identity.equals("3")) {// 登錄用戶爲企業系統管理員
				ISysAdminDAO adminDAO = new SysAdminDAO();
				SysAdmin admin = adminDAO.sysAdminLogin(userNo, password);
				if (admin == null) {
					CommonUtil.showAlertMessage(response, "數據庫連接失敗。");
				} else if (admin.getSId() > 0) {
					session.setAttribute("admin", admin);
					request.getRequestDispatcher("/sysAdmin/welcome.jsp")
							.forward(request, response);
				} else {
					CommonUtil.showAlertMessage(response, "賬號或密碼錯誤!");
				}
			}
		} else {
			CommonUtil.showAlertMessage(response, "驗證碼輸入錯誤!");
		}

首頁
車輛租賃界面
可租賃車輛查詢結果界面

String fromStoreName = request.getParameter("storeName");// 取車門店名稱
		if (fromStoreName == null) {
			CommonUtil.showAlertMessage(response, "您還未選擇取車門店。");
			return;
		}
		String beginDate = request.getParameter("beginDate");// 取車起始日期
		String beginHour = request.getParameter("beginHour");// 取車其實時間
		String tostoreName = request.getParameter("tostoreName");// 還車門店名稱

		if (tostoreName == null) {
			CommonUtil.showAlertMessage(response, "您還未選擇換車門店。");
			return;
		}
		String endDate = request.getParameter("endDate");// 還車結束日期
		String endHour = request.getParameter("endHour");// 還車結束時間
		String beginTime = beginDate + " " + beginHour;
		String endTime = endDate + " " + endHour;

		// 判斷取車時間是否小於還車時間
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

		Date d1 = null;
		try {
			d1 = sdf.parse(beginTime);
			Date d2 = sdf.parse(endTime);
			if (d2.getTime() <= d1.getTime()) {
				CommonUtil.showAlertMessage(response, "還車時間必須大於取車時間,請重新選擇!");
				return;
			}
		} catch (ParseException e) {

			CommonUtil.showAlertMessage(response, "時間日期格式錯誤,請重新選擇時間日期!");
			return;
		}

		// 不能租賃當天的車輛,只能租賃明天之後的車輛(需要提前一天租賃)
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
		if (sdf2.format(d1).equals(sdf2.format(new Date()))) {
			CommonUtil.showAlertMessage(response, "需提前一天租賃,不能租賃當日的車輛。");
			return;
		}

		ICarDAO carDAO = new CarDAO();
		int rsCount = Integer.parseInt(carDAO.getRSCountByStoreNameAndTime(
				fromStoreName, beginTime, endTime)[0].toString());

		PageUtil util = new PageUtil(request);
		util.setPageSize(5);
		util.setRsCount(rsCount);
		util.getPageCount();
		int currentPage = util.getCurrentPage();

		String pageTool = util.createPageTool(PageUtil.BbsImage);
		request.setAttribute("pageTool", pageTool);

		// 租賃會員查詢某門店下指定日期時間段下可以租賃的車輛
		ArrayList<String[]> carList = carDAO.SearchByStoreNameAndTime(
				fromStoreName, beginTime, endTime, util.getPageSize(),
				currentPage);
		request.setAttribute("carList", carList);
		
		//是否有勾選送車上門和上門取車
		String[] isSongCheShangMen = request.getParameterValues("isSongCheShangMen");
		String[] isShangMenQuChe = request.getParameterValues("isShangMenQuChe");

		// 存儲訂單基本信息到session 後面添加訂單信息有用到
		HttpSession session = request.getSession();
		session.setAttribute("fromStoreName", fromStoreName);// 訂車門店名稱
		session.setAttribute("beginTime", beginTime);// 開始時間
		session.setAttribute("tostoreName", tostoreName);// 還車門店名稱
		session.setAttribute("endTime", endTime);// 結束時間
		session.setAttribute("isSongCheShangMen", isSongCheShangMen);
		session.setAttribute("isShangMenQuChe", isShangMenQuChe);		

		request.getRequestDispatcher("/member/SearchCar.jsp").forward(request,
				response);

門店出車查詢界面
門店出車操作界面

int orderId = Integer.parseInt(request.getParameter("orderId"));
int carId = Integer.parseInt(request.getParameter("carId"));

		IOrderDAO orderDAO = new OrderDAO();
		ICarDAO carDAO = new CarDAO();

		if (orderDAO.updateOrderState(orderId, "租賃中")) {
			Map<String, Object> orderMap = orderDAO.getOrderByOrderId(orderId);

			int toStoreId = Integer.parseInt(orderMap.get("toStoreId")
					.toString());// 將要還車的門店編號
			if (carDAO.changeCarStore(carId, toStoreId)) {
				CommonUtil.showAlertMessage(response, "出車操作成功!");

				searchOrderDetail(request, response, orderId, carId,
						"/businessStore/OrderDetail.jsp");
			} else {
				CommonUtil.showAlertMessage(response, "出車操作失敗!");
			}
		} else {
			CommonUtil.showAlertMessage(response, "出車操作失敗!");
		}

門店車輛查詢結果界面
門店車輛狀態啓/停用界面
門店車輛修改界面
門店車輛添加界面

ICarDAO carDAO = new CarDAO();
Object totalCount = carDAO.getRSCountByStoreId(storeId)[0];
PageUtil pageUtil = new PageUtil(request);
pageUtil.setPageSize(3);
pageUtil.setRsCount(Integer.parseInt(totalCount.toString()));
int pageCount = pageUtil.getPageCount();
int currentCount = pageUtil.getCurrentPage();
String pageTool = pageUtil.createPageTool(PageUtil.BbsImage);
request.setAttribute("pageTool", pageTool);
ArrayList<String[]> carList = carDAO.pageSearchByStoreId(storeId,pageUtil.getPageSize(), currentCount);
request.setAttribute("carList", carList);
request.getRequestDispatcher("/businessStore/CarList.jsp").forward(request, response);2)門店車輛啓/停用代碼實現
int id = Integer.parseInt(request.getParameter("carId"));
int state = Integer.parseInt(request.getParameter("state"));
if (state == 0) {
	state = 1;
} else if (state == 1) {
	state = 0;
}
IBaseDAO baseDAO = new BaseDAO();
Object[] paramArray = new Object[2];
paramArray[0] = state;
paramArray[1] = id;
boolean result = baseDAO.update("t_car", "state=?", "carId=?",paramArray);
if (result) {
CommonUtil.showAlertMessage(response, "更改成功!");
	return;
} else {
CommonUtil.showAlertMessage(response, "更改失敗!");
	return;
}

查詢所有租賃訂單界面
 租賃訂單詳情界面

IOrderDAO orderDAO = new OrderDAO();
BusinessStore store = (BusinessStore) request.getSession().getAttribute("store");
int storeId = store.getStoreId();
int rsCount = Integer.parseInt(orderDAO.getRsCountByStoreId(storeId,orderState)[0].toString());
int pageSize = 5;
PageUtil util = new PageUtil(request);
util.setPageSize(pageSize);
util.setRsCount(rsCount);
util.getPageCount();
int currentPage = util.getCurrentPage();
String pageTool = util.createPageTool(PageUtil.BbsImage);
ArrayList<String[]> orderList = orderDAO.getByStoreId(storeId,orderState, pageSize, currentPage);
request.setAttribute("orderList", orderList);
request.setAttribute("pageTool", pageTool);
request.getRequestDispatcher("/businessStore/" + jumpUrl).forward(request, response);

視頻

在線租車 租車系統 租車平臺

總結

經過漫長的開發 完成系統的開發任務 然後將sql腳本 源代碼 文檔一起交付給運維人員進行上線,安排,未來可期!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章