序文: 小規模スーパーマーケットの規模拡大に伴い、商品の数も飛躍的に増加し、商品に関する情報量も飛躍的に増加しています。 スーパーマーケットでは、さまざまな商品情報を常に統計的に分析する必要があります。 しかし、大規模スーパーマーケットの管理システムの機能は強力すぎるため、操作が煩雑になり、小規模スーパーマーケットの作業効率が低下します。 スーパーマーケット管理システムは、市場のスーパーマーケットで一般的に使用されている最も人気のあるシステムの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. 同期の原理2. ログスタッシュ入力JDBC 3. go-mysql-elasticsear...
この記事では主に、CSS3 フレックスレイアウトを使用して要素を均等に配置する方法を紹介します。自分...
序文Linux システムはシステム サービス crond によって制御されます。 Linux システ...
目次序文JSマジックナンバー数値の保存バイナリ変換方法なぜ 0.1 + 0.2 !== 0.3 なの...
次の背景画像を持つ div があるとします。 次の反射効果を作成します。 方法はたくさんありますが、...
Windows サーバーでデータベース データを定期的にバックアップする場合は、Windows タス...
序文決まり文句です。ここでは、フロントエンドとバックエンドの分離についての私の理解についてお話ししま...
Linux ストリーム エディターは、データ センターでスクリプトを実行するのに便利な方法です。これ...
最近、業務上の理由により、Web ページ上のさまざまなネットワーク カメラにアクセスしてデバッグする...
目次遷移フック関数カスタム遷移クラス名遷移グループの使用まとめまずは例を見てみましょうコードは次のと...
目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...
CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...
最近、社内の重要なサーバデータを定期的にストレージにバックアップし、ついでにメモしておきたい以前、W...
アプリケーション ソフトウェアには通常、次のようなビジネス要件があります。新しいバージョンの APP...
まず第一に、この効果は古い話題であるはずだということはわかっています。今日ファイルを整理していたら、...