今日の情報の急速な発展に伴い、ネットワークは人々にとって重要な情報交換プラットフォームとなっています。店舗には日々大量のコンピュータ情報があり、インターネットを通じて公開する必要があるため、B/S(ブラウザ/サーバー)モデルに基づいたコンピュータ販売管理システムを開発しました。
同システムは、開発技術としてSSM技術、Javaプログラミング言語、MySQLなどを利用し、システムデータの追加、変更、参照、削除を実現する。このシステムは、システムをコンポーネント化して分割し、データベース内の各テーブルの追加、削除、問い合わせ、変更、テーブル間の制約関係などを解析・設計し、最終的にユーザーのニーズに合わせた商用レベルのアプリケーションを実現します。
システムインターフェイスはシンプルかつエレガントで、レイアウトは合理的で、操作と学習が簡単です。ユーザーの操作のあらゆる段階に応じて、応答性の高いフィードバックを行うことができます。具体的には、ユーザー管理、フォーラムリスト、フォーラム分類リスト、コンピュータ情報、コンピュータ情報分類、コンピュータモール、分類リスト、注文リスト、コンピュータ推奨等の機能が含まれており、コンピュータ販売の効率化と販売促進を実現するための管理プラットフォームを提供します。効率的なデータ管理、安全な管理。
キーワード: コンピュータ販売管理システム、MySQL
概要
今日、情報の急速な発展に伴い、ネットワークは人々にとって重要な情報交換プラットフォームとなっています。毎日、大量のコンピュータ情報がネットワークを通じて公開される必要があります。そこで、B/S(ブラウザ/サーバー)モードをベースとしたコンピュータ販売管理システムを開発しました。
このシステムは、システム データを追加、変更、表示、削除するための開発テクノロジとして、SSM テクノロジ、Java プログラミング言語、および MySQL を採用しています。システムはコンポーネントベースでシステムを分割し、データベース内の各テーブルの追加、削除、問い合わせ、変更、テーブル間の制約関係を分析・設計し、最終的に要件を満たす商用アプリケーションを実現します。ユーザーのニーズ。
システムインターフェイスはシンプルで寛大で、レイアウトは合理的で、操作が簡単で使いやすいです。ユーザーの操作の各段階に高いレスポンスで応答します。このシステムは具体的には、ユーザー管理、フォーラムリスト、フォーラム分類リスト、コンピュータ情報、コンピュータ情報分類、コンピュータモール、分類リスト、注文リスト、コンピュータ推奨などの機能を含む。パソコン販売向けの管理プラットフォームを提供し、効率的かつ安全なデータ管理を実現します。
キーワード:コンピュータ販売管理システム、コンピュータ販売管理システム MySQL
目次
1.1 研究の背景と意義
近年、モバイルインターネットの急速な発展に伴い、中国のほとんどのインターネットユーザーは、ウェブ閲覧、データ検索、電子メール送信などの従来の基本的なアプリケーションに加えて、ショッピング、通信、電子メール送信などの従来の機能を受けることに徐々に慣れてきました。新しいサービス モデルに加えて、オンライン ショッピングは人々の生活の中でますます重要な買い物の形式になってきています。インターネットの急速な発展により、携帯電話販売サイトの構築が強力に保証され、サポートされるとともに、オンラインショッピングの外部環境も徐々に改善され、モバイルインターネット端末(携帯電話、タブレット)によるネットユーザーの構造が形成されてきました。オンライン決済 決済手段はますます便利になり、エクスプレス物流はますますスムーズになり、それに対応する規制やポリシーはますます完璧になってきています。今日、オンライン ショッピングは人々にとってますます魅力的になってきており、オンライン ショッピングに対する人々の見方も、最初は無知から、疑いから徐々に信頼へ、拒絶から受け入れと習慣へと変化しています。オンライン ショッピングの概念はますます人気が高まっており、人々がオンライン ショッピングをする主な要因は次のとおりです。
(1) 便利で早い。オンラインショッピングは24時間利用でき、店舗に買い物に行く必要がなく、購入した商品は自宅に直接配送されます。このようにして、消費者は家から出ずに世界中のお気に入りの商品を購入することができます。
(2) 情報量が多い。従来のショッピング方法と比較して、電子商取引では、実際の商品と仮想商品の両方を含む非常に大量の情報を扱うことができます。さらに、消費者の個人的なプライバシーを保護するだけでなく、消費者のさまざまな心理的ニーズを満たすことができる特別な製品も提供することができます。
(3) プライバシーが強い。消費者が他人に知られたくない商品を購入する場合、オンラインショッピングを利用することがありますが、販売業者やエクスプレス物流はユーザーのプライバシーを保護し、不要なトラブルを避けることができます。
1.2 開発状況
近年のオンライン販売業界の隆盛により、関連する情報もいくつか得られています。中国では従来の販売のみでしたが、オンライン販売が市場の需要に応えたようです。これまでのところ、タオバオや天猫などのよく知られた名前がいくつかあります。ただし、この種のオンライン販売には、注文して支払いを行ってもすぐに商品を受け取ることができないことや、商品が破損していないかどうかなどを考慮する必要があるというデメリットもあります。このシステムは携帯電話網での販売をベースに開発されました。
数年の発展を経て、消費者に認知されるオンラインショッピングモールが国内外に多数登場しました。これらのオンラインショッピングモールの内容は多岐にわたり、ユーザー登録、ユーザー管理、商品在庫、商品配送、商品保管など比較的充実した機能を備えています。現在、インターネットの普及により、国内外でオンラインショッピングセンターがある程度発展しており、企業はこのプラットフォームを介してオンラインで入力する限り、いつでもシステムのコンテンツを管理することができます。コンピュータ販売管理システムのコンテンツを表示し、アナウンスを発行することで、消費者にオンラインでの購入と取引を奨励します。
1.3 システム開発技術の特徴
(1) コンピュータ販売管理システムの Web バックグラウンド管理のバックエンドは、古い jsp+javabean+servlet[5] テクノロジを使用せず、現在の主流の SSM[6] フレームワークを使用します。これにより、Java 設定コードが削減され、プログラミングが簡素化されます。現在の SSM フレームワークも、多くの企業によって選択されているフレームワークの 1 つです。
(2) コンピュータ販売管理システムにおける Web バックグラウンド管理のフロントエンドには、ajax[8] と jquery[9] を使用してページデザインを美しくすることができる bootstrap[7] フレームワークが使用されています。
(3) コンピュータ販売管理システムのデータベースにはmysql5.7[10]を使用しており、実行効率が高い。
2コンピュータ販売管理システムの分析
システム分析はプロジェクト開発の前提条件であり、システム分析を通じてシステムの主要ユーザーの基本的なニーズを十分に理解することができ、これがプロジェクト開発の理由でもあります。さらに、システム開発に関しては、通常、技術的実現可能性、経済的実現可能性などを含めた実現可能性分析が行われます。実現可能性分析は、プロジェクト全体の観点からの分析でもあります。次に、プロジェクトの特定のニーズを分析します。分析の手段は通常、ユーザーのユース ケース図を通じて実現されます。以下に詳しくご紹介します。
SSM は SpringMVVM+Spring+MySQL であり、これら 3 つのフレームワークにはそれぞれ独自の利点があるため、これらを組み合わせることで強力なスパークを生み出すことができます。設計者は手間をかけずに Web アプリケーション プログラムを作成でき、階層が明確で、アップグレードや更新の操作が通常の使用に影響を与えず、複数の使用が可能であるという特徴もあります。この複合フレームワークは、完全な構造、強力な機能、優れた構造を持つシステムを形成します。SpringMVVM が各プレートを分離し、Spring が開発をより柔軟かつ便利にし、開発者がオブジェクトを直接操作できるようにし、各レベルで作業内容を分割し、各レベルを実現します。分離すると、コードがより柔軟で合理化されます。このフレームワークにより、プログラマーは開発期間中の全体の破壊につながる個別のミスを回避することができ、また、開発後の段階での顧客からの製品に対する新たな要求にも対応することができます。
ssm フレームワークのレイヤー間の関係:
DAO層とサービス層はそれぞれ独立して開発可能であり、相互結合が非常に低いため独立して実行できるため、特に大規模プロジェクトの開発過程で有利となる。
コントローラー層とビュー層は結合性が高いため一緒に開発されますが、最初の 2 つの層全体として独立して開発することもできます。このように、レイヤーとレイヤーの前のインターフェイスの定義を知っていればよく、そのインターフェイスを呼び出して必要なロジック ユニット アプリケーションを完成させるだけで、すべてが非常に明確かつシンプルになります。
2.1 実現可能性の分析
コンピュータ販売管理システムのストレージとして使用される mysql データベースと、開発に使用される IDEA や Tomcat などの開発ツールの使用は、ライティング作業に多くの利便性をもたらします。このシステムは、開発に SSM フレームワークを使用するため、システムの拡張性と保守性が向上し、Java 構成コードが削減され、プログラミング コードが簡素化され、現在、SSM フレームワークは多くの企業に選ばれているフレームワークの 1 つです。
IDEA開発ツール、Tomcat8.0サーバー、MySQL5.7データベース、Photoshop画像処理ソフトウェアなど、コンピュータ販売管理システムの開発に使用される開発ソフトウェアはすべてオープンソースで無料であり、コンピュータ販売管理システムはシステムの設計とコーディングは自社で行うことを実現しており、データベースにはデータストレージとして普及しているmysqlを使用し、オープンソースのmysqlやその他のテクノロジーを使用することでシステム開発コストを削減します。
このプロジェクトの設計では、このモードでの Web サイトのいくつかの開発事例を参照し、その操作インターフェイスを分析し、多くの事例を組み合わせて、基本的なコンピューターの知識を持つ人がこのプロジェクトを操作できるように、人間中心の操作と簡素化された操作を強調しています。
2.2 需要分析
コンピュータ販売管理システムのWebバックグラウンド管理端末はIntelliJ IDEA 2019.3.4開発ツールを採用し、Java開発言語のSSM開発フレームワークとtomcat8.0サーバー[14]、jdk1.8、WeChat端末と連携します。 WeChat 開発者ツールの安定版 1.05.2111300 を採用し、ページはレイアウトに wxss と wxml を使用し [15]、WeChat 端末と Web バックグラウンド管理端末は通信に json インターフェイスを使用します。
ユーザー管理モジュール:
(1) ユーザー登録とログイン:ユーザーは、コンピュータ販売管理システムに会員登録し、ログインし、個人情報やパスワード変更などの個人情報の追加、削除、変更、確認を行います。
(2) ユーザーが商品を閲覧:ユーザーは商品情報を閲覧し、気に入った商品を見つけた後、購入+コメント+ブックマークをすることができます。
(3) コンピュータ情報:管理者が公開する情報を閲覧したり、コンピュータ情報を閲覧したりできます。
(4) フォーラム: ユーザーは、フォーラム メニューでユーザーが送信した投稿を表示、公開し、コメントすることができます。
(5) 商品購入:ユーザーはショッピングカート内で気に入った商品を追加購入することができ、送信完了をユーザーが確認するとサーバーのバックエンドシステムに送信され注文が生成されます。
(6) 私の注文: ユーザーは注文を送信した後、送信された注文を管理できます。
管理者管理モジュール:
(1) ユーザー管理:管理者はフロントに登録されているユーザー情報を管理することができ、管理者情報も管理することができます。
(2) コンピュータ情報管理:管理者は、バックグラウンドでコンピュータ販売管理システムに表示されるコンピュータ情報の追加、削除、変更、確認を行うことができます。
(3) フォーラムリスト管理:管理者は、コンピュータ販売管理システムにおいて利用者が投稿したメッセージやメッセージの分類を追加、削除、変更、確認することができます。
(4) 分類管理:コンピュータ販売管理システムにおいて、管理者が商品の分類を管理します。
(5) モール管理: 販売者からの商品注文を管理します。
(6) システム管理: 管理者は、コンピュータ販売管理システムのホームページに表示されるカルーセル画像とシステム内の一部のお知らせをシステムに公開することができるため、ユーザーはタイムリーにシステム情報を閲覧し、合理的な手配を行うことができます。
2.3 ユースケース分析
コンピュータ販売管理システムの完全な UML ユースケース図は、図 2-1、図 2-2、および図 2-3 です。ユーザー、公開者、管理者を参加者に含めます。
ユーザー ロールの使用例には、ログイン登録、ホームページ、フォーラム、アナウンス メッセージ、コンピュータ情報、ショッピング カート、コンピュータの推奨、および私のものなどがあります。
図 2-1 コンピュータ販売管理システムのユーザー役割のユースケース図
管理者ロールの使用例には、カルーセル マップ、掲示板、ユーザー管理、フォーラム リスト、フォーラム カテゴリ リスト、コンピュータ情報、コンピュータ情報カテゴリ、コンピュータ モール、カテゴリ リスト、注文リスト、コンピュータ推奨などがあります。
図 2-3 コンピュータ販売管理システム管理者の役割のユースケース図
前章では、コンピュータ販売管理システムの機能要件を分析し、その要件に応じてコンピュータ販売管理システムのユースケースを分析しました。次に、コンピュータ販売管理システムのアーキテクチャ、主要な機能、データベースの設計を開始します。
コンピュータ販売管理システムの機能要件分析とユースケース分析を通じて、図 3-1 に示すようなコンピュータ販売管理システムの機能モジュール図が得られます。
図 3-1コンピュータ販売管理システムの機能ブロック図
3.3データベース設計
3.3.1データベース ER モデル
以下は、図 3-2 に示すコンピュータ販売管理システム全体のデータベース テーブルの ER エンティティ関係図です。
図 3-2コンピュータ販売管理システムのER エンティティ関係図
前の ER 関係図を通じて、合計で多くのデータ テーブルを作成する必要があります。これら 7 つの主要なデータベース テーブルのリレーショナル モデルを以下に示します。
user_registration表:
名前 |
タイプ |
長さ |
nullではない |
主キー |
ノート |
ユーザー登録ID |
整数 |
11 |
はい |
はい |
ユーザー登録ID |
性別 |
可変長文字 |
64 |
いいえ |
いいえ |
性別 |
検査状態 |
可変長文字 |
16 |
はい |
いいえ |
承認状況 |
お勧め |
整数 |
11 |
はい |
いいえ |
インテリジェントな推奨事項 |
ユーザーID |
整数 |
11 |
はい |
いいえ |
ユーザーID |
作成時間 |
日付時刻 |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
computer_recommendation表 |
|||||
名前 |
タイプ |
長さ |
nullではない |
主キー |
ノート |
コンピュータ推奨ID |
整数 |
11 |
はい |
はい |
コンピュータ推奨ID |
推奨番号 |
可変長文字 |
64 |
いいえ |
いいえ |
推薦番号 |
コンピュータの種類 |
可変長文字 |
64 |
いいえ |
いいえ |
コンピュータの種類 |
コンピューターのブランド |
可変長文字 |
64 |
いいえ |
いいえ |
コンピュータのブランド |
コンピュータモデル |
可変長文字 |
64 |
いいえ |
いいえ |
コンピュータのモデル |
コンピューターの写真 |
可変長文字 |
255 |
いいえ |
いいえ |
コンピューターの画像 |
推奨インデックス |
可変長文字 |
64 |
いいえ |
いいえ |
おすすめされた |
パソコンの紹介 |
文章 |
0 |
いいえ |
いいえ |
コンピュータの紹介 |
ヒット |
整数 |
11 |
はい |
いいえ |
ヒット |
賞賛レン |
整数 |
11 |
はい |
いいえ |
いいね! |
お勧め |
整数 |
11 |
はい |
いいえ |
インテリジェントな推奨事項 |
作成時間 |
日付時刻 |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
computer_mall表: |
|||||
名前 |
タイプ |
長さ |
nullではない |
主キー |
ノート |
コンピューターモールID |
整数 |
11 |
はい |
はい |
コンピュータモールID |
備考 |
文章 |
0 |
いいえ |
いいえ |
述べる |
お勧め |
整数 |
11 |
はい |
いいえ |
インテリジェントな推奨事項 |
カートのタイトル |
可変長文字 |
125 |
いいえ |
いいえ |
タイトルタグ |
カート画像 |
文章 |
0 |
いいえ |
いいえ |
表紙絵 |
カートの説明 |
可変長文字 |
255 |
いいえ |
いいえ |
説明 |
カート価格_前 |
ダブル |
8 |
はい |
いいえ |
元値 |
カート価格 |
ダブル |
8 |
はい |
いいえ |
販売価格 |
カート_在庫 |
整数 |
11 |
はい |
いいえ |
コモディティ株 |
カートの種類 |
可変長文字 |
64 |
はい |
いいえ |
カテゴリー |
カートの内容 |
長文 |
0 |
いいえ |
いいえ |
文章 |
カート_img_1 |
文章 |
0 |
いいえ |
いいえ |
メイン画像1 |
カート_img_2 |
文章 |
0 |
いいえ |
いいえ |
メイン画像2 |
カート_img_3 |
文章 |
0 |
いいえ |
いいえ |
メイン画像3 |
カート_img_4 |
文章 |
0 |
いいえ |
いいえ |
メイン画像4 |
カート_img_5 |
文章 |
0 |
いいえ |
いいえ |
メイン画像5 |
作成時間 |
日付時刻 |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
Type表; |
|||||
名前 |
タイプ |
長さ |
nullではない |
主キー |
ノート |
タイプID |
smallint |
5 |
はい |
はい |
カテゴリID |
名前 |
可変長文字 |
16 |
はい |
いいえ |
種別名 |
説明 |
可変長文字 |
255 |
いいえ |
いいえ |
説明 |
URL |
可変長文字 |
255 |
いいえ |
いいえ |
外部リンクアドレス |
父親ID |
smallint |
5 |
はい |
いいえ |
親カテゴリID |
アイコン |
可変長文字 |
255 |
いいえ |
いいえ |
カテゴリアイコン |
作成時間 |
タイムスタンプ |
0 |
はい |
いいえ |
作成時間 |
更新時間 |
タイムスタンプ |
0 |
はい |
いいえ |
更新時間 |
Order表: |
|||||
名前 |
タイプ |
長さ |
nullではない |
主キー |
ノート |
注文ID |
整数 |
11 |
はい |
はい |
注文ID |
注文番号 |
可変長文字 |
64 |
いいえ |
いいえ |
注文番号 |
商品ID |
中程度の |
8 |
はい |
いいえ |
商品ID |
タイトル |
可変長文字 |
32 |
いいえ |
いいえ |
アイテムタイトル: |
画像 |
可変長文字 |
255 |
いいえ |
いいえ |
製品画像 |
価格 |
ダブル |
10 |
はい |
いいえ |
価格 |
前の価格 |
ダブル |
10 |
はい |
いいえ |
元値 |
番号 |
整数 |
8 |
はい |
いいえ |
量 |
価格_数 |
ダブル |
8 |
はい |
いいえ |
合計金額 |
規範 |
可変長文字 |
255 |
いいえ |
いいえ |
仕様 |
type |
varchar |
64 |
是 |
否 |
商品分类 |
contact_name |
varchar |
32 |
否 |
否 |
联系人姓名 |
contact_email |
varchar |
125 |
否 |
否 |
联系人邮箱 |
contact_phone |
varchar |
11 |
否 |
否 |
联系人手机 |
contact_address |
varchar |
255 |
否 |
否 |
收件地址 |
postal_code |
varchar |
9 |
否 |
否 |
邮政编码 |
user_id |
int |
10 |
是 |
否 |
买家ID |
merchant_id |
mediumint |
8 |
是 |
否 |
商家ID |
create_time |
timestamp |
0 |
是 |
否 |
创建时间 |
update_time |
timestamp |
0 |
是 |
否 |
更新时间 |
description |
varchar |
255 |
否 |
否 |
描述 |
state |
varchar |
16 |
是 |
否 |
订单状态 |
Forum表: |
|||||
名称 |
类型 |
长度 |
不是null |
主键 |
注释 |
forum_id |
mediumint |
8 |
是 |
是 |
论坛id |
display |
smallint |
5 |
是 |
否 |
排序 |
user_id |
mediumint |
8 |
是 |
否 |
用户ID |
nickname |
varchar |
16 |
否 |
否 |
昵称 |
praise_len |
int |
10 |
否 |
否 |
点赞数 |
hits |
int |
10 |
是 |
否 |
访问数 |
title |
varchar |
125 |
是 |
否 |
标题 |
keywords |
varchar |
125 |
否 |
否 |
关键词 |
description |
varchar |
255 |
否 |
否 |
描述 |
url |
varchar |
255 |
否 |
否 |
来源地址 |
tag |
varchar |
255 |
否 |
否 |
标签 |
img |
text |
0 |
否 |
否 |
封面图 |
content |
longtext |
0 |
否 |
否 |
正文 |
create_time |
timestamp |
0 |
是 |
否 |
创建时间 |
update_time |
timestamp |
0 |
是 |
否 |
更新时间 |
avatar |
varchar |
255 |
否 |
否 |
发帖人头像 |
type |
varchar |
64 |
是 |
否 |
论坛分类 |
电脑销售管理系统的详细设计与实现主要是根据前面的电脑销售管理系统的需求分析和电脑销售管理系统的总体设计来设计页面并实现业务逻辑。主要从电脑销售管理系统界面实现、业务逻辑实现这两部分进行介绍。
4.1 用户端
不是电脑销售管理系统的会员可以通过用户进行注册,填写上自己的账号、密码、重复密码、昵称、邮箱登信息后点击“提交”按钮后将会验证是否有非空数据,再验证密码和重复密码是否一样,最后验证是否账号重复,都验证没问题后即可注册成功。注册实现了用户注册和发布者注册两部分,其用户注册界面展示如下图4-1所示。
图4-1用户注册界面图
用户注册关键代码如下所示。
/**
* 注册
* @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-2所示。
图4-2用户登录界面图
登录代码如下:
/**
* 登录
* @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-3所示。
图4-3首页界面图
首页逻辑代码如下所示。
package com.project.demo.constant;
/**
*/
public class FindConfig {
public static String PAGE = "page";
public static String SIZE = "size";
public static String LIKE = "like";
public static String ORDER_BY = "orderby";
public static String FIELD = "field";
public static String GROUP_BY = "groupby";
public static String MIN_ = "_min";
public static String MAX_ = "_max";
}
用户在点击导航栏上面的论坛后,就可以搜索查看留言信息,用户根据自己的喜好可以进行交流,论坛界面如下图4-4所示。
图4-4论坛界面图
当用户点击“收货地址”右后,就回去显示出目前现有的地址,也可以添加新的地址,界面如下图4-5所示。
图4-5收货地址界面图
当访客点击了任意商品后将会进入该款商品的详情界面,可以了解到该商品的图片信息、商品信息、价钱信息等,同时可以对该商品进行加购+立即购买+收藏+点赞+评论,商品详情展示页面如图4-6所示。
图4-6商品详情界面图
当用户点击“我的购物车”链接后就进入自己购买的收入购物车的界面展示,界面如下图4-7所示。
图4-7购物车界面图
用户在“电脑”界面选择自己提交的电脑信息,可以点击“电脑消息”,然后输入电脑信息进行提交后,在电脑界面就可以查看到自己提交的电脑信息了,可以进行支付操作,界面如下图4-8所示。
图4-8电脑推荐界面图
电脑推荐关键代码如下所示。
@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);
}
管理员可以从浏览器上输入后台登录的网址后输入自己的用户名,密码图片验证后点击“登录”按钮后将会验证是否有非空数据,其次再验证是否和数据库中保存的一致,都验证成功后将登录成功,管理员登录界面如下图4-9所示。
图4-9管理员登录界面图
电脑销售管理系统中的管理人员是可以对前台注册的用户进行管理的,也可以对管理员进行管控。界面如下图4-10所示。
图4-10用户管理界面图
用户管理关键代码如下所示。
@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-11所示。
图4-11站点管理界面图
站点管理关键代码如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
电脑销售管理系统中的管理人员在“内容管理”这一菜单中是可以对电脑销售管理系统内的论坛列表、论坛分类列表、电脑资讯、电脑资讯分类进行维护和管理的,界面如下图4-12所示。
图4-12内容管理界面图
内容管理关键代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
}
电脑销售管理系统管理系统中的管理人员在“商城管理”这一菜单下是可以对电脑销售管理系统管理系统内的电脑商城、分类列表、订单列表进行管控的,其管理界面如下图4-13所示。
图4-13商城管理界面图
商城管理关键代码如下所示。
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-14所示。
更多管理关键代码如下所示。
public Map<String, Object> success(Object o) {
Map<String, Object> map = new HashMap<>();
if (o == null) {
map.put("result", null);
return map;
}
if (o instanceof List) {
if (((List) o).size() == 1) {
o = ((List) o).get(0);
map.put("result", o);
}else {
String jsonString = JSONObject.toJSONString(o);
JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));
map.put("result", objects);
}
} else if (o instanceof Integer || o instanceof String) {
map.put("result", o);
} else {
String jsonString = JSONObject.toJSONString(o);
JSONObject jsonObject = JSONObject.parseObject(jsonString);
JSONObject j = service.covertObject(jsonObject);
map.put("result", j);
}
return map;
}
系统测试的目的
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
系统测试包括:用户登录功能测试、商品展示功能测试、商品添加、商品搜索、密码修改功能测试,如表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大模块为电脑销售管理系统的后期推广运营提供了强力的技术支撑。
至此,电脑销售管理系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、SSM技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
参考文献
[1]王常珏,段尧清,朱泽.基于SSM的政府数据治理联盟链框架构建[J/OL].情报科学:1-18[2022-03-21].http://kns.cnki.net/kcms/detail/22.1264.g2.20220309.1213.002.html
[2]王月红,蒋冀萍.基于Java的煤矿风险预警与防控系统设计[J].煤炭技术,2022,41(03):173-175.
[3]黄子扬,祝奕炜,沈信宇,慕京生,焦俊.基于SSM的水质在线监测与数据分析[J].现代农业科技,2022(05):129-135.
[4]朱珍珠,段华斌,邓永清,杜丹蕾.基于Java的增值平台的设计与实现[J].办公自动化,2022,27(05):55-58.
[5]魏瑾.Java多线程技术在网络通信系统中的应用[J].山西电子技术,2022(01):66-68.
[6]李双,郭晨晨,李佳虎,张慧娥.基于SSM框架的智能驾校系统的设计与开发[J].电脑知识与技术,2022,18(03):62-63+65.
[7]郭静.基于SSM框架的高校新生预报到系统的设计与实现[J].电子技术与软件工程,2022(02):232-235.
[8]张烈超,胡迎九.典型Java Web开发框架模型的研究[J].武汉交通职业学院学报,2021,23(04):122-127.
[9]徐旭,李明明,夏辉,陈曦,王天宇,肖硕,雍旭.基于SSM框架的互联网+多元监管下构建医疗设备质量控制管理服务平台研究[J].中国医学装备,2021,18(12):106-110.
[10]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).
[11]王晨. 基于JAVA的教室查询系统研究[C]//.第三十五届中国(天津)2021’IT、网络、信息技术、电子、仪器仪表创新学术会议论文集.,2021:16-19.
[12]田青海. 面向Java应用的性能监控系统的设计与实现[D].浙江大学,2021.
[13]丁明月. 基于SSM的化工技术电子商务平台的研究与实现[D].淮阴工学院,2021.
[14]王冯涛. 基于SSM的地铁站智慧管理系统的设计与实现[D].北京交通大学,2021.
[15]Qu Xiaona. Application of Java Technology in Dynamic Web Database Technology[J]. Journal of Physics: Conference Series,2021,1744(4).
[16]Lei Yu,Cheng Li,Lei Wei,Hu WenYa. Marine biological monitoring and managing system based on Java technology[J]. MIPPR 2019: REMOTE SENSING IMAGE PROCESSING, GEOGRAPHIC INFORMATION SYSTEMS, AND OTHER APPLICATIONS,2020,11432.
[17]陈志忠. 带图形网页界面的电脑显示屏交互界面(销售管理)[P]. 广东省:CN305356398S,2019-09-20.
[18]王栋,方翔,吴鹰,俞向平,李东森,祁霖,李斌. 用于电脑的销售管理可视化系统界面[P]. 北京市:CN305216794S,2019-06-14.
[19]陈烁,张来卿,庞严冬. 带有药店管理系统用户界面的电脑(销售报表)[P]. 广东省:CN305130018S,2019-04-26.
[20]张锋. 带图形用户界面的电脑(商品销售管理系统)[P]. 广东省:CN305098344S,2019-04-05.
[21]孔丽.电脑销售与汽车销售的成本控制管理[J].中外企业家,2014(35):72.
[22]张彦青.基于VB技术的电脑销售管理系统设计与开发[J].电脑知识与技术,2008(03):472-474+477.
[23]张波. 亚思晟科技向贫困生免费提供JAVA培训[N]. 大众科技报,2007-06-05(A07).DOI:10.28215/n.cnki.ndzkj.2007.001547.
[24]Qi liang SUN. Design and Implementation of Personnel Management Information System Based on SSM[P]. Qi liang SUN,2021.
致谢
至此论文结束,感谢您的阅读。首先,我要感谢我的父母对我的支持与理解,在两年的本科学习生活中,倾其所能的爱护我,使我能够心无旁骛,全心全意的投入到学习中;不断鼓励我,让我能够拥有不断前进的动力。其次还要感谢我的导师,感谢在这段时间给予我有效的建议,以至于我的毕设有了整体的设计思路,尽管我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。在老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。
此外,还要感谢我的同学,热心的解答了我在程序上遇到的问题,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测,让我受益良多。在这两年的时间里,我学会了许多专业的知识,还有老师们的谆谆教诲和同学们的帮助使我不断进步,能够做得更好;我也会不断给自己充电,不断突破,成为更好的自己。
最后向所有关心我、帮助我的老师及同学们表示衷心的感谢!
点赞+收藏+关注 → 私信领取本源代码、数据库