大家好,今天给大家带来本人的自主编写的简易版【图书借阅系统】,权当做个人的实战练习和学习作品!老师说过三分看,七分练!

成果展示:


一、设计需求

请设计一个图书借阅系统,实现图书信息的展示,借阅,还书等功能。

二、设计构思

1、用SchoolBook的借口来实现,定义一个抽象的Led_Books方法。
2、分别用三个借书、还书、查看已借的书的类来implements借口,再使用借口回调。
3 、CountBooks类用于输入输出图书信息。
4、BookList单链表也用作保存图书编号。
5、主菜单类方法Menu,持续调用Choose类方法。
6、插入系统实时时间!

三、设计关键

1、Choose类方法的构建

对于类方法 Choose的构建,其实也是最为关键的一个部分,因为涉及了对于各部分模块的直接调用,以及对于操作指令的处理,遇到很多的bug和慢慢也被我解决了。
并且这部分代码相对来说,比较冗长,可能是我还没有完全适应oop编程。

2、 Menu类方法的实现

菜单Menu类方法的实现,相对简单,主要是每次都要对Choose的调用。

3、单链表的运用

目前对于单链表的运用我只是出于一个比较浅层的运用,就是简单的输入输出链表数据。

package Program_1.JavaList;public class BookList
{Node head=null;public void add_head(int data)//添加头节点{Node node =new Node(data);node.next=head;head=node;}public void Print()//打印链表{Node A_Node=head;while(A_Node!=null){System.out.println("该书编号为:"+A_Node.data);A_Node=A_Node.next;}}public void addLast(int data)//添加尾节点{Node node =new Node(data);Node temp =head;while (temp.next!=null){temp=temp.next;}temp.next=node;}public int  length()//链表长度{Node node=head;int length=0;while(node!=null){length++;node=node.next;}return length;}public void Insertdata(int index ,int data){Node node=new Node(data);if(index==0||index>length()){System.out.println("插入失败!");return;}Node temp=head;int length=0;while (temp.next!=null){length ++;temp=temp.next;if(index==length) {node.next=temp.next;temp.next=node;return;}}}

四、代码附录

1、main方法

package Program_1;
import Program_1.JavaList.*;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;public class Week4_New {public static void main(String[] args) {Menu();}public static  void Menu() {Choose choose=new Choose();System.out.println("\t\t【<图书借阅系统>】\t\t");System.out.println("\n");System.out.println("\t\t||①我要借书||");System.out.println("\t\t||②我借的书||");System.out.println("\t\t||③归还借书||");System.out.println("\t\t||④退    出||\n");Date date = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("\t\tyyyy-MM-dd :hh:mm:ss");System.out.println((dateFormat.format(date)));choose.Choose();}public  static class Choose{UseIt use = new UseIt();static CountBooks count=new CountBooks();public  void  Choose() {System.out.println("输入您要进行的操作:\n");Scanner usage = new Scanner(System.in);switch (usage.nextInt()) {case 1: {use.UseIt(new Books_info());int x=use.UseIt(new Led__Books());count.Input(x);System.out.println("您借的是:"+count.Booksname[x-1]);int res;do {res = JOptionPane.showConfirmDialog(null, "是否继续借书?","提示", JOptionPane.YES_NO_OPTION);if (res == JOptionPane.YES_OPTION) {int y=use.UseIt(new Led__Books());count.Input(y);System.out.println("您借的是:"+count.Booksname[y-1]);}}while (res == 0);Menu();}break;case 2:{if (count.Booksnumbers== 0) {System.out.println("您还未借任何书!");Menu();break;}count.Output();}Menu();case 3:{if(count.Booksnumbers<=0){System.out.println("您还未借任何书!");Menu();break;}int i=0;int x=use.UseIt(new Return__Books());while(i<10){if(count.BooksId[i]==x){System.out.println(count.BooksId[i] + "成功归还!");count.Clear(i);break;}else if(i==9&&count.BooksId[i]!=x){System.out.println("输入编号错误!");break;}i++;}int res;do {res = JOptionPane.showConfirmDialog(null, "是否继续还书?","提示", JOptionPane.YES_NO_OPTION);if (res == JOptionPane.YES_OPTION) {if(count.Booksnumbers==0){System.out.println("书已经全部还清!");break;}int k=0;int y = use.UseIt(new Return__Books());while (k <10) {if (count.BooksId[k] == y) {System.out.println(count.BooksId[k] + "成功归还!");count.Clear(k);break;}else if(k==9&&count.BooksId[k]!=y){System.out.println("输入编号错误!");break;}k++;}}}while(res==0);Menu();}case 4:{System.out.println("\t\t正在退出系统——");System.out.println("\t\t退出成功!");System.exit(0);}}}}}interface SchoolBook {int  LedBooks();}class  Led__Books implements SchoolBook {public int LedBooks() {System.out.println("\t\t<借书>");Scanner bookname = new Scanner(System.in);System.out.println("请输入你要借的书的序号:");int  x = bookname.nextInt();System.out.println("借书成功!");return x;}}class Books_info implements SchoolBook {public int LedBooks() {System.out.println("图书馆有以下书:");System.out.println("||1、性代数线||--||5、数据结构||");System.out.println("||2、高等数学||--||6、大学物理||");System.out.println("||3、大学物理||--||7、离散数学||");System.out.println("||4、高等代数||--||8、Java课程设计||");return  0;}
}class Return__Books implements SchoolBook {public int  LedBooks() {System.out.println("输入你要归还的书的编号:");Scanner Rebooks = new Scanner(System.in);int  x= Rebooks.nextInt();return x;}
}class UseIt {public int UseIt(SchoolBook a){ return a.LedBooks(); }
}class  CountBooks {BookList account = new BookList();int []BooksNumbers=new int [10];int Booksnumbers=0;private int i=0;int []BooksId=new int [10];String[] Booksname = new String[]{"性代数线", "高等数学","大学物理", "高等代数", "数据结构","大学物理", "离散数学", "Java课程设计"};public void  Input(int a) {account.add_head(202100+a);this.BooksNumbers[i]=a;this.BooksId[i]=202100+a;this.Booksnumbers++;i++;}public void Output() {account.Print();int i=0;while(BooksNumbers[i]!=0&&Booksnumbers!=0){System.out.println(Booksname[BooksNumbers[i]-1]);i++;}System.out.println("您共借了"+Booksnumbers+"本书!");}public void Clear(int x){this.BooksNumbers[x]=0;
Booksnumbers--;}}

2、BooList单链表类

package Program_1.JavaList;public class BookList
{Node head=null;public void add_head(int data)//添加头节点{Node node =new Node(data);node.next=head;head=node;}public void Print()//打印链表{Node A_Node=head;while(A_Node!=null){System.out.println("该书编号为:"+A_Node.data);A_Node=A_Node.next;}}public void addLast(int data)//添加尾节点{Node node =new Node(data);Node temp =head;while (temp.next!=null){temp=temp.next;}temp.next=node;}public int  length()//链表长度{Node node=head;int length=0;while(node!=null){length++;node=node.next;}return length;}public void Insertdata(int index ,int data){Node node=new Node(data);if(index==0||index>length()){System.out.println("插入失败!");return;}Node temp=head;int length=0;while (temp.next!=null){length ++;temp=temp.next;if(index==length) {node.next=temp.next;temp.next=node;return;}}}/* public  void main(String []args){System.out.println("我运行了!");BookList List=new BookList();List.add_head(2);List.add_head(4);/* List.addLast(1);List.addLast(7);List.Insertdata(3,88);List.Print();}*/}
//另一个public类
package Program_1.JavaList;public class Node//节点类
{Node next =null;public int data;public Node(int data){this.data=data;}
}

【Java之简易[图书借阅系统]】戳进来看看相关推荐

  1. java计算机毕业设计图书借阅系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计图书借阅系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计图书借阅系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S架构 开 ...

  2. java计算机毕业设计图书借阅系统的设计与实现源码+系统+数据库+lw文档

    java计算机毕业设计图书借阅系统的设计与实现源码+系统+数据库+lw文档 java计算机毕业设计图书借阅系统的设计与实现源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  3. 基于JAVA图书借阅系统的设计与实现计算机毕业设计源码+系统+lw文档+部署

    基于JAVA图书借阅系统的设计与实现计算机毕业设计源码+系统+lw文档+部署 基于JAVA图书借阅系统的设计与实现计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  4. [附源码]java毕业设计图书借阅系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  5. 图书借阅java设计报告_JAVA课程设计报告图书借阅系统.pdf

    课 程 设 计 课程设计名称: java课程设计 专 业 班 级 : 计科10 级4 班 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2012.6.18-2012.6.30 计 ...

  6. Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)

    Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)

  7. java基于springboot +vue的图书馆图书借阅系统 nodejs前后端分离

    随着社会的进步,人民生活水平的提高,越来越多的人开始重视自己精神方面的提高,图书成为越来越多人的选择,随之而来的是图书馆借还图书的火热.越来越多的人开始选择读书,借阅书籍,过去传统的手工操作式的租赁方 ...

  8. Java——图书借阅系统

    ** 项目需求: ** 为图书阅览室开发一个图书借阅系统,最多可存50本书,实现图书的管理.图书借阅系统具备以下功能: 1.查看图书信息 菜单选择查看功能,展示当前所有图书的相关信息,效果如下. ca ...

  9. java javawebjsp图书借阅系统(jsp图书管理系统 )jsp书籍借阅系统

    java javawebjsp图书借阅系统(jsp图书管理系统 )jsp书籍借阅系统 protected void doGet(HttpServletRequest req, HttpServletR ...

最新文章

  1. 自定义异常类(restful api)
  2. 主从表 ajax,DWZ主从表结构 · Issue #72 · OtakuFly/dwz · GitHub
  3. PL/SQL -- 动态SQL
  4. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串 1
  5. 计算机函数select,请问关于select函数的操作程序?
  6. IdentityServer4系列 | 支持数据持久化
  7. There is no row in position 0
  8. [深度学习TF2] 梯度带(GradientTape)
  9. 24小时学会python_零基础python24小时极速入门学习
  10. android音视频指南-支持的媒体格式
  11. 李彦宏:“最后一公里”的自动驾驶会提前实现
  12. WebStorm——cocos2d-html5专用IDE
  13. 三星电视刷android,三星电视如何能够自由安装安卓应用呢
  14. Mac桌面动态壁纸Dynamic Wallpaper for Mac
  15. 测试实践:华为测试流程总结
  16. linux pci转can驱动程序,PCI转LPT并口卡驱动程序
  17. SpringMVC 406状态码
  18. C/C++ | 23-12 用指针的方法,将字符串“ABCD1234efgh”前后对调显示
  19. ENVI5.3对Landsat8 OLI影像数据进行辐射矫正、辐射定标(保姆级教程)
  20. 如何解释“我篡改了区块链”这个问题

热门文章

  1. win10定时执行python脚本实现自动订餐
  2. 献给那些浮躁的年轻人
  3. 如何阅读源代码(2)
  4. 目前主流虚拟机有哪些
  5. 前端面试题---html/css
  6. 复旦大学计算机学院入营名单,入营信息丨2019夏令营入营名单汇总(6月24日)...
  7. 【知识搬运】曼德勃罗集—“上帝指纹”
  8. Unity实现游戏场景的转换
  9. 标称数据/数值数据的相关性检验:X方和pearson系数(协方差)
  10. Java基础题——注册验证(字符串的简单运用)