1920 年代以来、コンピューターは人々の生活や仕事に急速に登場し、人々の生活や仕事の良き助けとなりました。コンピューターは各家庭に浸透しました。オンライン オフィスとオンライン教育が従来の手作業による記録管理方法に取って代わりました。コンピューターを使って仕事をするようになりました。決まった時間や場所に縛られる必要がなく、コンピュータシステムを介して地域を越えたコミュニケーションも容易に実現できます。高等教育の普及に伴い、学生数は増加を続けていますが、最近では疫病の影響により、学生情報の従来のクエリと管理はますます不便になり、手動クエリ管理も作業効率を低下させ、学生情報の増加をもたらしています。教員数や学校の業務量の多さから、生徒からの問い合わせが不便であることから、生徒情報管理システムを開発しました。
このシステムは、実用化を背景に開発されており、システム管理者を通じて、全生徒、教職員等の一元管理と一部の生徒管理、課題課題、課題完了、チェックイン、教員の管理を行うことができます。学生の通信および学生に関連するその他のデータ情報。データの保持を容易にするため。教師と生徒はシステムに登録してログインし、割り当てられたタスク、完了したタスク、チェックイン、教師と生徒間のコミュニケーションなどの情報を照会および管理できます。一般に、システムのフロントエンドは Java ページを通じて表示され、バックエンドは SSM フレームワークを使用し、データベースは現在普及しているオープン ソース リレーショナル データベース MYSQL を使用します。このシステムでは、フロントエンド技術に現在人気のvue.jsを採用し、ページ表示をよりすっきりと美しくしています。
キーワード:学生情報管理、Java、SSM、MYSQL
1920 年代以来、コンピューターは人々の生活や仕事に急速に登場し、人々の生活や仕事の良き助け手となりました。コンピュータはあらゆる家庭に浸透しました。ネットワーク オフィスとネットワーク ティーチングは、従来の手作業による記録管理に取って代わりました。コンピュータを利用した仕事は、時間や場所にとらわれることなく、コンピュータシステムを通じて地域を超えたコミュニケーションを容易に実現できます。高等教育の普及に伴い、学生数も増加しています。最近、疫病の影響により、生徒情報の従来のクエリ管理はますます不便になり、手動クエリ管理も作業効率を低下させ、教師や学校の負担が増加し、生徒にとって不便です。クエリ。したがって、
このシステムは実用化を開発の背景としています。システム管理者を通じて、すべての生徒、教師、その他の職員、および生徒の管理、課題の割り当て、課題の完了、出勤とサインイン、教師と生徒のコミュニケーションなどの生徒に関連する一部のデータ情報を均一に管理して、データの保持。教師と生徒はシステムに登録してログインし、タスクの割り当て、タスクの完了、出勤、教師と生徒間のコミュニケーションに関する情報を照会および管理できます。一般に、システムのフォアグラウンドは Java ページを通じて表示され、バックグラウンドは SSM フレームワークを使用し、データベースは一般的なオープンソースのリレーショナル データベース MYSQL を使用します。このシステムは現在人気のある vue を使用します。
キーワード:学生情報管理。Java; SSM; MYSQL
現在、21世紀に入って急速な経済発展に伴い、企業ERPソフト、家計管理ソフト、教育学生状況管理ソフトなど、さまざまなオフィス補助ソフトが各業界で普及し、ユーザーから高い評価を得ています。教育向け キャリアに関する限り、ほとんどの学校は、学生ステータス システムや試験システムなど、学生と教師がオンライン学習と管理を行うための多くの Web 管理システムを開発しています。これらのシステムを通じて、学生とその関連システムのデータ メンテナンスが行われます。情報管理とその教育における現在の応用は、政治、経済、文化、その他の分野に関係しています。
一般的に現在の教育は、一人の教師が生徒たちに対峙するという伝統的な指導形態ではなく、さまざまな補助的な指導形態による多様な指導が本来の主流となってきています。コンピューター ネットワークが教育と組み合わされた後の変化は、インターネットの形でのオンライン教育の多くの利点によって決定されるからです。このトピックで研究する学生情報管理システムは、主にコンピュータ ネットワーク技術に基づいています.学生情報管理の観点から、さまざまな機能が設計および実装されています.実装されたシステムは、管理者、教師、学生の 3 つの部分から構成されます.主に 3 つの機能で構成されます: 教務管理者サブシステム、教師サブシステム、生徒サブシステム 生徒管理、教師管理、課題管理、課題完了管理、チェックイン管理、教師と生徒のコミュニケーション管理などの機能を実現します。
学生情報管理システムは学校のビジネス発展の重要な部分であり、ますます多くの学校で評価されています。ほとんどの学校にとって、学生情報管理システムは、学生関連情報のクエリと管理を改善するのに役立ちますが、他方で、学生はオンラインでコース、コース選択、および結果を確認できるため、より多くの学生を惹きつけることができます。管理プロセスにおける選択肢と完全に透明なプロセスにより、ユーザーの認知度が高まり、ユーザーの定着率が高まります。学生情報管理システムを利用することで、学生が各教職員室に問い合わせをすることなく、システム上で学生に関する情報の照会が完了するため、自宅にいながらにして学生情報の照会が可能となります。
本稿では、SSMをベースとした学校向け生徒情報管理システムを設計し、ユーザーニーズ中心の考え方に基づき、ユーザーニーズに全方位的かつ高品質かつ効率的に応えることを目標に、学校向けの生徒情報管理システムを提供していきます。より強力な生徒情報管理システムを備えた学校。学生情報管理システムの重要な技術面にコンピュータ情報技術を導入することにより、学生情報管理の効率化と管理者の負担軽減が図れるだけでなく、学生の課題確認や教員と学生の交流、確認作業などが容易になります。これは学校の将来にとって非常に重要であり、開発と改善の影響は広範囲に及びます。学校管理者はあらゆる情報をオンラインで管理でき、内部構造の合理化の度合いが学校管理者の最終判断に直結するため、学生情報管理システムには十分な情報と迅速かつ便利な管理方法が必要です。
この文書は階層的に構成されており、要約、目次、謝辞、参考文献のセクションに加えて、本文では Web サイトの要件を分析し、一般的な設計と実装された機能について詳しく説明し、最後にいくつかの試運転記録をリストします。主に論文のアーキテクチャは次のとおりです。
第 1 章では、プロジェクトの背景と開発の実質的な意義について説明します。
第 2 章では、このシステムの実現可能性と機能要件を分析します。
第 3 章では、プロジェクトの全体的な設計について説明します。
第 4 章では、主に技術的な機能モジュールの機能に基づいて、学生情報管理システムの詳細な機能の実装を明らかにします。
第 5 章では、システムのデバッグとテストの記録をいくつか示します。
学生情報管理システムは、ストレージとして mysql データベースを使用し、開発には IDEA や Tomcat などの開発ツールを使用しており、執筆作業に大きな利便性をもたらします。このシステムは SSM フレームワークを使用して開発されているため、システムの拡張性と保守性が向上し、Java 構成コードが削減され、プログラミング コードが簡素化され、現在、SSM フレームワークは多くの企業に選ばれているフレームワークの 1 つとなっています。
学生情報管理システムの開発に使用されるIDEA開発ツール、Tomcat8.0サーバー、MySQL5.7データベース、画像処理ソフトPhotoshopなどの開発ソフトウェアはすべてオープンソースかつ無償であり、これらの環境は体系的に検討されています。内学校
このプロジェクトを設計する際、私は同様のシステムの多くの成功事例を参考にし、その操作インターフェースと機能を体系的に分析し、多くの事例を組み合わせて人間中心の操作と簡素化された操作を強調し、コンピューターの基本的な知識を持つ人がこのプロジェクトを操作できるようにしました。したがって、運用可能性に問題はない。
学生情報管理システムの設計と実装は、学校ユーザーが学生に関連する一部の情報をより便利に管理できるようにすることを目的としており、ユーザーは検索と管理にかかる時間とエネルギーを大幅に節約し、不必要な検索時間を効果的に削減できます。システムは機能的に、生徒側、教師側、管理者側の 3 つの部分に分かれています。
学生側:
(1) 登録とログイン: 学生がシステムに実装されている機能を照会および管理したい場合は、システムにログインする必要があります。アカウントを持っていない場合は、ログイン インターフェースで「登録」ボタンをクリックしてジャンプします。登録インターフェイスで、プロンプトに従って登録情報を入力し、追加して送信すると、学生の情報がデータベースに追加され、入力したアカウント番号とパスワードを入力してログインします。
(2) 個人情報: ログイン後、学生は自分の個人情報とアカウントログイン用のパスワードを変更できます。
(3) 学生情報: 「学生管理」ボタンをクリックすると、システム内のすべての学生情報が表示されます。学生番号、学生名、クラス名による学生情報の照会をサポートします。学生の詳細な情報を知りたい場合は、特定の学生をクリックして、その後の「表示」をクリックすると、詳細インターフェイスが表示されます。
(4) 課題情報: 「課題情報」メニューをクリックすると、自分の課題情報が表示されます。学生番号による課題情報の照会がサポートされています。課題の詳細を知りたい場合は、「詳細」をクリックすると、課題情報が表示されます。詳細インターフェイス。
(5) タスクを完了する: 「タスク情報を完了する」ボタンをクリックすると、完了したタスク情報がすべて表示されます。クラス名または生徒名による完了したタスク情報のクエリがサポートされています。
(6) チェックイン:「パンチイン」ボタンをクリックすると、あなたが提出したすべてのチェックイン情報が表示され、学生名、クラス名、学生番号などでチェックイン情報を確認できます。新しいチェックイン情報を追加する場合は、「追加」ボタンをクリックし、画面の指示に従ってチェックイン情報を入力し、「送信」をクリックすると、新しく追加された学生チェックイン情報が学生チェックイン画面に表示されます。特定のチェックイン情報をクリックして、チェックイン情報の詳細を表示できます。
(7) 教師と生徒のコミュニケーション: 「教師と生徒のコミュニケーション」メニューをクリックすると、システム内でクエリされたすべての教師と生徒のコミュニケーション情報が表示されます。タイトルによる教師と生徒のコミュニケーション情報のクエリをサポートします。教師と生徒のコミュニケーション 詳細については、背面の「詳細」をクリックして詳細インターフェースに入ります。
先生側:
(1) 登録とログイン: 教師がシステムに実装されている機能を照会および管理したい場合、システムにログインする必要があります。アカウントをお持ちでない場合は、ログイン インターフェースで「登録」ボタンをクリックしてジャンプします。登録インターフェイスで、プロンプトに従って登録情報を入力し、追加して送信すると、教師の情報がデータベースに追加され、入力したアカウント番号とパスワードを入力してログインします。
(2) 個人情報: ログイン後、教師は自分の個人情報とアカウント ログインのパスワードを変更できます。
(3) 学生情報: 「学生管理」ボタンをクリックすると、システム内のすべての学生情報が表示されます。学生番号、学生名、クラス名による学生情報の照会をサポートします。学生の詳細な情報を知りたい場合は、特定の学生をクリックして、その後の「表示」をクリックすると、詳細インターフェイスが表示されます。
(4) 課題情報: 「課題情報」メニューをクリックすると、自分の課題情報が表示されます。学生番号による課題情報の照会がサポートされています。課題の詳細を知りたい場合は、「詳細」をクリックすると、課題情報が表示されます。詳細インターフェイス。
(5) パンチインとサインイン情報: [パンチインとサインイン情報] ボタンをクリックすると、打刻するために選択したサインイン情報が表示されます。打刻とサインインを照会できます。クラス名または学生名による情報。特定のサインインの詳細を知りたい場合は、「表示」をクリックすると、詳細インターフェイスが表示されます。
(6) 教師と生徒のコミュニケーション: 「教師と生徒のコミュニケーション」ボタンをクリックすると、クエリした教師と生徒のコミュニケーション情報が表示されます。クラス名または生徒名によるコミュニケーション情報のクエリをサポートし、クエリしたコミュニケーション情報を削除することもできます。
管理者側:
(1) 個人情報: ログイン後、管理者は自分の個人情報とアカウント ログインのパスワードを変更できます。
(2) ユーザー管理: 管理者は、管理者、学生、教師を含むシステム内のすべてのユーザーの役割を管理および制御できます。新しいユーザーを追加する必要がある場合は、ページ上の「追加」ボタンをクリックし、プロンプトに従って入力します。ユーザー情報に移動し、[送信] をクリックすると、対応するユーザー インターフェイスに情報が表示されます。ユーザーの後ろにある [削除] ボタンをクリックすると、ユーザーを直接削除できます。
(3) 学生管理: 「学生管理」ボタンをクリックすると、システム内のすべての学生情報が表示されます。学生名、クラス名、または学生番号による学生情報のクエリがサポートされています。新しい学生情報を追加したい場合は、「追加」をクリックしてください。 「」ボタンを押し、画面の指示に従って学生情報を入力してください。「送信」をクリックすると、学生情報画面に新たに追加された学生情報が表示されます。学生情報をクリックすると、学生情報の詳細が表示されます。または、「削除」を直接クリックして生徒の情報を削除することもできます。
(4) タスクの割り当て: 「タスクの割り当て」ボタンをクリックすると、割り当てられたすべてのタスク情報が表示されます。クラス名または生徒名による割り当てられたタスク情報のクエリをサポートします。特定のタスクの詳細を知りたい場合は、「表示」をクリックすると、タスクの詳細が表示されます。詳細インターフェイスに入ります。
(5) タスクを完了する: 「タスクを完了」ボタンをクリックすると、完了したタスク情報がすべて表示されます。学生の名前、クラス名、または学生番号による完了したタスク情報のクエリをサポートします。完了したタスクを追加、削除、表示できます。学生の情報 課題情報の詳細
(6) パンチインとサインイン: [パンチインとサインイン] ボタンをクリックすると、すべての学生の打刻とサインイン情報が表示されます。打刻とサインイン情報の照会がサポートされています。クラス名または生徒名を使用して、追加されたクロックインとサインインを同時に削除できます。
(7) 教師と生徒のコミュニケーション: メニュー「教師と生徒のコミュニケーション情報」をクリックすると、システムに追加されたすべてのコミュニケーション情報が表示されます。タイトルごとに教師と生徒のコミュニケーション情報を照会することができます。新しい教師を追加したい場合は、生徒間のコミュニケーションを希望する場合は、「追加」ボタンをクリックし、プロンプトに従って教師と生徒のコミュニケーション情報を入力し、「送信」ボタンをクリックすると、新しいコミュニケーション情報がシステムに表示され、追加された教師と生徒のコミュニケーション情報を追加することもできます。削除されました。
学生情報管理システムの非機能要件には、セルフサービス学生情報管理システムのセキュリティ、信頼性、パフォーマンス、拡張性などが含まれます。詳細は次の 3-1 表で表すことができます。
表2.1 学生情報管理システムの非機能要件表
安全性 |
主に、学生情報管理システムのデータベースのインストール、データベースの使用およびパスワードの設定が基準に準拠する必要があることを指します。 |
信頼性 |
信頼性とは、学生情報管理システムが利用者の指示に従ってインストールおよび動作できることを指し、テストの結果、信頼性は90%以上です。 |
パフォーマンス |
学生情報管理システムが市場を占有するためには性能が必須条件であり、性能が良いに越したことはありません。 |
スケーラビリティ |
たとえば、データベースは、システムの非機能要件を確実に満たすために、インターフェイスの使用などの複数の属性を予約します。 |
使いやすさ |
利用者は学生情報管理システムのページ表示内容に従って操作するだけで済みます。 |
保守性 |
学生情報管理システムの開発は保守性が非常に重要ですが、テスト後は保守性に問題はありません。 |
学生情報管理システムにおける学生の役割のユースケース図を図 2.1 に示します。
図 2.1 生徒の役割のユースケース図
生徒情報管理システムにおける教師の役割のユースケース図を図 2.2 に示します。
図 2.2 教師の役割のユースケース図
学生情報管理システムにおける管理者の役割のユースケース図を図 2.3 に示します。
図 2.3 管理者の役割の使用例図
プロジェクト開発の背景、意義、実現可能性を分析した上で、次に、具体的な実施におけるプロジェクトの機能分担やプロジェクトデータベースの各種テーブルの設計について、体系的に紹介します。
機能モジュールの設計とは、システムが実現する具体的な機能と機能の分割に基づいてシステムのアーキテクチャを作成することであり、機能の一覧表示と関与を容易にするためにモジュール図の形式で表示されます。システムの機能としては、プロジェクトは管理者+教師+生徒の3つのモジュールに分かれており、各モジュールはログインして対応する機能に対応しており、具体的な機能モジュール図を図 3.1 に示します。
図3.1 学生情報管理システムの機能モジュール図
データベースの設計には、システムのさまざまなデータが含まれます。システムでは、あらゆる種類のデータに特別なコンテナが必要です。データベースはこのコンテナです。データベースを構築する場合、主にデータベース モデルの設計とデータベース モデルの設計の 2 つの部分で構成されます。各データベーステーブルの設計。
以下は、学生情報管理システム全体の主要なデータベーステーブルの全体的な ER エンティティ関係図です。
図3.2 学生情報管理システム全体のER関係図
前の ER 図から、プロジェクトでは多くのデータ テーブルの作成が必要であることがわかります。以下は、プロジェクト内の主要なデータベース テーブルのリレーショナル モデルです。
(1) テーブル教師エンティティは、教師情報に教師番号、教師名、性別などを格納するために使用されます。
表3.1 教師情報教師テーブル
名前 |
タイプ |
長さ |
nullではない |
主キー |
コメント |
教師ID |
整数 |
11 |
はい |
はい |
教師ID |
先生_いいえ |
可変長文字 |
64 |
はい |
いいえ |
教師番号 |
先生の名前 |
可変長文字 |
64 |
いいえ |
いいえ |
先生の名前 |
性別 |
可変長文字 |
64 |
いいえ |
いいえ |
性別 |
検査状態 |
可変長文字 |
16 |
はい |
いいえ |
承認状況 |
推薦する |
整数 |
11 |
はい |
いいえ |
インテリジェントな推奨事項 |
ユーザーID |
整数 |
11 |
はい |
いいえ |
ユーザーID |
作成時間 |
日付時刻 |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
(2) テーブルsystem_studentsエンティティは、学生情報に学生名、クラス名、性別、学生番号などを格納するために使用されます。
表 3.2 学生情報system_studentsテーブル
名前 |
タイプ |
長さ |
nullではない |
主キー |
コメント |
system_students_id |
整数 |
11 |
はい |
はい |
システム学生証 |
学生証 |
可変長文字 |
64 |
いいえ |
いいえ |
学籍番号 |
性別 |
可変長文字 |
64 |
いいえ |
いいえ |
性別 |
学生の名前 |
可変長文字 |
64 |
いいえ |
いいえ |
学生の名前 |
クラス名 |
可変長文字 |
64 |
いいえ |
いいえ |
クラス名 |
検査状態 |
可変長文字 |
16 |
はい |
いいえ |
承認状況 |
推薦する |
整数 |
11 |
はい |
いいえ |
インテリジェントな推奨事項 |
ユーザーID |
整数 |
11 |
はい |
いいえ |
ユーザーID |
作成時間 |
日付時刻 |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
(3) テーブルcomplete_the_taskエンティティは、完了したタスク情報にタスク番号、生徒番号、生徒名、クラス名、教師名、タスク名、ディスパッチ時刻、完了ファイル、完了メモなどを格納するために使用されます。
表 3.3 完全なタスク情報complete_the_taskテーブル
名前 |
タイプ |
長さ |
nullではない |
主キー |
コメント |
complete_the_task_id |
整数 |
11 |
はい |
はい |
完全なタスク ID |
タスク番号 |
可変長文字 |
64 |
はい |
いいえ |
タスク番号 |
学生証 |
整数 |
11 |
いいえ |
いいえ |
学籍番号 |
学生の名前 |
可変長文字 |
64 |
いいえ |
いいえ |
学生の名前 |
クラス名 |
可変長文字 |
64 |
いいえ |
いいえ |
クラス名 |
先生_いいえ |
整数 |
11 |
いいえ |
いいえ |
教師番号 |
先生の名前 |
可変長文字 |
64 |
いいえ |
いいえ |
先生の名前 |
タスク名 |
可変長文字 |
64 |
いいえ |
いいえ |
ミッション名 |
発送時期 |
可変長文字 |
64 |
いいえ |
いいえ |
発送時期 |
完全なファイル |
可変長文字 |
255 |
いいえ |
いいえ |
完全な文書 |
完全なコメント |
可変長文字 |
64 |
いいえ |
いいえ |
完全なメモ |
検査状態 |
可変長文字 |
16 |
はい |
いいえ |
承認状況 |
検査_返信 |
可変長文字 |
16 |
いいえ |
いいえ |
モデレート返信 |
推薦する |
整数 |
11 |
はい |
いいえ |
インテリジェントな推奨事項 |
作成時間 |
日付時刻 |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
(4) テーブル「教師と生徒間のコミュニケーション」エンティティは、教師と生徒間のコミュニケーション情報のうち、生徒番号、生徒名、クラス名、教師番号、教師名、コミュニケーション内容などを格納するために使用されます。
表 3.4教師と生徒間のコミュニケーションテーブル
名前 |
タイプ |
長さ |
nullではない |
主キー |
コメント |
教師と生徒の間のコミュニケーション ID |
整数 |
11 |
はい |
はい |
教師と生徒の交換ID |
学生証 |
整数 |
11 |
いいえ |
いいえ |
学籍番号 |
学生の名前 |
可変長文字 |
64 |
いいえ |
いいえ |
学生の名前 |
クラス名 |
可変長文字 |
64 |
いいえ |
いいえ |
クラス名 |
先生_いいえ |
整数 |
11 |
いいえ |
いいえ |
教師番号 |
先生の名前 |
可変長文字 |
64 |
いいえ |
いいえ |
先生の名前 |
コミュニケーションコンテンツ |
長文 |
0 |
いいえ |
いいえ |
コミュニケーション内容 |
検査状態 |
可変長文字 |
16 |
はい |
いいえ |
承認状況 |
検査_返信 |
可変長文字 |
16 |
いいえ |
いいえ |
モデレート返信 |
推薦する |
整数 |
11 |
はい |
いいえ |
インテリジェントな推奨事項 |
作成時間 |
日付時刻 |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
(5)表clock_in实体用来存放系统中学生的打卡签到信息,包含了管理序号、学生编号、学生姓名、班级名称、教师编号、教师姓名等;
表3.5打卡签到信息clock_in表
名称 |
类型 |
长度 |
不是null |
主键 |
注释 |
clock_in_id |
int |
11 |
是 |
是 |
打卡签到ID |
management_no |
varchar |
64 |
否 |
否 |
管理序号 |
student_id |
int |
11 |
否 |
否 |
学生编号 |
student_name |
varchar |
64 |
否 |
否 |
学生姓名 |
class_name |
varchar |
64 |
否 |
否 |
班级名称 |
teacher_no |
int |
11 |
否 |
否 |
教师编号 |
teacher_name |
varchar |
64 |
否 |
否 |
教师姓名 |
examine_state |
varchar |
16 |
是 |
否 |
审核状态 |
examine_reply |
varchar |
16 |
否 |
否 |
审核回复 |
recommend |
int |
11 |
是 |
否 |
智能推荐 |
user_id |
int |
11 |
是 |
否 |
用户ID |
create_time |
datetime |
0 |
是 |
否 |
创建时间 |
update_time |
timestamp |
0 |
是 |
否 |
更新时间 |
(6)表student_management学生信息实体用来存放系统中学生的信息,包含了管理序号、学生编号、学生姓名、班级名称、教师编号、教师姓名、学生档案、记录日期、限制次数等;
表3.6学生管理信息student_management表
名称 |
类型 |
长度 |
不是null |
主键 |
注释 |
student_management_id |
int |
11 |
是 |
是 |
学生管理ID |
management_no |
varchar |
64 |
否 |
否 |
管理序号 |
student_id |
int |
11 |
否 |
否 |
学生编号 |
student_name |
varchar |
64 |
否 |
否 |
学生姓名 |
class_name |
varchar |
64 |
否 |
否 |
班级名称 |
teacher_no |
int |
11 |
否 |
否 |
教师编号 |
teacher_name |
varchar |
64 |
否 |
否 |
教师姓名 |
student_files |
varchar |
255 |
否 |
否 |
学生档案 |
record_date |
date |
0 |
否 |
否 |
记录日期 |
recommend |
int |
11 |
是 |
否 |
智能推荐 |
limit_times |
int |
8 |
是 |
否 |
限制次数 |
limit_type |
tinyint |
2 |
是 |
否 |
限制次数类型1 |
create_time |
datetime |
0 |
是 |
否 |
创建时间 |
update_time |
timestamp |
0 |
是 |
否 |
更新时间 |
管理员、教师和学生在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员、教师和学生的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其主界面展示如下图4.1所示。
图4.1 登录界面图
登录关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
注册模块满足教师和学生两部分,当学生和教师想要进行学生相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好注册信息,添加提交,注册的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录,其主界面展示如下图4.1所示。
图4.2 注册界面图
注册关键代码如下所示。
/**
* 注册
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
管理员可以对系统中所有的用户角色进行管控,包含了管理员、学生以及教师这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户,这里以教师用户为例。界面如下图4.3所示。
图4.3 用户管理界面图
用户管理关键代码如下所示。
/**
* 用户组:用于用户前端身份和鉴权(UserGroup)表实体类
*
* @author xxx
*@since 202X-XX-XX
*/
@TableName("user_group")
@Data
@EqualsAndHashCode(callSuper = false)
public class UserGroup implements Serializable {
private static final long serialVersionUID = 968356951391304707L;
/**
* 用户组ID:[0,8388607]
*/
@TableId(value = "group_id", type = IdType.AUTO)
private Integer groupId;
/**
* 显示顺序:[0,1000]
*/
@TableField(value = "display")
private Integer display;
/**
* 名称:[0,16]
*/
@TableField(value = "name")
private String name;
/**
* 描述:[0,255]描述该用户组的特点或权限范围
*/
@TableField(value = "description")
private String description;
/**
* 来源表:
*/
@TableField(value = "source_table")
private String sourceTable;
/**
* 来源字段:
*/
@TableField(value = "source_field")
private String sourceField;
/**
* 注册位置:
*/
@TableField(value = "register")
private String register;
/**
* 创建时间:
*/
@TableField(value = "create_time")
private Timestamp createTime;
/**
* 更新时间:
*/
@TableField(value = "update_time")
private Timestamp updateTime;
}
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@TableField(value = "user_group")
private String userGroup;
/**
* 用户组:用于用户前端身份和鉴权(UserGroup)表控制层
*
*/
@RestController
@RequestMapping("user_group")
public class UserGroupController extends BaseController<UserGroup, UserGroupService> {
/**
* 服务对象
*/
@Autowired
public UserGroupController(UserGroupService service) {
setService(service);
}
}
-
- 学生管理模块
管理员和学生点击“学生信息”这个按钮可以查看到系统中的学生信息,支持通过学生姓名或者班级名称或者学生档案进行查询学生信息,如果想要添加新的学生信息,点击“添加”按钮然后根据提示输入学生信息,点击“提交”后,在学生管理界面就会显示新增的学生信息,可以点击某一学生信息查看学生信息的详情,也可以直接点击“删除”进行删除学生信息。界面如下图4.4所示。
图4.4 学生管理界面图
学生管理关键代码如下所示。
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
-
- 分配任务模块
点击“分配任务”这个菜单,可以查看到系统中所有查询的分配任务信息,支持通过任务编号对任务信息进行查询,如果想要了解某一任务的详细信息,点击后面的“详情”会进入详情界面,学生和管理员如果想要选择某一分配任务,点击“任务”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错误在数据库就会提交成功。界面如下图4.5所示。
图4.5 分配任务界面图
分配任务管理关键代码如下所示。
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
-
- 完成任务模块
学生点击“完成任务信息”这个按钮可以查看到自己提交的完成任务信息,支持通过班级名称或者学生姓名进行查询完成任务信息,如果想要了解某一完成任务的详细信息,点击后面的“查看”会进入详情界面,也支持对自己选择的完成任务进行删除;教师和管理员可以对学生提交的完成任务进行查询,选择某一完成任务,点击后面的“任务”按钮,根据提示输入对应的信息,点击“提交”后,完成任务就录入成功了。界面如下图4.6所示。
图4.6 完成任务界面图
-
- 打卡签到模块
学生点击“打卡签到”这个按钮可以查看到自己所有打卡签到信息,支持通过班级名称或者学生姓名进行查询打卡签到信息,管理员和教师可以对所打卡签到信息进行删除。界面如下图4.7所示。
图4.7 打卡签到界面图
打卡签到管理关键代码:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
-
- 师生交流管理模块
点击“师生交流”这个菜单,可以查看到系统中所有添加的师生交流信息,支持通过标题对师生交流信息进行查询,只有管理员用户可以添加新的师生交流内容,点击“添加”按钮,根据提示输入师生交流信息,点击“提交”按钮,新的师生交流信息就在系统中显示出来了,也可以对添加的师生交流信息进行删除。界面如下图4.8所示。
图4.8 师生交流界面图
通过前面章节的介绍,我们可以看到本学生信息管理系统已经完成了,但是能不能投入使用还是未知,因为在每个项目正式使用之前必须对开发的项目进行测试,如果不进行测试一旦投入使用可能会出现很多未可知的问题,比如使用人数太多导致系统瘫痪,比如某一功能存在bug信息填写错误等等,这些错误将给使用者带来很多的困扰,甚至造成更大的损失,因此测试是项目投入使用的最后一步,为用户提供一个运行顺畅、完美的项目也就是我们进行最后测试的目的。
用户登录功能测试:
表5.1 用户登录功能测试表
测试名称 |
测试功能 |
操作过程 |
预期结果 |
测试结果 |
用户登录模块测试 |
用户登录成功的情况 |
点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。 |
登录成功并调整到用户界面 |
正确 |
学生信息添加功能测试:
表5.2 学生信息添加功能测试表
测试名称 |
测试功能 |
操作过程 |
预期结果 |
测试结果 |
学生添加模块测试 |
学生添加成功的情况 |
在学生的页面中将点击添加,输入学生关信息,输入正确的信息后然后点击“提交”按钮。 |
提示添加成功 |
正确 |
学生添加模块测试 |
学生添加失败的情况 |
在学生页面中不填写的体温、健康码信息,其他信息正常输入“提交”按钮。 |
提示“添加失败,信息不能为空” |
正确 |
查询打卡签到信息功能模块测试:
表5.3 查询打卡签到信息功能测试表
测试名称 |
测试功能 |
操作过程 |
预期结果 |
测试结果 |
查询打卡签到信息功能测试 |
查询成功的情况 |
在打卡签到界面输入班级名称或者学生姓名进行查询 |
查询成功 |
正确 |
师生交流信息添加功能测试:
表5.4 师生交流添加功能测试表
测试名称 |
测试功能 |
操作过程 |
预期结果 |
测试结果 |
师生交流添加模块测试 |
师生交流添加成功的情况 |
在师生交流的页面中将点击添加,输入课程相关信息,输入正确的信息后然后点击“提交”按钮。 |
提示添加成功 |
正确 |
师生交流添加模块测试 |
师生交流添加失败的情况 |
在师生交流页面中不填写的请假时间,其他信息正常输入“提交”按钮。 |
提示“添加失败,信息不能为空” |
正确 |
通过编写学生信息管理系统的测试用例,已经检测完毕用户的登录模块、学生信息添加模块、查询打卡签到模块、师生交流添加模块的功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。
在开发本学生信息管理系统之前我胸有成竹,觉得很简单,但在实际的开发中我发现了自身的很多问题,许多编程思想和方法都还没有掌握牢靠,比如Bootsatrp、Jquery、AJAX 、Spring、SpringMVC、mybeatis等许多Java Web开发技术,通过开发这个学生信息管理系统我成长了很多,懂得了做什么事情都要脚踏实地,不能眼高手低,在本次学生信息管理系统的开发中我逐渐掌握逐渐熟悉的技术。
本次学生信息管理系统的开发中我还学会了例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。
在本次项目中我也暴露了诸多问题。对于Java的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。
- 杨一帆.服务于MySQL数据库的在线监测系统设计[J].自动化技术与应用,2022,41(10):179-182.
- 谢霜.基于Java技术的网络管理体系结构的应用[J].网络安全技术与应用,2022(10):14-15.
[3]王强.基于B/S架构的高校学生信息管理系统设计[J].电子技术与软件工程,2022(17):195-198.
[4]储宝龙.基于B/S结构的中职学校学生管理信息系统的设计[J].现代信息科技,2022,6(16):36-38+42.
[5]郑戟明,董云朝,柳青.MySQL数据库数据导入导出方法的探讨[J].电脑知识与技术,2022,18(22):24-25.
[6]杨迎.Java技术在嵌入式系统中的作用探讨[J].无线互联科技,2022,19(14):96-98.
[7]徐晓.基于Java技术的微信公众号自定义菜单的研究[J].电脑知识与技术,2022,18(21):111-112.DOI:10.14004/j.cnki.ckt.2022.1249.
[8]王莉莉.基于Web的学生信息管理系统设计与实现[J].信息记录材料,2022,23(07):154-158.
[9]童浩卓.基于Spring Cloud框架的分布式学生信息管理系统设计[J].信息技术与信息化,2022(04):69-72.
[10]Yang Mingfeng,Wang Jianying. The Security of Student Information Management System Based upon Blockchain[J]. Journal of Electrical and Computer Engineering,2022,2022.
[11]夏寅,吴郑红,陈群,金薇婕.上海市基础教育学生信息管理系统建设及应用实践[J].教育传播与技术,2022(02):74-78.
[12]金翠荣.学生信息管理系统开发与设计[J].电脑编程技巧与维护,2022(03):65-67.DOI:10.16184/j.cnki.comprg.2022.03.029.
[13]金晶. 一种基于计算机的学生信息管理系统[P]. 辽宁省:CN215117566U,2021-12-10.
[14]Feng Shuo,Zhan Ling,Zhao Hong. Construction and Realization of University Student Information Management System Based on Big Data Technology[J]. Journal of Physics: Conference Series,2021,1992(4).
[15]Yin XueHong. Construction of Student Information Management System Based on Data Mining and Clustering Algorithm[J]. COMPLEXITY,2021,2021.
[16]江金娜. 高校成人教育学生信息管理系统的分析与设计[D].广东工业大学,2019.DOI:10.27029/d.cnki.ggdgu.2019.000729.
[17]左丹. 高校学生信息管理系统需求分析和评价体系设计[C]//.人文学术:过程与方法.,2016:116-122.
致谢
至此论文结束,感谢您的阅读。在此我要特别的感谢我的导师,虽然我在实习期间很忙,论文撰写的时候经常是停停改改,但是我的导师依旧十分的负责,时不时的询问我的任务进展情况,跟进我的论文进度,在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识和经验,这些知识和经验令我受益匪浅。同时我也从导师身上看到了自己的不足,不论是在技术层面上还是在对待工作的态度上,导师如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于SSM框架方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就花上了一个圆满的句号了。
请关注点赞+私信博主,免费领取项目源码