返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现花卉管理系统
  • 328
分享到

Java实现花卉管理系统

2024-04-02 19:04:59 328人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这是一个稍微综合一点的小小小项目,算是给Java的学习画一个小结点。 直接开门见山来看设计吧。 1.上传的这个版本是通过文本存储数据(PS:别问我为啥不用数据库,因为当时事情多...

这是一个稍微综合一点的小小小项目,算是给Java的学习画一个小结点。

直接开门见山来看设计吧。

1.上传的这个版本是通过文本存储数据(PS:别问我为啥不用数据库,因为当时事情多.....懒得实现)

2.这个版本有欢迎界面、增加花卉界面、删除花卉界面、修改花卉信息界面、查询花卉界面。

3.对文本的增删查改过程全部定义在独立的类的方法中,通过对类中方法的调用来实现。

以下是代码的文件表:

在这个程序中的绝大多数提示我用的都是具有鲜明时代特色的表情包,哈哈哈哈哈哈

先让你们小小欣赏下(哈哈哈哈哈,前方小高能,非战斗人员请尽快撤退!!):

1. 当有未填信息时

2. 当编号中包含非数字符时(单价非数字时等提示图片一样)

3.当输入正确时

主函数代码(Test.java):


public class Test {
      
      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("花卉信息管理系统");
  this.setLocation(700,200);
  this.setVisible(true);
  this.setLayout(null);
  //设置照片为背景
  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;//按钮数组对象
 ButtonGroup btGroup;//按钮组,从逻辑上来涵盖所有的单选按钮
 JButton Addbt;//增加按钮
 
 public AddFlower()
 {
  this.setSize(500, 500);
  this.setTitle("花卉信息管理系统");
  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]);//从逻辑上将单选按钮添加到一个按钮数组中
   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="编号中包含非数字字符";
     break;
    }
   }
   for(int i=0;i<PriceText.getText().trim().length();i++)
   {
    char ch=PriceText.getText().trim().charAt(i);
    if((ch<'0')||(ch>'9'))
    {
     result1="单价中包含非数字字符";
     break;
    }
   }
  if(result=="编号中包含非数字字符" && result1=="")
  {
   return result;
  }else if(result1=="单价中包含非数字字符" && result=="")
  {
   return result1;
  }else if(result=="编号中包含非数字字符" && result1=="单价中包含非数字字符")
  {
   return "编号和单价中均包含非数字字符";
  }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;//按钮数组对象
 ButtonGroup btGroup;//按钮组,从逻辑上来涵盖所有的单选按钮
 
 
 public DeleteFlower()
 {
  this.setLayout(null);
  this.setSize(700, 580);
  this.setTitle("花卉信息管理系统");
  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]);//从逻辑上将单选按钮添加到一个按钮数组中
   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="编号中包含非数字字符";
     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;//搜索按键
    
    JButton[] rbts;//按钮数组对象
    ButtonGroup btGroup;//按钮组,从逻辑上来涵盖所有的单选按钮
    
    public SearchFlower()
    {
        this.setLayout(null);
        this.setSize(700, 580);
        this.setTitle("花卉信息管理系统");
        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]);//从逻辑上将单选按钮添加到一个按钮数组中
            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)){
                    //根据编号进行查找的方法
                    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)){
                    //根据名称进行查找的方法
                    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="编号中包含非数字字符";
                    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;//按钮数组对象
 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("花卉信息管理系统");
  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]);//从逻辑上将单选按钮添加到一个按钮数组中
   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();
      //创建一个操作学生信息文本文件的对象
      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="编号中包含非数字字符";
     break;
    }
   }
   for(int i=0;i<PriceText.getText().trim().length();i++)
   {
    char ch=PriceText.getText().trim().charAt(i);
    if((ch<'0')||(ch>'9'))
    {
     result1="单价中包含非数字字符";
     break;
    }
   }
  if(result=="编号中包含非数字字符" && result1=="")
  {
   return result;
  }else if(result1=="单价中包含非数字字符" && result=="")
  {
   return result1;
  }else if(result=="编号中包含非数字字符" && result1=="单价中包含非数字字符")
  {
   return "编号和单价中均包含非数字字符";
  }else
  {
   return "";
  }
  
 }
 
}

增删查改方法实现(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");
   //产生了一个文件字符输入流对象
   BufferedReader br=new BufferedReader(fr);
   //以上一个对象作为参数来创建一个缓冲的字符输入流对象
   String str=br.readLine();//读取一行数据
   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");
   //产生了一个文件字符输入流对象
   BufferedReader br=new BufferedReader(fr);
   //以上一个对象作为参数来创建一个缓冲的字符输入流对象
   String str=br.readLine();//读取一行数据
   boolean flag=true;
   while(flag)
   {
    if(str.startsWith(sno.trim()))
    {
     result=str;
     flag=false;
    }
    str=br.readLine();//继续读取下一行
    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");
   //产生了一个文件字符输入流对象
   BufferedReader br=new BufferedReader(fr);
   //以上一个对象作为参数来创建一个缓冲的字符输入流对象
   String str=br.readLine();//读取一行数据
   boolean flag=true;
   while(flag)
   {
    if(str.substring(4).startsWith(sname.trim()))
    {
     result=str;
     flag=false;
    }
    str=br.readLine();//继续读取下一行
    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");
   //产生了一个文件字符输入流对象
   BufferedReader br=new BufferedReader(fr);
   //以上一个对象作为参数来创建一个缓冲的字符输入流对象
   String str=br.readLine();//读取一行数据
   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();//继续读取下一行
    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);
   //创建一个文件的字符输出流,第二个参数表示是在文件尾部进行追加
   BufferedWriter bw=new BufferedWriter(fw);
   //以上面创建的对象为参数创建一个缓冲字符输出流
   bw.newLine();
   //创建新的一行
   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;
  }
 }
 
 //判断是否已经存在重复的编号
 private boolean numIsExist(String num)
 {
  boolean result=false;
  try {
   FileReader fr=new FileReader("Flower.txt");
   //产生了一个文件字符输入流对象
   BufferedReader br=new BufferedReader(fr);
   //以上一个对象作为参数来创建一个缓冲的字符输入流对象
   String str=br.readLine();//读取一行数据
   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");
   //产生了一个文件字符输入流对象
   BufferedReader br=new BufferedReader(fr);
   //以上一个对象作为参数来创建一个缓冲的字符输入流对象
   String str=br.readLine();//读取一行数据
   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;
  //定义一个变量来保存添加成功的花卉记录个数
  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();//读取一行数据
   ArrayList<String> list=new ArrayList<String>();
   //保存读入的花朵信息
   boolean flag=true;
   while(flag)
   {
    list.add(str);
    str=br.readLine();//再次读取一行数据
    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;
    }
   }//将对应的花朵记录移除
   FileWriter fw=new FileWriter("Flower.txt");
   //创建一个文件的字符输出流,不需要追加
   BufferedWriter bw=new BufferedWriter(fw);
   //以上面创建的对象为参数创建一个缓冲字符输出流
   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;
  //用来保存成功删除的花朵记录个数
  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");
    //产生了一个文件字符输入流对象
    BufferedReader br=new BufferedReader(fr);
    //以上一个对象作为参数来创建一个缓冲的字符输入流对象
    String str=br.readLine();//读取一行数据
    ArrayList<String> list=new ArrayList<String>();
    //保存读入的花朵信息
    boolean flag=true;
    while(flag)
    {
     list.add(str);
     str=br.readLine();//再次读取一行数据
     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);
      //先从动态数组对象中移除
      list.add(Floinfo);
      //然后再添加修改后的花朵记录
      break;
     }
    }//将对应的花朵记录移除
    FileWriter fw=new FileWriter("Flower.txt");
    //创建一个文件的字符输出流,不需要追加
    BufferedWriter bw=new BufferedWriter(fw);
    //以上面创建的对象为参数创建一个缓冲字符输出流
    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;
 }
 
}

这个代码量有点大,但难度倒不大。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java实现花卉管理系统

本文链接: https://lsjlt.com/news/129043.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java实现花卉管理系统
    这是一个稍微综合一点的小小小项目,算是给Java的学习画一个小结点。 直接开门见山来看设计吧。 1.上传的这个版本是通过文本存储数据(PS:别问我为啥不用数据库,因为当时事情多......
    99+
    2024-04-02
  • 用python搭建一个花卉识别系统
    目录一.开源神经网络(AlexNet)1.获取数据集2.神经网络模型3.训练神经网络4.对模型进行预测二、花卉识别系统搭建(flask)1.构建页面:2.调用神经网络模型3.系统识别结果4.启动系统:三、总结一.开源...
    99+
    2022-06-02
    python 花卉识别 python 识别系统
  • Python怎么实现识别花卉种类
    今天小编给大家分享一下Python怎么实现识别花卉种类的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。由于对很多花不是特别熟悉...
    99+
    2023-06-29
  • java实现鲜花销售系统
    本文实例为大家分享了java实现鲜花销售系统的具体代码,供大家参考,具体内容如下 一、练习目标 1.体会数组的作用 2.找到分层开发的感觉 3.收获分层开发的兴趣 4.作出效果,找到...
    99+
    2024-04-02
  • Java实现联系人管理系统
    基于Java的联系人管理系统,供大家参考,具体内容如下 基于eclipse做的一个简单的联系人管理系统 对于联系人姓名首字母进行了一个排序,对于存入信息时手机号码与电子邮箱做了一个判...
    99+
    2024-04-02
  • java实现图书管理系统
    本文通过实例为大家分享了java实现图书管理系统的具体代码,供大家参考,具体内容如下 一、背景介绍 通过一段时间java编程的学习,需要一个比较综合的实例来进行编程的练习,是一个对前...
    99+
    2024-04-02
  • Java实现班级管理系统
    本文为大家分享了Java实现班级管理系统的具体代码,供大家参考,具体内容如下 需求:班级管理系统 功能:对学生的信息进行管理 1 登录系统   2 退出系统  &...
    99+
    2024-04-02
  • Java实现用户管理系统
    基于Java的简单的用户管理系统,供大家参考,具体内容如下 此系统功能和方法都比较简单 本次系统通过控制台输入商品的基本信息,加入管理员的登录与对是否为管理员进行操作 对于功能的实现...
    99+
    2024-04-02
  • java实现客户管理系统
    本文实例为大家分享了java实现客户管理系统的具体代码,供大家参考,具体内容如下 代码: 先写个客户类 package jjave_16; public class Custom...
    99+
    2024-04-02
  • Python实现识别花卉种类的示例代码
    目录百度图像识别读取照片文件整理分类照片大家好,我是小五 “无穷小亮的科普日常”经常会发布一些鉴定网络热门生物视频,既科普了生物知识,又满足观众们的猎奇心理。...
    99+
    2024-04-02
  • java实现银行ATM管理系统
    本文实例为大家分享了java实现银行ATM管理系统的具体代码,供大家参考,具体内容如下 功能 账户类、首页设计 分析 ① 每个用户一个账户对象,需要设计账户类,账户类至少包含(卡号、...
    99+
    2024-04-02
  • java Springboot实现教务管理系统
    目录1、研究背景2、现状与反思3、功能截图4、代码4.1用户登录4.2yml配置4.3视图跳转4.4拦截放行5、总结 1、研究背景              在当今信息社会发展中中,...
    99+
    2024-04-02
  • Java+mysql实现学籍管理系统
    本文实例为大家分享了Java+mysql实现学籍管理系统的具体代码,供大家参考,具体内容如下 一、myswql数据库表格 项目使用mysql数据库,有2张表格。一张用户表用于登录验证...
    99+
    2024-04-02
  • Java如何实现花店商城系统
    这篇文章给大家分享的是有关Java如何实现花店商城系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、项目简述本系统功能包括:商品的分类展示,用户的注册登录,购物车,订单结算,购物车加减,后台商品管理,分类管理...
    99+
    2023-06-22
  • Java如何实现鲜花商城系统
    本文小编为大家详细介绍“Java如何实现鲜花商城系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java如何实现鲜花商城系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目介绍该项目为前后台项目,分为普通用...
    99+
    2023-06-30
  • Java实战之鲜花商城系统的实现
    目录项目介绍环境需要技术栈使用说明效果图展示核心代码商品管理控制层订单管理控制层用户管理控制层项目介绍 该项目为前后台项目,分为普通用户与管理员两种角色,前台普通用户登录,后台管理员...
    99+
    2024-04-02
  • Java实现学生成绩管理系统
    本文实例为大家分享了Java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 新手练手小项目,主要练习面向对象、循环、数组、排序等等。 本人也是自学练手,代码有不正确的或不完...
    99+
    2024-04-02
  • java实现航空用户管理系统
    本文实例为大家分享了java实现航空用户管理系统的具体代码,供大家参考,具体内容如下 题目内容: 某航空公司在其航班到达的不同的国家的不同地方设有不同的办事处,这个项目要求开发一个自...
    99+
    2024-04-02
  • Java实现航空航班管理系统
    本文实例为大家分享了Java实现航空航班管理系统的具体代码,供大家参考,具体内容如下 Plane对象: 在Plane对象里定义了飞机的编号id、航班号、目的地、起飞日期。生成了构造方...
    99+
    2024-04-02
  • Java实现简单班级管理系统
     本文设计一个简单的班级管理系统,满足如下要求: 1、设计学生类Student,包含学号(String型)、姓名(String型)、性别(‘M’/&...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作