package ZTLJQ;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
//图书馆类
public class Library {
// 图书所有图书的集合
private Set<Books> books = new HashSet<Books>();
// 图书馆所有会员用户
private Set<Students> stus = new HashSet<Students>();
Library() {
// 初始化图书和会员
initBooks();
initStudents();
}
// 初始化所有的图书
private void initBooks() {
Books b1 = new Books("b0001", "三国", "罗贯中", "北京出版社", 100);
Books b2 = new Books("b0002", "西游记", "吴承恩", "北京出版社", 50);
Books b3 = new Books("b0003", "水浒", "施耐庵", "北京出版社", 80);
Books b4 = new Books("b0004", "红楼梦", "曹雪芹", "北京出版社", 200);
// 把图书添加到集合里
books.add(b1);
books.add(b2);
books.add(b3);
books.add(b4);
}
// 初始化所有会员用户
private void initStudents() {
Students s1 = new Students("s0001", "张三");// 管理员
Students s2 = new Students("s0002", "李四");
Students s3 = new Students("s0003", "王五");
Students s4 = new Students("s0004", "赵六");
// 把会员添加到会员集合
stus.add(s1);
stus.add(s2);
stus.add(s3);
stus.add(s4);
}
//添加用户
public void addUser(String s) {
// 不重复即可添加
boolean result = checkUser(s);
if (result == false) {
// 分解然后添加到现有集合里边
String[] arrStr = s.split("-");
Students s1 = new Students(arrStr[0],arrStr[1]);
stus.add(s1);
System.out.println("添加用户成功");
} else {
System.out.println("已有此会员,不能重复添加!");
}
/*String[] arrStr = s.split("-");
for (Students stu2 : stus) {
if (stu2.getSid().equals(arrStr[0]) || stu2.getName().equals(arrStr[1])) {
System.out.println(stu2.getSid()+"-"+stu2.getName()+"用户已存在");
}else {
Students s1 = new Students(arrStr[0],arrStr[1]);
System.out.println(arrStr[0]+"-"+arrStr[1]+"用户添加成功");
}
}*/
}
//查询会员
public Students findBySId(String bid) {
for (Students s : stus) {
if (s.getSid().equals(bid)) {
return s;
}
}
return null;
}
//删除用户
public void removeUser(String bid) {
Students b = findBySId(bid);
stus.remove(b);
System.out.println("删除会员成功");
}
public void addBooks(String input) {
// 不重复即可添加
boolean result = checkBook(input);
if (result == false) {
// 分解然后添加到现有集合里边
String[] arrStr = input.split("-");
Books tmp = new Books(arrStr[0], arrStr[1], arrStr[2], arrStr[3], Integer.parseInt(arrStr[4]));
books.add(tmp);
System.out.println("添加图书成功");
} else {
System.out.println("书库已有此数,不能重复添加!");
}
}
public void removeBooks(String bid) {
Books b = findById(bid);
books.remove(b);
System.out.println("删除图书成功");
}
// 修改图书信息——需要图书id和修改后的图书信息
public void modifyBooks(String bid, String input2) {
// 检查是否存在id和书名相同的图书
boolean result = checkBook(input2);
// 如果没有
if (result == false) {
// 则分解然后添加到现有集合里边
String[] arrStr = input2.split("-");
// 遍历书库
for (Books b : books) {
if (b.getBid().equals(bid)) {
b.setBid(arrStr[0]);
b.setName(arrStr[1]);
b.setAuthor(arrStr[2]);
b.setPress(arrStr[3]);
b.setName(arrStr[4]);
}
}
System.out.println("修改图书信息成功");
} else {
System.out.println("书库已有此数,请重新修改信息!");
}
}
// 单个查询图书——通过id返回一个图书对象
public Books findById(String bid) {
for (Books b : books) {
if (b.getBid().equals(bid)) {
return b;
}
}
return null;
}
// 全查图书
public void queryAllBooks() {
// 遍历输出所有的图书
for (Books b : books) {
System.out.println(b);
}
}
// 查询图书数量——馆存数
public int queryBooksNumByBook(Books b) {
int num = -1;
for (Books temp : books) {
if (temp.getBid().equals(b.getBid())) {
num = temp.getNumber();
return num;
}
}
return num;
}
// 通过学号查会员——检验会员是否存在于集合中
public Students queryStudentsBySid(String sid) {
// 遍历会员集合
for (Students s : stus) {
if (s.getSid().equals(sid)) {
return s;
}
}
return null;
}
// 这个还书借书,我是参考网上的例子,经过多次修改才弄好的。
// 借书
public void lendBooks(Books b, Students s) {
Scanner in = new Scanner(System.in);
int num;
System.out.println("请输入借书的数量:");
num = in.nextInt();
if (queryBooksNumByBook(b) != -1) {
if (num > queryBooksNumByBook(b)) {
System.out.println("借书数量大于馆藏数量,借书失败!");
return;
} else {
// 找到要借的图书
Books temp = findById(b.getBid());
// 从集合中移走
books.remove(temp);
// 把数量减一
temp.setNumber(temp.getNumber() - num);
// 刷新集合中的数据
books.add(temp);
// 添加到放书的书包里
s.lendBooks(b, num);
System.out.println("借书成功!");
return;
}
}
}
// 还书
public void returnBooks(Books b, Students s) {
Scanner in = new Scanner(System.in);
int num;
System.out.println("请输入还书的数量:");
num = in.nextInt();
if (s.getBooksNumByBook(b) != -1) {
if (num > s.getBooksNumByBook(b)) {
System.out.println("还书数量大于借书数量,还书失败!");
return;
} else if (num == s.getBooksNumByBook(b)) {
Books temp = findById(b.getBid());
books.remove(temp);
temp.setNumber(temp.getNumber() + num);
books.add(temp);
// 还一本
s.returnBooks(b);
System.out.println("还书成功!");
} else {
Books temp = findById(b.getBid());
books.remove(temp);
temp.setNumber(temp.getNumber() + num);
books.add(temp);
// 还多本
s.returnBooks(b, num);
System.out.println("还书成功!");
}
}
}
// 校验输入图书和已有的图书是否相同
public boolean checkBook(String s) {
// 比较书号和书名
boolean flag = false;// 默认为不相同——可以增加此图书
String[] arrStr = s.split("-");
for (Books tmp : books) {
// 比较如果有其中一个相同
if (tmp.getBid().equals(arrStr[0]) || tmp.getName().equals(arrStr[1])) {
// 设置flag为true
flag = true;
}
}
return flag;
}
//校验输入会员和已有的会员是否相同
public boolean checkUser(String s) {
// 比较书号和书名
boolean flag = false;// 默认为不相同——可以增加此图书
String[] arrStr = s.split("-");
for (Students tmp : stus) {
// 比较如果有其中一个相同
if (tmp.getSid().equals(arrStr[0]) || tmp.getName().equals(arrStr[1])) {
// 设置flag为true
flag = true;
}
}
return flag;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java图书管理系统(超级完善、功能非常齐全、代码量十足)
共4个文件
java:4个
需积分: 0 0 下载量 114 浏览量
2023-06-18
17:43:29
上传
评论 2
收藏 5KB RAR 举报
温馨提示
整个代码共4个文件:Books、Library、LibrarySystem、Students 包括下面介绍的功能 对象-oriented编程:代码中定义了LibrarySystem类和Library类,并通过创建它们的对象来实现图书馆管理系统的功能。 控制台输入输出:使用Scanner类从控制台获取用户输入,并使用System.out.println语句在控制台显示信息,以与用户进行交互。 控制台输入输出:使用Scanner类从控制台获取用户输入,并使用System.out.println语句在控制台显示信息,以与用户进行交互。 方法封装和模块化设计:将不同功能的代码块封装成方法,提高了代码的可读性和可维护性。例如menu()方法用于显示主菜单,main()方法是程序的入口,各个case语句对应不同的功能。 数据封装:类中使用私有属性和公共的getter和setter方法来封装学生的编号(sid)、姓名(name)以及借阅的图书(lendBooks)信息。这样可以控制属性的访问和修改,并提供了对属性的安全操作。 集合类的使用:使用了Java的HashMap来存储会员借阅的图书信息。
资源推荐
资源详情
资源评论
收起资源包目录
ZTLJQ.rar (4个子文件)
ZTLJQ
Library.java 6KB
LibrarySystem.java 6KB
Books.java 1KB
Students.java 2KB
共 4 条
- 1
资源评论
ZTLJQ
- 粉丝: 6299
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功