Sistema de gestión de procesos de diseño de graduación basado en SSM

Página de inicio del autor: Brújula de programación

Sobre el autor: creador de alta calidad en el campo de Java, experto en blogs de CSDN, socio de contenido de CSDN, autor invitado de Nuggets, experto en blogs de Alibaba Cloud, autor invitado de 51CTO, muchos años de experiencia en diseño de arquitectos, profesor residente del aula Tencent

Contenido principal: proyecto Java, proyecto Python, proyecto front-end, inteligencia artificial y big data, plantilla de currículum, materiales de aprendizaje, banco de preguntas de entrevistas, asistencia técnica mutua

Favoritos, likes, no se pierdan, es bueno seguir al autor

Obtenga el código fuente al final del artículo 

Número de artículo: BS-GX-063

1. Introducción ambiental

Configuración regional: Java: jdk1.8

Base de datos: Mysql: mysql5.7

Servidor de aplicaciones: Tomcat: tomcat8.5.31

Herramientas de desarrollo: IDEA o eclipse

Tecnología de desarrollo front-end: Vue+ElementUI

Tecnología de desarrollo de fondo: marco SSM

2. Introducción del proyecto

2.1 Introducción

Hoy, en el siglo XXI, con el continuo desarrollo y progreso de la sociedad, la comprensión de la ciencia de la información por parte de las personas se ha desarrollado de un nivel bajo a un nivel alto, desde el conocimiento perceptivo original hasta el conocimiento racional, y la importancia de la gestión ha sido reconocida gradualmente por gente Como sabemos, la gestión científica hace que el almacenamiento de información sea preciso, rápido y perfecto, y puede mejorar la eficiencia de la gestión del trabajo y promover su desarrollo.

La tesis presenta principalmente el sistema de gestión de diseño de graduación, incluido el estado actual de la investigación y los antecedentes de desarrollo involucrados, y luego analiza los objetivos de diseño del sistema, así como los requisitos del sistema, así como todo el plan de diseño y el También se analiza en detalle el diseño e implementación del trabajo y, finalmente, se realizan algunas pruebas específicas sobre el sistema de gestión del diseño de graduación.

Este documento utiliza Java como tecnología de desarrollo para realizar un sistema de gestión de diseño de graduación. Las funciones principales del sistema de gestión de diseño de graduación incluyen: administrador: página de inicio, centro personal, información personal, gestión de estudiantes, gestión de profesores, gestión de plantillas de archivos, gestión de foros, gestión del sistema, gestión de selección de temas en línea, gestión de informes de apertura de temas, gestión de informes trimestrales, gestión de disertaciones, etc. , Gestión de profesores: centro personal, información personal, gestión de plantillas de archivos, gestión de selección de temas en línea, gestión de preguntas y respuestas de profesores, gestión de informes de apertura de temas, gestión de informes de mitad de período, gestión de tesis de graduación, gestión de preguntas de estudiantes, gestión de progreso de tesis, etc. Gestión de estudiantes: centro personal, información personal, gestión de preguntas de alumnos, gestión de respuestas de profesores, gestión de informes de apertura, gestión de informes intermedios, gestión de tesis de graduación, gestión de preguntas de alumnos, gestión de progreso de tesis, gestión de mis favoritos, etc. A través del diseño de estos módulos funcionales, básicamente se realiza todo el proceso del sistema de gestión de proyectos de graduación.

Específicamente, en el diseño del sistema, se adopta la estructura B / S. Al mismo tiempo, la tecnología Java también se usa para diseñar en la página dinámica, y la base de datos Mysql se usa en segundo plano. Es una excelente gestión de diseño de graduación. sistema.

2.2 Análisis de requisitos de casos de uso

Diagrama de caso de uso del administrador

El maestro central en el sistema es el administrador del sistema.Después de que el administrador inicia sesión, puede administrar el sistema en segundo plano a través del menú del administrador. Las funciones principales son: página de inicio, centro personal, información personal, gestión de estudiantes, gestión de profesores, gestión de plantillas de archivos, gestión de foros, gestión de sistemas, gestión de selección de temas en línea, gestión de informes de apertura de temas, gestión de informes provisionales, gestión de tesis de graduación, problema de estudiante. gestión, gestión de progreso de tesis y otras funciones. En la Figura 1 se muestra un ejemplo de uso del administrador.

Profesores: centro personal, información personal, gestión de plantillas de archivos, gestión de selección de temas en línea, gestión de preguntas y respuestas de profesores, gestión de informes de apertura de temas, gestión de informes de mitad de período, gestión de tesis de graduación, gestión de preguntas de estudiantes, gestión de progreso de tesis y otras funciones. Un ejemplo del uso de un maestro se muestra en la Figura 2. 

 

Estudiantes: centro personal, información personal, gestión de preguntas de alumnos, gestión de respuestas de preguntas de profesores, gestión de informes de apertura de temas,

Gestión de informes de mitad de período, gestión de tesis de graduación, gestión de preguntas de estudiantes, gestión de progreso de tesis, mi colección y otras funciones. En la Figura 3 se muestra un ejemplo del uso de los estudiantes.

 2.3 Diseño de funciones del sistema

El diagrama de arquitectura del sistema pertenece a la etapa de diseño del sistema. El diagrama de arquitectura del sistema es solo un producto de esta etapa. La arquitectura general del sistema determina el modo de todo el sistema y es la base del sistema. El diseño estructural general del sistema de gestión de diseño de graduación se muestra en la Figura 4-2.

 2.4 Diseño de base de datos

La información de la tabla de la base de datos es parte del diseño, y la información detallada de cada tabla en la base de datos se presenta a continuación.

Formulario guanliyuanxinxi Formulario

nombre de la columna

tipo de datos

longitud

restricción

identificación

En t

11

CLAVE PRIMARIA

nombre de usuario

varchar

50

NULO POR DEFECTO

personas con discapacidad

varchar

50

NULO POR DEFECTO

cx

varchar

50

NULO POR DEFECTO

Mesa 3 mesa xuesheng

nombre de la columna

tipo de datos

longitud

restricción

identificación

En t

10

CLAVE PRIMARIA

xueshengxuehao

En t

50

NULO POR DEFECTO

xueshengxingming

varchar

50

NULO POR DEFECTO

xingbie

varchar

50

NULO POR DEFECTO

nianji

varchar

50

NULO POR DEFECTO

no soy

varchar

50

NULO POR DEFECTO

shenfenzheng

varchar

50

NULO POR DEFECTO

lianxidianhua

varchar

50

NULO POR DEFECTO

Tabla 5 tabla de datos de jiaoshi

nombre de la columna

tipo de datos

longitud

restricción

identificación

En t

11

CLAVE PRIMARIA

jiaoshigonghao

varchar

50

NULO POR DEFECTO

jiaoshixingming

varchar

50

NULO POR DEFECTO

mima

varchar

50

NULO POR DEFECTO

zicheng

varchar

50

NULO POR DEFECTO

lianxidianhua

En t

10

NULO POR DEFECTO

shenfenzheng

En t

500

NULO POR DEFECTO

Tabla 6 ` hoja de datos de zaixianxuanti

nombre de la columna

tipo de datos

longitud

restricción

identificación

En t

11

CLAVE PRIMARIA

tu titi

varchar

10

NULO POR DEFECTO

tupián

varchar

500

NULO POR DEFECTO

jianjie

varchar

20

NULO POR DEFECTO

jiaoshigonghao

varchar

4

NULO POR DEFECTO

fabushijian

varchar

20

NULO POR DEFECTO

sfsh

varchar

20

NULO POR DEFECTO

shhf

varchar

20

NULO POR DEFECTO

Tabla 6 ` hoja de datos de xueshengtiwen

nombre de la columna

tipo de datos

longitud

restricción

identificación

En t

11

CLAVE PRIMARIA

woyaotiwen

varchar

10

NULO POR DEFECTO

xueshengxuehao

varchar

500

NULO POR DEFECTO

xueshengxingming

varchar

20

NULO POR DEFECTO

jiaoshigonghao

varchar

4

NULO POR DEFECTO

jiaoshixingming

varchar

20

NULO POR DEFECTO

tiwenshijian

varchar

20

NULO POR DEFECTO

   Tabla 6 ` tabla de datos de laoshidayi

nombre de la columna

tipo de datos

longitud

restricción

identificación

En t

11

CLAVE PRIMARIA

laoshidayi

varchar

10

NULO POR DEFECTO

xueshengxuehao

varchar

500

NULO POR DEFECTO

xueshengxingming

varchar

20

NULO POR DEFECTO

jiaoshigonghao

varchar

4

NULO POR DEFECTO

jiaoshixingming

varchar

20

NULO POR DEFECTO

diashijian

varchar

20

NULO POR DEFECTO

  

Tres, pantalla del sistema

Pantalla frontal

 

 Imagen de efecto de la selección de temas en línea.

 gestión del administrador

 

 

 ya no mostrar

En cuarto lugar, la pantalla del código central

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. Exhibición de trabajos relacionados

Proyectos prácticos basados ​​en el desarrollo de Java, el desarrollo de Python, el desarrollo de PHP, el desarrollo de C# y otros desarrollos de lenguajes relacionados

Proyectos prácticos front-end desarrollados en base a Nodejs, Vue y otras tecnologías front-end

Trabajos relacionados basados ​​en el subprograma WeChat y el desarrollo de aplicaciones Android APP

Desarrollo y aplicación de IoT integrado basado en 51 microcomputadoras de un solo chip

Aplicación inteligente de IA basada en varios algoritmos

Diversos sistemas de gestión y recomendación de datos basados ​​en big data

 

 

Supongo que te gusta

Origin blog.csdn.net/whirlwind526/article/details/131721678
Recomendado
Clasificación