Mysql+JavaSwing に基づくスーパーマーケット商品管理システムの設計と実装

Mysql+JavaSwing に基づくスーパーマーケット商品管理システムの設計と実装

序文:

小規模スーパーマーケットの規模拡大に伴い、商品の数も飛躍的に増加し、商品に関する情報量も飛躍的に増加しています。 スーパーマーケットでは、さまざまな商品情報を常に統計的に分析する必要があります。 しかし、大規模スーパーマーケットの管理システムの機能は強力すぎるため、操作が煩雑になり、小規模スーパーマーケットの作業効率が低下します。 スーパーマーケット管理システムは、市場のスーパーマーケットで一般的に使用されている最も人気のあるシステムの1つです。 Javaの知識を習得したばかりなので、すべての機能は比較的シンプルに設計されており、商品情報の追加、削除、変更、およびクエリのみが可能です。製品情報の包括的、動的、タイムリーな管理を実現します。本稿では、ソフトウェア開発の背景とプロセスを体系的に分析し、まずソフトウェア開発環境を紹介し、次にこのソフトウェアの詳細な設計プロセス(データベース設計、各モジュールの設計と実装、特定のインターフェースの設計と機能)を紹介します。スーパーマーケットの在庫管理システムは、開発ツールとして Java Eclipse を、バックエンド データベース サポートとして Mysql をベースにしています。スーパーマーケット在庫管理システムの開発には、主にインターフェース プログラムの開発、データベースの構築、データベースの保守が含まれます。アプリケーションは完全な機能、優れた人間とコンピュータの相互作用インターフェースを備え、操作が簡単である必要があります。同時に、JAVASwing言語はシンプルで、比較的短期間で、使い勝手が高く、機能が充実し、操作しやすいプログラムを開発することができ、データベースとの接続も実現できます。

メインモジュール:

商品リストデータ表示、商品情報追加、商品情報修正、商品情報削除、商品名による商品情報照会

1. 機能紹介

機能スクリーンショット:

製品リスト情報を照会します:

製品情報を追加します:

製品情報を変更する:

製品情報を削除します:

削除後、リストデータを更新する必要があります

番号で製品情報を照会します:

2. キーコード

2.1 ホームページの機能

パブリッククラスGoodsManageはJFrameを拡張します{
 プライベート JTextField テキストフィールド;
 Select select = new Select();
 アップデータ updata = new Updata();
 Object[] header= {"商品番号","商品名","数量","単価"};
 文字列 sql = "商品ID、商品名、番号、価格を商品から選択します";
 オブジェクト[][]データ= select.getGoods(sql);
 DefaultTableModel df = 新しい DefaultTableModel(データ、ヘッダー);
 int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_​​AS_NEEDED;
 int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_​​AS_NEEDED;
 
 パブリックGoodsManage() {
  super("製品管理システム");
  境界を0, 0, 700, 450に設定します。
  this.setLocationRelativeTo(null);//ウィンドウを画面の中央に表示します this.setResizable(false);//ウィンドウのサイズを変更しません getContentPane().setLayout(null);
  
  JTable jTable = new JTable(df);
  JScrollPane jsp = 新しい JScrollPane(jTable,v,h);
  jsp.setBounds(10, 10, 515, 320);
  getContentPane() を追加します(jsp);
  
  JButton button_1 = new JButton("すべての製品を表示");
  button_1.addActionListener(新しいActionListener() {
   @オーバーライド
   パブリック void アクションが実行されました (アクションイベント e) {
    文字列 sql = "商品ID、商品名、番号、価格を商品から選択します";
    オブジェクト[][]データ = Select.getGoods(sql);
    df.setDataVector(データ、ヘッダー);
   }
  });
 
  ボタン1に境界を設定します(535, 80, 127, 30);
  getContentPane().add(button_1);
  
  JButton button_2 = new JButton("製品の変更");
  ボタン2.setBounds(535, 140, 127, 30);
  getContentPane() を追加します(button_2);
  button_2.addActionListener(新しいActionListener() {
   @オーバーライド
   パブリック void アクションが実行されました (アクションイベント e) {
    (jTable.getSelectedColumn()<0) の場合 {
     JOptionPane.showMessageDialog(null, "変更するデータを選択してください!");
    } それ以外 {
     int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
     文字列名 = jTable.getValueAt(jTable.getSelectedRow(), 1).toString();
     int num = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 2).toString());
     文字列価格 = jTable.getValueAt(jTable.getSelectedRow(), 3).toString();
     商品 goods = new Goods(goodsID,name,num,price);
     商品XG 商品XG = 新しい商品XG(商品);
     goodsXG.setVisible(true);
    }
    
   }
  });
  
  JButton button_3 = new JButton("製品を削除");
  ボタン3.setBounds(535, 200, 127, 30);
  getContentPane().add(button_3);
  button_3.addActionListener(新しいActionListener() {
   @オーバーライド
   パブリック void アクションが実行されました (アクションイベント e) {
    (jTable.getSelectedColumn()<0) の場合 {
     JOptionPane.showMessageDialog(null, "削除するデータを選択してください!");
    } それ以外 {
     int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
     文字列 sql="delete from goods where goodsid="+goodsID;
     int 結果 = updata.addData(sql);
     結果>0の場合{
      JOptionPane.showMessageDialog(null, "正常に削除されました!");
      JOptionPane.showMessageDialog(null, "更新を忘れないでください!");
     } それ以外 {
      JOptionPane.showMessageDialog(null, "削除に失敗しました!");
     }
    }
   }
  });
  
  JButton button_4 = new JButton("商品を追加");
  ボタン4.setBounds(535, 258, 127, 30);
  getContentPane().add(button_4);
  button_4.addActionListener(新しいActionListener() {
   パブリック void actionPerformed(ActionEvent arg0) {
    商品追加 商品追加 = new 商品追加();
    goodsAdd.setVisible(true);
   }
  });
  
  JLabel label = new JLabel("製品番号:");
  ラベル.setBounds(40, 354, 112, 32);
  getContentPane().add(ラベル);
  
  テキストフィールド = 新しい JTextField();
  テキストフィールド.setBounds(154, 358, 127, 26);
  getContentPane().add(テキストフィールド);
  テキストフィールド.setColumns(10);
  
  JButton button = new JButton("番号によるクエリ");
  button.addActionListener(新しいActionListener() {
   パブリック void actionPerformed(ActionEvent arg0) {
    文字列 sql = "SELECT goodsID,goodsname,num,price FROM goods WHERE goodsid LIKE '%"+textField.getText()+"%'";
    オブジェクト[][]データ = Select.getGoods(sql);
    df.setDataVector(データ、ヘッダー);
   }
  });
  ボタン.setBounds(305, 355, 112, 30);
  getContentPane().add(ボタン);
  
  this.addWindowListener(新しいWindowAdapter() {
    
   パブリック void windowClosing(WindowEvent e) {
    super.windowClosing(e);
    //アクションを追加 GoodsManagement m = new GoodsManagement();
    m.setVisible(true);
    }
  });
 }
 
 パブリック静的voidメイン(String[] args) {
  GoodsManage t = 新しい GoodsManage();
  t.setVisible(true);
 }
}

2.2 製品情報を追加する

パブリッククラスGoodsADDはJFrameを拡張します{
 プライベート JTextField id、名前、数値、価格;
 プライベート JButton ボタン;
 プライベート JButton button_1;
 
 パブリックGoodsADD() {
  super("製品管理システム");
  境界を0, 0, 400, 450に設定します。
  this.setLocationRelativeTo(null);//ウィンドウを画面の中央に表示します this.setResizable(false);//ウィンドウのサイズを変更しません getContentPane().setLayout(null);
  
  JLabel label = new JLabel("製品番号:");
  ラベル.setBounds(85, 89, 87, 22);
  getContentPane().add(ラベル);
  
  id = 新しい JTextField();
  id.setBounds(147, 90, 142, 21);
  getContentPane().add(id);
  id.setColumns(10);
  
  JLabel label_1 = new JLabel("製品名");
  label_1.setBounds(85, 139, 87, 22);
  getContentPane().add(label_1);
  
  名前 = 新しい JTextField();
  名前.setColumns(10);
  名前.setBounds(147, 140, 142, 21);
  getContentPane().add(名前);
  
  JLabel label_2 = new JLabel("数量:");
  label_2.setBounds(85, 193, 87, 22);
  getContentPane().add(label_2);
  
  num = 新しい JTextField();
  num.setColumns(10);
  数値.setBounds(147, 194, 142, 21);
  getContentPane().add(num);
  
  JLabel label_3 = new JLabel("単価:");
  ラベル3.setBounds(85, 241, 87, 22);
  getContentPane().add(label_3);
  
  価格 = 新しい JTextField();
  価格.setColumns(10);
  価格.setBounds(147, 242, 142, 21);
  getContentPane().add(価格);
  
  ボタン = 新しい JButton("OK");
  ボタン.setBounds(78, 317, 93, 23);
  getContentPane().add(ボタン);
  button.addActionListener(新しいActionListener() {
   パブリック void actionPerformed(ActionEvent arg0) {
    文字列 addId = id.getText();
    文字列 addName = name.getText();
    文字列 addNum = num.getText();
    文字列 addPrice = num.getText();
    if (addName.equals("")||addName.equals("")||addNum.equals("")||addPrice.equals("")) {
     JOptionPane.showMessageDialog(null, "追加するデータを完全に入力してください");
    } それ以外 {
     文字列 sql="INSERT INTO goods VALUES("+addId+",'"+addName+"','"+addNum+"','"+addPrice+"')";
     int 結果 = Updata.addData(sql);
     結果>0の場合{
      JOptionPane.showMessageDialog(null, "正常に追加されました!");
                  JOptionPane.showMessageDialog(null, "更新を忘れないでください!");
      破棄();
//GoodsManage i = 新しい GoodsManage();
// i.setVisible(true);
     } それ以外 {
      JOptionPane.showMessageDialog(null, "追加に失敗しました!");
     }
    }
 
   }
  });
  
  button_1 = 新しい JButton("キャンセル");
  ボタン1.setBounds(208, 317, 93, 23);
  getContentPane().add(button_1);
  button_1.addActionListener(新しいActionListener() {
   パブリック void actionPerformed(ActionEvent arg0) {
    破棄();
   }
  });
  
 }
}

2.3 データベース設計

製品リスト

テーブル `NewTable` を作成します (
`goodsID` int(11) NOT NULL ,
`goodsName` varchar(10) 文字セット utf8 COLLATE utf8_general_ci NOT NULL ,
`num` int(11) NOT NULL ,
`price` 小数点(10,4) NOT NULL ,
主キー (`goodsID`)
)
エンジン=InnoDB
デフォルト文字セット=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=コンパクト
;

これで于Mysql+JavaSwingスーパーマーケット商品管理システムの設計と実装に関するこの記事は終了です。 Mysql+JavaSwingをベースにしたスーパーマーケット商品管理システムの設計と実装の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 学生情報管理システムのソースコードを実装するためのJava(Swing)+MySQL
  • Java+MySQL はライブラリ管理システムを実装します (完全なコード)
  • Java で茶販売モールシステムを実装 (java+SSM+JSP+EasyUi+mysql)
  • Eclipse+Java+Swing+MySQLで給与管理システムを実装
  • Eclipse+Java+Swing+MySQL で映画チケット購入システムを実装する (詳細なコード)
  • Java+Swing+Mysqlで商品販売管理システムを実装
  • Java+MySQLによるクーポンシステムの設計

<<:  インスピレーションを得るための7つのクールなダイナミックウェブサイトデザイン

>>:  24 の実用的な JavaScript 開発のヒント

推薦する

vue.config.js からプロジェクト最適化までの vue2.x 構成

目次序文vue.config.js 構成オプションパッケージサイズを縮小するためのパッケージの最適化...

CSS が初期読み込み時の白い画面の時間に与える影響

外部 CSS ファイルを使用したレンダリング パイプライン上図では、HTML データの要求から DO...

初心者のためのMySQL外部キーの設定方法

目次外部キーの役割mysql 外部キー設定方法要約する外部キーの役割データの一貫性、整合性を維持し、...

Vueカスタム命令の詳細な説明

目次Vueカスタムディレクティブカスタムディレクティブフック機能出力関連属性アプリケーション例要約す...

MySQLデータベースホスト127.0.0.1とlocalhostの違い

私の友人の多くは、127.0.0.1 と localhost の違いがわからず、問題に遭遇するかもし...

VueはPCカメラを呼び出して写真機能を実現します

この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...

レスポンシブWebデザイン学習(2) — 動画をレスポンシブにすることはできるのか?

前回のエピソードレビュー:昨日は、ページがさまざまなデバイス サイズにどのように対応するかについて説...

vue-router 履歴モード サーバー側設定プロセス記録

歴史ルート履歴モードとは、HTML5 の履歴 API を使用してクライアント側ルーティングを実装する...

vue-cli の紹介とインストール

目次1. はじめに2. vue-cli の紹介2.1 コマンドライン2.2 CLI サービス2.3 ...

MySQL グループ化クエリと集計関数

概要私たちは、双十一に天猫で化粧品を購入する人の平均支出額を知りたい(商品の価格帯を見つけるのに役立...

MySQL 入門 - 概念

1. それは何ですか? MySQL は最も人気のあるリレーショナル データベース管理システムです。W...

Windows で virtualenv を使用して仮想環境を作成する方法 (2 つの方法)

オペレーティング システム: windows10_x64 Python バージョン: 3.6.8仮想...

MySQL インフラストラクチャ チュートリアル: クエリ ステートメント実行プロセスの詳細な説明

序文私は以前から、SQL 文がどのように実行され、どのような順序で実行されるのかを知りたいと思ってい...