>  기사  >  Java  >  Java로 구현된 학생관리 시스템의 사례를 분석한다.

Java로 구현된 학생관리 시스템의 사례를 분석한다.

WBOY
WBOY앞으로
2023-05-09 09:04:14780검색

    학생 관리 시스템

    서문: 2학년에 의해 고안된 과정입니다(또는 학생 관리 시스템...). 이론적으로는 4명이 그룹으로 진행하지만 이 점을 주의해 주세요. 하지만", 또는 모든 코드와 문서를 혼자서 책임졌다. 너무 긴장해서 처음에는 피를 토했다. 이후 웹 버전에서 일부 기능이 완성되지 않은 이유이기도 하다.

    프로젝트 소개

    프로젝트는 JavaSwing으로 작성된 GUI 데스크톱 애플리케이션과 반제품 웹 애플리케이션으로 나누어집니다. 다음 그림은 프로젝트의 전체 기능 구조를 보여줍니다.

    Java로 구현된 학생관리 시스템의 사례를 분석한다.

    JavaSwing

    JavaSwing은 MyBatis + Spring 프레임워크는 여기에 결합한 후에 Spring 프레임워크를 사용하는 것이 Swing으로 개발된 프로그램에서 실수인 것 같다는 것을 나중에 발견했습니다.

    또한 JavaSwing 버전에는 알려지지 않은 일부 논리적 버그가 있을 수 있습니다.

    기능 표시

    1. 로그인 모듈

    Java로 구현된 학생관리 시스템의 사례를 분석한다.

    2. 시스템 설정 모듈

    Java로 구현된 학생관리 시스템의 사례를 분석한다.

    3.학생 추가

    Java로 구현된 학생관리 시스템의 사례를 분석한다.학생 목록

    Java로 구현된 학생관리 시스템의 사례를 분석한다.4.수업관리 모듈

    수업 추가

    Java로 구현된 학생관리 시스템의 사례를 분석한다.수업 관리

    Java로 구현된 학생관리 시스템의 사례를 분석한다.5, 성적 관리

    성적 통계

    Java로 구현된 학생관리 시스템의 사례를 분석한다.6, 웹 버전

    클릭하면 브라우저

    http://localhost:8080 网址로 이동합니다.

    Java로 구현된 학생관리 시스템의 사례를 분석한다.지침

    IDEA를 사용하여 프로젝트를 열면 프로젝트 구조는 다음과 같습니다.

    Java로 구현된 학생관리 시스템의 사례를 분석한다.프로젝트를 시작할 때 뷰 패키지에서 LoginFrm을 실행하세요

    Java로 구현된 학생관리 시스템의 사례를 분석한다.Spring을 종속성 주입에 사용할 때 발생하는 문제입니다. 문제

    Swing은 GUI 개발을 위한 Java 패키지입니다. 강좌에서 Spring을 사용하여 컨테이너를 관리하는데, 컨테이너 종속성 주입을 위해 Spring 주석을 사용할 때 문제가 발생하며 오류는 다음과 같습니다.

    스레드 "AWT-EventQueue-0"의 예외 java.lang.NullPointerException

    at com.view.LoginFrm.loginAct(LoginFrm.java:187)

    at com.view.LoginFrm$2.actionPerformed(LoginFrm.java :96)

    바이두에서 오랫동안 검색해봐도 문제를 찾을 수 없었습니다. Spring 구성 파일을 잘못 작성했거나 @Service 주석을 추가하지 않은 문제를 배제한 후 인터넷에서 설명을 찾았습니다.

    멀티스레딩에서 @Autowired를 사용하면 빈을 얻을 수 없습니다.

    이유는 새 스레드가 Spring 컨테이너에 없기 때문에 Spring의 Bean 객체를 얻을 수 없기 때문입니다.

    JavaSwing은 프로젝트의 일부 위치가 다중 스레드이고 많은 UI 스레드가 실행되고 있습니다. 따라서 스레드에서 Spring을 사용하는 주입은 Spring에 의해 관리되는 스레드가 아니기 때문에 실패합니다

    그리고 Spring은 다중 스레드 상황에서 종속성을 주입하는 데 주석을 사용하는 것을 허용하지 않으므로 수동으로 Bean 객체만 가져올 수 있습니다. 우리가 원하는 코드는 다음과 같습니다.

    private final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
    private final AdminService adminService = (AdminServiceImpl)context.getBean("AdminServiceImpl");

    사실 스레드 풀을 구성하여 관리할 수도 있지만 저는 Swing에 익숙하지 않고 실행할 때 스레드가 몇 개 있는지 모릅니다.

    이 문제는 처음에는 예상하지 못한 문제였습니다. 내가 이 사실을 알았더라면 Spring on Swing을 사용하지 않았을 것입니다. 각 뷰 레이어 클래스에 대한 종속성을 수동으로 얻어야 ​​하기 때문에 훨씬 더 나쁩니다. MyBatis의 의존성을 직접 얻는 것에는 차이가 없지만 Spring을 사용하는 것이 더 번거롭습니다

    HashMap을 결과 집합으로 사용하는 Mybatis의 문제

    지정된 로그인을 찾는 메서드를 작성할 때, List>을 반환 값으로 사용했지만 처음으로 null 포인터 오류가 표시되었을 때 @Results 결과 집합을 다음과 같이 구성했습니다.

    @Results({
    @Result(property = "key",column = "attendance_num",jdbcType = JdbcType.INTEGER),
    @Result(property = "value",column = "attendance_date",jdbcType = JdbcType.VARCHAR )})

    그런데 형식 변환 오류가 나와서 쿼리 결과를 콘솔에 출력해 보니 결과는 이렇더군요

    [{value=2018-05-17, key=1}, { 값= 2018-04-17, 키=1}, {값=2018-04-18, 키=1}, {값=2018-04-19, 키=3}, {값=2018-04-20, key= 1}, {value=2018-04-21, key=1}, {value=2018-05-03, key=1}]

    HashMap의 값이 JSON 문자열 형식에서 xxx로 변경되었습니다. =xxx 위의 결과 형태입니다. 왜 xml 파일을 사용하지 않는지 묻지 마세요. 당시에는 시간이 없어서 편의상 주석을 사용했습니다. 해결 방법:

    위 결과 값을 다시 처리하여 HashMap

    Delete에 할당합니다. 외래 키와의 연결 데이터를 추출할 때 발생하는 문제

    프로젝트의 서비스 계층에서 다음과 같은 오류를 보고합니다.

    상위 행을 삭제하거나 업데이트할 수 없습니다: 외래 키 제약 조건이 실패합니다(`ttms`.`s_attendance`, CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id `) REFERENCES `s_student` (`id`)); 중첩된 예외는 java.sql.SQLIntegrityConstraintViolationException입니다. 상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다(`ttms`.`s_attendance `, CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id`) REFERENCES `s_student` (`id`))

    오류 메시지를 확인해보니 Dao 레이어에 문제가 있는 것으로 나타났습니다. . 이유를 분석한 결과, 외래 키 연결이 설정되어 있어 데이터가 삭제되지 않는 것으로 나타났습니다.

    해결 방법:

    데이터를 삭제하기 전에 다음과 같이 외래 키를 유효하지 않도록 설정하세요.

    set foreign_key_checks = 0;

    그런 다음 이때 삭제 문을 실행할 수 있습니다.

    삭제 후 외래 키를 설정하세요. 다음과 같이 키가 유효해야 합니다.

    set foreign_key_checks = 1;

    이렇게 하면 이 레코드가 완벽하게 삭제됩니다.

    JavaWeb

    JavaWeb 여기에서는 SpringBoot + Spring Data JPA의 프레임워크 조합이 사용됩니다. 페이지는 데이터 표시를 위해 Thymeleaf를 사용합니다. 페이지에는 데이터 시각화를 위해 ECharts를 사용하는 통계 페이지가 있습니다.

    앞서 언급했듯이 웹은 반제품이며 주로 로그인, 로그아웃, 비밀번호 변경, 학생 관리, 수업 관리, 점수 관리 및 점수 통계와 같은 기능 모듈을 포함합니다. 또한 사용하는 데이터베이스는 JavaSwing 버전과 동일하므로 이전 데이터는 실제로 상호 운용 가능합니다.

    요약: 페이지가 조금 보기 흉하지만 지속적인 개발을 위한 템플릿으로 사용할 수 있습니다.

    기능 표시

    1. 로그인 인터페이스

    Java로 구현된 학생관리 시스템의 사례를 분석한다.2. 학생 관리

    학생 목록

    Java로 구현된 학생관리 시스템의 사례를 분석한다.학생 추가

    Java로 구현된 학생관리 시스템의 사례를 분석한다.3.

    클래스가 추가되었습니다

    Java로 구현된 학생관리 시스템의 사례를 분석한다.

    Java로 구현된 학생관리 시스템의 사례를 분석한다.

    4. 통계 존중 说 지침 사용 Java로 구현된 학생관리 시스템의 사례를 분석한다.

    프로젝트 구조 다이어그램:

    Java로 구현된 학생관리 시스템의 사례를 분석한다.

    Java로 구현된 학생관리 시스템의 사례를 분석한다. DemoApplication 클래스에 직접 넣고 마우스 오른쪽 버튼을 클릭하여 DemoApplication 클래스를 시작합니다.

    발생한 문제

    JPA를 사용하여 데이터베이스를 업데이트할 때 발생하는 문제

    Spring Data JPA를 사용하여 웹 측에서 지속성 계층 콘텐츠를 수행할 때 다음과 같은 오류가 발생했습니다. Java로 구현된 학생관리 시스템의 사례를 분석한다.

    업데이트/삭제 쿼리 실행

    Baidu에서 검색해보니 JPA인 것으로 나타났습니다. 업데이트 또는 삭제 작업을 수행할 때 Dao 또는 서비스 레이어에 @Transactional 주석을 추가해야 하는데 이는 트랜잭션 수준 작업이라는 의미입니다. 구체적으로 JPA 요구 사항으로 인해 트랜잭션 지원 없이는 업데이트 및 삭제 작업을 수행할 수 없습니다.

    위 내용은 Java로 구현된 학생관리 시스템의 사례를 분석한다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제