热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

java控制台输出图书馆管理系统

这篇文章主要为大家详细介绍了java控制台输出图书馆管理系统,只用java代码不用数据库和GUI等,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

java控制台输出图书馆管理系统(只用java代码不用数据库和GUI,java入门的新手秒懂)

在个项目中,我只用数组保存数据,和只用for循环和if条件语句来完成,连数组工具类都没用,所以导致要用到很多的条件语句,虽然比较局限,但可以让新手快速体验一下做小项目的乐趣,也可以练练for和if这些语句,练练一下它们之间嵌套的逻辑关系等,因为时间有限所以没有去优化了,主要还是让新手们体验下做java项目的面向对象编程思想(OOP),给新手们体验一下做项目的乐趣,嘿嘿!

话不多说了,直接切入正题。

设计思路如下图:

首先用eclipse建立包和类(为了简单明了我的项目结构设计如下):

//在UserData.java里边输入以下代码

package com.jiaxun.library.data;
 
public class UserData {
 private String username = "小询";//用户名
 private String password = "zengjiaxun";//密码
 public String getUser() {
 return username;
 }
 public String getPassword() {
 return password;
 }
 
}

//在BookData.java中输入以下代码

package com.jiaxun.library.data;
 
 
public class BookData {
 //书库
 public BookData() {
 {
 String noreaders= "无";
 for (int i = 0; i 

//在Bo.java中输入以下代码

package com.jiaxun.library.bo;
 
import java.util.Scanner;
 
import com.jiaxun.library.data.BookData;
import com.jiaxun.library.data.UserData;
 
public class Bo {
 public static BookData book = new BookData();
 UserData user = new UserData();
 // 管理员登录验证
 public int login(String username, String password) {
 if (username.equals(user.getUser())) {
 if (password.equals(user.getPassword())) {
 return 1;// 账号和密码验证通过
 } else {
 return 0;// 密码错误
 }
 } else {
 return -1;// 账号不存在
 }
 }
 /*
 * 菜单功能展示列表
 * 
 * 图书信息展示功能
 */
 public void showBook() {
 System.out.println("本图书馆共有" + (book.booknames.length - remainSpace()) + "本书");
 int a = bookinfo();
 if (a == 0) {
 // 展示所有图书信息
 showAll();
 } else if (a > 0 && a <= book.booknames.length) {
 // 展示相关图书信息
 showPart(a);
 } else {
 System.out.println("输入的编号不合法!");
 showBook();
 }
 }
 // 展示所有图书信息
 public void showAll() {
 for (int i = 0; i =0,无返-1
 int a = selectIndex(bookname);
 // 馆里有此书
 if (a >= 0) {
 if ((book.borrowreaders[a].equals("无") || book.borrowreaders[a].equals("")))// 无人借此书,""为扫描器的直接回车值
 return 0;//未借
 else
 return 1;//已借
 } else {
 return -1;// 馆里没有此书
 }
 
 }
 //将借阅者设置为无或者为空
 public void setBorrowReader(String bookname){
 int a = selectIndex(bookname);
 book.borrowreaders[a]="无";
 }
 //查询指定书的借阅者
 public String getBorrowReader(String bookname){
 int a = selectIndex(bookname);
 return book.borrowreaders[a];
 }
 
 //书籍借阅功能
 public void borrow(String bookname,String readername){
 int a = selectBook(bookname);
 book.borrowreaders[a]=readername;
 }
}

//在LibraryUI.java中输入以下代码

package com.jiaxun.library.ui;
 
import java.util.Scanner;
 
import com.jiaxun.library.bo.Bo;
 
public class LibraryUI {
 
 Bo bo = new Bo();
 
 public static void main(String[] args) {
 LibraryUI ui = new LibraryUI();
 ui.welcome();// 欢迎界面
 
 }
 
 // 欢迎界面
 public void welcome() {
 System.out.println("*********************************");
 System.out.println("********小☆询图书馆管理系统********");
 System.out.println("*********************************");
 loginBoundary();// 登录界面
 }
 
 // 管理员登录界面
 public void loginBoundary() {
 System.out.print("管理员账号:");
 Scanner scanner = new Scanner(System.in);
 String username = scanner.nextLine();
 System.out.print("登 录 密 码 :");
 Scanner scanner1 = new Scanner(System.in);
 String password = scanner1.nextLine();
 int flag = bo.login(username, password);// 登录验证
 switch (flag) {
 case 0:// 密码错误
 System.out.println("密码错误,请重新输入。");
 loginBoundary();
 break;
 
 case 1:// 验证通过
 System.out.println("登录成功!");
 showMenu();// 登录成功后跳转至菜单功能管理
 break;
 case -1:// 账户不存在
 System.out.println("您输入的管理员账号不存在,请确认后再输入。");
 loginBoundary();
 break;
 }
 }
 
 // 菜单功能展示列表
 public void showMenu() {
 System.out.println("请输入功能编号进入相应的功能:");
 System.out.println("所有的图书信息——编号:1");
 System.out.println("录入新的书籍——编号:2");
 System.out.println("修改书籍基本信息——编号:3");
 System.out.println("删除书籍功能——编号:4");
 System.out.println("还书功能——编号:5");
 System.out.println("书籍借阅功能——编号:6");
 System.out.println("退出系统——编号:7");
 System.out.print("请输入功能编号:");
 Scanner scanner = new Scanner(System.in);
 int a = scanner.nextInt();//
 switch (a) {
 case 1:// 图书信息
 showBook();
 returnMethod();// 返回主菜单
 break;
 case 2:// 录入新书籍
 addBook();
 break;
 case 3:// 修改书籍基本信息
 modBookInfo();
 break;
 case 4:// 删除书籍
 delete();
 break;
 case 5:// 还书
 returnBook();
 break;
 case 6:// 借阅
 borrowBook();
 break;
 case 7:// 退出登录
 welcome();
 scanner.close();
 break;
 }
 }
 
 // 返回主菜单功能
 public void returnMethod() {
 System.out.print("按下ENTER键返回到功能主菜单:");
 Scanner scanner = new Scanner(System.in);
 String i = scanner.nextLine();
 showMenu();
 }
 
 // 图书信息展示功能
 public void showBook() {
 bo.showBook();
 }
 
 // 录入新书籍功能
 public void addBook() {
 System.out.print("请输入要增加的书籍名称:");// 书名
 Scanner scanner = new Scanner(System.in);
 String bookname = scanner.nextLine();
 System.out.print("请输入" + bookname + "的作者:");// 作者
 Scanner scanner1 = new Scanner(System.in);
 String author = scanner1.nextLine();
 System.out.print("请输入" + bookname + "的出版日期(格式如2000-01-01):");// 出版日期
 Scanner scanner2 = new Scanner(System.in);
 String pubdate = scanner2.nextLine();
 System.out.print("请输入" + bookname + "的总页数(页):");// 总页数
 Scanner scanner3 = new Scanner(System.in);
 String sumpagination = scanner3.nextLine();
 int flag = bo.addBook(bookname, author, pubdate, sumpagination);
 // 1为成功,0为图书馆已经存在该新书,-1为仓库爆满
 switch (flag) {
 case 1:
 System.out.println("新书籍" + bookname + "添加成功,目前图书馆还有" + bo.remainSpace() + "个位置可以存放新书籍。");
 returnMethod();// 书籍添加界面中的返回功能,可选择继续添加或者回到主菜单
 break;
 case 0:
 System.out.println("添加书籍失败," + bookname + "已存在该图书馆中!");
 returnMethod();// 书籍添加界面中的返回功能,可选择继续添加或者回到主菜单
 break;
 case -1:
 System.out.println("添加失败,图书馆已经存储量已经爆满了,请删除部分书籍后再进行添加。");
 showMenu();
 break;
 }
 }
 
 // 修改书籍信息
 public void modBookInfo() {
 System.out.print("请输入您要操作的书名:");
 Scanner scanner = new Scanner(System.in);
 String bookname = scanner.nextLine();
 // 根据书名查找相关的书籍信息
 int flag = bo.selectBook(bookname);
 switch (flag) {
 case 0:
 System.out.print("未找到相关书籍,输入0回车进入该层功能,输入1回车返回到功能主菜单。");
 int a = scanner.nextInt();
 if (a == 0) {
 modBookInfo();
 } else if (a == 1) {
 
 showMenu();
 }
 break;
 
 case -1:
 System.out.println("书名为空,输入0回车进入该层功能,输入1回车返回到功能主菜单。");
 int a1 = scanner.nextInt();
 if (a1 == 0) {
 modBookInfo();
 } else {
 showMenu();
 }
 break;
 
 case 1:
 System.out.print("以上信息为相关书名查找的结果,其中(数字“1”代表书名,数字“2”代表作者,数字“3”代表出版日期,数字“4”代表总页数,数字“5”代表借阅者)输入相关数字可以修改相关信息:");
 int a2 = scanner.nextInt();// 1书名 2作者 3出版日期 4总页数 5借阅者
 if (a2 > 0 && a2 <6) {
 System.out.print("请输入您想修改的" + sortName(a2) + ":");
 Scanner scanner2 = new Scanner(System.in);
 String value = scanner2.nextLine();
 int index = bo.selectIndex(bookname);
 bo.modinfo(a2, value, index);
 System.out.println(bookname + "这本书的相关信息修改成功!");
 returnMethod();
 } else {
 System.out.println("您输入的数字不合法。请重试!");
 modBookInfo();
 }
 
 break;
 
 }
 }
 
 // 修改的分类名称
 public String sortName(int flag) {
 if (flag == 1)
 return "书名";
 if (flag == 2)
 return "作者";
 if (flag == 3)
 return "出版日期";
 if (flag == 4)
 return "总页数";
 else
 return "借阅者";
 }
 
 // 删除书籍功能
 public void delete() {
 System.out.print("请输入要被删除的书名:");
 Scanner scanner = new Scanner(System.in);
 String bookname = scanner.nextLine();
 int flag = bo.testReader(bookname);
 // 存在此书并无人借
 if (flag == 0) {
 bo.deleteBook(bookname);
 System.out.println(bookname + "已从图书馆成功移除!输入0回到主菜单,输入1则继续删除");
 delReturn();
 } else if (flag == 1) {// 有人借
 System.out.println("此书已借出,请等待归还后再删除。输入0回到主菜单,输入1则继续删除");
 delReturn();
 } else {// 不存在此书
 System.out.println("本馆不存在此书,请仔细较对。输入0回到主菜单,输入1则继续删除");
 delReturn();
 }
 
 }
 
 // 删除的返回操作
 public void delReturn() {
 
 Scanner scanner1 = new Scanner(System.in);
 int i = scanner1.nextInt();
 if (i == 0) {
 showMenu();
 } else if (i == 1) {
 delete();
 }
 }
 
 // 还书功能
 public void returnBook() {
 System.out.print("请输入要还的书籍名称:");
 Scanner scanner = new Scanner(System.in);
 String bookname = scanner.nextLine();
 int flag = bo.testReader(bookname);
 if (flag == 0) {
 System.out.println(bookname + "暂未借出。");
 System.out.print("输入0回车返回至主菜单,输入其他键则继续还书");
 String a = scanner.nextLine();
 if(a.equals("0")){
 showMenu();
 }else {
 returnBook();
 }
 } else if (flag == -1) {
 System.out.println(bookname + "不存在该图书馆中。");
 System.out.print("输入0回车返回至主菜单,输入其他键则继续还书");
 String a = scanner.nextLine();
 if(a.equals("0")){
 showMenu();
 }else {
 returnBook();
 }
 } else if (flag == 1) {
 
 System.out.println(bo.getBorrowReader(bookname) + "已经还书成功!");
 bo.setBorrowReader(bookname);
 System.out.print("输入0回车返回至主菜单,输入其他键则继续还书");
 String a = scanner.nextLine();
 if(a.equals("0")){
 showMenu();
 }else {
 returnBook();
 }
 }
 }
 
 // 书籍借阅功能
 public void borrowBook() {
 System.out.print("请输入要借的书名:");
 Scanner scanner = new Scanner(System.in);
 String bookname = scanner.nextLine();
 int flag = bo.testReader(bookname);
 switch (flag) {
 case 0://存在此书并无人借的情况
 
 System.out.println("请输入借阅者的名字:");
 String readername = scanner.nextLine();
 bo.borrow(bookname,readername);
 System.out.println(readername+"从该图书馆里借出了以"+bookname+"为名的书籍。");
 System.out.print("输入0回车返回至主菜单,输入1回车则继续借书:");
 int a0 = scanner.nextInt();
 if(a0==0)
  showMenu();
 if(a0==1)
  borrowBook();
 break;
 
 case 1://存在此书被借的情况
 System.out.println("借书失败," + bookname + "已被借!");
 System.out.print("输入0回车返回至主菜单,输入1回车则继续借书:");
 int a = scanner.nextInt();
 switch (a) {
 case 0:
 showMenu();
 break;
 
 case 1:
 borrowBook();
 break;
 
 }
 case -1://不存在此书的情况
 System.out.println("借书失败," + bookname + "不存在该图书馆中。");
 System.out.print("输入0回车返回至主菜单,输入1回车则继续借书:");
 int a1 = scanner.nextInt();
 switch (a1) {
 case 0:
 showMenu();
 break;
 
 case 1:
 borrowBook();
 break;
 
 }
 }
 }
}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 使用J2SE模拟MVC模式开发桌面应用程序的工程包的介绍
    以我开发过的一个娱乐管理系统为例:下图为我系统的业务逻辑的MVC流程:下图为以Eclipse开发中各包的说明:转载于:https:blog ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 模块化区块链生态系统的优势概述及其应用案例
    本文介绍了相较于单体区块链,模块化区块链生态系统的优势,并以Celestia、Dymension和Fuel等模块化区块链项目为例,探讨了它们解决可扩展性和部署问题的方案。模块化区块链架构提高了区块链的可扩展性和吞吐量,并提供了跨链互操作性和主权可扩展性。开发人员可以根据需要选择执行环境,并获得奖学金支持。该文对模块化区块链的应用案例进行了介绍,展示了其在区块链领域的潜力和前景。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • 本文介绍了常用的编辑器快捷键,包括快速转换编辑器、浏览选项卡、提取本地变量和方法、编辑器窗口最大化等功能。通过使用这些快捷键,可以提高编辑器的使用效率,减少复杂度,并提升代码的可测试性。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 【具体报错信息】ErrorparsingD:\android-sdks\system-images\android-22\android-wear\armeabi-v7a\devi ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 20209测试通过:eclipse安装svn插件
    网址不能用了,新的办法参考:https:quantum6.blog.csdn.netarticledetails117250800下载了最新的ecli ... [详细]
author-avatar
手机用户2502895231
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有