1)程序提供图书馆馆藏书籍管理功能:(使用Map实现)

a.书籍信息包括书名、作者(可能多人,使用ArrayList实现)、出版社、及馆藏数量。

b.提供针对书籍书名、作者、出版社的查询功能:书名可进行模糊查询(即部分文字检索功能);作者及出版社查询可能返回多条信息结果(遍历使用迭代器实现)

c.可添加书籍(已存在的数量增加,新的书籍增加条目)

d.删除已有书籍信息。(删除书籍不能删除存在借阅情况的书籍)

2)程序提供图书馆借阅管理功能。(选作)

a.每位同学可同时借阅三本书籍(即允许一位同学借出不超过三本图书)。

b.当同学尝试借阅第四本书籍或书籍库存不足时,借阅失败。

c.当同学归还书籍时,修正同学借阅数据及馆藏书籍数据。

d.可针对学号查询某位同学的借阅情况。

3)初始数据实现。

a.初始数据可固化在程序代码中。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class test {public static void main (String args[]){ArrayList<Book> book=new ArrayList<>();ArrayList<Student> student=new ArrayList<>();Scanner sc=new Scanner(System.in);Book bk1=new Book("平凡的世界","张三","A出版社",1);Book bk2=new Book("平凡的六便士","张三","A出版社",1);Book bk3=new Book("月亮与六便士","李四","B出版社",1);Book bk4=new Book("平凡的月亮","李四","B出版社",1);Book bk5=new Book("平凡的月亮","张三,李四","B出版社",1);Student stu1=new Student(1,0);Student stu2=new Student(2,0);Student stu3=new Student(3,0);book.add(bk1);book.add(bk2);book.add(bk3);book.add(bk4);book.add(bk5);student.add(stu1);student.add(stu2);student.add(stu3);loop1:while(true){System.out.println("图书管理系统:1.书籍管理功能;2.借阅归还功能;3.退出");int option= sc.nextInt();if(option==1){loop2:while(true){System.out.println("请输入功能:1.查询书籍;2.添加书籍;3.删除书籍;4.退出");int opt=sc.nextInt();switch (opt){case 1:search(book);break;case 2:add(book);break;case 3:delete(book);break;case 4:break loop2;}}}else if(option==2){loop3:while (true){System.out.println("请输入功能:1.借阅书籍;2.归还书籍;3.查询借阅情况;4.退出");int opt= sc.nextInt();switch (opt){case 1:borrow(book,student);break;case 2:back(book,student);break;case 3:inquire(student);break;case 4:break loop3;}}}else if(option==3){break loop1;}}}public static void search(ArrayList<Book> book){Scanner sc=new Scanner(System.in);String searchContent;System.out.println("请输入需要查询的内容:1.查询书名;2.查询作者;3.查询出版社");int opt= sc.nextInt();if(opt==1){System.out.println("请输入需要查询的书名");searchContent=sc.next();//采用模糊查找Pattern pattern = Pattern.compile(searchContent);//bk用于储存查找的书籍ArrayList<Book> bk=new ArrayList<>();for(int i=0;i<book.size();i++){Matcher matcher = pattern.matcher(book.get(i).getBookName());if(matcher.find()){//bkAdd用于记录需要添加到bk中的书籍Book bkAdd=new Book(book.get(i).getBookName(),book.get(i).getEditor(),book.get(i).getPublisher(),1);bk.add(bkAdd);}}System.out.println("查询完毕,查找到的书籍为:");for (int i = 0; i < bk.size(); i++) {System.out.println(bk.get(i).getBookName()+" "+bk.get(i).getEditor()+" "+bk.get(i).getPublisher());}if(bk.size()==0){System.out.println("未查询到书籍,请重新输入");}}if(opt==2){System.out.println("请输入需要查询的作者,作者为多人时请用逗号分隔作者名");searchContent=sc.next();//bk用于储存查找的书籍ArrayList<Book> bk=new ArrayList<>();//使用迭代器Iterator<Book> it= book.iterator();while(it.hasNext()){Book bkAdd=(Book)it.next();if(bkAdd.getEditor().equals(searchContent)){bk.add(bkAdd);}}/*for (int i = 0; i < book.size(); i++) {if(book.get(i).getEditor().equals(searchContent)){//bkAdd用于记录需要添加到bk中的书籍Book bkAdd=new Book(book.get(i).getBookName(),book.get(i).getEditor(),book.get(i).getPublisher(),1);bk.add(bkAdd);}}*/System.out.println("查询完毕,查找到的书籍为:");for (int i = 0; i < bk.size(); i++) {System.out.println(bk.get(i).getBookName()+" "+bk.get(i).getEditor()+" "+bk.get(i).getPublisher());}if(bk.size()==0){System.out.println("未查询到作者,请重新输入");}}if(opt==3){System.out.println("请输入需要查询的出版社");searchContent=sc.next();//bk用于储存查找的书籍ArrayList<Book> bk=new ArrayList<>();//使用迭代器Iterator<Book> it= book.iterator();while(it.hasNext()){Book bkAdd=(Book)it.next();if(bkAdd.getPublisher().equals(searchContent)){bk.add(bkAdd);}}/*for (int i = 0; i < book.size(); i++) {if(book.get(i).getPublisher().equals(searchContent)){//bkAdd用于记录需要添加到bk中的书籍Book bkAdd=new Book(book.get(i).getBookName(),book.get(i).getEditor(),book.get(i).getPublisher(),1);bk.add(bkAdd);}}*/System.out.println("查询完毕,查找到的书籍为:");for (int i = 0; i < bk.size(); i++) {System.out.println(bk.get(i).getBookName()+" "+bk.get(i).getEditor()+" "+bk.get(i).getPublisher());}if(bk.size()==0){System.out.println("未查询到出版社,请重新输入");}}}public static void add(ArrayList<Book> book){Scanner sc=new Scanner(System.in);String bookName,editor,publisher;int index,number;Boolean flag;System.out.println("请输入书籍的书名:");bookName= sc.next();System.out.println("请输入书籍的作者,作者为多人时请用逗号分隔作者名");editor= sc.next();System.out.println("请输入书籍的出版社");publisher= sc.next();System.out.println("请输入书籍的数量");number= sc.nextInt();flag=judgeExist(book,bookName);index=getIndex(book,bookName);if(flag){System.out.println("书籍已存在,数量已增加"+number+"本");book.get(index).addNumber(number);}else{System.out.println("书籍信息已增添");Book bk=new Book(bookName,editor,publisher,number);book.add(bk);}}public static void delete(ArrayList<Book> book){Scanner sc=new Scanner(System.in);String bookName;int index;System.out.println("请输入需要删除的书籍的名称");bookName= sc.next();index=getIndex(book,bookName);System.out.println("书籍已成功删除");book.remove(index);}public static void borrow(ArrayList<Book> book,ArrayList<Student> student){Scanner sc=new Scanner(System.in);System.out.println("请输入学号");int id=sc.nextInt();System.out.println("请输入需要借阅的书名");String bookName= sc.next();for (int i = 0; i < book.size(); i++) {if(book.get(i).getBookName().equals(bookName)){if(book.get(i).getNumber()>0){if(student.get(id).borrowNumber<=3){book.get(i).subtractNumber();student.get(id).addBorrowNumber();student.get(id).setBookName(bookName);System.out.println("借阅成功,"+book.get(i).getBookName()+"还剩"+book.get(i).getNumber()+"本");System.out.println("你还能借"+(3-student.get(id).getBorrowNumber())+"本书");}else{System.out.println("借阅数量已到上限,无法借阅");}}else{System.out.println("书已被借完,无法借阅");}}}}public static void inquire(ArrayList<Student> student){Scanner sc=new Scanner(System.in);System.out.println("请输入需要查询的学生的学号");int id=sc.nextInt();Student stu=student.get(id);System.out.println("学号"+id+"已借阅"+stu.getBorrowNumber()+"本书");int n=1;for (int i = 0; i < stu.bookName.length; i++) {if(!stu.bookName[i].equals("none")){System.out.println("借阅的第"+(n++)+"本书:"+stu.bookName[i]);}}}public static void back(ArrayList<Book> book,ArrayList<Student> student){Scanner sc=new Scanner(System.in);System.out.println("请输入学号");int id=sc.nextInt();System.out.println("请输入需要归还的书名");String bookName= sc.next();for (int i = 0; i < book.size(); i++){if(book.get(i).getBookName().equals(bookName)){book.get(i).add();student.get(id).subtractBorrowNumber();student.get(id).deleteBookName(bookName);System.out.println("归还成功,"+book.get(i).getBookName()+"还剩"+book.get(i).getNumber()+"本");System.out.println("你还能借"+(3-student.get(id).getBorrowNumber())+"本书");}}}//查询书籍是否存在,存在则返回truepublic static Boolean judgeExist(ArrayList<Book> book,String bookName){Iterator<Book> it=book.iterator();while(it.hasNext()){if(it.next().getBookName().equals(bookName)){return true;}}return false;}//获取存储书籍的序列号public static int getIndex(ArrayList<Book> book,String bookName){Iterator<Book> it=book.iterator();int index=-1;while(it.hasNext()){index++;if(it.next().getBookName().equals(bookName)){return index;}}return -1;}
}
public class Student {int id;int borrowNumber;String[] bookName={"none","none","none"};int n=0;public Student(int id, int borrowNumber) {this.id = id;this.borrowNumber = borrowNumber;}public Student() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getBorrowNumber() {return borrowNumber;}public void setBorrowNumber(int borrowNumber) {this.borrowNumber = borrowNumber;}//以下为借阅归还时方法public void addBorrowNumber(){this.borrowNumber++;}public void subtractBorrowNumber(){this.borrowNumber--;}public void setBookName(String name){bookName[n++]=name;}public void deleteBookName(String name){for (int i = 0; i < bookName.length; i++) {if(bookName[i].equals(name)){bookName[i]="none";}}}
}
public class Book {String bookName;String editor;String publisher;int number;public Book(){}public Book(String bookName,String editor,String publisher,int number){this.bookName = bookName;this.editor = editor;this.publisher = publisher;this.number = number;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getEditor() {return editor;}public void setEditor(String editor) {this.editor = editor;}public String getPublisher() {return publisher;}public void setPublisher(String publisher) {this.publisher = publisher;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public void addNumber(int number){this.number=this.number+number;}//以下为借阅归还时方法public void subtractNumber(){this.number--;}public void add(){this.number++;}
}

图书馆馆藏书籍管理功能相关推荐

  1. 网上书城的登录注册及书籍管理功能

    登录注册及书籍管理功能 登录注册 实体类 dao包 web包 书籍管理 实体类 dao包 web包 mvc.xml的配置 界面代码及效果 界面代码 样式 界面效果 登录注册 登录注册所需要用的的实体类 ...

  2. 【JAVA项目实战】【图书管理系统】书籍管理功能【Servlet】+【JSP】+【MySql】+【Ajax】

  3. SSM项目图书馆管理系统,适合新人练手和毕设参考,功能首页展示 系统注册登录登出 用户管理 权限控制管理 书籍管理 图书借阅管理 个人借阅记录管理 书籍详细信息展示等

    图书馆管理系统,系统采用B/S架构 系统采用框架:java+maven+stringboot+mybatis+mysql-plus+boostart(前端界面) 首页展示 内容后台管理 菜单权限管理 ...

  4. 网上书城—登录、书籍管理

    前言: 登录模块涉及到的功能在jsp的时候其实就已经有写到过了,这边就不做过多的讲解代码意思了. 管理员模块,这边主要是书籍管理模块,涉及到了最基础增删改查. 目录 一.登录模块 1.主要功能: 2. ...

  5. 强大、优秀的文件管理软件评测:图片管理、书籍管理、文献管理

    对于各种形形色色的效率生活人士而言,笔记管理和文件管理是建立自己知识管理系统的永恒主题. 笔记管理 针对笔记管理,推荐使用康奈尔笔记法.一元笔记法. 渐进式归纳法.常青笔记法等笔记方法.而关于笔记管理 ...

  6. JAVA 图书馆的书籍管理程序

    请设计并实现一个图书馆的书籍管理程序,要求提供方便的图形界面实现图书信息的录入/修改/删除功能.图书的信息至少包括:图书的编号.书名.类型.作者.价格.出版目期.出版社.购入日期.借阅人等.要求可以浏 ...

  7. XenMobile 8.7对iOS7.1 企业级MDM管理功能带来哪些扩展?

    在最新发布的iOS版本中,苹果继续推进企业迄需的管理功能.iOS7引入了一套令CIO砰然心动的企业级管理功能.让我们快速浏览一下. 善用这些功能,能创建一些有吸引力的企业用例.CIO们,设想一下: 1 ...

  8. idea 报系统分区磁盘不足_系统磁盘管理功能讲解,电脑硬盘分区格式化修改驱动器号图文教程...

    大家好,我是老盖,感谢观看本篇文章,本文做的也有视频,也可以看我发布的视频. 今天给大家讲一下系统自带的磁盘管理管理功能,磁盘管理比较常用的是硬盘分区,格式化和更改驱动器号这几个功能. 对着计算机点右 ...

  9. Chrome现在也能编辑pdf文件了!64位安卓版上线,网页加载快10%,还有良心标签管理功能...

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 全世界最多人在用的Chrome浏览器,今天更新了. 版本号:Chrome 85. 增加一系列标签管理功能,还自带PDF编辑器,并且提升10 ...

最新文章

  1. python协程详解_对Python协程之异步同步的区别详解
  2. window.onload和$(document).ready()区别很大……
  3. 50个常用元器件图片_50个最常用的英语短语(一),值得收藏!
  4. 速看|万豪数据泄漏门再敲警钟 酒店集团7步安全建议
  5. Springboot @Value获取配置文件中的值失效
  6. sqlserver大数据表操作慢_架构师必看!操作日志系统搭建秘技
  7. RecyclerView(六)设置下拉刷新
  8. Sublime配置java运行环境
  9. 互联网进入智慧互联时代 CSS将推进行业安全生态建设
  10. MySQL 索引详解大全
  11. 第四、五周学习进度表
  12. 【比赛游记】NOI2019打铁记
  13. “临沂公众号推广平台”的操作流程是怎样的?
  14. bootstrap-datetimepicker时间控件
  15. 2010年研究生答案Q278046046
  16. 统计学习方法——知识点(1)经验分布
  17. 2023西湖论剑wirteup
  18. 教程1-简易飞机大战-第二节
  19. 【 bzoj 4355 】 Play with sequence - 线段树乱搞
  20. 头条搜索战百度:进攻性放手,危机并存

热门文章

  1. [巩固培元]Python文件操作案例——用户登录
  2. C++调用Python及间接调用Python三方库
  3. MATLAB车道线识别
  4. 用 RNN 建立语言模型
  5. Scratch编程-画图模块13【寿光市青少年创意编程大赛真题】
  6. php redis 操作
  7. EA将向内政及手机游戏开辟商供应发行办事
  8. 外包项目开发课程整理一:SDLC传统系统开发生命周期7个阶段
  9. 家有妙招:教你一个在淘宝买东西打折的好方法
  10. SpringBoot集成OAuth2.0有新方案了