목차
소스코드 획득 : java+mysql 기반 학생정보관리시스템 소스코드(테스트 실행)
1. 소개
학생 정보 관리 시스템은 교육 단위에서 없어서는 안될 부분입니다. 완벽하게 기능하고 사용하기 쉬운 정보 관리 시스템은 관련 교직원의 업무량을 효과적으로 줄일 수 있을 뿐만 아니라 그 내용은 학교 의사 결정자와 관리자에게 매우 중요합니다. 따라서 학생정보관리시스템은 이용자에게 충분한 정보와 빠른 질의 수단을 제공할 수 있어야 한다. 그러나 사람들은 파일 아카이브, 통계 및 쿼리 데이터를 관리하기 위해 항상 전통적인 수동 방법을 사용했습니다.이 관리 방법에는 낮은 효율성, 낮은 기밀성 및 많은 노동 낭비와 같은 많은 단점이 있습니다. 파일은 시간이 지남에 따라 생성되고 데이터는 검색, 업데이트 및 유지 관리에 많은 어려움을 가져옵니다. 과학기술의 부단한 발전에 따라 컴퓨터과학은 날로 성숙해지고 그 강력한 기능은 사람들에게 깊이 인식되었으며 인류사회의 여러 분야에 진입하여 점점 더 중요한 역할을 하고 있다.
컴퓨터 응용 프로그램의 일부로 컴퓨터를 사용하여 각종 학교 정보를 관리하는 것은 수동 관리와 비교할 수 없는 장점이 있습니다.예: 빠른 검색, 편리한 쿼리, 고효율, 우수한 신뢰성, 대용량 저장 용량, 우수한 기밀성, 긴 수명 길고 저렴한 비용. 이러한 장점은 학교 정보 관리의 효율성을 크게 향상시킬 수 있으며 단위가 과학적으로 공식적으로 관리되고 세계와 일치하는 중요한 조건이기도 합니다.
2. 주요 기술
기술 이름 |
효과 |
---|---|
자바 + 스트럿츠2 | 백엔드 프레임워크 |
JSP | 프런트엔드 프레임워크 |
MySQL | 데이터 베이스 |
3. 시스템의 기본 기능 요구 사항
시스템에는 일종의 시스템 관리자 권한이 있으며, 다음으로 이 권한에 대한 기능적 구조를 설명한다.
3.1 시스템 구조
주요 기능은 다음과 같습니다.
시스템관리자 : 학생정보관리, 학급정보관리, 성적정보관리, 시스템관리(데이터사전관리, 데이터사전 카테고리관리, 비밀번호변경 포함)
시스템 비즈니스 흐름도:
3.2 데이터베이스 요구 사항 분석
위 업무 흐름도에 관련된 내용에 따라 데이터베이스에 설계할 테이블은 학생 테이블, 클래스 테이블, 등급 테이블, 데이터 사전 카테고리 테이블, 데이터 사전 테이블, 관리 테이블입니다.
3.3 시스템 목표
이 주제 선택 시스템의 설계는 주로 다음 목표를 달성합니다.
- .Humanized 디자인: 시스템 인터페이스는 친숙하고 작업은 간단합니다.
.학생정보, 학급정보, 성적정보 관리 실현
4. 데이터베이스 테이블 설계
(1) 관리자 정보 양식
분야 명 |
데이터 유형 |
길이 |
기본 키 여부 |
설명하다 |
사용자 ID |
정수 |
예 |
자동 번호 매기기 |
|
사용자 이름 |
varchar |
20 |
사용자 이름 |
|
비밀번호 |
varchar |
20 |
비밀번호 |
(2) 학생 테이블
분야 명 |
데이터 유형 |
길이 |
기본 키 여부 |
설명하다 |
학생 아이디 |
varchar |
40 |
예 |
UUID |
스투노 |
varchar |
20 |
학생 아이디 |
|
stuName |
varchar |
20 |
학생 이름 |
|
스투섹스 |
varchar |
10 |
학생 성별 |
|
stuBirthday |
날짜 |
생일 |
||
stuRxsj |
날짜 |
입장시간 |
||
기절 |
varchar |
20 |
국적 |
|
stuZzmm |
varchar |
20 |
정치적 지위 |
|
클래스 ID |
정수 |
11 |
수업 번호 |
|
stuDesc |
텍스트 |
주목 |
||
스투픽 |
varchar |
20 |
학생 사진 |
- . 클래스 테이블
분야 명 |
데이터 유형 |
길이 |
기본 키 여부 |
설명하다 |
클래스 ID |
정수 |
11 |
예 |
자동 번호 매기기 |
클래스 이름 |
varchar |
20 |
클래스 이름 |
|
gradeId |
정수 |
11 |
등급 외래 키 |
|
classDesc |
텍스트 |
수업 설명 |
- .등급표
분야 명 |
데이터 유형 |
길이 |
기본 키 여부 |
설명하다 |
gradeId |
정수 |
11 |
예 |
자동 번호 매기기 |
gradeName |
바르차르 |
20 |
등급명 |
|
gradeDesc |
텍스트 |
성적표 |
- . 데이터 사전 테이블
분야 명 |
데이터 유형 |
길이 |
기본 키 여부 |
설명하다 |
ID |
정수 |
11 |
예 |
자동 번호 매기기 |
ddTypeId |
정수 |
11 |
데이터 사전 클래스 |
|
dd값 |
varchar |
20 |
데이터 사전 값 |
|
ddDesc |
텍스트 |
주목 |
- . 데이터 사전 카테고리 테이블
분야 명 |
데이터 유형 |
길이 |
기본 키 여부 |
설명하다 |
ddTypeId |
정수 |
11 |
예 |
자동 번호 매기기 |
ddTypeName |
varchar |
20 |
데이터 사전 클래스 |
|
ddTypeDesc |
텍스트 |
주목 |
5. 시스템의 세부 설계 및 구현
5.1 시스템 설계 및 구현
5.1.1 로그인 인터페이스 구현
렌더링:
관련 지침:
사용자는 시스템 로그인 인터페이스에 들어가고 사용자 이름, 암호 및 확인 코드를 입력하고 입력이 정확하면 시스템의 기본 인터페이스에 들어갑니다.
키 코드 구현:
public User login(Connection con,User user)throws Exception{
User resultUser=null;
String sql="select * from t_user where userName=? and password=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassword());
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
resultUser=new User();
resultUser.setUserId(rs.getInt("userId"));
resultUser.setUserName(rs.getString("userName"));
resultUser.setPassword(rs.getString("password"));
}
return resultUser;
}
5.1.2 시스템 메인 인터페이스
관련 지침:
사용자는 올바른 사용자 이름, 비밀번호 및 확인 코드를 입력하고 로그인을 클릭하고 배경 확인에 성공한 다음 주로 학생 정보 관리, 수업 정보 관리, 성적 정보의 네 가지 기능을 포함하는 시스템의 기본 인터페이스에 들어갑니다. 관리 및 시스템 관리;
키 코드 구현:
공개 페이지 head.jsp
<div class="row-fluid">
<div class="span12">
<div class="head">
<div class="headLeft">
<img src="${pageContext.request.contextPath}/images/logo.png"/>
</div>
<div class="headRight">
欢迎管理员:<font color="red">${currentUser.userName }</font> <font id="today" class="currentDateTime"></font>
</div>
</div>
</div>
</div>
공개 페이지 menu.jsp
<div class="row-fluid">
<div class="span12">
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="main.jsp">首页</a>
<ul class="nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">学生信息管理 <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="student!preSave">学生信息添加</a></li>
<li><a href="student!list">学生信息维护</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">班级信息管理 <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="class!preSave">班级信息添加</a></li>
<li><a href="class!list">班级信息维护</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">年级信息管理 <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="grade!preSave">年级信息添加</a></li>
<li><a href="grade!list">年级信息维护</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">系统管理 <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="dataDic!list">数据字典维护</a></li>
<li><a href="dataDicType!list">数据字典类别维护</a></li>
<li><a href="user!preSave">修改密码</a></li>
<li class="divider"></li>
<li><a href="javascript:logOut()">退出系统</a></li>
</ul>
</li>
</ul>
공개 페이지 foot.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<div class="row-fluid" style="margin-top: 30px;">
<div class="span12">
<div class="foot">Copyright © 2013-2014 XXX 版权所有</div>
</div>
</div>
5.1.3 학생정보관리 구현
추가할 학생 정보:
학생 정보 수정:
학생 정보 보기:
학생 정보 삭제:
관련 지침:
학생 정보 유지 모듈은 위의 기능을 포함합니다: 학생 정보 표시, 학생 정보 조회, 학생 정보 추가, 수정, 삭제;
키 코드 구현:
학생 정보 문의:
public List<Student> studentList(Connection con,Student s_student,PageBean pageBean)throws Exception{
List<Student> studentList=new ArrayList<Student>();
...此处省略sql拼接代码
if(pageBean!=null){
sb.append(" limit "+pageBean.getStart()+","+pageBean.getPageSize());
}
System.out.println(sb.toString());
PreparedStatement pstmt=con.prepareStatement(sb.toString());
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
Student student=new Student();
student.setStudentId(rs.getString("studentId"));
student.setStuNo(rs.getString("stuNo"));
student.setStuName(rs.getString("stuName"));
student.setStuSex(rs.getString("stuSex"));
student.setStuBirthday(DateUtil.formatString(rs.getString("stuBirthday"),"yyyy-MM-dd"));
student.setStuRxsj(DateUtil.formatString(rs.getString("stuRxsj"),"yyyy-MM-dd"));
student.setStuNation(rs.getString("stuNation"));
student.setStuZzmm(rs.getString("stuZzmm"));
student.setClassId(rs.getInt("classId"));
student.setClassName(rs.getString("className"));
student.setStuDesc(rs.getString("stuDesc"));
student.setStuPic(rs.getString("stuPic"));
student.setGradeId(rs.getInt("gradeId"));
student.setGradeName(rs.getString("gradeName"));
studentList.add(student);
}
return studentList;
}
추가할 학생 정보:
public int studentAdd(Connection con,Student student)throws Exception{
String sql="insert into t_student values(?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, UUIDUtil.getUUID());
pstmt.setString(2, student.getStuNo());
pstmt.setString(3, student.getStuName());
pstmt.setString(4, student.getStuSex());
pstmt.setString(5, DateUtil.formatDate(student.getStuBirthday(), "yyyy-MM-dd"));
pstmt.setString(6, DateUtil.formatDate(student.getStuRxsj(), "yyyy-MM-dd"));
pstmt.setString(7, student.getStuNation());
pstmt.setString(8, student.getStuZzmm());
pstmt.setInt(9, student.getClassId());
pstmt.setString(10, student.getStuDesc());
pstmt.setString(11, student.getStuPic());
return pstmt.executeUpdate();
}
학생 정보 수정:
public int studentUpdate(Connection con,Student student)throws Exception{
String sql="update t_student set stuNo=?,stuName=?,stuSex=?,stuBirthday=?,stuRxsj=?,stuNation=?,stuZzmm=?,classId=?,stuDesc=?,stuPic=? where studentId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, student.getStuNo());
pstmt.setString(2, student.getStuName());
pstmt.setString(3, student.getStuSex());
pstmt.setString(4, DateUtil.formatDate(student.getStuBirthday(), "yyyy-MM-dd"));
pstmt.setString(5, DateUtil.formatDate(student.getStuRxsj(), "yyyy-MM-dd"));
pstmt.setString(6, student.getStuNation());
pstmt.setString(7, student.getStuZzmm());
pstmt.setInt(8, student.getClassId());
pstmt.setString(9, student.getStuDesc());
pstmt.setString(10, student.getStuPic());
pstmt.setString(11, student.getStudentId());
return pstmt.executeUpdate();
}
학생 정보 삭제:
public int studentDelete(Connection con,String studentId)throws Exception{
String sql="delete from t_student where studentId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, studentId);
return pstmt.executeUpdate();
}
학생 정보 보기:
public Student getStudentById(Connection con,String studentId)throws Exception{
String sql="select * from t_student t1,t_class t2,t_grade t3 where t1.classId=t2.classId and t2.gradeId=t3.gradeId and t1.studentId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, studentId);
ResultSet rs=pstmt.executeQuery();
Student student=null;
while(rs.next()){
student=new Student();
student.setStudentId(rs.getString("studentId"));
student.setStuNo(rs.getString("stuNo"));
student.setStuName(rs.getString("stuName"));
student.setStuSex(rs.getString("stuSex"));
student.setStuBirthday(DateUtil.formatString(rs.getString("stuBirthday"),"yyyy-MM-dd"));
student.setStuRxsj(DateUtil.formatString(rs.getString("stuRxsj"),"yyyy-MM-dd"));
student.setStuNation(rs.getString("stuNation"));
student.setStuZzmm(rs.getString("stuZzmm"));
student.setClassId(rs.getInt("classId"));
student.setClassName(rs.getString("className"));
student.setStuDesc(rs.getString("stuDesc"));
student.setStuPic(rs.getString("stuPic"));
student.setGradeId(rs.getInt("gradeId"));
student.setGradeName(rs.getString("gradeName"));
}
return student;
}
5.1.4 클래스 정보 관리
렌더링:
클래스 정보 쿼리:
추가된 클래스 정보:
클래스 정보 수정:
클래스 정보 삭제:
관련 지침:
클래스 정보 관리 모듈은 클래스 정보 조회, 클래스 정보 추가, 수정, 삭제 기능을 포함합니다.
키 코드 구현:
클래스 정보 쿼리:
public List<Class> classList(Connection con,Class s_class)throws Exception{
List<Class> classList=new ArrayList<Class>();
StringBuffer sb=new StringBuffer("select * from t_class t1,t_grade t2 where t1.gradeId=t2.gradeId");
if(s_class!=null && s_class.getGradeId()!=-1){
sb.append(" and t1.gradeId="+s_class.getGradeId());
}
PreparedStatement pstmt=con.prepareStatement(sb.toString());
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
Class c=new Class();
c.setClassId(rs.getInt("classId"));
c.setClassName(rs.getString("className"));
c.setGradeId(rs.getInt("gradeId"));
c.setGradeName(rs.getString("gradeName"));
c.setClassDesc(rs.getString("classDesc"));
classList.add(c);
}
return classList;
}
추가된 클래스 정보:
public int classAdd(Connection con,Class c)throws Exception{
String sql="insert into t_class values(null,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, c.getClassName());
pstmt.setInt(2, c.getGradeId());
pstmt.setString(3, c.getClassDesc());
return pstmt.executeUpdate();
}
클래스 정보 수정:
public int classUpdate(Connection con,Class c)throws Exception{
String sql="update t_class set className=?,gradeId=?,classDesc=? where classId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, c.getClassName());
pstmt.setInt(2, c.getGradeId());
pstmt.setString(3, c.getClassDesc());
pstmt.setInt(4, c.getClassId());
return pstmt.executeUpdate();
}
클래스 정보 삭제:
public int classDelete(Connection con,String Id)throws Exception{
String sql="delete from t_class where classId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1,Id);
return pstmt.executeUpdate();
}
5.1.5 성적정보 관리
렌더링:
등급 정보 문의:
추가된 등급 정보:
성적 정보 수정:
성적 정보 삭제:
관련 지침:
등급 정보 관리 모듈은 다음과 같은 기능을 포함합니다: 등급 정보 조회, 등급 정보 추가, 수정, 삭제;
키 코드 구현:
등급 정보 문의:
public List<Grade> gradeList(Connection con)throws Exception{
List<Grade> gradeList=new ArrayList<Grade>();
String sql="select * from t_grade";
PreparedStatement pstmt=con.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
Grade grade=new Grade();
grade.setGradeId(rs.getInt("gradeId"));
grade.setGradeName(rs.getString("gradeName"));
grade.setGradeDesc(rs.getString("gradeDesc"));
gradeList.add(grade);
}
return gradeList;
}
추가된 등급 정보:
public int gradeAdd(Connection con,Grade grade)throws Exception{
String sql="insert into t_grade values(null,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, grade.getGradeName());
pstmt.setString(2, grade.getGradeDesc());
return pstmt.executeUpdate();
}
성적 정보 수정:
public int gradeUpdate(Connection con,Grade grade)throws Exception{
String sql="update t_grade set gradeName=?,gradeDesc=? where gradeId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, grade.getGradeName());
pstmt.setString(2, grade.getGradeDesc());
pstmt.setInt(3, grade.getGradeId());
return pstmt.executeUpdate();
}
성적 정보 삭제:
public int gradeDelete(Connection con,String gradeId)throws Exception{
String sql="delete from t_grade where gradeId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1,gradeId);
return pstmt.executeUpdate();
}
5.1.6 데이터 사전 카테고리 관리
데이터 사전 클래스를 추가합니다.
관련 지침:
데이터 사전 범주 정보 관리 모듈은 다음 기능을 포함합니다: 데이터 사전 범주 조회, 데이터 사전 범주 추가, 수정, 삭제;
키 코드 구현:
데이터 사전 범주 정보 쿼리:
public List<DataDicType> dataDicTypeList(Connection con)throws Exception{
List<DataDicType> dataDicTypeList=new ArrayList<DataDicType>();
String sql="select * from t_dataDicType";
PreparedStatement pstmt=con.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
DataDicType dataDicType=new DataDicType();
dataDicType.setDdTypeId(rs.getInt("ddTypeId"));
dataDicType.setDdTypeName(rs.getString("ddTypeName"));
dataDicType.setDdTypeDesc(rs.getString("ddTypeDesc"));
dataDicTypeList.add(dataDicType);
}
return dataDicTypeList;
}
추가된 데이터 사전 범주 정보:
public int dataDicTypeAdd(Connection con,DataDicType dataDicType)throws Exception{
String sql="insert into t_dataDicType values(null,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, dataDicType.getDdTypeName());
pstmt.setString(2, dataDicType.getDdTypeDesc());
return pstmt.executeUpdate();
}
5.1.8 시스템 관련 설정
기능 설명:
사용자는 원래 암호, 새 암호를 입력하고 새 암호를 확인합니다. 이 모든 것이 필요하며 원래 암호는 정확해야 하며 새 암호와 확인된 새 암호가 일치해야 합니다. 그렇지 않으면 오류 메시지가 표시됩니다. ;
키 코드:
public int modifyPassword(Connection con,User user)throws Exception{
String sql="update t_user set password=? where userId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, user.getPassword());
pstmt.setInt(2, user.getUserId());
return pstmt.executeUpdate();
}