JAVA数组程序练习(一):DVD管理系统
2021/7/8 14:07:05
本文主要是介绍JAVA数组程序练习(一):DVD管理系统,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.university.cd; import java.time.LocalDate; import java.time.Period; import java.time.format.DateTimeFormatter; import java.util.Iterator; import java.util.Scanner; /** * 使用数组以及目前所学知识点完成一个迷你DVD租赁系统 * @author lenovo * 2021年7月7日-上午10:03:42 */ public class DvdControl { //创建一个Scanner对象,实例化对象 static Scanner input = new Scanner(System.in); //声明数组变量用来存储DVD的相关信息 static int size;//DVD的数量 static String []dvdName;//存储DVD名称 static int []dvdPrices;//存储DVD的价格 static boolean []dvdStatus;//存储DVD的状态:true-借出,false-未借出 static String []dvdDates;//存储DVD的借出日期 public static void main(String[] args) { //系统静态初始化 size = 100; //DVD存放大小 //DVD相关数组分配空间 dvdName = new String[size]; dvdPrices = new int[size]; dvdStatus = new boolean[size]; dvdDates = new String[size]; //初始化3个数据 dvdName[0] = "速度与激情1"; dvdPrices[0] = 2; dvdStatus[0] = false; dvdDates[0] = null; dvdName[1] = "速度与激情2"; dvdPrices[1] = 3; dvdStatus[1] = true; dvdDates[1] = "2021年05月15日"; dvdName[2] = "速度与激情3"; dvdPrices[2] = 5; dvdStatus[2] = false; dvdDates[2] = null; while(true) { //选择菜单 System.out.println("==========迷你DVD租赁系统=========="); 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.退出系统============"); //选择设置 System.out.println("请选择:"); //choose变量是菜单选项 String choose = input.next(); switch(choose) { case "1" -> {//新增DVD addDVD(); } case "2" -> {//删除DVD deleteDVD(); } case "3" -> {//修改DVD editDVD(); } case "4" -> {//查看DVD listDVD(); } case "5" -> {//租借DVD rentDVD(); } case "6" -> {//归还DVD returnDVD(); } case "7" -> {//退出系统 System.out.println("谢谢使用!"); System.exit(0); } } } } //归还DVD private static void returnDVD() { System.out.println("DVD管理系统-->归还DVD"); //1、录入要归还的dvd名称 System.out.print("请输入要归还的dvd名称:"); String name = input.next(); //2、查找dvd在数组中的位置 int index = -1; for(int i=0;i<dvdName.length&&dvdName[i]!=null;i++) { if(name.equals(dvdName[i])) { //找到了,记住下标 index = i; //退出循环 break; } } //3、实现归还的业务逻辑 if(index == -1) { System.out.println("要归还的DVD不存在!"); }else { //判断dvd的状态,是否已经借出 if(!dvdStatus[index]) { System.out.println("DVD未借出!"); }else { //计算租金 //获取当前系统的日期对象 LocalDate nowDate = LocalDate.now(); //获取借出日期字符串 String rentDateString = dvdDates[index]; //构建一个日期对象格式化实例 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); //传递参数按照给定的格式化对象解析给定的日期字符串,返回日期对象 LocalDate rentDateObj = LocalDate.parse(rentDateString, formatter); //创建日期间隔实例 Period betweenPeriod = Period.between(nowDate, rentDateObj); //获取两个日期之间间隔的天数 int days = betweenPeriod.getDays(); //计算租金 int money = days*dvdPrices[index]; //输出租金信息 System.out.printf("租借天数:%d,每天:%d元,合计:%d元",days,dvdPrices[index],money); //改变dvd的状态和借出日期 dvdStatus[index] = false; dvdDates[index] = null; System.out.println("归还DVD成功!"); } } System.out.println("------------------------------------"); } //租借DVD private static void rentDVD() { System.out.println("DVD管理系统-->租借DVD"); //1.录入租借的DVD名称 System.out.print("请输入要租借的DVD名称:"); String name = input.next(); //2.查找dvd在数组中的下标 int index = -1; for(int i = 0;i<dvdName.length&&dvdName[i]!=null;i++) { if(name.equals(dvdName[i])) { //找到了 index = i; //退出循环 break; } } //3.实现租借逻辑 if(index == -1) { System.out.println("要租借的DVD不存在!"); }else { //判断DVD是否已经被借走 if(dvdStatus[index]) { System.out.println("DVD已经被借走!"); }else { //修改DVD相关数组,实现借出的逻辑 //修改DVD的状态和借出日期 dvdStatus[index] = true; // 系统当前的日期,并格式化为特定的字符串格式 //获取当前系统日期 LocalDate nowDate = LocalDate.now(); //获取日期格式化实例 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); //获取当前系统日期的格式化串 String nowString = nowDate.format(formatter); //设置dvd借出日期 dvdDates[index] = nowString; System.out.println("DVD借出成功!"); } } System.out.println("------------------------------------"); } //删除DVD private static void deleteDVD() { System.out.println("DVD管理系统-->删除DVD"); //1.录入要删除的DVD名称 System.out.print("请录入要删除的DVD名称:"); String name = input.next(); //遍历dvdName数组,查找dvd,返回其下标 int index = -1; for (int i =0;i<dvdName.length&&dvdName[i]!=null;i++) { if(name.equals(dvdName[i])) { //找到了,记住下标 index = i; //退出循环 break; } } if(index == -1) { System.out.println("要删除的DVD不存在,不能删除!"); }else { //dvd存在,判断是否已经借出 if(dvdStatus[index]) { System.out.println("DVD已经借出不能修改!"); }else { //3.删除dvd //特殊情况,如果被删除元素位于最后一个 if(index == dvdName.length-1) { dvdName[index] = null; dvdPrices[index] = 0; dvdStatus[index] = false; dvdDates[index] = null; }else { //以index为界,后面的元素诸逐个覆盖前面一个元素 for(int i = index;i<dvdName.length-2;i++) { dvdName[i] = dvdName[i+1]; dvdPrices[i] = dvdPrices[i+1]; dvdStatus[i] = dvdStatus[i+1]; dvdDates[i] = dvdDates[i+1]; } } } } System.out.println("删除成功!"); } //修改DVD private static void editDVD() { System.out.println("DVD管理系统-->修改DVD"); //1.控制台输入并接收要修改的DVD信息 //接收修改的DVD名 System.out.println("请输入要修改的DVD名称:"); String name = input.next(); //遍历dvdName数组,查找dvd,返回其下标 int index = -1; for (int i =0;i<dvdName.length&&dvdName[i]!=null;i++) { if(name.equals(dvdName[i])) { //找到了,记住下标 index = i; //退出循环 break; } } //判断dvd是否存在 if(index == -1) { System.out.println("要修改的DVD不存在"); }else { //dvd存在,判断dvd是否已经借出 if(dvdStatus[index]) { System.out.println("DVD已经借出,不能修改信息!"); }else { //录入修改的信息:价格、状态、借出日期 System.out.print("请输入新的名称(输入1不修改):"); name = input.next(); System.out.print("请输入新的价格(输入0不修改):"); int price = input.nextInt(); System.out.println("请输入新的状态(1.不修改 2.可借 3.已借出)"); String status = input.next(); System.out.println("请输入借出日期(输入1不修改 2.格式:yyyy年mm月dd日):"); String date = input.next(); //跟新名称数组 if(!"1".equals(name)) { dvdName[index] = name; } //跟新价格数组 if(price!=0) { dvdPrices[index] = price; } //跟新状态 if(!"1".equals(status)) { dvdStatus[index] = "2".equals(status)?false:("3".equals(status)?true:dvdStatus[index]); } //跟新借出日期 if(!"1".equals(date)) { dvdDates[index] = date; } System.out.println("跟新成功!"); } } } //新增DVD private static void addDVD() { System.out.println("DVD租赁系统-->新增DVD"); //1.录入DVD的名称和价格 System.out.print("请输入DVD的名称:"); String name = input.next(); System.out.print("请输入DVD的价格:"); int price = input.nextInt(); //2.将新录入的DVD信息添加到数组中 int index = -1;//定义变量存储DVD数组的空元素下标 for(int i = 0; i < dvdName.length; i++) {//循环遍历DVD数组,查找空元素的下标 if(dvdName[i] == null) {//当前下标为空元素,记下当前下标 index = i; break;//退出循环 } } //判断index是否还为-1 if(index == -1) { //若index仍然为-1即说明数组已经满了,无空元素 System.out.println("新增DVD失败!DVD仓库已满!"); }else { //若index不为-1,则有空元素,将新增DVD信息录入进去 dvdName [index] = name; dvdPrices [index] = price; dvdStatus [index] = false; dvdDates [index] = null; System.out.println("新增DVD成功!"); } System.out.println("=========================="); } //查看DVD private static void listDVD() { System.out.println("DVD租赁系统-->查看DVD"); //打印表头 System.out.printf("%-3s%-8s%-5s%-5s%-12s\n","序号","碟片名称","租赁单价","碟片状态","借出日期"); //循环遍历dvd数组 for(int i=0;i<dvdName.length&&dvdName[i]!=null;i++) { System.out.printf("%-3d%-8s%-5d%-5s%-12s\n",(i+1),dvdName[i],dvdPrices[i],(dvdStatus[i]?"借出":"可借"),dvdDates[i]==null?"":dvdDates[i]); } System.out.println("------------------------------------"); } }
这篇关于JAVA数组程序练习(一):DVD管理系统的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)