コンピュータ卒業プロジェクト コミュニティ食料品ショッピング システム Vue+SpringBoot+MySQL

著者のホームページ:デザイナー Xiao Zheng
著者について: 浙江省寧波出身の Java フルスタック ソフトウェア エンジニアで、ソフトウェアのフロントエンドとバックエンドの開発、システムのカスタマイズ、遠隔技術指導。CSDNアカデミー、Blue Bridgeクラウドコース認定インストラクター、フルスタック分野の高品質クリエイター。

ここに画像の説明を挿入します

プロジェクト コンテンツ
プロジェクト名 コミュニティ食料品ショッピング システム (S 011) \color{red}{コミュニティ食料品ショッピング システム (S011)}コミュニティ食品ショッピングシステム ( S011 )
プロジェクトの種類 有料アイテム
ソースコードの取得 ソースコードのセルフサービス取得
導入バージョン ソースコードなしでローカルで実行可能
Q&A投稿を交換する 投稿バーでこのプロジェクトについてコミュニケーションやディスカッションを行うことができます
プロジェクト画面の録画 このプロジェクトの動的なデモをご覧いただけます
付加価値サービス [ドキュメント、展開、説明\color{red}{ドキュメント、展開、説明}ドキュメント・導入・解説】「有償プロジェクトのサービス基準」

Vue+SpringBoot+MySQL をベースにしたコミュニティ食品ショッピング システムには、料理分類モジュール、料理ファイル モジュール、料理注文モジュール、料理収集モジュール、配送先住所モジュールが含まれており、システム自体のユーザー管理、部門管理も含まれています。 、役割管理、メニュー管理、ログ管理、データ辞書管理、ファイル管理、チャート表示およびその他の基本モジュール。コミュニティ食品ショッピング システムには、食品購入者と食品管理者に対する役割ベースのアクセス制御があります。権限は、ユーザーに対して正確に設定できます。ボタンレベルでロールをカスタマイズし、権限を割り当てることができるため、正確な権限制約要件を設計するのに適しています。


1. 概要

コンピューター技術とネットワーク技術の普及により、地域野菜市場の情報化構築にチャンスが到来しており、先端技術を活用して多様な地域野菜ショッピングシステムを構築することは賢明な選択です。電子画面やウェブサイトを通じて市場管理情報や製品情報(価格、品質などを含む)を公開することにより、市場と国民の間の情報交換が強化され、市場の繁栄という目的が達成され、国民へのサービスが向上します。この記事では、B/S モデルを組み合わせたアーキテクチャを使用して、Java EE に基づくコミュニティ食料品ショッピング システムを設計および実装します。


2. システム設計

2.1 機能モジュールの設計

コミュニティ食料品ショッピングシステムの機能要件は主に、データセンターモジュール、料理分類モジュール、料理ファイルモジュール、料理注文モジュール、料理収集モジュール、配送先住所モジュールの6つのモジュールで構成されており、ブラウザ操作をベースとしたWeb管理バックエンドです。 、各モジュールについては以下で詳しく説明します。
ここに画像の説明を挿入します

2.1.1 データセンターモジュール

データセンターモジュールには、ログインユーザーの管理、運営会社の組織構造の管理、ユーザーのメニュー権限の管理、システムログの管理、パブリック ファイル クラウド ディスクの管理。

このうち、ログインユーザー管理モジュールは管理者による運用保守作業を担っており、管理者はログインユーザーの追加、削除、変更、問い合わせを行うことができます。

組織構造とは、大学の組織構造を指しますが、本モジュールは、これらの組織構造の学部レベルと教員の所属を管理するのに適しています。

ユーザー メニュー権限管理モジュールは、さまざまな権限を持つユーザーの特定のメニュー権限を管理するために使用されます。

システム ログ管理は、システムにログインするユーザーの記録を維持し、ユーザー操作の特定と追跡を容易にするために使用されます。

パブリック クラウド ディスク管理モジュールは、契約署名書類や契約写真などの画像をコミュニティ食料品ショッピング システム内で一元管理するために使用されます。

ここに画像の説明を挿入します

2.1.2 料理分類モジュール

料理には種類があり、料理の種類は分けて管理する必要があることが多いため、料理分類モジュールを確立する必要がある料理分類のデータには、種類名、種類ステータス、ソート値、備考、作成者、作成時刻、更新者が含まれます管理者はロール データを追加、削除、編集し、条件付きでクエリを実行でき、ユーザーは管理者が公開したロール データをクエリできます。
ここに画像の説明を挿入します

2.1.3 ディッシュファイルモジュール

料理はコミュニティ食料品ショッピング システムの中核を成すものです。システム上の料理データを管理するには、料理アーカイブ モジュールを確立する必要があります。料理のフィールドには、料理名、料理紹介、料理分類、残在庫、作成者、作成時刻、更新者、更新時刻により、管理者は料理データの追加、削除、編集、条件付きクエリを行うことができ、ユーザーは管理者が公開した料理データをクエリすることができます。
ここに画像の説明を挿入します

2.1.4 料理注文モジュール

食品データを取得した後、ユーザーはコミュニティ食品ショッピング システムで注文することができます。食品注文データには、食品、注文数量、合計価格、配送先住所、作成者、作成時刻、更新者、更新時刻、ユーザーが含まれます。注文アプリケーションを使用すると、管理者はユーザーが開始した料理の注文を処理できます。

ここに画像の説明を挿入します

2.1.5 皿収集モジュール

ユーザーにより良いサービスを提供するために、コミュニティ フード ショッピング システムは料理のコレクションをサポートしており、ユーザーはお気に入りの料理をより便利かつ迅速に注文できます。料理コレクションのフィールドには、料理 ID、料理名、料理の写真、コレクター、作成者、作成が含まれます。時間、アップデータ、更新時間により、ユーザーはディッシュ コレクション アプリケーションを開始でき、管理者はユーザーのディッシュ コレクション情報をクエリできます。

ここに画像の説明を挿入します

2.1.6 配送先住所モジュール

ユーザーがより迅速に注文できるようにするために、ユーザーは自分の配送先住所を管理し、料理の注文時に維持する配送先住所をすばやく選択できます。配送先住所フィールドには、受信者、配送先住所、連絡先担当者、連絡先番号、作成者、作成時刻、更新者、更新時刻が含まれます。ユーザーは自分の配送先住所を追加、編集、削除し、条件付きでクエリできます。管理者は配送先住所をクエリできます。すべてのユーザーの。

ここに画像の説明を挿入します

2.2 実現可能性の分析

まず、同じ種類の市場でコミュニティ食料品ショッピング システムを調査して、その利点と欠点を理解した後、システムと食料品ショッピングに関連する専門家に私たちの最初のアイデアについて話し合うよう依頼します。次に、このタイプのコミュニティ食料品ショッピング システムに対するクライアントの具体的な要件を理解するために、クライアントと現地調査を実施します。最後に、上記のすべての点を要約して、当社のシステムと類似製品との違いを明確にし、当社が開発するコミュニティ食料品ショッピングシステムの特徴を特定して、発売後の市場でより有望なものにすることにします。

2.3 ユースケース分析

UML はオブジェクト指向のグラフィカル モデリング言語であり、表現が容易で、定義が容易で、幅広い用途があり、強力な機能を備えています。

ユース ケース図はユース ケース モデルの一種であり、要件アナリストはユース ケース図を使用してユーザーの操作動作を表現できます。コミュニティ食料品ショッピング システムのユース ケース図の設計には、主にユーザーのユース ケース設計と管理者のユース ケース設計が含まれます。
ここに画像の説明を挿入します

2.4 エンティティクラスの設計

2.4.1 料理分類モジュール

ここに画像の説明を挿入します

2.4.2 ディッシュファイルモジュール

ここに画像の説明を挿入します

2.4.3 料理注文モジュール

ここに画像の説明を挿入します

2.4.4 皿収集モジュール

ここに画像の説明を挿入します

2.4.5 配送先住所モジュール

ここに画像の説明を挿入します


3. システム導入

3.1 システム表示

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

3.2 サポートドキュメントの表示

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します


4.コアコード表示

4.1 ディッシュエンティティクラスの設計

@Table(name = "a_dish")
@TableName("a_dish")
@ApiModel(value = "菜品")
public class Dish extends ZwzBaseEntity {
    
    

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "菜品名称")
    private String title;

    @ApiModelProperty(value = "菜品介绍")
    private String content;

    @ApiModelProperty(value = "菜品分类")
    private String type;

    @ApiModelProperty(value = "单价")
    private BigDecimal unit;

    @ApiModelProperty(value = "剩余库存")
    private BigDecimal stock;

    @ApiModelProperty(value = "供应商")
    private String supplier;

    @ApiModelProperty(value = "图片")
    private String image;

    @Transient
    @TableField(exist=false)
    @ApiModelProperty(value = "是否收藏")
    private Boolean collectionFlag;
}

4.2 配送先エンティティクラスの設計

@Table(name = "a_shipping_address")
@TableName("a_shipping_address")
@ApiModel(value = "收货地址")
public class ShippingAddress extends ZwzBaseEntity {
    
    

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "挂靠人ID")
    private String userId;

    @ApiModelProperty(value = "挂靠人")
    private String userName;

    @ApiModelProperty(value = "收货地址")
    private String address;

    @ApiModelProperty(value = "收货人")
    private String consignee;

    @ApiModelProperty(value = "联系电话")
    private String mobile;
}

4.3 クエリメニューインターフェイスの設計

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询菜品")
public Result<IPage<Dish>> getByPage(@ModelAttribute Dish dish ,@ModelAttribute PageVo page){
    
    
    QueryWrapper<Dish> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(dish.getTitle())) {
    
    
        qw.like("title",dish.getTitle());
    }
    if(!ZwzNullUtils.isNull(dish.getContent())) {
    
    
        qw.like("content",dish.getContent());
    }
    if(!ZwzNullUtils.isNull(dish.getSupplier())) {
    
    
        qw.like("supplier",dish.getSupplier());
    }
    User currUser = securityUtil.getCurrUser();
    IPage<Dish> data = iDishService.page(PageUtil.initMpPage(page),qw);
    for (Dish vo : data.getRecords()) {
    
    
        QueryWrapper<DishCollection> collQw = new QueryWrapper<>();
        collQw.eq("user_id",currUser.getId());
        collQw.eq("dish_id",vo.getId());
        vo.setCollectionFlag(iDishCollectionService.count(collQw) > 0L);
    }
    return new ResultUtil<IPage<Dish>>().setData(data);
}

4.4 メニュー注文インターフェースの設計

@RequestMapping(value = "/addOneOrder", method = RequestMethod.POST)
@ApiOperation(value = "从购物车下单")
public Result<Object> addOneOrder(@RequestParam String[] ids){
    
    
    List<DishOrderItem> itemList = new ArrayList<>();
    List<ShoppingCart> cartList = new ArrayList<>();
    BigDecimal sumMoney = BigDecimal.ZERO;
    for(String id: ids) {
    
    
        ShoppingCart sc = iShoppingCartService.getById(id);
        if(sc == null) {
    
    
            return ResultUtil.error("购物车已被删除");
        }
        cartList.add(sc);
        Dish dish = iDishService.getById(sc.getDishId());
        if(dish == null) {
    
    
            return ResultUtil.error("菜品已下架");
        }
        DishOrderItem item = new DishOrderItem();
        item.setDishId(dish.getId());
        item.setDishName(dish.getTitle());
        item.setUnit(dish.getUnit());
        item.setImage(dish.getImage());
        item.setNumber(sc.getNumber());
        item.setSumMoney(item.getUnit().multiply(item.getNumber()));
        itemList.add(item);
        sumMoney = sumMoney.add(item.getSumMoney());
    }
    User currUser = securityUtil.getCurrUser();
    DishOrder order = new DishOrder();
    order.setUserId(currUser.getId());
    order.setUserName(currUser.getNickname());
    order.setOrderTime(DateUtil.now());
    order.setSumMoney(sumMoney);
    order.setOrderSize(BigDecimal.valueOf(itemList.size()));
    order.setStatus("已下单");
    iDishOrderService.saveOrUpdate(order);
    for (DishOrderItem item : itemList) {
    
    
        item.setOrderId(order.getId());
        iDishOrderItemService.saveOrUpdate(item);
    }
    for (ShoppingCart vo : cartList) {
    
    
        iShoppingCartService.removeById(vo.getId());
    }
    return ResultUtil.success();
}

4.5 ディッシュコレクションのインターフェースデザイン

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "添加单条收藏")
public Result<Object> addOne(@RequestParam String id){
    
    
    Dish dish = iDishService.getById(id);
    if(dish == null) {
    
    
        return ResultUtil.error("菜品不存在");
    }
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<DishCollection> qw = new QueryWrapper<>();
    qw.eq("user_id",currUser.getId());
    qw.eq("dish_id",dish.getId());
    if(iDishCollectionService.count(qw) > 0L) {
    
    
        return ResultUtil.error("您已收藏");
    }
    DishCollection dc = new DishCollection();
    dc.setDishId(dish.getId());
    dc.setDishName(dish.getTitle());
    dc.setUserId(currUser.getId());
    dc.setUserName(currUser.getNickname());
    dc.setCollectionTime(DateUtil.now());
    iDishCollectionService.saveOrUpdate(dc);
    return ResultUtil.success();
}

5. 免責事項

  • このプロジェクトは個人的な研究のみを目的としています。商用承認についてはブロガーに問い合わせてください。そうでない場合は、その結果について責任を負うことになります。
  • ブロガーは、このソフトウェアによって構築されたアプリケーション システムのすべてのコンテンツおよび独立した知的財産権を所有し、最終的な解釈権を有します。
  • ご質問がございましたら、倉庫問題にメッセージを残してください。確認後、できるだけ早く返信させていただきます。関連する意見は適切に考慮されますが、採用されることを確約または保証するものではありません。

このシステム コードをダウンロードする、またはこのシステムを使用するユーザーは、以下の内容に同意する必要があります。同意しない場合はダウンロードしないでください。

  1. あなたは、このソフトウェアを自発的に使用/開発し、このソフトウェアを使用するリスクを理解し、このソフトウェアを使用するリスクを負担することに同意するものとします。
  2. このソフトウェアを使用して構築されたウェブサイトの情報内容、およびそれに伴う著作権紛争、法的紛争および結果については、ブロガーとは一切関係がなく、ブロガーは一切の責任を負いません。
  3. いかなる状況においても、ブロガーは、このソフトウェアの使用または使用不能から生じる合理的に予測することが困難な損失 (商業的利益の損失、事業の中断、およびビジネス情報の損失を含みますが、これらに限定されません) に対して責任を負いません。
  4. ブロガーは、本ソフトウェアを使用する際のリスクを十分に理解した上で、個別の技術サポートや使用保証を提供することを約束するものではなく、また、本ソフトウェアによって引き起こされる予期せぬ問題については一切の責任を負いません。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_41464123/article/details/132683917