我们要完成的功能有:
查看 增加 删除 借出 归还并计算租金 显示借出次数排行
代码如下(自己试试吧!):
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;
public class Dvd{
public static void main(String[] args) {
setDVDS();
menu();
}
static int[] indexs=new int[50];
static int[] times = new int[50];
static String[] states=new String[50];
static String[] names=new String[50];
static String[] dates=new String[50];
static Scanner input=new Scanner(System.in);
//DVD数据初始化:
public static void setDVDS(){
indexs[0]=1;
times[0]=11;
states[0]="已借出";
names[0]="罗马假日";
dates[0]="2010-7-1";
indexs[1]=2;
times[1]=21;
states[1]="可借";
names[1]="风声鹤唳";
dates[1]=" ";
indexs[2]=3;
times[2]=31;
states[2]="可借";
names[2]="浪漫满屋";
dates[2]=" ";
}
//创建菜单方法:
public static void menu(){
System.out.println("欢迎使用迷你DVD管理器");
System.out.println("------------------------------");
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.查看DVD借出排行");
System.out.println("7、退\t出");
System.out.println("-----------------------------");
System.out.print("请选择\t");
int num=input.nextInt();
if(num==1){
addDVD();
}else if(num==2){
queryDVD();
}else if(num==3){
deleteDVD();
}else if(num==4){
lendDVD();
}else if(num==5){
backDVD();
}else if (num==6){
ranking();
}
else if(num>=7 || num<=0){
System.out.println("感谢使用,再见!");
return ;
}
System.out.println("*********************");
System.out.println("输入0返回");
int index=input.nextInt();
if(index==0){
menu();
}
}
//查看DVD
public static void queryDVD(){
System.out.println("---> 查看DVD\n");
System.out.println("序号\t状态\t名称\t借出日期");
for (int i = 0; i <names.length ; i++) {
if(names[i]!=null){
System.out.println(indexs[i]+"\t"+states[i]+"\t"+names[i]+"\t"+dates[i]);
}else{
break;
}
}
}
//新增DVD
public static void addDVD(){
System.out.println("---> 新增DVD\n");
System.out.println("请输入DVD 名称:");
String name=input.next();
for (int i = 0; i <names.length ; i++) {
if(names[i]==null){
names[i]=name;
indexs[i]=i+1;
states[i]="可借";
dates[i]=" ";
times[i] = 0;
System.out.println("新增《"+name+"》成功");
break;
}
}
}
//删除DVD
public static void deleteDVD(){
System.out.println("---> 删除DVD\n");
System.out.println("请输入dvd名称");
String name=input.next();
//1.判断DVD是否存在:
int index=-1;
for (int i = 0; i <names.length ; i++) {
if(names[i]!=null && name.equals(names[i])){
index=i;
break;
}
}
//2.存在的情况下,先判断状态是否为”可借“,再执行删除操作
if(index==-1){
System.out.println("《"+name+"》不存在,无法删除!");
}else{
if(states[index].equals("已借出")){
System.out.println("《"+name+"》已借出,不可以删除!");
}else{
int maxIndex=-1;
for (int i = 0; i <names.length ; i++) {
if(names[i]==null){
maxIndex=i;
}
}
for (int i = index; i <maxIndex ; i++) {
names[i]=names[i+1];
//indexs[i]=indexs[i+1];
states[i]=states[i+1];
dates[i]=dates[i+1];
}
System.out.println("《"+name+"》删除成功!");
}
}
}
//借出DVD
public static void lendDVD(){
System.out.println("---> 借出DVD");
System.out.println("请输入DVD名称:");
String name=input.next();
//1.DVD是否存在
int index=-1;
for (int i = 0; i <names.length ; i++) {
if(names[i]!=null && name.equals(names[i])){
index=i;
break;
}
}
//2.如果存在,进一步查看状态是否可以借出
if(index==-1){
System.out.println("《"+name+"》不存在,无法借出!");
}else{
if(states[index].equals("可借")){ //执行借出操作
System.out.println("请输入借出日期:");
String date=input.next();
states[index]="已借出";
dates[index]=date;
times[index]++;
System.out.println("《"+name+"》借出成功!");
}else{
System.out.println("《"+name+"》已经借出,不可再借!");
}
}
}
//归还DVD并计算租金
public static void backDVD(){
System.out.println("---> 归还DVD\n");
System.out.println("请输入归还DVD名称:");
String name=input.next();
//1.判断是否存在:
int index=-1;
for (int i = 0; i <names.length ; i++) {
if(names[i]!=null && name.equals(names[i])){
index=i;
break;
}
}
//2.存在后,判断状态是否为“已借出” 再执行归还操作
if(index==-1){
System.out.println("《"+name+"》不存在, 无法归还!");
}else{
if(states[index].equals("可借")){
System.out.println("《"+name+"》未借出, 无需归还!");
}else{//执行归还操作:
System.out.println("请输入归还日期(年-月-日):");
String date=input.next();
System.out.println("《"+name+"》归还成功!");
System.out.println("借出日期为:"+dates[index]);
System.out.println("归还日期为:"+date);
System.out.println("应付租金(元)"+getMoney(dates[index],date));
states[index]="可借";
dates[index]=" ";
}
}
}
//结算租金:
/**
* 计算两个日期之间的天数差
* @param lendDate 借出日期,格式为"yyyy-MM-dd"
* @param backDate 归还日期,格式为"yyyy-MM-dd"
* @return 两个日期之间的天数差(若日期格式错误则返回-1)
*/
public static int getMoney(String lendDate, String backDate) {
// 创建日期格式化对象,指定格式为"yyyy-MM-dd"
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
// 将字符串日期转换为Date对象
Date parse = sdf.parse(lendDate);
Date parse1 = sdf.parse(backDate);
// 计算两个日期的时间差(毫秒数),并转换为天数
// 1秒=1000毫秒,1分钟=60秒,1小时=60分钟,1天=24小时
int day = (int) ((parse1.getTime() - parse.getTime()) / (1000 * 60 * 60 * 24));
return day;
} catch (ParseException e) {
// 如果日期格式不正确,打印异常堆栈信息
e.printStackTrace();
}
// 日期解析失败时返回-1
return -1;
}
//借出次数排行
public static void ranking() {
System.out.println("---> 借出次数排行");
System.out.println("次数\tDVD名称");
// 使用冒泡排序按借出次数降序排列
for (int i = 0; i < times.length - 1; i++) {
for (int j = 0; j < times.length - 1 - i; j++) {
if (times[j] < times[j + 1]) {
int time = times[j];
times[j] = times[j + 1];
times[j + 1] = time;
String name = names[j];
names[j] = names[j + 1];
names[j + 1] = name;
int index=indexs[j];
indexs[j] = indexs[j + 1];
indexs[j + 1] = index;
String date = dates[j];
dates[j] = dates[j + 1];
dates[j + 1] = date;
String state = states[j];
states[j] = states[j + 1];
states[j + 1] = state;
}
}
}
for (int i = 0; i < names.length; i++) {
if (names[i] != null) {
System.out.println(times[i] + "\t" + names[i]);
}
}
}
第五天:用前几天的知识完成一个简单的DVD管理系统吧!
Java实现简单DVD管理系统
于 2025-07-27 21:45:27 首次发布

被折叠的 条评论
为什么被折叠?



