SSMベースの卒業設計工程管理システム

著者ホームページ:プログラミングコンパス

著者について: Java 分野の高品質クリエイター、CSDN ブログ エキスパート、CSDN コンテンツ パートナー、Nuggets の招待著者、Alibaba Cloud ブログ エキスパート、51CTO 招待著者、長年のアーキテクト設計経験、Tencent 教室の常駐講師

主な内容:Javaプロジェクト、Pythonプロジェクト、フロントエンドプロジェクト、人工知能とビッグデータ、履歴書テンプレート、教材、面接質問バンク、技術相互支援

お気に入り、いいね、迷わず作者フォローすると良いです

記事の最後にあるソースコードを入手してください 

品番:BS-GX-063

1. 環境紹介

ロケール: Java: jdk1.8

データベース: MySQL: mysql5.7

アプリケーションサーバー: Tomcat: tomcat8.5.31

開発ツール: IDEA または eclipse

フロントエンド開発技術:Vue+ElementUI

背景開発技術:SSMフレームワーク

2. プロジェクト紹介

2.1 はじめに

21世紀に入った今日、社会の発展と進歩に伴い、情報科学に対する人々の理解は低レベルから高レベルへ、本来の知覚的知識から合理的知識へと発展し、マネジメントの重要性が徐々に認識されるようになりました。ご存知のとおり、科学的管理により、情報の保存が正確、高速、完璧になり、作業管理の効率が向上し、その発展が促進されます。

卒業設計管理システムについて、研究の現状や開発背景などを中心に紹介し、その設計目標、システムの要件、全体の設計計画とその要件について論じます。システム 論文の設計と実装についても詳細に議論され、最後に卒業設計管理システムに関していくつかの具体的なテストが実行されます。

本稿では、Javaを開発技術として利用し、卒業設計管理システムを実現します。卒業設計管理システムの主な機能は次のとおりです。 管理者:ホームページ、パーソナルセンター、個人情報、学生管理、教師管理、ファイルテンプレート管理、フォーラム管理、システム管理、オンラインテーマ選択管理、テーマ開設レポート管理、中間管理定期レポート管理、論文管理など , 教員管理:パーソナルセンター、個人情報、ファイルテンプレート管理、オンライン課題選択管理、教員Q&A管理、課題開設レポート管理、中間レポート管理、卒業論文管理、学生の質問管理、論文進捗管理など。学生管理:パーソナルセンター、個人情報、学生質問管理、教師回答管理、冒頭レポート管理、中間報告管理、卒業論文管理、学生質問管理、論文進捗管理、お気に入り管理など。これらの機能モジュールの設計を通じて、基本的に卒業プロジェクト管理システムのプロセス全体が実現されます。

具体的には、システム設計においてはB/S構造を採用し、同時に動的ページ上のデザインにはJava技術も使用し、バックグラウンドではMysqlデータベースを使用する、非常に優れた卒業設計管理となっています。システム。

2.2 ユースケースの要件分析

管理者のユースケース図

システムの中核となる教師はシステム管理者であり、管理者はログイン後、管理者メニューを通じてバックグラウンド システムを管理できます。主な機能:ホームページ、パーソナルセンター、個人情報、学生管理、教師管理、ファイルテンプレート管理、フォーラム管理、システム管理、オンライン課題選択管理、課題開設レポート管理、中間レポート管理、卒業論文管理、学生問題管理、論文進捗管理など。管理者による使用例を図 1 に示します。

教員:パーソナルセンター、個人情報、ファイルテンプレート管理、オンライン課題選択管理、教員Q&A管理、課題開始レポート管理、中間レポート管理、卒業論文管理、学生質問管理、論文進捗管理などの機能。教師による使用例を図 2 に示します。 

 

学生:パーソナルセンター、個人情報、学生質問管理、教師質問回答管理、トピック開設レポート管理、

中間レポート管理、卒論管理、学生の質問管理、論文進捗管理、マイコレクションなどの機能があります。学生の使用例を図 3 に示します。

 2.3 システム機能設計

システム アーキテクチャ図はシステム設計段階に属し、システム アーキテクチャ図はこの段階での成果物にすぎず、システム全体のアーキテクチャはシステム全体のモードを決定し、システムの基礎となります。卒業設計管理システムの全体構成図を図 4-2 に示します。

 2.4 データベース設計

データベースのテーブル情報は設計の一部であり、データベース内の各テーブルの詳細情報を以下に紹介します。

フォームguanliyuanxinxiフォーム

列名

データの種類

長さ

制約

ID

整数

11

主キー

ユーザー名

可変長文字

50

デフォルトのヌル

障害者

可変長文字

50

デフォルトのヌル

CX

可変長文字

50

デフォルトのヌル

表 3雪盛テーブル

列名

データの種類

長さ

制約

ID

整数

10

主キー

シュエシェンシュエハオ

整数

50

デフォルトのヌル

雪生興明

可変長文字

50

デフォルトのヌル

シンビー

可変長文字

50

デフォルトのヌル

年吉

可変長文字

50

デフォルトのヌル

私はそうではありません

可変長文字

50

デフォルトのヌル

深フェン鄭

可変長文字

50

デフォルトのヌル

連西点華

可変長文字

50

デフォルトのヌル

表5礁師データテーブル

列名

データの種類

長さ

制約

ID

整数

11

主キー

ジャオシーゴンハオ

可変長文字

50

デフォルトのヌル

焦興明

可変長文字

50

デフォルトのヌル

美馬

可変長文字

50

デフォルトのヌル

志城

可変長文字

50

デフォルトのヌル

連西点華

整数

10

デフォルトのヌル

深フェン鄭

整数

500

デフォルトのヌル

表 6 `zaixianxuantiデータシート

列名

データの種類

長さ

制約

ID

整数

11

主キー

あなたのティティ

可変長文字

10

デフォルトのヌル

トゥピアン

可変長文字

500

デフォルトのヌル

建傑

可変長文字

20

デフォルトのヌル

ジャオシーゴンハオ

可変長文字

4

デフォルトのヌル

ファブシジアン

可変長文字

20

デフォルトのヌル

sfsh

可変長文字

20

デフォルトのヌル

しーふ

可変長文字

20

デフォルトのヌル

表 6 `xueshengtiwenデータシート

列名

データの種類

長さ

制約

ID

整数

11

主キー

ウォヤオティウェン

可変長文字

10

デフォルトのヌル

シュエシェンシュエハオ

可変長文字

500

デフォルトのヌル

雪生興明

可変長文字

20

デフォルトのヌル

ジャオシーゴンハオ

可変長文字

4

デフォルトのヌル

焦興明

可変長文字

20

デフォルトのヌル

ティウェンシージャン

可変長文字

20

デフォルトのヌル

   表 6 `laoshidayiデータテーブル

列名

データの種類

長さ

制約

ID

整数

11

主キー

ラオシダイ

可変長文字

10

デフォルトのヌル

シュエシェンシュエハオ

可変長文字

500

デフォルトのヌル

雪生興明

可変長文字

20

デフォルトのヌル

ジャオシーゴンハオ

可変長文字

4

デフォルトのヌル

焦興明

可変長文字

20

デフォルトのヌル

大石建

可変長文字

20

デフォルトのヌル

  

三、システム表示

フロントエンドディスプレイ

 

 オンライントピック選択の効果画像

 管理者管理

 

 

 もう表示されません

4番目、コアコード表示

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ZhongqibaogaoEntity;
import com.entity.view.ZhongqibaogaoView;

import com.service.ZhongqibaogaoService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 中期报告
 * 后端接口
 * @author 
 * @email 
 * @date 2020-11-02 10:24:01
 */
@RestController
@RequestMapping("/zhongqibaogao")
public class ZhongqibaogaoController {
    @Autowired
    private ZhongqibaogaoService zhongqibaogaoService;
    


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

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xuesheng")) {
			zhongqibaogao.setXueshengxuehao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("jiaoshi")) {
			zhongqibaogao.setJiaoshigonghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<ZhongqibaogaoEntity> ew = new EntityWrapper<ZhongqibaogaoEntity>();
		PageUtils page = zhongqibaogaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhongqibaogao), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ZhongqibaogaoEntity zhongqibaogao, HttpServletRequest request){
        EntityWrapper<ZhongqibaogaoEntity> ew = new EntityWrapper<ZhongqibaogaoEntity>();
		PageUtils page = zhongqibaogaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhongqibaogao), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ZhongqibaogaoEntity zhongqibaogao){
        EntityWrapper< ZhongqibaogaoEntity> ew = new EntityWrapper< ZhongqibaogaoEntity>();
 		ew.allEq(MPUtil.allEQMapPre( zhongqibaogao, "zhongqibaogao")); 
		ZhongqibaogaoView zhongqibaogaoView =  zhongqibaogaoService.selectView(ew);
		return R.ok("查询中期报告成功").put("data", zhongqibaogaoView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        ZhongqibaogaoEntity zhongqibaogao = zhongqibaogaoService.selectById(id);
        return R.ok().put("data", zhongqibaogao);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        ZhongqibaogaoEntity zhongqibaogao = zhongqibaogaoService.selectById(id);
        return R.ok().put("data", zhongqibaogao);
    }
    



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

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

        zhongqibaogaoService.insert(zhongqibaogao);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        zhongqibaogaoService.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 && !map.get("remindstart").toString().equals("")) {
				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 && !map.get("remindend").toString().equals("")) {
				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<ZhongqibaogaoEntity> wrapper = new EntityWrapper<ZhongqibaogaoEntity>();
		if(map.get("remindstart")!=null && !map.get("remindstart").toString().equals("")) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null && !map.get("remindend").toString().equals("")) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xuesheng")) {
			wrapper.eq("xueshengxuehao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("jiaoshi")) {
			wrapper.eq("jiaoshigonghao", (String)request.getSession().getAttribute("username"));
		}

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


}
package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ZaixianxuantiEntity;
import com.entity.view.ZaixianxuantiView;

import com.service.ZaixianxuantiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 在线选题
 * 后端接口
 * @author 
 * @email 
 * @date 2020-11-02 10:24:01
 */
@RestController
@RequestMapping("/zaixianxuanti")
public class ZaixianxuantiController {
    @Autowired
    private ZaixianxuantiService zaixianxuantiService;
    


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

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

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ZaixianxuantiEntity zaixianxuanti){
        EntityWrapper< ZaixianxuantiEntity> ew = new EntityWrapper< ZaixianxuantiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( zaixianxuanti, "zaixianxuanti")); 
		ZaixianxuantiView zaixianxuantiView =  zaixianxuantiService.selectView(ew);
		return R.ok("查询在线选题成功").put("data", zaixianxuantiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        ZaixianxuantiEntity zaixianxuanti = zaixianxuantiService.selectById(id);
        return R.ok().put("data", zaixianxuanti);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        ZaixianxuantiEntity zaixianxuanti = zaixianxuantiService.selectById(id);
        return R.ok().put("data", zaixianxuanti);
    }
    



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

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

        zaixianxuantiService.insert(zaixianxuanti);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        zaixianxuantiService.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 && !map.get("remindstart").toString().equals("")) {
				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 && !map.get("remindend").toString().equals("")) {
				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<ZaixianxuantiEntity> wrapper = new EntityWrapper<ZaixianxuantiEntity>();
		if(map.get("remindstart")!=null && !map.get("remindstart").toString().equals("")) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null && !map.get("remindend").toString().equals("")) {
			wrapper.le(columnName, map.get("remindend"));
		}

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

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


}

5. 関連作品の展示

Java開発、Python開発、PHP開発、C#開発、その他関連言語開発をベースにした実践的なプロジェクト

Nodejs、Vue等のフロントエンド技術をベースに開発されたフロントエンド実践プロジェクト

WeChatアプレットおよびAndroid APPアプリケーション開発に基づく関連作品

51個のシングルチップマイコンをベースとした組み込みIoTの開発と応用

さまざまなアルゴリズムに基づくAIインテリジェントアプリケーション

ビッグデータを活用した各種データ管理・レコメンドシステム

 

 

おすすめ

転載: blog.csdn.net/whirlwind526/article/details/131721678