Eclipse+Java+Swing实现图书信息管理系统-TXT存储信息

一、系统介绍

1.开发环境

操作系统:Win10

开发工具 :Eclipse2021

JDK版本:jdk1.8

存储方式:Txt文件存储

2.技术选型

Java+Swing+Txt

3.功能模块

4.工程结构

5.系统功能

1.系统登录

管理员可以登录系统

2.查看图书

管理员可以查看图书信息。

3.新增图书

管理员可以新增图书信息。

4.修改图书

管理员可以修改图书信息。

5.删除图书

管理员可以删除图书信息。

二、系统展示

1.登录页面

2.主页面

3.查看图书

4.新增图书

5.修改图书

6.删除图书

三、部分代码

LoginActivity

package com.sjsq.view;import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/*** * 登录**/
public class LoginActivity extends JFrame implements ActionListener {static LoginActivity w1;JLabel jL1, jL2, jLname;JButton jB1, jB2;JTextField jF1;JPasswordField jP1;public LoginActivity() {super("图书信息管理系统_登录界面");jLname = new JLabel("");jLname.setFont(new Font("宋体", Font.BOLD, 20));jLname.setBounds(5, 5, 200, 30);jL1 = new JLabel("用户名称:");jL1.setFont(new Font("宋体", Font.BOLD, 20));jL1.setBounds(60, 40, 200, 30);jL2 = new JLabel("登录密码:");jL2.setFont(new Font("宋体", Font.BOLD, 20));jL2.setBounds(60, 120, 200, 30);jF1 = new JTextField("", 20);jF1.setBounds(250, 40, 200, 30);jP1 = new JPasswordField("", 20);jP1.setBounds(250, 120, 200, 30);jB1 = new JButton("登录");jB1.setBounds(150, 260, 60, 30);jB1.addActionListener(this);jB2 = new JButton("退出");jB2.setBounds(340, 260, 60, 30);jB2.addActionListener(this);Container winContainer = this.getContentPane();winContainer.setLayout(null);winContainer.add(jLname);winContainer.add(jL1);winContainer.add(jL2);winContainer.add(jF1);winContainer.add(jP1);winContainer.add(jB1);winContainer.add(jB2);this.setSize(600, 400);this.setVisible(true);this.setLocationRelativeTo(null);}public static void main(String[] args) {LoginActivity w1 = new LoginActivity();}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == jB1) {if (jF1.getText().toString() != null && jF1.getText().toString().length() > 0) {if(new String(jP1.getPassword()).equals("")){JOptionPane.showMessageDialog(w1, "登录密码不为空", "提示", 2);}else {// 账号和密码if (jF1.getText().equals("admin") && new String(jP1.getPassword()).equals("admin")) // ※{JOptionPane.showMessageDialog(w1, "登录成功", "提示", 1);jL1.setText("");jL2.setText("");jF1.setText("");this.setVisible(false);IndexActivity w2 = new IndexActivity();} else {JOptionPane.showMessageDialog(w1, "登录失败", "提示", 2);}}} else {JOptionPane.showMessageDialog(w1, "用户名称不为空", "提示", 2);}} else if (e.getSource() == jB2)System.exit(0);}}

IndexActivity

package com.sjsq.view;import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/*** * 主页面**/
public class IndexActivity extends JFrame implements ActionListener {JLabel jL1, jL2, jLname, jL3;JButton jB1, jB2, jB3, jB4, jB5, jB6, SignOut;JTextField jF1;JPasswordField jP1;ImageIcon background;JPanel myPanel;public IndexActivity() {super("图书信息管理系统_操作主界面");jLname = new JLabel("用户名称:admin");jLname.setFont(new Font("宋体", Font.BOLD, 16));jLname.setBounds(950, 5, 200, 30);jL1 = new JLabel("操作:");jL1.setFont(new Font("宋体", Font.BOLD, 20));jL1.setBounds(20, 40, 200, 30);jB3 = new JButton("查询图书信息");jB3.setBounds(100, 75, 150, 30);jB3.addActionListener(this);jB4 = new JButton("添加图书信息");jB4.setBounds(100, 125, 150, 30);jB4.addActionListener(this);jB5 = new JButton("更新图书信息");jB5.setBounds(100, 175, 150, 30);jB5.addActionListener(this);jB6 = new JButton("删除图书信息");jB6.setBounds(100, 225, 150, 30);jB6.addActionListener(this);SignOut = new JButton("退出登录");SignOut.setBounds(460, 155, 110, 30);SignOut.addActionListener(this);background = new ImageIcon("e:\\\\图片/图标/cloud.png"); // 创建一个背景图片jL3 = new JLabel(background); // 把背景图片添加到标签里jL3.setBounds(950, 35, background.getIconWidth(), background.getIconHeight()); // 把标签设置为和图片等高等宽myPanel = (JPanel) this.getContentPane(); // 把我的面板设置为内容面板myPanel.setOpaque(false); // 把我的面板设置为不可视myPanel.setLayout(new FlowLayout()); // 把我的面板设置为流动布局this.getLayeredPane().setLayout(null); // 把分层面板的布局置空this.getLayeredPane().add(jL3, new Integer(Integer.MIN_VALUE));this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container winContainer = this.getContentPane();winContainer.setLayout(null);winContainer.add(jLname);winContainer.add(jB3);winContainer.add(jB4);winContainer.add(jB5);winContainer.add(jB6);winContainer.add(SignOut);this.setSize(600, 400);this.setVisible(true);this.setLocationRelativeTo(null);}public static void main(String[] args) {IndexActivity w2 = new IndexActivity();}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == jB3) {this.setVisible(false);// 查询信息SearchInfoActivity w6 = new SearchInfoActivity();}if (e.getSource() == jB4) {this.setVisible(false);// 添加信息AddInfoActivity w5 = new AddInfoActivity();}if (e.getSource() == jB5) {this.setVisible(false);// 更新信息UpdateInfoActivity w5 = new UpdateInfoActivity();}if (e.getSource() == jB6) {this.setVisible(false);// 删除信息DeleteInfoActivity w5 = new DeleteInfoActivity();}if (e.getSource() == SignOut) {this.setVisible(false);// 登录界面LoginActivity w1 = new LoginActivity();}}}

SearchInfoActivity

package com.sjsq.view;
import com.sjsq.util.*;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
/*** * 查询图书**/
public class SearchInfoActivity extends JFrame implements ActionListener {static IndexActivity w2;JLabel jL1, jL2, jLname;JButton jB1, jB2;JTextField jF1, jF;JScrollPane scrollPane;JTextArea textArea;public SearchInfoActivity() {super("图书信息管理系统_查询图书信息");jLname = new JLabel("用户名称:admin");jLname.setFont(new Font("宋体", Font.BOLD, 16));jLname.setBounds(950, 5, 200, 30);jL1 = new JLabel("编号:");jL1.setFont(new Font("宋体", Font.BOLD, 20));jL1.setBounds(20, 60, 200, 30);jF1 = new JTextField("", 20);jF1.setBounds(110, 60, 280, 30);jF1.setFont(new Font("宋体", Font.BOLD, 15));jF1.addFocusListener(new JTextFieldHintListener(jF1, "请输入书籍编号"));jF = new JTextField("", 20);jB1 = new JButton("查询");jB1.setBounds(60, 170, 60, 30);jB1.addActionListener(this);jB2 = new JButton("返回");jB2.setBounds(250, 170, 60, 30);jB2.addActionListener(this);// 创建文本区域组件textArea = new JTextArea();textArea.setLineWrap(true); // 自动换行textArea.setFont(new Font("sssssssss", Font.PLAIN, 18)); // 设置字体// 创建滚动面板, 指定滚动显示的视图组件(textArea), 垂直滚动条一直显示, 水平滚动条从不显示scrollPane = new JScrollPane(textArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);scrollPane.setBounds(400, 50, 660, 160);Container winContainer = this.getContentPane();winContainer.setLayout(null);winContainer.add(jLname);winContainer.add(jL1);winContainer.add(jF1);winContainer.add(jF);winContainer.add(jB1);winContainer.add(jB2);winContainer.add(scrollPane);this.setSize(1100, 400);this.setVisible(true);this.setLocationRelativeTo(null);jF.requestFocus();try {SQLTxt.searchAllTxtFile();textArea.setText(SQLTxt.getreadStr());} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) throws Exception {SearchInfoActivity w6 = new SearchInfoActivity();}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == jB1) {if (jF1.getText().toString() != null && jF1.getText().toString().length() > 0) {if (jF1.getText().toString().equals("search.all")) {try {SQLTxt.searchAllTxtFile();textArea.setText(SQLTxt.getreadStr());JOptionPane.showMessageDialog(w2, "查询成功", "提示", 1);// System.out.println(SQLTxt.getreadStr());} catch (UnsupportedEncodingException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(w2, "查询失败", "提示", 1);e1.printStackTrace();}} else {try {SQLTxt.searchTxtFile(jF1.getText().toString());textArea.setText(SQLTxt.getreadStr());JOptionPane.showMessageDialog(w2, "查询成功", "提示", 1);// System.out.println(SQLTxt.getreadStr());} catch (UnsupportedEncodingException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(w2, "查询失败", "提示", 1);e1.printStackTrace();}}} else {JOptionPane.showMessageDialog(w2, "输入不为空", "提示", 1);}} else if (e.getSource() == jB2) {this.setVisible(false);w2 = new IndexActivity();}}}

Book

package com.sjsq.vo;import java.io.Serializable;
/*** * 图书类**/
public class Book implements Serializable {String name;String introduce;public Book(String name, String introduce) {super();this.name = name;this.introduce = introduce;}public String toString() {return "Book (书名=[" + name + "], 简介=[" + introduce + "])";}}

JTextFieldHintListener

package com.sjsq.util;import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;import javax.swing.JTextField;
/***  * 输入监听**/
public class JTextFieldHintListener implements FocusListener {private String hintText;private JTextField textField;public JTextFieldHintListener(JTextField jTextField,String hintText) {this.textField = jTextField;this.hintText = hintText;jTextField.setText(hintText);  //默认直接显示jTextField.setForeground(Color.GRAY);}@Overridepublic void focusGained(FocusEvent e) {//获取焦点时,清空提示内容String temp = textField.getText();if(temp.equals(hintText)) {textField.setText("");textField.setForeground(Color.BLACK);}}@Overridepublic void focusLost(FocusEvent e) {	//失去焦点时,没有输入内容,显示提示内容String temp = textField.getText();if(temp.equals("")) {textField.setForeground(Color.GRAY);textField.setText(hintText);}}}

四、源码下载

1.登录说明

1.系统登录:账号:admin  密码:admin;

2.文件存储:BookInfo.txt。

2.下载地址

私信我

五、其他事宜

1.更多系统

Java+Swing系统系列实现

Java+Swing实现超市管理系统-TXT存储数据

Java+Swing实现自助取款机系统-TXT存储数据

Java+Swing实现宠物商店管理系统-TXT存储数据

Java+Swing实现通讯录管理系统-TXT存储信息

Java+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现考试管理系统

Java+Swing实现酒店管理系统

Java+Swing实现超市管理系统1

Java+Swing实现超市管理系统2

Java+Swing实现电影购票系统

Java+Swing实现仓库管理系统-1

Java+Swing实现仓库管理系统-2

Java+Swing实现进销存管理系统

Java+Swing实现自助取款机系统

Java+Swing实现通讯录管理系统

Java+Swing实现停车场管理系统

Java+Swing实现学生信息管理系统-1

Java+Swing实现学生信息管理系统-2

Java+Swing实现学生宿舍管理系统

Java+Swing实现学生选课管理系统

Java+Swing实现学生成绩管理系统

Java+Swing实现学校教材管理系统

Java+Swing实现学校教务管理系统

Java+Swing实现企业人事管理系统

Java+Swing实现电子相册管理系统

Java+JSP系统系列实现

Java+JSP实现学生图书管理系统

Java+JSP实现学生信息管理系统

Java+JSP实现用户信息管理系统

Java+JSP实现教师信息管理系统

Java+JSP实现学生宿舍管理系统

Java+JSP实现商品信息管理系统

Java+JSP实现宠物信息管理系统

Java+JSP实现学生成绩管理系统

Java+Servlet系统系列实现

Java+Servlet+JSP实现航空订票系统

Java+Servlet+JSP实现新闻发布系统

Java+Servlet+JSP学生宿舍管理系统

Java+Servlet+JSP实现图书管理系统

Java+Servlet+JSP实现停车场管理系统

Java+Servlet+JSP实现房屋租赁管理系统

Java+Servlet+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生选课管理系统

Java+Servlet+JSPl实现学生选课签到系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+Servlet+JSP实现学生成绩管理系统-1

Java+Servlet+JSP实现学生成绩管理系统-2

Java+SSM系统系列实现

Java+SSM+JSP实现网上考试系统

Java+SSM+JSP实现宠物商城系统

Java+SSM+JSP实现超市管理系统

Java+SSM+JSP实现学生成绩管理系统

Java+SSM+JSP实现学生信息管理系统

Java+SSM+JSP实现药品信息管理系统

Java+SSM+JSP实现汽车信息管理系统

Java+SSM+Jspl实现商品信息管理系统

Java+SSM+JSP+Maven实现网上书城系统

Java+SSM+JSP+Maven实现学校教务管理系统

Java+SSH系统系列实现

Java+SSH+JSP实现在线考试系统

Java+SSH+JSP实现医院在线挂号系统

Java+Springboot系统系列实现

Java+Springboot+H-ui+Maven实现营销管理系统

Java+Springboot+Bootstrap+Maven实现网上商城系统

Java+Springboot+Bootstrap+Maven实现景区旅游管理系统

1.更多JavaWeb系统请关注专栏。

https://blog.csdn.net/helongqiang/category_10020130.html

2.更多JavaSwing系统请关注专栏。

https://blog.csdn.net/helongqiang/category_6229101.html

2.运行项目

关注B站:水坚石青

后期有更多干货视频推出!!!

Eclipse如何导入JavaSwing项目超详细教程

3.侵权事宜

如有侵权请联系我删除。

4.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/618866.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍set和map容器

文章目录 1.什么是关联式容器2.什么是键值对3.树形结构的关联式容器3.1set3.1.2set的使用set的构造set的迭代器set的容量set的常用操作set的简单使用 3.2 mapmap的构造map的迭代器map的容量map的常用操作map的使用 3.3multiset3.4 multimap 在介绍set和map容器前先了解什么是关…

Tesserocr 的安装步骤

Tesserocr 的安装 OCR,即 Optical Character Recognition,光学字符识别。是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。那么对于图形验证码来说,它都是一些不规则的字符,但是这些字符确实是由字符稍加扭…

IDEA 使用备忘录(不断更新)

IDEA 项目结构(注意层级结构,新建相应结构时,按照以下顺序新建): project(项目) module(模块) package(包) class(类) 项…

推荐一款基于vim的超可扩展文本编辑器neovim

一、简介 Vim是一个基于流行的Vi编辑器的文本编辑器,最初是在20世纪70年代发布的。Vim代表“改进的Vi”,它拥有广泛的用户基础和广泛的可用插件和扩展。 Neovim是Vim的一个分支,创建于2014年,旨在解决Vim的一些缺点,…

oracle 19c 主备 补丁升级19.22

补丁升级流程 备库升级 备库备份$ORALCE_HOME du -sh $ORACLE_HOME ​​​​​​​ 备份目录将dbhome_1压缩 cd $ORACLE_HOME cd .. Ls tar -cvzf db_home.tar.gz db_home_1 /opt/oracle/product/19c ​​​​​​​​​​​​​​ 关闭监听关闭数据库查看sq…

2024年大唐杯备考

努力更新中…… 第一章 网络架构和组网部署 1.1 5G的网络整体架构 5G网络中的中传、回传、前传(这里属于承载网的概念) CU和DU之间是中传 BBU和5GC之间是回传 BBU和AAU之间是前传(这个好记) 这里竟然还藏了MEC(…

如何搭建SearXNG搜索引擎

小白如何搭建SearXNG搜索引擎 前言 国内用户在使用百度、360、搜狗等主流搜索引擎时,面临搜索结果精确度不高、广告泛滥及隐私顾虑等问题。虽然Google以其出色性能备受推崇,但由于无法在国内访问,部分用户转而选择Bing作为折衷方案&#xff…

unity记一下如何播放动画

我使用的版本是2022.3.14fc 展开你的模型树,是会出现这个三角形的东西的 然后在资源面板创建一个animation controller 进去之后,把三角形拖进去,就会出现一个动画,然后点击他 在左侧给他创建这么个状态名字,类型…

探索数据结构:顺序串与链式串的深入理解

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 串的定义 串是一种特殊的顺序表,即每一个元素都是单独一…

STL--list双向链表

功能 将数据进行链式存储 链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成:链表由一系列结点组成 结点的组成:一个是存储数据元素的数据域&#xff0…

Finetuning vs. Prompting:大语言模型两种使用方式

目录 前言1. 对于大型语言模型的两种不同期待2. Finetune(专才)3. Prompt(通才)3.1 In-context Learning3.2 Instruction-tuning3.3 Chain of Thought(COT) Prompting3.4 用机器来找Prompt 总结参考 前言 这里和大家分享下关于大语言模型的两种使用方式,一种是 Fine…

4.Godot图片素材的获取和编辑

游戏开发中经常遇到图片素材的需求 1. 图片素材的准备 术语:Sprite 精灵,游戏开发中指一张图片来源不明的图片,切勿在商业用途使用,以免引起版权风险。 1. 在学习阶段,可以百度或者从一些资源网站获取,这…