학생 정보 관리 시스템은 Java, Spring Boot 및 MySQL을 기반으로 설계되었습니다. 이 시스템은 효율적인 학생 데이터 관리를 위해 개발되었으며, 다양한 기능을 제공합니다.
기술 스택
- 언어: Java
- 프레임워크: Spring Boot
- 프론트엔드: JavaScript, Vue.js, CSS3
- 개발 도구: IntelliJ IDEA / Eclipse
- 데이터베이스: MySQL 5.7 / 8.0
- JDK 버전: JDK 1.8
- Maven: apache-maven 3.8.1-bin
- 프론트엔드 환경: Node.js 12/14/16
시스템 구현
관리자 로그인, 코스 관리, 공지사항 관리 및 유형 관리 등의 주요 기능을 포함하고 있습니다.
핵심 코드 예제
로그인 모듈
package kr.co.studentmanagementsystem.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import kr.co.studentmanagementsystem.service.UserService;
import kr.co.studentmanagementsystem.entity.UserEntity;
import kr.co.studentmanagementsystem.utils.ResponseUtil;
@RestController
@RequestMapping("/auth")
public class AuthController {
@Autowired
private UserService userService;
@PostMapping("/login")
public ResponseUtil login(@RequestBody UserEntity user) {
UserEntity dbUser = userService.findByUsername(user.getUsername());
if (dbUser == null || !dbUser.getPassword().equals(user.getPassword())) {
return ResponseUtil.error("아이디 또는 비밀번호가 일치하지 않습니다.");
}
String token = userService.generateToken(dbUser);
return ResponseUtil.ok().put("token", token);
}
@PostMapping("/register")
public ResponseUtil register(@RequestBody UserEntity user) {
if (userService.existsByUsername(user.getUsername())) {
return ResponseUtil.error("이미 존재하는 사용자입니다.");
}
userService.save(user);
return ResponseUtil.ok();
}
}
파일 업로드 모듈
package kr.co.studentmanagementsystem.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import kr.co.studentmanagementsystem.service.FileService;
import kr.co.studentmanagementsystem.utils.ResponseUtil;
@RestController
@RequestMapping("/file")
public class FileController {
@Autowired
private FileService fileService;
@PostMapping("/upload")
public ResponseUtil uploadFile(@RequestParam("file") MultipartFile file) throws Exception {
if (file.isEmpty()) {
throw new Exception("업로드할 파일이 없습니다.");
}
String fileName = fileService.storeFile(file);
return ResponseUtil.ok().put("fileName", fileName);
}
@GetMapping("/download/{fileName}")
public ResponseEntity downloadFile(@PathVariable String fileName) {
return fileService.downloadFile(fileName);
}
}
응답 데이터 클래스
package kr.co.studentmanagementsystem.utils;
import java.util.HashMap;
import java.util.Map;
public class ResponseUtil extends HashMap {
public ResponseUtil() {
put("status", "success");
}
public static ResponseUtil error(String message) {
ResponseUtil response = new ResponseUtil();
response.put("status", "error");
response.put("message", message);
return response;
}
public static ResponseUtil ok(String message) {
ResponseUtil response = new ResponseUtil();
response.put("message", message);
return response;
}
public static ResponseUtil ok(Map data) {
ResponseUtil response = new ResponseUtil();
response.putAll(data);
return response;
}
}