比较适合新手练手的一个简易项目

直接上源码

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实现简易的图书馆管理系统的更多相关文章

  1. Java写一个简单学生管理系统

    其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...

  2. 图书馆管理系统 SRS文档

    图书馆管理系统 SRS文档 编写人:魏晓 日期:2015年05月27日 1介绍 1.1编写目的 图书管理系统需求规格说明书是为了让系统的涉众就该系统的需求达成一致认可,明确该系统的需求,为后续的开发工 ...

  3. 图书馆管理系统SRS

    1.任务概述 1.1目标 主要提供图书信息和读者基本信息的维护以及借阅等功能.本系统是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学.合理的规划,系统.高效的实施. 1 ...

  4. Microsoft-pubs(图书馆管理系统)-数据库设计

    ylbtech-DatabaseDesgin:微软提供-pubs(图书馆管理系统)-数据库设计   1.A,数据库关系图 1.B,数据库设计脚本 -- ======================== ...

  5. Android应用源码图书馆管理系统带服务端数据库

    本项目是一套基于安卓的图书馆管理系统,包括jsp服务端源码,安卓客户端源码和mysql数据库.代码比较简单,供学习anroid与j2ee交互.例如Sqlite的使用.安卓客户端与jsp的web服务端的 ...

  6. MDA系统分析实战--图书馆管理系统

    MDA系统分析实战--图书馆管理系统 本文通过MDA系统分析方法,对图书馆管理系统进行分析,简要叙述系统分析的一般过程.首先,简要介绍什么是MDA:MDA(Model-Driven Architect ...

  7. Java 小样例:图书馆课程设计(Java 8 版)

    用 Java 模拟一个图书馆.包含创建图书.创建读者.借书.还书.列出全部图书.列出全部读者.列出已借出的图书.列出过期未还的图书等功能. 每一个读者最多仅仅能借 3 本书,每一个书最多仅仅能借 3 ...

  8. Java课程设计——学生成绩管理系统(201521123003 董美凤)

    Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...

  9. C++ 文件操作(简易的学籍管理系统)

    这是一个简易的学籍管理系统,大一时居然三个人写了一千多行......年少无知啊!欢迎摘果实! 1 #include <iostream> #include <fstream> ...

随机推荐

  1. Github markdown页面内跳转

    基本操作: 请看这里 最典型的就是[alt_content](#jump) 但有时, jump是不太好直接看出来的, 比如下面这个标题, 格式复杂, 那如何获取相应的jump呢? 在Github中, ...

  2. Promise.allSettled & Promise.all & Promise.race & Promise.any All In One

    Promise.allSettled & Promise.all & Promise.race & Promise.any All In One new Promise(), ...

  3. serverless & front end

    serverless & front end Cloud Functions or Functions as a Service (FaaS) https://serverless.css-t ...

  4. how to convert SVG shapes to polygon

    how to convert SVG shapes to polygon 如何将 svg 的 rect 转换成 polygon rect.circle.ellipse.line.polyline.po ...

  5. 详解稳定币圣杯USDN

    稳定币飞速发展,USDN 一骑绝尘,但因合规问题饱受质疑.合规稳定币作为后来者,奋起直追,亦光耀夺目.而更符合区块链精神的稳定币(抵押其他资产生成稳定币),长期以来只有 Maker 的 DAI 能够在 ...

  6. django学习-16.返回给前端页面数据为json数据类型的3种方案

    目录结构 1.前言 2.JsonResponse类的源码简单分析 2.1.JsonResponse类的源码如下所示 2.2.JsonResponse类的构造函数里的每个入参的大概含义和作用 3.[方案 ...

  7. [转]ROS学习笔记十一:ROS中数据的记录与重放

    本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录数据(创建一个bag文件) 首先运行小海龟例程 ...

  8. Java并发之CompletionService详解

    CompletionService是什么? 它是JUC包中的一个接口类,默认实现类只有一个ExecutorCompletionService. CompletionService干什么的? 它将异步任 ...

  9. 运行maven遇到的坑,差点崩溃了。

    参考链接1:https://blog.csdn.net/lch_cn/article/details/8225448/ 参考链接2:https://jingyan.baidu.com/article/ ...

  10. SpringBoot2.x整合JavaMail以qq邮箱发送邮件

    本文参考spring官网email接口文档所写. spring-email官方网址:https://docs.spring.io/spring/docs/5.1.8.RELEASE/spring-fr ...