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

推薦する

CentOS 7.6 仮想ネットワーク カードのバッチ追加、変更、削除操作の紹介

1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...

Vueは商品詳細ページの商品タブ機能を実装します

この記事の例では、商品詳細ページ機能を実現するためのVueの商品タブの具体的なコードを参考までに共有...

MySQL データベースの文字化け問題の原因と解決策

序文データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデ...

CentOS8.0 で FTP サーバーをインストールして設定する方法

CentOS8.0-1905 のリリース後、FTP サーバーを CentOS の新しいバージョンに移...

JS で配列の重複排除を実装する 7 つの方法

目次1. Set()+Array.from() を使用する2. 2層ループ+アレイ接合方式の使用3....

JavaScript でグレイウルフのポットビーティングゲームを実装

1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...

WebページでjQueryを参照する方法

CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...

テーブルの最大幅と最小幅を設定する際の互換性の問題と解決策の詳細な説明

テーブル内の min-width と max-width プロパティの設定 <テーブル>...

動的テーブルを実装するための要素サンプルコード

目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...

UbuntuにMySQLをインストールするときにデフォルトのパスワードを変更する詳細な手順

ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...

Dockerイメージをインポートおよびエクスポートする方法

この記事では、移行、バックアップ、アップグレードなどのシナリオで使用される Docker イメージの...

JavaScript ステートメントの一般的な for ループの詳細な説明

JavaScript には、for、for in、for of、forEach ループなど、多くのル...

CSS を使用して複数の方法で等幅レイアウトを実装するサンプルコード

この記事で説明する等幅レイアウトでは、純粋な CSS を使用して、要素の幅を手動で設定することなく、...

冗長カーネルを削除するLinuxディープインの実装方法

前の記事では、deepin linux に新しいカーネルを手動でインストールする方法について説明しま...

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...