java一个简单的管理系统
用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一个简单的管理系统的更多相关文章
- Java一个简单的贪吃蛇
Java一个简单的贪吃蛇 虽然GUI已经要淘汰了,但是手动写写界面还是有助于理解语法的,像构造函数 ,函数调用,内部类,继承,接口.有助于半初学者强化理解. 直接上代码 游戏主体类: package ...
- Java写一个简单学生管理系统
其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...
- Springmvc 一个简单的管理系统 我所遇到的坑1(持续更新)
前言 好久没有用springmvc写项目了,抽时间写一个简单的springmvc项目 是什么(what)为什么(why)怎么做(how) 1.读书破万卷下笔如有神(理清思路,知识储备和前期整理) 2. ...
- Java一个简单的线程池实现
线程池代码 import java.util.List; import java.util.Vector; public class ThreadPool { private static ...
- Java一个简单的重试工具包
在接口调用中由于各种原因,可能会重置失败的任务,使用Guava-Retrying可以方便的实现重试功能. 首先,需要引用Guava-Retrying的包 <dependency> < ...
- 基于Java的简单银行管理系统(MVC设计模式)
项目导航 功能展示 项目描述 项目结构 `data` `service` `utils` `view ` 欠缺与总结 源码下载 功能展示 本系统基于命令台窗口,暂未与图形页面结合.话不多说,先上效果图 ...
- Java一个简单的文件工具集
class FileUtils { //文件目录下文件总数目 public static int fileNumber(File dir) { int filenumber = 0; if(dir.e ...
- 一个简单的Java死锁示例(转)
在实际编程中,要尽量避免出现死锁的情况,但是让你故意写一个死锁的程序时似乎也不太简单(有公司会出这样的面试题),以下是一个简单的死锁例子,程序说明都写着类的注释里了,有点罗嗦,但是应该也还是表述清楚了 ...
- JAVA课程设计——一个简单的教务人事管理系统
大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...
随机推荐
- 关于Latch
Latch是什么 Latch是SQL Server引擎保证内存中的结构的一致性的轻量同步机制.比如索引,数据页和内部结构(比如非叶级索引页).SQL Server使用Buffer Latch保护缓冲池 ...
- hdu 4427 Math Magic
一个长了一张数学脸的dp!!dp[ i ][ s ][ t ] 表示第 i 个数,sum为 s ,lcm下标为 t 时的个数.显然,一个数的因子的lcm还是这个数的因子,所以我们的第三维用因子下标代替 ...
- [服务器运维][Minecraft服务器搭建]
参考资料: http://neekey.net/2016/02/01/%E5%A6%82%E4%BD%95%E7%94%A8%E9%98%BF%E9%87%8C%E4%BA%91ecs%E6%90%A ...
- C#中的一种按日期分文件夹的日志写法
众所周知,日志是调试程序的有效途径,有一个好的日志代码,是一个程序小猿梦寐以求的. 以下是我结合网上资源自己总结的一小段代码,请笑纳: 转载请注明来源: http://www.cnblogs.com/ ...
- 如何排版 微信公众号「代码块」之 MarkEditor
前段时间写过一篇文章 如何排版微信公众号「代码块」,讲的是如何使用浏览器插件 Markdown Here 来排版代码块.虽然用 Markdown Here 排版出来的样式还不错,但存在一个问题,就是代 ...
- Installing the Eclipse Plugin
Installing the Eclipse Plugin Android offers a custom plugin for the Eclipse IDE, called Android Dev ...
- C#.NET 各种连接字符串
C#.NET 各种连接字符串 近期连接数据库时,经常忘记连接字符串是如何的格式,现在此备注 此文章引用http://www.cnblogs.com/zhiqiang-imagine/archive/2 ...
- nginx配置文件(反向代理+集群+动静分离)
1.nginx纯反向代理配置(nginx.conf): #user nobody;worker_processes 4;error_log logs/error.log info;pid logs/n ...
- oc基础 不可变字符串的创建和使用
oc基础 不可变字符串的创建和使用 简介:下面都是字符串基本用法. 1.字符串的创建 //创建oc常量字符串 NSString *str=@"hello world!"; NSL ...
- Mybatis Generator最完整配置详解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...