Entwurf und Implementierung eines offenen Labormanagementsystems auf Basis von SSM

Holen Sie sich am Ende den Quellcode
. Entwicklungssprache: Java
Java-Entwicklungstool: JDK1.8
Back-End-Framework: SSM
Front-End: entwickelt mit JSP-Technologie
Datenbank: MySQL5.7 kombiniert mit Navicat-Verwaltungstools
Server: Tomcat8.5
Entwicklungssoftware: IDEA/Eclipse
Ob es sich um ein Maven-Projekt handelt: Ja


Inhaltsverzeichnis

1. Projekteinführung

2. Systemdesign

Entwurf eines Systemumrisses

Design der funktionalen Systemstruktur

3. Screenshots des Systemprojekts

Benutzerinformationsverwaltung

Laborinformationsmanagement

Bewerben Sie sich für Informationsmanagement

Verwaltung des Message Boards

4. Kerncode

4.1 Login-bezogen

4.2 Datei-Upload

4.3 Verpackung


1. Projekteinführung

Die rasante Entwicklung der modernen Wirtschaft und die ständige Verbesserung und Modernisierung der Informationstechnologie haben das traditionelle Dateninformationsmanagement zu Methoden der Softwarespeicherung, Zusammenfassung und zentralisierten Verarbeitung von Dateninformationsmanagement aufgewertet. Dieses offene Labormanagementsystem wurde in einer solchen Umgebung geboren. Es kann Managern helfen, große Mengen an Dateninformationen in kurzer Zeit zu verarbeiten. Die Verwendung dieses Softwaretools kann Managern helfen, die Effizienz der Transaktionsverarbeitung zu verbessern und mit halbem Aufwand das Doppelte des Ergebnisses zu erzielen. Dieses offene Labormanagementsystem verwendet das derzeit ausgereifte und vollständige SSM-Framework, die plattformübergreifende Java-Sprache, mit der große kommerzielle Websites entwickelt werden können, und die MySQL-Datenbank, eine der beliebtesten RDBMS-Anwendungssoftware, für die Programmentwicklung. Das Labor offenes Verwaltungssystem Die nach den Bedürfnissen der Betreiber gestaltete Benutzeroberfläche ist einfach und schön, und das Layout der Funktionsmodule stimmt mit Websites desselben Typs überein. Während das Programm die grundlegenden erforderlichen Funktionen realisiert, bietet es auch einige praktische Lösungen für die Sicherheit Probleme mit Dateninformationen. Man kann sagen, dass dieses Programm Managern nicht nur dabei hilft, Arbeitsangelegenheiten effizient zu erledigen, sondern auch die Integration, Standardisierung und Automatisierung von Dateninformationen realisiert.


2. Systemdesign

Das Design des offenen Labormanagementsystems, wie das Design des Funktionsrahmens und das Design der Datenbank, bestimmt auch, ob das System auf Entwicklungsebene effizient ist und ob es auf Systemwartungsebene einfach zu warten und zu aktualisieren ist. Denn während der Systemimplementierungsphase müssen alle Bedürfnisse der Benutzer berücksichtigt werden. Wenn während der Entwurfsphase nicht alle Aspekte berücksichtigt werden, ist der Systemimplementierungsteil nicht möglich. Daher ist der Systemdesignteil auch ein entscheidendes Bindeglied. Nur Eine sorgfältige und umfassende Betrachtung basierend auf den Benutzerbedürfnissen kann erreicht werden. Es besteht die Hoffnung, dass Programmsoftware mit soliden und stabilen Funktionen entwickelt werden kann.

Entwurf eines Systemumrisses

Um Entwicklungskosten zu sparen und spätere Wartung und Upgrades zu erleichtern, soll das zu entwickelnde System dieses Mal die Systemfunktionsschnittstelle über einen Browser anzeigen, sodass sich die Hauptangelegenheiten der Programmsoftware auf die serverseitige Verarbeitung konzentrieren können Der Hintergrund und der Front-End-Teil verarbeiten nur einen kleinen Teil der Transaktionslogik. Nachfolgend wird ein Diagramm verwendet, um die Funktionsweise des Programms zu veranschaulichen.

Design der funktionalen Systemstruktur

Wenn die funktionalen Anforderungen des Benutzers an das Programm analysiert und ermittelt werden, kann der Programmentwurf durchgeführt werden. Die Abbildung zeigt das Funktionsstrukturdiagramm des Administrators. Der Administrator ist hauptsächlich für das Ausfüllen von Büchern und deren Kategorieinformationen sowie für die Pflege der ausgefüllten Daten, einschließlich Änderung und Löschung, verantwortlich. Der Administrator muss außerdem die Registrierungsinformationen für Lehrer überprüfen, Ankündigungsinformationen veröffentlichen und verwalten Self-Service-Mietinformationen usw.

 



3. Screenshots des Systemprojekts

Benutzerinformationsverwaltung

Seite zur Verwaltung von Benutzerinformationen. Zu den Funktionen, die Administratoren auf dieser Seite bereitgestellt werden, gehören: Verwaltung von Benutzerinformationsabfragen, mit der Benutzerinformationen gelöscht, Benutzerinformationen geändert, Benutzerinformationen hinzugefügt und auch Fuzzy-Abfragebedingungen für Kundennamen durchgeführt werden können.

Laborinformationsmanagement

Seite zur Verwaltung von Laborinformationen. Zu den Funktionen, die Administratoren auf dieser Seite zur Verfügung stehen, gehören: Anzeigen veröffentlichter Laborinformationsdaten, Ändern von Laborinformationen, Ungültigmachen von Laborinformationen und Löschen dieser Daten.

 

Bewerben Sie sich für Informationsmanagement

Seite zur Verwaltung der Bewerbungsinformationen. Zu den Funktionen, die Administratoren auf dieser Seite zur Verfügung stehen, gehören: Anzeigen der beantragten Bewerbungsinformationen und anschließendes Löschen der Bewerbungsinformationen, wenn diese ungültig sind.

 

Verwaltung des Message Boards

Seite zur Verwaltung des Message Boards. Zu den Funktionen, die Administratoren auf dieser Seite zur Verfügung stehen, gehören: Beantworten von Benutzernachrichten, Löschen usw.

 


4. Kerncode

4.1 Login-bezogen


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<UserEntity>().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<UserEntity>().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<UserEntity>().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<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	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<UserEntity> ew = new EntityWrapper<UserEntity>();
      	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<UserEntity>().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 Datei-Upload

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<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);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> 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<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

4.3 Verpackung

package com.utils;

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

/**
 * 返回数据
 */
public class R extends HashMap<String, Object> {
	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<String, Object> 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;
	}
}

Acho que você gosta

Origin blog.csdn.net/weixin_52721608/article/details/132929655
Recomendado
Clasificación