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è)版本有歡迎界面、增加花卉界面、刪除花卉界面、修改花卉信息界面、查詢花卉界面。
3.對(duì)文本的增刪查改過(guò)程全部定義在獨(dú)立的類(lèi)的方法中,通過(guò)對(duì)類(lèi)中方法的調(diào)用來(lái)實(shí)現(xiàn)。
以下是代碼的文件表:

在這個(gè)程序中的絕大多數(shù)提示我用的都是具有鮮明時(shí)代特色的表情包,哈哈哈哈哈哈

先讓你們小小欣賞下(哈哈哈哈哈,前方小高能,非戰(zhàn)斗人員請(qǐng)盡快撤退!!):
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, "未輸入查詢信息","提示", 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, "未輸入查詢信息", "提示", 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())//如果用戶輸入為空的話
{
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-03
Java concurrency集合之ConcurrentSkipListMap_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListMap的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
java中進(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-11
Java隨手筆記8之包、環(huán)境變量和訪問(wèn)控制及maven profile實(shí)現(xiàn)多環(huán)境打包
這篇文章主要介紹了Java隨手筆記8之包、環(huán)境變量和訪問(wèn)控制及maven profile實(shí)現(xiàn)多環(huán)境打包的相關(guān)資料,需要的朋友可以參考下2015-11-11
Java 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-05
Easypoi 輕松實(shí)現(xiàn)復(fù)雜excel文件導(dǎo)出功能
這篇文章主要介紹了Easypoi 輕松實(shí)現(xiàn)復(fù)雜excel文件導(dǎo)出功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
mybatis配置mapper-locations位置的三種方式小結(jié)
這篇文章主要給大家介紹了關(guān)于mybatis配置mapper-locations位置的三種方式,Mybatis-Plus的初衷是為了簡(jiǎn)化開(kāi)發(fā),而不建議開(kāi)發(fā)者自己寫(xiě)SQL語(yǔ)句的,但是有時(shí)客戶需求比較復(fù)雜,需要的朋友可以參考下2023-08-08
Java單線程ThreadLocal串值問(wèn)題解決方案
這篇文章主要介紹了Java單線程ThreadLocal串值問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

