Spring Bootトレーニングプロジェクトにセントレジスのテイクアウト機能を実装

1 トレーニングの基本情報

1.1 研修プロジェクトの名称

「お持ち帰り注文」システム。

1.2 トレーニングの時間と場所

2 研修内容のご紹介

このプロジェクト (「テイクアウト注文」システム) は、ケータリング企業 (レストラン、レストラン) 向けに特別にカスタマイズされたソフトウェア製品であり、システム管理の背景とモバイル端末アプリケーションの 2 つの部分が含まれます。

その中で、システム管理のバックグラウンドは主にケータリング会社の内部スタッフ向けに提供され、レストランの料理、定食、注文などを管理および保守できます。モバイル アプリケーションは主に消費者に提供され、オンラインで料理を閲覧したり、ショッピング カートに追加したり、注文したりすることができます。

3 需要分析

3.1 ソフトウェアおよびハードウェアの条件

イデア 2021.2.3

MySQL 5.5

マイバティス

マイバティスプラス

Git: バージョン管理ツール。

メイブン: 3.6.1

Junit: 単体テスト ツール。

3.2 技術的な実現可能性

3.2.1 技術的要件

テイクアウトの注文、支払い、注文管理、配送などの機能は、セント レジス テイクアウトにとって不可欠な技術要件です。さらに、ユーザー登録、ログイン、フィードバック、レコメンデーションなどの機能も提供する必要があります。

3.2.2 市場の需要

フードデリバリー市場の需要は膨大ですが、競争も非常に熾烈です。市場を細分化し、差別化されたビジネスモデルとターゲットユーザーを特定し、差別化されたサービスとエクスペリエンスを提供する必要があります。

3.2.3 開発コスト

セント レジス フード デリバリー アプリケーションの開発コストは、技術設計、ソフトウェア エンジニアリング、モバイル アプリケーション開発、データ分析などを含めて評価する必要があります。

3.2.4 データ接続性

食品配達アプリケーションは、注文のスムーズな配達と支払いの正しい処理を保証するために、複数の配達プロバイダーおよび支払いプロバイダーのアプリケーションに接続する必要があります。

3.2.5 ユーザーエクスペリエンス

優れたユーザー エクスペリエンスは、ユーザーに評価され記憶に残るための重要な要素です。食品配達アプリケーションでは、ユーザー エクスペリエンスには、使いやすさ、速度、正確さ、利便性などの多くの側面が含まれます。

4つの機能的なデザイン

4.1 管理端末

4.1.1 ログイン/ログアウト

社内従業員は、システム管理のバックグラウンドにアクセスする前にログインする必要があります。

4.1.2 従業員の管理

管理者は、クエリ、追加、編集、無効化などの機能を含め、システムのバックグラウンドで従業員情報を管理できます。

4.1.3 カテゴリ管理

主に現在の飲食店が運営する料理や定食の分類を照会、追加、変更、削除などの機能を含めて管理・維持します。

4.1.4 食器管理

主に各カテゴリの料理情報を保持し、クエリ、追加、変更、削除、販売開始、販売停止などの機能を含みます。

4.1.5 パッケージ管理

主に、クエリ、追加、変更、削除、販売開始、販売停止などの機能を含む、現在のレストランのパッケージ情報を維持します。

4.1.6 注文の詳細

主にユーザーがモバイル端末上で行った注文情報を保持し、照会、キャンセル、配送、完了、注文レポートのダウンロードなどの機能を含みます。

4.2 クライアント

4.2.1 ログイン/ログアウト

モバイル側でも、ユーザーはログインしてアプリを使用して食べ物を注文する必要があります。

4.2.2 オーダーメニュー

注文インターフェイスでは、料理/セットのカテゴリを表示し、ユーザーがクエリして選択できるように、現在選択されているカテゴリに従ってその中に料理の情報をロードする必要があります。

4.2.3 注文ショッピングカート

ユーザーが選択した料理はユーザーのショッピング カートに追加されます。これには主に、ショッピング カートのクエリ、ショッピング カートへの追加、ショッピング カートの削除、ショッピング カートを空にするなどの機能が含まれます。

4.2.4 注文の支払い

ユーザーは料理/セットを選択した後、ショッピング カートで料理の代金を決済して支払うことができます。この時点で、注文の代金を支払う必要があります。

4.2.5 個人情報

現在のユーザーの基本情報がパーソナル センター ページに表示され、ユーザーは配送先住所を管理したり、過去の注文データを照会したりできます。

5 データベース設計

ユーザーテーブル

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

名前

varchar(50)

いいえ

いいえ

いいえ

名前

電話

varchar(100)

いいえ

いいえ

いいえ

電話番号

セックス

varchar(2)

いいえ

いいえ

いいえ

性別

ID番号

varchar(18)

いいえ

いいえ

いいえ

ID番号

アバター

スターテス

varchar(500)

整数(11)

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

アバター

ショッピングカートテーブル

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

名前

varchar(50)

いいえ

いいえ

いいえ

名前

画像

varchar(100)

いいえ

いいえ

いいえ

写真

ユーザーID

ビギント(20)

いいえ

いいえ

いいえ

ユーザーID

料理ID

ビギント(20)

いいえ

いいえ

いいえ

料理ID

Setmeal_Id

料理の味

bigint(20)varchar(50)

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

パッケージID

番号

整数(11)

いいえ

いいえ

いいえ

作成時間

10進数(10)

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

総額

作成時間

アドレス帳テーブル

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

ユーザーID

ビギント(20)

いいえ

いいえ

いいえ

ユーザーID

荷受人

varchar(50)

いいえ

いいえ

いいえ

受信機

セックス

tinyint(4)

いいえ

いいえ

いいえ

性別

電話

varchar(11)

varchar(12)

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

電話番号

県番号

バーチャー(32)

いいえ

いいえ

いいえ

県名

都市コード

市の名前

varchar(12)

varchar(32)

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

市区町村番号

市区町村名

区域

varchar(12)

いいえ

いいえ

いいえ

地区コード

区域

varchar(32)

いいえ

いいえ

いいえ

地区名

詳細

varchar(200)

いいえ

いいえ

いいえ

住所

ラベル

varchar(100)

いいえ

いいえ

いいえ

ラベル

デフォルトです

tinyint(1)

いいえ

いいえ

いいえ

デフォルトですか

作成時間

日付時刻

いいえ

いいえ

いいえ

作成時間

更新時間

日付時刻

いいえ

いいえ

いいえ

更新時間

ユーザーを作成

ビギント(20)

いいえ

いいえ

いいえ

クリエイター

ユーザーの更新

ビギント(20)

いいえ

いいえ

いいえ

編集者

削除されました

int(11)

いいえ

いいえ

いいえ

削除するかどうか

分類表

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

タイプ

整数(11)

いいえ

いいえ

いいえ

タイプ

名前

varchar(64)

いいえ

いいえ

いいえ

名前

選別

整数(11)

いいえ

いいえ

いいえ

注文

作成時間更新時間

日付時刻

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

作成時間

更新時間

ユーザーを作成

ビギント(20)

いいえ

いいえ

いいえ

クリエイター

ユーザーの更新

ビギント(20)

いいえ

いいえ

いいえ

編集者

メニュー

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

名前

varchar(64)

いいえ

いいえ

いいえ

料理名

カテゴリID

ビギント(20)

いいえ

いいえ

いいえ

料理カテゴリーID

価格

10進数(10)

いいえ

いいえ

いいえ

料理の値段

コード

varchar(64)

いいえ

いいえ

いいえ

商品コード

画像

説明する

varchar(200)

varchar(400)

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

写真

説明

スターテス

整数(11)

いいえ

いいえ

いいえ

ステータスコード

選別

整数(11)

いいえ

いいえ

いいえ

注文

作成時間更新時間

日付時刻

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

作成時間

更新時間

ユーザーを作成

ビギント(20)

いいえ

いいえ

いいえ

クリエイター

ユーザーの更新

ビギント(20)

いいえ

いいえ

いいえ

編集者

削除されました

int(11)

いいえ

いいえ

いいえ

削除するかどうか

味のチャート

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

料理ID

ビギント(20)

いいえ

いいえ

いいえ

料理ID

名前

varchar(64)

いいえ

いいえ

いいえ

フレーバー名

価値

varchar(500)

いいえ

いいえ

いいえ

味覚データ

作成時間更新時間

日付時刻

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

作成時間

更新時間

ユーザーを作成

ビギント(20)

いいえ

いいえ

いいえ

クリエイター

ユーザーの更新

ビギント(20)

いいえ

いいえ

いいえ

編集者

削除されました

int(11)

いいえ

いいえ

いいえ

削除するかどうか

従業員フォーム

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

名前

varchar(32)

いいえ

いいえ

いいえ

名前

ユーザー名

varchar(32)

いいえ

いいえ

いいえ

ユーザー名

パスワード

varchar(64)

いいえ

いいえ

いいえ

パスワード

電話

varchar(11)

いいえ

いいえ

いいえ

電話番号

セックス

varchar(2)

いいえ

いいえ

いいえ

性別

ID番号

varchar(18)

いいえ

いいえ

いいえ

ID番号

スターテス

整数(11)

いいえ

いいえ

いいえ

作成時間更新時間

日付時刻

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

作成時間

更新時間

ユーザーを作成

ビギント(20)

いいえ

いいえ

いいえ

クリエイター

ユーザーの更新

ビギント(20)

いいえ

いいえ

いいえ

編集者

注文書

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

番号

varchar(50)

いいえ

いいえ

いいえ

注文番号

スターテス

イント(11)

いいえ

いいえ

いいえ

注文の状況

ユーザーID

ビギント(20)

いいえ

いいえ

いいえ

注文ユーザー

アドレスID

ビギント(20)

いいえ

いいえ

いいえ

アドレスID

Order_Time チェックタイム

日付時刻

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

注文時間

チェックアウト時間

お支払い方法

整数(11)

いいえ

いいえ

いいえ

支払方法

10進数(10)

いいえ

いいえ

いいえ

いただいた分量

述べる

varchar(100)

いいえ

いいえ

いいえ

述べる

電話

varchar(255)

いいえ

いいえ

いいえ

電話番号

住所

varchar(255)

いいえ

いいえ

いいえ

ユーザーアドレス

ユーザー名

varchar(255)

いいえ

いいえ

いいえ

ユーザー名

荷受人

varchar(255)

いいえ

いいえ

いいえ

受信機

注文詳細フォーム

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

名前

varchar(50)

いいえ

いいえ

いいえ

名前

画像

varchar(100)

いいえ

いいえ

いいえ

写真

注文ID

ビギント(20)

いいえ

いいえ

いいえ

注文ID

料理ID

ビギント(20)

いいえ

いいえ

いいえ

料理ID

Setmeal_Id

料理の味

ビギント(20)

varchar(50)

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

パッケージID

番号

整数(11)

いいえ

いいえ

いいえ

10進数(10)

いいえ

いいえ

いいえ

総額

パッケージ表

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

カテゴリID

ビギント(20)

いいえ

いいえ

いいえ

カテゴリID

名前

varchar(64)

いいえ

いいえ

いいえ

パッケージ名

価格

10進数(10)

いいえ

いいえ

いいえ

パッケージ価格

スターテス

イント(11)

いいえ

いいえ

いいえ

コード

varchar(32)

いいえ

いいえ

いいえ

コーディング

説明する

varchar(512)

いいえ

いいえ

いいえ

説明

画像

varchar(255)

いいえ

いいえ

いいえ

写真

作成時間更新時間

日付時刻

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

作成時間

更新時間

ユーザーを作成

ビギント(20)

いいえ

いいえ

いいえ

クリエイター

ユーザーの更新

ビギント(20)

いいえ

いいえ

いいえ

編集者

Is_削除

varchar(50)

いいえ

いいえ

いいえ

削除するかどうか

分類表

メニュー

味のチャート

従業員フォーム

パッケージ関係表

分野

データの種類

主キー

外部キー

空いてますか?

説明する

ID

ビギント(20)

はい

いいえ

いいえ

カテゴリID

ビギント(20)

いいえ

いいえ

いいえ

カテゴリID

名前

varchar(64)

いいえ

いいえ

いいえ

パッケージ名

価格

10進数(10)

いいえ

いいえ

いいえ

パッケージ価格

スターテス

イント(11)

いいえ

いいえ

いいえ

コード

varchar(32)

いいえ

いいえ

いいえ

コーディング

説明する

varchar(512)

いいえ

いいえ

いいえ

説明

画像

varchar(255)

いいえ

いいえ

いいえ

写真

作成時間更新時間

日付時刻

日付時刻

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

作成時間

更新時間

ユーザーを作成

ビギント(20)

いいえ

いいえ

いいえ

クリエイター

ユーザーの更新

ビギント(20)

いいえ

いいえ

いいえ

編集者

Is_削除

varchar(50)

いいえ

いいえ

いいえ

削除するかどうか

ユーザーテーブル

ショッピングカートテーブル

アドレス帳テーブル

分類表

メニュー

味のチャート

従業員フォーム

注文書

注文詳細フォーム

パッケージ表

パッケージ関係表

エンティティER図

6 具体的な実現

6.1 スタッフログイン

6.1.1 ログイン機能

社内従業員は従業員アカウント番号とパスワードを入力する必要があり、検証に合格した場合にのみシステム管理バックグラウンドにアクセスできます。フィルタはユーザーがログインしているかどうかを判断し、ログインしていない場合はログイン ページにジャンプします。

従業員のログインとログアウトのコア コード:

@PostMapping("/employee/login")

    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){

        //RequestBody可以接收JSON格式的数据并解析为实体类(Employee)

        String username = employee.getUsername();

        String password = DigestUtils.md5DigestAsHex(employee.getPassword().getBytes());

        System.out.println("用户名:"+username+"--密码:"+password);

        //LambdaQueryWrapper<List<Map>> lambdaQueryWrapper = new LambdaQueryWrapper<>();

        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();

        //查询结果是单张表,用实体类接收;如果是if交叉查询(多张表查询)用List<Map>

        queryWrapper.eq(Employee::getUsername,username);

        //使用LambdaQueryWrapper免除写sql,相当于进行select操作

        Employee employee1 = employeeService.getOne(queryWrapper);

        System.out.println("2********username:"+employee1.getPhone());

        if (employee1 == null){

            return R.error("用户名错误,登录失败,请重试!");

        }

        if (!password.equals(employee1.getPassword())){

            return R.error("密码错误,登录失败,请重试!");

        }

        if (employee1.getStatus()!=1){

            return R.error("该账户被删除或禁用,登录失败!");

        }

        request.getSession().setAttribute("employee",employee1);  //为了filter、后续调用方便

        BaseContext.setCurrentUserID(employee1.getId());  //为了普通类能够调用

        return R.success(employee1);

    }

    @PostMapping("/employee/logout")

    public R<Employee> logout(HttpServletRequest request){

        request.getSession().removeAttribute("employee");

        request.getSession().invalidate();

        return R.success(null);

    }

6.2 従業員の管理

6.2.1 クエリ機能

該当する従業員名を入力して従業員を検索します。

6.2.2 機能の追加

新入社員情報を入力して新入社員を追加します。

6.2.3 修改功能

点击编辑可以对所选员工的个人信息进行修改。

6.2.4 禁用功能

可以点击禁用禁止该员工的登录权限。

6.3 分类管理

6.3.1 查看功能

可以查看当前显示所有菜品或套餐类型。

6.3.2 添加功能

对新的菜品和套餐类型进行添加操作。

6.3.3 修改功能

对于一些错误的菜品或套餐信息进行更改。

6.3.4 删除功能

对于某些过时或者冷门的菜品或套餐进行删除。

6.4 菜品管理

6.4.1 查询功能

可以根据个人需求查找当前现有菜品信息。

6.4.2 添加功能

对于当前热门菜品可以新增到菜品管理中。

6.4.3 修改功能

对一些冷门菜品可以对其价格进行修改。

6.4.4 删除功能

对于一些冷门菜品可以进行停售或删除操作。

菜品信息修改核心代码:

@PutMapping("/edit")

    public R<String> update(@RequestBody DishDto dishDto) {

        // 更新dish表

        dishService.updateById(dishDto);

        // 清理当前菜品口味信息,dish_flavor表的delete操作

        // 不能使用removeById, 因为dishDto的id不是dish_flavor的主键

        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();

        queryWrapper.eq(DishFlavor::getDishId, dishDto.getId());

        dishFlavorService.remove(queryWrapper);

        // 重新插入菜品口味信息,dish_flavor表的insert操作

        List<DishFlavor> dishFlavor = new ArrayList<>();

        for (DishFlavor item :dishDto.getFlavors()) {

            item.setDishId(dishDto.getId());

            dishFlavor.add(item);

        }

        dishFlavorService.saveBatch(dishFlavor);

        return R.success("修改成功");

    }

6.5 套餐管理

6.5.1 查询功能

对于所需要的套餐类型进行检索。

6.5.2 添加功能

对于新的套餐类型加入到套餐管理中。

6.5.3 修改功能

针对一些信息有误的套餐进行修改。

6.5.4 删除功能

某些套餐长期无人购买可以选择性进行删除。

6.6 订单明细

6.6.1 查询功能

在订单明细中可以查看用户的所有订单和派送状态。

6.6.2 订单查看

点击查看订单可以看到用户的个人信息以及地址详情等。

6.7 用户管理

6.7.1 登录管理

在移动端, 手机用户需要输入手机号验证码登录后进入APP进行点餐。

6.7.2 点餐-菜单

在点餐界面需要展示出菜品分类/套餐分类, 并根据当前选择的分类加载其中的菜品信息, 供用户查询选择。

6.7.3 点餐-购物车

用户选中的菜品就会加入用户的购物车, 主要包含查询购物车、加入购物车、删除购物车、清空购物车等功能。

减少购物车菜品核心代码:

@PostMapping("/sub")

    public R<String> sub(@RequestBody ShoppingCart shoppingCart, HttpSession session) {

        // 1.获取当前用户

        User user = (User) session.getAttribute("employee");

        // 2.查询当前用户、当前商品在购物车表里是否已存在

        LambdaQueryWrapper<ShoppingCart> lambdaQueryWrapper = new LambdaQueryWrapper<>();

        lambdaQueryWrapper.eq(ShoppingCart::getUserId, user.getId())  // 筛选用户ID

                .eq(shoppingCart.getDishId() != null, ShoppingCart::getDishId, shoppingCart.getDishId())  // 如果传入的商品ID不为空,筛选商品ID

                .eq(shoppingCart.getSetmealId() != null, ShoppingCart::getSetmealId, shoppingCart.getSetmealId());  // 如果传入的套餐ID不为空,筛选套餐ID

        ShoppingCart shoppingCart1 = shoppingCartService.getOne(lambdaQueryWrapper);  // 返回符合条件的购物车记录

        int shoppingCartNumber = shoppingCart1.getNumber();

        try {

            if (shoppingCartNumber > 1) {  // 如果记录的数量大于1,则减少数量

                shoppingCartNumber = shoppingCart1.getNumber() - 1;  // 记录的数量减1

                shoppingCart1.setNumber(shoppingCartNumber);  // 更新记录的数量

                shoppingCartService.updateById(shoppingCart1);  // 更新购物车记录

            } else {  // 如果记录的数量为1,则删除该记录

                shoppingCartService.removeById(shoppingCart1.getId());

            }

        } catch (Exception e) {

            return R.error("删除失败");

        }

        return R.success("删除成功");

    }

6.7.4 订单支付

用户选完菜品/套餐后, 可以对购物车菜品进行结算支付, 这时就需要进行订单的支付。

6.7.5 个人信息

在个人中心页面中会展示当前用户的基本信息, 用户可以管理收货地址, 也可以查询历史订单数据。

地址修改与删除核心代码:   

 @PutMapping

    public R<String> addressBookupdate(@RequestBody AddressBook addressBook, HttpSession session){

        //设置修改时间

        addressBook.setUpdateTime(LocalDateTime.now());

        //设置修改人

        addressBook.setUpdateUser((Long)session.getAttribute("user"));

        addressBookService.updateById(addressBook);

        return R.success("修改地址成功!");

    }

    @DeleteMapping

    public R<String> detele(@RequestParam("ids") Long id){

        addressBookService.removeById(id);

        return R.success("删除地址成功!");

    }

7 测试

7.1 员工管理功能测试

员工管理测试表

测试用例

期望结果

实际结果

查询员工

通过账号登录进入后可以根据员工姓名查找该员工信息

测试通过

添加员工

通过输入新员工的信息实现对新员工的添加操作。

测试通过

修改员工

点击编辑可以对所选员工的个人信息进行修改

测试通过

禁用员工

点击禁用能够有效的禁止该员工的登录权限

测试通过

根据上面的测试结果来看,该功能通过所有的测试用例并且符合需求。

7.2 分类管理功能测试

分类管理测试表

测试用例

期望结果

实际结果

查看菜品/套餐

员工可以查看当前显示所有菜品或套餐类型

测试通过

添加菜品/套餐

员工能够对新的菜品或套餐类型进行添加操作

测试通过

修改菜品/套餐

员工可以对于信息错误的菜品或套餐进行更改

测试通过

删除菜品/套餐

员工能够对于过时或冷门的菜品或套餐进行删除

测试通过

根据上面的测试结果来看,该功能通过所有的测试用例并且符合需求。

7.3 地址管理功能测试

地址管理测试表

测试用例

期望结果

实际结果

查看地址

用户可以查看当前显示的所有个人地址信息

测试通过

添加地址

用户能够对新的地址信息进行添加操作

测试通过

修改地址

用户可以对于错误的地址信息进行更改

测试通过

删除地址

用户能够对于一些不常用的地址进行删除

测试通过

根据上面的测试结果来看,该功能通过所有的测试用例并且符合需求。

8 部署

  1. 首先打开项目Maven工具栏,确定将要打包的模块,点开Lifecycle选项,然后选择Install开始打包。
  2. 先在IDEA控制台上单击切换到Terminal终端页面,然后在项目所在位置后的指令输入提示位置指令部署即可。

9 总结

通过实训我们学习到MyBatisPlus是MyBatis的增强工具,它为MyBatis提供了更加方便快捷的使用方式,同时也提供了更多的扩展功能。

它提供了大量的注解和接口,如@TableField注解可以定义表字段的属性等等。另外它还提供了一些高级特性,如分页查询、逻辑删除和多表关联查询等。

在这次实训中,我通过编写代码、模拟实际场景等方式,来提升自己的编程能力,同时需要注重代码规范和功能的完整性,不断优化和完善项目。

其次,我深刻的认识到Java编程需要掌握各种开发工具和框架,如IntelliJ IDEA、Spring boot等,这些工具和框架可以提高开发效率。因此,在实训中也应该注重培养学员的独立学习能力,让他们自主学习并运用各种工具和框架。

最后,Java编程需要具备良好的团队协作能力,因为实际项目中不可能仅仅由单人完成,需要多人协作完成。在实训中也应该注重培养个人的沟通技巧和团队合作精神,如果能够在团队中融洽合作,就能极大地提高项目的实战效果。

注:由于源码量过多,需要的朋友可在资源中下载,也可私信我拿取! 

おすすめ

転載: blog.csdn.net/qq_64314976/article/details/131594411