4-進銷存管理系統的設計與實現-springboot

来源:https://www.cnblogs.com/javadao/archive/2019/11/05/11802538.html
-Advertisement-
Play Games

開發環境: 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("提交採購訂單成功");

                     }

 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • FFTW是一個可以進行可變長度一維或多維DFT的開源C程式庫,是目前最快的FFT演算法實現。 本文簡述了在Windows平臺上,如何在C++中調用FFTW,所使用的IDE為Visual Studio 2017。 FFTW的詳細信息可在 http://www.fftw.org 中查看 獲取FFTW 在 ...
  • 一、正則的寫法: . (點好) :表示任意一個字元,除了\n,比如查找所有的一個字元\. [] :匹配中括弧中列舉的任意字元,比如[L,Y,0], LLY, Y0, LIU \d :任意一個數字 \D :除了數字都可以 \s :表示空格,tab鍵 \S :除了空白符號 \w :單詞字元,就是a-z, ...
  • 升級 https 記錄 1、去阿裡雲購買證書(免費版),並提交審核資料 購買的證書 2、下載證書 下載證書 3、查看上圖頁面的第三步 JKS證書安裝 4、在證書目錄下執行阿裡雲提供的命令,密碼都填 pfx password.txt 中的內容(三次),會生成 your name.jks 文件。 生成 ...
  • ▶ Log4j2 性能 "https://logging.apache.org/log4j/2.x/performance.html" ▶ Spring Boot 依賴與配置 Maven 依賴 XML 配置 resources/log4j2.xml 混合 sync/async 彩色日誌 分類輸出到不 ...
  • 之前同事問了一道需要點腦洞的演算法題,我覺得蠻有意思的,思路可能會給大家帶來一些啟發,特意在此記錄一下 題目 現有一個元素僅為 0,1 的 n 階矩陣,求連續相鄰(水平或垂直,不能有環)元素值為 1 的序列和的最大值 假設有如下矩陣 則此矩陣連續相鄰元素為 1 的序列和分別為 4, 3,(如圖示),可 ...
  • 2019-11-05-23:03:28 List集合: java.util.List 介面繼承自 Collection 介面,是單列集合的一個重要分支,習慣性地會將實現了List 介面的對象稱為List集合 特點: 1. 它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那麼集合中, ...
  • 1. 列表 1.1 列表的介紹 列表是python的基礎數據類型之⼀,其他編程語⾔也有類似的數據類型。比如JS中的數組, java中的數組等等。它是以[ ]括起來,每個元素⽤','隔開⽽且可以存放各種數據類型: lst = [1, '哈哈', "吼吼", [1,8,0,"百度"], ("我","叫" ...
  • 1. python介紹 1.1 python是什麼樣的語言 編程語⾔主要從以下⼏個⻆度為進⾏分類,編譯型和解釋型、靜態語⾔和動態語⾔、強類型定義語⾔和弱類型定義語⾔,我們先看編譯型語⾔和解釋型語⾔.稍後再說強類型和弱類型 編譯和解釋的區別是什麼? 編譯器是把源程式的每⼀條語句都編譯成機器語⾔,並保存 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...