Utilisez la langue Java pour rédiger un programme qui simule la fonction de règlement d'achat d'un supermarché en ligne. Il nécessite que le programme dispose d'une interface utilisateur graphique après l'exécution, ce qui permet aux utilisateurs de saisir des informations sur divers produits achetés, et enfin de donner la liste de courses de l'utilisateur et le prix total.
Analyse des exigences:
1. L'administrateur ajoute des produits et leurs prix
2. Imprimer les informations de commande et le code de commande de règlement lors de l'achat de produits par les utilisateurs:
/ * * Créateur: Zhang Junqiang * Temps: 2016/5/15 * * / package Salesys; import java.awt. *; import java.awt.event. *; Importer java.util.vector; importer javax.swing. *; Importer java.sql. *; GRANCES DE CLASSE {String public [] Nom; Float public [] Prix; Biens () {name = new String [100]; prix = nouveau flotteur [100]; }} La classe publique Supermarket étend JFrame {public static void main (String [] args) lève SQELLEXception {MainWinow MainWin = new MainWinow ("Découvrez les achats de supermarchés en ligne"); mainwin.setDefaultCloseOperation (jframe.exit_on_close); Mainwin.setbounds (300, 300, 500, 400); mainwin.setVisible (true); mainwin.setwin (Mainwin); mainwin.setminwindowlayout (); }} classe Mainwinow étend JFrame {marchandises; Utilisateur privé JBUTTON; Private Jbutton Manager; JLABEL privé Loginlabel; Magwin de manage privé; UserWindow privé Userwin; L'auditeur privé Lis; Private Mainwinow Loginwin; private int marchandnum; / * * Réglage de l'interface * * / JLabel privé setNameLabel; JLABEL privé SetpriceLabel; JTEXFIELD privé SetNameText; privé jTextfield setPriceText; JBUTTON PRIVET BUTBUT; Private TextArea Inputarea; Private Jbutton ReturnBut1; Private Jbutton CancelBut; / * * Interface utilisateur * * / vecteur privé <string> buyItem; float privé [] buyCount; privé int buynum; JCOMBOBOX PRIVÉSCOMBOX; Soldat JBUTTON RETOURBUT2; JLABEL PRIVÉE ChoiceGoodLabel; JLABEL PRIVÉE ShowPriceLabel; privé jTextfield showPrice; Textarea privé showchoice; JLABEL privé JLABEL ShowBuynum; privé jTextfield showBuynumText; JBUTTON PRIMEDBUY; Private Jbutton DeleteBuybut; Private Jlist Choicelist; Private Jbutton CountBut; Float Private Float Summoney; / ** * Importation de la base de données * / instruction stmt; MainWinow (String WinName) lève SQException {super (winName); bourse de marchandises = 0; buynum = 0; summoney = (float) 0; marchandises = nouveaux biens (); user = new Jbutton ("Je suis un utilisateur"); Manager = new JBUTTON ("Je suis administrateur"); LoginLabel = new JLabel ("Veuillez sélectionner le rôle!"); magwin = new ManageWindow ("Set Product"); magwin.setbounds (300, 300, 500, 400); magwin.setdefaultCloseOperation (do_nothing_on_close); userWin = new UserWindow ("Bienvenue à l'achat"); userwin.setbounds (300, 300, 500, 400); userwin.setDefaultCloseOperation (do_nothing_on_close); lis = nouvel auditeur (); / * * Définir l'initialisation de l'interface * * / setNameLabel = new JLabel ("Nom du commerce:"); setPRICELABEL = new JLabel ("Price:"); setNameText = new JTextField (5); setpriseText = new JTextField (5); inputBut = new Jbutton ("Confirmer pour ajouter"); inputArea = new TextArea (); returnBut1 = new JButton ("return"); CancelBut = new JBUTTON ("rétractation add"); / * * Initialisation de l'interface utilisateur * * / bourse bourse = new JComboBox (); returnBut2 = new JButton ("return"); ChoiceGoodLabel = new JLabel ("Veuillez sélectionner le produit:"); showpriceLabel = new JLabel ("prix"); showPrice = new JTextField (5); showChoice = new TextArea (); showBuynum = new JLabel ("Quantité d'achat:"); showBuynumText = new JTextField (5); SoumideBuy = new JBUTTON ("Confirmer l'achat"); DeleteBuyBut = new JBUTTON ("Delete Order"); countBut = new JBUTTON ("Order Settlement"); ChoiceList = new JList (); buyItem = new vector <string> (); buyCount = nouveau flotteur [100]; / * * Importation de la base de données * * / try {class.forname ("com.mysql.jdbc.driver"); } catch (classNotFoundException e) {// TODO Generated Catch Block E.PrintStackTrace (); } String url = "jdbc: mysql: // localhost: 3306 / périphérique"; String user = "root"; String mot de passe = "ZJQ1314520"; Connexion Con = driverManager.getConnection (URL, utilisateur, mot de passe); stmt = con.creataStation (); / * * Exportation des données de base de données * * / importationsql (); } public void import // TODO Méthode générée automatiquement Stub ResultSet Resultime = stmt.ExecuteQuery ("SELECT NAM, Price From Goods_info"); while (result.next ()) {good.name [i-1] = result.getString (1); GOODS.PRICE [i-1] = float.parsefloat (result.getString (2)); i ++; } gochsNum = i-1; } public void setwin (mainwinow w) {loginwin = w; } public void setminwindowlayout () {Container LoginCon = new Container (); loginCon.SetLayout (new FlowLayout ()); LoginCon.Add (Manager); loginCon.add (utilisateur); Manager.AddactionListener (LIS); user.addactionListener (LIS); this.setLayout (new BorderLayout ()); this.add (loginlabel, borderlayout.north); this.add (logincon, borderlayout.center); this.validate (); / * * Définir la disposition de l'interface * * / magwin.setLayout (new FlowLayout ()); magwin.add (setNameLabel); magwin.add (setNameText); magwin.add (setPriceLabel); MAGWIN.ADD (SetpriceText); MAGWIN.ADD (InputBut); MAGWIN.ADD (InputArea); MAGWIN.ADD (AnnuleBut); magwin.add (returnBut1); inputBut.AddactionListener (LIS); returnBut1.AddactionListener (LIS); CancelBut.AddactionListener (LIS); / * * Layout de l'interface utilisateur * * / userwin.setLayout (new BorderLayout ()); Conteneur usercon = nouveau conteneur (); userCon.SetLayout (new FlowLayout ()); usercon.add (ChoiceGoodLabel); usercon.add (banc de bobine); usercon.add (showpriceLabel); usercon.add (showPrice); usercon.add (showBuynum); usercon.add (showBuynumText); usercon.add (soumisBuy); userwin.add (usercon, borderlayout.north); //choiceList.setListData(goods.name); userwin.add (ChoiceList, BorderLayout.Center); userwin.add (nouveau jscrollpane (ChoiceList)); Conteneur maisCon = nouveau conteneur (); nutCon.SetLayout (new FlowLayout ()); maisCon.add (DeleteBuybut); maisCon.add (countBut); nutCon.add (returnBut2); userwin.add (maiscon, borderlayout.south); boursier bancaire.additemListener (new ItemListener () {@Override public void ItemStateChanged (itemEvent e) {// TODO Méthode générée automatiquement Stub int i = bandoulière.getSelectedIndex (); if (i> = 0) showPrice.settext (good.price [i] .tostring ());}}); returnBut2.AddactionListener (LIS); soumidBuy.addactionListener (LIS); DeleteBuybut.AddactionListener (LIS); countBut.addactionListener (LIS); } private void addComboxItem () {// TODO Méthode générée automatiquement Stume pour (int i = 0; i <woodsnum; i ++) {bandoulière.Additem (GOODS.NAME [i]); }} CLASS L'écouteur implémente ActionListener {@Override public void ActionPerformed (ActionEvent e) {// TODO Méthode générée automatiquement Stub if (e.getSource () == Manager) {addGoods (); loginwin.setVisible (false); magwin.setVisible (true); } if (e.getSource () == User) {loginwin.setVisible (false); userwin.setVisible (true); bourse bancaire.removealLitems (); addComboxItem (); } if (e.getSource () == inputBut) {// String showout = ""; if (setNameText.getText (). Equals ("") || setpriseText.getText (). Equals ("")) {joptionpane.showMessageDialog (magwin, "pas de rechange!", "avertissement", joptionpane.plain_message); } else {godes.name [gochesNum] = setNameText.getText (); GOODS.PRICE [GoodsNum] = Float.Parsefloat (setPriceText.GetText ()); Essayez {/ * * Écrivez dans la base de données * * / stmt.ExecuteUpdate ("Insérer dans les valeurs de biens_info (nom, prix) ('" + GOODS.NAME [Woodsnum] + "', '" + (float) goons.price [biensnum] + "' ')"); } catch (sqlexception e1) {// TODO Block de catch généré automatiquement e1.printStackTrace (); } gochsnum ++; addgoods (); setNameText.seTText (""); setpriseText.seTText (""); // showout = "Trade Name:" + setNameText.getText () + "/ t" + "Price:" + setpriseText.getText () + "/ n"; //inputarea.append(Showout); }} if (e.getsource () == annulerBut) {if (gochesNum> 0) {bourse -; String Deletename = GOODS.NAME [GoodsNum]; String DeletePrice = GOODS.PRICE [GoodsNum] .ToString (); //System.out.println(DeleTename); / * * Supprimer les éléments dans la base de données * * / string sql = "Delete from woods_info where name = '" + deletename + "' and prix = '" + deleteprice + "'"; essayez {stmt.ExecuteUpDate (SQL); } catch (sqlexception e1) {// TODO Block de catch généré automatiquement e1.printStackTrace (); } // connexion con = dbmanager .getConnection () ;; // préparéStatement ps = con.prepareparestatement (SQL); addgoods (); }} if (e.getsource () == returnBut1) {loginwin.setVisible (true); magwin.setVisible (false); } / * * Réponse de l'événement de l'interface utilisateur * * / if (e.getSource () == returnBut2) {loginwin.setVisible (true); userwin.setVisible (false); } if (e.getSource () == SoumidBuy) {if (! showBuynumText.getText (). Equals ("")) {BuyCount [banc de bobine String Contealtem = ""; Float invocon = float.parsefloat (showBuynumText.getText ()) * (float) goons.price [bandoulière.GetSelectedIndex ()]; Contealtem = "Nom de Trade:" + GOODS.NAME [WATSECCOMBOX.GetSelectedIndex ()] + "" + "Prix unitaire:" + GOODS.PRICE [WATTESCOBLOX.GETSELECTEDIDEX ()]. TOSTRING () + "" + "Prix d'achat:" + ShowBuynumText.getText () + "" + "Prix total:" + Summon.Tostring (); BuyItem.Addelement (ContentItem); // BuyItem [BuyNum] = ContinentItem; BuyNum ++; chooselist.removeall (); ChoiceList.setListData (BuyItem); Summery + = invocation; } else {joptionpane.showMessageDialog (magwin, "La quantité d'achat ne peut pas être vide", "avertissement", joptionpane.plain_message); }} if (e.getsource () == DeleteBuyBut) {if (choiceList.getSelectedValue () == null) {joptionpane.showMessageAriAl (Magwin, "Aucun élément à supprimer est sélectionné", "WARNING", JOPTIONPANE.PLAIN_MESSAGE); } else if (buynum> 0) {int i = choiceList.getSelectedIndex (); String SelectItem = BuyItem.get (i); //System.out.println(SelectItem); String DeletePrice = ""; pour (int j = 0; j <SelectItem.Length () - 3; J ++) {// System.out.println (SelectItem.Substring (J, J + 3)); if (selectItem.SubString (J, J + 3) .Equals ("Prix total:")) {deletePrice = selectItem.Substring (j + 3, selectItem.length ()); System.out.println (deletePrice); Summery- = float.parsefloat (deletePrice); casser; }} buyItem.Remove (i); ChoiceList.removeall (); ChoiceList.setListData (BuyItem); ChoiceList.Validate (); buynum--; } else {joptionpane.showMessageAdIalog (Magwin, "Le panier est vide, ne peut pas être supprimé", "avertissement", joptionpane.plain_message); }} if (e.getsource () == countBut) {// sommoney pour (int i = 0; i <BuyItem.size (); i ++) {String str = buyItem.get (i) .substring (0, 2); if (str.equals ("prix total")) {BuyItem.Remove (i); }} BuyItem.Addelement ("Prix total:" + sommoney.toString ()); ChoiceList.removeall (); ChoiceList.setListData (BuyItem); ChoiceList.Validate (); }} private void addgoods () {if (! inputarea.getText (). equals ("")) inputarea.setText (""); // TODO Méthode générée automatiquement Stume pour (int i = 0; i <woodsnum; i ++) {String massage = "Nom de Trade:" + GOODS.NAME [i] + "/ t" + "Price:" + Goods.price [i] .toString () + "/ n"; inputarea.append (massage); }}} classe ManageWindow étend jFrame {manageWindow (string title) {super (title); }} classe UserWindow étend jFrame {userwindow (String title) {super (title); }}Supprimez la pièce de base de données pertinente et exécutez-la sur votre ordinateur!
Captures d'écran connexes:
Interface administratrice:
Interface utilisateur:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.