首页 > 其他分享 >迷你DVD管理器

迷你DVD管理器

时间:2024-07-29 20:29:09浏览次数:13  
标签:管理器 迷你 DVD System Manager dvd println out

#题目要求(超级长)#

为某音像店开发一个迷你DVD管理器,实现如下图所示的DVD碟片的管理功能。功能具体包括:新增、查看、删除、借出、归还和退出。程序可参照以下步骤进行开发:

(1)数据初始化

使用对象数组保存DVD信息;每张DVD的信息包含:名称、是否可借的状态、借出的日期、归还的日期、借出的次数。

(2)查看DVD信息

    使用循环遍历显示每个DVD的信息。当DVD名字==null时循环结束。

(3)新增DVD信息

向对象数组中存储相应的DVD信息,如果已经存储了6个DVD则提示用户货架已满。

(4)删除DVD信息

按照输入的名称,删除指定DVD信息;删除借出状态的DVD和不存在的DVD时,都要给出相应提示;当删除中间DVD时,后面的DVD进行向前移动处理

(5)借出DVD业务处理

按照输入的名称,借出指定DVD;判断输入的日期是否在1-31之间;若该DVD已借出或没有该DVD,都要给出相应提示。

(6)归还DVD业务处理

实现归还DVD,并计算租金(租金金额自定义);如果用户输入的日期大于31或者小于借出日期将提示用户重新输入(日期只考虑当月的,隔月忽略不计);如果归还未借出的DVD、不存在的DVD或者归还DVD的时间不合理则分别给出相应提示。

(7)菜单切换

    使用switch语句实现菜单选择;使用do-while循环来实现返回和退出。

    该程序的部分效果如下图所示。

#代码撰写#

1.定义Dvd类并创建属性

import java.util.Scanner;

public class H03_work02 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		//调用Manager函数
		Manager manager=new Manager();
//在Manager中初始化数组是因为如果数组在当前类进行初始化,那么Manager无法使用
		while (true) {
			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("请输入相应数字");
			int number = sc.nextInt();
			switch (number) {
			case 1:
				manager.findAll();
				break;
			case 2:
				System.out.println("请输入DVD的名字");
				String Dname=sc.next();
				Dvd d=new Dvd(Dname, 0, 0,0, 0);
				manager.save(d);
				break;
			case 3:
				System.out.println("请输入想要删除的DVD的名字");
				String n=sc.next();
				manager.delete(n);
				break;
			case 4:
				System.out.println("请输入DVD的名字");
				String Bname=sc.next();
				manager.borrow(Bname);
				break;
			case 5:
				System.out.println("请输入DVD的名字");
				String Rname=sc.next();
				manager.back(Rname);
				break;
			case 6:
				//返回
				System.out.println("谢谢使用");
				break;
				
				
				
				
				
				
			}

		}

	}
}

2.定义Manager类,并在其中初始化数组

import java.util.Scanner;

public class Manager {
//在Manager中初始化数组是因为如果数组在当前类进行初始化,那么Manager无法使用
	Dvd[] dvd = new Dvd[6];

	//构造器,在其中调用上面的方法init()
	public Manager() {
		init();
	}

	//初始化数组,成员方法
	public void init() {
		Dvd dvd1 = new Dvd("哈利波特", 0, 12, 18, 1);
		Dvd dvd2 = new Dvd("水浒传", 0, 4, 5, 2);
		Dvd dvd3 = new Dvd("简.爱", 0, 1, 20, 2);
		Dvd dvd4 = new Dvd("红楼梦", 0, 0, 0, 0);
		dvd[0] = dvd1;
		dvd[1] = dvd2;
		dvd[2] = dvd3;
		dvd[3] = dvd4;
	}

3.实现查看方法(Manager中进行撰写,后续步骤都是,不是时会提醒)

//查找,成员方法
	public void findAll() {
		System.out.println("序号\tDVD名称\t状态\t借出日期\t归还日期\t借出次数\t");
		for (int i = 0; i < dvd.length; i++) {
			String statusStr = "已借出";
			if (dvd[i] == null) {
				continue;
			}
			if (dvd[i].getState() == 0) {
				statusStr = "未借出";
			}
			System.out.println((i + 1) + "\t" + dvd[i].getName() + "\t" + statusStr + "\t" + dvd[i].getBorrowDate()
					+ "\t" + dvd[i].getReturndate() + "\t" + dvd[i].getFrequency() + "\t");
		}
	}

4.实现添加

//添加DVD
	public void save(Dvd d) {
		int index = -1;
		for (int i = 0; i < dvd.length; i++) {
			if (dvd[i] == null) {
				index = i;
				break;
			} 
			if(dvd[i].getName().equals(d.getName())) {
				System.out.println("该DVD已经存在");
				return;
			}
		}
		if (index == -1) {
			System.out.println("货架已满,无法添加");
		} else {
			dvd[index] = d;
			System.out.println("添加成功");
		}
	}

5.实现删除

//删除DVD
	public void delete(String d) {

		for (int i = 0; i < dvd.length; i++) {
			if (dvd[i] == null) {
				continue;
			}
			if (dvd[i].getName().equals(d) == true) {
				if (dvd[i].getState() == 1) {
					System.out.println("该DVD被借走无法删除");
					return;
				} else {
					for (int j = i; j + 1 < dvd.length; j++) {
						dvd[j] = dvd[j + 1];
					}
					System.out.println("删除成功");
					return;
				}
			}
				
			}System.out.println("该DVD不存在");
		}

6.借出及归还(我将每日价格规定为3元,可自行更改)

//借出DVD
	public void borrow(String name) {
		for(int i=0;i<dvd.length;i++) {
			if (dvd[i] == null) {
				continue;
			}
			if (dvd[i].getName().equals(name) == true) {
				if (dvd[i].getState() == 1) {
					System.out.println("该DVD已经被借走了");
				}else {
					Scanner sc=new Scanner(System.in);
					while(true) {
					System.out.println("请输入借书日期");
					int borrowTime=sc.nextInt();
					if(borrowTime>31|borrowTime<1) {
						System.out.println("时间输入有误");
						continue;
					}else {
						dvd[i].setBorrowDate(borrowTime);
						dvd[i].setState(1);
						System.out.println("借书成功");
						return;
					}
					}
					
					
				}
		}
			
	}System.out.println("不存在这本书");
 }

//归还
	public void back(String name) {
		int price;
		for(int i=0;i<dvd.length;i++) {
			if (dvd[i] == null) {
				continue;
			}	
			if (dvd[i].getName().equals(name) == true) {
				if (dvd[i].getState() == 0) {
					System.out.println("该DVD未被借走");
					return;
				}else {
					Scanner sc=new Scanner(System.in);
				    while(true) {
				    System.out.println("请输入还书日期");
				    int returnTime=sc.nextInt();
					if(returnTime<dvd[i].getBorrowDate()|returnTime>31) {
						System.out.println("时间输入有误");
						continue;
					}else {
						price=(returnTime-dvd[i].getBorrowDate())*3;
						dvd[i].setState(0);
						System.out.println("您需要支付的价格是"+price+"元");
						return;
					}
				    }
	          }
	     }
	
      }System.out.println("不存在这本书");
}
	

7.主函数(不是Manager里了!)

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		//调用Manager函数
		Manager manager=new Manager();
//在Manager中初始化数组是因为如果数组在当前类进行初始化,那么Manager无法使用
		while (true) {
			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("请输入相应数字");
			int number = sc.nextInt();
			switch (number) {
			case 1:
				manager.findAll();
				break;
			case 2:
				System.out.println("请输入DVD的名字");
				String Dname=sc.next();
				Dvd d=new Dvd(Dname, 0, 0,0, 0);
				manager.save(d);
				break;
			case 3:
				System.out.println("请输入想要删除的DVD的名字");
				String n=sc.next();
				manager.delete(n);
				break;
			case 4:
				System.out.println("请输入DVD的名字");
				String Bname=sc.next();
				manager.borrow(Bname);
				break;
			case 5:
				System.out.println("请输入DVD的名字");
				String Rname=sc.next();
				manager.back(Rname);
				break;
			case 6:
				//返回
				System.out.println("谢谢使用");
				break;
				
				
				
				
				
				
			}

		}

	}

8.代码运行

运行1,2两个选项供参考

初学java如果有写得不好的地方欢迎指导

标签:管理器,迷你,DVD,System,Manager,dvd,println,out
From: https://blog.csdn.net/m0_72186118/article/details/140725417

相关文章

  • Win10资源管理器文件夹错乱
    昨天晚上我不知道怎么搞得,鼠标在资源管理器界面,我手放在触控板上,不知道拖拽了啥,把所有文件搞到桌面文件夹下了。然后焦虑了一天,都打算从还原点还原了,然后今天早上更新了Windows,发现最新的还原点就在今早。。。无奈之下想到了去问问ChatGPT,然后居然它真的给了我一个有用的......
  • Linux下学习Python包管理器Poetry教程 零基础入门到精通
    Poetry[官网-Poetry]https://python-poetry.org/安装pipinstallpoetry简单使用初始化poetry项目cd~&&mkdirdemopoetryinit管理虚拟环境poetry预设了很多自己的虚拟环境配置,这些配置可以通过poetryconfig进行修改当用户在执行poetryadd等指令......
  • Windows10禁用资源管理器文件夹自动视图转换
    在Windows系统中,当使用资源管理器浏览文件夹时,系统有时会自动将文件夹视图转换为特定类型(如音乐或图片)的显示模式,这可能会给一些用户带来不便。为了禁用这个功能,你可以通过修改注册表来实现。以下是详细的步骤:方法一:通过修改注册表禁用自动视图转换打开注册表编辑器:按下Win+......
  • Python 的分布式锁管理器
    我有一堆具有多个实例的服务器,这些实例访问的资源对每秒的请求有硬性限制。我需要一种机制来锁定所有正在运行的服务器和实例对此资源的访问。有我在github上找到的一个restful分布式锁管理器:https://github.com/thefab/restful-distributed-lock-manager不幸......
  • 如何使用 python 更改资源管理器窗口中的路径?
    没有人知道如何在不使用python打开新实例的情况下更改资源管理器窗口中的当前路径吗?例如,如果用户使用C:\Users\User打开资源管理器窗口。然后我必须将该路径更改为C:\Windows\System32例如。提前致谢。很遗憾,无法直接使用Python更改现有文件资源管理器窗口的......
  • 如果 Python 脚本正在使用文件夹,如何在文件资源管理器中进行更改时防止 Windows 的“
    我有一个简单的脚本,显示在QTreeView中的QListView中选择的目录的内容,我想添加打开文件资源管理器的功能,以让用户编辑目录内的内容。但是,添加新的文件夹和文件可以,但删除或移动文件夹或文件会提示“文件夹正在使用”错误:此操作无法完成,因为该文件已在另一个程......
  • 有没有办法将上下文管理器的上下文保留在 as 块本地?
    我正在尝试找到一种方法来避免为传递给另一个函数的某些函数创建一堆名称。我意识到,如果函数只是简单的表达式,那么我可以传入lambda并避免创建命名函数,但在许多情况下,它们是需要语句的较长函数。这是我正在做的示例。这种方法工作正常,但需要我定义一个唯一的命名函数并将......
  • 【Windows】操作系统之任务管理器(第一篇)
    一、操作系统简介Windows操作系统是由微软公司(Microsoft)开发的一款图形操作系统,它以其强大的功能和广泛的用户基础,成为了目前世界上用户使用最多、兼容性最强的操作系统之一。以下是关于Windows操作系统的详细介绍:一、历史与发展起源:Windows操作系统的历史可以追溯到1983年,......
  • 安卓MT管理器v2.16.2/逆向修改神器 本地VIP已解锁
    MT管理器是一款强大的文件管理工具和APK逆向修改神器。如果你喜欢它的双窗口操作风格,可以单纯地把它当成文件管理器使用。如果你对修改APK有深厚的兴趣,那么你可以用它做许许多多的事,例如汉化应用、替换资源、修改布局、修改逻辑代码、资源混淆、去除签名校验等,主要取决于你如......
  • 折腾指南: 将光猫改造成你的NAS,WebDAV+网页文件管理器vList5+natmap
    原文:https://hi.imzlh.top/2024/07/18.cgi(预发布)很久没有写完全折腾类文章了,这还得追溯到上次折腾S905L3A那会。这篇文章很长,但是是小白级包学会。为什么会有这篇文章?这篇文章本来应该在4个月前就完成了,但是我一直都在折腾NAS软件其中我也尝试了很多方法,奈何时间不足断断续......