功能包括:
新增DVD、删除DVD、修改DVD、查看DVD、借出DVD、归还DVD、退出系统

效果图大概如下图所示:

代码如下:

package com.cx1;import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;public class Homework1 {
/** 基于数组,编写一个迷你DVD碟片租赁系统。
功能包括:
新增DVD、删除DVD、修改DVD、查看DVD、借出DVD、归还DVD、退出系统*/static Scanner scanner = new Scanner(System.in);static String []dvdName;static int []dvdPrice;static int []dvdStatus; //0-未借出, 1-已借出static String []dvdDate;public static void main(String[] args) {/** 开发一个迷你DVD租赁系统* 提供功能:* 新增、删除、修改、查看DVD* 接触、归还DVD、退出系统*/init();do {   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("==========================");System.out.println("请选择:");String choose = scanner.next();switch(choose) {case "1":addDVD();break;case "2":deleteDVD();break;case "3":upDateDVD();break;case "4":queryDVD();break;case "5":loanDVD();break;case "6":backDVD();break;case "7":System.out.println("谢谢使用!");System.exit(0);default:System.out.println("输入错误!");break;}}while(true); }//新增DVDprivate static void addDVD() {//1.录入DVD的信息System.out.println("DVD租赁管理----->新增DVD");System.out.println("请输入新增DVD的名称:");String name = scanner.next();System.out.println("请输入新增DVD的日租金:");int price = 0;boolean isPriceCorrect=false;while(!isPriceCorrect){if(scanner.hasNextInt()){price = scanner.nextInt();isPriceCorrect=true;}else {scanner.next();System.out.println("输入非法,请重新输入:");}}//2.添加到数组中//循环遍历名称数组 查找空位置int index = -1;for(int i = 0;i<dvdName.length;i++){if(dvdName[i]==null) {index=i;break;}}if (index==-1){System.out.println("DVD仓库已满,不能添加!");//方法返回 后面的代码不再执行return;}//插入新的DVD到index这个位置dvdName[index]=name;dvdPrice[index]=price;dvdStatus[index]=0;dvdDate[index]=null;System.out.println("DVD新增成功!");System.out.println("----------新增DVD结束----------\n");}//删除DVDprivate static void deleteDVD() {System.out.println("DVD租赁管理----->删除DVD");System.out.print("请输入要删除DVD的名称:");String name = scanner.next();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不存在!");return;}else {if(dvdStatus[index]==1){System.out.println("DVD以及借出,不能删除!");return;}else {if(index==dvdName.length-1){dvdName[index]=null;dvdPrice[index]=0;dvdStatus[index]=0;dvdDate[index]=null;}else {for(int j=index;j<dvdName.length-1;j++){dvdName[j]=dvdName[j+1];dvdPrice[j]=dvdPrice[j+1];dvdStatus[j]=dvdStatus[j+1];dvdDate[j]=dvdDate[j+1];}dvdName[dvdName.length-1]=null;dvdPrice[dvdName.length-1]=0;dvdStatus[dvdName.length-1]=0;dvdDate[dvdName.length-1]=null;}System.out.println("DVD删除成功!");}}System.out.println("-------删除成功-------");  }//修改DVDprivate static void upDateDVD() {//信息录入System.out.println("DVD租赁管理系统--->更新DVD:");System.out.println("请输入需要更新的DVD名称:");String name = scanner.next();//查找信息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不存在!");return;}else {//判断是否借出, 若已借出则不能修改if(dvdStatus[index]==1){System.out.println(dvdName[index]+"已经借出,不能修改!");}else {System.out.println("请输入新的DVD名称:(输入n不修改)");name=scanner.next();System.out.println("请输入新的DVD价格:(输入n不修改)");String price = scanner.next();System.out.println("请输入新的DVD状态:(输入n不修改)");String status = scanner.next();System.out.println("请输入新的DVD日期:(输入n不修改)");String date = scanner.next();if (!"n".equals(name)) {dvdName[index]=name;}if (!"n".equals(price)) {dvdPrice[index]=Integer.parseInt(price);}if (!"n".equals(status)) {dvdStatus[index]=Integer.parseInt(status);}if (!"n".equals(date)) {dvdDate[index]=date;}System.out.println("DVD更新成功!");}}System.out.println("-------更新结束--------");}//查看DVDprivate static void queryDVD() {System.out.println("DVD租赁管理系统--->查看DVD:");System.out.printf("%-3.3s%-13.13s%-10.10s%-5.5s%-9.9s\n","序号","碟片名称","租赁单价","碟片状态","借出时间");for(int i=0;i<dvdName.length&&dvdName[i]!=null;i++){System.out.printf("%-5.5s",(i+1)+"");System.out.printf("%-11.11s",dvdName[i]);System.out.printf("%-10.10s",dvdPrice[i]+"");System.out.printf("%-10.10s",dvdStatus[i]==0?"未借出":"已借出");System.out.printf("%-10.10s\n",dvdDate[i]==null?"":dvdDate[i]);}System.out.println("-------查询DVD结束-------\n");}//借出DVDprivate static void loanDVD() {System.out.println("DVD租赁管理系统--->借出DVD:");System.out.println("请输入需要借出的DVD的编号:");boolean isNoCorrect = false;int no = -1;while(!isNoCorrect) {if(scanner.hasNextInt()) {no = scanner.nextInt();isNoCorrect=true;}else {scanner.next();System.out.println("输入的信息有误,请重新输入要借出的DVD编号!");}}//判断要借出的DVD是否存在if(dvdName[no-1]!=null) {if(dvdStatus[no-1]==1) {System.out.println("该DVD已经借出,借出失败!");}else {dvdStatus[no-1]=1;System.out.println("请输入借出日期:(yyyy-mm-dd)");dvdDate[no-1]=scanner.next();System.out.println("DVD借出成功!");}}else {System.out.println("要借出的DVD不存在!");}System.out.println("-------借出DVD结束-------\n");}//归还DVDprivate static void backDVD() {System.out.println("DVD租赁管理系统--->归还DVD:");System.out.println("请输入需要归还的DVD名称:");String name = scanner.next();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 {if(dvdStatus[index]==1){//计算租金   //日租金int price = dvdPrice[index];LocalDate nowDate = LocalDate.now();//创建一个日期时间格式化对象DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd");LocalDate loandaDate = LocalDate.parse(dvdDate[index],formatter);//基于Period类的静态方法计算两个日期之间的天数Period period = Period.between(loandaDate, nowDate);int days = period.getDays();//计算租金int money = days*price;System.out.println("你一共租了["+days+"]天,需要支付租金:"+money+"元");//修改dvd的状态dvdStatus[index]=0;dvdDate[index]=null;System.out.println("归还DVD成功!");}else {System.out.println("该DVD未借出!");}}System.out.println("-------归还DVD结束-------\n");}//系统初始化private static void init() {int size = 100;dvdName=new String[size];dvdPrice=new int[size];dvdStatus=new int[size];dvdDate=new String[size];dvdName[0]="速度与激情1";dvdPrice[0]=3;dvdStatus[0]= 0;dvdDate[0]=null;dvdName[1]="速度与激情2";dvdPrice[1]=2;dvdStatus[1]= 1;dvdDate[1]="2021-05-20";dvdName[2]="速度与激情3";dvdPrice[2]=2;dvdStatus[2]= 0;dvdDate[2]=null;}}

加油加油!

基于数组,编写一个迷你DVD碟片租赁系统。相关推荐

  1. Java小程序,编写一个迷你DVD租借系统(控制台输出)

    用Java编写一个迷你DVD租借系统 要求实现以下功能: 借出排行榜 新 增 DVD 查 看 DVD 删 除 DVD 借 出 DVD 归 还 DVD 退 出 需要编写三个类 DVDSet类(定义存放的 ...

  2. 基于PYQT编写一个人脸识别软件(2)

    前言 以前在博客:基于PYQT编写一个人脸识别软件 中给出了我自己用PYQT编写的一个小软件.鉴于使用的是开源库--face_recogniton,尽管使用很简单,但是还有些问题,比如:识别黄种人时效 ...

  3. Java黑皮书课后题第10章:***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序。设计一个名为Tax类,该类包含下面的实例数据域

    ***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序.设计一个名为Tax类,该类包含下面的实例数据域 题目 程序解释 代码 Test8.java Test8_Tax.jav ...

  4. C++ 利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名、学号、年龄、语文成绩、数学成绩、英语成绩、三门课总分等

    利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名.学号.年龄.语文成绩.数学成绩.英语成绩.三门课总分等,具体要求如下: (1)要求通过键盘完成各位小学生的信息录入( ...

  5. 基于Python编写一个B站全自动抽奖的小程序

    本文将利用Python编写一个B站全自动抽奖的小程序,可以实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖.这样就能不错过任何一个可以暴富的机会了.需要的可以参考一 ...

  6. oracle oam nginx,如何基于 OAM 编写一个扩展 Trait?

    本文首次为大家带来 OAM 体系中的实战演练介绍,先讲解 OAM Workload 和 Trait 相关知识及它们的交互逻辑,接下来手把手教大家如何通过实现自定义 CRD 和 Controller 实 ...

  7. Android开发:基于Kotlin编写一个简易计算器

    目录 前言 Kotlin学习tips 界面绘制及控件绑定 UI界面绘制 控件绑定 Button点击事件 运算逻辑 整体逻辑 边界情况 输入展示 点击数字键 点击运算符键 点击"=" ...

  8. 基于OpenGL编写一个简易的2D渲染框架-03 渲染基本几何图形

    阅读文章前需要了解的知识,你好,三角形:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/ 要 ...

  9. 编写html文件不能在哪个软件中编写,html用什么软件编写?使用Dreamweaver8编写一个html文件的方法--系统之家...

    Dreamweaver8是一款集网页制作和管理网站于一身的所见即所得网页编辑器, 很多小伙最近再问Dreamweaver8怎么才能编写html文件?如何使用Dreamweaver8制作一个html文件 ...

最新文章

  1. CVPR 2020 SLAM挑战赛冠军方案解读,搞定超难数据集TartanAir
  2. 浅谈高风险多团队协同的项目管理方法
  3. MySQL数据库:触发器Trigger
  4. BZOJ4388 : JOI2012 invitation
  5. 如何正确使用工业级交换机?
  6. css 滤镜之AlphaImageLoader
  7. [Bzoj1010][HNOI2008]玩具装箱toy(斜率优化)
  8. 富文本常用封装(NSAttributedString浅析)
  9. 复变函数 —— 4. 什么是调和函数
  10. Wei Yang Bryan Lim, etc. Federated Learning in Mobile Edge Networks: A Comprehensive Survey.
  11. 锐捷无线网络优化 之 精准配置无线接入点发射功率
  12. 音频频谱图(自定义View——进阶篇2)
  13. NB-IoT的DRX、eDRX、PSM三个模式是什么?
  14. YAML第一章 基本概念及语法
  15. android 六棱形分析图,[转载]菱形整理形态、三角形整理形态图解及分析
  16. 今日金融词汇--- TO G 业务,是什么
  17. Anroid BLE蓝牙(手机分别作为中心设备和外围设备)
  18. JAVA.SE Socket网络编程
  19. ztree java 异步_使用 zTree 异步加载
  20. 测试驱动开发(TDD)

热门文章

  1. 3DMAX2009 笔记 导出FBX设置
  2. GitHub删除仓库或修改仓库名
  3. Activiti工作流浅析
  4. this.$set用法
  5. 关于如何使用 python 下载CSV格式数据
  6. NAVN-LNXG-XHHX-5NOO
  7. Python和是c语言类似吗,Python和c语言的主要区别在哪
  8. buu [NCTF2019]babyRSA
  9. 存储瘫痪导致虚拟化平台丢失虚拟机该怎么解决
  10. web前端全栈0基础到精通(祺)16