java实现简易的图书馆管理系统
比较适合新手练手的一个简易项目
直接上源码
Book
package code;
/**
* @author ztr
* @version 创建时间:2021年3月4日 下午8:21:40
* 类说明
*/
public class Book {
private String name;
private String author;
private double price;
private String type;
// 有参构造器
public Book(String name, String author, double price, String type) {
super();
this.name = name;
this.author = author;
this.price = price;
this.type = type;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
} }
Cuser
package code; import java.util.Iterator;
import java.util.List;
import java.util.Scanner; /**
* @author ztr
* @version 创建时间:2021年3月4日 下午8:32:15 类说明
*/
public class Cuser extends User {
Scanner sc = new Scanner(System.in);
public Cuser(String name, String sex, int age) {
super(name, sex, age);
}
// 查找书籍
@Override
public void serach(List<Book> LibraryBookDate) {
// Scanner sc = new Scanner(System.in);
System.out.println("请输入你想要查询的书籍名称");
String name = sc.next();
for (int i = 0; i < LibraryBookDate.size(); i++) {
if (name != null) {
if (LibraryBookDate.get(i).getName().equals(name)) {
System.out.println("查询成功");
System.out.println(LibraryBookDate.get(i).getName() + " "
+ LibraryBookDate.get(i).getAuthor() + " "
+ LibraryBookDate.get(i).getPrice() + " "
+ LibraryBookDate.get(i).getType());
}
} else {
System.out.println("没有此书");
}
} }
//遍历图书
@Override
public void display(List<Book> LibraryBookDate) {
// 使用lambda表达式
Iterator<Book> it = LibraryBookDate.iterator();
while (it.hasNext()) {
// 因为it.next()返回的是object类型所以需要进行类型强转
Book book = (Book) it.next();
System.out.println(book.getName() + " " + book.getAuthor() + " "
+ book.getPrice() + " " + book.getType());
}
}
//借阅书籍
@Override
public void borrow(List<Book> LibraryBookDate) {
// Scanner sc = new Scanner(System.in);
System.out.println("请输入你想要借阅的书籍书名:");
String name = sc.next();
// 获取集合的迭代器
Iterator<Book> it = LibraryBookDate.iterator();
while (it.hasNext()) {
Book book = (Book) it.next();
if (book.getName().equals(name)) {
System.out.println(book.getName() + " " + book.getAuthor()
+ " " + book.getPrice() + " " + book.getType());
UserBookDate.userdateBooks.add(book);
it.remove();
} else {
System.out.println("没有该书籍");
}
} }
// 归还书籍
public void revert(List<Book> LibraryBookDate){
// Scanner sc = new Scanner(System.in);
System.out.println("请输入需要归还的书籍:");
String name = sc.next();
Iterator<Book> it = UserBookDate.userdateBooks.iterator();
while(it.hasNext()){
Book book = (Book)it.next();
if(book.getName().equals(name)){
it.remove();
LibraryBookDate.add(book);
}
} }
}
LibraryBookDate
package code; import java.util.ArrayList;
import java.util.List; /**
* @author ztr
* @version 创建时间:2021年3月4日 下午9:21:13
* 类说明
*/
public class LibraryBookDate {
static List<Book> LibraryBookDate = new ArrayList<Book>(); }
Menu
ackage code; import java.util.Scanner; /**
* @author ztr
* @version 创建时间:2021年3月6日 下午4:28:07 类说明
*/
public class Menu {
public void menuRuser() {
Ruser ruser = new Ruser("ztr", "man", 20);
System.out.println("1.查阅书籍" + "/n" + "2.遍历书籍" + "/n" + "3.删除书籍"
+ "4.添加书籍" + "5.返回上一层");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
switch (n) { case 1:
ruser.serach(LibraryBookDate.LibraryBookDate);
menuRuser();
break;
case 2:
ruser.display(LibraryBookDate.LibraryBookDate);
menuRuser();
break;
case 3:
ruser.borrow(LibraryBookDate.LibraryBookDate); menuRuser();
break;
case 4:
ruser.insert(LibraryBookDate.LibraryBookDate);
menuRuser();
break;
case 5:
menu();
break;
default:
System.out.println("请重新输入:");
menuRuser();
break;
}
sc.close();
} public void menuCuser() {
Cuser cuser = new Cuser("x", "man", 10);
System.out.println("1.查阅书籍" + "/n" + "2.遍历书籍" + "/n" + "3.借阅书籍"
+ "4.归还书籍" + "5.返回上一层");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
switch (n) { case 1:
cuser.serach(LibraryBookDate.LibraryBookDate);
menuCuser();
break;
case 2:
cuser.display(LibraryBookDate.LibraryBookDate);
menuCuser();
break;
case 3:
cuser.borrow(LibraryBookDate.LibraryBookDate);
menuCuser();
break;
case 4:
cuser.revert(LibraryBookDate.LibraryBookDate);
menuCuser();
break;
case 5:
menu();
break;
default:
System.out.println("请重新输入:");
menuCuser();
break;
}
sc.close();
} public void menu() {
System.out.println("====图书馆管理系统===");
System.out.println("1.用户 2.管理员 3.退出");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
switch (n) {
case 1:
menuCuser();
break;
case 2:
menuRuser();
case 3:
break;
default:
System.out.println("请重新输入");
break;
}
sc.close();
} }
Operate
package code; import java.util.List; /**
* @author ztr
* @version 创建时间:2021年3月4日 下午8:25:01
* 类说明
*/
public interface Operate {
public void serach(List<Book> LibraryBookDate);
public void display(List<Book> LibraryBookDate);
public void borrow(List<Book> LibraryBookDate);
}
Ruser
package code; import java.util.Iterator;
import java.util.List;
import java.util.Scanner; /**
* @author ztr
* @version 创建时间:2021年3月6日 下午3:56:25 类说明
*/
public class Ruser extends User {
Scanner sc = new Scanner(System.in);
public Ruser(String name, String sex, int age) {
super(name, sex, age);
} // 查找书籍
@Override
public void serach(List<Book> LibraryBookDate) {
// Scanner sc = new Scanner(System.in);
System.out.println("请输入你想要查找的书籍书名:");
String name = sc.next();
// 获取集合的迭代器
Iterator<Book> it = LibraryBookDate.iterator();
while (it.hasNext()) {
Book book = (Book) it.next();
if (book.getName().equals(name)) {
System.out.println(book.getName() + " " + book.getAuthor()
+ " " + book.getPrice() + " " + book.getType());
UserBookDate.userdateBooks.add(book);
} else {
System.out.println("没有该书籍");
}
} } // 遍历图书
@Override
public void display(List<Book> LibraryBookDate) {
// 使用lambda表达式
Iterator<Book> it = LibraryBookDate.iterator();
while (it.hasNext()) {
// 因为it.next()返回的是object类型所以需要进行类型强转
Book book = (Book) it.next();
System.out.println(book.getName() + " " + book.getAuthor() + " "
+ book.getPrice() + " " + book.getType());
}
} // 删除图书
@Override
public void borrow(List<Book> LibraryBookDate) {
// Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除书籍的书名:");
String name = sc.next();
// 获取集合的迭代器
Iterator<Book> it = LibraryBookDate.iterator();
while (it.hasNext()) {
Book book = (Book) it.next();
if (book.getName().equals(name)) {
System.out.println(book.getName() + " " + book.getAuthor()
+ " " + book.getPrice() + " " + book.getType());
it.remove();
} else {
System.out.println("没有该书籍");
}
}
} // 添加图书
public void insert(List<Book> libraryBookDate) {
// Scanner sc = new Scanner(System.in);
System.out.println("请依次输入锁添加书籍的信息:1.书名2.作者3价格4类型");
String name = sc.next();
String author = sc.next();
double price = sc.nextDouble();
String type = sc.next();
Book book = new Book(name, author, price, type);
libraryBookDate.add(book); }
}
User
package code;
/**
* @author ztr
* @version 创建时间:2021年3月4日 下午8:24:46
* 类说明
*/
public abstract class User implements Operate{
private String name;
private String sex;
private int age; public User(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }
UserBookDate
package code; import java.util.ArrayList;
import java.util.List; /**
* @author ztr
* @version 创建时间:2021年3月6日 下午2:07:20
* 类说明
*/
public class UserBookDate {
static List<Book> userdateBooks = new ArrayList<Book>();
}
Test
package code;
/**
* @author ztr
* @version 创建时间:2021年3月6日 下午4:47:25
* 类说明
*/
public class Test {
public static void main(String[] args){
Menu menuone = new Menu();
menuone.menu();
}
}
Fileio
package FileIo; 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.util.Iterator; import code.Book;
import code.LibraryBookDate; /**
* @author ztr
* @version 创建时间:2021年3月6日 下午9:29:18 类说明
*/
public class Fileio {
public void fileread() {
// 创建字符缓冲流对象
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("src/book.txt")); String line;
while ((line = br.readLine()) != null) {
// 把读取到的字符串数据存储到集合中
String[] strArray = line.split(" ");
String name = strArray[0];
String author = strArray[1];
double price = Double.parseDouble(strArray[2]);
String type = strArray[3];
// 创建书本对象
Book book = new Book(name, author, price, type);
LibraryBookDate.LibraryBookDate.add(book);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {// 写文件是会有IO异常
// TODO: handle exception
e.printStackTrace();
} finally {
// 为了保障close一定执行
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} public void filewrite() {
// 创建输出缓冲流对象
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("src/book.txt"));
// 遍历集合
Iterator<Book> iterator = LibraryBookDate.LibraryBookDate
.iterator();
while (iterator.hasNext()) {
Book book = (Book) iterator.next();
bw.write(book.getName() + " ");
bw.write(book.getAuthor() + " ");
bw.write(String.valueOf(book.getPrice()) + " ");
bw.write(book.getType() + " ");
bw.newLine();
// 强制数据输出
bw.flush();
}
} catch (FileNotFoundException e) {
// TODO: handle exception
} catch (IOException e) {
e.printStackTrace();
// TODO: handle exception
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
}
功能非常简单,但可以自己进行功能的扩展
java实现简易的图书馆管理系统的更多相关文章
- Java写一个简单学生管理系统
其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...
- 图书馆管理系统 SRS文档
图书馆管理系统 SRS文档 编写人:魏晓 日期:2015年05月27日 1介绍 1.1编写目的 图书管理系统需求规格说明书是为了让系统的涉众就该系统的需求达成一致认可,明确该系统的需求,为后续的开发工 ...
- 图书馆管理系统SRS
1.任务概述 1.1目标 主要提供图书信息和读者基本信息的维护以及借阅等功能.本系统是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学.合理的规划,系统.高效的实施. 1 ...
- Microsoft-pubs(图书馆管理系统)-数据库设计
ylbtech-DatabaseDesgin:微软提供-pubs(图书馆管理系统)-数据库设计 1.A,数据库关系图 1.B,数据库设计脚本 -- ======================== ...
- Android应用源码图书馆管理系统带服务端数据库
本项目是一套基于安卓的图书馆管理系统,包括jsp服务端源码,安卓客户端源码和mysql数据库.代码比较简单,供学习anroid与j2ee交互.例如Sqlite的使用.安卓客户端与jsp的web服务端的 ...
- MDA系统分析实战--图书馆管理系统
MDA系统分析实战--图书馆管理系统 本文通过MDA系统分析方法,对图书馆管理系统进行分析,简要叙述系统分析的一般过程.首先,简要介绍什么是MDA:MDA(Model-Driven Architect ...
- Java 小样例:图书馆课程设计(Java 8 版)
用 Java 模拟一个图书馆.包含创建图书.创建读者.借书.还书.列出全部图书.列出全部读者.列出已借出的图书.列出过期未还的图书等功能. 每一个读者最多仅仅能借 3 本书,每一个书最多仅仅能借 3 ...
- Java课程设计——学生成绩管理系统(201521123003 董美凤)
Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...
- C++ 文件操作(简易的学籍管理系统)
这是一个简易的学籍管理系统,大一时居然三个人写了一千多行......年少无知啊!欢迎摘果实! 1 #include <iostream> #include <fstream> ...
随机推荐
- cs实时系统之网关设计
今天给大家讲一下client-server系统(cs)设计,基本结构 1.client 客户端,插件式开发,负责对应ui的展示 2.gateway 网关层,管理客户端通信连接,负载后端集群服务 3.s ...
- vue & this.$route & this.$router
vue & this.\(route & this.\)router const User = { template: '<div>User</div>' } ...
- sass文件编译(.scss->.css),使用ruby环境,在windows10,koala工具,Error: Invalid GBK character "\xE5"
1 注意事项: 问题描述: 请确保 Encoding.default_external = Encoding.find('utf-8') 是uft-8 编码! sass文件编译时候使用ruby环境,在 ...
- js array flat all in one
js array flat all in one array flat flatMap flatMap > flat + map https://developer.mozilla.org/en ...
- mongodb & vue & node.js
mongodb mongodb & vue & node.js https://docs.mongodb.com/manual/tutorial/install-mongodb-on- ...
- Scratch & Flappy Turtle & Flappy Bird & Game
Scratch & Flappy Turtle & Flappy Bird & Game Flappy Turtle Game https://scratch.mit.edu/ ...
- leetcode bug & 9. Palindrome Number
leetcode bug & 9. Palindrome Number bug shit bug "use strict"; /** * * @author xgqfrms ...
- DOM & Shadow DOM & Virtual DOM
DOM & Shadow DOM & Virtual DOM What is the difference between Shadow DOM and Virtual DOM? ht ...
- 聚焦 2021 NGK 新加坡区块链技术峰会,探讨DeFi未来新生态!
2021年1月31日14时,备受行业关注的"2021 NGK 新加坡区块链技术峰会"如期举行.本次峰会由NGK官方主办,以"DeFi"为主题,探讨了区块链技术革 ...
- NDB程序进近复飞保护区的绘制
终于有点空闲,找张图来演练一下<风螺旋标准模板>软件的用法. 某机场NDB进近程序剖面图如下图所示: 该机场采用了近台和远台的双台布局,近台和远台均为NDB与指点标的合装台,没有中间进近定 ...