序文: 小規模スーパーマーケットの規模拡大に伴い、商品の数も飛躍的に増加し、商品に関する情報量も飛躍的に増加しています。 スーパーマーケットでは、さまざまな商品情報を常に統計的に分析する必要があります。 しかし、大規模スーパーマーケットの管理システムの機能は強力すぎるため、操作が煩雑になり、小規模スーパーマーケットの作業効率が低下します。 スーパーマーケット管理システムは、市場のスーパーマーケットで一般的に使用されている最も人気のあるシステムの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=コンパクト ; これで 以下もご興味があるかもしれません:
|
<<: インスピレーションを得るための7つのクールなダイナミックウェブサイトデザイン
>>: 24 の実用的な JavaScript 開発のヒント
目次序文vue.config.js 構成オプションパッケージサイズを縮小するためのパッケージの最適化...
外部 CSS ファイルを使用したレンダリング パイプライン上図では、HTML データの要求から DO...
#include <linux/moduleparam.h> 1. モジュールパラメータ...
テーブルの style="table-layout:fixed;" を設定し、次...
目次外部キーの役割mysql 外部キー設定方法要約する外部キーの役割データの一貫性、整合性を維持し、...
目次Vueカスタムディレクティブカスタムディレクティブフック機能出力関連属性アプリケーション例要約す...
私の友人の多くは、127.0.0.1 と localhost の違いがわからず、問題に遭遇するかもし...
この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...
前回のエピソードレビュー:昨日は、ページがさまざまなデバイス サイズにどのように対応するかについて説...
歴史ルート履歴モードとは、HTML5 の履歴 API を使用してクライアント側ルーティングを実装する...
目次1. はじめに2. vue-cli の紹介2.1 コマンドライン2.2 CLI サービス2.3 ...
概要私たちは、双十一に天猫で化粧品を購入する人の平均支出額を知りたい(商品の価格帯を見つけるのに役立...
1. それは何ですか? MySQL は最も人気のあるリレーショナル データベース管理システムです。W...
オペレーティング システム: windows10_x64 Python バージョン: 3.6.8仮想...
序文私は以前から、SQL 文がどのように実行され、どのような順序で実行されるのかを知りたいと思ってい...