用java实现的简单管理系统

运行出来的状态

实现了新增、删除、借出、归还、排行榜简单的功能!

下面是简单的代码

首先定义一个书籍类,自己打开哦!

  public class Book implements Comparable{

      String name;
String date;
boolean state;
int count; public Book(String name,boolean state,String date,int count){ this.name=name;
this.date=date;
this.state=state;
this.count=count;
}
//复写toString方法为了打印出书的具体属性
public String toString(){ if(this.state==true){
return (this.name+"\t"+"已借出"+"\t"+this.date);
}else{
return (this.name+"\t"+"可借"+"\t"+" ");
}
}
//复写equals方法为了比较对象
public boolean equals(Object obj){ Book bk=(Book)obj;
if(this.name.equals(bk.name) && this.state==bk.state){
return true;
}else{
return false;
}
// return this.name.equals(bk.name);
}
//复写了equlasf方法必须复写此方法
public int hashCode(){
return this.name.hashCode();
}
//复写compareTo方法,为对象规定排序规则
public int compareTo(Object obj){ Book bk=(Book)obj;
return bk.count-this.count; } }

定义书籍类

然后定义一个书籍管理类,自己打开哦!

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.InputMismatchException;
import java.util.ListIterator;
import java.util.Scanner; public class BookMgr { ArrayList<Book> book=new ArrayList<Book>();
public void init(){ book.add(new Book("java编程思想",true,"2016-11-20",20));
book.add(new Book("java编程核心",false,"0",25));
book.add(new Book("世界是数字的",false,"0",15));
book.add(new Book("java从入门到精通",false,"0",18));
} //操作菜单
public void startMenu() { System.out.println("*******************************");
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.println("*********************************"); Scanner input = new Scanner(System.in);
System.out.println("请输入您的操作:"); int option=0;
//捕获异常,防止输入的是字符串,而不是数字
try{
option = input.nextInt();
}catch(InputMismatchException e){
System.out.println("请输入数字,不能输入字母!");
}
switch(option){ case 1 :
addBook();
returnMenu();
break; case 2 :
searchBook();
returnMenu();
break;
case 3 :
deleteBook();
returnMenu();
break;
case 4 :
lendBook();
returnMenu();
break;
case 5 :
returnBook();
returnMenu();
break;
case 6:
Booklist();
returnMenu(); break;
case 7:
System.out.println("谢谢使用,欢迎下次在来");
break;
default:
System.out.println("输入异常,请重新输入");
returnMenu();
break;
} } //切换菜单
public void returnMenu() {
System.out.println("**************************************");
System.out.println("输入0返回:");
Scanner input = new Scanner(System.in); int option=1;
//捕获异常,防止输入的是字符串,而不是数字
try{
option = input.nextInt();
}catch(InputMismatchException e){
System.out.println("请输入数字,不能输入字母!");
} if(option == 0){ //在此进入菜单切换
startMenu();
}else { System.out.println("输入异常,请重新输入");
// 递归调用。
returnMenu();
}
} //新增书籍
public void addBook(){ System.out.println("*************欢迎进入添加页面**************");
System.out.println("请输入您要添加的书籍:");
Scanner input = new Scanner(System.in);
String name = input.next();
//新增书籍对象
book.add(new Book(name,false,"0",0)); System.out.println("恭喜您,添加书籍《"+name+"》成功了!");
} //查看书籍
public void searchBook(){
System.out.println("************欢迎进入查看页面**************");
System.out.println("序号\t名称\t\t状态\t借出时间\t");
//通过迭代器遍历
ListIterator<Book> it = book.listIterator();
int i=1;
while(it.hasNext()){
System.out.println(i+"\t"+it.next());
i++;
} } //删除书籍
public void deleteBook(){
System.out.println("************欢迎进入删除页面**************");
System.out.println("请输入您要删除的书籍名称:");
Scanner input = new Scanner(System.in);
String name = input.next(); for(int i=0;i<book.size();i++){
//根据书名和借出状态啦删除书籍,借出的就不能删除了
if(book.contains(new Book(name,false,"0",0))){ book.remove(new Book(name,false,"0",0));
System.out.println("删除《"+name+"》成功!");
return; }else if(book.contains(new Book(name,true,"0",0))){ System.out.println("此书已借出,不能删除!");
return;
}else{ System.out.println("没有找到此书!");
return;
}
}
} //借书
public void lendBook(){
System.out.println("************欢迎进入借书页面************");
System.out.println("请输入您要借的书籍名称:");
Scanner input = new Scanner(System.in);
String name = input.next(); for(int i=0;i<book.size();i++){ //根据书名和借出状态是判断是否可借
if(book.contains(new Book(name,false,"0",0))){
System.out.println("请输入您借书的时间格式(yyyy-MM-dd):"); String date=input.next();
//能找到输入的书籍就返回索引
int index=book.indexOf(new Book(name,false,"0",0));
//通过索引获取输入的书
Book book2=book.get(index);
//获取借书的次数使之加1
int num=book2.count+1;
//更新书 的状态
book.set(index,new Book(name,true,date,num));
System.out.println("恭喜您,租借《"+name+"》成功!");
return; }else if(book.contains(new Book(name,true,"0",0))){ System.out.println("此书已借出,没有第二本了哦!");
return;
}else{ System.out.println("没有找到此书!");
return;
}
}
} //归还书籍
public void returnBook(){
System.out.println("************欢迎进入归还书籍页面******************");
System.out.println("请输入归还书籍的名称:");
Scanner input = new Scanner(System.in);
double price = 0.0;
String name = input.next(); for(int i=0;i<book.size();i++){
if(book.contains(new Book(name,true,"0",0))){ System.out.println("请输入您归还书籍的时间(格式:yyyy-MM-dd):"); //能找到输入的书名就返回索引
int index=book.indexOf(new Book(name,true,"0",0));
//通过索引获取输入的书
Book book2=book.get(index);
//获取书籍借出去的时间
String date1=book2.date;
//获取书借出去的次数,借的时候已加1,所归还不需要加1了
int num=book2.count;
//获取时间差,为了计算租金
int time=charge(date1,input.next());
price=time*2;
//通过索引更新书的状态
book.set(index,new Book(name,false,"0",num));
System.out.println("恭喜您,《"+name+"》归还成功,您应付"+price+"元!");
return;
}else if(book.contains(new Book(name,false,"0",0))){ System.out.println("此书还没借出,您走错地方了吧!");
return;
}else{ System.out.println("没有找到此书!");
return;
}
}
}
//做时间差
public int charge(String date1,String date2){ //将string转为Date做计算
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
int time=0;
try{
Date d1=sd.parse(date1);
Date d2=sd.parse(date2);
//返回的时间是毫秒
time=(int)((d2.getTime()-d1.getTime())/(1000*24*60*60)); }catch(ParseException e){
System.out.println(e);
} return time;
} //排行榜
public void Booklist(){ System.out.println("***********欢迎进入书籍排行榜**********"); //为了排行榜的排序不影响正常的排序,所以重新创建个集合把book的元素添加到
//新的集合,如果不这样,正常的排序也会按排行榜的排序来排序
ArrayList bk=new ArrayList();
bk.addAll(book); //通过Collections工具类排序,因为对象不具备排序功能,所以复写了compareTo方法
Collections.sort(bk); System.out.println("序号\t名称\t\t状态\t借出时间\t");
ListIterator<Book> it = bk.listIterator();
int i=1;
while(it.hasNext()){
System.out.println(i+"\t"+it.next());
i++;
}
}
}

书籍管理类

只是一些日常的学习哦,不喜勿愤!

java一个简单的管理系统的更多相关文章

  1. Java一个简单的贪吃蛇

    Java一个简单的贪吃蛇 虽然GUI已经要淘汰了,但是手动写写界面还是有助于理解语法的,像构造函数 ,函数调用,内部类,继承,接口.有助于半初学者强化理解. 直接上代码 游戏主体类: package ...

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

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

  3. Springmvc 一个简单的管理系统 我所遇到的坑1(持续更新)

    前言 好久没有用springmvc写项目了,抽时间写一个简单的springmvc项目 是什么(what)为什么(why)怎么做(how) 1.读书破万卷下笔如有神(理清思路,知识储备和前期整理) 2. ...

  4. Java一个简单的线程池实现

    线程池代码 import java.util.List; import java.util.Vector; public class ThreadPool  {     private static  ...

  5. Java一个简单的重试工具包

    在接口调用中由于各种原因,可能会重置失败的任务,使用Guava-Retrying可以方便的实现重试功能. 首先,需要引用Guava-Retrying的包 <dependency> < ...

  6. 基于Java的简单银行管理系统(MVC设计模式)

    项目导航 功能展示 项目描述 项目结构 `data` `service` `utils` `view ` 欠缺与总结 源码下载 功能展示 本系统基于命令台窗口,暂未与图形页面结合.话不多说,先上效果图 ...

  7. Java一个简单的文件工具集

    class FileUtils { //文件目录下文件总数目 public static int fileNumber(File dir) { int filenumber = 0; if(dir.e ...

  8. 一个简单的Java死锁示例(转)

    在实际编程中,要尽量避免出现死锁的情况,但是让你故意写一个死锁的程序时似乎也不太简单(有公司会出这样的面试题),以下是一个简单的死锁例子,程序说明都写着类的注释里了,有点罗嗦,但是应该也还是表述清楚了 ...

  9. JAVA课程设计——一个简单的教务人事管理系统

    大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...

随机推荐

  1. Smart ——jiaoyou模板

    <!--{foreach $vip_data as $key=>$volist}-->    <!--{if $key==0 ||$key==1||$key==5||$key= ...

  2. 谷歌Cartographer学习(2)-原理阐述与源码解析

    最近终于写完了毕业论文.想仔细研究下Cartographer.无奈自己学识有限,先看下网上大牛的解析,作一个汇总. 一.泡泡机器人原创专栏-cartographer理论及实践浅析 http://mp. ...

  3. feel倍儿爽

    今天装的360,在卸载就要权限,在自己的电脑卸载360还要权限,真是一物降一物,安装了个牛逼的卸载软件就卸载了

  4. OpenCV——Haar-like特征

    Haar-like特征--即Haar特征,是计算机视觉领域一种常用的特征描述算子.它最早用于人脸描述. 目前常用的Haar-like特征可以分为以下几类:线性特征.边缘特征.点特征(中心特征).对角线 ...

  5. [poj2449]Remmarguts' Date(spfa+A*)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Remmarguts' Date Time Limit: 4000MS   Mem ...

  6. 一个数n的最大质因子

    #include<cstdio> #include<cmath> using namespace std; #define Max(x, y) (x > y ? x : ...

  7. 退出ssh,程序继续运行的解决办法

    对Unix.Linux类服务器维护经常是通过ssh完成的,而有些操作执行时间较长,如:更新程序.文件备份.软件编译安装等.此时如果断开ssh连接的话,更新程序就会随之被中断.如何保证断开ssh后仍旧能 ...

  8. 使用xml及java代码混合的方式来设置图形界面

    参考<疯狂android讲义>第2版2.1节 设置android的图形界面有三种方法: 1.使用纯xml文件 2.使用纯java,代码臃肿复杂,不建议使用 3.使用xml与java混合,前 ...

  9. javascript 执行顺序详解

    JavaScript是一种描述 型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解javaScript 语言的运行机制,或者简 ...

  10. 使用dict和set

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. d = {'Michael': 95, ...