赞
踩
为某音像店开发一个迷你DVD管理器,实现DVD碟片的管理,包括如下功能:
1、新增DVD
2、查看DVD
3、删除DVD
4、借出DVD
5、归还DVD
1、明确需求
2、设计对象保存DVD信息
3、设计技术框架:采用Java技术
1、数据初始化
2、菜单切换
3、完成各种DVD管理操作
4、测试
统一性原则
界面风格统一:用相同方式展现相同类型的数据,如:日期类型
交互风格统一:用相同方式完成相同类型的操作,如:录入日期
美观性原则
界面美观大方
易用性原则
操作方式自然、易理解
1、如何保存DVD信息 ?
使用数组对象保存DVD信息 !
每张DVD的信息都包括名称、是否可借的状态以及借出的日期
包含多张DVD。
2、如何访问DVD信息?
创建DVD对象数组dvd后,访问第i+1张DVD信息
名称:dvd.name[i]
状态:dvd.state[i]
借出日期:dvd.date[i]
3、如何计算租金 ?
租金=日期差(租金/每天)
思路分析
需求说明
编写程序入口,实现菜单显示和切换
思路分析
创建方法startMenu(),实现菜单切换
创建方法returnMain() ,返回主菜单
编写类Start,实现程序入口
难点提示
使用switch语句实现菜单切换
需求说明
遍历dvd,获取数组元素信息,并进行显示
思路分析
在类DVDMgr中创建方法search(),完成功能要求
根据状态值输出“已借出”或“可借”
需求说明
向dvd数组增加一条DVD信息,实现新增DVD信息
思路分析
在类DVDMgr中创建方法add(),完成功能要求
定位新增位置
插入DVD信息,状态值为1
难点提示
定位新增位置:第一个name为null的位置
需求说明
按照输入的名称,删除指定DVD信息
思路分析
查找要删除元素
通过把后面的元素依次前移一位,实现删除;
最后一个不为空元素置空
难点提示
不允许删除借出状态的DVD
不存在指定DVD,给出提示
思路分析
查找要借出的DVD
判断是否存在
判断是否已借出
如果可借,修改state值
难点提示
各种情况的判断条件
需求说明
编写方法 returnDvd(),实现归还DVD,并计算租金
思路分析
查找要归还的DVD
判断是否存在
判断是否未借出
如果已借出,修改state值,并计算和输出租金
难点提示
字符串-日期转换
以下代码均写入DVD类里,
因此,粘贴代码时,要粘贴到类名为DVD的项目里
public void menu() throws ParseException { 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.退 还"); System.out.println("======================"); System.out.println("请选择:"); int index=input.nextInt(); switch (index){ case 1: case01();//添加DVD break; case 2: case02();//查看DVD break; case 3: case03();//删除DVD break; case 4: case04();//借出DVD break; case 5: case05();//归还DVD break; case 6: System.out.println("感谢使用本系统!"); System.exit(1); } } //下面是返回菜单的代码 public void getReturn() throws ParseException { System.out.println("输入0返回"); int i = input.nextInt(); if (i == 0) { menu(); } }
int[] indexs=new int[50];//用来存储DVD的索引 String[] states=new String[50];//用来存储DVD的状态,比如"已借出"或"可借" String[] names=new String[50];//用来存储DVD的名称 String[] dates=new String[50];//用来存储DVD的借出日期 Scanner input=new Scanner(System.in);//创建了一个名为 input 的Scanner对象,用于接收用户的输入 Date date=new Date(); public void init(){ indexs[0]=1; indexs[1]=2; indexs[2]=3; states[0]="已借出"; states[1]="可借"; states[2]="可借"; names[0]="罗马假日"; names[1]="风声鹤唳"; names[2]="浪漫满屋"; dates[0]="2010-7-7"; dates[1]=""; dates[2]=""; }
public static void main(String[] args) throws ParseException {
DvD dvd=new DvD();
dvd.init(); //1.加载初始化数据
dvd.menu(); //2.启动菜单
}
private void case01() throws ParseException { for (int i=0;i<names.length;i++){//这是一个for循环,用于遍历一个存储DVD信息的数组:names数组。 if (names[i]==null){//在每次迭代中,代码检查names[i]是否为null,以确定数组中是否有空闲位置可以新增DVD信息。 System.out.println("--->新增DVD"); System.out.println("输入DVD信息:名称"); String mc=input.next(); indexs[i]=i+1;//该行代码将当前DVD的索引存储在indexs数组中,索引的值为i+1。因为索引是从1开始的,而不是从0开始。 states[i]="可借"; names[i]=mc; dates[i]=""; break; } } System.out.println("添加成功"); System.out.println("=============="); getReturn(); }
public void case02() throws ParseException {
System.out.println("---->查看DVD");
System.out.println("序号\t状态\t 名称\t 借出日期");
for (int i=0;i<names.length;i++ ){
if(names[i]==null){
break;
}
System.out.println(indexs[i]+"\t"+states[i]+"\t"+names[i]+"\t\t"+dates[i]);
}
System.out.println("=========");
getReturn();
}
private void case03() throws ParseException { System.out.println("---->删除DVD"); System.out.println("输入要删除的名称:"); String num=input.next(); //这行代码从用户输入中读取一个字符串,并将其存储在名为num的变量中,用于表示用户想要删除的DVD名称或索引。 int i;int j; for (i=0;i<indexs.length;i++){//这是一个for循环,用于遍历存储DVD索引的indexs数组。 if (num.equals(names[i]) && "可借".equals(states[i])){ //如果用户输入的名称与names数组中的某个名称相匹配,并且该DVD的状态是“可借”,则执行以下操作: for (j=i;j<indexs.length-1;j++) {//该循环从匹配的索引i开始,将数组中该位置后的元素向前移动一个位置,以覆盖当前位置的DVD信息 states[j]=states[j+1]; names[j]=names[j+1]; dates[j]=dates[j+1]; } System.out.println("删除成功"); break; } //如果用户输入的是DVD的索引,并且对应索引的DVD状态是“已借出”,则打印“DVD已借出,无法删除”的消息 if (num.equals(indexs[i])&&"已借出".equals(states[i])){ System.out.println("DVD已借出,无法删除"); break; } //如果循环到达数组的末尾仍然没有找到匹配的DVD记录,则打印“未找到该DVD”的消息。 if (i==indexs.length-1){ System.out.println("未找到该DVD"); } } getReturn(); }
private void case04() throws ParseException { System.out.println("--->借出DVD"); System.out.println("选择你要借的dvd名称:"); String borrow=input.next();//通过输入流对象 input 获取用户输入的 DVD 名称,并将其存储在字符串变量 borrow中。 boolean boo=false;//声明一个布尔变量 boo,用于标记 DVD 是否已经被借走。 for (int i=0;i<indexs.length;i++){ if(borrow.equals(names[i])&& "可借".equals(states[i])){ //如果用户输入的 DVD 名称与当前遍历到的 DVD 名称相匹配,并且状态为 "可借",则执行以下操作 states[i] = "已借出";//状态变为已借出 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//获取当前日期,并将其格式化为字符串 String date2 = sdf.format(date); dates[i] = date2; System.out.println("成功借出"); break; } //如果用户输入的 DVD 名称与当前遍历到的 DVD 名称相匹配,并且状态为 "已借出",则执行以下操作 if(borrow.equals(names[i]) && "已借出".equals(states[i])){ boo=true;//DVD已经被借走 break; } if (i==indexs.length-1){//如果遍历到数组的最后一个元素仍然没有匹配的 DVD,则执行以下操作 System.out.println("未找到该DVD"); } } if (!boo){ System.out.println("已被借走"); } getReturn(); }
private void case05() throws ParseException { System.out.println("--->归还DVD"); System.out.println("输入归还DVD的名字:"); String name=input.next(); boolean boo=false; for (int i=0;i<indexs.length;i++){ if (name.equals(names[i]) && "已借出".equals(states[i])) { // 如果用户输入的书籍名字与当前遍历到的 DVD 名称相匹配,并且状态为 "已借出",则执行以下操作 System.out.println("请输入归还日期,如2024-1-1"); String date2=input.next();//获取归还时间的信息 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//创建一个日期格式化对象,用于解析日期字符串 //输入sdf.parse(date1).var变成下面这个↓ Date parse1 = sdf.parse(dates[i]);//归还日期 Date parse2 = sdf.parse(date2);//借出日期是date2 long time2 = parse2.getTime();//parse2.getTime.var(一定要输入.var) // 得到一个毫秒数,距离1900.1.1的毫秒数 long time1 =parse1.getTime(); long money=(time2-time1)/(1000*60*60*24);//单位原本是毫秒,除1000就是秒,再除分钟,小时,就是一天。 System.out.println("需要支付"+money+"元"); System.out.println("DVD已退还"); boo=true; states[i]="可借"; dates[i]=""; break; } if (name.equals(names[i]) && "可借".equals(states[i]) ){ System.out.println("DVD不存在"); boo=true; } }//如果 boo 仍然为 false,表示未找到对应的 DVD,则输出 "未找到对应DVD" 消息。 if (!boo){ System.out.println("DVD Not Found"); } getReturn(); }
package com.jr.dz13b; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Scanner; import java.util.Date; public class DvD { int[] indexs=new int[50];//用来存储DVD的索引 String[] states=new String[50];//用来存储DVD的状态,比如"已借出"或"可借" String[] names=new String[50];//用来存储DVD的名称 String[] dates=new String[50];//用来存储DVD的借出日期 Scanner input=new Scanner(System.in);//创建了一个名为 input 的Scanner对象,用于接收用户的输入 Date date=new Date(); public void init(){ indexs[0]=1; indexs[1]=2; indexs[2]=3; states[0]="已借出"; states[1]="可借"; states[2]="可借"; names[0]="罗马假日"; names[1]="风声鹤唳"; names[2]="浪漫满屋"; dates[0]="2010-7-7"; dates[1]=""; dates[2]=""; } public static void main(String[] args) throws ParseException { DvD dvd=new DvD(); dvd.init(); //1.加载初始化数据 dvd.menu(); //2.启动菜单 } public void menu() throws ParseException { 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.退 还"); System.out.println("======================"); System.out.println("请选择:"); int index=input.nextInt(); switch (index){ case 1: case01(); break; case 2: case02(); break; case 3: case03(); break; case 4: case04(); break; case 5: case05(); break; case 6: System.out.println("感谢使用本系统!"); System.exit(1); } } private void case01() throws ParseException { for (int i=0;i<names.length;i++){//这是一个for循环,用于遍历一个存储DVD信息的数组:names数组。 if (names[i]==null){//在每次迭代中,代码检查names[i]是否为null,以确定数组中是否有空闲位置可以新增DVD信息。 System.out.println("--->新增DVD"); System.out.println("输入DVD信息:名称"); String mc=input.next(); indexs[i]=i+1;//该行代码将当前DVD的索引存储在indexs数组中,索引的值为i+1。因为索引是从1开始的,而不是从0开始。 states[i]="可借"; names[i]=mc; dates[i]=""; break; } } System.out.println("添加成功"); System.out.println("=============="); getReturn(); } public void case02() throws ParseException { System.out.println("---->查看DVD"); System.out.println("序号\t状态\t 名称\t 借出日期"); for (int i=0;i<names.length;i++ ){ if(names[i]==null){ break; } System.out.println(indexs[i]+"\t"+states[i]+"\t"+names[i]+"\t\t"+dates[i]); } System.out.println("========="); getReturn(); } private void case03() throws ParseException { System.out.println("---->删除DVD"); System.out.println("输入要删除的名称:"); String num=input.next(); //这行代码从用户输入中读取一个字符串,并将其存储在名为num的变量中,用于表示用户想要删除的DVD名称或索引。 int i;int j; for (i=0;i<indexs.length;i++){//这是一个for循环,用于遍历存储DVD索引的indexs数组。 if (num.equals(names[i]) && "可借".equals(states[i])){ //如果用户输入的名称与names数组中的某个名称相匹配,并且该DVD的状态是“可借”,则执行以下操作: for (j=i;j<indexs.length-1;j++) {//该循环从匹配的索引i开始,将数组中该位置后的元素向前移动一个位置,以覆盖当前位置的DVD信息 states[j]=states[j+1]; names[j]=names[j+1]; dates[j]=dates[j+1]; } System.out.println("删除成功"); break; } //如果用户输入的是DVD的索引,并且对应索引的DVD状态是“已借出”,则打印“DVD已借出,无法删除”的消息 if (num.equals(indexs[i])&&"已借出".equals(states[i])){ System.out.println("DVD已借出,无法删除"); break; } //如果循环到达数组的末尾仍然没有找到匹配的DVD记录,则打印“未找到该DVD”的消息。 if (i==indexs.length-1){ System.out.println("未找到该DVD"); } } getReturn(); } private void case04() throws ParseException { System.out.println("--->借出DVD"); System.out.println("选择你要借的dvd名称:"); String borrow=input.next();//通过输入流对象 input 获取用户输入的 DVD 名称,并将其存储在字符串变量 borrow中。 boolean boo=false;//声明一个布尔变量 boo,用于标记 DVD 是否已经被借走。 for (int i=0;i<indexs.length;i++){ if(borrow.equals(names[i])&& "可借".equals(states[i])){ //如果用户输入的 DVD 名称与当前遍历到的 DVD 名称相匹配,并且状态为 "可借",则执行以下操作 states[i] = "已借出";//状态变为已借出 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//获取当前日期,并将其格式化为字符串 String date2 = sdf.format(date); dates[i] = date2; System.out.println("成功借出"); break; } //如果用户输入的 DVD 名称与当前遍历到的 DVD 名称相匹配,并且状态为 "已借出",则执行以下操作 if(borrow.equals(names[i]) && "已借出".equals(states[i])){ boo=true;//DVD已经被借走 break; } if (i==indexs.length-1){//如果遍历到数组的最后一个元素仍然没有匹配的 DVD,则执行以下操作 System.out.println("未找到该DVD"); } } if (!boo){ System.out.println("已被借走"); } getReturn(); } private void case05() throws ParseException { System.out.println("--->归还DVD"); System.out.println("输入归还DVD的名字:"); String name=input.next(); boolean boo=false; for (int i=0;i<indexs.length;i++){ if (name.equals(names[i]) && "已借出".equals(states[i])) { // 如果用户输入的书籍名字与当前遍历到的 DVD 名称相匹配,并且状态为 "已借出",则执行以下操作 System.out.println("请输入归还日期,如2024-1-1"); String date2=input.next();//获取归还时间的信息 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//创建一个日期格式化对象,用于解析日期字符串 //输入sdf.parse(date1).var变成下面这个↓ Date parse1 = sdf.parse(dates[i]);//归还日期 Date parse2 = sdf.parse(date2);//借出日期是date2 long time2 = parse2.getTime();//parse2.getTime.var(一定要输入.var) // 得到一个毫秒数,距离1900.1.1的毫秒数 long time1 =parse1.getTime(); long money=(time2-time1)/(1000*60*60*24);//单位原本是毫秒,除1000就是秒,再除分钟,小时,就是一天。 System.out.println("需要支付"+money+"元"); System.out.println("DVD已退还"); boo=true; states[i]="可借"; dates[i]=""; break; } if (name.equals(names[i]) && "可借".equals(states[i]) ){ System.out.println("DVD不存在"); boo=true; } }//如果 boo 仍然为 false,表示未找到对应的 DVD,则输出 "未找到对应DVD" 消息。 if (!boo){ System.out.println("DVD Not Found"); } getReturn(); } public void getReturn() throws ParseException { System.out.println("输入0返回"); int i = input.nextInt(); if (i == 0) { menu(); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。