Vorwort: Da kleine Supermärkte immer größer werden, hat sich die Anzahl der Waren dramatisch erhöht und auch die Menge an Informationen über die Waren hat exponentiell zugenommen. Supermärkte müssen ständig statistische Analysen verschiedener Produktinformationen durchführen. Allerdings verfügen die Verwaltungssysteme großer Supermärkte über zu leistungsstarke Funktionen, was die Bedienung umständlich macht und die Arbeitseffizienz kleiner Supermärkte verringert. Supermarktverwaltungssysteme sind eines der am häufigsten in Supermärkten verwendeten Systeme auf dem Markt. Da ich gerade Java-Kenntnisse erworben habe, sind alle Funktionen relativ einfach gestaltet und umfassen nur das Hinzufügen, Löschen, Ändern und Abfragen von Produktinformationen. Realisieren Sie eine umfassende, dynamische und zeitnahe Verwaltung von Produktinformationen. In diesem Dokument werden der Hintergrund und der Prozess der Softwareentwicklung systematisch analysiert. Zunächst wird die Softwareentwicklungsumgebung vorgestellt, und dann wird der detaillierte Entwurfsprozess dieser Software beschrieben: Datenbankentwurf, Entwurf und Implementierung jedes Moduls sowie Entwurf und Funktionen spezifischer Schnittstellen. Das Bestandsverwaltungssystem des Supermarkts basiert auf Java Eclipse als Entwicklungstool und Mysql als Backend-Datenbankunterstützung. Die Entwicklung eines Bestandsverwaltungssystems für Supermärkte umfasst hauptsächlich die Entwicklung von Schnittstellenprogrammen, die Einrichtung von Datenbanken und die Wartung von Datenbanken. Die Anwendung sollte über vollständige Funktionen, eine gute Mensch-Computer-Interaktionsschnittstelle und einfach zu bedienen sein. Gleichzeitig ist die Sprache JAVASwing einfach und es ist möglich, in relativ kurzer Zeit ein Programm zu entwickeln, das sehr benutzerfreundlich, voll funktionsfähig und leicht zu bedienen ist und außerdem eine Verbindung mit der Datenbank herstellen kann. Hauptmodule: Anzeige von Produktlistendaten, Hinzufügen von Produktinformationen, Ändern von Produktinformationen, Löschen von Produktinformationen, Abfrage von Produktinformationen nach Produktnamen 1. FunktionseinführungFunktions-Screenshots: Produktlisteninformationen abfragen: Produktinformationen hinzufügen: Produktinformationen ändern: Produktinformationen löschen: Nach dem Löschen müssen Sie die Listendaten aktualisieren Produktinformationen nach Nummer abfragen: 2. Schlüsselcode 2.1 Funktionen der Startseiteöffentliche Klasse GoodsManage erweitert JFrame { privates JTextField Textfeld; Auswählen auswählen = neues Auswählen(); Updata updata = neue Updata(); Object[] header= {"Produktnummer","Produktname","Menge","Stückpreis"}; Zeichenfolge SQL = "SELECT Waren-ID, Warenname, Anzahl, Preis AUS Waren"; Objekt[][] Daten= select.getGoods(sql); DefaultTableModel df = neues DefaultTableModel(Daten, Header); int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; öffentliche Warenverwaltung() { super("Produktmanagementsystem"); Dies.setBounds(0, 0, 700, 450); this.setLocationRelativeTo(null);//Das Fenster wird in der Mitte des Bildschirms angezeigt this.setResizable(false);//Die Fenstergröße wird nicht geändert getContentPane().setLayout(null); JTable jTable = neue JTable(df); JScrollPane jsp=neues JScrollPane(jTable,v,h); jsp.setBounds(10, 10, 515, 320); getContentPane().add(jsp); JButton button_1 = neuer JButton("Alle Produkte anzeigen"); button_1.addActionListener(neuer ActionListener() { @Überschreiben public void Aktion ausgeführt(Aktionsereignis e) { Zeichenfolge SQL = "SELECT Waren-ID, Warenname, Anzahl, Preis AUS Waren"; Objekt[][] Daten = Select.getGoods(sql); df.setDataVector(Daten, Header); } }); button_1.setBounds(535, 80, 127, 30); getContentPane().add(button_1); JButton button_2 = neuer JButton("Produkt ändern"); button_2.setBounds(535, 140, 127, 30); getContentPane().add(button_2); button_2.addActionListener(neuer ActionListener() { @Überschreiben public void Aktion ausgeführt(Aktionsereignis e) { wenn (jTable.getSelectedColumn()<0) { JOptionPane.showMessageDialog(null, "Bitte wählen Sie die zu ändernden Daten aus!"); } anders { int Waren-ID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString()); Zeichenfolgenname = jTable.getValueAt(jTable.getSelectedRow(), 1).toString(); int num = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 2).toString()); Zeichenfolge Preis = jTable.getValueAt(jTable.getSelectedRow(), 3).toString(); Waren Waren = neue Waren (Waren-ID, Name, Anzahl, Preis); WareXG WareXG = neue WareXG(Ware); warenXG.setVisible(true); } } }); JButton button_3 = neuer JButton("Produkt löschen"); button_3.setBounds(535, 200, 127, 30); getContentPane().add(button_3); button_3.addActionListener(neuer ActionListener() { @Überschreiben public void Aktion ausgeführt(Aktionsereignis e) { wenn (jTable.getSelectedColumn()<0) { JOptionPane.showMessageDialog(null, "Bitte wählen Sie die zu löschenden Daten aus!"); } anders { int Waren-ID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString()); Zeichenfolge sql="löschen aus Waren, wobei goodsid="+goodsID; int Ergebnis = updata.addData(sql); wenn (Ergebnis>0) { JOptionPane.showMessageDialog(null, "Erfolgreich gelöscht!"); JOptionPane.showMessageDialog(null, "Denken Sie daran, zu aktualisieren!"); } anders { JOptionPane.showMessageDialog(null, "Löschen fehlgeschlagen!"); } } } }); JButton button_4 = neuer JButton("Produkt hinzufügen"); button_4.setBounds(535, 258, 127, 30); getContentPane().add(button_4); button_4.addActionListener(neuer ActionListener() { public void Aktion ausgeführt(Aktionsereignis arg0) { WarenADD WarenAdd = neue WarenADD(); warenAdd.setVisible(true); } }); JLabel label = neues JLabel("Produktnummer:"); label.setBounds(40, 354, 112, 32); getContentPane().add(label); Textfeld = neues JTextField(); textField.setBounds(154, 358, 127, 26); getContentPane().add(textField); textField.setColumns(10); JButton button = neuer JButton("Abfrage nach Nummer"); button.addActionListener(neuer ActionListener() { public void Aktion ausgeführt(Aktionsereignis arg0) { Zeichenfolge SQL = "SELECT Waren-ID, Warenname, Anzahl, Preis FROM Waren WHERE Waren-ID LIKE '%"+textField.getText()+"%'"; Objekt[][] Daten = Select.getGoods(sql); df.setDataVector(Daten, Header); } }); button.setBounds(305, 355, 112, 30); getContentPane().add(button); dies.addWindowListener(neuer WindowAdapter() { public void FensterSchließen(Fensterereignis e) { super.windowClosing(e); //Aktion GoodsManagement hinzufügen m = new GoodsManagement(); m.setVisible(true); } }); } öffentliche statische void main(String[] args) { Waren verwalten t = neues Waren verwalten(); t.setVisible(true); } } 2.2 Produktinformationen hinzufügenöffentliche Klasse GoodsADD erweitert JFrame { private JTextField-ID, Name, Nummer, Preis; privater JButton-Button; privater JButton button_1; öffentliche GoodsADD() { super("Produktmanagementsystem"); Dies.setBounds(0, 0, 400, 450); this.setLocationRelativeTo(null);//Das Fenster wird in der Mitte des Bildschirms angezeigt this.setResizable(false);//Die Fenstergröße wird nicht geändert getContentPane().setLayout(null); JLabel label = neues JLabel("Produktnummer:"); label.setBounds(85, 89, 87, 22); getContentPane().add(label); id = neues JTextField(); id.setBounds(147, 90, 142, 21); getContentPane().add(id); id.setColumns(10); JLabel label_1 = neues JLabel("Produktname"); label_1.setBounds(85, 139, 87, 22); getContentPane().add(label_1); Name = neues JTextField(); Name.Spalten setzen(10); name.setBounds(147, 140, 142, 21); getContentPane().add(name); JLabel label_2 = neues JLabel("Menge:"); label_2.setBounds(85, 193, 87, 22); getContentPane().add(label_2); num = neues JTextField(); Anzahl Spalten festlegen(10); num.setBounds(147, 194, 142, 21); getContentPane().add(num); JLabel label_3 = neues JLabel("Stückpreis:"); label_3.setBounds(85, 241, 87, 22); getContentPane().add(label_3); Preis = neues JTextField(); preis.setColumns(10); Preis.setBounds(147, 242, 142, 21); getContentPane().add(Preis); Schaltfläche = neuer JButton("OK"); button.setBounds(78, 317, 93, 23); getContentPane().add(button); button.addActionListener(neuer ActionListener() { public void Aktion ausgeführt(Aktionsereignis arg0) { Geben Sie die Zeichenfolge addId ein, und geben Sie sie in das Feld id ein. String addName = name.getText(); String addNum = num.getText(); Zeichenfolge addPrice = num.getText(); wenn (addName.equals("")||addName.equals("")||addNum.equals("")||addPrice.equals("")) { JOptionPane.showMessageDialog(null, "Bitte geben Sie die hinzuzufügenden Daten vollständig ein"); } anders { Zeichenfolge sql="INSERT INTO goods VALUES("+addId+",'"+addName+"','"+addNum+"','"+addPrice+"')"; int-Ergebnis = Updata.addData(sql); wenn (Ergebnis>0) { JOptionPane.showMessageDialog(null, "Erfolgreich hinzugefügt!"); JOptionPane.showMessageDialog(null, "Denken Sie daran, zu aktualisieren!"); entsorgen(); //Warenverwaltung i = new Warenverwaltung(); // i.setVisible(true); } anders { JOptionPane.showMessageDialog(null, "Hinzufügen fehlgeschlagen!"); } } } }); button_1 = neuer JButton("Abbrechen"); button_1.setBounds(208, 317, 93, 23); getContentPane().add(button_1); button_1.addActionListener(neuer ActionListener() { public void Aktion ausgeführt(Aktionsereignis arg0) { entsorgen(); } }); } } 2.3 Datenbankdesign ProduktlisteCREATE TABLE `NewTable` ( `goodsID` int(11) NICHT NULL , `goodsName` varchar(10) ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NICHT NULL , `num` int(11) NICHT NULL, `Preis` Dezimalzahl (10,4) NICHT NULL, Primärschlüssel (`goodsID`) ) ENGINE=InnoDB STANDARDZEICHENSATZ=utf8 COLLATE=utf8_general_ci ROW_FORMAT=KOMPAKT ; Dies ist das Ende dieses Artikels über die Entwicklung und Implementierung eines Warenwirtschaftssystems für Supermärkte Das könnte Sie auch interessieren:
|
<<: 7 coole dynamische Website-Designs zur Inspiration
>>: 24 praktische Tipps zur JavaScript-Entwicklung
Vor Kurzem musste ich die Zoom-Videokonferenz tes...
Das Definieren des Datenfeldtyps in MySQL ist für...
In diesem Artikel wird der spezifische Code für d...
Jeder, der schon einmal an einem großen System ge...
Das WeChat-Applet Uniapp realisiert den Löscheffe...
Beim Erlernen von CSS3 geht es mehr darum, sich m...
Dieser Artikel beschreibt, wie mysql5.7.16 aus de...
Der detaillierte Prozess der Verwendung der MySQL...
Schluss mit Unsinn, Postleitzahl HTML-Teil <di...
Inhaltsverzeichnis 1. Offizielle Dokumentation 2....
In diesem Artikelbeispiel erfahren Sie den spezif...
Der Standardanforderungsheader des http1.1-Protok...
Vorwort Als ich heute Xianyu durchsuchte, fiel mi...
Inhaltsverzeichnis 1. Vorverarbeitung 2. Zusammen...
Methode 1: Werte hinzufügen Gehen wir zu MDN, um ...