プロジェクトの背景
学生情報ファイルの管理は、学校の管理者にとって非常に重要です。学生情報は、大学にとって非常に重要なデータリソースであり、教育ユニットの不可欠な部分です。特に近年、国の政策の調整と私の国の大学への入学の大規模な拡大は、大学の教育管理、学生管理、ロジスティクス管理および他の側面に大きな影響を与えました。大量のデータが含まれ、幅広い人員が関与し、時間内に更新する必要があるため、手動管理だけに頼るのはより複雑で困難です。さらに、従来の手動管理方法は、標準化も容易でもありません。効率的です。まだ紙のメディアに基づいた大学の学生ファイル管理はかなりの数あります。特に、小中学校の学生ファイルの管理はさらに遅れており、そのような管理メカニズムはもはや要件を満たすことができません。時代の発展とその管理方法は無駄になります多くの人的および物的資源。科学技術の継続的な進歩に伴い、コンピュータ科学技術はますます成熟し、コンピュータアプリケーションの普及は人間の社会生活のあらゆる分野に参入し、ますます重要な役割を果たしてきました。この従来の手動管理モードは、コンピュータベースの情報管理方法に置き換えられるはずです。
機能設計
主な機能:さまざまな役割(教師、学生、管理者)でのユーザーログイン
システムホームページの紹介
学生管理:学生の追加、学生リスト情報の表示、学生情報の表示
教師の管理:教師の追加、教師リスト情報の表示、教師情報の表示
成績管理:成績情報の表示、成績の変更
パーソナルセンター:個人情報やアバターなどを変更し、ログアウトする
役割の概念
管理者、教師、学生の3つの役割があり、各役割は異なるメニュー権限に対応しています
主なテクニック
使用されるテクノロジーは、比較的基本的で、習得が容易で、理解しやすいJava jsp + mysql + servlet + jdbc + jquery + html+cssなどです。
特定の機能の実現
ログイン:
さまざまなアカウントの役割に従ってログインします
表紙:
ホームページは主にcssやその他のシンプルなレイアウトを使用しており、左側はメニューバー、中央はシステムの紹介、右上隅はパーソナルセンター、アカウント情報、およびログアウトです。
学生管理:
生徒を追加する
学生リスト:
管理者には編集と削除の権限があり、教師には編集権限があります。学生は情報のみを表示できます。
教師の管理:
教師情報を追加する
教師リスト情報を表示する:
グレード管理:
学生の成績情報を表示する
パーソナルセンター:
パーソナルセンターはランダムにアラートポップアップウィンドウを作成しました
コード実装の一部:
フロントエンドにログインします。
<%@ page language = "java" import="java.util。*"pageEncoding= "UTF-8"%> <!DOCTYPE HTML PUBLIC "-// W3C // DTD HTML 4.01 Transitional // EN"> <html > <head> <title>学生信息管理システム</title> <script src = "js / jquery-1.8.3.min.js" type = "text / javascript"> </ script> <script src = "js /login.js "type =" text / javascript "> </ script> <link href =" css / style.css "rel =" stylesheet "type =" text / css "> </ head> <body> <center > <div class = "login"> <div class ="login_head"> <h3>登录</h3> </ div> <div class = "login_window"> <div> </ div> <div> <label>账号:</ label> <br> <input type = "text" name = "ope_name" id = "ope_name"> <label>密码:</ label> <br> <input type = "password" name = "ope_pwd" id = "ope_pwd"> </ div> <input style = "width:60px; float:right; margin-top :10px; margin-right:20px; " type = "button" value ="登录"οnclick="login()"> </ div> </ div> </ center> </ body> </ html>
ログインバックグラウンドサーブレット:
パッケージimpl; インポートjava.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; インポートjava.util.List; インポートjavax.servlet.http.HttpServletRequest; インポートjavax.servlet.http.HttpSession; util.DBをインポートします。 dao.ILoginをインポートします。 インポートエンティティ。オペレーター; インポートentity.Privilege; パブリッククラスLoginImplはILoginを実装します{ プライベートPrivilegeImpl1privilegeImpl= new PrivilegeImpl1(); private RoleImpl roleImpl = new RoleImpl(); プライベートリスト<特権>list_privilege; プライベートPreparedStatementpst; プライベートオペレーターlog_operator; プライベートHttpSessionセッション。 プライベート文字列checkResult; プライベート接続接続; プライベートResultSetrs; //登录验证publicStringlogin (HttpServletRequest request、Operator operator){ session = request.getSession(); checkResult = "success"; log_operator = new Operator(); { conn = DB.getConn();を試してください。 pst = conn .prepareStatement( "SELECT*FROM演算子WHEREope_name=?"); pst.setString(1、operator.getName()); rs = pst.executeQuery(); if(!rs.next()){ checkResult = "账户不存在、请重新輸入入!"; session.setAttribute( "isLogin"、 "false"); } そうしないと { if(!operator.getPwd()。equals(rs.getString(3))){ checkResult = "入力したパスワードが正しくありません。再入力してください!"; session.setAttribute( "isLogin"、 "false"); } else { //ログインに成功しました session.setAttribute( "isLogin"、 "true"); // ユーザーの完全な情報を取得します log_operator.setId(rs.getInt(1)); log_operator.setName(rs.getString(2)); log_operator.setPwd(rs.getString(3)); log_operator.setRole(roleImpl .query( "rol_id"、 rs.getString(4))。get(0)); session.setAttribute( "log_operator"、log_operator); //ユーザーに応じて、対応する + ""); List <Privilege> list = new ArrayList <Privilege>(); list_privilege = privacyImpl.query( "rol_id"、log_operator .getRole()。getId() } list.add(list_privilege.get(0)); for(int i = 1; i <list_privilege.size(); i ++){ int y = 0; for(int x = 0; x <list.size(); x ++){ if(!list.get(x).getMenu_name()。equals( list_privilege.get(i).getMenu_name())){ y ++; } } if(y == list.size()){ list.add(list_privilege.get(i)); } } session.setAttribute( "list"、list); session.setAttribute( "list_privilege"、list_privilege); } } catch(例外e){ e.printStackTrace(); }最後に{ DB.close(conn、pst、rs); } return checkResult; } }
リンクデータベース:
最も基本的なjdbcとのリンク
パッケージutil; インポートjava.sql.Connection; インポートjava.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public classDB{ //获取数データベース 库pol接publicstaticConnection getConn(){ Connection conn = null; String url = "jdbc:mysql:// localhost:3306 / jsp_studentmanager?characterEncoding = utf8"; 文字列名="ルート"; 文字列pwd="123456"; { Class.forName( "com.mysql.jdbc.Driver");を試してください。 conn = DriverManager.getConnection(url、name、pwd); } catch(例外e){ e.printStackTrace(); } return conn; public static void close(Connection conn、PreparedStatement pst、 ResultSet rs){ try { if(rs!= null) rs.close(); if(pst!= null) pst.close(); if(conn!= null) conn.close(); } catch(例外e){ e.printStackTrace(); } } }
テーブル構造の一部:
学生用テーブル:
CREATE TABLE `NewTable`( ` stu_id` int(11)NOT NULL AUTO_INCREMENT、 `ope_id` int(11)NULL DEFAULT NULL、 ` stu_no` varchar(22)CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL、 `stu_name` varchar(22 )CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL、 `stu_sex` enum('男'、'女')CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT'男'、 ` stu_birth` date NULL DEFAULT NULL、 `stu_pic` var SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL、 `cla_id` int(11)NULL DEFAULT NULL、 PRIMARY KEY(` stu_id`)、 FOREIGN KEY( `cla_id`)REFERENCES` classes`( `cla_id`)ON DELETE CASCADE ON UPDATE CASCADE、 FOREIGN KEY( `ope_id`)REFERENCES` operator`( `ope_id`)ON DELETE CASCADE ON UPDATE CASCADE、 UNIQUE INDEX `uni_no`(` stu_no`)USING BTREE、 UNIQUE INDEX `uni_ope`(` ope_id`)USING BTREE、 INDEX `fk_stu_cla`(` cla_id`)USING BTREE、 INDEX ` fk_stu_ope`( `ope_id`)USING BTREE ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci AUTO_INCREMENT = 13 ROW_FORMAT = COMPACT ; CREATE DEFINER = `root` @` localhost` TRIGGER `TG_3` AFTER DELETE ON` NewTable` FOR EACH ROW BEGIN DELETE FROM operator WHERE ope_id = old.ope_id; 終わり;
得点表:
CREATE TABLE `NewTable`( ` sco_id` int(11)NOT NULL AUTO_INCREMENT、 `sco_daily` float NULL DEFAULT 0、 ` sco_exam` float NULL DEFAULT 0、 `sco_count` float NULL DEFAULT 0、 ` stu_id` int(11)NULL DEFAULT NULL、 `sub_id` int(11)NULL DEFAULT NULL、 ` cla2sub_id` int(11)NOT NULL、 `cla_id` int(11)NOT NULL、 PRIMARY KEY(` sco_id`)、 FOREIGN KEY( `stu_id`)REFERENCES` student`( `stu_id`)ON DELETE CASCADE ON UPDATE CASCADE、 FOREIGN KEY(` sub_id`)REFERENCES `subject`(` sub_id`)ON DELETE CASCADE ON UPDATE CASCADE、 FOREIGN KEY( `cla2sub_id`)REFERENCES` cla2sub`( ` cla2sub_id`)ON DELETE CASCADE ON UPDATE CASCADE、 FOREIGN KEY( `cla_id`)REFERENCES` classes`( ` cla_id`)ON DELETE CASCADE ON UPDATE CASCADE、 UNIQUE INDEX` uni_stu_sub`( `stu_id`、` sub_id`、 `cla2sub_id`)USING BTREE、 INDEX` fk_sco_sub`( ` sub_id`)USING BTREE、 INDEX `fk_sco_stu`(` stu_id`)USING BTREE、 INDEX `fk_sco_cla`(` cla2sub_id`)USING BTREE、 INDEX `cla_id`(` cla_id`)USING BTREE ) ENGINE = InnoDB DEFAULT CHAR COLLATE = utf8_general_ci AUTO_INCREMENT = 33 ROW_FORMAT = COMPACT ;
時間割:
CREATE TABLE `NewTable`( ` cla_id` int(11)NOT NULL AUTO_INCREMENT、 `cla_name` varchar(22)CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL、 ` maj_id` int(11)NULL DEFAULT NULL、 `cla_tec` varchar(22 ) )CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL、 PRIMARY KEY( `cla_id`)、 FOREIGN KEY(` maj_id`)REFERENCES `major`(` maj_id`)ON DELETE CASCADE ON UPDATE CASCADE、 UNIQUE INDEX `uni_name`(` cla_ )USING BTREE、 INDEX `fk_cla_maj`(` maj_id`)USING BTREE ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci AUTO_INCREMENT = 8 ROW_FORMAT = COMPACT ; CREATE DEFINER = `root` @` localhost` TRIGGER `TG_7` BEFORE DELETE ON` NewTable` FOR EACH ROW BEGIN DELETE FROM operator WHERE ope_id IN(SELECT ope_id FROM student WHERE cla_id = old.cla_id); 終わり;