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

推薦する

W3C チュートリアル (3): W3C HTML アクティビティ

HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...

html 内の絶対パス URL と相対パス URL、サブディレクトリ、親ディレクトリ、ルート ディレクトリ

絶対 URL は、インターネット上の特定のファイルに必要なすべてのコンテンツを表すために使用されます...

CentOS7 ファイアウォールとオープンポートの簡単な使い方の簡単な紹介

概要(公式にはより詳しい説明があります) Firewalld は、ネットワーク接続またはインターフェ...

MySQLのインストールと設定方法のグラフィックチュートリアル(CentOS7)

1. システム環境[root@localhost ホーム]# cat /etc/redhat-re...

Docker ファイルの保存パス、ポート マッピング操作モードの変更

コンテナの起動コマンドを取得する方法コンテナはすでに作成されていますが、その起動パラメータ(データが...

要素シャトルフレームのパフォーマンス最適化の実装

目次背景解決新しい質問高度な背景シャトル ボックスが大量のデータを処理すると、レンダリングされる D...

JSONP クロスドメインシミュレーション Baidu 検索

目次1. JSONPとは何か2. JSONPクロスドメインリクエスト3. Baidu検索をシミュレー...

Vue のループフォーム項目例の詳細な説明

場合によっては、ユーザーがボタンをクリックして同様のフォームを追加し、クリックごとに 1 回追加でき...

Linux での一般的なシェル スクリプト コマンドと関連知識

目次1. 覚えておくべき知識1. 変数タイプ2. シェル変数の説明3. シングルクォート、ダブルクォ...

Windows が MySQL サービスを開始できず、エラー 1067 を報告する場合の解決策

突然、MySQLにログインすると、アクセスが拒否されたか、データベースに接続できないと表示されました...

ネイティブ JS オブジェクト指向タイピング ゲーム

この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内...

CSS スタイルを変更してグレーの Web ページ (色なし、明るい白黒のみ) を実現するいくつかの方法

通常、清明節、国哀悼日、大地震の日、影響力のある偉人の死去または命日には、ウェブマスターとして、故人...

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

TypeScript 名前空間のマージの説明

目次同じ名前の名前空間をマージする名前空間とその他の種類のマージ同じ名前の名前空間とクラスをマージす...

MySQLで行を列に変換する方法

MySQL の行から列への操作いわゆる行から列への操作は、テーブルの行情報を列情報に変換することです...