開發環境: Windows操作系統 開發工具:MyEclipse/Eclipse + JDK+ Tomcat + MySQL 資料庫 項目簡介: 系統前段頁面採用jsp + JavaScript + css的組合技術開發,其中JavaScript使用了jQuery和bootstrap框架,這兩個前段 ...
開發環境: Windows操作系統
開發工具:MyEclipse/Eclipse + JDK+ Tomcat + MySQL 資料庫
項目簡介:
系統前段頁面採用jsp + JavaScript + css的組合技術開發,其中JavaScript使用了jQuery和bootstrap框架,這兩個前段框架讓我們能更友好的使用JavaScript。省去了許多步驟,簡化了我們的使用。資料庫使用的是MySQL資料庫,MySQL 是現階段最流行的關係型資料庫之一,因為它的體積小、運行速度快、免費,尤其是開放源碼這一特點,一般中小型網站的開發都會選擇MySQL作為網站資料庫。考慮到系統設計的用戶群體以及MySQL資料庫的這些優點,於是選擇了MySQL資料庫作為開發資料庫。開發使用的IDE工具是:Spring tool suit,這個IDE工具是Spring官網推薦的開發工具,在使用Spring體系的框架開發應用是,這個IDE工具具有很多優勢。Web伺服器是使用的Spring boot內置的Tomcat伺服器。根據以上選擇的框架、工具,選擇了JDK1.8作為開發、編譯環境。
項目截圖:
1.1 用戶登錄
(1) 功能描述
登錄是對用戶使用系統功能進行身份驗證的過程,登錄也是可以很好的控制用戶的許可權問題,登錄界面要求簡明易懂。每一用戶都有自己的獨有的賬號和密碼,用戶在系統的每一個操作都有日誌進行記載,可以有效保證數據可追溯性,做到責任到人,界面如下圖。
圖1.1 用戶登錄
(2) 實現流程
在登陸按鈕添加監聽事件,在用戶輸入賬號密碼點擊登錄後,終端先判斷是否滿足JS中的驗證方法,此方法是防止當賬號密碼為空時登錄的提示,如果為空跳出一個對話框來提示用戶賬號和密碼需要填。如果不為空,後臺會把接受的用戶名密碼與資料庫資料庫中用戶信息比較核對,如果是一致則順利登錄到用戶許可權所對應的界面中,否則出現賬號密碼錯誤的提示,登錄失敗。登錄流程如圖5-12所示。實現代碼如下:
if("manager".equals(user)){
Managers managers = null;
try {
managers = managerService.login(name, password);
} catch (ServiceException e) {
e.printStackTrace();
}
if(managers!=null){
logger.info(name+"登錄成功!!!");
ServletContext app = req.getSession().getServletContext();
app.setAttribute("user",managers);
req.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(req, resp);
}else{
logger.info("登錄失敗,用戶名或者密碼錯誤");
HttpSession session = req.getSession();
session.setAttribute("msg","用戶名或者密碼錯誤");
resp.sendRedirect("login.html");
}
}else if("employee".equals(user)){
Employee employee = null;
try {
employee = managerService.employeelogin(name, password);
} catch (ServiceException e) {
e.printStackTrace();
}
if(employee!=null){
logger.info(name+"登錄成功!!!");
ServletContext app = req.getSession().getServletContext();
app.setAttribute("user",employee);
req.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(req, resp);
}else{
logger.info("登錄失敗,用戶名或者密碼錯誤");
HttpSession session = req.getSession();
session.setAttribute("msg","用戶名或者密碼錯誤");
resp.sendRedirect("login.html");
}
}
1.1 採購管理
(1) 功能描述
採購管理是對需要採購的訂單的綜合管理,在這個模塊里包含採購訂單、收貨入庫、採購退貨三個子模塊。其中採購訂單是員工用來生成採購單的,還有對採購單的一些處理;收貨入庫是對已經提交的採購單進行入庫操作;採購退貨是把我們已經提交的採購單進行退貨處理的操作。主要界面如下圖:
圖1.1 採購管理
(2) 實現流程
點擊採購訂單按鈕會跳轉到採購訂單首頁,在首頁可以看到所有已經提交的採購單信息;當我們想添加新的採購訂單的時候,首先點擊添加商品按鈕,會跳轉到商品添加頁面,我們把商品信息輸入進去之後點擊提交,後臺方法會把商品信息暫時存起來,當我們把所有商品添加完成,我們可以再點擊添加訂單按鈕,此時會把我們添加的所有的商品都提交生成一個採購訂單,並且把數據存進對應的資料庫表中保存起來。對已經提交的訂單當我們點擊退貨按鈕時,後臺會接收到要退貨的訂單ID,並且根據ID到資料庫中訂單表把數據刪除,同時在退貨表中把數據插進去。當我們點擊入庫按鈕時,後臺會接收到需要入庫的訂單的ID,並且把訂單表中的flag欄位的值修改為已入庫,同時在庫存表中會新加一條數據。主要實現代碼如下:
Long suppliersId = Long.parseLong(request.getParameter("suppliersId"));
String name = request.getParameter("name");
Double price = Double.parseDouble(request.getParameter("price"));
Long count =Long.parseLong(request.getParameter("count"));
String unit = request.getParameter("unit");
String space = request.getParameter("space");
Long supplierId = Long.parseLong(request.getParameter("supplierId"));
String approveId = request.getParameter("approveId");
String batchId = request.getParameter("batchId");
purchaseItem = new PurchaseItem();
purchaseItem.setCount(count);
purchaseItem.setPrice(price);
purchaseItem.setName(name);
purchaseItem.setSupplierId(suppliersId);
list.add(purchaseItem);
model.addAttribute("list", list);
logger.info("成功添加商品");
logger.info("提交採購訂單");
String pay = request.getParameter("pay");
purchaseOrder = new PurchaseOrder();
purchaseOrder.setPay(pay);
purchaseOrder.setInDate(new Date());
purchaseOrder.setFlag("未入庫");
try {
int i = managerService.addPurchaseOrder(purchaseOrder, list);
if(i==1){
list.removeAll(list);
/*orderList.removeAll(orderList);*/
orderList = managerService.findPurchaseOrderByPage(0);
count = managerService.findPurchaseOrderCount();
currentPage = 1L;
totalPage = managerService.getTotalPage();
model.addAttribute("currentPage", currentPage);
model.addAttribute("totalPage", totalPage);
model.addAttribute("orderList", orderList);
model.addAttribute("count", count);
logger.info("提交採購訂單成功");
}