Java實現(xiàn)花卉管理系統(tǒng)
這是一個稍微綜合一點的小小小項目,算是給Java的學習畫一個小結(jié)點。
直接開門見山來看設(shè)計吧。
1.上傳的這個版本是通過文本存儲數(shù)據(jù)(PS:別問我為啥不用數(shù)據(jù)庫,因為當時事情多.....懶得實現(xiàn))
2.這個版本有歡迎界面、增加花卉界面、刪除花卉界面、修改花卉信息界面、查詢花卉界面。
3.對文本的增刪查改過程全部定義在獨立的類的方法中,通過對類中方法的調(diào)用來實現(xiàn)。
以下是代碼的文件表:
在這個程序中的絕大多數(shù)提示我用的都是具有鮮明時代特色的表情包,哈哈哈哈哈哈
先讓你們小小欣賞下(哈哈哈哈哈,前方小高能,非戰(zhàn)斗人員請盡快撤退!?。?/p>
1. 當有未填信息時
2. 當編號中包含非數(shù)字符時(單價非數(shù)字時等提示圖片一樣)
3.當輸入正確時
主函數(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;//登錄進入按鈕 JLabel InformationJLabel;//歡迎語 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;//編號 JLabel NameLabel;//名稱 JLabel PriceLabel;//單價 JLabel UnitLabel;//計價單位 JTextField NumText;//編號文本框 JTextField NameText;//名稱文本框 JTextField PriceText;//單價文本框 JTextField UnitText;//計價單位文本框 JButton[] rbts;//按鈕數(shù)組對象 ButtonGroup btGroup;//按鈕組,從邏輯上來涵蓋所有的單選按鈕 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]);//從邏輯上將單選按鈕添加到一個按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } //編號 NumLabel=new JLabel("編號"); 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); //名稱 NameLabel=new JLabel("名稱"); 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); //單價 PriceLabel=new JLabel("單價"); 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); //計價單位 UnitLabel=new JLabel("計價單位"); 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,"信息重復", "提示", 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="編號中包含非數(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="單價中包含非數(shù)字字符"; break; } } if(result=="編號中包含非數(shù)字字符" && result1=="") { return result; }else if(result1=="單價中包含非數(shù)字字符" && result=="") { return result1; }else if(result=="編號中包含非數(shù)字字符" && result1=="單價中包含非數(shù)字字符") { return "編號和單價中均包含非數(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;//標題 JScrollPane tablePane;//滾動視口 JTable table;//花卉列表 JLabel Labelnum;//刪除提示 JTextField DeleteText;//刪除文本框 JButton Deletebt;//刪除按鈕 JButton[] rbts;//按鈕數(shù)組對象 ButtonGroup btGroup;//按鈕組,從邏輯上來涵蓋所有的單選按鈕 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]);//從邏輯上將單選按鈕添加到一個按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } Labelnum = new JLabel("編號"); 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("進入"); 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("黑人問號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 = {"編號","名稱","單價","計價單位"}; 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="編號中包含非數(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;//標題 JScrollPane tablePane;//滾動視口 JTable table;//花卉列表 JLabel NumLabel;//編號標題 JLabel NameLabel;//名稱標題 JLabel PriceLabel;//單價標題 JLabel UnitLabel;//計價單位標題 JPanel panel; JComboBox comboBox;//組合框 JTextField SearchText;//搜索文本框 JButton SearchButton;//搜索按鍵 /* JTextField NumText;//編號文本框 JTextField NameText;//名稱文本框 JTextField PriceText;//單價文本框 JTextField UnitText;//計價單位文本框 */ JButton[] rbts;//按鈕數(shù)組對象 ButtonGroup btGroup;//按鈕組,從邏輯上來涵蓋所有的單選按鈕 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]);//從邏輯上將單選按鈕添加到一個按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } String[] string = { "搜索條件", "編號", "名稱" }; 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("編號".equals(item)){ //根據(jù)編號進行查找的方法 if(checkIsNull()){ result.add(FlowerDAO.findFlowerBySno(SearchText.getText().trim())); JOptionPane.showMessageDialog(null, result.clone()); }else{ JOptionPane.showMessageDialog(null, "未輸入查詢信息","提示", JOptionPane.ERROR_MESSAGE); } }else if("名稱".equals(item)){ //根據(jù)名稱進行查找的方法 if(checkIsNull()) { result.add(FlowerDAO.findFlowerBySname(SearchText.getText().trim())); JOptionPane.showMessageDialog(null, result.clone()); }else{ JOptionPane.showMessageDialog(null, "未輸入查詢信息", "提示", 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 = {"編號","名稱","單價","計價單位"}; 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="編號中包含非數(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ù)組對象 ButtonGroup btGroup;//按鈕組,從邏輯上來涵蓋所有的單選按鈕 JLabel tableLabel;//標題 JScrollPane tablePane;//滾動視口 JTable table;//花卉列表 JLabel NumLabel;//編號 JLabel NameLabel;//名稱 JLabel PriceLabel;//單價 JLabel UnitLabel;//計價單位 JTextField NumText;//編號文本框 JTextField NameText;//名稱文本框 JTextField PriceText;//單價文本框 JTextField UnitText;//計價單位文本框 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]);//從邏輯上將單選按鈕添加到一個按鈕數(shù)組中 this.add(rbts[i]);//從物理位置上將單選按鈕添加到窗體中 rbts[i].addActionListener(this); } //編號 NumLabel=new JLabel("編號"); 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); //名稱 NameLabel=new JLabel("名稱"); 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); //單價 PriceLabel=new JLabel("單價"); 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); //計價單位 UnitLabel=new JLabel("計價單位"); 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())//如果用戶輸入為空的話 { final ImageIcon icon = new ImageIcon("黑人問號.png"); JOptionPane.showMessageDialog(null,"輸入信息為空!", "提示", JOptionPane.INFORMATION_MESSAGE, icon); } else { if(!checkInput().equals("")) { JOptionPane.showMessageDialog(null,checkInput()); } else { FlowerDAO dao=new FlowerDAO(); //創(chuàng)建一個操作學生信息文本文件的對象 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 = {"編號","名稱","單價","計價單位"}; 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="編號中包含非數(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="單價中包含非數(shù)字字符"; break; } } if(result=="編號中包含非數(shù)字字符" && result1=="") { return result; }else if(result1=="單價中包含非數(shù)字字符" && result=="") { return result1; }else if(result=="編號中包含非數(shù)字字符" && result1=="單價中包含非數(shù)字字符") { return "編號和單價中均包含非數(shù)字字符"; }else { return ""; } } }
增刪查改方法實現(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)生了一個文件字符輸入流對象 BufferedReader br=new BufferedReader(fr); //以上一個對象作為參數(shù)來創(chuàng)建一個緩沖的字符輸入流對象 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("文件讀錯誤"); } return result; } //通過編號來查找花朵的基本信息 public static String findFlowerBySno(String sno) { String result="不存在這個花朵"; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個文件字符輸入流對象 BufferedReader br=new BufferedReader(fr); //以上一個對象作為參數(shù)來創(chuàng)建一個緩沖的字符輸入流對象 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("文件讀錯誤"); } return result; } //通過名稱來查找花朵的基本信息 public static String findFlowerBySname(String sname) { String result="不存在這個花朵"; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個文件字符輸入流對象 BufferedReader br=new BufferedReader(fr); //以上一個對象作為參數(shù)來創(chuàng)建一個緩沖的字符輸入流對象 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("文件讀錯誤"); } return result; } //通過名稱來查找花朵的基本信息 public String findFlowerByname(boolean bool,String name) { String result="不存在這個花朵"; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個文件字符輸入流對象 BufferedReader br=new BufferedReader(fr); //以上一個對象作為參數(shù)來創(chuàng)建一個緩沖的字符輸入流對象 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("文件讀錯誤"); } 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)建一個文件的字符輸出流,第二個參數(shù)表示是在文件尾部進行追加 BufferedWriter bw=new BufferedWriter(fw); //以上面創(chuàng)建的對象為參數(shù)創(chuàng)建一個緩沖字符輸出流 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("文件寫錯誤"); } return true; } else { return false; } } //判斷是否已經(jīng)存在重復的編號 private boolean numIsExist(String num) { boolean result=false; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個文件字符輸入流對象 BufferedReader br=new BufferedReader(fr); //以上一個對象作為參數(shù)來創(chuàng)建一個緩沖的字符輸入流對象 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("文件讀錯誤"); } return result; } //判斷名稱是否重復 private boolean nameIsExist(String name) { boolean result=false; try { FileReader fr=new FileReader("Flower.txt"); //產(chǎn)生了一個文件字符輸入流對象 BufferedReader br=new BufferedReader(fr); //以上一個對象作為參數(shù)來創(chuàng)建一個緩沖的字符輸入流對象 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("文件讀錯誤"); } return result; } //增加多條花朵記錄 public int AddFlowers(String[] Flos) { int result=0; //定義一個變量來保存添加成功的花卉記錄個數(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; } }//將對應(yīng)的花朵記錄移除 FileWriter fw=new FileWriter("Flower.txt"); //創(chuàng)建一個文件的字符輸出流,不需要追加 BufferedWriter bw=new BufferedWriter(fw); //以上面創(chuàng)建的對象為參數(shù)創(chuàng)建一個緩沖字符輸出流 for(int i=0;i<list.size();i++) { bw.write(list.get(i)); //分別寫入花卉記錄 bw.newLine(); } bw.flush(); bw.close(); fw.close(); } catch(IOException ex) { } return result; } //刪除多條花朵記錄的方法 public int DeleteFlowers(String[] nums) { int result=0; //用來保存成功刪除的花朵記錄個數(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)生了一個文件字符輸入流對象 BufferedReader br=new BufferedReader(fr); //以上一個對象作為參數(shù)來創(chuàng)建一個緩沖的字符輸入流對象 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); //先從動態(tài)數(shù)組對象中移除 list.add(Floinfo); //然后再添加修改后的花朵記錄 break; } }//將對應(yīng)的花朵記錄移除 FileWriter fw=new FileWriter("Flower.txt"); //創(chuàng)建一個文件的字符輸出流,不需要追加 BufferedWriter bw=new BufferedWriter(fw); //以上面創(chuàng)建的對象為參數(shù)創(chuàng)建一個緩沖字符輸出流 for(int i=0;i<list.size();i++) { bw.write(list.get(i)); //分別寫入花朵記錄 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; } }
這個代碼量有點大,但難度倒不大。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud讀取Nacos配置中心報錯及遇到的坑:Could?not?resolve?placehold
這篇文章主要介紹了SpringCloud讀取Nacos配置中心報錯:Could?not?resolve?placeholder?‘xxx’?in?value?‘${xxx},本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Java concurrency集合之ConcurrentSkipListMap_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java concurrency集合之ConcurrentSkipListMap的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06java中進制的轉(zhuǎn)換,Byte與16進制的轉(zhuǎn)換方法
下面小編就為大家?guī)硪黄猨ava中進制的轉(zhuǎn)換,Byte與16進制的轉(zhuǎn)換方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11Java隨手筆記8之包、環(huán)境變量和訪問控制及maven profile實現(xiàn)多環(huán)境打包
這篇文章主要介紹了Java隨手筆記8之包、環(huán)境變量和訪問控制及maven profile實現(xiàn)多環(huán)境打包的相關(guān)資料,需要的朋友可以參考下2015-11-11Java Date類常用示例_動力節(jié)點Java學院整理
在JDK1.0中,Date類是唯一的一個代表時間的類,但是由于Date類不便于實現(xiàn)國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理。這里簡單介紹一下Date類的使用,需要的朋友可以參考下2017-05-05Easypoi 輕松實現(xiàn)復雜excel文件導出功能
這篇文章主要介紹了Easypoi 輕松實現(xiàn)復雜excel文件導出功能,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11mybatis配置mapper-locations位置的三種方式小結(jié)
這篇文章主要給大家介紹了關(guān)于mybatis配置mapper-locations位置的三種方式,Mybatis-Plus的初衷是為了簡化開發(fā),而不建議開發(fā)者自己寫SQL語句的,但是有時客戶需求比較復雜,需要的朋友可以參考下2023-08-08