目次
1.はじめに
学生情報管理システムは、教育単位の不可欠な部分です。完全に機能し、使いやすい情報管理システムは、関連する学校スタッフの作業負荷を効果的に削減できるだけでなく、その内容は学校の意思決定者や管理者にとって非常に重要です。したがって、学生情報管理システムは、十分な情報と高速なクエリ手段をユーザーに提供できる必要があります。しかし、従来の手動によるファイル アーカイブ、統計、およびクエリ データの管理は常に行われており、この管理方法には、効率が低い、機密性が低い、労力の無駄が多いなどの欠点があります。ファイルは時間の経過とともに生成され、データは検索、更新、および保守に多くの困難をもたらします。科学と技術の絶え間ない進歩に伴い、コンピューターサイエンスはますます成熟し、その強力な機能は人々に深く認識され、人間社会のさまざまな分野に入り込み、ますます重要な役割を果たしています。
コンピュータアプリケーションの一部として、コンピュータを使用してあらゆる種類の学校情報を管理することは、手動管理とは比較にならない利点があります.たとえば、高速検索、便利なクエリ、高効率、優れた信頼性、大容量ストレージ、優れた機密性、長寿命などです。長くて低コスト。これらの利点は、学校の情報管理の効率を大幅に向上させることができ、単位が科学的かつ形式的に管理され、世界と一致するための重要な条件でもあります。
2. 主な技術
技術名称 |
効果 |
---|---|
Java + Struts2 | バックエンド フレームワーク |
JSP | フロントエンド フレームワーク |
MySQL | データベース |
3. システムの基本的な機能要件
システムにはシステム管理者という一種の権限があり、次にこの権限の機能構成について説明します。
3.1 システム構成
主な機能は次のとおりです。
システム管理者:学生情報管理、授業情報管理、成績情報管理、システム管理(データ辞書管理、データ辞書カテゴリ管理、パスワード変更含む)
システム業務フロー図:
3.2 データベース要件の分析
上記業務フローの内容によると、データベースに設計するテーブルは、生徒テーブル、クラステーブル、学年テーブル、データ辞書カテゴリテーブル、データ辞書テーブル、管理テーブルです。
3.3 システムの目的
このトピック選択システムの設計は、主に次の目標を達成します。
- 人間化された設計: システム インターフェイスは友好的で、操作は簡単です;
・学生情報、授業情報、成績情報の管理を実現する。
4. データベーステーブルの設計
(1). 管理者情報フォーム
フィールド名 |
データの種類 |
長さ |
主キーかどうか |
説明 |
ユーザーID |
整数 |
はい |
自動採番 |
|
ユーザー名 |
varchar |
20 |
ユーザー名 |
|
パスワード |
varchar |
20 |
パスワード |
(2). 生徒用テーブル
フィールド名 |
データの種類 |
長さ |
主キーかどうか |
説明 |
学生証 |
varchar |
40 |
はい |
UUID |
スタ番号 |
varchar |
20 |
学生証 |
|
学名 |
varchar |
20 |
学生の名前 |
|
スタセックス |
varchar |
10 |
学生の性別 |
|
学生の誕生日 |
日にち |
生年月日 |
||
stuRxsj |
日にち |
入場時間 |
||
ステーション |
varchar |
20 |
国籍 |
|
スタズム |
varchar |
20 |
政治的地位 |
|
クラスID |
整数 |
11 |
クラス番号 |
|
stuDesc |
文章 |
述べる |
||
スタピック |
varchar |
20 |
学生写真 |
- . クラス表
フィールド名 |
データの種類 |
長さ |
主キーかどうか |
説明 |
クラスID |
整数 |
11 |
はい |
自動採番 |
クラス名 |
varchar |
20 |
クラス名 |
|
グレードID |
整数 |
11 |
等級外部キー |
|
classDesc |
文章 |
クラスの説明 |
- . グレード表
フィールド名 |
データの種類 |
長さ |
主キーかどうか |
説明 |
グレードID |
整数 |
11 |
はい |
自動採番 |
学年名 |
ヴァルチャー |
20 |
グレード名 |
|
gradeDesc |
文章 |
成績ノート |
- . データディクショナリテーブル
フィールド名 |
データの種類 |
長さ |
主キーかどうか |
説明 |
ID |
整数 |
11 |
はい |
自動採番 |
ddTypeId |
整数 |
11 |
データ ディクショナリ クラス |
|
ddValue |
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 システムメインインターフェース
関連する指示:
ユーザーは正しいユーザー名、パスワード、認証コードを入力し、クリックしてログインし、バックグラウンド認証が成功すると、主に学生情報管理、クラス情報管理、成績情報の 4 つの機能を含むシステムのメイン インターフェイスに入ります。管理、およびシステム管理。
キーコードの実装:
公開ページ 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();
}