序文: 小規模スーパーマーケットの規模拡大に伴い、商品の数も飛躍的に増加し、商品に関する情報量も飛躍的に増加しています。 スーパーマーケットでは、さまざまな商品情報を常に統計的に分析する必要があります。 しかし、大規模スーパーマーケットの管理システムの機能は強力すぎるため、操作が煩雑になり、小規模スーパーマーケットの作業効率が低下します。 スーパーマーケット管理システムは、市場のスーパーマーケットで一般的に使用されている最も人気のあるシステムの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 開発のヒント
1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...
この記事の例では、商品詳細ページ機能を実現するためのVueの商品タブの具体的なコードを参考までに共有...
序文データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデ...
CentOS8.0-1905 のリリース後、FTP サーバーを CentOS の新しいバージョンに移...
目次1. Set()+Array.from() を使用する2. 2層ループ+アレイ接合方式の使用3....
1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...
CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...
テーブル内の min-width と max-width プロパティの設定 <テーブル>...
目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...
ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...
この記事では、移行、バックアップ、アップグレードなどのシナリオで使用される Docker イメージの...
JavaScript には、for、for in、for of、forEach ループなど、多くのル...
この記事で説明する等幅レイアウトでは、純粋な CSS を使用して、要素の幅を手動で設定することなく、...
前の記事では、deepin linux に新しいカーネルを手動でインストールする方法について説明しま...
Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...