java程式設計師用下班時間給學弟做了一個物流管理系統

語言: CN / TW / HK

theme: github highlight: a11y-dark


前言介紹:

隨著社會的快速發展,計算機的影響是全面且深入的。人們生活水平的不斷提高,日常生活中人們對物流管理方面的要求也在不斷提高,物流管理的數量更是不斷增加,使得物流管理系統的開發成為必需而且緊迫的事情。物流管理系統主要是藉助計算機,通過對物流管理系統所需的資訊管理,增加使用者的選擇,同時也方便對廣大使用者資訊的及時查詢、修改以及對物流管理資訊的及時瞭解。物流管理系統對使用者帶來了更多的便利,該系統通過和資料庫管理系統軟體協作來滿足使用者的需求。計算機技術在現代管理中的應用,使計算機成為人們應用現代技術的重要工具。能夠有效的解決獲取資訊便捷化、全面化的問題,提高效率。本物流管理系統主要牽扯到程式,資料庫與計算機技術等。覆蓋知識面大,可以大大的提高系統人員工作效率。

功能設計:

管理員結構圖,如圖所示。 

系統流程的分析是通過調查系統所涉及問題的識別、可行性、可操作性、系統分析處理能力等具體環節來調節、整理系統的設計方案以確保系統能達到理想的狀態。這些操作都要從註冊、登入處著眼進行一系列的流程測試保證資料庫的完整,從而把控系統所涉及資訊管理的安全、保證資訊輸入、輸出正常轉換。然後,通過實際操作完成流程圖的繪製工作。物流管理系統的開發對管理模組和系統使用的資料庫進行分析,編寫程式碼,系統測試,如圖所示。

功能截圖:

使用者前端:

系統首頁:使用者在可以檢視首頁、網站公告、貨物委託、公司簡介、個人中心、後臺管理等

登入註冊:會員註冊,在註冊頁面通過填寫會員號、密碼、會員姓名、年齡、會員手機、身份證、地址等資訊完成會員註冊

物流公告:

貨物委託:

可以在貨物委託頁面可以檢視委託編號、會員號、會員姓名、會員手機、貨物名稱、重量、委託地點、運輸地點、收貨人、貨物圖片、備註等詳細內容

公司簡介:

個人中心:

普通使用者後臺管理:

管理員後臺管理:

管理員登入系統後,可以對首頁、個人中心、會員管理、網站公告管理、貨物委託管理、公司簡介管理、車源資訊管理、配送訂單管理、行車路線管理、評價反饋管理、系統管理等功能進行相應操作

網站公告資訊:

貨物託運:在貨物委託管理頁面可以對索引、委託編號、會員號、會員姓名、會員手機、貨物名稱、重量、委託地點、運輸地點、收貨人、貨物圖片、備註等內容進行詳情、配送訂單、修改或刪除等操作

可以配送訂單、修改或刪除等操作

配送訂單管理,在配送訂單管理頁面可以對索引、委託編號、會員號、會員姓名、會員手機、貨物名稱、貨物圖片、委託地點、運輸地點、收貨人、司機姓名、司機電話、車牌號碼、物流狀態、路線編號、路線名稱、運輸價格、是否支付等內容進行詳情、評價反饋、修改或刪除等操作

車輛資訊:在車源資訊管理頁面可以對索引、司機姓名、司機證件、車牌號碼、司機電話、車輛型別、車輛狀況、司機住址、車輛圖片等內容進行詳情、修改或刪除等操作

行車路線:

評價反饋:

系統管理:

部分程式碼:

```java

/* * 配送訂單 * 後端介面 * @author * @email * @date 2022-03-06 13:38:47 / @RestController @RequestMapping("/peisongdingdan") public class PeisongdingdanController { @Autowired private PeisongdingdanService peisongdingdanService;

/**
 * 後端列表
 */
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,PeisongdingdanEntity peisongdingdan, HttpServletRequest request){
    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("huiyuan")) {
        peisongdingdan.setHuiyuanhao((String)request.getSession().getAttribute("username"));
    }
    EntityWrapper<PeisongdingdanEntity> ew = new EntityWrapper<PeisongdingdanEntity>();
    PageUtils page = peisongdingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, peisongdingdan), params), params));

    return R.ok().put("data", page);
}

/**
 * 前端列表
 */
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,PeisongdingdanEntity peisongdingdan, HttpServletRequest request){
    EntityWrapper<PeisongdingdanEntity> ew = new EntityWrapper<PeisongdingdanEntity>();
    PageUtils page = peisongdingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, peisongdingdan), params), params));
    return R.ok().put("data", page);
}

/**
 * 列表
 */
@RequestMapping("/lists")
public R list( PeisongdingdanEntity peisongdingdan){
    EntityWrapper<PeisongdingdanEntity> ew = new EntityWrapper<PeisongdingdanEntity>();
    ew.allEq(MPUtil.allEQMapPre( peisongdingdan, "peisongdingdan")); 
    return R.ok().put("data", peisongdingdanService.selectListView(ew));
}

 /**
 * 查詢
 */
@RequestMapping("/query")
public R query(PeisongdingdanEntity peisongdingdan){
    EntityWrapper< PeisongdingdanEntity> ew = new EntityWrapper< PeisongdingdanEntity>();
    ew.allEq(MPUtil.allEQMapPre( peisongdingdan, "peisongdingdan")); 
    PeisongdingdanView peisongdingdanView =  peisongdingdanService.selectView(ew);
    return R.ok("查詢配送訂單成功").put("data", peisongdingdanView);
}

/**
 * 後端詳情
 */
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
    PeisongdingdanEntity peisongdingdan = peisongdingdanService.selectById(id);
    return R.ok().put("data", peisongdingdan);
}

/**
 * 前端詳情
 */
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
    PeisongdingdanEntity peisongdingdan = peisongdingdanService.selectById(id);
    return R.ok().put("data", peisongdingdan);
}




/**
 * 後端儲存
 */
@RequestMapping("/save")
public R save(@RequestBody PeisongdingdanEntity peisongdingdan, HttpServletRequest request){
    peisongdingdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(peisongdingdan);
    peisongdingdanService.insert(peisongdingdan);
    return R.ok();
}

/**
 * 前端儲存
 */
@RequestMapping("/add")
public R add(@RequestBody PeisongdingdanEntity peisongdingdan, HttpServletRequest request){
    peisongdingdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(peisongdingdan);
    peisongdingdanService.insert(peisongdingdan);
    return R.ok();
}

/**
 * 修改
 */
@RequestMapping("/update")
public R update(@RequestBody PeisongdingdanEntity peisongdingdan, HttpServletRequest request){
    //ValidatorUtils.validateEntity(peisongdingdan);
    peisongdingdanService.updateById(peisongdingdan);//全部更新
    return R.ok();
}


/**
 * 刪除
 */
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
    peisongdingdanService.deleteBatchIds(Arrays.asList(ids));
    return R.ok();
}

/**
 * 提醒介面
 */
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
                     @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    map.put("column", columnName);
    map.put("type", type);

    if(type.equals("2")) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        Date remindStartDate = null;
        Date remindEndDate = null;
        if(map.get("remindstart")!=null) {
            Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
            c.setTime(new Date()); 
            c.add(Calendar.DAY_OF_MONTH,remindStart);
            remindStartDate = c.getTime();
            map.put("remindstart", sdf.format(remindStartDate));
        }
        if(map.get("remindend")!=null) {
            Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
            c.setTime(new Date());
            c.add(Calendar.DAY_OF_MONTH,remindEnd);
            remindEndDate = c.getTime();
            map.put("remindend", sdf.format(remindEndDate));
        }
    }

    Wrapper<PeisongdingdanEntity> wrapper = new EntityWrapper<PeisongdingdanEntity>();
    if(map.get("remindstart")!=null) {
        wrapper.ge(columnName, map.get("remindstart"));
    }
    if(map.get("remindend")!=null) {
        wrapper.le(columnName, map.get("remindend"));
    }

    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("huiyuan")) {
        wrapper.eq("huiyuanhao", (String)request.getSession().getAttribute("username"));
    }

    int count = peisongdingdanService.selectCount(wrapper);
    return R.ok().put("count", count);
}

}

```

資料設計:

因為時間問題!資料庫的欄位命名不規則!建議用正規資料庫欄位設計

將資料庫概念設計的E-R圖轉換為關係資料庫。在關係資料庫中,資料關係由資料表組成,但是表的結構表現在表的欄位上。表:會員

| | | | | | --------------- | --------- | --- | ---- | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | huiyuanhao | varchar | 200 | 會員號 | | mima | varchar | 200 | 密碼 | | huiyuanxingming | varchar | 200 | 會員姓名 | | xingbie | varchar | 200 | 性別 | | nianling | int | | 年齡 | | zhaopian | varchar | 200 | 照片 | | huiyuanshouji | varchar | 200 | 會員手機 | | shenfenzheng | varchar | 200 | 身份證 | | dizhi | varchar | 200 | 地址 |

表4-2:公司簡介

| | | | | | ------------- | --------- | ---------- | ---- | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | biaoti | varchar | 200 | 標題 | | tupian | varchar | 200 | 圖片 | | gongsiwenhua | longtext | 4294967295 | 公司文化 | | gongsijieshao | longtext | 4294967295 | 公司介紹 | | lianxifangshi | varchar | 200 | 聯絡方式 | | youxiang | varchar | 200 | 郵箱 |

| | | | | | ----- | ------- | --- | ------ | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | name | varchar | 100 | 配置引數名稱 | | value | varchar | 100 | 配置引數值 |

表4-4:車源資訊

| | | | | | ------------------- | --------- | --- | ---- | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | sijixingming | varchar | 200 | 司機姓名 | | sijizhengjian | varchar | 200 | 司機證件 | | chepaihaoma | varchar | 200 | 車牌號碼 | | sijidianhua | varchar | 200 | 司機電話 | | cheliangleixing | varchar | 200 | 車輛型別 | | cheliangzhuangkuang | varchar | 200 | 車輛狀況 | | sijizhuzhi | varchar | 200 | 司機住址 | | cheliangtupian | varchar | 200 | 車輛圖片 |

表4-5:行車路線

| | | | | | --------------- | --------- | ---------- | ---- | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | luxianbianhao | varchar | 200 | 路線編號 | | luxianmingcheng | varchar | 200 | 路線名稱 | | qidian | varchar | 200 | 起點 | | zhongdian | varchar | 200 | 終點 | | xiangxixinxi | longtext | 4294967295 | 詳細資訊 |

論文目錄:

摘  要****

ABSTRACT****

目 錄****

第1章 緒論****

1.1背景及意義

1.2 國內外研究概況

1.3 研究的內容

第2章 相關技術****

2.1 Spring Boot框架

2.2 JAVA簡介

2.3 ECLIPSE開發環境

2.4 Tomcat伺服器

2.5 MySQL資料庫

第3章 系統分析****

3.1 需求分析

3.2 系統可行性分析

3.2.1技術可行性:技術背景

3.2.2經濟可行性

3.2.3操作可行性

3.3 專案設計目標與原則

3.4系統流程分析

3.4.1操作流程

3.4.2新增資訊流程

3.4.3刪除資訊流程

第4章 系統設計****

4.1 系統體系結構

4.2開發流程設計

4.3 資料庫設計原則

4.4 資料表

第5章 系統詳細設計****

5.1系統功能模組

5.2管理員功能模組

5.3會員功能模組

第6章  系統測試****

6.1系統測試的目的

6.2系統測試方法

6.3功能測試

結  論****

致  謝****

參考文獻****

交個朋友:

大家點贊、收藏、關注、評論啦 、檢視👇🏻👇🏻👇🏻主頁獲取聯絡👇🏻👇🏻👇🏻

打卡 文章 更新 231/  365天

「其他文章」