基於Java+SpringBoot+vue+element實現新冠疫情物資管理系統詳細設計

語言: CN / TW / HK

theme: github

前言介紹:

隨著社會的發展,社會的各行各業都在利用資訊化時代的優勢。計算機的優勢和普及使得各種資訊系統的開發成為必需。新冠物資管理,主要的模組包括首頁、個人中心、使用者管理、員工管理、物資資訊管理、物資申請管理、物資捐獻管理、物資資料管理、入庫記錄管理、發放記錄管理、物資庫存管理、留言板管理、疫情論壇、系統管理等功能。系統中管理員主要是為了安全有效地儲存和管理各類資訊,還可以對系統進行管理與更新維護等操作,並且對後臺有相應的操作許可權。要想實現新冠物資管理的各項功能,需要後臺資料庫的大力支援。管理員驗證註冊資訊,收集的資訊,並由此分析得出的關聯資訊等大量的資料都由資料庫管理。本文中資料庫伺服器端採用了Mysql作為後臺資料庫,使Web與資料庫緊密聯絡起來。在設計過程中,充分保證了系統程式碼的良好可讀性、實用性、易擴充套件性、通用性、便於後期維護、操作方便以及頁面簡潔等特點。

本系統的開發使獲取新冠物資管理資訊能夠更加方便快捷,同時也使新冠物資管理管理資訊變的更加系統化、有序化。系統介面較友好,易於操作。

功能設計:

新冠物資管理基於Web服務模式,是一個適用於Internet環境下的模型結構。只要使用者能連上Internet,便可以在不受時間、地點的限制來使用這個系統。新冠物資管理工作原理圖,如圖所示:

系統結構

功能截圖:

登入註冊:使用者填寫賬號密碼和選擇角色進行登入、需要註冊的使用者在使用者註冊頁面通過填寫賬號、密碼、姓名、身份證、年齡、手機、郵箱等資訊完成使用者註冊

系統首頁:在系統的首頁可以檢視首頁、物資資訊、物資申請、物資捐獻、疫情論壇、疫情資訊、留言反饋、個人中心、後臺管理等資訊進行詳細操作,如圖所示

物資資訊:在物資資訊頁面中可以檢視物資編號、物資名稱、釋出時間、圖片、簡介、申請條件等資訊,根據需要進行申請操作

點選檢視疫情物資詳情並可以進行申請、

物資申請:物資申請,在物資申請頁面中可以檢視物資編號、物資名稱、數量、賬號、姓名、申請理由、申請附件、申請時間、圖片等資訊

物資捐贈:使用者在後臺填寫捐贈資訊和物資、管理員稽核後可以在前端看見。

疫情論壇:在疫情論壇頁面輸入標題、型別、內容等資訊進行釋出帖子或重置操作,如圖所示

點選檢視詳情以及評論操作

使用者輸入疫情評論評論資訊; 

疫情資訊

資訊詳情

留言反饋:

個人中心

普通使用者後臺管理:

管理員後臺管理:

管理員登入進入系統之後,就可以對所有的資訊進行檢視,可以檢視到首頁、個人中心、使用者管理、員工管理、物資資訊管理、物資申請管理、物資捐獻管理、物資資料管理、入庫記錄管理、發放記錄管理、物資庫存管理、留言板管理、疫情論壇、系統管理等,並且還可以對其進行相應的操作管理。

使用者管理:

物資資訊管理: 物資資訊管理,在物資資訊管理頁面中可以對索引、物資編號、物資名稱、釋出時間、圖片等資訊進行詳情,申請,修改或刪除等操作

物資申請稽核:物資申請管理,在物資申請管理頁面中可以對索引、物資編號、物資名稱、數量、賬號、姓名、申請理由、申請附件、申請時間、圖片、稽核回覆、稽核狀態、稽核等資訊進行詳情,修改或刪除等操作

稽核

物資捐獻稽核:物資捐獻管理,在物資捐獻管理頁面中可以對物資名稱、簡介、數量、賬號、姓名、捐獻日期、圖片、稽核回覆、稽核狀態、稽核等資訊進行詳情,修改或刪除等操作

物資入庫管理:入庫記錄管理,在入庫記錄管理頁面中可以對索引、物資編號、物資名稱、物資提供單位、聯絡人、聯絡電話、庫存、入庫日期、經辦人、圖片等資訊進行詳情,修改或刪除等操作

物資發放管理:發放記錄管理,在發放記錄管理頁面中可以對索引、物資編號、物資名稱、庫存、賬號、姓名、發放時間、經辦人、圖片等資訊進行詳情,修改或刪除等操作

物資庫存管理:物資庫存管理,在物資庫存管理頁面中可以對索引、物資編號、物資名稱、狀態、庫存、更新日期、圖片等資訊進行詳情,生成可申請物資,減少庫存,加入庫存,修改或刪除等操作

留言板回覆:在留言板管理頁面中可以對索引、使用者名稱、留言內容、回覆內容等資訊進行詳情,回覆,修改或刪除等操作

疫情資訊和輪播圖:在疫情資訊頁面中可以對索引、標題、圖片等資訊進行詳情,修改或刪除等操作,還可對輪播圖管理進行詳細操作

資料設計:

資料庫實體:管理員資訊結構圖,如圖所示

物資資訊實體屬性圖,如圖所示:

物資申請實體屬性圖如圖所示

部分原始碼:

```java

/* * 上傳檔案對映表 / @RestController @RequestMapping("file") @SuppressWarnings({"unchecked","rawtypes"}) public class FileController{ @Autowired private ConfigService configService;

/ * 下載檔案 / @IgnoreAuth @RequestMapping("/download") public ResponseEntity download(@RequestParam String fileName) { try { File path = new File(ResourceUtils.getURL("classpath:static").getPath()); if(!path.exists()) { path = new File(""); } File upload = new File(path.getAbsolutePath(),"/upload/"); if(!upload.exists()) { upload.mkdirs(); } File file = new File(upload.getAbsolutePath()+"/"+fileName); if(file.exists()){ /if(!fileService.canRead(file, SessionManager.getSessionUser())){ getResponse().sendError(403); }*/ HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED); } } catch (IOException e) { e.printStackTrace(); } return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); }

/**
 * 上傳檔案
 */
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
    if (file.isEmpty()) {
        throw new EIException("上傳檔案不能為空");
    }
    String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
    File path = new File(ResourceUtils.getURL("classpath:static").getPath());
    if(!path.exists()) {
        path = new File("");
    }
    File upload = new File(path.getAbsolutePath(),"/upload/");
    if(!upload.exists()) {
        upload.mkdirs();
    }
    String fileName = new Date().getTime()+"."+fileExt;
    File dest = new File(upload.getAbsolutePath()+"/"+fileName);
    file.transferTo(dest);
    if(StringUtils.isNotBlank(type) && type.equals("1")) {
        ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
        if(configEntity==null) {
            configEntity = new ConfigEntity();
            configEntity.setName("faceFile");
            configEntity.setValue(fileName);
        } else {
            configEntity.setValue(fileName);
        }
        configService.insertOrUpdate(configEntity);
    }
    return R.ok().put("file", fileName);
}

}

```

```java

/* * 物資申請 * 後端介面 * @author * @email * @date 2022-03-12 17:03:55 / @RestController @RequestMapping("/wuzishenqing") public class WuzishenqingController { @Autowired private WuzishenqingService wuzishenqingService;

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

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

/**
 * 前端列表
 */
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,WuzishenqingEntity wuzishenqing, HttpServletRequest request){
    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("yonghu")) {
        wuzishenqing.setZhanghao((String)request.getSession().getAttribute("username"));
    }
    EntityWrapper<WuzishenqingEntity> ew = new EntityWrapper<WuzishenqingEntity>();
    PageUtils page = wuzishenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wuzishenqing), params), params));
    return R.ok().put("data", page);
}

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

 /**
 * 查詢
 */
@RequestMapping("/query")
public R query(WuzishenqingEntity wuzishenqing){
    EntityWrapper< WuzishenqingEntity> ew = new EntityWrapper< WuzishenqingEntity>();
    ew.allEq(MPUtil.allEQMapPre( wuzishenqing, "wuzishenqing")); 
    WuzishenqingView wuzishenqingView =  wuzishenqingService.selectView(ew);
    return R.ok("查詢物資申請成功").put("data", wuzishenqingView);
}

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

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




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

/**
 * 前端儲存
 */
@IgnoreAuth
@RequestMapping("/add")
public R add(@RequestBody WuzishenqingEntity wuzishenqing, HttpServletRequest request){
    wuzishenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(wuzishenqing);
    wuzishenqing.setUserid((Long)request.getSession().getAttribute("userId"));
    wuzishenqingService.insert(wuzishenqing);
    return R.ok();
}

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


/**
 * 刪除
 */
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
    wuzishenqingService.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<WuzishenqingEntity> wrapper = new EntityWrapper<WuzishenqingEntity>();
    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("yonghu")) {
        wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
    }

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

}

```

論文參考:

摘  要

1 系統概述

1.1 概述

1.2課題意義

1.3 主要內容

2 系統開發環境

2.1 Spring Boot框架

2.2 JAVA簡介

2.3訪問資料庫實現方法

2.4系統對MySQL資料庫的兩種連線方式

2.5 MySql資料庫

3 需求分析

3.1技術可行性:技術背景

3.2經濟可行性

3.3操作可行性

3.4系統設計規則

3.5系統流程和邏輯

4系統概要設計

4.1 概述

4.2 系統結構

4.3. 資料庫設計

4.3.1 資料庫實體

4.3.2 資料庫設計表

5 系統詳細設計

5.1系統功能模組

5.2 管理員功能模組

5.3 員工功能模組

6 系統測試

6.1系統測試的目的

6.2系統測試方法

6.3 測試結果

結論

致 謝

參考文獻

獲取原始碼:

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

打卡 文章 更新 241/  365天

「其他文章」