java模拟DVD管理器
import java.util.*;
import java.text.*;
class DVDSet
{
String[] name = new String[50]; //名字
int[] state = new int[50]; //状态 1为可借,0为借出
String[] date = new String[50]; //借出日期
int[] count = new int[50]; //排行榜
}
class DVDMgr
{
// 创建一个对象
DVDSet dvd = new DVDSet();
// 初始值
public void initial(){
dvd.name[0] = "罗马假日";
dvd.state[0] = 0;
dvd.date[0] = "2016-11-17";
dvd.count[0] = 20;
dvd.name[1] = "浪漫满屋";
dvd.state[1] = 1;
dvd.date[1] = " ";
dvd.count[1] = 30;
dvd.name[2] = "阿甘正传";
dvd.state[2] = 1;
dvd.date[2] = " ";
dvd.count[2] = 10;
}
// 添加
public void add(){
System.out.print("请输入DVD名称:");
Scanner sc = new Scanner(System.in);
String newD = sc.next();
for(int i = 0;i < dvd.name.length; i++){
// 添加就是给数组的第一个null元素赋值
if(dvd.name[i] == null){
dvd.name[i] = newD;
dvd.state[i] = 1;
dvd.date[i] = " ";
System.out.println("新增《"+newD+"》成功!");
break;
}
}
}
// 查看
public void search(){
// 直接遍历数组 state为0 为不可借, 1为可借
for(int i = 0;i < dvd.name.length; i++){
if(dvd.name[i] == null){
break;
} else if(dvd.state[i] == 0){
System.out.println((i+1) + " "+ "不可借" + " 《"+ dvd.name[i] +"》 " + dvd.date[i]);
} else if(dvd.state[i] == 1){
System.out.println((i+1) + " "+ "可借" + " 《"+ dvd.name[i] +"》 " + dvd.date[i]);
}
}
}
// 删除
public void delete(){
System.out.print("请输入DVD名称:");
Scanner sc = new Scanner(System.in);
String scDVD = sc.next();
for(int i = 0;i < dvd.name.length;i++){
if(dvd.name!=null &&dvd.name[i].equalsIgnoreCase(scDVD) && dvd.state[i] == 1){
int j=i;
// 删除原理:数组的后面一个覆盖前面的一个
while(dvd.name[j+1]!=null){
dvd.name[j]=dvd.name[j+1];
dvd.state[j]=dvd.state[j+1];
dvd.date[j]=dvd.date[j+1];
j++;
}
//并把数组的最后一个置为空
dvd.name[j]=null;
dvd.date[j]=null;
dvd.state[j] = 0;
System.out.println("删除《"+scDVD+"》成功!");
break;
} else if(dvd.name!=null &&dvd.name[i].equalsIgnoreCase(scDVD) && dvd.state[i] == 0){
System.out.println("《"+dvd.name[i]+"》该书为借出状态,不能删除");
break;
}
}
}
// 借出
public void lend(){
System.out.print("请输入DVD名称:");
Scanner sc = new Scanner(System.in);
String scDVD = sc.next();
for(int i = 0; i < dvd.name.length; i++){
if(dvd.name[i] == null){
System.out.println("没有找到匹配信息!");
break;
}else if(dvd.name[i].equals(scDVD)&& dvd.state[i]==1){
dvd.state[i] = 0; // 借出时把状态设置为已借出, 模拟被借走
System.out.print("请输入借出日期(年-月-日):");
Scanner input = new Scanner(System.in);
dvd.date[i]=input.next();
System.out.println("借出《"+scDVD+"》成功!");
dvd.count[i]++;//借出一次 借出次数就加1
break;
}else if(dvd.name[i].equals(scDVD)&& dvd.state[i]==0){
System.out.println("《"+scDVD+"》已被借出!");
break;
}
}
}
// 归还 并且模拟需要租金
public void returnDvd(){
System.out.print("请输入DVD名称:");
Scanner sc = new Scanner(System.in);
String scDVD = sc.next();
for(int i = 0;i < dvd.name.length;i++){
if(dvd.name[i].equals(scDVD)){
System.out.print("请输入归还日期(年-月-日):");
Scanner sc1 = new Scanner(System.in);
String returnDVD = sc.next();
long num = change(dvd.date[i],returnDVD); // 获取时间差
System.out.println();
System.out.println("归还《"+dvd.name[i]+"》成功。");
System.out.println("借出日期为:"+dvd.date[i]);
System.out.println("归还日期为:"+returnDVD);
dvd.state[i] = 1; // 归还后 状态设置为1
dvd.date[i] = " "; //清除时间
System.out.println("应付租金(元): "+num);
break;
}else {
System.out.println("请输入正确的DVD!");
}
}
}
//计算日期差
public long change(String str1, String str2){
long change = 0;
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd"); // 字符串转为Date做计算
try{
Date d1 = sd.parse(str1); //该时间是以毫秒为单位,计算时记得转换
Date d2 = sd.parse(str2);
change = (d2.getTime()-d1.getTime())/(24*60*60*1000); //转换得到天
} catch(ParseException e){
e.printStackTrace();
}
return change;
}
// 排行榜
public void list (){
int count = 0;
String[] n = new String[50];
int[] c = new int[50];
for(int i = 0; i < n.length; i++){
c[i] = dvd.count[i];
n[i] = dvd.name[i];
}
for(int i = 0;i < c.length; i++){ //使用排序算法
for(int j = 1; j < c.length - i;j++){
if(c[j]>c[j-1]){
String stemp = n[j];
n[j] = n[j-1];
n[j-1] = stemp;
int temp = c[j];
c[j] = c[j-1];
c[j-1] = temp;
}
}
}
System.out.println("次数 名称");
for(int i = 0;i < c.length; i++){
if(n[i]!=null){
System.out.println(c[i]+" "+n[i]);
}
}
}
// 菜单
public void startMenu(){
//界面的提示
System.out.println("欢迎使用迷你DVD管理器\n----------------------------------------");
String[] content = {"0. 借出排行帮","1. 新增DVD","2. 查看DVD","3. 删除DVD","4. 借出DVD","5. 归还DVD","6. 退 出"};
for(String s:content){
System.out.println(s);
}
System.out.println("----------------------------------------\n");
System.out.print("请选择:");
Scanner s = new Scanner(System.in);
int num = s.nextInt();
//switch 的多种选择
switch(num){
case 0:
System.out.println("---> 排行榜\n");
System.out.println("**************************");
list(); //排行榜
System.out.println("**************************");
returnMain();
break;
case 1:
System.out.println("---> 新增DVD\n");
add(); //添加
System.out.println("**************************");
returnMain();
break;
case 2:
System.out.println("---> 查看DVD\n");
System.out.println("序号 状态 名称 借出日期");
search(); // 查看
System.out.println("******************************");
returnMain();
break;
case 3:
System.out.println("---> 删除DVD\n");
delete();//删除
System.out.println("******************************");
returnMain();
break;
case 4:
System.out.println("---> 借出DVD\n");
lend(); //借出
System.out.println("******************************");
returnMain();
break;
case 5:
System.out.println("---> 归还DVD\n");
returnDvd(); //归还
System.out.println("******************************");
returnMain();
break;
default:
System.out.println("欢迎下次继续使用!");
break;
}
}
// 返回键
public void returnMain(){
Scanner input = new Scanner(System.in);
System.out.print("请输入0返回:");
if(input.nextInt() == 0){
startMenu();
} else {
System.out.println("输入错误,异常终止!");
}
}
}
class Demo
{
public static void main(String[] args)
{
DVDMgr dvdM = new DVDMgr();
//初始化数组
dvdM.initial();
// 开始菜单
dvdM.startMenu();
}
}
java模拟DVD管理器的更多相关文章
- java 迷你DVD管理器
1.DvdSet类 package dvd_01; /** * 定义dvd的一些属性 * @author Administrator * */ public class DvdSet { String ...
- DVD管理器集合版
利用所学的集合写出的DVD管理系统,运用到了所学到集合基础. import java.text.ParseException; import java.text.SimpleDateFormat; i ...
- 迷你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){ ...
- 运用集合来做一个DVD管理器(全代码)
package DVD;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Array ...
- java基础 布局管理器
概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...
- JAVA 网格布局管理器
//网格布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian3 extends JFrame{ //定义组件 JBut ...
- JAVA 边界布局管理器
//边界布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian1 extends JFrame{ //定义组件 JBut ...
- Java 的布局管理器GridBagLayout的使用方法(转)
GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...
随机推荐
- jquery 放大图片
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Javascript自执行匿名函数(function() { })()的原理浅析
匿名函数就是没有函数名的函数.这篇文章主要介绍了Javascript自执行匿名函数(function() { })()的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一 ...
- Polygon Table - Google Chrome
Polygon table by Pedro Amaro Santos Lisboa, Portugal posted at http://forums.cgsociety.org/showthrea ...
- 编程范式感想(一)——在C中进行对模板功能的实现
最近一直在看网易公开课上的编程范式的公开课,斯坦福的教授讲的真的非常到位,感觉还是要好好学习下C还有汇编,熟悉下计算机的内存机制什么的. 大家都知道关于模板或者说范式的问题,基本在很多高级语言上都有实 ...
- 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:
我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code ? 1 int retrieve(int scanno,void* buf); 在 ...
- 在Eclipse中搭建C/C++环境
在Eclipse中搭建C/C++环境 本文地址:http://blog.csdn.net/you_and_me12/article/details/7389934 习惯了使用eclipse编程后,现在 ...
- python中的单下划线和双下划线意义和作用
Python中并没有真正意义上的“私有”,类的属性的的可见性取决于属性的名字(这里的属性包括了函数).例如,以单下划线开头的属性(例如_spam),应被当成API中非公有的部分(但是注意,它们仍然可以 ...
- 【技术贴】解决vss中提交pdf下载打开空白乱码
vss客户端需要安装一个Vss2005的补丁程序,而且之前上传的pdf文件重新删掉,再次上传进Vss中,再下载打卡就ok了. 补丁名称vs80-kb943847-x86-intl.exe 别人的csd ...
- 重燃你的PHP安全分析之火
关于脚本安全这个话题好像永远没完没了,如果你经常到国外的各种各样的bugtraq上,你会发现有一半以上都和脚本相关,诸如SQL injection,XSS,Path Disclosure,Remote ...
- uva 1308 - Viva Confetti
这个题目的方法是将圆盘分成一个个圆环,然后判断这些圆环是否被上面的圆覆盖: 如果这个圆的圆周上的圆弧都被上面的覆盖,暂时把它标记为不可见: 然后如果他的头上有个圆,他有个圆弧可见,那么他自己本身可见, ...