基於Java+Spring+vue+nodo.js實現大學生科技創新創業專案管理系統

語言: CN / TW / HK

theme: github

​ 一起養成寫作習慣!這是我參與「掘金日新計劃 · 4 月更文挑戰」的第3天,點選檢視活動詳情

前言介紹:

隨著社會的不斷快速發展,計算機的影響是全面且深入的。人們生活水平的不斷提高,日常生活中人們對大學生創新創業專案管理方面的要求也在不斷的提高、需要大學生創新創業專案管理的人數更是不斷增加,使得大學生創新創業專案管理的開發成為必需而且緊迫的事情。大學生創新創業專案管理主要是藉助計算機,通過對大學生創新創業專案管理所需的資訊管理,增加使用者選擇,同時也方便對廣大使用者資訊的及時查詢、修改以及對使用者資訊的及時瞭解。大學生創新創業專案管理對一些使用者帶來了更多的便利, 該系統通過和Mysql資料庫管理系統軟體協作來滿足使用者的需求儲存資料等。

系統設計:

開發工具:idea/eclipse、navicat for mysql

開發語言:java、jdk1.8、mysql5

硬體環境:Win10系統、Google等。

主要技術:springmvc、mybatis、vue 、java等

主要功能設計:首頁、個人中心、學生管理、指導老師管理、評審專家管理、專案任務書管理、中期檢查報告管理、專案申請書管理、結項報告管理、專案進展日誌管理、專案立項申請管理、專案評價管理

​​

功能截圖:

使用者登入註冊: 管理員通過輸入使用者名稱、密碼、選擇角色等資訊,然後點選登入就能登入到系統

管理員登入進入系統之後,就可以對所有的資訊進行檢視,可以檢視到首頁、個人中心、學生管理、指導老師管理、評審專家管理、專案任務書管理、中期檢查報告管理、專案申請書管理、結項報告管理、專案進展日誌管理、專案立項申請管理、專案評價管理等,並且還可以對其進行相應的操作管理

學生資訊管理: 在學生管理頁面中可以對索引、姓名、學號、性別、手機、郵箱、聯絡地址、身份證、照片等資訊進行詳情,修改或刪除等操作

指導老師管理: 指導老師管理,在指導老師管理頁面中可以對索引、工號、指導老師姓名、性別、手機、郵箱、身份證、圖片等資訊進行詳情,修改或刪除等操作

評審專家管理: 在評審專家管理頁面中可以對索引、賬號、姓名、性別、身份證、手機、郵箱、照片等資訊進行詳情,修改或刪除等操作

專案任務書管理: 在專案申請書管理頁面中可以對索引、專案名稱、學號、姓名、手機、郵箱、指導老師姓名、工號、檔案、聯絡地址、申請時間、稽核回覆、稽核狀態等資訊進行詳情,修改或刪除等操作

中期檢查報告管理: 在中期檢查報告管理頁面中可以對索引、專案名稱、專案類別、學號、檔案、編號、專案負責人、指導老師姓名、工號、提交時間、稽核回覆、稽核狀態等資訊進行詳情,修改或刪除等操作

專案申請書管理: 在專案進展日誌管理頁面中可以對索引、專案名稱、檔案、指導老師姓名、工號、學號、姓名、提交時間等資訊進行詳情,修改或刪除等操作

結項報告管理: 在結項報告管理頁面中可以對索引、專案名稱、專案型別、學號、檔案、編號、專案負責人、指導老師姓名、工號、提交時間、稽核回覆、稽核狀態等資訊進行詳情,修改或刪除等操作

專案進展日誌管理: 在專案進展日誌管理頁面中可以對索引、專案名稱、檔案、指導老師姓名、工號、學號、姓名、提交時間等資訊進行詳情,修改或刪除等操作

專案評價管理: 在專案進展日誌管理頁面中可以對索引、專案名稱、檔案、指導老師姓名、工號、學號、姓名、提交時間等資訊進行詳情,修改或刪除等操作

資料設計:

專案申請書管理實體屬性圖,如圖所示:

結項報告管理實體屬性圖如圖所示:

部分資料庫表設計:

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

表:專案任務書

| | | | | | -------------------- | --------- | ---------- | ------ | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | xiangmumingcheng | varchar2 | 200 | 專案名稱 | | wenjian | varchar2 | 200 | 檔案 | | lixiangdengji | varchar2 | 200 | 立項等級 | | xiangmubianhao | varchar2 | 200 | 專案編號 | | xiangmufuzeren | varchar2 | 200 | 專案負責人 | | xuehao | varchar2 | 200 | 學號 | | suozaixueyuan | varchar2 | 200 | 所在學院 | | zhidaolaoshixingming | varchar2 | 200 | 指導老師姓名 | | gonghao | varchar2 | 200 | 工號 | | kaishishijian | datetime | | 開始時間 | | jieshushijian | datetime | | 結束時間 | | shuoming | longtext | 4294967295 | 說明 |

表:專案評價

| | | | | | -------------------- | --------- | ---------- | ------ | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | xiangmumingcheng | varchar2 | 200 | 專案名稱 | | xiangmuleixing | varchar2 | 200 | 專案型別 | | xiangmufuzeren | varchar2 | 200 | 專案負責人 | | xuehao | varchar2 | 200 | 學號 | | zhidaolaoshixingming | varchar2 | 200 | 指導老師姓名 | | gonghao | varchar2 | 200 | 工號 | | pingjia | varchar2 | 200 | 評價 | | shuoming | longtext | 4294967295 | 說明 |

表:專案立項申請

| | | | | | -------------------- | --------- | ---------- | ------ | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | xiangmumingcheng | varchar2 | 200 | 專案名稱 | | shangchuanwenjian | varchar2 | 200 | 上傳檔案 | | gonghao | varchar2 | 200 | 工號 | | zhidaolaoshixingming | varchar2 | 200 | 指導老師姓名 | | xuehao | varchar2 | 200 | 學號 | | xingming | varchar2 | 200 | 姓名 | | shenqingshijian | datetime | | 申請時間 | | shuoming | longtext | 4294967295 | 說明 | | sfsh | varchar2 | 200 | 是否稽核 | | shhf | longtext | 4294967295 | 稽核回覆 |

表:專案進展日誌

| | | | | | -------------------- | --------- | ---------- | ------ | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | xiangmumingcheng | varchar2 | 200 | 專案名稱 | | wenjian | varchar2 | 200 | 檔案 | | xuehao | varchar2 | 200 | 學號 | | xingming | varchar2 | 200 | 姓名 | | zhidaolaoshixingming | varchar2 | 200 | 指導老師姓名 | | gonghao | varchar2 | 200 | 工號 | | tijiaoshijian | datetime | | 提交時間 | | shuoming | longtext | 4294967295 | 說明 |

表4-5:使用者表

| | | | | | -------- | --------- | --- | ---- | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | username | varchar2 | 100 | 使用者名稱 | | password | varchar2 | 100 | 密碼 | | role | varchar2 | 100 | 角色 | | addtime | timestamp | | 新增時間 |

表:中期檢查報告

| | | | | | -------------------- | --------- | ---------- | ------ | | 欄位名稱 | 型別 | 長度 | 欄位說明 | | id | bigint | | 主鍵 | | addtime | timestamp | | 建立時間 | | xiangmumingcheng | varchar2 | 200 | 專案名稱 | | xiangmuleibie | varchar2 | 200 | 專案類別 | | wenjian | varchar2 | 200 | 檔案 | | bianhao | varchar2 | 200 | 編號 | | xiangmufuzeren | varchar2 | 200 | 專案負責人 | | xuehao | varchar2 | 200 | 學號 | | zhidaolaoshixingming | varchar2 | 200 | 指導老師姓名 | | gonghao | varchar2 | 200 | 工號 | | tijiaoshijian | datetime | | 提交時間 | | shuoming | longtext | 4294967295 | 說明 | | sfsh | varchar2 | 200 | 是否稽核 | | shhf | longtext | 4294967295 | 稽核回覆 |

程式碼實現:

````java

/* * 專案立項申請 * 後端介面 * @author * @email * @date 2022-04-10 16:31:21 / @RestController @RequestMapping("/xiangmulixiangshenqing") public class XiangmulixiangshenqingController { @Autowired private XiangmulixiangshenqingService xiangmulixiangshenqingService;

/**
 * 後端列表
 */
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,XiangmulixiangshenqingEntity xiangmulixiangshenqing, 
    HttpServletRequest request){

    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("zhidaolaoshi")) {
        xiangmulixiangshenqing.setGonghao((String)request.getSession().getAttribute("username"));
    }
    if(tableName.equals("xuesheng")) {
        xiangmulixiangshenqing.setXuehao((String)request.getSession().getAttribute("username"));
    }
    EntityWrapper<XiangmulixiangshenqingEntity> ew = new EntityWrapper<XiangmulixiangshenqingEntity>();
    PageUtils page = xiangmulixiangshenqingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiangmulixiangshenqing), params), params));
    return R.ok().put("data", page);
}

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

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

 /**
 * 查詢
 */
@RequestMapping("/query")
public R query(XiangmulixiangshenqingEntity xiangmulixiangshenqing){
    EntityWrapper< XiangmulixiangshenqingEntity> ew = new EntityWrapper< XiangmulixiangshenqingEntity>();
    ew.allEq(MPUtil.allEQMapPre( xiangmulixiangshenqing, "xiangmulixiangshenqing")); 
    XiangmulixiangshenqingView xiangmulixiangshenqingView =  xiangmulixiangshenqingService.selectView(ew);
    return R.ok("查詢專案立項申請成功").put("data", xiangmulixiangshenqingView);
}

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

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




/**
 * 後端儲存
 */
@RequestMapping("/save")
public R save(@RequestBody XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
    xiangmulixiangshenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(xiangmulixiangshenqing);

    xiangmulixiangshenqingService.insert(xiangmulixiangshenqing);
    return R.ok();
}

/**
 * 前端儲存
 */
@RequestMapping("/add")
public R add(@RequestBody XiangmulixiangshenqingEntity xiangmulixiangshenqing, HttpServletRequest request){
    xiangmulixiangshenqing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    //ValidatorUtils.validateEntity(xiangmulixiangshenqing);

    xiangmulixiangshenqingService.insert(xiangmulixiangshenqing);
    return R.ok();
}

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


/**
 * 刪除
 */
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
    xiangmulixiangshenqingService.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<XiangmulixiangshenqingEntity> wrapper = new EntityWrapper<XiangmulixiangshenqingEntity>();
    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("zhidaolaoshi")) {
        wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));
    }
    if(tableName.equals("xuesheng")) {
        wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
    }

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

}

````

論文參考:

摘  要

1 系統概述

1.1 概述

1.2課題意義

1.3主要內容

2 系統開發環境

2.1 SSM框架

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指導老師功能模組

5.4評審專家功能模組

6 系統測試

6.1系統測試的目的

6.2系統測試方法

6.3 測試結果

結論

致 謝

參考文獻

原始碼獲取:

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

打卡 文章 更新 261/  365天

「其他文章」