検索
ホームページJava&#&チュートリアルJava で実装された学生管理システムのケースを分析します。

    学生管理システム

    前書き: これは 2 年生向けに設計されたコースです (まだ学生管理システムです...)。 1人あたり4名です チームで協力して行いましたが、この「でも」に注意してください、コードとドキュメントのすべての責任は依然として私にあります... コードとドキュメントは基本的に一人で書きました。まず血を吐いていたのですが、これが後のWeb版の機能の一部が未完成の理由です。

    #プロジェクトの概要

    プロジェクトは、JavaSwing で記述された GUI デスクトップ アプリケーションと、半完成の Web アプリケーションに分かれています。次の図は、プロジェクトの全体的な機能構造を示しています

    Java で実装された学生管理システムのケースを分析します。

    JavaSwing

    JavaSwing は MyBatis Spring フレームワークの組み合わせを使用しますが、Swing で開発されたプログラムでは Spring フレームワークを使用するのは間違いであることが後でわかりました。

    さらに、JavaSwing バージョンにはいくつかの未知の論理的なバグが存在する可能性があります。

    機能表示モジュール

    1. ログインモジュール

    Java で実装された学生管理システムのケースを分析します。

    2. システム設定モジュール

    Java で実装された学生管理システムのケースを分析します。

    3. 学生管理モジュール

    学生追加

    Java で実装された学生管理システムのケースを分析します。

    学生リスト

    Java で実装された学生管理システムのケースを分析します。

    4.クラス管理モジュール

    クラス追加

    Java で実装された学生管理システムのケースを分析します。

    クラス管理

    Java で実装された学生管理システムのケースを分析します。

    5. スコア管理

    スコア統計

    Java で実装された学生管理システムのケースを分析します。

    6. Webバージョン

    クリックしてブラウザの

    http://localhost:8080 URL にジャンプします

    Java で実装された学生管理システムのケースを分析します。#使用方法

    IDEA を使用してプロジェクトを開きます。プロジェクトの構造は次のとおりです:

    Java で実装された学生管理システムのケースを分析します。プロジェクトを開始したら、ビュー パッケージで LoginFrm を実行します

    Java で実装された学生管理システムのケースを分析します。発生した問題

    依存関係の注入に Spring を使用するときに発生した問題

    Swing は GUI 開発用の Java パッケージです。コースでは Spring を使用してコンテナを管理しました。しかし、コンテナの依存関係注入に Spring アノテーションを使用するときに問題が発生しました。依存関係の注入は null であり、エラーが次のように報告されました。

    スレッド「AWT-EventQueue-0」java.lang.NullPointerException

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

    での例外

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

    Baidu で長い間検索しましたが、問題が見つかりませんでした。Spring 構成は除外しました。ファイルの記述が間違っているか、@Service アノテーションが追加されていないため、問題が発生するのを待っていたところ、インターネットで次のような説明を見つけました。

    理由は次のとおりです: 新しいスレッドが Spring コンテナ内にないため、Spring で Bean オブジェクトを取得できません

    JavaSwing はスレッドセーフではありません。プロジェクト内のいくつかの場所はマルチによって実行されます。 -スレッド、および多くの UI スレッド内部で同時に実行されるため、これらのスレッドは Spring で管理されるスレッドではないため、Spring インジェクションは失敗します。

    また、Spring では、マルチスレッド状況での依存関係の注入にアノテーションを使用することはできません。したがって、必要な Bean オブジェクトを取得するには、手動でのみ行うことができます。必要な Bean オブジェクトを取得するには、コードは次のとおりです。

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

    実際には、スレッド プールを構成することで管理することもできますが、Swing と don には詳しくありません。実行中にスレッドが何個あるかはわかりません。

    この問題は、私が最初は予期していなかったものでした。それを知っていたら、Spring on Swing を使用しなかっただろう...各ビュー層クラスの依存関係を手動で取得する必要があるためです。自分で使うよりずっと悪いです シングルトンモードで MyBatis の依存関係を取得することに違いはありませんが、Spring を使う方が面倒です

    Mybatis が HashMap を結果セットとして使用するときに発生する問題

    指定されたサインインを見つけるメソッドを作成するときに、戻り値として List> を使用しましたが、エラーが表示されました。最初に null ポインター エラーが表示されたとき、次に、@Results 結果セットを次のように構成しました。

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

    #しかし、フォーマット変換エラーが表示されたので、クエリ結果をコンソールに出力したところ、次のような結果になりました

    [{value=2018-05-17, key=1}, {value=2018-04-17, key=1}, {value=2018-04-18, key=1}, {value= 2018-04-19、キー=3}、{値=2018-04-20、キー=1}、{値=2018-04-21、キー=1}、{値=2018-05-03、キー= 1} ]

    HashMap の値は、JSON 文字列の形式から xxx=xxx の形式に変更されました。プロパティの属性値はエンティティ クラスの属性に対応しますが、キーと値は一致しません。 in HashMap では count.Attribute はカウントできないので(間違っていたと思いました)、この時 Mybatis が勝手に属性名を設定するので上記の結果になります。なぜ XML ファイルの形式ではないのかは聞かないでください。当時は十分な時間がなかったので、便宜的に注釈を使用しただけです。

    解決策:

    上記の結果値を HashMap に割り当てます。

    外部キーに関連付けられたデータを削除するときに発生する問題

    プロジェクトのサービス層は、次のようなエラーを報告します:

    親行を削除または更新できません: 外部キー制約が失敗します (`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 層に問題があります。削除ステートメントに問題があります。理由を分析したところ、外部キーの関連付けが設定されているため、削除できませんでした。データ。

    解決策:

    次のように、データを削除する前に外部キーを無効に設定します:

    setforeign_key_checks = 0;

    # この時点で削除ステートメントを実行できます。

    削除後、次のように外部キーを有効に設定します:

    setforeign_key_checks = 1;

    この方法 この記録は完全に削除されました。

    JavaWeb

    JavaWeb ここでは SpringBoot Spring Data JPA のフレームワークを組み合わせて使用​​します データの表示には Thymeleaf を使用します データの視覚化には ECharts を使用するページの統計ページがあります

    前述したように、Web は半完成品であり、実装されている機能は主に、ログイン、ログアウト、パスワード変更、生徒管理、授業管理、成績管理などの機能モジュールです。さらに、使用するデータベースは JavaSwing のバージョンと同じであるため、以前のデータは実際に相互運用可能です。

    概要: このページは少し見苦しいですが、開発を継続するためのテンプレートとして使用できます。

    機能表示

    1. ログインインターフェース

    Java で実装された学生管理システムのケースを分析します。2. 生徒管理

    生徒リスト

    Java で実装された学生管理システムのケースを分析します。生徒の追加

    Java で実装された学生管理システムのケースを分析します。3. クラス管理

    クラスリスト

    Java で実装された学生管理システムのケースを分析します。クラスの追加

    Java で実装された学生管理システムのケースを分析します。4. スコア統計

    Java で実装された学生管理システムのケースを分析します。

    Java で実装された学生管理システムのケースを分析します。

    Java で実装された学生管理システムのケースを分析します。使用説明書

    #プロジェクト構造図:

    #開始するには、DemoApplication クラスを右クリックして開始します。 Java で実装された学生管理システムのケースを分析します。

    発生した問題

    JPA を使用してデータベースを更新するときに発生した問題

    Spring Data JPA を使用して Web 側で永続層のコンテンツを実行すると、エラーが発生しました。

    更新/削除クエリの実行

    Baidu で検索したところ、JPA であることがわかりました。更新または削除操作を実行すると、 Dao または Service を使用する必要があります @Transactional アノテーションがレイヤーに追加されます。これは、これがトランザクション レベルの操作であることを意味します。これは、JPA の使用仕様と同等です。JPA では、トランザクション サポートがなければ、更新および削除操作を実行できないためです。実行されました。

    以上がJava で実装された学生管理システムのケースを分析します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    プラットフォームの独立性のためにネイティブコードを介してbytecodeを使用することの利点は何ですか?プラットフォームの独立性のためにネイティブコードを介してbytecodeを使用することの利点は何ですか?Apr 30, 2025 am 12:24 AM

    bytecodeachievesplatformedentencedexedectedbyavirtualMachine(VM)、forexApplev.forexample、javabytecodecanrunrunrunnonydevicewithajvm、writeonce、runany "ferfuctionality.whilebytecodeOffersenhの可能性を承認します

    Javaは本当に100%プラットフォームに依存していませんか?なぜまたはなぜですか?Javaは本当に100%プラットフォームに依存していませんか?なぜまたはなぜですか?Apr 30, 2025 am 12:18 AM

    Javaは100%のプラットフォームの独立性を達成することはできませんが、そのプラットフォームの独立性はJVMとBytecodeを通じて実装され、コードが異なるプラットフォームで実行されるようにします。具体的な実装には、次のものが含まれます。1。bytecodeへのコンパイル。 2。JVMの解釈と実行。 3。標準ライブラリの一貫性。ただし、JVMの実装の違い、オペレーティングシステムとハードウェアの違い、およびサードパーティライブラリの互換性は、プラットフォームの独立性に影響を与える可能性があります。

    Javaのプラットフォーム独立性は、コードの保守性をどのようにサポートしますか?Javaのプラットフォーム独立性は、コードの保守性をどのようにサポートしますか?Apr 30, 2025 am 12:15 AM

    Javaは、「Write onse、Averywhere」を通じてプラットフォームの独立性を実現し、コードの保守性を向上させます。 2。メンテナンスコストが低いため、1つの変更のみが必要です。 3.チームのコラボレーション効率が高く、知識共有に便利です。

    新しいプラットフォームのJVMを作成する際の課題は何ですか?新しいプラットフォームのJVMを作成する際の課題は何ですか?Apr 30, 2025 am 12:15 AM

    新しいプラットフォームでJVMを作成することに直面する主な課題には、ハードウェアの互換性、オペレーティングシステムの互換性、パフォーマンスの最適化が含まれます。 1。ハードウェア互換性:JVMがRISC-Vなどの新しいプラットフォームのプロセッサ命令セットを正しく使用できるようにする必要があります。 2。オペレーティングシステムの互換性:JVMは、Linuxなどの新しいプラットフォームのシステムAPIを正しく呼び出す必要があります。 3。パフォーマンスの最適化:パフォーマンステストとチューニングが必要であり、ガベージコレクション戦略が新しいプラットフォームのメモリ特性に適応するように調整されます。

    Javafxライブラリは、GUI開発におけるプラットフォームの矛盾にどのように対処しようとしていますか?Javafxライブラリは、GUI開発におけるプラットフォームの矛盾にどのように対処しようとしていますか?Apr 30, 2025 am 12:01 AM

    javafxefcectivelyaddressessessistencisingisingidevidementsyusaplatform-agnosticscenegraphandcssstyling.1)itabstractsplatformspificsthroughascenegraph、Assuring-sunsinstentrenderingacrosswindows、macos、andlinux.2)

    JVMがJavaコードと基礎となるオペレーティングシステムの間の仲介者としてどのように機能するかを説明します。JVMがJavaコードと基礎となるオペレーティングシステムの間の仲介者としてどのように機能するかを説明します。Apr 29, 2025 am 12:23 AM

    JVMは、Javaコードをマシンコードに変換し、リソースを管理することで機能します。 1)クラスの読み込み:.classファイルをメモリにロードします。 2)ランタイムデータ領域:メモリ領域を管理します。 3)実行エンジン:実行バイトコードを解釈またはコンパイルします。 4)ローカルメソッドインターフェイス:JNIを介してオペレーティングシステムと対話します。

    Javaのプラットフォーム独立におけるJava Virtual Machine(JVM)の役割を説明します。Javaのプラットフォーム独立におけるJava Virtual Machine(JVM)の役割を説明します。Apr 29, 2025 am 12:21 AM

    JVMにより、Javaはプラットフォームを介して実行できます。 1)jvmは、bytecodeをロード、検証、実行します。 2)JVMの作業には、クラスの読み込み、バイトコード検証、解釈の実行、およびメモリ管理が含まれます。 3)JVMは、動的クラスの読み込みや反射などの高度な機能をサポートしています。

    さまざまなオペレーティングシステムでJavaアプリケーションが正しく実行されるようにするために、どのような措置を講じますか?さまざまなオペレーティングシステムでJavaアプリケーションが正しく実行されるようにするために、どのような措置を講じますか?Apr 29, 2025 am 12:11 AM

    Javaアプリケーションは、次の手順を通じて異なるオペレーティングシステムで実行できます。1)ファイルまたはパスクラスを使用してファイルパスを処理します。 2)System.getEnv()を介して環境変数を設定および取得します。 3)MavenまたはGradleを使用して、依存関係を管理し、テストします。 Javaのクロスプラットフォーム機能は、JVMの抽象化レイヤーに依存していますが、特定のオペレーティングシステム固有の機能の手動処理が必要です。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

    AtomエディタMac版ダウンロード

    AtomエディタMac版ダウンロード

    最も人気のあるオープンソースエディター

    SecLists

    SecLists

    SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

    サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません