Java图书管理(可视化,文件)

目录

要求

效果图

 功能实现简释

一些方法

代码


要求

年末了,突然想起这学期还没发过一篇文章。想想还是发点什么吧,正好昨天在一个群里看到了一个java小程序的需求,今天无事可做,也稍微写了一下。实现了一些我觉得有必要的东西。

●编写一个模拟书店库存管理的Java应用程序,要求实现如下功能:

1.编写图书概况管理程序,管理书籍名称、书号、出版社、单价和库存等信息:

2.编写图书信息录入方法

3.编写图书信息删除方法

后面的要求就不写了(实际上是我懒得实现,没啥意义)

效果图

 

 

 

 功能实现简释

  1. 首先是录入,删除操作时的信息输入方法。有着直接从终端控制台输入比较low的主观想法(也许是我的想法比较幼稚)。我采用的是新生成一个小的对话窗体。然后来到了想说的第一个点,就是,我们所希望的是在输入信息完点确定后,对话窗关闭。然后继续在JFrame上进行显示操作。注意,关闭窗口的方式不能用EXIT_ON_CLOSE,那样会连着主窗口一起关闭。
  2. 就是删除操作了,录入操作比较简单,只需要直接写入就行。但根据编号进行删除就不是那么容易。我的想法很简单也很暴力,就是用一个新的文本文件去保存没有被删掉的信息。然后用该文件去覆写保存书本信息的文件。这种简单粗暴的文件保存方法,我从c一直沿用到java。接下来,就说一说暂存文件(上面提到的新的文本文件)的写入。在,我们读取到输入的编号的时候。我们就对书籍信息的文件进行一遍检索。建议使用BufferedReader,可以一行一行的读取。由于我们储存的信息格式是固定的(书名+“ ”+编号)。所以,使用StringTokenizer便理所当然了,将信息拆分成一个个字符串之后,就可以获得每本书的编号。用一个List集合去保存书籍信息,然后写入暂存文件就行了。判断编号是否与输入相同不能直接用==,用String类的equals方法(我写的时候没注意,错了几次才发现)
  3. 在JTextArea里,想主动换行,可以使用"\r\n";文件记得关闭输入,输出流
  4. 额,由于本人不是太爱整洁。所以,分类在我这基本是不现实的。。。导致,我往往会将所有功能实现在一个类的一个或几个方法中。。。

一些方法

setViewportView();  //JScrollPane添加组件,界面的方法(不是add!!!)
FileWriter out = new FileWriter(filename,boolean); //后边的参数,true是追加,false是不追加。
List<String>name = new ArrayList<String>(); //字符串集合,常用方法,name.size()集合大小,name.get(index)获取集合的序号index元素。

代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;


public class BookSystem extends JFrame{

    private JPanel ShowArea;
    private JPanel MenuArea;


    public void MyFrame(){
        JFrame jf = new JFrame("图书管理系统");
        jf.setBounds(200,200,400,400);
        jf.setLayout(new BorderLayout());
        JPanel ShowArea = new JPanel();
        JPanel MenuArea = new JPanel();



        //显示区
        JTextArea area = new JTextArea();
        area.setLineWrap(true);
        area.setEnabled(true);
        area.setSize(350,200);
        area.setRows(15);
        ShowArea.add(area);


        JScrollPane js = new JScrollPane();
        js.setBounds(20,20,400,200);
        js.setViewportView(ShowArea);
        jf.add(js,BorderLayout.NORTH);

        //功能区
        JButton jb1 = new JButton("录入");
        JButton jb2 = new JButton("删除");
        JButton jb3 = new JButton("刷新");
        //监听
        //录入
        jb1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFrame Mess = new JFrame("录入信息");
                Mess.setBounds(250,250,300,150);
                Mess.setLayout(new BorderLayout());
                JPanel jp1 = new JPanel();
                JPanel jp2 = new JPanel();
                JPanel jp3 = new JPanel();
                jp1.add(new JLabel("书名"));
                jp2.add(new JLabel("编号"));
                JTextField name = new JTextField();
                name.setColumns(15);
                jp1.add(name);
                JTextField no = new JTextField();
                no.setColumns(15);
                jp2.add(no);
                JButton jb = new JButton("确定");
                jp3.add(jb);
                //生成信息窗口
                jb.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        String name1 = name.getText();
                        String no1 = no.getText();
                        try {
                            FileWriter out = new FileWriter("E:\\图书管理\\src\\book.txt",true);
                            BufferedWriter bufferedWriter = new BufferedWriter(out);
                            bufferedWriter.write(name1+" "+no1);
                            bufferedWriter.newLine();
                            bufferedWriter.flush();
                            bufferedWriter.close();
                            Mess.dispose();
                        }
                        catch (IOException a){
                            System.out.println(a.toString());
                        }
                    }
                });

                Mess.add(jp1,BorderLayout.NORTH);
                Mess.add(jp2,BorderLayout.CENTER);
                Mess.add(jp3,BorderLayout.SOUTH);
                Mess.setVisible(true);
                Mess.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            }
        });
        //删除操作
        jb2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFrame jf = new JFrame("删除");
                jf.setBounds(250,250,300,150);
                jf.setLayout(new BorderLayout());
                JPanel jp = new JPanel();
                JPanel jp2 = new JPanel();
                JTextField no = new JTextField();
                no.setColumns(15);
                JButton jb = new JButton("确定");
                jp.add(new JLabel("编号"));
                jp.add(no);
                jp2.add(jb);

                //确定
                jb.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        String num = no.getText();
                        try{
                            FileReader in = new FileReader("E:\\图书管理\\src\\book.txt");
                            FileWriter out = new FileWriter("E:\\图书管理\\src\\temp.txt",false);
                            BufferedReader bufferedReader = new BufferedReader(in);
                            BufferedWriter bufferedWriter = new BufferedWriter(out);
                            String str;
                            List<String>name = new ArrayList<String>();
                            while((str=bufferedReader.readLine())!=null){
                                name.add(str);
                            }
                            for(int i=0;i<name.size();i++){
                                StringTokenizer fx = new StringTokenizer(name.get(i)," ");
                                String temp_num="";
                                while(fx.hasMoreTokens()){
                                    temp_num = fx.nextToken();
                                }
                                if(!num.equals(temp_num)){
                                    bufferedWriter.write(name.get(i));
                                    bufferedWriter.newLine();
                                }
                            }
                            bufferedReader.close();
                            bufferedWriter.flush();
                            bufferedWriter.close();

                            //保存删除后的数据
                            FileReader in_ = new FileReader("E:\\图书管理\\src\\temp.txt");
                            FileWriter out_ = new FileWriter("E:\\图书管理\\src\\book.txt",false);
                            BufferedReader bufferedReader_ = new BufferedReader(in_);
                            BufferedWriter bufferedWriter_ = new BufferedWriter(out_);
                            String str_;
                            while((str_=bufferedReader_.readLine())!=null){
                                bufferedWriter_.write(str_);
                                bufferedWriter_.newLine();
                            }
                            bufferedReader_.close();
                            bufferedWriter_.flush();
                            bufferedWriter_.close();

                        }catch (IOException a){
                            System.out.println(e.toString());
                        }
                        jf.dispose();
                    }
                });

                jf.add(jp,BorderLayout.NORTH);
                jf.add(jp2,BorderLayout.SOUTH);
                jf.setVisible(true);
                jf.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            }
        });
        //刷新
        jb3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    FileReader in = new FileReader("E:\\图书管理\\src\\book.txt");
                    BufferedReader bufferedReader = new BufferedReader(in);
                    String str,str2="";
                    while((str=bufferedReader.readLine())!=null){
                        str2 += str + "\r\n";
                    }
                    area.setText(str2);
                    in.close();
                }
                catch (IOException a){
                    System.out.println(a.toString());
                }
            }
        });
        MenuArea.setLayout(new FlowLayout());
        MenuArea.add(jb1);
        MenuArea.add(jb2);
        MenuArea.add(jb3);
        jf.add(MenuArea,BorderLayout.SOUTH);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        BookSystem book = new BookSystem();
        book.MyFrame();
    }
}

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值