当前位置:   article > 正文

Java--花卉管理系统_鲜花管理系统

鲜花管理系统

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

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

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

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

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

以下是代码的文件表:

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

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

1. 当有未填信息时

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

3.当输入正确时

  • 主函数代码(Test.java):
  1. public class Test {
  2. /**
  3. * @param args
  4. */
  5. public static void main(String[] args) {
  6. Enter enter = new Enter();
  7. //AddFlower add = new AddFlower();
  8. //SearchFlower s = new SearchFlower();
  9. //DeleteFlower d = new DeleteFlower();
  10. //ModifyFlower m = new ModifyFlower();
  11. }
  12. }
  • 欢迎界面(Enter.java):

  1. import javax.swing.*;
  2. import javax.swing.event.AncestorListener;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. public class Enter extends JFrame implements ActionListener
  6. {
  7. JLabel PhotoLabel = new JLabel(new ImageIcon("Flower.jpg"));
  8. JButton loginbt;//登录进入按钮
  9. JLabel InformationJLabel;//欢迎语
  10. public Enter()
  11. {
  12. this.setSize(500, 500);
  13. this.setTitle("花卉信息管理系统");
  14. this.setLocation(700,200);
  15. this.setVisible(true);
  16. this.setLayout(null);
  17. //设置照片为背景
  18. String Background = "Flower.jpg";
  19. ImageIcon background = new ImageIcon(Background);
  20. JLabel label = new JLabel(background);
  21. label.setBounds(0, 0,this.getWidth() , this.getHeight());
  22. JPanel imagePanel = (JPanel) this.getContentPane();
  23. imagePanel.setOpaque(false);
  24. this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
  25. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  26. this.init();
  27. }
  28. private void init()
  29. {
  30. loginbt=new JButton("登录");
  31. loginbt.setSize(100,50);
  32. loginbt.setLocation(180, 330);
  33. loginbt.addActionListener(this);
  34. this.add(loginbt);
  35. InformationJLabel = new JLabel("欢迎使用!");
  36. InformationJLabel.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 50));
  37. InformationJLabel.setSize(300, 50);
  38. InformationJLabel.setLocation(120,150);
  39. this.add(InformationJLabel);
  40. }
  41. @Override
  42. public void actionPerformed(ActionEvent e) {
  43. AddFlower addflower = new AddFlower();
  44. }
  45. }
  • 增加花卉界面(AddFlower.java): 

  1. import javax.swing.*;
  2. import javax.swing.event.AncestorListener;
  3. import java.awt.Font;
  4. import java.awt.event.*;
  5. public class AddFlower extends JFrame implements ActionListener
  6. {
  7. JLabel tableLabel;
  8. JLabel NumLabel;//编号
  9. JLabel NameLabel;//名称
  10. JLabel PriceLabel;//单价
  11. JLabel UnitLabel;//计价单位
  12. JTextField NumText;//编号文本框
  13. JTextField NameText;//名称文本框
  14. JTextField PriceText;//单价文本框
  15. JTextField UnitText;//计价单位文本框
  16. JButton[] rbts;//按钮数组对象
  17. ButtonGroup btGroup;//按钮组,从逻辑上来涵盖所有的单选按钮
  18. JButton Addbt;//增加按钮
  19. public AddFlower()
  20. {
  21. this.setSize(500, 500);
  22. this.setTitle("花卉信息管理系统");
  23. this.setLocation(700,200);
  24. this.setVisible(true);
  25. this.setLayout(null);
  26. this.init();
  27. }
  28. private void init()
  29. {
  30. //增删查改功能入口按钮
  31. btGroup=new ButtonGroup();
  32. rbts=new JButton[4];
  33. String[] strs = {"增加","删除","搜索","修改"};
  34. for(int i = 0;i<strs.length;i++)
  35. {
  36. rbts[i]=new JButton(strs[i]);
  37. rbts[i].setSize(70, 30);
  38. rbts[i].setLocation(100*i+60, 30);
  39. btGroup.add(rbts[i]);//从逻辑上将单选按钮添加到一个按钮数组中
  40. this.add(rbts[i]);//从物理位置上将单选按钮添加到窗体中
  41. rbts[i].addActionListener(this);
  42. }
  43. //编号
  44. NumLabel=new JLabel("编号");
  45. NumLabel.setFont(NumLabel.getFont().deriveFont(Font.BOLD, 18));
  46. NumLabel.setSize(90,30);
  47. NumLabel.setLocation(70, 110);
  48. this.add(NumLabel);
  49. NumText=new JTextField();
  50. NumText.setSize(180,30);
  51. NumText.setLocation(170, 110);
  52. this.add(NumText);
  53. //名称
  54. NameLabel=new JLabel("名称");
  55. NameLabel.setFont(NameLabel.getFont().deriveFont(Font.BOLD, 18));
  56. NameLabel.setSize(90,30);
  57. NameLabel.setLocation(70, 170);
  58. this.add(NameLabel);
  59. NameText=new JTextField();
  60. NameText.setSize(180,30);
  61. NameText.setLocation(170, 170);
  62. this.add(NameText);
  63. //单价
  64. PriceLabel=new JLabel("单价");
  65. PriceLabel.setFont(PriceLabel.getFont().deriveFont(Font.BOLD, 18));
  66. PriceLabel.setSize(90,30);
  67. PriceLabel.setLocation(70, 230);
  68. this.add(PriceLabel);
  69. PriceText=new JTextField();
  70. PriceText.setSize(180,30);
  71. PriceText.setLocation(170, 230);
  72. this.add(PriceText);
  73. //计价单位
  74. UnitLabel=new JLabel("计价单位");
  75. UnitLabel.setFont(UnitLabel.getFont().deriveFont(Font.BOLD, 18));
  76. UnitLabel.setSize(90,30);
  77. UnitLabel.setLocation(70, 290);
  78. this.add(UnitLabel);
  79. UnitText=new JTextField();
  80. UnitText.setSize(180,30);
  81. UnitText.setLocation(170, 290);
  82. this.add(UnitText);
  83. //添加按钮
  84. Addbt=new JButton("添加");
  85. Addbt.setSize(90,50);
  86. Addbt.setLocation(200, 360);
  87. Addbt.addActionListener(
  88. new ActionListener()
  89. {
  90. public void actionPerformed(ActionEvent e)
  91. {
  92. if(!checkIsNull())
  93. {
  94. final ImageIcon icon3 = new ImageIcon("question.png");
  95. JOptionPane.showMessageDialog(null,"有未填信息?", "提示", JOptionPane.INFORMATION_MESSAGE, icon3);
  96. }else
  97. {
  98. if(!checkInput().equals(""))
  99. {
  100. final ImageIcon icon2 = new ImageIcon("NotOk.png");
  101. JOptionPane.showMessageDialog(null,checkInput(), "提示", JOptionPane.INFORMATION_MESSAGE, icon2);
  102. }else
  103. {
  104. FlowerDAO dao = new FlowerDAO();
  105. //引用添加花朵信息的方法
  106. StringBuffer FloInfo=new StringBuffer();
  107. FloInfo.append(NumText.getText().trim()+",");
  108. FloInfo.append(NameText.getText().trim()+",");
  109. FloInfo.append(PriceText.getText().trim()+",");
  110. FloInfo.append(UnitText.getText().trim());
  111. // dao.AddFlower(FloInfo);
  112. if(dao.AddFlower(FloInfo.toString()))
  113. {
  114. final ImageIcon icon = new ImageIcon("Ok2.png");
  115. JOptionPane.showMessageDialog(null,"添加成功", "提示", JOptionPane.INFORMATION_MESSAGE, icon);
  116. NumText.setText("");
  117. NameText.setText("");
  118. PriceText.setText("");
  119. UnitText.setText("");
  120. }
  121. else
  122. {
  123. final ImageIcon icon1 = new ImageIcon("NotOk2.png");
  124. JOptionPane.showMessageDialog(null,"信息重复", "提示", JOptionPane.INFORMATION_MESSAGE, icon1);
  125. }
  126. }
  127. }
  128. }
  129. }
  130. );
  131. this.add(Addbt);
  132. }
  133. @Override
  134. public void actionPerformed(ActionEvent e) {
  135. String buttonName = e.getActionCommand();
  136. if(buttonName.equals("增加")){
  137. System.out.println("已处在增加界面上");
  138. }else if(buttonName.equals("删除")){
  139. DeleteFlower deleteflower = new DeleteFlower();
  140. }else if(buttonName.equals("搜索")){
  141. SearchFlower searchflower = new SearchFlower();
  142. }else{
  143. ModifyFlower modifyflower = new ModifyFlower();
  144. }
  145. }
  146. private boolean checkIsNull()
  147. {
  148. boolean flag=true;
  149. if(NumText.getText().trim().equals(""))
  150. {
  151. flag = false;
  152. }else if(NameText.getText().trim().equals(""))
  153. {
  154. flag=false;
  155. }else if(PriceText.getText().trim().equals(""))
  156. {
  157. flag=false;
  158. }else if(UnitText.getText().trim().equals(""))
  159. {
  160. flag=false;
  161. }
  162. return flag;
  163. }
  164. private Object checkInput()
  165. {
  166. String result="";
  167. String result1="";
  168. for(int i=0;i<NumText.getText().trim().length();i++)
  169. {
  170. char ch=NumText.getText().trim().charAt(i);
  171. if((ch<'0')||(ch>'9'))
  172. {
  173. result="编号中包含非数字字符";
  174. break;
  175. }
  176. }
  177. for(int i=0;i<PriceText.getText().trim().length();i++)
  178. {
  179. char ch=PriceText.getText().trim().charAt(i);
  180. if((ch<'0')||(ch>'9'))
  181. {
  182. result1="单价中包含非数字字符";
  183. break;
  184. }
  185. }
  186. if(result=="编号中包含非数字字符" && result1=="")
  187. {
  188. return result;
  189. }else if(result1=="单价中包含非数字字符" && result=="")
  190. {
  191. return result1;
  192. }else if(result=="编号中包含非数字字符" && result1=="单价中包含非数字字符")
  193. {
  194. return "编号和单价中均包含非数字字符";
  195. }else
  196. {
  197. return "";
  198. }
  199. }
  200. }
  • 删除花卉界面(DeleteFlower.java):

  1. import javax.swing.*;
  2. import java.awt.Font;
  3. import java.awt.event.*;
  4. import java.util.ArrayList;
  5. public class DeleteFlower extends JFrame implements ActionListener
  6. {
  7. JLabel tableLabel;//标题
  8. JScrollPane tablePane;//滚动视口
  9. JTable table;//花卉列表
  10. JLabel Labelnum;//删除提示
  11. JTextField DeleteText;//删除文本框
  12. JButton Deletebt;//删除按钮
  13. JButton[] rbts;//按钮数组对象
  14. ButtonGroup btGroup;//按钮组,从逻辑上来涵盖所有的单选按钮
  15. public DeleteFlower()
  16. {
  17. this.setLayout(null);
  18. this.setSize(700, 580);
  19. this.setTitle("花卉信息管理系统");
  20. this.setLocation(600,250);
  21. this.init();
  22. this.refreshTable();
  23. this.setVisible(true);
  24. new Thread().start();
  25. }
  26. private void init()
  27. {
  28. //增删查改功能入口按钮
  29. btGroup=new ButtonGroup();
  30. rbts=new JButton[4];
  31. String[] strs = {"增加","删除","搜索","修改"};
  32. for(int i = 0;i<strs.length;i++)
  33. {
  34. rbts[i]=new JButton(strs[i]);
  35. rbts[i].setSize(70, 30);
  36. rbts[i].setLocation(150*i+80, 10);
  37. btGroup.add(rbts[i]);//从逻辑上将单选按钮添加到一个按钮数组中
  38. this.add(rbts[i]);//从物理位置上将单选按钮添加到窗体中
  39. rbts[i].addActionListener(this);
  40. }
  41. Labelnum = new JLabel("编号");
  42. Labelnum.setFont(Labelnum.getFont().deriveFont(Font.BOLD, 16));
  43. Labelnum.setSize(100,30);
  44. Labelnum.setLocation(100,70);
  45. this.add(Labelnum);
  46. DeleteText = new JTextField();
  47. DeleteText.setSize(180,30);
  48. DeleteText.setLocation(170, 70);
  49. this.add(DeleteText);
  50. Deletebt = new JButton("删除");
  51. Deletebt.setSize(70, 30);
  52. Deletebt.setLocation(380, 70);
  53. Deletebt.addActionListener(new ActionListener()
  54. {
  55. @Override
  56. public void actionPerformed(ActionEvent e) {
  57. int str=JOptionPane.showConfirmDialog(null, "是否删除?", "警告", JOptionPane.YES_NO_OPTION);
  58. if(str==JOptionPane.YES_OPTION)
  59. {
  60. //System.out.println("进入");
  61. if(checkIsNull()){
  62. if(FlowerDAO.DeleteFlower(DeleteText.getText().trim()))
  63. {
  64. final ImageIcon icon = new ImageIcon("Ok.png");
  65. JOptionPane.showMessageDialog(null,"删除成功", "提示", JOptionPane.INFORMATION_MESSAGE, icon);
  66. DeleteText.setText("");
  67. refreshTable();
  68. }
  69. else
  70. {
  71. JOptionPane.showMessageDialog(null, "删除失败", "提示", JOptionPane.ERROR_MESSAGE);
  72. }
  73. }else{
  74. final ImageIcon icon1 = new ImageIcon("黑人问号3.png");
  75. JOptionPane.showMessageDialog(null,"未输入删除信息", "提示", JOptionPane.INFORMATION_MESSAGE, icon1);
  76. }
  77. }else{
  78. ;
  79. }
  80. }
  81. }
  82. );
  83. this.add(Deletebt);
  84. }
  85. private void refreshTable()
  86. {
  87. tableLabel = new JLabel("花卉列表");
  88. tableLabel.setBounds(300,105, 100, 50);
  89. tableLabel.setFont(new Font("宋体", Font.BOLD , 20));
  90. this.add(tableLabel);
  91. String[] columnNames = {"编号","名称","单价","计价单位"};
  92. FlowerDAO dao=new FlowerDAO();
  93. ArrayList<String> flos=dao.findAllFlowers();
  94. Object[][] objs=new Object[flos.size()][4];
  95. for(int i=0;i<flos.size();i++)
  96. {
  97. String[] strs1=flos.get(i).split(",");
  98. objs[i][0]=strs1[0];
  99. objs[i][1]=strs1[1];
  100. objs[i][2]=strs1[2];
  101. objs[i][3]=strs1[3];
  102. System.out.println(strs1[0]);
  103. }
  104. table=new JTable(objs,columnNames);
  105. table.setSize(380,150);
  106. tablePane = new JScrollPane(table);
  107. tablePane.setSize(660, 350);
  108. tablePane.setLocation(10, 150);
  109. table.getTableHeader().setReorderingAllowed(false);
  110. table.getTableHeader().setResizingAllowed(false);
  111. table.enable(false);
  112. this.add(tablePane);
  113. }
  114. public void run() {
  115. while (true) {
  116. //每隔1秒钟更新JTable
  117. table.validate();
  118. table.updateUI();
  119. try {
  120. Thread.sleep(1000);
  121. } catch (InterruptedException e) {
  122. e.printStackTrace();
  123. }
  124. }
  125. }
  126. @Override
  127. public void actionPerformed(ActionEvent e) {
  128. String buttonName = e.getActionCommand();
  129. if(buttonName.equals("增加")){
  130. AddFlower addflower = new AddFlower();
  131. }else if(buttonName.equals("删除")){
  132. System.out.println("已处在删除界面上");
  133. }else if(buttonName.equals("搜索")){
  134. SearchFlower searchflower = new SearchFlower();
  135. }else{
  136. ModifyFlower modifyflower = new ModifyFlower();
  137. }
  138. }
  139. private boolean checkIsNull()
  140. {
  141. boolean flag=true;
  142. if(DeleteText.getText().trim().equals(""))
  143. {
  144. flag = false;
  145. }
  146. return flag;
  147. }
  148. private Object checkInput()
  149. {
  150. String result="";
  151. String result1="";
  152. for(int i=0;i<DeleteText.getText().trim().length();i++)
  153. {
  154. char ch=DeleteText.getText().trim().charAt(i);
  155. if((ch<'0')||(ch>'9'))
  156. {
  157. result="编号中包含非数字字符";
  158. break;
  159. }else
  160. {
  161. result="";
  162. break;
  163. }
  164. }
  165. return result;
  166. }
  167. }
  • 搜索花卉界面(SearchFlower.java):

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.util.ArrayList;
  5. public class SearchFlower extends JFrame implements ActionListener
  6. {
  7. JLabel tableLabel;//标题
  8. JScrollPane tablePane;//滚动视口
  9. JTable table;//花卉列表
  10. JLabel NumLabel;//编号标题
  11. JLabel NameLabel;//名称标题
  12. JLabel PriceLabel;//单价标题
  13. JLabel UnitLabel;//计价单位标题
  14. JPanel panel;
  15. JComboBox comboBox;//组合框
  16. JTextField SearchText;//搜索文本框
  17. JButton SearchButton;//搜索按键
  18. /*
  19. JTextField NumText;//编号文本框
  20. JTextField NameText;//名称文本框
  21. JTextField PriceText;//单价文本框
  22. JTextField UnitText;//计价单位文本框
  23. */
  24. JButton[] rbts;//按钮数组对象
  25. ButtonGroup btGroup;//按钮组,从逻辑上来涵盖所有的单选按钮
  26. public SearchFlower()
  27. {
  28. this.setLayout(null);
  29. this.setSize(700, 580);
  30. this.setTitle("花卉信息管理系统");
  31. this.setLocation(600,250);
  32. this.setBackground(Color.lightGray);
  33. this.init();
  34. this.refreshTable();
  35. this.setVisible(true);
  36. }
  37. private void init()
  38. {
  39. //增删查改功能入口按钮
  40. btGroup=new ButtonGroup();
  41. rbts=new JButton[4];
  42. String[] strs = {"增加","删除","搜索","修改"};
  43. for(int i = 0;i<strs.length;i++)
  44. {
  45. rbts[i]=new JButton(strs[i]);
  46. rbts[i].setSize(70, 30);
  47. rbts[i].setLocation(150*i+80, 10);
  48. btGroup.add(rbts[i]);//从逻辑上将单选按钮添加到一个按钮数组中
  49. this.add(rbts[i]);//从物理位置上将单选按钮添加到窗体中
  50. rbts[i].addActionListener(this);
  51. }
  52. String[] string = { "搜索条件", "编号", "名称" };
  53. comboBox = new JComboBox(string);
  54. comboBox.setSize(100,30);
  55. comboBox.setLocation(50,70);
  56. this.add(comboBox);
  57. SearchText = new JTextField();
  58. SearchText.setSize(180,30);
  59. SearchText.setLocation(170, 70);
  60. this.add(SearchText);
  61. SearchButton = new JButton("搜索");
  62. SearchButton.setSize(70, 30);
  63. SearchButton.setLocation(380, 70);
  64. SearchButton.addActionListener(new ActionListener()
  65. {
  66. @Override
  67. public void actionPerformed(ActionEvent e) {
  68. String item = (String)comboBox.getSelectedItem();
  69. ArrayList<String> result=new ArrayList<String>();
  70. if("搜索条件".equals(item))
  71. {
  72. SearchText.setText("");
  73. }else if("编号".equals(item)){
  74. //根据编号进行查找的方法
  75. if(checkIsNull()){
  76. result.add(FlowerDAO.findFlowerBySno(SearchText.getText().trim()));
  77. JOptionPane.showMessageDialog(null, result.clone());
  78. }else{
  79. JOptionPane.showMessageDialog(null, "未输入查询信息","提示", JOptionPane.ERROR_MESSAGE);
  80. }
  81. }else if("名称".equals(item)){
  82. //根据名称进行查找的方法
  83. if(checkIsNull())
  84. {
  85. result.add(FlowerDAO.findFlowerBySname(SearchText.getText().trim()));
  86. JOptionPane.showMessageDialog(null, result.clone());
  87. }else{
  88. JOptionPane.showMessageDialog(null, "未输入查询信息", "提示", JOptionPane.ERROR_MESSAGE);
  89. }
  90. }
  91. }
  92. }
  93. );
  94. this.add(SearchButton);
  95. }
  96. private void refreshTable()
  97. {
  98. tableLabel = new JLabel("花卉列表");
  99. tableLabel.setBounds(300,105, 100, 50);
  100. tableLabel.setFont(new Font("宋体", Font.BOLD , 20));
  101. String[] columnNames = {"编号","名称","单价","计价单位"};
  102. FlowerDAO dao=new FlowerDAO();
  103. ArrayList<String> flos=dao.findAllFlowers();
  104. Object[][] objs=new Object[flos.size()][4];
  105. for(int i=0;i<flos.size();i++)
  106. {
  107. String[] strs1=flos.get(i).split(",");
  108. objs[i][0]=strs1[0];
  109. objs[i][1]=strs1[1];
  110. objs[i][2]=strs1[2];
  111. objs[i][3]=strs1[3];
  112. System.out.println(strs1[0]);
  113. }
  114. table=new JTable(objs,columnNames);
  115. table.setSize(380,150);
  116. tablePane = new JScrollPane(table);
  117. tablePane.setSize(660, 350);
  118. tablePane.setLocation(10, 150);
  119. table.getTableHeader().setReorderingAllowed(false);
  120. table.getTableHeader().setResizingAllowed(false);
  121. table.enable(false);
  122. //this.removeAll();
  123. //this.init();
  124. this.add(tableLabel);
  125. this.add(tablePane);
  126. }
  127. @Override
  128. public void actionPerformed(ActionEvent e) {
  129. String buttonName = e.getActionCommand();
  130. if(buttonName.equals("增加")){
  131. AddFlower addflower = new AddFlower();
  132. }else if(buttonName.equals("删除")){
  133. DeleteFlower deleteflower = new DeleteFlower();
  134. }else if(buttonName.equals("搜索")){
  135. System.out.println("已处在搜索界面上");
  136. }else{
  137. ModifyFlower modifyflower = new ModifyFlower();
  138. }
  139. }
  140. private boolean checkIsNull()
  141. {
  142. boolean flag=true;
  143. if(SearchText.getText().trim().equals(""))
  144. {
  145. flag = false;
  146. }
  147. return flag;
  148. }
  149. private Object checkInput()
  150. {
  151. String result="";
  152. String result1="";
  153. for(int i=0;i<SearchText.getText().trim().length();i++)
  154. {
  155. char ch=SearchText.getText().trim().charAt(i);
  156. if((ch<'0')||(ch>'9'))
  157. {
  158. result="编号中包含非数字字符";
  159. break;
  160. }else
  161. {
  162. result="";
  163. break;
  164. }
  165. }
  166. return result;
  167. }
  168. }
  • 修改花卉界面(ModifyFlower.java):

  1. import javax.swing.*;
  2. import java.awt.Font;
  3. import java.awt.event.*;
  4. import java.util.ArrayList;
  5. public class ModifyFlower extends JFrame implements ActionListener
  6. {
  7. JButton[] rbts;//按钮数组对象
  8. ButtonGroup btGroup;//按钮组,从逻辑上来涵盖所有的单选按钮
  9. JLabel tableLabel;//标题
  10. JScrollPane tablePane;//滚动视口
  11. JTable table;//花卉列表
  12. JLabel NumLabel;//编号
  13. JLabel NameLabel;//名称
  14. JLabel PriceLabel;//单价
  15. JLabel UnitLabel;//计价单位
  16. JTextField NumText;//编号文本框
  17. JTextField NameText;//名称文本框
  18. JTextField PriceText;//单价文本框
  19. JTextField UnitText;//计价单位文本框
  20. JButton Modifybt;//修改按钮
  21. public ModifyFlower()
  22. {
  23. this.setLayout(null);
  24. this.setSize(700, 580);
  25. this.setTitle("花卉信息管理系统");
  26. this.setLocation(600,250);
  27. this.init();
  28. this.refreshTable();
  29. this.setVisible(true);
  30. }
  31. private void init()
  32. {
  33. //增删查改功能入口按钮
  34. btGroup=new ButtonGroup();
  35. rbts=new JButton[4];
  36. String[] strs = {"增加","删除","搜索","修改"};
  37. for(int i = 0;i<strs.length;i++)
  38. {
  39. rbts[i]=new JButton(strs[i]);
  40. rbts[i].setSize(70, 30);
  41. rbts[i].setLocation(150*i+80, 10);
  42. btGroup.add(rbts[i]);//从逻辑上将单选按钮添加到一个按钮数组中
  43. this.add(rbts[i]);//从物理位置上将单选按钮添加到窗体中
  44. rbts[i].addActionListener(this);
  45. }
  46. //编号
  47. NumLabel=new JLabel("编号");
  48. NumLabel.setFont(NumLabel.getFont().deriveFont(Font.BOLD, 16));
  49. NumLabel.setSize(80,30);
  50. NumLabel.setLocation(80, 60);
  51. this.add(NumLabel);
  52. NumText=new JTextField();
  53. NumText.setSize(100,30);
  54. NumText.setLocation(140, 60);
  55. this.add(NumText);
  56. //名称
  57. NameLabel=new JLabel("名称");
  58. NameLabel.setFont(NameLabel.getFont().deriveFont(Font.BOLD, 16));
  59. NameLabel.setSize(80,30);
  60. NameLabel.setLocation(300,60);
  61. this.add(NameLabel);
  62. NameText=new JTextField();
  63. NameText.setSize(100,30);
  64. NameText.setLocation(380, 60);
  65. this.add(NameText);
  66. //单价
  67. PriceLabel=new JLabel("单价");
  68. PriceLabel.setFont(PriceLabel.getFont().deriveFont(Font.BOLD, 16));
  69. PriceLabel.setSize(80,30);
  70. PriceLabel.setLocation(80, 100);
  71. this.add(PriceLabel);
  72. PriceText=new JTextField();
  73. PriceText.setSize(100,30);
  74. PriceText.setLocation(140, 100);
  75. this.add(PriceText);
  76. //计价单位
  77. UnitLabel=new JLabel("计价单位");
  78. UnitLabel.setFont(UnitLabel.getFont().deriveFont(Font.BOLD, 16));
  79. UnitLabel.setSize(80,30);
  80. UnitLabel.setLocation(300, 100);
  81. this.add(UnitLabel);
  82. UnitText=new JTextField();
  83. UnitText.setSize(100,30);
  84. UnitText.setLocation(380, 100);
  85. this.add(UnitText);
  86. Modifybt = new JButton("修改");
  87. Modifybt.setSize(70, 30);
  88. Modifybt.setLocation(530, 100);
  89. Modifybt.addActionListener(new ActionListener()
  90. {
  91. @Override
  92. public void actionPerformed(ActionEvent e) {
  93. if(!checkIsNull())//如果用户输入为空的话
  94. {
  95. final ImageIcon icon = new ImageIcon("黑人问号.png");
  96. JOptionPane.showMessageDialog(null,"输入信息为空!", "提示", JOptionPane.INFORMATION_MESSAGE, icon); }
  97. else
  98. {
  99. if(!checkInput().equals(""))
  100. {
  101. JOptionPane.showMessageDialog(null,checkInput());
  102. }
  103. else
  104. {
  105. FlowerDAO dao=new FlowerDAO();
  106. //创建一个操作学生信息文本文件的对象
  107. StringBuffer floInfo=new StringBuffer();
  108. floInfo.append(NumText.getText().trim()+",");
  109. floInfo.append(NameText.getText().trim()+",");
  110. floInfo.append(PriceText.getText().trim()+",");
  111. floInfo.append(UnitText.getText().trim());
  112. if(dao.ModifyFlower(floInfo.toString()))
  113. {
  114. final ImageIcon icon2 = new ImageIcon("OK2.png");
  115. JOptionPane.showMessageDialog(null,"修改成功", "提示", JOptionPane.INFORMATION_MESSAGE, icon2);
  116. NumText.setText("");
  117. NameText.setText("");
  118. PriceText.setText("");
  119. UnitText.setText("");
  120. refreshTable();
  121. //添加成功后刷新表格
  122. }
  123. else
  124. {
  125. JOptionPane.showMessageDialog(null,"修改记录失败");
  126. }
  127. }
  128. }
  129. }
  130. }
  131. );
  132. this.add(Modifybt);
  133. }
  134. //表格
  135. private void refreshTable()
  136. {
  137. tableLabel = new JLabel("花卉列表");
  138. tableLabel.setBounds(300,140, 100, 50);
  139. tableLabel.setFont(new Font("宋体", Font.BOLD , 20));
  140. String[] columnNames = {"编号","名称","单价","计价单位"};
  141. FlowerDAO dao=new FlowerDAO();
  142. ArrayList<String> flos=dao.findAllFlowers();
  143. Object[][] objs=new Object[flos.size()][4];
  144. for(int i=0;i<flos.size();i++)
  145. {
  146. String[] strs1=flos.get(i).split(",");
  147. objs[i][0]=strs1[0];
  148. objs[i][1]=strs1[1];
  149. objs[i][2]=strs1[2];
  150. objs[i][3]=strs1[3];
  151. System.out.println(strs1[0]);
  152. }
  153. table=new JTable(objs,columnNames);
  154. table.setSize(380,150);
  155. tablePane = new JScrollPane(table);
  156. tablePane.setSize(660, 320);
  157. tablePane.setLocation(10, 190);
  158. table.getTableHeader().setReorderingAllowed(false);
  159. table.getTableHeader().setResizingAllowed(false);
  160. table.enable(false);
  161. this.add(tableLabel);
  162. this.add(tablePane);
  163. }
  164. //刷新表格
  165. public void run() {
  166. while (true) {
  167. //每隔1秒钟更新JTable
  168. table.validate();
  169. table.updateUI();
  170. try {
  171. Thread.sleep(1000);
  172. } catch (InterruptedException e) {
  173. e.printStackTrace();
  174. }
  175. }
  176. }
  177. @Override
  178. public void actionPerformed(ActionEvent e) {
  179. String buttonName = e.getActionCommand();
  180. if(buttonName.equals("增加")){
  181. AddFlower addflower = new AddFlower();
  182. }else if(buttonName.equals("删除")){
  183. DeleteFlower deleteflower = new DeleteFlower();
  184. }else if(buttonName.equals("搜索")){
  185. SearchFlower searchflower = new SearchFlower();
  186. }else{
  187. System.out.println("已处在修改界面上");
  188. }
  189. }
  190. private boolean checkIsNull()
  191. {
  192. boolean flag=true;
  193. if(NumText.getText().trim().equals(""))
  194. {
  195. flag = false;
  196. }else if(NameText.getText().trim().equals(""))
  197. {
  198. flag=false;
  199. }else if(PriceText.getText().trim().equals(""))
  200. {
  201. flag=false;
  202. }else if(UnitText.getText().trim().equals(""))
  203. {
  204. flag=false;
  205. }
  206. return flag;
  207. }
  208. private Object checkInput()
  209. {
  210. String result="";
  211. String result1="";
  212. for(int i=0;i<NumText.getText().trim().length();i++)
  213. {
  214. char ch=NumText.getText().trim().charAt(i);
  215. if((ch<'0')||(ch>'9'))
  216. {
  217. result="编号中包含非数字字符";
  218. break;
  219. }
  220. }
  221. for(int i=0;i<PriceText.getText().trim().length();i++)
  222. {
  223. char ch=PriceText.getText().trim().charAt(i);
  224. if((ch<'0')||(ch>'9'))
  225. {
  226. result1="单价中包含非数字字符";
  227. break;
  228. }
  229. }
  230. if(result=="编号中包含非数字字符" && result1=="")
  231. {
  232. return result;
  233. }else if(result1=="单价中包含非数字字符" && result=="")
  234. {
  235. return result1;
  236. }else if(result=="编号中包含非数字字符" && result1=="单价中包含非数字字符")
  237. {
  238. return "编号和单价中均包含非数字字符";
  239. }else
  240. {
  241. return "";
  242. }
  243. }
  244. }
  • 增删查改方法实现(FlowerDAO.java):
  1. import java.io.*;
  2. import java.util.ArrayList;
  3. public class FlowerDAO {
  4. //查找所有的花卉信息
  5. public ArrayList<String> findAllFlowers()
  6. {
  7. ArrayList<String> result=new ArrayList<String>();
  8. try {
  9. FileReader fr=new FileReader("Flower.txt");
  10. //产生了一个文件字符输入流对象
  11. BufferedReader br=new BufferedReader(fr);
  12. //以上一个对象作为参数来创建一个缓冲的字符输入流对象
  13. String str=br.readLine();//读取一行数据
  14. while(str!=null)
  15. {
  16. result.add(str);
  17. str=br.readLine();
  18. }
  19. br.close();
  20. fr.close();
  21. }
  22. catch (FileNotFoundException e) {
  23. // TODO Auto-generated catch block
  24. System.out.println("文件未找到");
  25. }
  26. catch (IOException e) {
  27. // TODO Auto-generated catch block
  28. System.out.println("文件读错误");
  29. }
  30. return result;
  31. }
  32. //通过编号来查找花朵的基本信息
  33. public static String findFlowerBySno(String sno)
  34. {
  35. String result="不存在这个花朵";
  36. try {
  37. FileReader fr=new FileReader("Flower.txt");
  38. //产生了一个文件字符输入流对象
  39. BufferedReader br=new BufferedReader(fr);
  40. //以上一个对象作为参数来创建一个缓冲的字符输入流对象
  41. String str=br.readLine();//读取一行数据
  42. boolean flag=true;
  43. while(flag)
  44. {
  45. if(str.startsWith(sno.trim()))
  46. {
  47. result=str;
  48. flag=false;
  49. }
  50. str=br.readLine();//继续读取下一行
  51. if(str==null)
  52. {
  53. flag=false;
  54. }
  55. }
  56. br.close();
  57. fr.close();
  58. }
  59. catch (FileNotFoundException e) {
  60. // TODO Auto-generated catch block
  61. System.out.println("文件未找到");
  62. }
  63. catch (IOException e) {
  64. // TODO Auto-generated catch block
  65. System.out.println("文件读错误");
  66. }
  67. return result;
  68. }
  69. //通过名称来查找花朵的基本信息
  70. public static String findFlowerBySname(String sname)
  71. {
  72. String result="不存在这个花朵";
  73. try {
  74. FileReader fr=new FileReader("Flower.txt");
  75. //产生了一个文件字符输入流对象
  76. BufferedReader br=new BufferedReader(fr);
  77. //以上一个对象作为参数来创建一个缓冲的字符输入流对象
  78. String str=br.readLine();//读取一行数据
  79. boolean flag=true;
  80. while(flag)
  81. {
  82. if(str.substring(4).startsWith(sname.trim()))
  83. {
  84. result=str;
  85. flag=false;
  86. }
  87. str=br.readLine();//继续读取下一行
  88. if(str==null)
  89. {
  90. flag=false;
  91. }
  92. }
  93. br.close();
  94. fr.close();
  95. }
  96. catch (FileNotFoundException e) {
  97. // TODO Auto-generated catch block
  98. System.out.println("文件未找到");
  99. }
  100. catch (IOException e) {
  101. // TODO Auto-generated catch block
  102. System.out.println("文件读错误");
  103. }
  104. return result;
  105. }
  106. //通过名称来查找花朵的基本信息
  107. public String findFlowerByname(boolean bool,String name)
  108. {
  109. String result="不存在这个花朵";
  110. try {
  111. FileReader fr=new FileReader("Flower.txt");
  112. //产生了一个文件字符输入流对象
  113. BufferedReader br=new BufferedReader(fr);
  114. //以上一个对象作为参数来创建一个缓冲的字符输入流对象
  115. String str=br.readLine();//读取一行数据
  116. boolean flag=true;
  117. while(flag)
  118. {
  119. String temp=str;
  120. if(!bool)
  121. {
  122. temp=str.substring(4);
  123. }
  124. if(temp.startsWith(name.trim()))
  125. {
  126. result=str;
  127. flag=false;
  128. }
  129. str=br.readLine();//继续读取下一行
  130. if(str==null)
  131. {
  132. flag=false;
  133. }
  134. }
  135. br.close();
  136. fr.close();
  137. }
  138. catch (FileNotFoundException e) {
  139. // TODO Auto-generated catch block
  140. System.out.println("文件未找到");
  141. }
  142. catch (IOException e) {
  143. // TODO Auto-generated catch block
  144. System.out.println("文件读错误");
  145. }
  146. return result;
  147. }
  148. //增加一条花朵记录
  149. public boolean AddFlower(String Floinfo)
  150. {
  151. String[] strs=Floinfo.split(",");
  152. if(!numIsExist(strs[0]) && !nameIsExist(strs[1]))
  153. {
  154. try {
  155. FileWriter fw=new FileWriter("Flower.txt",true);
  156. //创建一个文件的字符输出流,第二个参数表示是在文件尾部进行追加
  157. BufferedWriter bw=new BufferedWriter(fw);
  158. //以上面创建的对象为参数创建一个缓冲字符输出流
  159. bw.newLine();
  160. //创建新的一行
  161. bw.write(Floinfo);
  162. bw.close();
  163. fw.close();
  164. }
  165. catch (FileNotFoundException e) {
  166. // TODO Auto-generated catch block
  167. System.out.println("文件未找到");
  168. }
  169. catch (IOException e) {
  170. // TODO Auto-generated catch block
  171. System.out.println("文件写错误");
  172. }
  173. return true;
  174. }
  175. else
  176. {
  177. return false;
  178. }
  179. }
  180. //判断是否已经存在重复的编号
  181. private boolean numIsExist(String num)
  182. {
  183. boolean result=false;
  184. try {
  185. FileReader fr=new FileReader("Flower.txt");
  186. //产生了一个文件字符输入流对象
  187. BufferedReader br=new BufferedReader(fr);
  188. //以上一个对象作为参数来创建一个缓冲的字符输入流对象
  189. String str=br.readLine();//读取一行数据
  190. while(str!=null)
  191. {
  192. if(str.startsWith(num))
  193. {
  194. result=true;
  195. break;
  196. }
  197. str=br.readLine();
  198. }
  199. br.close();
  200. fr.close();
  201. }
  202. catch (FileNotFoundException e) {
  203. // TODO Auto-generated catch block
  204. System.out.println("文件未找到");
  205. }
  206. catch (IOException e) {
  207. // TODO Auto-generated catch block
  208. System.out.println("文件读错误");
  209. }
  210. return result;
  211. }
  212. //判断名称是否重复
  213. private boolean nameIsExist(String name)
  214. {
  215. boolean result=false;
  216. try {
  217. FileReader fr=new FileReader("Flower.txt");
  218. //产生了一个文件字符输入流对象
  219. BufferedReader br=new BufferedReader(fr);
  220. //以上一个对象作为参数来创建一个缓冲的字符输入流对象
  221. String str=br.readLine();//读取一行数据
  222. while(str!=null)
  223. {
  224. if(str.startsWith(name))
  225. {
  226. result=true;
  227. break;
  228. }
  229. str=br.readLine();
  230. }
  231. br.close();
  232. fr.close();
  233. }
  234. catch (FileNotFoundException e) {
  235. // TODO Auto-generated catch block
  236. System.out.println("文件未找到");
  237. }
  238. catch (IOException e) {
  239. // TODO Auto-generated catch block
  240. System.out.println("文件读错误");
  241. }
  242. return result;
  243. }
  244. //增加多条花朵记录
  245. public int AddFlowers(String[] Flos)
  246. {
  247. int result=0;
  248. //定义一个变量来保存添加成功的花卉记录个数
  249. if(Flos!=null)
  250. {
  251. if(Flos.length>0)
  252. {
  253. for(int i=0;i<Flos.length;i++)
  254. {
  255. if(AddFlower(Flos[i]))
  256. {
  257. result++;
  258. }
  259. }
  260. }
  261. }
  262. return result;
  263. }
  264. //删除一条花朵记录的方法
  265. public static boolean DeleteFlower(String num)
  266. {
  267. boolean result=false;
  268. //保存删除是否成功的变量
  269. try
  270. {
  271. FileReader fr=new FileReader("Flower.txt");
  272. BufferedReader br=new BufferedReader(fr);
  273. String str=br.readLine();//读取一行数据
  274. ArrayList<String> list=new ArrayList<String>();
  275. //保存读入的花朵信息
  276. boolean flag=true;
  277. while(flag)
  278. {
  279. list.add(str);
  280. str=br.readLine();//再次读取一行数据
  281. if(str==null)
  282. {
  283. flag=false;
  284. }
  285. }
  286. br.close();
  287. fr.close();
  288. for(int i=0;i<list.size();i++)
  289. {
  290. if(list.get(i).startsWith(num))
  291. {
  292. list.remove(i);
  293. result=true;
  294. break;
  295. }
  296. }//将对应的花朵记录移除
  297. FileWriter fw=new FileWriter("Flower.txt");
  298. //创建一个文件的字符输出流,不需要追加
  299. BufferedWriter bw=new BufferedWriter(fw);
  300. //以上面创建的对象为参数创建一个缓冲字符输出流
  301. for(int i=0;i<list.size();i++)
  302. {
  303. bw.write(list.get(i));
  304. //分别写入花卉记录
  305. bw.newLine();
  306. }
  307. bw.flush();
  308. bw.close();
  309. fw.close();
  310. }
  311. catch(IOException ex)
  312. {
  313. }
  314. return result;
  315. }
  316. //删除多条花朵记录的方法
  317. public int DeleteFlowers(String[] nums)
  318. {
  319. int result=0;
  320. //用来保存成功删除的花朵记录个数
  321. if(nums!=null)
  322. {
  323. if(nums.length>0)
  324. {
  325. for(int i=0;i<nums.length;i++)
  326. {
  327. if(DeleteFlower(nums[i]))
  328. {
  329. result++;
  330. }
  331. }
  332. }
  333. }
  334. return result;
  335. }
  336. //修改一条记录的方法
  337. public boolean ModifyFlower(String Floinfo)
  338. {
  339. String[] strs=Floinfo.split(",");
  340. if(numIsExist(strs[0]))
  341. {
  342. try
  343. {
  344. FileReader fr=new FileReader("Flower.txt");
  345. //产生了一个文件字符输入流对象
  346. BufferedReader br=new BufferedReader(fr);
  347. //以上一个对象作为参数来创建一个缓冲的字符输入流对象
  348. String str=br.readLine();//读取一行数据
  349. ArrayList<String> list=new ArrayList<String>();
  350. //保存读入的花朵信息
  351. boolean flag=true;
  352. while(flag)
  353. {
  354. list.add(str);
  355. str=br.readLine();//再次读取一行数据
  356. if(str==null)
  357. {
  358. flag=false;
  359. }
  360. }
  361. br.close();
  362. fr.close();
  363. for(int i=0;i<list.size();i++)
  364. {
  365. if(list.get(i).startsWith(strs[0]))
  366. {
  367. list.remove(i);
  368. //先从动态数组对象中移除
  369. list.add(Floinfo);
  370. //然后再添加修改后的花朵记录
  371. break;
  372. }
  373. }//将对应的花朵记录移除
  374. FileWriter fw=new FileWriter("Flower.txt");
  375. //创建一个文件的字符输出流,不需要追加
  376. BufferedWriter bw=new BufferedWriter(fw);
  377. //以上面创建的对象为参数创建一个缓冲字符输出流
  378. for(int i=0;i<list.size();i++)
  379. {
  380. bw.write(list.get(i));
  381. //分别写入花朵记录
  382. bw.newLine();
  383. }
  384. bw.flush();
  385. bw.close();
  386. fw.close();
  387. }
  388. catch(IOException ex)
  389. {
  390. }
  391. return true;
  392. }
  393. else
  394. {
  395. return false;
  396. }
  397. }
  398. //修改多条花朵记录
  399. public int ModifyFlowers(String[] Flos)
  400. {
  401. int result=0;
  402. if(Flos!=null)
  403. {
  404. if(Flos.length>0)
  405. {
  406. for(int i=0;i<Flos.length;i++)
  407. {
  408. if(ModifyFlower(Flos[i]))
  409. {
  410. result++;
  411. }
  412. }
  413. }
  414. }
  415. return result;
  416. }
  417. }

这个代码量有点大,但难度倒不大。能看到这里都不容易,辛苦啦~

>>>如有问题,敬请指点,学艺不精,十分希望从各位大佬那里汲取经验。<<<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/866375
推荐阅读
相关标签
  

闽ICP备14008679号