Java實(shí)現(xiàn)花卉管理系統(tǒng)
這是一個(gè)稍微綜合一點(diǎn)的小小小項(xiàng)目,算是給Java的學(xué)習(xí)畫(huà)一個(gè)小結(jié)點(diǎn)。
直接開(kāi)門(mén)見(jiàn)山來(lái)看設(shè)計(jì)吧。
1.上傳的這個(gè)版本是通過(guò)文本存儲(chǔ)數(shù)據(jù)(PS:別問(wèn)我為啥不用數(shù)據(jù)庫(kù),因?yàn)楫?dāng)時(shí)事情多.....懶得實(shí)現(xiàn))
2.這個(gè)版本有歡迎界面、增加花卉界面、刪除花卉界面、修改花卉信息界面、查詢(xún)花卉界面。
3.對(duì)文本的增刪查改過(guò)程全部定義在獨(dú)立的類(lèi)的方法中,通過(guò)對(duì)類(lèi)中方法的調(diào)用來(lái)實(shí)現(xiàn)。
以下是代碼的文件表:
在這個(gè)程序中的絕大多數(shù)提示我用的都是具有鮮明時(shí)代特色的表情包,哈哈哈哈哈哈
先讓你們小小欣賞下(哈哈哈哈哈,前方小高能,非戰(zhàn)斗人員請(qǐng)盡快撤退!?。?/p>
1. 當(dāng)有未填信息時(shí)
2. 當(dāng)編號(hào)中包含非數(shù)字符時(shí)(單價(jià)非數(shù)字時(shí)等提示圖片一樣)
3.當(dāng)輸入正確時(shí)
主函數(shù)代碼(Test.java):
public class Test { /** * @param args */ public static void main(String[] args) { Enter enter = new Enter(); //AddFlower add = new AddFlower(); //SearchFlower s = new SearchFlower(); //DeleteFlower d = new DeleteFlower(); //ModifyFlower m = new ModifyFlower(); } }
歡迎界面(Enter.java):
import javax.swing.*; import javax.swing.event.AncestorListener; import java.awt.*; import java.awt.event.*; public class Enter extends JFrame implements ActionListener { JLabel PhotoLabel = new JLabel(new ImageIcon("Flower.jpg")); JButton loginbt;//登錄進(jìn)入按鈕 JLabel InformationJLabel;//歡迎語(yǔ) public Enter() { this.setSize(500, 500); this.setTitle("花卉信息管理系統(tǒng)"); this.setLocation(700,200); this.setVisible(true); this.setLayout(null); //設(shè)置照片為背景 String Background = "Flower.jpg"; ImageIcon background = new ImageIcon(Background); JLabel label = new JLabel(background); label.setBounds(0, 0,this.getWidth() , this.getHeight()); JPanel imagePanel = (JPanel) this.getContentPane(); imagePanel.setOpaque(false); this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.init(); } private void init() { loginbt=new JButton("登錄"); loginbt.setSize(100,50); loginbt.setLocation(180, 330); loginbt.addActionListener(this); this.add(loginbt); InformationJLabel = new JLabel("歡迎使用!"); InformationJLabel.setFont(new Font("宋體", Font.BOLD | Font.ITALIC, 50)); InformationJLabel.setSize(300, 50); InformationJLabel.setLocation(120,150); this.add(InformationJLabel); } @Override public void actionPerformed(ActionEvent e) { AddFlower addflower = new AddFlower(); } }
增加花卉界面(AddFlower.java):
import javax.swing.*; import javax.swing.event.AncestorListener; import java.awt.Font; import java.awt.event.*; public class AddFlower extends JFrame implements ActionListener { JLabel tableLabel; JLabel NumLabel;//編號(hào) JLabel NameLabel;//名稱(chēng) JLabel PriceLabel;//單價(jià) JLabel UnitLabel;//計(jì)價(jià)單位 JTextField NumText;//編號(hào)文本框 JTextField NameText;//名稱(chēng)文本框 JTextField PriceText;//單價(jià)文本框 JTextField UnitText;//計(jì)價(jià)單位文本框 JButton[] rbts;//按鈕數(shù)組對(duì)象 ButtonGroup btGroup;//按鈕組,從邏輯上來(lái)涵蓋所有的單選按鈕 JButton Addbt;//增加按鈕 public AddFlower() { this.setSize(500, 500); this.setTitle("花卉信息管理系統(tǒng)"); this.setLocation(700,200); this.setVisible(true); this.setLayout(null); this.init(); } private void init() { //增刪查改功能入口按鈕 btGroup=new ButtonGroup(); rbts=new JButton[4]; String[] strs = {"增加","刪除","搜索","修改"}; for(int i = 0;i<strs.length;i++) { rbts[i]=new JButton(strs[i]); rbts[i].setSize(70, 30); rbts[i].setLocation(100*i+60, 30); btGroup.add(rbts[i]);//從邏輯上將單選按鈕添加到一個(gè)按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } //編號(hào) NumLabel=new JLabel("編號(hào)"); NumLabel.setFont(NumLabel.getFont().deriveFont(Font.BOLD, 18)); NumLabel.setSize(90,30); NumLabel.setLocation(70, 110); this.add(NumLabel); NumText=new JTextField(); NumText.setSize(180,30); NumText.setLocation(170, 110); this.add(NumText); //名稱(chēng) NameLabel=new JLabel("名稱(chēng)"); NameLabel.setFont(NameLabel.getFont().deriveFont(Font.BOLD, 18)); NameLabel.setSize(90,30); NameLabel.setLocation(70, 170); this.add(NameLabel); NameText=new JTextField(); NameText.setSize(180,30); NameText.setLocation(170, 170); this.add(NameText); //單價(jià) PriceLabel=new JLabel("單價(jià)"); PriceLabel.setFont(PriceLabel.getFont().deriveFont(Font.BOLD, 18)); PriceLabel.setSize(90,30); PriceLabel.setLocation(70, 230); this.add(PriceLabel); PriceText=new JTextField(); PriceText.setSize(180,30); PriceText.setLocation(170, 230); this.add(PriceText); //計(jì)價(jià)單位 UnitLabel=new JLabel("計(jì)價(jià)單位"); UnitLabel.setFont(UnitLabel.getFont().deriveFont(Font.BOLD, 18)); UnitLabel.setSize(90,30); UnitLabel.setLocation(70, 290); this.add(UnitLabel); UnitText=new JTextField(); UnitText.setSize(180,30); UnitText.setLocation(170, 290); this.add(UnitText); //添加按鈕 Addbt=new JButton("添加"); Addbt.setSize(90,50); Addbt.setLocation(200, 360); Addbt.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if(!checkIsNull()) { final ImageIcon icon3 = new ImageIcon("question.png"); JOptionPane.showMessageDialog(null,"有未填信息?", "提示", JOptionPane.INFORMATION_MESSAGE, icon3); }else { if(!checkInput().equals("")) { final ImageIcon icon2 = new ImageIcon("NotOk.png"); JOptionPane.showMessageDialog(null,checkInput(), "提示", JOptionPane.INFORMATION_MESSAGE, icon2); }else { FlowerDAO dao = new FlowerDAO(); //引用添加花朵信息的方法 StringBuffer FloInfo=new StringBuffer(); FloInfo.append(NumText.getText().trim()+","); FloInfo.append(NameText.getText().trim()+","); FloInfo.append(PriceText.getText().trim()+","); FloInfo.append(UnitText.getText().trim()); // dao.AddFlower(FloInfo); if(dao.AddFlower(FloInfo.toString())) { final ImageIcon icon = new ImageIcon("Ok2.png"); JOptionPane.showMessageDialog(null,"添加成功", "提示", JOptionPane.INFORMATION_MESSAGE, icon); NumText.setText(""); NameText.setText(""); PriceText.setText(""); UnitText.setText(""); } else { final ImageIcon icon1 = new ImageIcon("NotOk2.png"); JOptionPane.showMessageDialog(null,"信息重復(fù)", "提示", JOptionPane.INFORMATION_MESSAGE, icon1); } } } } } ); this.add(Addbt); } @Override public void actionPerformed(ActionEvent e) { String buttonName = e.getActionCommand(); if(buttonName.equals("增加")){ System.out.println("已處在增加界面上"); }else if(buttonName.equals("刪除")){ DeleteFlower deleteflower = new DeleteFlower(); }else if(buttonName.equals("搜索")){ SearchFlower searchflower = new SearchFlower(); }else{ ModifyFlower modifyflower = new ModifyFlower(); } } private boolean checkIsNull() { boolean flag=true; if(NumText.getText().trim().equals("")) { flag = false; }else if(NameText.getText().trim().equals("")) { flag=false; }else if(PriceText.getText().trim().equals("")) { flag=false; }else if(UnitText.getText().trim().equals("")) { flag=false; } return flag; } private Object checkInput() { String result=""; String result1=""; for(int i=0;i<NumText.getText().trim().length();i++) { char ch=NumText.getText().trim().charAt(i); if((ch<'0')||(ch>'9')) { result="編號(hào)中包含非數(shù)字字符"; break; } } for(int i=0;i<PriceText.getText().trim().length();i++) { char ch=PriceText.getText().trim().charAt(i); if((ch<'0')||(ch>'9')) { result1="單價(jià)中包含非數(shù)字字符"; break; } } if(result=="編號(hào)中包含非數(shù)字字符" && result1=="") { return result; }else if(result1=="單價(jià)中包含非數(shù)字字符" && result=="") { return result1; }else if(result=="編號(hào)中包含非數(shù)字字符" && result1=="單價(jià)中包含非數(shù)字字符") { return "編號(hào)和單價(jià)中均包含非數(shù)字字符"; }else { return ""; } } }
刪除花卉界面(DeleteFlower.java):
import javax.swing.*; import java.awt.Font; import java.awt.event.*; import java.util.ArrayList; public class DeleteFlower extends JFrame implements ActionListener { JLabel tableLabel;//標(biāo)題 JScrollPane tablePane;//滾動(dòng)視口 JTable table;//花卉列表 JLabel Labelnum;//刪除提示 JTextField DeleteText;//刪除文本框 JButton Deletebt;//刪除按鈕 JButton[] rbts;//按鈕數(shù)組對(duì)象 ButtonGroup btGroup;//按鈕組,從邏輯上來(lái)涵蓋所有的單選按鈕 public DeleteFlower() { this.setLayout(null); this.setSize(700, 580); this.setTitle("花卉信息管理系統(tǒng)"); this.setLocation(600,250); this.init(); this.refreshTable(); this.setVisible(true); new Thread().start(); } private void init() { //增刪查改功能入口按鈕 btGroup=new ButtonGroup(); rbts=new JButton[4]; String[] strs = {"增加","刪除","搜索","修改"}; for(int i = 0;i<strs.length;i++) { rbts[i]=new JButton(strs[i]); rbts[i].setSize(70, 30); rbts[i].setLocation(150*i+80, 10); btGroup.add(rbts[i]);//從邏輯上將單選按鈕添加到一個(gè)按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } Labelnum = new JLabel("編號(hào)"); Labelnum.setFont(Labelnum.getFont().deriveFont(Font.BOLD, 16)); Labelnum.setSize(100,30); Labelnum.setLocation(100,70); this.add(Labelnum); DeleteText = new JTextField(); DeleteText.setSize(180,30); DeleteText.setLocation(170, 70); this.add(DeleteText); Deletebt = new JButton("刪除"); Deletebt.setSize(70, 30); Deletebt.setLocation(380, 70); Deletebt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int str=JOptionPane.showConfirmDialog(null, "是否刪除?", "警告", JOptionPane.YES_NO_OPTION); if(str==JOptionPane.YES_OPTION) { //System.out.println("進(jìn)入"); if(checkIsNull()){ if(FlowerDAO.DeleteFlower(DeleteText.getText().trim())) { final ImageIcon icon = new ImageIcon("Ok.png"); JOptionPane.showMessageDialog(null,"刪除成功", "提示", JOptionPane.INFORMATION_MESSAGE, icon); DeleteText.setText(""); refreshTable(); } else { JOptionPane.showMessageDialog(null, "刪除失敗", "提示", JOptionPane.ERROR_MESSAGE); } }else{ final ImageIcon icon1 = new ImageIcon("黑人問(wèn)號(hào)3.png"); JOptionPane.showMessageDialog(null,"未輸入刪除信息", "提示", JOptionPane.INFORMATION_MESSAGE, icon1); } }else{ ; } } } ); this.add(Deletebt); } private void refreshTable() { tableLabel = new JLabel("花卉列表"); tableLabel.setBounds(300,105, 100, 50); tableLabel.setFont(new Font("宋體", Font.BOLD , 20)); this.add(tableLabel); String[] columnNames = {"編號(hào)","名稱(chēng)","單價(jià)","計(jì)價(jià)單位"}; FlowerDAO dao=new FlowerDAO(); ArrayList<String> flos=dao.findAllFlowers(); Object[][] objs=new Object[flos.size()][4]; for(int i=0;i<flos.size();i++) { String[] strs1=flos.get(i).split(","); objs[i][0]=strs1[0]; objs[i][1]=strs1[1]; objs[i][2]=strs1[2]; objs[i][3]=strs1[3]; System.out.println(strs1[0]); } table=new JTable(objs,columnNames); table.setSize(380,150); tablePane = new JScrollPane(table); tablePane.setSize(660, 350); tablePane.setLocation(10, 150); table.getTableHeader().setReorderingAllowed(false); table.getTableHeader().setResizingAllowed(false); table.enable(false); this.add(tablePane); } public void run() { while (true) { //每隔1秒鐘更新JTable table.validate(); table.updateUI(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } @Override public void actionPerformed(ActionEvent e) { String buttonName = e.getActionCommand(); if(buttonName.equals("增加")){ AddFlower addflower = new AddFlower(); }else if(buttonName.equals("刪除")){ System.out.println("已處在刪除界面上"); }else if(buttonName.equals("搜索")){ SearchFlower searchflower = new SearchFlower(); }else{ ModifyFlower modifyflower = new ModifyFlower(); } } private boolean checkIsNull() { boolean flag=true; if(DeleteText.getText().trim().equals("")) { flag = false; } return flag; } private Object checkInput() { String result=""; String result1=""; for(int i=0;i<DeleteText.getText().trim().length();i++) { char ch=DeleteText.getText().trim().charAt(i); if((ch<'0')||(ch>'9')) { result="編號(hào)中包含非數(shù)字字符"; break; }else { result=""; break; } } return result; } }
搜索花卉界面(SearchFlower.java):
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; public class SearchFlower extends JFrame implements ActionListener { JLabel tableLabel;//標(biāo)題 JScrollPane tablePane;//滾動(dòng)視口 JTable table;//花卉列表 JLabel NumLabel;//編號(hào)標(biāo)題 JLabel NameLabel;//名稱(chēng)標(biāo)題 JLabel PriceLabel;//單價(jià)標(biāo)題 JLabel UnitLabel;//計(jì)價(jià)單位標(biāo)題 JPanel panel; JComboBox comboBox;//組合框 JTextField SearchText;//搜索文本框 JButton SearchButton;//搜索按鍵 /* JTextField NumText;//編號(hào)文本框 JTextField NameText;//名稱(chēng)文本框 JTextField PriceText;//單價(jià)文本框 JTextField UnitText;//計(jì)價(jià)單位文本框 */ JButton[] rbts;//按鈕數(shù)組對(duì)象 ButtonGroup btGroup;//按鈕組,從邏輯上來(lái)涵蓋所有的單選按鈕 public SearchFlower() { this.setLayout(null); this.setSize(700, 580); this.setTitle("花卉信息管理系統(tǒng)"); this.setLocation(600,250); this.setBackground(Color.lightGray); this.init(); this.refreshTable(); this.setVisible(true); } private void init() { //增刪查改功能入口按鈕 btGroup=new ButtonGroup(); rbts=new JButton[4]; String[] strs = {"增加","刪除","搜索","修改"}; for(int i = 0;i<strs.length;i++) { rbts[i]=new JButton(strs[i]); rbts[i].setSize(70, 30); rbts[i].setLocation(150*i+80, 10); btGroup.add(rbts[i]);//從邏輯上將單選按鈕添加到一個(gè)按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } String[] string = { "搜索條件", "編號(hào)", "名稱(chēng)" }; comboBox = new JComboBox(string); comboBox.setSize(100,30); comboBox.setLocation(50,70); this.add(comboBox); SearchText = new JTextField(); SearchText.setSize(180,30); SearchText.setLocation(170, 70); this.add(SearchText); SearchButton = new JButton("搜索"); SearchButton.setSize(70, 30); SearchButton.setLocation(380, 70); SearchButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String item = (String)comboBox.getSelectedItem(); ArrayList<String> result=new ArrayList<String>(); if("搜索條件".equals(item)) { SearchText.setText(""); }else if("編號(hào)".equals(item)){ //根據(jù)編號(hào)進(jìn)行查找的方法 if(checkIsNull()){ result.add(FlowerDAO.findFlowerBySno(SearchText.getText().trim())); JOptionPane.showMessageDialog(null, result.clone()); }else{ JOptionPane.showMessageDialog(null, "未輸入查詢(xún)信息","提示", JOptionPane.ERROR_MESSAGE); } }else if("名稱(chēng)".equals(item)){ //根據(jù)名稱(chēng)進(jìn)行查找的方法 if(checkIsNull()) { result.add(FlowerDAO.findFlowerBySname(SearchText.getText().trim())); JOptionPane.showMessageDialog(null, result.clone()); }else{ JOptionPane.showMessageDialog(null, "未輸入查詢(xún)信息", "提示", JOptionPane.ERROR_MESSAGE); } } } } ); this.add(SearchButton); } private void refreshTable() { tableLabel = new JLabel("花卉列表"); tableLabel.setBounds(300,105, 100, 50); tableLabel.setFont(new Font("宋體", Font.BOLD , 20)); String[] columnNames = {"編號(hào)","名稱(chēng)","單價(jià)","計(jì)價(jià)單位"}; FlowerDAO dao=new FlowerDAO(); ArrayList<String> flos=dao.findAllFlowers(); Object[][] objs=new Object[flos.size()][4]; for(int i=0;i<flos.size();i++) { String[] strs1=flos.get(i).split(","); objs[i][0]=strs1[0]; objs[i][1]=strs1[1]; objs[i][2]=strs1[2]; objs[i][3]=strs1[3]; System.out.println(strs1[0]); } table=new JTable(objs,columnNames); table.setSize(380,150); tablePane = new JScrollPane(table); tablePane.setSize(660, 350); tablePane.setLocation(10, 150); table.getTableHeader().setReorderingAllowed(false); table.getTableHeader().setResizingAllowed(false); table.enable(false); //this.removeAll(); //this.init(); this.add(tableLabel); this.add(tablePane); } @Override public void actionPerformed(ActionEvent e) { String buttonName = e.getActionCommand(); if(buttonName.equals("增加")){ AddFlower addflower = new AddFlower(); }else if(buttonName.equals("刪除")){ DeleteFlower deleteflower = new DeleteFlower(); }else if(buttonName.equals("搜索")){ System.out.println("已處在搜索界面上"); }else{ ModifyFlower modifyflower = new ModifyFlower(); } } private boolean checkIsNull() { boolean flag=true; if(SearchText.getText().trim().equals("")) { flag = false; } return flag; } private Object checkInput() { String result=""; String result1=""; for(int i=0;i<SearchText.getText().trim().length();i++) { char ch=SearchText.getText().trim().charAt(i); if((ch<'0')||(ch>'9')) { result="編號(hào)中包含非數(shù)字字符"; break; }else { result=""; break; } } return result; } }
修改花卉界面(ModifyFlower.java):
import javax.swing.*; import java.awt.Font; import java.awt.event.*; import java.util.ArrayList; public class ModifyFlower extends JFrame implements ActionListener { JButton[] rbts;//按鈕數(shù)組對(duì)象 ButtonGroup btGroup;//按鈕組,從邏輯上來(lái)涵蓋所有的單選按鈕 JLabel tableLabel;//標(biāo)題 JScrollPane tablePane;//滾動(dòng)視口 JTable table;//花卉列表 JLabel NumLabel;//編號(hào) JLabel NameLabel;//名稱(chēng) JLabel PriceLabel;//單價(jià) JLabel UnitLabel;//計(jì)價(jià)單位 JTextField NumText;//編號(hào)文本框 JTextField NameText;//名稱(chēng)文本框 JTextField PriceText;//單價(jià)文本框 JTextField UnitText;//計(jì)價(jià)單位文本框 JButton Modifybt;//修改按鈕 public ModifyFlower() { this.setLayout(null); this.setSize(700, 580); this.setTitle("花卉信息管理系統(tǒng)"); this.setLocation(600,250); this.init(); this.refreshTable(); this.setVisible(true); } private void init() { //增刪查改功能入口按鈕 btGroup=new ButtonGroup(); rbts=new JButton[4]; String[] strs = {"增加","刪除","搜索","修改"}; for(int i = 0;i<strs.length;i++) { rbts[i]=new JButton(strs[i]); rbts[i].setSize(70, 30); rbts[i].setLocation(150*i+80, 10); btGroup.add(rbts[i]);//從邏輯上將單選按鈕添加到一個(gè)按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } //編號(hào) NumLabel=new JLabel("編號(hào)"); NumLabel.setFont(NumLabel.getFont().deriveFont(Font.BOLD, 16)); NumLabel.setSize(80,30); NumLabel.setLocation(80, 60); this.add(NumLabel); NumText=new JTextField(); NumText.setSize(100,30); NumText.setLocation(140, 60); this.add(NumText); //名稱(chēng) NameLabel=new JLabel("名稱(chēng)"); NameLabel.setFont(NameLabel.getFont().deriveFont(Font.BOLD, 16)); NameLabel.setSize(80,30); NameLabel.setLocation(300,60); this.add(NameLabel); NameText=new JTextField(); NameText.setSize(100,30); NameText.setLocation(380, 60); this.add(NameText); //單價(jià) PriceLabel=new JLabel("單價(jià)"); PriceLabel.setFont(PriceLabel.getFont().deriveFont(Font.BOLD, 16)); PriceLabel.setSize(80,30); PriceLabel.setLocation(80, 100); this.add(PriceLabel); PriceText=new JTextField(); PriceText.setSize(100,30); PriceText.setLocation(140, 100); this.add(PriceText); //計(jì)價(jià)單位 UnitLabel=new JLabel("計(jì)價(jià)單位"); UnitLabel.setFont(UnitLabel.getFont().deriveFont(Font.BOLD, 16)); UnitLabel.setSize(80,30); UnitLabel.setLocation(300, 100); this.add(UnitLabel); UnitText=new JTextField(); UnitText.setSize(100,30); UnitText.setLocation(380, 100); this.add(UnitText); Modifybt = new JButton("修改"); Modifybt.setSize(70, 30); Modifybt.setLocation(530, 100); Modifybt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(!checkIsNull())//如果用戶(hù)輸入為空的話(huà) { final ImageIcon icon = new ImageIcon("黑人問(wèn)號(hào).png"); JOptionPane.showMessageDialog(null,"輸入信息為空!", "提示", JOptionPane.INFORMATION_MESSAGE, icon); } else { if(!checkInput().equals("")) { JOptionPane.showMessageDialog(null,checkInput()); } else { FlowerDAO dao=new FlowerDAO(); //創(chuàng)建一個(gè)操作學(xué)生信息文本文件的對(duì)象 StringBuffer floInfo=new StringBuffer(); floInfo.append(NumText.getText().trim()+","); floInfo.append(NameText.getText().trim()+","); floInfo.append(PriceText.getText().trim()+","); floInfo.append(UnitText.getText().trim()); if(dao.ModifyFlower(floInfo.toString())) { final ImageIcon icon2 = new ImageIcon("OK2.png"); JOptionPane.showMessageDialog(null,"修改成功", "提示", JOptionPane.INFORMATION_MESSAGE, icon2); NumText.setText(""); NameText.setText(""); PriceText.setText(""); UnitText.setText(""); refreshTable(); //添加成功后刷新表格 } else { JOptionPane.showMessageDialog(null,"修改記錄失敗"); } } } } } ); this.add(Modifybt); } //表格 private void refreshTable() { tableLabel = new JLabel("花卉列表"); tableLabel.setBounds(300,140, 100, 50); tableLabel.setFont(new Font("宋體", Font.BOLD , 20)); String[] columnNames = {"編號(hào)","名稱(chēng)","單價(jià)","計(jì)價(jià)單位"}; FlowerDAO dao=new FlowerDAO(); ArrayList<String> flos=dao.findAllFlowers(); Object[][] objs=new Object[flos.size()][4]; for(int i=0;i<flos.size();i++) { String[] strs1=flos.get(i).split(","); objs[i][0]=strs1[0]; objs[i][1]=strs1[1]; objs[i][2]=strs1[2]; objs[i][3]=strs1[3]; System.out.println(strs1[0]); } table=new JTable(objs,columnNames); table.setSize(380,150); tablePane = new JScrollPane(table); tablePane.setSize(660, 320); tablePane.setLocation(10, 190); table.getTableHeader().setReorderingAllowed(false); table.getTableHeader().setResizingAllowed(false); table.enable(false); this.add(tableLabel); this.add(tablePane); } //刷新表格 public void run() { while (true) { //每隔1秒鐘更新JTable table.validate(); table.updateUI(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } @Override public void actionPerformed(ActionEvent e) { String buttonName = e.getActionCommand(); if(buttonName.equals("增加")){ AddFlower addflower = new AddFlower(); }else if(buttonName.equals("刪除")){ DeleteFlower deleteflower = new DeleteFlower(); }else if(buttonName.equals("搜索")){ SearchFlower searchflower = new SearchFlower(); }else{ System.out.println("已處在修改界面上"); } } private boolean checkIsNull() { boolean flag=true; if(NumText.getText().trim().equals("")) { flag = false; }else if(NameText.getText().trim().equals("")) { flag=false; }else if(PriceText.getText().trim().equals("")) { flag=false; }else if(UnitText.getText().trim().equals("")) { flag=false; } return flag; } private Object checkInput() { String result=""; String result1=""; for(int i=0;i<NumText.getText().trim().length();i++) { char ch=NumText.getText().trim().charAt(i); if((ch<'0')||(ch>'9')) { result="編號(hào)中包含非數(shù)字字符"; break; } } for(int i=0;i<PriceText.getText().trim().length();i++) { char ch=PriceText.getText().trim().charAt(i); if((ch<'0')||(ch>'9')) { result1="單價(jià)中包含非數(shù)字字符"; break; } } if(result=="編號(hào)中包含非數(shù)字字符" && result1=="") { return result; }else if(result1=="單價(jià)中包含非數(shù)字字符" && result=="") { return result1; }else if(result=="編號(hào)中包含非數(shù)字字符" && result1=="單價(jià)中包含非數(shù)字字符") { return "編號(hào)和單價(jià)中均包含非數(shù)字字符"; }else { return ""; } } }
增刪查改方法實(shí)現(xiàn)(FlowerDAO.java):
import java.io.*; import java.util.ArrayList; public class FlowerDAO { //查找所有的花卉信息 public ArrayList<String> findAllFlowers() { ArrayList<String> result=new ArrayList<String>(); try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個(gè)文件字符輸入流對(duì)象 BufferedReader br=new BufferedReader(fr); //以上一個(gè)對(duì)象作為參數(shù)來(lái)創(chuàng)建一個(gè)緩沖的字符輸入流對(duì)象 String str=br.readLine();//讀取一行數(shù)據(jù) while(str!=null) { result.add(str); str=br.readLine(); } br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("文件未找到"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("文件讀錯(cuò)誤"); } return result; } //通過(guò)編號(hào)來(lái)查找花朵的基本信息 public static String findFlowerBySno(String sno) { String result="不存在這個(gè)花朵"; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個(gè)文件字符輸入流對(duì)象 BufferedReader br=new BufferedReader(fr); //以上一個(gè)對(duì)象作為參數(shù)來(lái)創(chuàng)建一個(gè)緩沖的字符輸入流對(duì)象 String str=br.readLine();//讀取一行數(shù)據(jù) boolean flag=true; while(flag) { if(str.startsWith(sno.trim())) { result=str; flag=false; } str=br.readLine();//繼續(xù)讀取下一行 if(str==null) { flag=false; } } br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("文件未找到"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("文件讀錯(cuò)誤"); } return result; } //通過(guò)名稱(chēng)來(lái)查找花朵的基本信息 public static String findFlowerBySname(String sname) { String result="不存在這個(gè)花朵"; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個(gè)文件字符輸入流對(duì)象 BufferedReader br=new BufferedReader(fr); //以上一個(gè)對(duì)象作為參數(shù)來(lái)創(chuàng)建一個(gè)緩沖的字符輸入流對(duì)象 String str=br.readLine();//讀取一行數(shù)據(jù) boolean flag=true; while(flag) { if(str.substring(4).startsWith(sname.trim())) { result=str; flag=false; } str=br.readLine();//繼續(xù)讀取下一行 if(str==null) { flag=false; } } br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("文件未找到"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("文件讀錯(cuò)誤"); } return result; } //通過(guò)名稱(chēng)來(lái)查找花朵的基本信息 public String findFlowerByname(boolean bool,String name) { String result="不存在這個(gè)花朵"; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個(gè)文件字符輸入流對(duì)象 BufferedReader br=new BufferedReader(fr); //以上一個(gè)對(duì)象作為參數(shù)來(lái)創(chuàng)建一個(gè)緩沖的字符輸入流對(duì)象 String str=br.readLine();//讀取一行數(shù)據(jù) boolean flag=true; while(flag) { String temp=str; if(!bool) { temp=str.substring(4); } if(temp.startsWith(name.trim())) { result=str; flag=false; } str=br.readLine();//繼續(xù)讀取下一行 if(str==null) { flag=false; } } br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("文件未找到"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("文件讀錯(cuò)誤"); } return result; } //增加一條花朵記錄 public boolean AddFlower(String Floinfo) { String[] strs=Floinfo.split(","); if(!numIsExist(strs[0]) && !nameIsExist(strs[1])) { try { FileWriter fw=new FileWriter("Flower.txt",true); //創(chuàng)建一個(gè)文件的字符輸出流,第二個(gè)參數(shù)表示是在文件尾部進(jìn)行追加 BufferedWriter bw=new BufferedWriter(fw); //以上面創(chuàng)建的對(duì)象為參數(shù)創(chuàng)建一個(gè)緩沖字符輸出流 bw.newLine(); //創(chuàng)建新的一行 bw.write(Floinfo); bw.close(); fw.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("文件未找到"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("文件寫(xiě)錯(cuò)誤"); } return true; } else { return false; } } //判斷是否已經(jīng)存在重復(fù)的編號(hào) private boolean numIsExist(String num) { boolean result=false; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個(gè)文件字符輸入流對(duì)象 BufferedReader br=new BufferedReader(fr); //以上一個(gè)對(duì)象作為參數(shù)來(lái)創(chuàng)建一個(gè)緩沖的字符輸入流對(duì)象 String str=br.readLine();//讀取一行數(shù)據(jù) while(str!=null) { if(str.startsWith(num)) { result=true; break; } str=br.readLine(); } br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("文件未找到"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("文件讀錯(cuò)誤"); } return result; } //判斷名稱(chēng)是否重復(fù) private boolean nameIsExist(String name) { boolean result=false; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個(gè)文件字符輸入流對(duì)象 BufferedReader br=new BufferedReader(fr); //以上一個(gè)對(duì)象作為參數(shù)來(lái)創(chuàng)建一個(gè)緩沖的字符輸入流對(duì)象 String str=br.readLine();//讀取一行數(shù)據(jù) while(str!=null) { if(str.startsWith(name)) { result=true; break; } str=br.readLine(); } br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("文件未找到"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("文件讀錯(cuò)誤"); } return result; } //增加多條花朵記錄 public int AddFlowers(String[] Flos) { int result=0; //定義一個(gè)變量來(lái)保存添加成功的花卉記錄個(gè)數(shù) if(Flos!=null) { if(Flos.length>0) { for(int i=0;i<Flos.length;i++) { if(AddFlower(Flos[i])) { result++; } } } } return result; } //刪除一條花朵記錄的方法 public static boolean DeleteFlower(String num) { boolean result=false; //保存刪除是否成功的變量 try { FileReader fr=new FileReader("Flower.txt"); BufferedReader br=new BufferedReader(fr); String str=br.readLine();//讀取一行數(shù)據(jù) ArrayList<String> list=new ArrayList<String>(); //保存讀入的花朵信息 boolean flag=true; while(flag) { list.add(str); str=br.readLine();//再次讀取一行數(shù)據(jù) if(str==null) { flag=false; } } br.close(); fr.close(); for(int i=0;i<list.size();i++) { if(list.get(i).startsWith(num)) { list.remove(i); result=true; break; } }//將對(duì)應(yīng)的花朵記錄移除 FileWriter fw=new FileWriter("Flower.txt"); //創(chuàng)建一個(gè)文件的字符輸出流,不需要追加 BufferedWriter bw=new BufferedWriter(fw); //以上面創(chuàng)建的對(duì)象為參數(shù)創(chuàng)建一個(gè)緩沖字符輸出流 for(int i=0;i<list.size();i++) { bw.write(list.get(i)); //分別寫(xiě)入花卉記錄 bw.newLine(); } bw.flush(); bw.close(); fw.close(); } catch(IOException ex) { } return result; } //刪除多條花朵記錄的方法 public int DeleteFlowers(String[] nums) { int result=0; //用來(lái)保存成功刪除的花朵記錄個(gè)數(shù) if(nums!=null) { if(nums.length>0) { for(int i=0;i<nums.length;i++) { if(DeleteFlower(nums[i])) { result++; } } } } return result; } //修改一條記錄的方法 public boolean ModifyFlower(String Floinfo) { String[] strs=Floinfo.split(","); if(numIsExist(strs[0])) { try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個(gè)文件字符輸入流對(duì)象 BufferedReader br=new BufferedReader(fr); //以上一個(gè)對(duì)象作為參數(shù)來(lái)創(chuàng)建一個(gè)緩沖的字符輸入流對(duì)象 String str=br.readLine();//讀取一行數(shù)據(jù) ArrayList<String> list=new ArrayList<String>(); //保存讀入的花朵信息 boolean flag=true; while(flag) { list.add(str); str=br.readLine();//再次讀取一行數(shù)據(jù) if(str==null) { flag=false; } } br.close(); fr.close(); for(int i=0;i<list.size();i++) { if(list.get(i).startsWith(strs[0])) { list.remove(i); //先從動(dòng)態(tài)數(shù)組對(duì)象中移除 list.add(Floinfo); //然后再添加修改后的花朵記錄 break; } }//將對(duì)應(yīng)的花朵記錄移除 FileWriter fw=new FileWriter("Flower.txt"); //創(chuàng)建一個(gè)文件的字符輸出流,不需要追加 BufferedWriter bw=new BufferedWriter(fw); //以上面創(chuàng)建的對(duì)象為參數(shù)創(chuàng)建一個(gè)緩沖字符輸出流 for(int i=0;i<list.size();i++) { bw.write(list.get(i)); //分別寫(xiě)入花朵記錄 bw.newLine(); } bw.flush(); bw.close(); fw.close(); } catch(IOException ex) { } return true; } else { return false; } } //修改多條花朵記錄 public int ModifyFlowers(String[] Flos) { int result=0; if(Flos!=null) { if(Flos.length>0) { for(int i=0;i<Flos.length;i++) { if(ModifyFlower(Flos[i])) { result++; } } } } return result; } }
這個(gè)代碼量有點(diǎn)大,但難度倒不大。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud讀取Nacos配置中心報(bào)錯(cuò)及遇到的坑:Could?not?resolve?placehold
這篇文章主要介紹了SpringCloud讀取Nacos配置中心報(bào)錯(cuò):Could?not?resolve?placeholder?‘xxx’?in?value?‘${xxx},本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Java中四種訪(fǎng)問(wèn)權(quán)限資料整理
這篇文章主要介紹了 Java中四種訪(fǎng)問(wèn)權(quán)限總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-05-05Java concurrency集合之ConcurrentSkipListMap_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListMap的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06java中進(jìn)制的轉(zhuǎn)換,Byte與16進(jìn)制的轉(zhuǎn)換方法
下面小編就為大家?guī)?lái)一篇java中進(jìn)制的轉(zhuǎn)換,Byte與16進(jìn)制的轉(zhuǎn)換方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11Java隨手筆記8之包、環(huán)境變量和訪(fǎng)問(wèn)控制及maven profile實(shí)現(xiàn)多環(huán)境打包
這篇文章主要介紹了Java隨手筆記8之包、環(huán)境變量和訪(fǎng)問(wèn)控制及maven profile實(shí)現(xiàn)多環(huán)境打包的相關(guān)資料,需要的朋友可以參考下2015-11-11Java Date類(lèi)常用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
在JDK1.0中,Date類(lèi)是唯一的一個(gè)代表時(shí)間的類(lèi),但是由于Date類(lèi)不便于實(shí)現(xiàn)國(guó)際化,所以從JDK1.1版本開(kāi)始,推薦使用Calendar類(lèi)進(jìn)行時(shí)間和日期處理。這里簡(jiǎn)單介紹一下Date類(lèi)的使用,需要的朋友可以參考下2017-05-05Easypoi 輕松實(shí)現(xiàn)復(fù)雜excel文件導(dǎo)出功能
這篇文章主要介紹了Easypoi 輕松實(shí)現(xiàn)復(fù)雜excel文件導(dǎo)出功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11mybatis配置mapper-locations位置的三種方式小結(jié)
這篇文章主要給大家介紹了關(guān)于mybatis配置mapper-locations位置的三種方式,Mybatis-Plus的初衷是為了簡(jiǎn)化開(kāi)發(fā),而不建議開(kāi)發(fā)者自己寫(xiě)SQL語(yǔ)句的,但是有時(shí)客戶(hù)需求比較復(fù)雜,需要的朋友可以參考下2023-08-08Java單線(xiàn)程ThreadLocal串值問(wèn)題解決方案
這篇文章主要介紹了Java單線(xiàn)程ThreadLocal串值問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04