1. システムのスクリーンショット (デモビデオが必要な場合は、プライベートにチャットできます)
体育館利用予約プラットフォーム
まとめ
現在、社会のあらゆる階層が独自の専用ソフトウェアを使用して仕事をしており、インターネットが発達したこの時代において、人々はインターネットなしでは生きていけないことに気づきました。インターネットの発展はいくつかの新しいテクノロジーと切り離すことができず、多くの場合、既存の問題を解決するために新しいテクノロジーが作成されます。今回開発した体育館利用予約プラットフォームは、会場予約情報の非標準管理、耐障害性の低さ、管理者のデータ処理に手間がかかる点を考慮し、データ処理プロセス全体の形式性・適法性を根本から標準化することが可能です。
体育館は予約プラットフォームを利用して、会場管理、利用者管理、フォーラム管理、アナウンス管理、会場オーダー管理などの機能を実現しています。このシステムは、Mysql データベース、Java 言語、Spring Boot フレームワーク、その他のプログラミング技術を使用します。
体育館予約プラットフォームは、会場予約情報管理の効率化、会場予約情報処理プロセスの最適化、保存データのセキュリティ確保を目的とした、非常に信頼性と安全性の高いアプリケーションです。
キーワード:体育館予約プラットフォーム、Mysql データベース、Java 言語
第1章 はじめに_
1.1主題の背景
21 世紀のインターネットの出現は、何千年にもわたって人々の生活を、生活物質の豊富さだけでなく精神的なレベルでも変化させてきました。時代の進歩の兆しは、人々がより良い生活を送れるようになることです。インターネットが誕生する以前は、地理的な位置によってドメインを越えることができない人々の心の隙間が多く、情報伝達の速度は非常に遅く、情報処理の速度や要件は依然として馬や伝書鳩に乗って伝達されていました。失われる可能性が非常に高く、情報伝達のレベルが人々の生活水準を決定します。現在では、誰もが自らの目的を達成するためにインターネットを利用し、社内管理からコンピュータ管理を確立し、社内の情報管理レベルを向上させ、外部市場から関連データをコンピュータで取得して処理するようになりました。コンピューターに大きく依存しています。
このテーマは、体育館で使用される予約プラットフォームを研究開発し、コンピューターにインストールされたシステムを管理者のちょっとした手助けにし、会場予約情報処理の速度を向上させ、会場予約情報処理プロセスの標準化と管理者の生産性を向上させます。
1.2主題の意義
従来のデータ処理は紙上で行われ、処理後の統計は紙上に収集され、その処理が継続的に繰り返され、最終的に結果が最高レベルに参照として提供されます。 , このモデルは、一般的なことですが、情報管理の効率を改善できない場合は、人材を活用するのが常識であり、人が多ければ多いほど強力です。コンピューターの誕生は、多くの人が不足していることの発見でした。たとえば、ハイエンド コンピューティングの才能の訓練が使用に追いつかなくなったため、人々は計算を支援する機械を開発しました。インターネット時代には、プログラム サプライヤーにソリューションを提供してもらい、自分で適切なソリューションを選択して出力率を向上させることが完全に可能であることがわかりました。その結果、情報処理をプログラムに依存するさまざまなソリューションが市場に登場しました。
本プロジェクトで開発した体育館予約プラットフォームは、ユーザーがマウスやキーボードを動かすだけで必要な情報を取得することができ、情報を短時間で処理することができる、特殊な情報を有する会場予約情報処理ソリューションを提供するものです。体育館での予約プラットフォームの利用は、人手、情報処理、情報セキュリティの観点から、従来の紙ベースの業務に比べて完全に優れているため、予約プラットフォームの利用は体育館ではとても信頼できます。
1.3研究内容
この記事では、体育館予約プラットフォームの設計と実装について 6 つの章で説明します。
第1章:体育館利用予約プラットフォームの背景と体育館利用予約プラットフォーム開発の意義に関する研究。
第2章:体育館利用の予約プラットフォームを開発するための環境と技術について説明する。
第 3 章: 予約プラットフォームを使用して、体育館の実現可能性、パフォーマンス、プロセス、機能を分析します。
第 4 章: 体育館予約プラットフォームの機能構造を設計し、データベース ER 図を設計し、データ テーブルの格納構造を設計します。
第 5 章: 体育館予約プラットフォームの機能を実現し、機能インターフェイスを表示します。
第 6 章: システム テストについて説明し、システムのいくつかの機能をテストします。
第2章 開発環境と技術
この章では、体育館予約プラットフォームを開発するために構築する必要がある開発環境と、体育館予約プラットフォームの開発に使用されるプログラミング技術について説明します。
2.1 Java言語
Java 言語は、プログラミング言語業界で今日も生き続ける常緑樹の 1 つです。Java言語の最も原始的な誕生は、C言語はプログラミングにおいて非常に面倒だと感じている作成者だけでなく、ビジネスロジックの処理だけに注目すると、さまざまなポインタやガベージコレクションの操作が無視され、結果的に、通常のプログラミングでビジネス ロジックを処理する時間よりも時間がかかることが多く、時間の無駄です。Java 言語の作成者は、ポインタ処理とガベージ処理を自動化することでこの問題を完全に解決しました。これによりパフォーマンスは多少低下しますが、コンピュータ ハードウェアの継続的な開発により、これらのパフォーマンスは無視できます。また、C言語はハードウェア開発用の言語です。認定されたハードウェア上でプログラミングすることでハードウェアの性能を最大限に活用できますが、ハードウェアやOSの変更に伴い、C言語を使用し続ける場合はプログラム全体を再設計する必要があります。市場の変化に応じて変化する言語だけが、トレンドと生存の法則に従う言語です。Java 言語の作成者は、C 言語の欠点を解消するために Java 言語を開発しました。Java 言語の実行の外側にはシェル、つまり仮想マシンがあるため、どのような環境であっても Java 言語を実行できます。Java 仮想マシンをコンピュータにインストールできる限り、Java は実行されます。プログラムを実行することができます。
2.2 MYSQL データベース
MySQL データベースはリレーショナル データベースの一種であり、伝統的な行ベースのデータ モデルでもあり、一部のデータは最初に行ごとに取得され、その後行ごとに表示されるため、最近登場したカラム型データベースとは明らかに異なります。ビッグデータから。行データベースは主に最も重要なデータ ロジック部分を処理し、各場所のデータの関連付けが破壊できないように有効なデータでなければなりません。データのセキュリティが比較的高い場合は、MySQL データベースまたは列データベースを選択する必要があります。本発明は読み取り効率が高いというだけの理由であり、データ書き込みに関しては従来の MySQL データベースよりも優れているわけではありません。MySQL のインストールパッケージは、oracle や SQL SERVER に比べて数十メガバイト、場合によっては数百メガバイトにすぎず、少し小さいですが、その機能は弱くなく、SQL 標準構文に厳密に従っています。MySQL のデータ ストレージ形式は大規模なものから小規模なものまであります。データベースが最も大きく、次にテーブルです。各テーブルにデータを格納するには一定のルールがあります。データ ストレージはテーブル形式です。水平方向と垂直方向があります。通常、行は 1 つのデータを表します。各テーブルにはフィールドがあり、フィールドは列の形式で存在します。これにより、データの各フィールドが同じデータ型のデータに対応することが保証されます。テーブル同士を関連付けたり分割したりすることもでき、1つのデータに関連する属性が多すぎる場合には、有効な相関関係を関連付けにして、一意であるかどうかを設定することもできます。
2.3 IDEA開発ツール
IDEA はチェコ共和国の Java プログラマーと開発者によって作成された開発ソフトウェアですが、当初は主に Eclipse ソフトウェアに慣れていなかったため、彼らがこのソフトウェアを直接開発しました。スムーズでない理由は、コードプロモーション機能がないためです。その理由は、Eclipse がコードヒントをプラグイン形式としてのみ使用しているためです。一部のプログラム開発者がコードヒントについて明確にしていないと、プラグインによって問題が発生する可能性があります。コードヒントはプラグインとしてのみ使用されるため、機能が不足しています。IDEA はコード ヒントを適切に処理するだけでなく、コード リファクタリングをさらに強力にします。プログラム開発者がコードの一部を選択すると、IDEA がコードを分解してリファクタリングし、効果的にコードをより階層化して再利用可能にします。より柔軟で、より簡潔で使いやすく、コードの作業負荷が大幅に軽減され、コード開発の効率が向上します。もちろん、IDEA はユーザーにとって非常に良いものなので、目的があるはずですが、その理由は、プラグインが多ければ多いほど、使用するのに多額の費用がかかるため、IDEA の使用は主に好みに依存します。 。
2.4 Spring Boot フレームワーク
Spring Boot は、コード生成を必要とせず、XML ファイルを構成する必要もないフレームワークです。Spring Boot には多くのインターフェイスが付属しているため、さまざまなインターフェイスを構成するだけで自動的に適用され、ニーズが特定されます。この依存関係は、次の場合に非常に便利です。構成上、フレームワークを使用していないように感じます。Spring Boot には多くのデフォルト構成ファイルがあり、デフォルト構成ファイルは変更したり、自動的にロードされるように設定したり、例外処理をグローバル例外処理とデフォルト例外処理に分けることができます。Spring Boot を使用する際、使用するものを直接登録するようなもので、対応するクラスやメソッドに対して特別なステートメントを作成することをいわゆる登録といいます。
第3章要件分析_
本稿の著者は、研究対象を確認した後、主要な電子図書館から文書をダウンロードして読み、同種のウェブサイトの一般的な機能を理解した上で、本システムの利用者の実際のニーズと組み合わせて分析し、結論を導き出す。このシステムの具体的な機能と性能を研究する必要があると考えています。システムを分析する段階の作業は主に機能を決定することですが、その後のシステム開発リンクの進捗に影響を及ぼし、システム開発プロセスの中でも比較的重要なリンクでもあります。
3.1実現可能性の分析
次に、3 つの角度から実現可能性分析を行いますが、開発を成功させるための前提となるのが実現可能性分析であり、事前に分析を実施し、プログラムの開発プロセスに準拠することでのみ、開発プロセスを中断することはありません。
3.1.1 技術的な実現可能性
技術実装レベルでは、いくつかの技術実装手法が分析され、対応する成功事例があり、参考となるオープンソースモジュールも多数存在するため、技術的実現可能性分析の観点からは、実用化に問題はない。体育館予約プラットフォームの。
3.1.2経済的実現可能性
学生である開発者にとって、利用できる経済的リソースはほとんどありませんが、体育館を開発して予約プラットフォームを使用するには、技術分析の結果、開発に自分のコンピュータを使用できることが判明し、学校のコンピュータ室の構成によって実現できることがわかりました。要件も満たしています。最も重要なことは、技術リソースは一般的にオープンソースであり、無料で使用できるため、経済的に実現可能であると結論付けられることです。
3.1.3運用の実現可能性
予約プラットフォームを使用した体育館の具体的な実装は、人間の通常の操作ロジックを参照し、一般的な操作習慣を主要なナビゲーション実装として使用するため、ユーザーはより迅速に理解し、操作することができ、論理的な操作を実装することが可能です。プロセス、具体的な実施形態。
上記は、体育館予約プラットフォームの正常な発展を確保するためのさまざまな角度からの分析です。
3.2システムフロー解析
スタジアム予約プラットフォームの利用開始後は、フローチャートを通じて各機能の内部動作ロジックをユーザーが理解する必要があります。
1. 運用プロセス
体育館予約プラットフォームを操作するとき、ユーザーはシステムが提供する操作プロセス(図 3.1 はシステムの操作フローチャート)に従う必要があります。これにより、ユーザーの操作ミスが減り、体育館予約プラットフォームに入る時間を節約できます。 . プラットフォームの時間。
図3.1 システム動作フロー
2. ログイン手順
体育館は、予約プラットフォームを利用して、ログイン機能(図 3.2 はログインプロセス)を通じてユーザーを指定された機能操作エリアに誘導し、システム以外のユーザーがシステムによって提供されるサービスを享受したり、提供された情報を閲覧したりすることを防ぎます。本システムをご利用いただく皆様に安全にご利用いただくため、システム上での安全管理を行っております。
図 3.2 ログインプロセス
3. 情報プロセスの削除
スタジアム予約プラットフォームを長期間使用すると、大量のデータ情報が生成されます。より多くのデータを保存するためのストレージ領域を解放するには、このシステムのデータベースに保存されているデータのうち、参照値のない一部のデータを削除する必要があります (図 3.3 は情報の削除のプロセスです)。誤って削除しないように、システムのプロンプトに従ってユーザーがデータを削除するかどうかを決定する必要があります。
図 3.3 削除情報の流れ
4. 情報処理の追加
体育館は、予約プラットフォームを使用して、視覚的な機能操作エリアを提供し、ユーザーがデータを操作するのに非常に便利です. ユーザーがシステムにデータを入力すると (図 3.4 は情報を追加するプロセス)、システムはまた、データの合法性を判断します。要件を満たすデータをデータベースの指定テーブルに登録することができます。
図 3.4 情報追加プロセス
3.3システム性能要件
要件分析では、通常の分析プロセスに準拠して、プロジェクトで必要なサーバーのパフォーマンスを分析する必要があります。性能要件ではなく機能要件だけを議論することは非常に重大な問題であり、使用プロセスで一連の予期せぬ問題を引き起こす可能性があるため、性能要件も考慮すべき重要な項目です。
以下では、システムのパフォーマンスをいくつかの側面から分析し、システムのパフォーマンスを各角度から分析します。
(1) システムデータの容量:データ分析の観点から、各テーブルおよび各データベースは一定のデータ量に達しており、テーブルまたはデータベースに分割する必要がある場合、設定されたデータの制限を超える場合、データを分割する必要がある場合があります。その結果、データの速度が遅くなり、耐障害性が向上します。
(2) データ精度の要件:需要分析のデータ設定リンクにおいて、対応するデータ精度の問題を考慮する必要があり、データが共通に使用されるかどうかを調べて、異なる値を設定する必要があります。データの精度の問題は、設計のパフォーマンスの問題に直接つながります。
(3) 時間応答要件: ユーザーが操作を送信してからページが反映されるまでの途中でデータ処理の問題が発生しますが、データ量が多い場合は、インデックス作成とサブデータベースの問題を考慮します。データ量がどのくらいになったらカラムナ型データベースの追加も検討する必要があるが、ユーザーの要求を満たすためにはデータ量の増加とロジックの厳密さに応じて判断しなければならないという問題がある。 、反応時間が長すぎて操作が不快です。
システムの性能要件は、ビジネス要件の最初から性能要件に関連する概念を大まかに理解し、システムの性能要件からそれを一つずつ実現することで、設計したシステムを価値のあるものにすることができます。
3.4 システムの機能要件
体育館では、予約プラットフォームを利用して利用権限の観点から機能分析を行い、各権限が動作するために必要な機能をユースケース図で示しています。
図 3.5 は管理者のユースケース図であり、管理者権限の運用機能には、登録ユーザー情報の管理、会場の管理、会場の予約注文、アナウンス、フォーラムの投稿などの情報が含まれます。
図 3.5 管理者の使用例図
図 3.6 はユーザーのユースケース図であり、ユーザー権限操作の機能には、フォーラムへの投稿への参加とコメント、お知らせの閲覧、会場の予約、会場の保存が含まれます。
図 3.6 ユーザーのユースケース図
第4章システム設計
システムの設計はすべてユーザーが使用するためのものであり、ユーザーは使用中にブラウザ上でさまざまな操作を行うだけですが、システムはユーザーのブラウザ上での操作を処理しないわけではありません。あらゆる側面を考慮すること。
4.1機能モジュールの分割
4.1.1 管理者モジュールの機能
図 4.1 は管理者機能の設計図であり、管理者権限により実行される機能としては、登録ユーザー情報の管理、会場の管理、会場の予約注文、お知らせ、フォーラムの投稿等が挙げられます。
図4.1 管理者機能の構成
4.1.2 ユーザーモジュールの機能
図 4.2 は設計されたユーザ機能の構造であり、ユーザ権限操作の機能には、フォーラムへの投稿への参加とコメント、お知らせの閲覧、会場の予約、会場の収集が含まれます。
図4.2 ユーザー関数の構造
4.2データベース設計
予約プラットフォームを利用した体育館の運営中に発生するデータは、あらかじめ設定された保存ルールに従って保存する必要があり、この保存ルールはデータベースの設計時に設定されます。通常、システムの操作とより適切に連携し、ユーザーに優れたユーザーエクスペリエンスをもたらすには、ユーザーの待ち時間を短縮し、最短でシステムをリクエストできる優れたデータベースを設計する必要があります。時間内に応答してください。したがって、データベースを設計するときは、データ ストレージに対するシステムの要件と保存される特定のデータを分析し、データベースがシステムのさまざまなデータ要求に確実に応答できるようにするための特定のストレージ ルールを設計するのにある程度の時間がかかります。タイムリーにデータ処理時間を短縮し、データの冗長性をある程度削減してストレージ領域を節約します。
4.2.1 E -R図
エンティティ関係図には、Entity Relationship Diagram の英語の頭文字をとって ER 図という名前もあり、その概念モデルは通常、現実世界を記述するために使用されます。同時に、データ内のエンティティ、関係性、属性を視覚的に表現する効果的な手段でもあります。ER 図を描画するために選択できるツールは数多くありますが、Office Visio は視覚的な処理に基づいており、ER 図の作成に使用するのが非常に簡単であるため、一般的に ER 図の描画には Office Visio が推奨されます。楕円形、ひし形、長方形、実線セグメントなどの基本的な ER 図要素を使用して、対応する情報を表現します。楕円形は属性、つまりエンティティの特性を表し、長方形はエンティティ、つまりデータベース内の特定のデータ テーブルを表します。ひし形は実体を表し、実線部分は主に楕円、長方形、ひし形の接続を完成させるためのものであり、この方法に基づいて、このシステムの ER 図の完全な描画を完成させることができます。
(1) 図 4.4 にサイトエンティティが持つ属性値を示します。
図 4.4 サイトエンティティの属性マップ
(2) 図 4.5 にユーザエンティティが持つ属性値を示します。
図4.5 ユーザーエンティティの属性グラフ
(3) 図 4.6 は、このエンティティが所有する属性値を公表するものです。
図 4.6 アナウンスメントエンティティの属性図
- 図 4.7 に、管理者エンティティが所有する属性値を示します。
図 4.7 管理者エンティティのプロパティ図
- 図 4.8 は、上で紹介したエンティティに存在する関係を示しています。
図 4.8 エンティティ間の関係の ER 図
4. 2 .2 データベーステーブルの設計
このセクションの主なタスクは、上記の内容に基づいてデータの格納構造を設計すること、つまり、システムのデータをデータベースに格納するデータ テーブルを設計することです。一般的に、エンティティとデータ テーブルに対応して、エンティティの属性はフィールド名を表すために使用されます。フィールドごとに表現されるデータ型と値は異なります。ここでは、実際のフィールドに応じて設定する必要がありますシステムのデータであり、特定のテーブルでも決定する必要がありますテーブルの主キーとテーブルの各フィールドを空のままにできるかどうかを説明しますデータ テーブルの構造を設計した後は、次のことも必要です保存するときに名前を付けます。将来システムがデータ テーブルを編集するのに便利なように、英語の名前を選択して名前を付けて保存するようにしてください。データ ストレージにアクセスするとき、データ ストレージの効率を向上させるのは簡単ではありません。システムエラーを引き起こす可能性があります。次に、設計したデータテーブルが表示されます。
表4.1 ユーザーテーブル
分野 |
ノート |
タイプ |
ヌル |
id (主キー) |
主キー |
int(11) |
いいえ |
ユーザー名 |
アカウント |
varchar(200) |
はい |
パスワード |
パスワード |
varchar(200) |
はい |
ヨンフ_名前 |
ユーザー名 |
varchar(200) |
はい |
ヨンフ_フォン |
ユーザーの電話番号 |
varchar(200) |
はい |
永湖ID番号 |
ユーザーID番号 |
varchar(200) |
はい |
ヨンフ_写真 |
プロフィールの写真 |
varchar(200) |
はい |
性別の種類 |
性別 |
int(11) |
はい |
ヨンフ_メール |
Eメール |
varchar(200) |
はい |
新しいお金 |
バランス |
10 進数(10,2) |
はい |
作成時間 |
作成時間 |
タイムスタンプ |
はい |
表4.2 サイトテーブル
分野 |
ノート |
タイプ |
ヌル |
id (主キー) |
主キー |
int(11) |
いいえ |
changdi_uuid_number |
会場番号 |
varchar(200) |
はい |
チャンディ_名前 |
会場名 |
varchar(200) |
はい |
チャンディ写真 |
会場の写真 |
varchar(200) |
はい |
changdi_types |
会場の種類 |
int(11) |
はい |
changdi_old_money |
会場本来の価格 |
10 進数(10,2) |
はい |
changdi_new_money |
サイト価格 |
10 進数(10,2) |
はい |
石建端 |
期間 |
varchar(200) |
はい |
shijianduan_ren |
人々の数 |
int(11) |
はい |
changdi_clicknum |
クリック数 |
int(11) |
はい |
banquan_types |
ハーフタイム |
int(11) |
はい |
シャンシアタイプ |
棚にありますか |
int(11) |
はい |
ツイジャン |
おすすめの食事場所 |
varchar(200) |
はい |
changdi_delete |
墓石 |
int(11) |
はい |
changdi_content |
会場紹介 |
文章 |
はい |
作成時間 |
作成時間 |
タイムスタンプ |
はい |
表 4.3 サイト コレクション テーブル
分野 |
ノート |
タイプ |
ヌル |
id (主キー) |
主キー |
int(11) |
いいえ |
changdi_id |
サイト |
int(11) |
はい |
ヨンフ_id |
ユーザー |
int(11) |
はい |
changdi_collection_types |
タイプ |
int(11) |
はい |
挿入時間 |
収集時間 |
タイムスタンプ |
はい |
作成時間 |
作成時間 |
タイムスタンプ |
はい |
表4.4 会場予約フォーム
分野 |
ノート |
タイプ |
ヌル |
id (主キー) |
主キー |
int(11) |
いいえ |
changdi_order_uuid_number |
订单号 |
varchar(200) |
是 |
changdi_id |
场地 |
int(11) |
是 |
yonghu_id |
用户 |
int(11) |
是 |
changdi_order_true_price |
实付价格 |
decimal(10,2) |
是 |
changdi_order_types |
订单类型 |
int(11) |
是 |
shijianduan |
预约时间段 |
varchar(200) |
是 |
buy_time |
预约日期 |
date |
是 |
insert_time |
订单创建时间 |
timestamp |
是 |
create_time |
创建时间 |
timestamp |
是 |
表4.5 论坛表
字段 |
注释 |
类型 |
空 |
id (主键) |
主键 |
int(11) |
否 |
forum_name |
帖子标题 |
varchar(200) |
是 |
yonghu_id |
用户 |
int(11) |
是 |
users_id |
管理员 |
int(11) |
是 |
forum_content |
发布内容 |
text |
是 |
super_ids |
父id |
int(11) |
是 |
forum_types |
帖子类型 |
int(11) |
是 |
forum_state_types |
帖子状态 |
int(11) |
是 |
insert_time |
发帖时间 |
timestamp |
是 |
update_time |
修改时间 |
timestamp |
是 |
create_time |
创建时间 |
timestamp |
是 |
表4.6 公告信息表
字段 |
注释 |
类型 |
空 |
id (主键) |
主键 |
int(11) |
否 |
gonggao_name |
公告名称 |
varchar(200) |
是 |
gonggao_photo |
公告图片 |
varchar(200) |
是 |
gonggao_types |
公告类型 |
int(11) |
否 |
insert_time |
公告发布时间 |
timestamp |
是 |
gonggao_content |
公告详情 |
text |
是 |
create_time |
创建时间 |
timestamp |
是 |
表4.7 管理员表
字段 |
注释 |
类型 |
空 |
id (主键) |
主键 |
bigint(20) |
否 |
username |
用户名 |
varchar(100) |
否 |
password |
密码 |
varchar(100) |
否 |
role |
角色 |
varchar(100) |
是 |
addtime |
新增时间 |
timestamp |
否 |
编程人员在搭建的开发环境中,运用编程技术实现本系统设计的各个操作权限的功能。在本节中,就展示部分操作权限的功能与界面。
5.1 管理员后台功能实现
5.1.1 论坛管理
图5.1 即为编码实现的论坛管理界面,管理员在该界面中查看论坛回复信息,修改论坛帖子内容,可以删除论坛帖子。论坛信息包含帖子标题,用户姓名,用户手机号,用户身份证,查询的时候可以通过这些信息查询出来结果,添加内容的时候需要输入帖子类型,帖子标题,发布内容。
图5.1 论坛管理界面
管理员添加论坛:
@RequestMapping("/save")
public R save(@RequestBody ForumEntity forum, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,forum:{}",this.getClass().getName(),forum.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return R.error(511,"权限为空");
else if("用户".equals(role))
forum.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
else if("管理员".equals(role))
forum.setUsersId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<ForumEntity> queryWrapper = new EntityWrapper<ForumEntity>()
.eq("forum_name", forum.getForumName())
.eq("yonghu_id", forum.getYonghuId())
.eq("users_id", forum.getUsersId())
.eq("super_ids", forum.getSuperIds())
.eq("forum_types", forum.getForumTypes())
.eq("forum_state_types", forum.getForumStateTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
ForumEntity forumEntity = forumService.selectOne(queryWrapper);
if(forumEntity==null){
forum.setInsertTime(new Date());
forum.setCreateTime(new Date());
forumService.insert(forum);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
5.1.2 用户管理
图5.2 即为编码实现的用户管理界面,管理员在该界面中为注册系统的用户重置密码,更改用户的头像,电子邮箱等基础信息,删除需要删除的用户。用户信息包含账号,密码,手机号,身份证,头像,性别,电子信箱,余额等。查询的时候只需要提供用户姓名,手机号,身份证就可以查询。
图5.2 用户管理界面
用户添加:
@RequestMapping("/save")
public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return R.error(511,"权限为空");
Wrapper<YonghuEntity> queryWrapper = new EntityWrapper<YonghuEntity>()
.eq("username", yonghu.getUsername())
.or()
.eq("yonghu_phone", yonghu.getYonghuPhone())
.or()
.eq("yonghu_id_number", yonghu.getYonghuIdNumber())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
YonghuEntity yonghuEntity = yonghuService.selectOne(queryWrapper);
if(yonghuEntity==null){
yonghu.setCreateTime(new Date());
yonghu.setPassword("123456");
yonghuService.insert(yonghu);
return R.ok();
}else {
return R.error(511,"账户或者用户手机号或者用户身份证号已经被使用");
}
}
5.1.3 场地管理
图5.3 即为编码实现的场地管理界面,管理员在该界面中可以更改场地信息,新增新的场地信息,删除需要删除的场地资料。场地搜索只需要输入场地名称,场地类型就可以查到结果。新增场地则需要输入场地编号,场地名称,照片,类型,原价,现价,时间段,半全场,推荐吃饭地点,场地介绍等。
图5.3 场地管理界面
场地修改:
@RequestMapping("/update")
public R update(@RequestBody ChangdiEntity changdi, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,changdi:{}",this.getClass().getName(),changdi.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
Wrapper<ChangdiEntity> queryWrapper = new EntityWrapper<ChangdiEntity>()
.notIn("id",changdi.getId())
.andNew()
.eq("changdi_uuid_number", changdi.getChangdiUuidNumber())
.eq("changdi_name", changdi.getChangdiName())
.eq("changdi_types", changdi.getChangdiTypes())
.eq("shijianduan", changdi.getShijianduan())
.eq("shijianduan_ren", changdi.getShijianduanRen())
.eq("changdi_clicknum", changdi.getChangdiClicknum())
.eq("banquan_types", changdi.getBanquanTypes())
.eq("shangxia_types", changdi.getShangxiaTypes())
.eq("tuijian", changdi.getTuijian())
.eq("changdi_delete", changdi.getChangdiDelete())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
ChangdiEntity changdiEntity = changdiService.selectOne(queryWrapper);
if("".equals(changdi.getChangdiPhoto()) || "null".equals(changdi.getChangdiPhoto())){
changdi.setChangdiPhoto(null);
}
if(changdiEntity==null){
changdiService.updateById(changdi);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
5.1.4 场地订单管理
图5.4 即为编码实现的场地订单管理界面,管理员在该界面中对用户预约的场地订单进行查询,更改等,查看场地预约订单的预约时间段信息以及订单类型等信息。可以通过输入场地名称,类型,用户姓名,用户手机号,用户身份证号来进行查询场地预约信息。
图5.4 场地订单管理界面
场地订单列表:
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return R.error(511,"权限为空");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
if(params.get("orderBy")==null || params.get("orderBy")==""){
params.put("orderBy","id");
}
PageUtils page = changdiOrderService.queryPage(params);
//字典表数据转换
List<ChangdiOrderView> list =(List<ChangdiOrderView>)page.getList();
for(ChangdiOrderView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
5.1.5 公告信息管理
图5.5 即为编码实现的公告信息管理界面,管理员在该界面中负责发布公告信息,更改公告信息的部分信息,删除需要删除的公告。
图5.5 公告信息管理界面
5.2 用户前台功能实现
5.2.1 场地信息
图5.6 即为编码实现的场地信息界面,用户在该界面中对场地进行预定,或收藏场地方便下次查看场地信息。可以看到的场地名称,类型,原价,现价,人数,点击次数,半全场,推荐吃饭地点,订购日期,订购时间段详情介绍。
图5.6 场地信息界面
场地预约:
@RequestMapping("/add")
public R add(@RequestBody ChangdiOrderEntity changdiOrder, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,changdiOrder:{}",this.getClass().getName(),changdiOrder.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if("用户".equals(role)){
ChangdiEntity changdiEntity = changdiService.selectById(changdiOrder.getChangdiId());
if(changdiEntity == null){
return R.error(511,"查不到该场地");
}
if(changdiEntity.getChangdiNewMoney() == null){
return R.error(511,"场地价格不能为空");
}
Integer userId = (Integer) request.getSession().getAttribute("userId");
YonghuEntity yonghuEntity = yonghuService.selectById(userId);
if(yonghuEntity == null)
return R.error(511,"用户不能为空");
if(yonghuEntity.getNewMoney() == null)
return R.error(511,"用户金额不能为空");
double balance = yonghuEntity.getNewMoney() - changdiEntity.getChangdiNewMoney();//余额
if(balance<0)
return R.error(511,"余额不够支付");
List<Integer> changdiOrderTypes = new ArrayList<>();
changdiOrderTypes.add(2);
String buyTime = new SimpleDateFormat("yyyy-MM-dd").format(changdiOrder.getBuyTime());
List<ChangdiOrderEntity> changdiOrderEntities = changdiOrderService.selectList(new EntityWrapper<ChangdiOrderEntity>().notIn("changdi_order_types", changdiOrderTypes).eq("shijianduan", changdiOrder.getShijianduan()).eq("buy_time",buyTime));
if(changdiOrderEntities != null && changdiOrderEntities.size()>0)
return R.error(511,buyTime+" 那天的 "+changdiOrder.getShijianduan()+" 的时间段已经被预约了");
changdiOrder.setYonghuId(userId); //设置订单支付人id
changdiOrder.setInsertTime(new Date());
changdiOrder.setCreateTime(new Date());
changdiOrder.setChangdiOrderTypes(1);
changdiOrder.setChangdiOrderTruePrice(changdiEntity.getChangdiNewMoney());
changdiOrder.setChangdiOrderUuidNumber(String.valueOf(new Date().getTime()));
changdiOrderService.insert(changdiOrder);//新增订单
yonghuEntity.setNewMoney(balance);//设置金额
yonghuService.updateById(yonghuEntity);
return R.ok();
}else{
return R.error(511,"您没有权限支付订单");
}
}
5.2.2 在线论坛
图5.7 即为编码实现的在线论坛界面,用户在该界面中对论坛所有帖子进行查看,查看帖子之后可以发布帖子评论,用户也能点击发布帖子链接进入新界面发布自己的帖子。主要可以看到帖子标题,发布人权限,发布时间,可以对这些帖子进行回复操作。
图5.7 在线论坛界面
5.2.3 场地预约
图5.8 即为编码实现的场地预约界面,用户在该界面中浏览已经预约的场地。如果存在误操作,用户可以取消预约的场地。在个人中心我的场地预约里面,有全部场地预约,已使用,取消预约,已预约这几个状态的预约信息,已经取消预约的不能再取消,已预约尚未取消预约的才可以取消预约。
图5.8 场地预约界面
我的预约:
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
// 没有指定排序字段就默认id倒序
if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
params.put("orderBy","id");
}
PageUtils page = changdiOrderService.queryPage(params);
//字典表数据转换
List<ChangdiOrderView> list =(List<ChangdiOrderView>)page.getList();
for(ChangdiOrderView c:list)
dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
return R.ok().put("data", page);
}
第6章 软件测试
当系统测试环节开始的时候,也就说明对于系统的编码已经弄得大致通顺了,剩下来需要对一些模块和功能进行测试,这个环节就叫系统测试。在程序开发过程中,系统测试是整个开发过程必不可少的一个环节。原因很简单,系统开发人员在面对各种需求需要对各个模块进行编码,开发人员编写过程中,对于程序的理解全部都在编码里面,一人计短,当一个人去做一些事情的时候,把自己的理解变成成果,很有可能会出现理解偏差,甚至是理解错误,这个在程序开发过程中很常见。程序开发人员在面对复杂的逻辑,没有想象中的多么清晰,开发过程就是面对着一堆代码,不断的变换数据类型,并且对各种操作用计算机编程语言进行实现,这些很容易实现程序开发人员的想法,但是如果是比较复杂的逻辑,很可能会出现各种问题,这是无法避免的。所以说,需要额外的人员进行系统测试编写,不要站在程序开发人员的角度去思考问题,要站在用户使用的角度去发现问题,这样开发与测试的分离,有助于系统开发的强壮,让程序表达的更完美一些。之所以把系统测试安排到程序开发过程中的原因在于,当测试发现问题,就可以直接反馈到程序开发人员手里,可以以最快的时间解决问题,这样能大大的提高开发效率。总的来说,在整个软件开发过程中,系统测试这个环节也必须要重视的,所以必须在系统测试环节做好应该做好的事情,让程序开发从开始到结束都有一个完美的流程。
6.1 测试用例
本节主要选择一些功能进行具体测试描述,在相应的功能里面,根据不同的合法与不合法条件输入看程序是否设定的有相关的判断,能否达到使用效果。以下会描述部分功能的测试过程和结果。
登录是一个常规功能,虽然是常规功能,但是用处很大,可以拒绝非法用户访问,只有合法用户才可以访问对应的功能,这样能保证程序设定的功能符合安全性要求。
表6.1 管理员登录功能测试表
管理员账号 |
管理员密码 |
结果 |
uuu |
uuu |
成功登录系统 |
yyy |
uuu |
登录失败 |
uuu |
yyy |
登录失败 |
只有正确的账号密码才会进行跳转到对应的功能区,如果输入的账号密码不对的话,肯定会有相关提示,用来提示操作人员注意输入正确的账号密码,这样有助于提高用户体验。这里以使用者提交错误的账号为“yyy”,正确的密码为“uuu”为例进行测试,具体反馈结果看下面。
图6.1 登录失败提示
2. 修改密码功能测试
任何用户角色都有安全性要求,那么对应的密码最好是经常更改,只有经常更改才会降低坏人的有机可乘几率,达到密码保护的最低要求,当然,如果用户登录人离开了,为了防止其他人乘机篡改密码,那么也会设定旧密码要求,只有输入正确的旧密码才可以进行密码的修改。下面就是测试过程。
表6.2 修改密码功能测试表
之前的旧密码 |
设置的新密码 |
结果 |
uuu |
yyy |
成功修改密码 |
hhh |
yyy |
修改密码失败 |
uuu |
修改密码失败 |
不管是旧密码错误还是新密码不合规,都会提示相应的要求,下面就是关于旧密码输入错误的提示。
图6.2 错误的旧密码反馈提示
3. 公告功能测试
公告信息属于管理员发布的,如果不输入则不让提交,输入了才可以提交。下面就是测试过程。
表6.3 公告功能测试表
公告信息 |
结果 |
不输入公告名称,公告图片,公告类型 |
提示公告名称不能为空,公告图片不能为空,公告类型不能为空 |
全部输入不留空 |
操作成功 |
不输入任何信息就提交公告会会提示。下图就是提示。
图6.3 不输入直接提交的反馈提示
4. 论坛功能测试
论坛信息属于管理员发布的,如果不输入则不让提交,输入了才可以提交。下面就是测试过程。
表6.4 论坛功能测试表
论坛信息 |
结果 |
不输入帖子类型,帖子标题,发布内容 |
提示帖子类型,帖子标题,发布内容不能为空 |
全部输入不留空 |
操作成功 |
不输入任何信息就提交论坛会提示。下图就是提示。
图6.4 不输入直接提交的反馈提示
5. 用户功能测试
管理员添加用户信息,必须都输入,哪个不输入就提示哪个不能为空。下面就是测试过程。
表6.4 用户功能测试表
用户信息 |
结果 |
都不输入 |
都提示不能为空 |
全部输入不留空 |
操作成功 |
不输入任何信息就提交会提示。下图就是提示。
图6.5 不输入直接提交的反馈提示
6.2 测试结果
对体育馆使用预约平台进行了各种检测,包含功能检测和性能检测,甚至是系统的操作性方面也进行了检测,以及兼容性检测,通过各方面检测结果来判定系统是符合设计目标,达到开发预期。系统是可以实现所开发的功能,并且在扩展性或者是稳定性上面,也有很好的表现,能完全的满足用户需求。
结 论
由于本人学习的是计算机方面的专业,对于计算机软件方面的相关知识也进行过课堂上的学习以及课后的实际操作练习,因此,对于开发一款已经确定了课题的体育馆使用预约平台,从功能需求,功能模块划分,数据库的选择,数据库的设计,编程语言的确定,系统界面的布局和设计等知识,我都有个大致的思路。所以,在参照软件设计思想以及设计流程的基础上,我运用已经具备的理论知识,加上后期从网络渠道获取的相关技术知识,我能够根据制定的系统开发时间安排完成各个阶段性的开发任务。并能够在系统完成开发后期,编写相应的系统文档。
体育馆使用预约平台制作期间,我也遇到过一些难题,在最开始的时候,我并不知道该系统具体要设计几个功能模块,以及数据表需要设计几张表,还有对于开发技术的深度理论学习还不充分等,值得庆幸的是,我在面临这些困难时,我能够通过网络或者通过学院提供的图书馆寻求解决办法。比如在不知道具体功能的情况下,我从网上下载了很多的与体育馆使用预约平台相关的程序,分析了它们的功能之后,我再结合即将开发的体育馆使用预约平台进行综合分析,选取了适合体育馆使用预约平台的功能部分,再结合实际情况以及使用者的需求确定本系统功能。对于数据表的设计,我先是在图书馆借阅了一本数据库方面的书籍进行查看,然后查看相似系统对于数据表的结构设计等知识,然后在本系统功能确定的情况下,结合本系统设计了配套的数据表,对于难度最大的开发技术部分,我花费了很多的时间研究网络上的相似系统的功能模块上的代码,一般都是对基础数据的增加,更新,查询或修改方面的代码,然后把本系统能够运用的代码部分在简单更改后进行使用,在完成了一个功能模块以及又一个功能模块之后,又经过了简单的测试工作,最终呈现出一个完整的能够解决用户实际问题的体育馆使用预约平台。该系统唯一不足的就是代码方面还有很多重复的部分,不够精简,还有用户操作本系统,对于用户的误操作行为,本系统还不能及时反馈,这也是一大缺点。
体育馆使用预约平台完成了,其相应的配套文档也需要进行编写,该文档主要描述体育馆使用预约平台是如何进行分析,设计以及实现的,让其他阅读本文档的人增加对该系统的了解,编写文档过程中,由于自己平时对于办公软件的操作不是很频繁,根据学院要求的文档排版格式进行编辑也花了很多时间,在不断学习排版技巧以及对本系统配套文档的反复修改之后,最终在学院规定的时间内进行了文档定稿。
毕业项目各个工作进行到此,我也是收获颇丰,正因为自己努力学习知识,积极寻求解决办法,才让我能够提交一个完整的作品。制作毕业项目让我又得到了成长,不仅是专业知识的增加,也包括解决问题的能力得到了提高,很感谢学院给的制作毕业项目的机会。
参考文献
[1]岳增霖,金浩轩,张伟豪,汤毅. 基于Onenet及微信小程序的校园运动场地预约系统[J]. 电子产品世界,2019,26(12):55-59.
[2]刘美琪,李婉萍,孙方斌,付国强. 基于Web的体育场馆预约系统[J]. 电子科技,2016,29(04):104-106+110.
[3]余涛.计算机软件开发中Java编程语言的应用研究[J].信息记录材料,2020,21(01):113-115.
[4]王子虎,胡丽珍.基于计算机软件安全开发的JAVA编程语言研究[J].数字技术与应用,2019,37(12):133-134.
[5]刘星淇.Java编程语言的特点与应用分析[J].通讯世界,2019,26(09):149-150.
[6]张云健.计算机软件Java编程特点及其技术应用[J].信息与电脑(理论版),2019(13):97-98.
[7]张振超,吴杰,陈序蓬.浅谈Java中Mysql数据库的连接与操作[J].信息记录材料,2020,21(02):144-145.
[8]范开勇,陈宇收.MySQL数据库性能优化研究[J].中国新通信,2019,21(01):57.
[9]丁佳.基于JSP+MySQL的用户登录系统SQL注入实例及防范[J].网络安全技术与应用,2020(09):49-51.
[10]王丹,孙晓宇,杨路斌,高胜严.基于SpringBoot的软件统计分析系统设计与实现[J].软件工程,2019,22(03):40-42.
[11]张峰.应用SpringBoot改变web应用开发模式[J].科技创新与应用,2017(23):193-194.
[12]谢志坚.计算机应用软件开发技术支撑思考[J].电子世界,2020(15):53-54.
[13]姬晓鹏.计算机软件开发技术与设计探究[J].电子测试,2020(16):133-134.
[14]Raffi Khatchadourian.Automated refactoring of legacy Java software to enumerated types[J].Automated Software Engineering,2017,24(4).
[15]Ben White.Marx and Chayanov at the margins:understanding agrarian change in Java[J].The Journal of Peasant Studies,2018,45(5-6).
致 谢
也许是大学校园在管理上比较开放,学习知识时不像高中时期那样一整天都在学习,而是一天当中抽出部分时间安排学习,其余的时间就可以自由安排,可以去社会上参加实践,可以在学校的图书馆阅读书籍,丰富自己的知识,也可以加入学校的社团进行个人能力的锻炼等等,加上学院的学生都来自全国各地,大家的风俗习惯都有些不一样,这样同学之间也有更多的话题进行畅聊。基于这些原因,我觉得我的性格也逐渐变得开朗起来,正因为如此,我很快乐的度过了大学四年时光。然而,我们都要面临毕业,同学间,师生间也将面临分离,我们都会离开学校,进入社会这样的大环境学习并生活。虽然很不舍,但这也是人生成长中必经的阶段!
临走之际,对这几年的大学生活简单的进行了回想,发现自己学到的专业知识也增加了很多,在本专业上,自己也得到了一定的实操能力锻炼。这些成长都是我们的专业老师带来的,他们这几年辛苦教学,我们也从中获取了许多的专业知识,提高了个人的专业方面的能力,非常感谢他们。
还有一位老师也需要在此特别感谢,即论文指导老师。可以说最后这一年,跟指导老师接触比较多,指导老师在本专业上,非常全能,在我进行本课题的任务期间,导师给予我全面的指导,也能根据我的不足之处推荐合适的书籍让我查看,让我的能力得以提升,继而可以从容面对开发期间遇到的困难。
另外,我也要感谢我的寝室室友,还有我们班上的同学,从接到毕业项目任务之后,我们常常谈论各自课题进展的情况以及面临的问题,也经常互相鼓励对方要积极认真面对毕业项目,这种陪伴,让我在制作毕业项目期间并没有产生过多的焦虑,非常感谢他们。
最后时刻,我也要对我的大学校园表达谢意,我的大学校园是一个非常美丽的地方,而我这几年,在这么优美的环境下学习知识,我已经感到非常幸福。希望在今后能看到我的校园在众多师生共同努力下变得强大,校园的环境也将变得更加美丽。