IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java图书管理(可视化文件) -> 正文阅读

[Java知识库]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();
    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:44:53  更:2022-01-01 13:46:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:22:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码