Proyecto de graduación Sistema de gestión del foro de examen de ingreso de posgrado del campus Android

Lenguaje de desarrollo: Java
Herramienta de desarrollo Java: JDK1.8
Marco de back-end: SSM
Front-end: desarrollado con tecnología JSP
Base de datos: MySQL5.7 combinado con herramientas de administración Navicat
Servidor: Tomcat8.5
Software de desarrollo: IDEA/Eclipse
Si es un Proyecto Maven: Sí


Tabla de contenido

1. Introducción al proyecto

2. Funciones del sistema

3. Capturas de pantalla del proyecto del sistema.

3.1 lado de la aplicación

3.2 Gestión de backend

4. Código central

4.1 Relacionado con el inicio de sesión

4.2 Carga de archivos

4.3 Embalaje



1. Introducción al proyecto

La aplicación generalizada de Internet ha aportado una gran comodidad a la vida. Por lo tanto, la gestión del foro de examen de ingreso de posgrado del campus se combina con la red actual y se utiliza tecnología Java para construir el foro de examen de ingreso de posgrado del campus basado en Android para realizar la informatización del foro de examen de ingreso de posgrado del campus. Esto puede desempeñar un papel importante para mejorar aún más el desarrollo de la gestión del foro de exámenes de ingreso de posgrado del campus y enriquecer la experiencia de gestión del foro de exámenes de ingreso de posgrado del campus.

El foro de exámenes de ingreso de posgrado del campus basado en Android se puede promover amplia y exhaustivamente a través de Internet, de modo que el mayor número posible de miembros puedan comprender y familiarizarse con la conveniencia y eficiencia del foro de exámenes de ingreso de posgrado del campus basado en Android. proporciona servicios a los miembros, pero también se promociona a sí mismo, para que más miembros se conozcan a sí mismos. Para los foros de exámenes de ingreso de posgrado del campus, si tiene su propia APLICACIÓN, puede obtener una mejor gestión a través del sistema y mejorar su imagen al mismo tiempo.

El estado actual y las tendencias del diseño de esta aplicación, desde el diseño de requisitos, estructura, base de datos, etc. hasta la implementación de la aplicación, son la implementación de front-end y back-end respectivamente. El contenido del artículo muestra el proceso de desarrollo desde los aspectos de diseño, descripción, implementación, análisis y prueba del sistema. Esta aplicación elige un plan de desarrollo factible basado en la situación real y utiliza el lenguaje de programación Java y la base de datos MySQL para realizar todas las funciones de la aplicación. A continuación, se prueba el sistema para ver si hay lagunas en el sistema y los permisos del usuario son Probado para mejorar la aplicación. Finalmente, la finalización de la aplicación cumple con los estándares relevantes.


2. Funciones del sistema

Este sistema de rescate en caso de desastre incluye principalmente dos módulos funcionales, a saber, el módulo de funciones de usuario y el módulo de funciones de administrador.

(1) Módulo de administrador: los módulos principales incluyen página de inicio, centro personal, administración de miembros, administración de clasificación de temas, administración de foros de exámenes de ingreso de posgrado, administración de sistemas y otras funciones.

(2) Módulo de usuario: los usuarios pueden ingresar a la APLICACIÓN para realizar operaciones como la página de inicio, el foro de examen de ingreso de posgrado y el mío.


3. Capturas de pantalla del proyecto del sistema.

3.1 lado de la aplicación

Inicio de sesión de miembros. Los miembros ingresan a la aplicación, ingresan su número de cuenta y contraseña y realizan operaciones de inicio de sesión en el sistema.

Registro de miembro, ingrese a la página de registro de miembro y realice operaciones de registro completando el nombre de usuario, contraseña, contraseña de confirmación, nombre, edad, sexo, teléfono móvil y otra información.

Una vez que los miembros inician sesión en el sistema, pueden realizar operaciones detalladas en la página de inicio, el foro de exámenes de ingreso de posgrado, el mío, etc.

Foro de examen de ingreso de posgrado: en la página del foro de examen de ingreso de posgrado, puede ver el título del artículo, la categoría del tema, las palabras clave, la fecha de distribución, el número de cuenta, el nombre, el número de clics, los me gusta y otra información, y realizar operaciones similares.

Los usuarios pueden operar el foro de examen de ingreso de posgrado, mi gestión de colecciones, contactarnos y otra información detallada en mi página.

Información del usuario: guarde la cuenta, contraseña, nombre, edad, sexo, teléfono móvil, foto y otra información en la página de información del usuario.

3.2 Gestión de backend

El administrador inicia sesión. El administrador ingresa el nombre de usuario, la contraseña y hace clic para iniciar sesión para ingresar a la operación del sistema.

Después de que el administrador inicia sesión en el sistema, puede ver la página de inicio, el centro personal, la administración de miembros, la administración de clasificación de temas, la administración del foro de exámenes de ingreso de posgrado, la administración del sistema y otras funciones, y también puede realizar las operaciones correspondientes en cada función una por una.

Gestión de miembros. En la página de gestión de miembros, puede realizar operaciones detalladas, modificar o eliminar el índice, número de cuenta, nombre, edad, sexo, teléfono móvil, fotos y otros contenidos.

Gestión de clasificación de temas.En la página de gestión de clasificación de temas, puede realizar operaciones como detallar, modificar o eliminar el índice, clasificación de temas y otros contenidos.

Gestión del foro de exámenes de ingreso de posgrado. En la página de administración del foro de exámenes de ingreso de posgrado, puede realizar operaciones detalladas, modificar, ver comentarios, eliminar y otras operaciones en el índice, título del artículo, clasificación de temas, palabras clave, portada, fecha de publicación, número de cuenta, nombre y otros contenidos.

Gestión del sistema. En la página de gestión del carrusel, puede realizar operaciones detalladas y de modificación de índices, nombres, valores, etc. También puede realizar las operaciones correspondientes en Acerca de nosotros y Contáctenos.


4. Código central

4.1 Relacionado con el inicio de sesión



    package com.controller;

    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    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.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.annotation.IgnoreAuth;
    import com.baomidou.mybatisplus.mapper.EntityWrapper;
    import com.entity.TokenEntity;
    import com.entity.UserEntity;
    import com.service.TokenService;
    import com.service.UserService;
    import com.utils.CommonUtil;
    import com.utils.MD5Util;
    import com.utils.MPUtil;
    import com.utils.PageUtils;
    import com.utils.R;
    import com.utils.ValidatorUtils;
    
    /**
     * 登录相关
     */
    @RequestMapping("users")
    @RestController
    public class UserController{
    
    
    	
    	@Autowired
    	private UserService userService;
    	
    	@Autowired
    	private TokenService tokenService;
    
    	/**
    	 * 登录
    	 */
    	@IgnoreAuth
    	@PostMapping(value = "/login")
    	public R login(String username, String password, String captcha, HttpServletRequest request) {
    
    
    		UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
    		if(user==null || !user.getPassword().equals(password)) {
    
    
    			return R.error("账号或密码不正确");
    		}
    		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
    		return R.ok().put("token", token);
    	}
    	
    	/**
    	 * 注册
    	 */
    	@IgnoreAuth
    	@PostMapping(value = "/register")
    	public R register(@RequestBody UserEntity user){
    
    
    //    	ValidatorUtils.validateEntity(user);
        	if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    
    
        		return R.error("用户已存在");
        	}
            userService.insert(user);
            return R.ok();
        }
    
    	/**
    	 * 退出
    	 */
    	@GetMapping(value = "logout")
    	public R logout(HttpServletRequest request) {
    
    
    		request.getSession().invalidate();
    		return R.ok("退出成功");
    	}
    	
    	/**
         * 密码重置
         */
        @IgnoreAuth
    	@RequestMapping(value = "/resetPass")
        public R resetPass(String username, HttpServletRequest request){
    
    
        	UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
        	if(user==null) {
    
    
        		return R.error("账号不存在");
        	}
        	user.setPassword("123456");
            userService.update(user,null);
            return R.ok("密码已重置为:123456");
        }
    	
    	/**
         * 列表
         */
        @RequestMapping("/page")
        public R page(@RequestParam Map params,UserEntity user){
    
    
            EntityWrapper ew = new EntityWrapper();
        	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
            return R.ok().put("data", page);
        }
    
    	/**
         * 列表
         */
        @RequestMapping("/list")
        public R list( UserEntity user){
    
    
           	EntityWrapper ew = new EntityWrapper();
          	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
            return R.ok().put("data", userService.selectListView(ew));
        }
    
        /**
         * 信息
         */
        @RequestMapping("/info/{id}")
        public R info(@PathVariable("id") String id){
    
    
            UserEntity user = userService.selectById(id);
            return R.ok().put("data", user);
        }
        
        /**
         * 获取用户的session用户信息
         */
        @RequestMapping("/session")
        public R getCurrUser(HttpServletRequest request){
    
    
        	Long id = (Long)request.getSession().getAttribute("userId");
            UserEntity user = userService.selectById(id);
            return R.ok().put("data", user);
        }
    
        /**
         * 保存
         */
        @PostMapping("/save")
        public R save(@RequestBody UserEntity user){
    
    
    //    	ValidatorUtils.validateEntity(user);
        	if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    
    
        		return R.error("用户已存在");
        	}
            userService.insert(user);
            return R.ok();
        }
    
        /**
         * 修改
         */
        @RequestMapping("/update")
        public R update(@RequestBody UserEntity user){
    
    
    //        ValidatorUtils.validateEntity(user);
            userService.updateById(user);//全部更新
            return R.ok();
        }
    
        /**
         * 删除
         */
        @RequestMapping("/delete")
        public R delete(@RequestBody Long[] ids){
    
    
            userService.deleteBatchIds(Arrays.asList(ids));
            return R.ok();
        }
    }



4.2 Carga de archivos

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
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 org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({
    
    "unchecked","rawtypes"})
public class FileController{
    
    
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@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);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
    
    
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper().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);
	}
	
	/**
	 * 下载文件
	 */
	@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);
	}
	
}

4.3 Embalaje

package com.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据
 */
public class R extends HashMap {
    
    
	private static final long serialVersionUID = 1L;
	
	public R() {
    
    
		put("code", 0);
	}
	
	public static R error() {
    
    
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
    
    
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
    
    
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
    
    
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map map) {
    
    
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
    
    
		return new R();
	}

	public R put(String key, Object value) {
    
    
		super.put(key, value);
		return this;
	}
}

Adquisición del proyecto:

https://gitee.com/sinonfin/L-javaWebSha/tree/master

Supongo que te gusta

Origin blog.csdn.net/WEB_DC/article/details/133347223
Recomendado
Clasificación