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

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

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

目录

要求

效果图

 功能实现简释

一些方法

代码


要求

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

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

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

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

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

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

效果图

 

 

 

 功能实现简释
  1. 首先是录入,删除 *** 作时的信息输入方法。有着直接从终端控制台输入比较low的主观想法(也许是我的想法比较幼稚)。我采用的是新生成一个小的对话窗体。然后来到了想说的第一个点,就是,我们所希望的是在输入信息完点确定后,对话窗关闭。然后继续在Jframe上进行显示 *** 作。注意,关闭窗口的方式不能用EXIT_ON_CLOSE,那样会连着主窗口一起关闭。
  2. 就是删除 *** 作了,录入 *** 作比较简单,只需要直接写入就行。但根据编号进行删除就不是那么容易。我的想法很简单也很暴力,就是用一个新的文本文件去保存没有被删掉的信息。然后用该文件去覆写保存书本信息的文件。这种简单粗暴的文件保存方法,我从c一直沿用到java。接下来,就说一说暂存文件(上面提到的新的文本文件)的写入。在,我们读取到输入的编号的时候。我们就对书籍信息的文件进行一遍检索。建议使用BufferedReader,可以一行一行的读取。由于我们储存的信息格式是固定的(书名+“ ”+编号)。所以,使用StringTokenizer便理所当然了,将信息拆分成一个个字符串之后,就可以获得每本书的编号。用一个List集合去保存书籍信息,然后写入暂存文件就行了。判断编号是否与输入相同不能直接用==,用String类的equals方法(我写的时候没注意,错了几次才发现)
  3. 在Jtextarea里,想主动换行,可以使用"rn";文件记得关闭输入,输出流
  4. 额,由于本人不是太爱整洁。所以,分类在我这基本是不现实的。。。导致,我往往会将所有功能实现在一个类的一个或几个方法中。。。
一些方法
setViewportView();  //JScrollPane添加组件,界面的方法(不是add!!!)
FileWriter out = new FileWriter(filename,boolean); //后边的参数,true是追加,false是不追加。
Listname = new ArrayList(); //字符串集合,常用方法,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;
                            Listname = new ArrayList();
                            while((str=bufferedReader.readLine())!=null){
                                name.add(str);
                            }
                            for(int i=0;i 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5686873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存