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语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...
随机推荐
- hdu 5311 Hidden String(find,substr)
Problem Description Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a str ...
- web前端之 JS
JavaScript概述 JavaScript是一门编程语言,简称js,由浏览器编译并运行,JS说白了就是让页面能够动起来 js存在形式 1.在html页面中 <script> alert ...
- SqlDependency不起作用
今天使用SqlDependency,结果不起作用,失效,不管数据库怎么修改,这边都没反应,OnChange事件总是不执行,很奇怪.我打开msdn里的例子,代码复制出来,结果没问题,能执行,那剩下来的问 ...
- 精通CSS+DIV基础总结(二)
上一篇我们已经总结了部分CSS+DIV相关知识,这篇我们接着总结,从下边几个方面学习一下: 一,我们看如何设置网页的背景,顾名思义背景可以通过颜色和图片来设置,下边我们看一下如何设置: 颜色的设置非常 ...
- UML学习-活动图创建
活动图(Activity Diagram)可以实现对系统动态行为的建模,主要是将用例细化,即用例内部的细节可以以活动图的方式描述.活动图描述活动的顺序,主要表活动之间的控制流,是内部处理驱动的流程,在 ...
- Android Service(下)
转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要 ...
- String()与toString()区别和应用
首先,String()和toString()方法都是将其它类型的变量转换为字符串的方法.但两者存在一定的区别: x.toString(): 无法转换null和undefined: 来看下面的小例子: ...
- java一点东西(3)
运算符的优先级:()优先级最高 ! ++ -- 单目运算符 * / % + - > < <= >= == != && || 赋值符号 面向对象设计步骤:1.发现 ...
- poj 3959 Alignment of Code <vector>“字符串”
Description You are working in a team that writes Incredibly Customizable Programming Codewriter (IC ...
- 跨平台渲染框架尝试 - constant buffer的管理
1. Preface Constant buffer是我们在编写shader的时候,打交道最多的一种buffer resource了.constant表明了constant buffer中的数据,在一 ...