Java实现花卉管理系统

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

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

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

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

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

以下是代码的文件表:

Java实现花卉管理系统_第1张图片

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

Java实现花卉管理系统_第2张图片

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

1. 当有未填信息时

Java实现花卉管理系统_第3张图片

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

Java实现花卉管理系统_第4张图片

3.当输入正确时

Java实现花卉管理系统_第5张图片

主函数代码(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):

Java实现花卉管理系统_第6张图片

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): 

Java实现花卉管理系统_第7张图片

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'9'))
    {
     result="编号中包含非数字字符";
     break;
    }
   }
   for(int i=0;i'9'))
    {
     result1="单价中包含非数字字符";
     break;
    }
   }
  if(result=="编号中包含非数字字符" && result1=="")
  {
   return result;
  }else if(result1=="单价中包含非数字字符" && result=="")
  {
   return result1;
  }else if(result=="编号中包含非数字字符" && result1=="单价中包含非数字字符")
  {
   return "编号和单价中均包含非数字字符";
  }else
  {
   return "";
  }
  
 }
 
 
}

删除花卉界面(DeleteFlower.java):

Java实现花卉管理系统_第8张图片

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 flos=dao.findAllFlowers();
  Object[][] objs=new Object[flos.size()][4];
  for(int i=0;i'9'))
    {
     result="编号中包含非数字字符";
     break;
    }else
    {
     result="";
     break;
    }
   }
   return result;
  
 }
 
 
}

搜索花卉界面(SearchFlower.java):

Java实现花卉管理系统_第9张图片

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;//按钮数组对象
    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 result=new ArrayList();
                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 flos=dao.findAllFlowers();
        Object[][] objs=new Object[flos.size()][4];
        for(int i=0;i'9'))
                {
                    result="编号中包含非数字字符";
                    break;
                }else
                {
                    result="";
                    break;
                }
            }
            return result;
        
    }
 
 
}

修改花卉界面(ModifyFlower.java):

Java实现花卉管理系统_第10张图片

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 flos=dao.findAllFlowers();
  Object[][] objs=new Object[flos.size()][4];
  for(int i=0;i'9'))
    {
     result="编号中包含非数字字符";
     break;
    }
   }
   for(int i=0;i'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 findAllFlowers()
 {
  ArrayList result=new ArrayList();
  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 list=new ArrayList();
   //保存读入的花朵信息
   boolean flag=true;
   while(flag)
   {
    list.add(str);
    str=br.readLine();//再次读取一行数据
    if(str==null)
    {
     flag=false;
    }
   }
   br.close();
   fr.close();
   for(int i=0;i0)
   {
    for(int i=0;i list=new ArrayList();
    //保存读入的花朵信息
    boolean flag=true;
    while(flag)
    {
     list.add(str);
     str=br.readLine();//再次读取一行数据
     if(str==null)
     {
      flag=false;
     }
    }
    br.close();
    fr.close();
    
    for(int i=0;i0)
   {
    for(int i=0;i 
 

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

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

你可能感兴趣的