package DVD;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;
class Dvd{
String name;
String date;
int state;
int count;
public Dvd(String name,int state,String date,int count){
this.name = name;
this.date = date;
this.state = state;
this.count = count;
}
public String toString() {
// TODO Auto-generated method stub
if(state==1){
return "可借\t"+"《"+name+"》\t"+date;
}
return "不可借\t"+"《"+name+"》\t"+date;
}
}
//比较器
class DVDCompar implements Comparator<Dvd>{
@Override
public int compare(Dvd o1, Dvd o2) {
// TODO Auto-generated method stub
return o2.count-o1.count;
}
}
class DvdMgr{
List<Dvd> list = new ArrayList<Dvd>(); //创建一个list集合
public void initial(){
Dvd dvd = new Dvd("罗马假日", 0, "2016-12-1", 20);
Dvd dvd2 = new Dvd("浪漫满屋", 1, " ", 30);
Dvd dvd3 = new Dvd("风声鹤唳", 1, " ", 10);
// 初始化集合
list.add(dvd);
list.add(dvd2);
list.add(dvd3);
}
// 菜单
public void returnMenu(){
System.out.println("******欢迎使用迷你DVD管理器******");
System.out.println("****************************");
System.out.println("******* 0.借出排行榜 **********");
System.out.println("******* 1.新增DVD **********");
System.out.println("******* 2.查看DVD **********");
System.out.println("******* 3.删除DVD **********");
System.out.println("******* 4.借出DVD **********");
System.out.println("******* 5.归还DVD **********");
System.out.println("******* 6.退 出 **********");
System.out.println("****************************\n");
System.out.print("请选择:");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
switch (input) {
case 0:
Top();
break;
case 1:
add();
break;
case 2:
search();
break;
case 3:
delete();
break;
case 4:
lend();
break;
case 5:
returnDVD();
break;
case 6:
System.out.println("*****欢迎下次继续使用!*****");
break;
default:
System.out.println("输入错误,这个功能正在完善中....");
break;
}
}
//添加
public void add(){
System.out.println("欢迎进入新增页面!");
System.out.print("请输入DVD名称: ");
Scanner scanner = new Scanner(System.in);
String inputName = scanner.next();
int num = list.size();
Dvd dvd = new Dvd(inputName, 1, " ", 0);
list.add(dvd);
if(list.size()>num){
System.out.println("新增《"+inputName+"》成功");
returnCom();
} else {
System.out.println("新增失败");
}
}
//查找
public void search(){
System.out.println("********欢迎进入查找页面********\n");
System.out.println("序号\t状态\t"+"名称\t\t"+"借出日期");
for(int i = 0; i < list.size(); i++){
System.out.println((i+1)+"\t"+list.get(i));
}
returnCom();
}
//删除
public void delete(){
System.out.println("*****欢迎进入删除页面*****");
while(true){
System.out.print("请输入DVD名称:");
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
boolean b = false;
for(int i = 0; i < list.size(); i++){
if(list.get(i).name.equals(input)){
list.remove(i);
b = true;
}
}
if(b == true){
System.out.println("删除《"+input+"》成功");
returnCom();
}else {
System.out.println("没有这个DVD,请重新输入!");
}
}
}
// 借出
public void lend(){
System.out.println("******欢迎进入借出页面*****");
System.out.print("请输入DVD名称:");
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
boolean b = false;
for(int i = 0; i < list.size(); i++){
Dvd dvd = list.get(i);
if(dvd.name.equals(input)){
b = true;
if(dvd.state==1){
System.out.println("请输入借出日期:(yyyy-MM-dd):");
Scanner scanner2 = new Scanner(System.in);
String string = scanner2.next();
dvd.date = string;
dvd.state = 0;
dvd.count++;
}else {
System.out.println("您要借的DVD已被借出!");
}
}
}
if(b == false){
System.out.println("您输入的DVD不存在");
}
returnCom();
}
//归还
public void returnDVD(){
System.out.println("******欢迎进入归还页面*****");
System.out.print("请输入DVD名称:");
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
for(int i = 0; i < list.size(); i++){
Dvd dvd = list.get(i);
if(dvd.name.equals(input)){
if(dvd.state == 0){
dvd.state = 1;
System.out.print("请输入归还的日期(yyyy-MM-dd): ");
Scanner scanner2 = new Scanner(System.in);
String string = scanner2.next();
long money = money(string,dvd);
System.out.println("归还《"+input+"》成功");
System.out.println("需要付租金(¥):"+money);
}else {
System.out.println("这DVD不是我们这里的吧,我们的DVD没有被借出!");
}
}
}
returnCom();
}
// 算钱
public long money(String string, Dvd dvd){
long change = 0;
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd"); // 字符串转为Date做计算
try{
Date d1 = sd.parse(dvd.date); //该时间是以毫秒为单位,计算时记得转换
Date d2 = sd.parse(string);
change = (d2.getTime()-d1.getTime())/(24*60*60*1000); //转换得到天
} catch(ParseException e){
e.printStackTrace();
}
dvd.date = " ";
return change;
}
// 排行榜
public void Top(){
System.out.println("------TOP------");
System.out.println("次数\t名称");
Iterator<Dvd> it = list.iterator();
TreeSet<Dvd> tSet = new TreeSet<>(new DVDCompar()); //传个比较器比较
while(it.hasNext()){
tSet.add(it.next());
}
it = tSet.iterator();
while(it.hasNext()){
Dvd dvd = it.next();
System.out.println(dvd.count+"\t"+dvd.name);
}
returnCom();
}
// 输入0返回菜单
public void returnCom(){
while(true){
System.out.print("请输入0返回: ");
Scanner scanner2 = new Scanner(System.in);
int inputNum = scanner2.nextInt();
if(inputNum == 0){
System.out.println();
returnMenu();
break;
} else {
System.out.println("指令错误,请重新输入!");
}
}
}
}
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
DvdMgr dvdMgr = new DvdMgr();
dvdMgr.initial();
dvdMgr.returnMenu();
}
}
运用集合来做一个DVD管理器(全代码)的更多相关文章
-
DVD管理器集合版
利用所学的集合写出的DVD管理系统,运用到了所学到集合基础. import java.text.ParseException; import java.text.SimpleDateFormat; i ...
-
java模拟DVD管理器
import java.util.*;import java.text.*;class DVDSet{ String[] name = new String[50]; //名字 int[] ...
-
迷你DVD管理器
import java.text.*; import java.util.*; class DVDSet { String[] name=new String[50]; //定义一个DVD数组 boo ...
-
迷你DVD管理器项目
package chapter5; import java.util.*; public class MiniDVD { public static void main(String[] args){ ...
-
java 迷你DVD管理器
1.DvdSet类 package dvd_01; /** * 定义dvd的一些属性 * @author Administrator * */ public class DvdSet { String ...
-
做一个阅读管理APP
背景 由于最近在看的书有点多,所以一直想找一个能够管理阅读进度的书(鄙人记性不是很好,两天不看就忘了)可惜Android平台上一直找不到合适的APP: 有没有读书进度管理的网站或软件啊? 有没有记录读 ...
-
debian系统的另一个包管理器aptitude
最近在玩OPI的时候遇到了一个包因为各种依赖问题死活装不上.苦搜很久找到这个aptitude包管理器. 基于debain衍生的各种操作系统比较常用包管理器是apt,不过apt在遇到依赖问题的时候处理得 ...
-
用树莓派Raspberry Pi和Micro:bit做一个自拍器
在这个项目中,我们将使用Python来构建一个由Micro:bit触发树莓派Raspberry Pi和相机模块的自拍器.这是开始使用硬件和简单文本编程的好方法. 我们将学习: 如何设置Raspberr ...
-
用javascript和html5做一个音乐播放器,附带源码
效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 输入搜索关键词,点击放大镜图标 7.侧边栏 目录结构 开发心得与总结 1.轮播图 首先感谢作者S ...
随机推荐
-
查看abp框架异常信息
abp框架中经常出现{"message":"An error has occurred."}的异常,并且也进入不到方法中,如果想查看详细信息,可以采用下面方法 ...
-
JMeter专题系列(一)工具简单介绍
一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
-
PHP imdb类多个跨站脚本漏洞
漏洞版本: PHP imdb Classes 2-2.1.5 漏洞描述: BUGTRAQ ID: 64542 PHP是一种HTML内嵌式的语言. PHP imdb类2-2.1.5及其他版本在实现上存在 ...
-
read file in a single line
String text= new Scanner(File('input.txt')).useDelimiter("\\A").next(); java version!
-
3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二
3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 21 Solved ...
-
poj2912 Rochambeau
Description N children are playing Rochambeau (scissors-rock-cloth) game with you. One of them is th ...
-
asp.net程序发布详解
本文转载自Alan_beijing的博客ASP.NET 程序发布详细过程.内容进行了部分更改. ASP.NET网站的发布,无论是初学者还是高手,在程序的发布过程中或多或少会存在一些问题,譬如VS发布A ...
-
Delphi 日期时间函数
DateUtils.IncYear();DateUtils.IncMonth();DateUtils.IncWeek();DateUtils.IncDay();DateUtils.IncHour(); ...
-
Linux学习之进程管理(十九)
Linux学习之进程管理 进程查看 查看系统中所有进程,使用BSD操作系统的格式 语法:ps aux 选项: a:显示所有前台进程 x:显示所有后台进程 u:显示这个进程是由哪个用户产生的 语法:ps ...
-
Linux - DNF包管理
简介 link DNF(Dandified Yum)是新一代的RPM软件包管理器. DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容. DN ...