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 開発のヒント

推薦する

MySQLからElasticsearchにデータを同期する方法の詳細な説明

目次1. 同期の原理2. ログスタッシュ入力JDBC 3. go-mysql-elasticsear...

CSS3 フレックスレイアウトを使用して要素を均等に分散するサンプルコード

この記事では主に、CSS3 フレックスレイアウトを使用して要素を均等に配置する方法を紹介します。自分...

Linux で crontab を使用してスケジュールされたタスクを追加する方法

序文Linux システムはシステム サービス crond によって制御されます。 Linux システ...

JS におけるメモリと変数の保存についての詳細な説明

目次序文JSマジックナンバー数値の保存バイナリ変換方法なぜ 0.1 + 0.2 !== 0.3 なの...

CSS継承方法

次の背景画像を持つ div があるとします。 次の反射効果を作成します。 方法はたくさんありますが、...

Windows での MySQL スケジュールバックアップ スクリプトの実装

Windows サーバーでデータベース データを定期的にバックアップする場合は、Windows タス...

フロントエンドとバックエンドを分離した nginx 構成を展開するための完全な手順

序文決まり文句です。ここでは、フロントエンドとバックエンドの分離についての私の理解についてお話ししま...

実用的な基本的な Linux sed コマンドのサンプルコード

Linux ストリーム エディターは、データ センターでスクリプトを実行するのに便利な方法です。これ...

js を使用してネットワークカメラを呼び出し、一般的なエラーを処理します

最近、業務上の理由により、Web ページ上のさまざまなネットワーク カメラにアクセスしてデバッグする...

Vue のトランジション効果とアニメーショントランジションの使用例の詳細な説明

目次遷移フック関数カスタム遷移クラス名遷移グループの使用まとめまずは例を見てみましょうコードは次のと...

MySQL のテーブルリターンとインデックスカバレッジの例の詳細な説明

目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...

CSS3 境界効果

CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...

Centos7 での Rsync+crontab 定期同期バックアップ

最近、社内の重要なサーバデータを定期的にストレージにバックアップし、ついでにメモしておきたい以前、W...

組み込み Linux で QT アプリケーションを再起動する簡単な方法 (QT4.8 qws ベース)

アプリケーション ソフトウェアには通常、次のようなビジネス要件があります。新しいバージョンの APP...

IE6はmin-widthを実装している

まず第一に、この効果は古い話題であるはずだということはわかっています。今日ファイルを整理していたら、...