package com.view;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.TrayIcon.MessageType;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.JTableHeader;
import com.beans.books_tb;
import com.biz.Books_tbBiz;
import com.commom.MyAdapter;
public class MyFrame extends MyAdapter {
Container c;
JTable table;
Vector<String> cols = new Vector<String>(); // 表列
Vector<Vector<String>> rows = new Vector<Vector<String>>(); // 表行
JTableHeader header;
JScrollPane jsp;
JPanel jp1, jp2;
JButton jb1, jb2, jb3, jb4, jb6, jb7;
JLabel jl1, jl2;
JTextField jtf1, jtf2, jtf3;
int currentPageID;// 当前页数
int pageNum;// 每页条数
int pageCount; // 总页数
int totalCount; // 总条数
Books_tbBiz bb = new Books_tbBiz();
/**
* 表示用户输入的待查询字符串
*/
String str;
/**
* 表示要查询的字段名
*/
String str1;
/**
* 表示选中的搜索状态,这里设置默认值为0.
*/
int numState = 0;
public MyFrame() {
super("图书检索系统", 1000, 300, 3, false);
c = this.getContentPane();
c.setLayout(new BorderLayout());
jp1 = new JPanel(new BorderLayout());
cols.add("ID");
cols.add("书名");
cols.add("分类");
cols.add("语言");
cols.add("详细信息");
cols.add("封面图片");
cols.add("书籍简介");
table = new JTable(rows, cols);
header = table.getTableHeader();
jp1.add(header, BorderLayout.NORTH);
jp1.add(table, BorderLayout.CENTER);
jsp = new JScrollPane(jp1);
c.add(jsp, BorderLayout.CENTER);
jb1 = new JButton("书名检索");
jb2 = new JButton("上一页");
jb3 = new JButton("下一页");
jb4 = new JButton("分类检索");
jb6 = new JButton("语言检索");
jb7 = new JButton("检索无结果,点此重新开始");
jtf1 = new JTextField(5); // 书名检索
jtf2 = new JTextField(5); // 分类检索
jtf3 = new JTextField(5); // 语言检索
jl1 = new JLabel();
jl2 = new JLabel();
jp2 = new JPanel();
jp2 = new JPanel();
jp2.add(jtf1);
jp2.add(jb1);
jp2.add(jtf2);
jp2.add(jb4);
jp2.add(jtf3);
jp2.add(jb6);
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jl1);
jp2.add(jl2);
jp2.add(jb7);
c.add(jp2, BorderLayout.SOUTH);
// 初始化显示为第一页,且每页为20条记录
showTable(1, 20);
// 注册监听
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jb6.addActionListener(this);
jb7.addActionListener(this);
}
/**
* 程序入口
*
* @param args
*/
public static void main(String[] args) {
new MyFrame().setVisible(true);
String msg = "( ^_^ ) 欢迎使用图书检索系统!\n\n这里的检索方式是分开写的 o(╯□╰)o\n\n+++++++++++++++++++++++++++++++++++++检索方法+++++++++++++++++++++++++++++++++\n①.根据初始显示的书名、分类、语言,可以上下翻页查看下大概有些什么\n②.然后可以在对应的书名检索、分类检索、语言检索前面的输入框输入关键字,然后点击按钮检索\n③.每种检索结果都可以用上一页、下一页翻页\n\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";
JOptionPane.showMessageDialog(new MyFrame(), msg);
}
/**
* 显示table表格的数据。 默认会显示第二页。 每次调用都清空上次表格中的数据,并刷新表格。
*
* @param currentPageID
* 表示当前页数
* @param pageNum
* 表示当前页容量
*/
public void showTable(int currentPageID, int pageNum) {
// 获得总条数
int totalCount = bb.getCount();
// 算出总页数
int pageCount = totalCount % pageNum == 0 ? totalCount / pageNum
: totalCount / pageNum + 1;
// 获取当前页要显示到表格的数据
ArrayList<books_tb> currentUserList = bb.getPageInfor(currentPageID,
pageNum);
// 清空行集合
rows.clear();
// 遍历当前页,并添加数据到可变数组vector中,然后添加到行集合rows中
for (books_tb b : currentUserList) {
Vector<String> v = new Vector<String>();
v.add(b.getId() + "");
v.add(b.getTitle());
v.add(b.getSort());
v.add(b.getLan());
v.add(b.getDetails());
v.add(b.getImg_id());
v.add(b.getIntro());
rows.add(v);
}
// 刷新table表
table.updateUI();
// 下面两行一定要指明,否则监听里面调用showTable()会出错,因为全局变量有同名的,这里为后面指定是访问此方法里面的这个变量
this.currentPageID = currentPageID;
this.pageNum = pageNum;
this.pageCount = pageCount;
jl1.setText("当前第" + currentPageID + "页 " + "/");
jl2.setText("总共" + totalCount + "条记录");
}
/**
* 书名搜索并显示到表格
*
* @param currentPageID
* @param str
* 表示用户输入的待查询字符串
* @param str1
* 表示要查询的字段名
* @param pageNum
*/
public int[] showTable(int currentPageID, String str, String str1,
int pageNum) {
// 定义返回的int[],长度为2
int[] returnInt = new int[2];
// 获得总条数
int totalCount = bb.getCount(str, str1);
// 算出总页数
int pageCount = totalCount % pageNum == 0 ? totalCount / pageNum
: totalCount / pageNum + 1;
// 获取当前页要显示到表格的数据
ArrayList<books_tb> currentUserList = bb.getPageInfor(currentPageID,
str, str1, pageNum);
// 清空行集合
rows.clear();
// 遍历当前页,并添加数据到可变数组vector中,然后添加到行集合rows中
if (currentUserList != null) {
for (books_tb b : currentUserList) {
Vector<String> v = new Vector<String>();
v.add(b.getId() + "");
v.add(b.getTitle());
v.add(b.getSort());
v.add(b.getLan());
v.add(b.getDetails());
v.add(b.getImg_id());
v.add(b.getIntro());
rows.add(v);
}
}
// 刷新table表
table.updateUI();
// 下面两行一定要指明,否则监听里面调用showTable()会出错,因为全局变量有同名的,这里为后面指定是访问此方法里面的这个变量
this.currentPageID = currentPageID;
this.pageNum = pageNum;
this.pageCount = pageCount;
jl1.setText("当前第" + currentPageID + "页 " + "/");
jl2.setText("总共" + totalCount + "条记录");
int n = str1.length();
returnInt[0] = n;
returnInt[1] = pageCount;
return returnInt;
}
/**
* 遍历返回值int[] returnInt
*
* @param returnInt
* @return
*/
public int getReturnInt(int[] returnInt) {
return returnInt[1];
}
/**
* 按钮点击监听事件
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb1) {// 书名搜索
int[] returnInt = showTable(1, jtf1.getText(), "title", pageNum);
numState = bb.returnState("title");
if (getReturnInt(returnInt) == 0) {
JOptionPane.showMessageDialog(new MyFrame(),
"没有查询到哦 o(╯□╰)o \n请重新输入!");
}
}
if (e.getSource() == jb2) {// 上一页
switch (numState) {
case 5:
if (getReturnInt(showTable(1, jtf1.getText(), "title", pageNum)) != 0) {
showTable(currentPageID - 1 < 1 ? 1 : currentPageID - 1,
jtf1.getText(), "title", pageNum);
}
break;
case 4:
if (getReturnInt(showTable(1, jtf2.getText(), "sort", pageNum)) != 0) {
showTable(currentPageID - 1 < 1 ? 1 : currentPageID - 1,
jtf2.getText(), "sort", pageNum);
}
break;
case 3:
if (getReturnInt(showTable(1, jtf3.getText(), "lan", pageNum)) != 0) {
showTable(currentPageID - 1 < 1 ? 1 : currentPageID - 1,
jtf3.getText(), "lan", pageNum);
}
break;
default:
showTable(currentPageID - 1 < 1 ? 1 : currentPageID - 1,
pageNum);
break;
}
}
if (e.getSource() == jb3) {// 下一页
switch (numState) {
case 5:
if (getReturnInt(showTable(1, jtf2.getText(), "sort", pageNum)) != 0) {
showTable(currentPageID + 1 > pageCount ? pageCount
: currentPageID + 1, jtf1.getText(), "title",
pageNum);
}
break;
case 4:
if (getReturnInt(showTable(1, jtf2.getText(), "sort", pageNum)) != 0) {
showTable(currentPageID + 1 > pageCount ? pageCount
: currentPageID + 1, jtf2.getText(), "sort",
pageNum);
}
break;
case 3:
if (getR
没有合适的资源?快使用搜索试试~ 我知道了~
Matlab实现图书管理系统
共30个文件
jpg:10个
class:6个
java:6个
5星 · 超过95%的资源 需积分: 20 8 下载量 152 浏览量
2022-11-15
09:21:26
上传
评论
收藏 716KB RAR 举报
温馨提示
两个用户种类分别为管理员和读者;管理员执行图书管理包括图书目/图书信息的更改/录入、为读者办理借书/还书/预约、统计管理的任务(图书借出频率、损耗情况等); 主登录界面major:身份(读者/管理员)的选择确定登录界面,账号+密码+身份缺一不可(读者(管理员)无法进入管理员(读者)界面)否则给出错误提示!登录后密码区自动置为“password” 操作:身份+账号+密码-》登录(exp:reader001 --001) 读者界面readerface:进入后显示读者信息(ID、电话、姓名、Email、借书状况),并可进行图书查询;在查询界面下可通过信息输入(图书标示,ISBN号、词组、出版社等)对目标书籍进行搜索 图书过期,给予警示: 借书额满,给予提示: 单击查询,进入查询界面search: 管理员界面guardee:进入分系统进行任务处理,单击“显示”出现个人信息 图书管理process:对新书的书目信息/图书信息进行修改/录入 借阅管理post:办理借书、还书、预定的任务 图书信息统计stat: 2.出
资源推荐
资源详情
资源评论
收起资源包目录
BookRetrieval-master.rar (30个子文件)
BookRetrieval-master
bin
com
beans
books_tb.class 2KB
dao
books_tbDao.class 3KB
biz
Books_tbBiz.class 2KB
view
MyFrame.class 9KB
commom
DBhelper.class 3KB
MyAdapter.class 1KB
db.properties 134B
imgs
image001.jpg 23KB
image005.jpg 22KB
image008.jpg 18KB
image002.jpg 37KB
image009.jpg 22KB
image003.jpg 12KB
image004.jpg 21KB
image010.jpg 16KB
image007.jpg 9KB
image006.jpg 9KB
src
com
beans
books_tb.java 1KB
dao
books_tbDao.java 2KB
biz
Books_tbBiz.java 2KB
view
MyFrame.java 9KB
commom
MyAdapter.java 747B
DBhelper.java 2KB
db.properties 134B
.project 372B
bolobpros.sql 75KB
.classpath 303B
.gitignore 649B
.gitattributes 378B
libs
mysql-connector-java-5.0.8-bin.jar 528KB
共 30 条
- 1
资源评论
- 陈游泳2023-07-28这个文件的图书管理系统设计合理,操作简单明了,非常适合初学者使用。
- VashtaNerada2023-07-28这个文件的代码编写规范,结构清晰,易于阅读和理解,方便用户进行二次开发。
- 书看不完了2023-07-28这个文件提供了一个简洁而实用的Matlab图书管理系统,使图书管理变得更加高效。
- MsingD2023-07-28这个文件的Matlab图书管理系统提供了良好的用户界面,界面设计简洁大方,使用起来非常舒适。
- 学习呀三木2023-07-28这个文件的Matlab图书管理系统功能齐全,可以帮助用户轻松管理和查询图书信息。
程序画家
- 粉丝: 131
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- DrawDB 是一个健壮且用户友好的数据库实体关系 (DBER) 编辑器,直接位于您的浏览器中
- PHP库通过返回原始SQL来实现ActiveRecord 用于PHP5.3和NO PDO场景的yii2 ORM移植
- 5152单片机proteus仿真和源码用数组作函数参数控制流水花样
- 2024年全域电商矩阵109节线上课-课程网盘链接提取码下载 .txt
- 对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查,基于 FMDB, 操作基于 model
- 5152单片机proteus仿真和源码用函数型指针控制P1口灯花样
- 对Hibernate框架的二次封装,简化对数据库的操作
- 5152单片机proteus仿真和源码用定时器T1查询方式控制单片机发出1KHz音频
- 由 Top10 开发和使用的惯用 Scala Redis 客户端 这是一项正在进行的工作,虽然在生产中使用,但应将其视为在生产中
- SwiftUI - SceanAppDelegate
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功