Springboot 大学生の食品管理プラットフォーム WeChat ミニ プログラム
XXXX部門
件名 カテゴリXXX
プロフェッショナル XXX _
クラス XXX
学生番号 XXX
名前XXX _
202年 4 月_ _ _
まとめ
我が国の経済の急速な発展に伴い、携帯電話に対する人々の需要は増大しており、各種携帯電話用ソフトウェアも広く利用されていますが、携帯電話におけるデータ情報管理のために、携帯電話用の各種ソフトウェアもユーザーの間で高い人気を誇っています。学生ダイエット管理プラットフォームのWeChatアプレットはユーザーに広く使用されており、ユーザーがいつでもオンラインで食品情報を閲覧し、データ情報管理を容易にするために、大学生向けの食事管理プラットフォームのWeChatアプレットが特別に開発されました。
大学生の食事管理プラットフォームの WeChat アプレットの設計では、主にシステムに実装する機能を詳細に検討し、実装する機能を決定した後にインターフェイスを設計します。機能とページをどのように統合するか、その組み合わせにより、ユーザーが必要な情報を簡単かつ明確に見つけやすくなり、その後のシステム基盤の操作性も向上し、システム基盤を詳細に理解した上で技術開発を行うことができます。情報コンテンツ。
大学生の食品管理プラットフォーム用のWeChatアプレットの開発では、既存の成熟したテクノロジーを参照として使用し、ソースコードをテンプレートとして使用し、機能の調整を分析し、それを大学生の食品管理のWeChatアプレット管理の実際のニーズと組み合わせます。管理プラットフォーム、プログラム管理の使用。
キーワード:大学生の食料管理プラットフォーム用 WeChat アプレット;Eclipse;Java;springboot
抽象的な
中国経済の急速な発展に伴い、携帯電話に対する人々の需要が高まっており、さまざまなモバイルソフトウェアも広く使用されています。しかし、携帯電話でのデータ情報管理に関しては、携帯電話上の各種ソフトウェアもユーザーからの支持が高いです。大学生の食事管理プラットフォームの WeChat ミニ プログラムは、ユーザーによって広く使用されています。ユーザーがいつでもオンラインで食品情報を閲覧できるように、データ情報管理を実行できるように、大学生の食品管理プラットフォーム用の WeChat ミニ プログラムを開発しました。
大学生の食事管理プラットフォーム用の WeChat ミニ プログラムの設計には、主にシステムによって実装される機能の詳細な検討が含まれます。実装する機能が決まったらインターフェースの設計を行います。その際には、ユーザーが必要な情報を見つけやすくするための機能やページの統合や、後段のシステム基盤の操作性なども考慮する必要があり、情報を深く理解することで技術を開発します。コンテンツ。
大学生の食品管理プラットフォーム用の WeChat ミニ プログラムの開発では、既存の成熟したテクノロジーを参考として利用し、ソース コードをテンプレートとして使用し、機能の調整を分析し、大学生向けの WeChat ミニ プログラム管理の実際のニーズと組み合わせます。大学生の食品管理プラットフォーム。大学生の食事管理プラットフォームに基づいた WeChat ミニプログラム管理の使用について説明します。
キーワード:大学生の食品管理プラットフォーム WeChat ミニ プログラム。Eclipse; Java; スプリングブート
目次
2大学生の食品管理プラットフォームの WeChat ミニプログラムの分析
3大学生の食品管理プラットフォーム用 WeChat アプレットの全体設計
4大学生の食品管理プラットフォーム用の WeChat アプレットの設計と実装
5大学生の食事管理プラットフォームのWeChatアプレットテスト
結論32
謝辞3 5
1 はじめに
1.1テーマ選定の背景
インターネット時代の到来により、インターネットの利点と人気は常に人々のライフスタイルに影響を与え、変化させています。今日、情報技術の急速な発展により、コンピュータ技術が世界中に普及し、社会に大きな変化をもたらしています。
スマートフォンユーザーは、時間や場所に制限されずに、モバイルネットワークを介してウェブサイトにアクセスしたり、さまざまなビジネスやインターネットを利用したりすることができるため、アプリケーションシステムの機能をモバイル端末に拡張する有効な手段となります。現在、さまざまなスマートフォンが次々と登場し、携帯電話プラットフォームをベースにしたさまざまなソフトウェアが登場していますが、数あるコミュニケーションソフトウェアの中でもWeChatは人々に非常に人気があります。近年、WeChatはますます規模が大きくなり、WeChatを使用する人が増え、現在ではスマートフォンシステムの普及により、基本的に誰もが携帯電話でWeChatを使用するようになりました。
したがって、WeChat は、一般アカウントの注目を集めるためにミニ プログラムの広告を開始しました。これは、ミニ プログラムと一般アカウントの間のチャネルが完全に開かれたことを意味します。この論文の大学生の食事管理プラットフォームには、主にプログラム、データベース、コンピューター技術が含まれます。幅広い知識をカバーすることで、システムの一般ユーザーの効率を大幅に向上させることができます。
1.2 研究状況
社会の発展と科学技術の進歩に伴い、インターネット技術の普及はますます進んでいます。インターネットを通じて広がるライフスタイルは、徐々に人々に浸透してきています。ますます多くのインターネット愛好家がインターネット上で基本的なニーズを満たし始めており、同時にインターネットはさまざまなユーザーの日常生活に徐々に浸透しつつあります。インターネットには、利便性、速度、高効率、低コストなど多くの利点があります。そのため、大学生向けの食事管理プラットフォームと同様に、ユーザーの多忙なニーズに応え、いつでも情報を閲覧できる便利なだけでなく、管理効率も向上します。
この記事はまず、WeChat アプレットに基づく大学生の食事管理プラットフォームのプロセスの基本的な問題を研究対象とします。システムを開発する前に、現状の詳細な調査と分析を実施しました。最後に、コンピューター技術を使用して、WeChat アプレットに基づいた大学生向けの完全で適切な食事管理プラットフォームを開発しました。このシステムの導入の主な利点は、システムが主にコンピュータ技術を使用して開発されており、便利で高速であること、システムが管理者インターフェイスを通じてユーザーの情報管理をすべて表示できることです。
WeChat アプレットをベースにした大学生の食事管理プラットフォーム ソフトウェアは、便利で高速かつ実用的な情報サービス クエリ ソフトウェアです。世界市場でインテリジェントネットワークが継続的に普及し、さまざまなインテリジェントプラットフォームが使用されるにつれて、システム開発は人々の日常ニーズに関連しており、中国の主流のインテリジェント技術開発システムとして、より多くのユーザーと経験のニーズを満たすために、このようなソフトウェアが当然必要になっています。
1.3 関連技術の紹介
(1) 大学生のダイエット管理プラットフォームの WeChat アプレットの Web バックグラウンド管理のバックエンドは、古い jsp+javabean+servlet テクノロジーを使用せず、現在の主流の springboot フレームワークを使用します。これにより、Java 構成コードが削減され、プログラミング コードが簡素化されます。現在、springboot フレームワークも多くの企業に選ばれているフレームワークの 1 つです。
(2) 大学生の食事管理プラットフォームの WeChat アプレットの Web バックグラウンド管理のフロントエンドはブートストラップ フレームワークを使用しており、ajax と jquery でページのデザインを美しくすることができます。
(3) 人気のある vue フレームワークは、jQuery テクノロジーを組み合わせ、jQuery に基づいて一部のプラグインを拡張し、プラグインを自分で定義することでフロントエンド設計をより適切に実現します。
(4)大学生のダイエット管理プラットフォームWeChatアプレットのデータベースには実行効率の高いMysql5.7を採用しています。
1.4スプリングブートフレームワークの概要
Spring フレームワークは、制御反転特性を備えたコンテナを提供する Java プラットフォーム上のオープン ソース アプリケーション フレームワークです。Spring フレームワーク自体にはプログラミング モデルに制限はありませんが、Java アプリケーションで頻繁に使用されるため非常に人気があり、後に EJB (Enterprise JavaBeans) モデルの補足として、または代替として使用されるようになりました。Spring フレームワークは、制御の反転のコア機能の利用や、管理対象オブジェクトのライフサイクルのコンテナ化を実装するための依存関係注入による制御の反転の実装、宣言型トランザクション管理のためのアスペクト指向プログラミングの使用など、開発のための一連のソリューションを提供します。統合 さまざまな永続化テクノロジによってデータ アクセスが管理され、開発を容易にする多数の優れた Web フレームワークが提供されます。Spring フレームワークには Inversion of Control (IOC) 機能があり、プロジェクトのメンテナンスとテストを容易にするように設計されており、Java のリフレクション メカニズムを通じて Java オブジェクトの統合設定と管理の方法を提供します。Spring フレームワークは、コンテナを使用してオブジェクトのライフ サイクルを管理します。コンテナは、XML ファイルまたはクラスの特定の Java アノテーションをスキャンすることでオブジェクトを構成できます。開発者は、依存関係の検索または依存関係の注入を通じてオブジェクトを取得できます。Spring フレームワークにはアスペクト指向プログラミング (AOP) フレームワークがあり、Spring AOP フレームワークはプロキシ モードに基づいており、実行時に構成可能です。AOP フレームワークは主にモジュール間の相互関係をモジュール化します。Spring フレームワークの AOP フレームワークは基本的な AOP 機能のみを提供しており、AspectJ フレームワークと比較することはできませんが、AspectJ との統合により基本的なニーズにも対応できます。Spring AOP技術を利用することで、Springフレームワークのトランザクション管理やリモートアクセスなどの機能を実現できます。Spring のトランザクション管理フレームワークは、Java プラットフォームに抽象化メカニズムを導入し、ローカルおよびグローバル トランザクション、およびネストされたトランザクションが、Java プラットフォーム上のほぼすべての環境でセーブポイントを使用して動作できるようにします。Spring にはさまざまなトランザクション テンプレートが統合されており、システムはトランザクション テンプレート、XML または Java アノテーションを通じてトランザクションを構成でき、トランザクション フレームワークにはメッセージングやキャッシュなどの機能が統合されています。Spring のデータ アクセス フレームワークは、開発者がアプリケーションでデータベースを使用するときに遭遇する一般的な問題を解決します。Java: JDBC、iBATS/MyBATIs、Hibernate、Java Data Objects (JDO)、ApacheOJB、ApacheCayne などのすべての一般的なデータ アクセス フレームワークのサポートを提供するだけでなく、Spring のトランザクション管理と併用してデータ アクセスを提供することもできます。 。Spring フレームワークは当初、独自の WebMVC フレームワークを構築するつもりはありませんでしたが、開発プロセス中、開発者は、既存の StrutsWeb フレームワークのプレゼンテーション層とリクエスト処理層の間、およびリクエスト処理層とモデルの間の分離が適切ではないと考えていました。それで十分だったので、彼らは SpringMVC を作成しました。
2 大学生の食品管理プラットフォームの WeChat ミニプログラムの分析
大学生の食品管理プラットフォームのWeChatアプレットに対する実際の需要を理解した後、大学生の食品管理プラットフォームのWeChatアプレットに必要な役割は、次の図2-1、図2-2、および図2に分割されました。 -3.
開発ツールの観点から見ると、大学生の食事管理プラットフォームの WeChat アプレットは JAVA に基づいているため、開発できる開発ツールが多数あり、これらの強力な開発ツールは、大学生のダイエット管理プラットフォームの WeChat アプレットの設計に大きなメリットをもたらします。大学生のダイエット管理プラットフォーム、とても便利です。
大学生の食料管理プラットフォームの WeChat アプレットの技術から判断すると、大学生の食料管理プラットフォームの WeChat アプレットを開発するのは難しいことではありません。大学生の食品管理プラットフォーム用 WeChat アプレットの開発は、フロントエンド開発、バックエンド開発、データベース開発に簡単に分けることができます。技術的な難しさのほとんどは学生時代に使用したもので、インターネット上には学ぶことができる技術的なポイントがたくさんあります。Web バックエンド管理は JAVA のスプリングブート アーキテクチャを使用して開発され、データベースは mysql を使用し、ページは JavaScript スクリプトを使用します。そのため、大学生の食料管理プラットフォーム用の WeChat アプレットを開発する際に、多くの冗長なコードを節約できます。卒業制作用の追加コードがたくさんあります。書くと非常に便利になります。要約すると、技術的な観点から、大学生の食料管理プラットフォーム用の WeChat アプレットを開発することは可能です。
ユーザーエクスペリエンスの観点では、市場で広く使われている多くのシステム事例を参考にすることができるので、そのページのインタラクションデザインの利点を組み合わせたり、卒業制作の特徴に基づいて修正したりすることで、最終的にユーザー満足度を達成することができます。インタラクティブな体験。要約すると、技術的な観点から、大学生の食料管理プラットフォーム用の WeChat アプレットを開発することは可能です。
大学生の食事管理プラットフォームの WeChat アプレットの開発コストから判断すると、大学生の食事管理プラットフォームの WeChat アプレットの設計と開発は私自身で完了し、その他のコストのオーバーヘッドはありませんでした。
大学生の食事管理プラットフォームの WeChat アプレットの保守コストから判断すると、大学生の食事管理プラットフォームの WeChat アプレットの開発は、コード記述仕様の完全なセットと、大学の WeChat アプレットの構造設計に従っています。学生の食事管理プラットフォームは非常に柔軟で、結合度が高いため、維持と反復開発が容易になります。
大学生の食事管理プラットフォームのWeChatアプレットのローンチ後、ローンチ初期段階で実際のニーズを調査し、大学生のダイエット管理プラットフォームのWeChatアプレットの使用に適した利用料金の設定を策定します。私が開発したダイエット管理プラットフォーム。システムが安定したら、他のキャンパスにも宣伝します。他のキャンパスでも私のWeChat アプレットを大学生の食事管理プラットフォームに使用できます。少額のデポジットを支払うだけで、広告投資や自主事業を紹介します。 。
上記の分析に基づいて、大学生の食料管理プラットフォームのWeChatアプレットがもたらす経済的利益は大きな利益をもたらすでしょう。そして、私のプロモーションにより、私が開発した大学生の食事管理プラットフォーム用WeChatアプレットを使用する市場はますます大きくなり、大学生の食事管理プラットフォーム用WeChatアプレットによってもたらされる利益も増加します。したがって、経済的な観点から、大学生の食品管理プラットフォーム用の WeChat ミニ プログラムを開発することは可能です。
大学生の食事管理プラットフォームの WeChat アプレットは、一般ユーザーと管理者の 3 つの役割に分かれています。
管理者ユーザーの役割:
(1) ログイン: 管理者のアカウントはデータテーブルに直接設定され、登録は必要ありません。
(2)アナウンス・カルーセル画像管理:管理者は、システムのフロントに表示されるカルーセル画像やアナウンスを、ユーザーが閲覧しやすいように追加・削除・変更・確認することができます。
(3)システム利用者:大学生給食管理プラットフォームのWeChatアプレット上の管理者とフロントに登録されている一般利用者を確認・管理することができます。
( 4 )リソース管理: 管理者は、大学生の食事管理プラットフォームの WeChat アプレットのフロントデスクに表示される健康知識とその知識が属するカテゴリを管理および制御できます。
( 5 )コミュニケーション管理: 管理者は、大学生の食事管理プラットフォームの WeChat アプレットのフロント デスクに表示されるコミュニティ フォーラムとフォーラムカテゴリを制御できます。
( 5 ) モジュール管理: 「モジュール管理」メニューでは、身体データ、レシピ情報、味分類、食品カテゴリー、食品情報、今日の摂取量など、一般ユーザーが操作するシステム内のすべての情報を管理できます。
一般ユーザーの役割:
(1) ユーザー登録とログイン:ユーザーは大学生給食管理プラットフォームのWeChatアプレットに一般ユーザーとして登録しログインし、個人情報やパスワード変更などの個人情報の追加、削除、変更、確認を行います。
(2)健康知識:ユーザー側のナビゲーション バーに、「健康知識」メニューが表示されます。クリックして入力すると、すべての健康知識のリストが表示されます。このインターフェイスでは、クリックして入力して表示できます。やコメント、いいねなど。
( 3 )お知らせ:クライアントナビゲーション バーに [お知らせ] メニューが表示され、クリックして入力すると、バックグラウンドですべての管理者によってリリースされたお知らせ情報が表示されます。
(4)コミュニティ フォーラム: ユーザーは、コミュニティ フォーラムメニューでユーザーの投稿を表示、公開し、コメントすることができます。
( 5 ) レシピ情報:レシピ情報を閲覧することができ、知りたいレシピ情報を見つけた場合、詳細な紹介文を入力・閲覧し、コメント・いいね・収集することができます。
( 6 ) グルメ情報:グルメ情報を閲覧することができ、知りたいグルメ情報が見つかった場合は、詳細な紹介を入力・閲覧して、コメント・いいね・収集することができます。
2.2.2 非機能分析
大学生ダイエット管理プラットフォームのWeChatアプレットの非機能要件には、大学生ダイエット管理プラットフォームのWeChatアプレットのセキュリティ、信頼性、パフォーマンス、拡張性などが含まれる。詳細は次の2-1表で表すことができます。
表2-1大学生の食事管理プラットフォームWeChat アプレットの非機能要件表
安全性 |
これは主に、大学生の食事管理プラットフォームのWeChat アプレットデータベースのインストールを指し、データベースの使用とパスワードの設定は標準に準拠する必要があります。 |
信頼性 |
信頼性とは、大学生のダイエット管理プラットフォームのWeChatアプレットがユーザーの指示をインストールして操作できることを意味し、テスト後の信頼性は90%以上です。 |
パフォーマンス |
大学生向けの食事管理プラットフォームである WeChat アプレットが市場を占有するにはパフォーマンスが必須条件であるため、パフォーマンスが良いことが最善です。 |
スケーラビリティ |
たとえば、データベースは、システムの非機能要件を確実に満たすために、インターフェイスの使用などの複数の属性を予約します。 |
使いやすさ |
ユーザーは、大学生ダイエット管理プラットフォームのWeChatアプレットのページに表示される内容に従うだけで済みます。 |
保守性 |
大学生の食事管理プラットフォームのWeChatアプレット開発は保守性が非常に重要ですが、テストの結果、保守性に問題はありませんでした。 |
2.3システムのユースケース分析
前節の機能分析に基づいて、システムのユースケースを描くことができます (通常のユーザー役割のユースケースを図 2.1 に示します)。
図 2.1 大学生の食料管理プラットフォームの WeChat アプレットにおける一般ユーザーの役割のユースケース図
管理者の役割の例を図 2.2 に示します。
図2.2 大学生の食料管理プラットフォームにおける WeChat アプレットの管理者役割のユースケース図
3 大学生の食品管理プラットフォーム用 WeChat アプレットの全体設計
第 2 章の大学生の食事管理プラットフォームの WeChat アプレットの機能分析によると、大学生の食事管理プラットフォームの WeChat アプレットの全体的な機能モジュール図は図 3.1 に示されています。
図 3.1 大学生食品管理プラットフォームの WeChat アプレットの機能モジュール図
3.3.1データベースの概念構造設計
以下は、大学生の食事管理プラットフォーム全体の WeChat アプレット内の主要なデータベース テーブルの主要な ER エンティティ関係図です。
図 3.2 大学生の食事管理プラットフォーム WeChat アプレットのトータル ER 関係図
テーブルコメント(コメント)
シリアルナンバー |
名前 |
データの種類 |
長さ |
小数位 |
Null値を許可する |
主キー |
デフォルト値 |
説明する |
1 |
コメントID |
整数 |
10 |
0 |
N |
Y |
コメントID: |
|
2 |
ユーザーID |
整数 |
10 |
0 |
N |
N |
0 |
コメント投稿者ID: |
3 |
Reply_to_id |
整数 |
10 |
0 |
N |
N |
0 |
返信コメントID: 空は0 |
4 |
コンテンツ |
長文 |
2147483647 |
0 |
Y |
N |
コンテンツ: |
|
5 |
ニックネーム |
可変長文字 |
255 |
0 |
Y |
N |
ニックネーム: |
|
6 |
アバター |
可変長文字 |
255 |
0 |
Y |
N |
アバターアドレス: [0,255] |
|
7 |
作成時間 |
タイムスタンプ |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
作成時間: |
8 |
更新時間 |
タイムスタンプ |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間: |
9 |
ソーステーブル |
可変長文字 |
255 |
0 |
Y |
N |
ソーステーブル: |
|
10 |
ソースフィールド |
可変長文字 |
255 |
0 |
Y |
N |
ソースフィールド: |
|
11 |
ソースID |
整数 |
10 |
0 |
N |
N |
0 |
ソースID: |
テーブルflavor_classification (フレーバー分類)
シリアルナンバー |
名前 |
データの種類 |
長さ |
小数位 |
Null値を許可する |
主キー |
デフォルト値 |
説明する |
1 |
フレーバー_分類_id |
整数 |
10 |
0 |
N |
Y |
フレーバーカテゴリーID |
|
2 |
味の分類 |
可変長文字 |
64 |
0 |
Y |
N |
味の分類 |
|
3 |
推薦する |
整数 |
10 |
0 |
N |
N |
0 |
インテリジェントな推奨事項 |
4 |
作成時間 |
日付時刻 |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
作成時間 |
5 |
更新時間 |
タイムスタンプ |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
テーブル food_category (食品カテゴリ)
シリアルナンバー |
名前 |
データの種類 |
長さ |
小数位 |
Null値を許可する |
主キー |
デフォルト値 |
説明する |
1 |
食品カテゴリーID |
整数 |
10 |
0 |
N |
Y |
食品カテゴリーID |
|
2 |
食品カテゴリー |
可変長文字 |
64 |
0 |
Y |
N |
食品カテゴリー |
|
3 |
推薦する |
整数 |
10 |
0 |
N |
N |
0 |
インテリジェントな推奨事項 |
4 |
作成時間 |
日付時刻 |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
作成時間 |
5 |
更新時間 |
タイムスタンプ |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新時間 |
テーブル food_information (食品情報)
シリアルナンバー |
名前 |
データの種類 |
長さ |
小数位 |
Null値を許可する |
主キー |
デフォルト値 |
説明する |
1 |
食品情報ID |
整数 |
10 |
0 |
N |
Y |
食品情報ID |
|
2 |
食べ物の名前 |
可変長文字 |
64 |
0 |
Y |
N |
食べ物の名前 |
|
3 |
食品カテゴリー |
可変長文字 |
64 |
0 |
Y |
N |
食品カテゴリー |
|
4 |
食べ物の写真 |
可変長文字 |
255 |
0 |
Y |
N |
食べ物の写真 |
|
5 |
食べ物_カロリー |
可変長文字 |
64 |
0 |
Y |
N |
食物热量 |
|
6 |
carbohydrate |
varchar |
64 |
0 |
Y |
N |
碳水化合物 |
|
7 |
protein |
varchar |
64 |
0 |
Y |
N |
蛋白质 |
|
8 |
fat |
varchar |
64 |
0 |
Y |
N |
脂肪 |
|
9 |
nutritional_composition |
text |
65535 |
0 |
Y |
N |
营养成分 |
|
10 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
11 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
12 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
13 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
14 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表forum (论坛)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
forum_id |
mediumint |
8 |
0 |
N |
Y |
论坛id |
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
排序 |
3 |
user_id |
mediumint |
8 |
0 |
N |
N |
0 |
用户ID |
4 |
nickname |
varchar |
16 |
0 |
Y |
N |
昵称:[0,16] |
|
5 |
praise_len |
int |
10 |
0 |
Y |
N |
0 |
点赞数 |
6 |
hits |
int |
10 |
0 |
N |
N |
0 |
访问数 |
7 |
title |
varchar |
125 |
0 |
N |
N |
标题 |
|
8 |
keywords |
varchar |
125 |
0 |
Y |
N |
关键词 |
|
9 |
description |
varchar |
255 |
0 |
Y |
N |
描述 |
|
10 |
url |
varchar |
255 |
0 |
Y |
N |
来源地址 |
|
11 |
tag |
varchar |
255 |
0 |
Y |
N |
标签 |
|
12 |
img |
text |
65535 |
0 |
Y |
N |
封面图 |
|
13 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文 |
|
14 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
15 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
16 |
avatar |
varchar |
255 |
0 |
Y |
N |
发帖人头像: |
|
17 |
type |
varchar |
64 |
0 |
N |
N |
0 |
论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表forum_type (论坛分类)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
type_id |
smallint |
5 |
0 |
N |
Y |
分类ID:[0,10000] |
|
2 |
name |
varchar |
16 |
0 |
N |
N |
分类名称:[2,16] |
|
3 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该分类的作用 |
|
4 |
url |
varchar |
255 |
0 |
Y |
N |
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 |
|
5 |
father_id |
smallint |
5 |
0 |
N |
N |
0 |
上级分类ID:[0,32767] |
6 |
icon |
varchar |
255 |
0 |
Y |
N |
分类图标: |
|
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表hits (用户点击)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
hits_id |
int |
10 |
0 |
N |
Y |
点赞ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
点赞人: |
3 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
表notice (公告)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
notice_id |
mediumint |
8 |
0 |
N |
Y |
公告id: |
|
2 |
title |
varchar |
125 |
0 |
N |
N |
标题: |
|
3 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文: |
|
4 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
5 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表ordinary_users (普通用户)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
ordinary_users_id |
int |
10 |
0 |
N |
Y |
普通用户ID |
|
2 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
3 |
gender |
varchar |
64 |
0 |
Y |
N |
性别 |
|
4 |
examine_state |
varchar |
16 |
0 |
N |
N |
已通过 |
审核状态 |
5 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
6 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户ID |
7 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表physical_data (身体数据)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
physical_data_id |
int |
10 |
0 |
N |
Y |
身体数据ID |
|
2 |
user |
int |
10 |
0 |
Y |
N |
0 |
用户 |
3 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
4 |
gender |
varchar |
64 |
0 |
Y |
N |
性别 |
|
5 |
school_name |
varchar |
64 |
0 |
Y |
N |
学校名称 |
|
6 |
age |
int |
10 |
0 |
Y |
N |
0 |
年龄 |
7 |
height |
varchar |
64 |
0 |
Y |
N |
身高 |
|
8 |
weight |
varchar |
64 |
0 |
Y |
N |
体重 |
|
9 |
taste_preference |
text |
65535 |
0 |
Y |
N |
口味偏好 |
|
10 |
exercise_habits |
text |
65535 |
0 |
Y |
N |
运动习惯 |
|
11 |
physical_condition |
text |
65535 |
0 |
Y |
N |
身体情况 |
|
12 |
diet |
text |
65535 |
0 |
Y |
N |
饮食情况 |
|
13 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
14 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
15 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表praise (点赞)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
praise_id |
int |
10 |
0 |
N |
Y |
点赞ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
点赞人: |
3 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
8 |
status |
bit |
1 |
0 |
N |
N |
1 |
点赞状态:1为点赞,0已取消 |
表recipe_information (食谱信息)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
recipe_information_id |
int |
10 |
0 |
N |
Y |
食谱信息ID |
|
2 |
name_of_dishes |
varchar |
64 |
0 |
Y |
N |
菜品名称 |
|
3 |
categorization_of_cuisine |
varchar |
64 |
0 |
Y |
N |
菜系分类 |
|
4 |
taste_classification |
varchar |
64 |
0 |
Y |
N |
口味分类 |
|
5 |
calorie |
varchar |
64 |
0 |
Y |
N |
卡路里 |
|
6 |
photo |
varchar |
255 |
0 |
Y |
N |
照片 |
|
7 |
food_ingredients |
text |
65535 |
0 |
Y |
N |
食材 |
|
8 |
mixed_ingredients |
text |
65535 |
0 |
Y |
N |
配料 |
|
9 |
practice |
text |
65535 |
0 |
Y |
N |
做法 |
|
10 |
make_video |
varchar |
255 |
0 |
Y |
N |
制作视频 |
|
11 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
12 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
13 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
14 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
15 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表slides (轮播图)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
slides_id |
int |
10 |
0 |
N |
Y |
轮播图ID: |
|
2 |
title |
varchar |
64 |
0 |
Y |
N |
标题: |
|
3 |
content |
varchar |
255 |
0 |
Y |
N |
内容: |
|
4 |
url |
varchar |
255 |
0 |
Y |
N |
链接: |
|
5 |
img |
varchar |
255 |
0 |
Y |
N |
轮播图: |
|
6 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击量: |
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表todays_intake (今日摄入)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
todays_intake_id |
int |
10 |
0 |
N |
Y |
今日摄入ID |
|
2 |
user |
int |
10 |
0 |
Y |
N |
0 |
用户 |
3 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户姓名 |
|
4 |
statistical_date |
date |
10 |
0 |
Y |
N |
统计日期 |
|
5 |
ingestion_type |
varchar |
64 |
0 |
Y |
N |
摄入种类 |
|
6 |
ingestion_of_food |
text |
65535 |
0 |
Y |
N |
摄入食物 |
|
7 |
energy_intake |
varchar |
64 |
0 |
Y |
N |
已摄入能量 |
|
8 |
can_also_consume_energy |
varchar |
64 |
0 |
Y |
N |
还可摄入能量 |
|
9 |
analysis_description |
text |
65535 |
0 |
Y |
N |
分析说明 |
|
10 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
12 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表upload (文件上传)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
upload_id |
int |
10 |
0 |
N |
Y |
上传ID |
|
2 |
name |
varchar |
64 |
0 |
Y |
N |
文件名 |
|
3 |
path |
varchar |
255 |
0 |
Y |
N |
访问路径 |
|
4 |
file |
varchar |
255 |
0 |
Y |
N |
文件路径 |
|
5 |
display |
varchar |
255 |
0 |
Y |
N |
显示顺序 |
|
6 |
father_id |
int |
10 |
0 |
Y |
N |
0 |
父级ID |
7 |
dir |
varchar |
255 |
0 |
Y |
N |
文件夹 |
|
8 |
type |
varchar |
32 |
0 |
Y |
N |
文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
user_id |
mediumint |
8 |
0 |
N |
Y |
用户ID:[0,8388607]用户获取其他与用户相关的数据 |
|
2 |
state |
smallint |
5 |
0 |
N |
N |
1 |
账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 |
user_group |
varchar |
32 |
0 |
Y |
N |
所在用户组:[0,32767]决定用户身份和权限 |
|
4 |
login_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
上次登录时间: |
5 |
phone |
varchar |
11 |
0 |
Y |
N |
手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 |
|
6 |
phone_state |
smallint |
5 |
0 |
N |
N |
0 |
手机认证:[0,1](0未认证|1审核中|2已认证) |
7 |
username |
varchar |
16 |
0 |
N |
N |
用户名:[0,16]用户登录时所用的账户名称 |
|
8 |
nickname |
varchar |
16 |
0 |
Y |
N |
昵称:[0,16] |
|
9 |
password |
varchar |
64 |
0 |
N |
N |
密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 |
|
10 |
|
varchar |
64 |
0 |
Y |
N |
邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 |
|
11 |
email_state |
smallint |
5 |
0 |
N |
N |
0 |
邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 |
avatar |
varchar |
255 |
0 |
Y |
N |
头像地址:[0,255] |
|
13 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
表user_group (用户组:用于用户前端身份和鉴权)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
group_id |
mediumint |
8 |
0 |
N |
Y |
用户组ID:[0,8388607] |
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
显示顺序:[0,1000] |
3 |
name |
varchar |
16 |
0 |
N |
N |
名称:[0,16] |
|
4 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该用户组的特点或权限范围 |
|
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
8 |
register |
smallint |
5 |
0 |
Y |
N |
0 |
注册位置: |
9 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
10 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
4 大学生饮食管理平台微信小程序设计与实现
大学生饮食管理平台微信小程序的详细设计与实现主要是根据前面的大学生饮食管理平台微信小程序的需求分析和大学生饮食管理平台微信小程序的总体设计来设计页面并实现业务逻辑。主要从大学生饮食管理平台微信小程序界面实现、业务逻辑实现这两部分进行介绍。
4.1 系统首页页面
当进入大学生饮食管理平台微信小程序的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4.1所示。
图4.1用户首页界面图
不是大学生饮食管理平台微信小程序中正式用户的是可以在线进行注册的,如果你没有本大学生饮食管理平台微信小程序的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。注册界面实现了用户的注册,其注册界面展示如下图4。2所示。
图4.2 注册界面图
注册逻辑代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
大学生饮食管理平台微信小程序中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到大学生饮食管理平台微信小程序的首页中;否则将会提示相应错误信息,用户登录界面如下图4.3所示。
图4.3 登录界面图
登录的逻辑代码如下所示。
/**
* 登录
* @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;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}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.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
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, "账号或密码不正确");
}
}
用户使用该大学生饮食管理平台微信小程序注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败,下面的图片展示的就是该板块对应的工作面。修改密码页面如下图4.4所示。
图4.4 修改密码界面图
当访客点击大学生饮食管理平台微信小程序中导航栏上的“健康知识”后将会进入到该“健康知识”列表的界面,然后选择想要看的健康知识信息,点击进入到详细界面,在详细界面可以收藏+赞+评论等操作,健康知识页面如下图4.5所示。
图4.5 健康知识界面图
用户可以查看食谱信息,在查询到自己想要了解的食谱信息的时候,可以进入查看详细的介绍,支持用户对喜欢的食谱信息进行收藏、点赞、评论的功能。食谱信息详情界面如下图4.6所示。
图4.7食谱信息详情界面图
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
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){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
4.7社区论坛页面
用户在点击导航栏上面的社区论坛后,就可以搜索查看论坛信息,用户根据自己的喜好可以进行交流,社区论坛界面如下图4.7所示。
图4.7 社区论坛界面图
大学生饮食管理平台微信小程序中的管理员在“系统用户”这一菜单是中可以对注册的用户以及管理员人员进行管控。界面如下图4.8所示。
图4.8 系统用户管理界面图
系统用户管理逻辑代码如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
Query count = service.avg(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.9 资源管理页面
资源管理主要管理员是对健康知识以及健康知识所属的分类进行管控,包含了用户对健康知识提交的评论信息,界面如下图4.9所示。
图4.9 资源管理界面图
资源管理界面逻辑代码如下:
@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);
}
public Map<String,String> readConfig(HttpServletRequest request){
Map<String,String> map = new HashMap<>();
map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));
map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));
map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));
map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));
map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));
map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));
map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));
map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));
return map;
}
public Map<String,String> readQuery(HttpServletRequest request){
String queryString = request.getQueryString();
if (queryString != null && !"".equals(queryString)) {
String[] querys = queryString.split("&");
Map<String, String> map = new HashMap<>();
for (String query : querys) {
String[] q = query.split("=");
map.put(q[0], q[1]);
}
map.remove(FindConfig.PAGE);
map.remove(FindConfig.SIZE);
map.remove(FindConfig.LIKE);
map.remove(FindConfig.ORDER_BY);
map.remove(FindConfig.FIELD);
map.remove(FindConfig.GROUP_BY);
map.remove(FindConfig.MAX_);
map.remove(FindConfig.MIN_);
return map;
}else {
return new HashMap<>();
}
}
@Transactional
public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");
}else {
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");
}
}
sql.deleteCharAt(sql.length()-1);
sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));
log.info("[{}] - 更新操作:{}",table,sql);
Query query1 = runCountSql(sql.toString());
query1.executeUpdate();
}
public String toWhereSql(Map<String,String> query, Boolean like) {
if (query.size() > 0) {
try {
StringBuilder sql = new StringBuilder(" WHERE ");
for (Map.Entry<String, String> entry : query.entrySet()) {
if (entry.getKey().contains(FindConfig.MIN_)) {
String min = humpToLine(entry.getKey()).replace("_min", "");
sql.append("`"+min+"`").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
continue;
}
if (entry.getKey().contains(FindConfig.MAX_)) {
String max = humpToLine(entry.getKey()).replace("_max", "");
sql.append("`"+max+"`").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
continue;
}
if (like == true) {
sql.append("`"+humpToLine(entry.getKey())+"`").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%'").append(" and ");
} else {
sql.append("`"+humpToLine(entry.getKey())+"`").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
}
}
sql.delete(sql.length() - 4, sql.length());
sql.append(" ");
return sql.toString();
} catch (UnsupportedEncodingException e) {
log.info("拼接sql 失败:{}", e.getMessage());
}
}
return "";
}
4.10 交流管理页面
交流管理主要管理员是对社区论坛以及论坛分类进行管控,包含了用户对社区论坛提交的评论信息,界面如下图4.10所示。
图4.10 交流管理界面图
4.11模块管理页面
大学生饮食管理平台微信小程序中的管理人员在“模块管理”这一菜单下是可以对大学生饮食管理平台微信小程序内身体数据、食谱信息、口味分类、食物类别、食物信息的进行管控的,其管理界面如下图4.10所示。
图4.11 模块管理界面图
模块管理关键代码如下:
@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);
5大学生饮食管理平台微信小程序测试
大学生饮食管理平台微信小程序测试是为了检验软件是否达到设计要求,是否存在错误,通过测试的方法来检查大学生饮食管理平台微信小程序,以便发现大学生饮食管理平台微信小程序中的错误。测试工作是保证大学生饮食管理平台微信小程序质量的关键。
问题1:数据库无法添加中文。
解决过程:重新创建数据库,将库的编码格式改为utf8。
效果:能在新库的表中添加中文。
问题2:控制台报错前台与后台参数不一致
解决过程:检查代码,找到报错参数完成修改,继续报错,服务器移除项目重新运行。
效果:重启项目不再报错。
问题3:报错No bean named 'sysLogServiceImpl' available找不到名为sysLogServiceImpl的bean的对象。
解决过程:询问导师报错原因,发现错误原因是未添加注解@Service,需要在在impl实现类的外面添加@Service注解。
效果:重新debug项目无报错。
问题4:启动项目时报错:Mapped Statements collection does not contain value for
解决过程:网上搜索解决办法,出错可能的原因有多个,经过努力排查,错误原因是mapper映射地址有误。在mybatis-config里重新配置地址。
效果:项目启动正常
系统测试包括:用户登录功能测试、食物信息展示功能测试、食物信息添加、食物信息搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示:
用户登录功能测试:
表5-1 用户登录功能测试表
用例名称 |
用户登录系统 |
目的 |
测试用户通过正确的用户名和密码可否登录功能 |
前提 |
未登录的情况下 |
测试流程 |
1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 |
用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 |
实际结果与预期结果一致 |
食物信息查看功能测试:
表5-2 食物信息查看功能测试表
用例名称 |
食物信息查看 |
目的 |
测试食物信息查看功能 |
前提 |
用户登录 |
测试流程 |
点击食物信息列表 |
预期结果 |
可以查看到所有食物信息 |
实际结果 |
实际结果与预期结果一致 |
管理员添加食物信息界面测试:
表5-3 管理员添加食物信息界面测试表
用例名称 |
食物信息发布测试用例 |
目的 |
测试食物信息发布功能 |
前提 |
用户正常登录情况下 |
测试流程 |
1)用户点击食物信息管理就,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 |
提交以后,页面首页会显示新的食物信息 |
实际结果 |
实际结果与预期结果一致 |
食物信息搜索功能测试:
表5-4食物信息搜索功能测试表
用例名称 |
食物信息搜索测试 |
目的 |
测试食物信息搜索功能 |
前提 |
无 |
测试流程 |
1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 |
页面显示包含有搜索关键字的食物信息 |
实际结果 |
实际结果与预期结果一致 |
密码修改功能测试:
表5-5 密码修改功能测试表
用例名称 |
密码修改测试用例 |
目的 |
测试管理员密码修改功能 |
前提 |
管理员用户正常登录情况下 |
测试流程 |
1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 |
使用新的密码可以登录 |
实际结果 |
实际结果与预期结果一致 |
5.3 系统测试结果
通过编写大学生饮食管理平台微信小程序的测试用例,已经检测完毕用户登录模块、食物信息查看模块、食物信息添加模块、食物信息搜索模块、密码修改功能测试,通过这5大模块为大学生饮食管理平台微信小程序的后期推广运营提供了强力的技术支撑。
结论
至此,大学生饮食管理平台微信小程序已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如springboot、JAVA技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
参考文献
[1]余鹏翔,石军锋.基于SpringBoot框架的群养母猪饲喂站管理系统设计与试验[J].中国农机化学报,2023,44(03):149-155+241.DOI:10.13733/j.jcam.issn.2095-5553.2023.03.021.
[2]姚丽娟,罗宏伟,丑晨,杨成兴.基于微信小程序的智慧校园导航系统研究[J].网络安全技术与应用,2023(03):48-50.
[3]马金伟,贾九泰,秦丁丁,聂磊,王鑫,奥叶林,王树森.基于微信小程序的植物分类实践教学软件研发[J].实验室科学,2023,26(01):77-80.
[4]姜丽希,厉旭杰,濮济.基于微信小程序的数字社区管理系统[J].信息技术与信息化,2023(02):89-92.
[5]苏佳旭,白燕,温晓东.基于Web前端与MySQL数据库的自然灾害应急信息共享平台设计与实现[J].电脑知识与技术,2023,19(05):74-77.DOI:10.14004/j.cnki.ckt.2023.0274.
[6]佟羽齐,刘德华,张栎柯,李剑波,张俊杰.基于SpringBoot框架的钻前管理系统的设计与实现[J].信息与电脑(理论版),2023,35(02):111-113.
[7]杨嘉琛,王泽琛,温家宝,肖帅. 一种基于SpringBoot框架的海洋目标检测系统[P]. 天津市:CN115511802A,2022-12-23.
[8]张丽景,张文川.基于对比分析法的高职“MySQL数据库”课程设计——以兰州石化职业技术大学为例[J].现代信息科技,2022,6(21):188-191.DOI:10.19850/j.cnki.2096-4706.2022.21.046.
[9]杨一帆.服务于MySQL数据库的在线监测系统设计[J].自动化技术与应用,2022,41(10):179-182.DOI:10.20033/j.1003-7241.(2022)10-0179-04.
[10]赵晓明,姜坤宏,曹雅南.基于网络平台的饮食干预对下肢活动受限的肥胖者的影响[J].当代护士(中旬刊),2022,29(05):73-76.DOI:10.19792/j.cnki.1006-6411.2022.14.024.
[11]程辉,朱晓丽,王宝福,李晓楠,梁丹.糖尿病健康管理平台在非透析糖尿病肾病患者饮食管理中的应用[J].当代护士(下旬刊),2022,29(04):67-69.DOI:10.19793/j.cnki.1006-6411.2022.12.016.
[12]翁朝凤,张秋镁,黄小凌.基于微信平台的健康管理结合分阶段饮食在老年高血压中的应用[J].心血管病防治知识,2022,12(07):71-73.
[13]高志平. 基于SpringBoot框架与ITIL方法的运维管理系统的设计与实现[D].华东师范大学,2021.DOI:10.27149/d.cnki.ghdsu.2021.001482.
[14]He Xinbin,Bai Yongbin,Yue Lisen,Wang Haixiao,Liu Yi. Design and Implementation of Information System Based on Java Technology Platform[J]. Journal of Physics: Conference Series,2021,2033(1).
[15]王莹莹,刘海燕,张勇智.“互联网+”时代基于微信平台的大学生体重管理小程序的设计[J].当代体育科技,2020,10(30):246-248.DOI:10.16655/j.cnki.2095-2813.2003-5798-6353.
[16]Tian Ming Huang. Design and Implementation of App System for Legal Consulting Based on JAVA Technology[J]. Procedia Computer Science,2020,166(C).
[17]张倩,王蕾,史述红等. 基于JAVA并行计算技术的电力直接交易集中撮合交易算法[C]//中国电机工程学会电力市场专业委员会,全国电力交易机构联盟,北京电力交易中心有限公司,广州电力交易中心有限责任公司,中国电力科学研究院有限公司.中国电机工程学会电力市场专业委员会2018年学术年会暨全国电力交易机构联盟论坛论文集.中国电机工程学会电力市场专业委员会2018年学术年会暨全国电力交易机构联盟论坛论文集,2018:373-377.
致 谢
时间过的很快,不知不觉,在中北大学的学习生活即将结束。毕业之际,我真诚地向帮助过我的老师、家人、同学、朋友们表达感谢。首先要感谢的是我的母校。感谢母校给了我美好的生活和优越的学习环境,使我能学到了很多知识,也不断的变得优秀;感谢家人在这四年期间一直给与我的爱和无条件的支持,让我没有后顾之忧地完成学业;感谢软件学院的任课老师们给我鼓励和认可,让我有信心去做好每一件事情;感谢同学们的帮助,让我的大学生活更有意义。在此次毕业设计的实现过程中, 我得到了老师们的耐心指导让我顺利完成了该设计。从最初的选题和开题开始,老师就给予我很多帮助,他们认真负责的态度、丰富的民宿经验让我学到了很多。
同时也要感谢我敬爱的班主任和实训课程的老师,他们在各个方面都教给了我丰富的经验,在面对各种困难时如何处理。因为今年的特殊性,老师们不仅在学习中给我以精心的指导,同时还在其它方面给予我观关怀,指导老师不辞辛苦的为大家录制视频和一遍遍讲解让我心怀感激之情。在此,我真诚的感恩、感谢我的指导赛事门票们。
还要感谢实习期间不厌其烦教导我鼓励我的技术师傅,他指导了我各个方面的技巧,尤其是编程方面,迄今我的很多技巧和编写规范都有赖于他的指导、纠正。
最后还要特别感谢身边的各位同学们,一直支持鼓励我,无论何时何种境况。我很荣幸获得同学们的帮助,也很开心能够和大家共度大学四年的时光。
最后的最后,再次发自肺腑的感谢所有帮助过我的人。
免费领取项目源码,请关注●点赞收藏并私信博主,谢谢-