java初级阶段项目之DVD租赁(详细)
一:功能介绍
- 用户登录(有三次机会,分别有对应的提示)
输入错误时的提示:
登录成功:

- 查看所有的DVD数据信息:

- 添加DVD

- 查看新增的DVD

- 删除DVD
删除失败:

删除成功:

删除结果查询:
所有DVD数据集合中:
:

- 借出DVD
借出失败:

借出成功:

- 查看借出列表

- 归还DVD:

- 退出:

二:代码
- 项目的主类(DVDMain类)
此代码中包含整个代码运行的主要流程。
主要包括:用户登录,登录成功后的操作处理
package com.hire;//包
// 这个是DVD项目的主类,用来执行主菜单,完成整个项目的流程
import java.util.ArrayList;
import java.util.Scanner;
public class DVDMain {
public static void main(String[] args) {
//首先创建DVD类型的容器,用于做数据的处理。
ArrayList<DVD> array=new ArrayList<DVD>();
//用于存储新增加的DVD
ArrayList<DVD> arr=new ArrayList<DVD>();
//用于存储借出列表
ArrayList<DVD> rentArray=new ArrayList<DVD>();
//对DVD系统进行初始化
DVDManagement.initDvd(array,rentArray);
//用户登录
DVD.setUsername("admin");
DVD.setPassword("123456");
boolean adminFlag=false;
for(int i=0;i<3;i++) {
DVDManagement.userAdminSystem();
if((DVD.getUsername().equals(DVDManagement.username))
&&(DVD.getPassword().equals(DVDManagement.password))) {
adminFlag=true;break;
}
else {
if(i<2)System.out.println("您输入的信息有误!您还有"+(2-i)+"次机会!");
}
}
//登录成功
if(adminFlag) {
System.out.println("---------\t欢迎来到闵小太阳DVD租赁屋\t---------");
while(true) {
System.out.println("请输入您想要进行的操作:");
System.out.println("1:查看所有的DVD");
System.out.println("2:查看最近新增的DVD");
System.out.println("3:查看借出列表");
System.out.println("4:添加DVD");
System.out.println("5:删除DVD");
System.out.println("6:借出DVD");
System.out.println("7:归还DVD");
System.out.println("8:退出");
Scanner sc=new Scanner(System.in);
int operationNumber=sc.nextInt();
boolean flag=false;
switch( operationNumber) {
case 1:DVDManagement.checkAllDVD(array); break;
case 2:DVDManagement.preferenceNewDVD(arr); break;
case 3:DVDManagement.loanListDVD(rentArray); break;
case 4:DVDManagement.addDVD(array,arr); break;
case 5:DVDManagement.removeDVD(array, arr); break;
case 6:DVDManagement.rentDVD(array,arr,rentArray); break;
case 7:DVDManagement.returnDVD(array,arr,rentArray); break;
case 8:
default:System.out.println("谢谢您的使用!QAQ");
System.exit(0); break;
//(java虚拟机退出)JVM退出
}
}
}
//登录失败
else System.out.println("您的账号已经被锁定,请与管理员联系!");
}
}
- 项目的属性和行为类(DVD类)
属性主要包括DVD名称,DVD借出时间,DVD借出次数,DVD当前的借出状态。
行为主要是对上述属性的封装。
package com.hire;
/*
* 本类是存放本项目中所需要的基本变量,从而对基本变量进行
* */
public class DVD {
//所有的成员均用private修饰,以保护数据的安全性
private static String username;
private static String password;
private String dvdName;//DVD名字
private String hireDate;//借出日期
private int hireCounts;//借出次数
private String dvdStatus;//借出状态
//无参构造方法
public DVD() {
}
//有参构造方法,用来获取每个对象的值
public DVD(String dvdName, String hireDate, int hireCounts, String dvdStatus) {
this.dvdName = dvdName;
this.hireDate = hireDate;
this.hireCounts = hireCounts;
this.dvdStatus = dvdStatus;
}
//getXxx()方法和setXxx()方法,用来获取和设置数据
public String getDvdName() {
return dvdName;
}
public void setDvdName(String dvdName) {
this.dvdName = dvdName;
}
public String getHireDate() {
return hireDate;
}
public void setHireDate(String hireDate) {
this.hireDate = hireDate;
}
public int getHireCounts() {
return hireCounts;
}
public void setHireCounts(int hireCounts) {
this.hireCounts = hireCounts;
}
public String getDvdStatus() {
return dvdStatus;
}
public void setDvdStatus(String dvdStatus) {
this.dvdStatus = dvdStatus;
}
public static String getUsername() {
return username;
}
public static void setUsername(String username) {
DVD.username = username;
}
public static String getPassword() {
return password;
}
public static void setPassword(String password) {
DVD.password = password;
}
}
- 项目实现各个功能的子代码块合集(DVDManagement数据管理类)
包括一下类:(包含了集合的增删改查)
查看当前所有DVD
查看当前新增的DVD
查看DVD借出列表
增加DVD
删除DVD
借出DVD
归还DVD
package com.hire;
import java.util.ArrayList;
import java.util.Scanner;
public class DVDManagement {
//用户登录系统
public static String username;//用于接收用户键入的用户名
public static String password;//用于接收用户键入的密码
public static void userAdminSystem() {
Scanner sc=new Scanner(System.in);
System.out.println("请输入您的用户名:");
username=sc.nextLine();
System.out.println("请输入您的密码:");
password=sc.nextLine();
}
//DVD初始化
public static void initDvd(ArrayList<DVD> array,ArrayList<DVD> array2) {
DVD data;
data=new DVD("千与千寻","0000/00/00",168,"未借出");
array.add(data);
data=new DVD("大鱼海棠","2019/06/06",133,"已借出");
array.add(data);
array2.add(data);
data=new DVD("扫毒","2018/12/06",10,"已借出");
array.add(data);
array2.add(data);
data=new DVD("星际穿越","0000/00/00",23,"未借出");
array.add(data);
data=new DVD("微微一笑","2016/11/23",133,"已借出");
array.add(data);
array2.add(data);
}
//查看所有的DVD
public static void checkAllDVD(ArrayList<DVD> array) {
//首先判断集合里面有没有数据
if(array.size()==0)
System.out.println("对不起!目前没有相应的数据提供给您!请回去重新做您的选择!");
else {
System.out.println("DVD名字\t\tDVD是否借出\t借出时间\t\t\t借出次数");
for(int i=0;i<array.size();i++) {
DVD a=array.get(i);
System.out.println(a.getDvdName()+"\t\t"+a.getDvdStatus()+"\t\t"+a.getHireDate()+"\t\t"+a.getHireCounts());
}
}
}
//查看最近新增的DVD
public static void preferenceNewDVD(ArrayList<DVD> arr) {
//首先判断集合里面有没有数据
if(arr.size()==0)
System.out.println("对不起!目前没有相应的数据提供给您!请回去重新做您的选择!");
else {
System.out.println("DVD名字\t\tDVD是否借出\t借出时间\t\t\t借出次数");
for(int i=0;i<arr.size();i++) {
DVD a=arr.get(i);
System.out.println(a.getDvdName()+"\t\t"+a.getDvdStatus()+"\t\t"+a.getHireDate()+"\t\t"+a.getHireCounts());
}
}
}
//查看借出列表
public static void loanListDVD(ArrayList<DVD> arr) {
//首先判断集合里面有没有数据
if(arr.size()==0)
System.out.println("对不起!目前没有相应的数据提供给您!请回去重新做您的选择!");
else {
System.out.println("DVD名字\t\tDVD是否借出\t借出时间\t\t\t借出次数");
for(int i=0;i<arr.size();i++) {
DVD a=arr.get(i);
System.out.println(a.getDvdName()+"\t\t"+a.getDvdStatus()+"\t\t"+a.getHireDate()+"\t\t"+a.getHireCounts());
}
}
}
/*
* 添加DVD
* arr1为存储所有DVD数据的集合
* arr2为存储新增的DVD数据的集合
* 所以,当添加了新的DVD时需要同时更新这两个集合
* */
public static void addDVD(ArrayList<DVD> arr1,ArrayList<DVD> arr2) {
Scanner sc = new Scanner(System.in);
String name;
while(true) {
System.out.println("请输入您想要添加的DVD名字:");
name = sc.nextLine();
boolean flag = false;//用来做标记,避免出现重复的DVD。
for(int x=0; x<arr1.size(); x++) {
DVD s = arr1.get(x);
if(s.getDvdName().equals(name)) {
flag = true;
break;
}
}
if(flag)
System.out.println("您输入的DVD已经存在,请回去重新输入您想要添加的DVD名字:");
else break;
}
//为新增的DVD设置初始数据,并同时更新添加给上述的两个集合
DVD s = new DVD(name,"0000/00/00",0,"未借出");
arr1.add(s);
arr2.add(s);
System.out.println("添加DVD成功");
}
//删除DVD
public static void removeDVD(ArrayList<DVD> arr1,ArrayList<DVD> arr2) {
System.out.println("请输入您想要删除DVD名字:");
Scanner sc = new Scanner(System.in);
String name=sc.nextLine();
/*
* 删除时需要判断新增集合和存储所有DVD的集合是否含有该DVD,
* 如果有,则需要同时都删除,而且,只要新增DVD集合中如果有,则所有DVD集合中肯定有该DVD
* */
//分别记录集合1,和集合2的位置
int index = -1,index1=-1;
for(int x=0; x<arr1.size(); x++) {
DVD s = arr1.get(x);
if(s.getDvdName().equals(name)) {
index = x;
break;
}
}
for(int x=0; x<arr2.size(); x++) {
DVD s = arr2.get(x);
if(s.getDvdName().equals(name)) {
index1 = x;
break;
}
}
//如果为-1则为该集合中不存在输入的DVD
if(index == -1) {
System.out.println("不好意思,你要删除DVD信息不存在,请回去重新你的选择");
}else {
//如果存在,则进行删除操作。
arr1.remove(index);
System.out.println("删除DVD成功");
if(index1!=-1)arr2.remove(index1);
}
}
/*
* 借出DVD
* 如果借出了,则同时需要更新集合1和集合2的借出状态。
* 并且同时更新借出列表(集合)
* */
public static void rentDVD(ArrayList<DVD> arr1,ArrayList<DVD> arr2,ArrayList<DVD> arr3) {
System.out.println("请输入您想要借出的DVD名字:");
Scanner sc=new Scanner(System.in);
String name=sc.nextLine();
int index=-1,index1=-1,index2=-1;
for(int i=0;i<arr1.size();i++) {
DVD s=arr1.get(i);
if(name.equals(s.getDvdName())) {
index=i;break;
}
}
for(int i=0;i<arr2.size();i++) {
DVD s=arr2.get(i);
if(name.equals(s.getDvdName())) {
index1=i;break;
}
}
if(index==-1)System.out.println("对不起!您想要的DVD不存在,请回去重新做您的选择!");
else {
System.out.println("请去前台取出您选择的DVD!");
DVD s=arr1.get(index);
DVD s1=new DVD(s.getDvdName(),"2019-07-31",s.getHireCounts()+1,"已借出");
arr1.set(index, s1);
if(index1!=-1) arr2.set(index1, s1);
arr3.add(s1);
}
}
/*
* 归还DVD
* 如果归还的DVD在集合1,和集合2中,则需要更新其借出状态,如果不存在在其中,则添加即可。
* 并同时删除借出列表(集合)的相对应的数据。
* */
public static void returnDVD(ArrayList<DVD> arr1,ArrayList<DVD> arr2,ArrayList<DVD> arr3) {
System.out.println("请输入您想要归还的DVD:");
Scanner sc=new Scanner(System.in);
String name=sc.nextLine();
int index=-1,index1=-1,index2=-1;
for(int i=0;i<arr1.size();i++) {
DVD s=arr1.get(i);
if(name.equals(s.getDvdName())) {
index=i;break;
}
}
for(int i=0;i<arr2.size();i++) {
DVD s=arr2.get(i);
if(name.equals(s.getDvdName())) {
index1=i;break;
}
}
for(int i=0;i<arr3.size();i++) {
DVD s=arr3.get(i);
if(name.equals(s.getDvdName())) {
index2=i;break;
}
}
DVD s1=new DVD();
if(index!=-1) {
DVD s=arr1.get(index);
s1=new DVD(s.getDvdName(),"未借出",s.getHireCounts()+1,s.getHireDate());
arr1.set(index, s1);
}
else {
DVD s=new DVD(name,"0000/00/00",1,"未借出");
arr1.add(s);
}
if(index1!=-1) {
DVD s=arr2.get(index1);
s1=new DVD(s.getDvdName(),s.getHireDate(),s.getHireCounts()+1,"未借出");
arr2.set(index1, s1);
}
else {
DVD s=new DVD(name,"0000/00/00",1,"未借出");
arr2.add(s);
}
if(index2!=-1)arr3.remove(index2);
System.out.println("归还成功!");
}
}
三:总结
一:代码总结:
1,首先是登录界面的登录功能超过三次锁定用户,要用三次循环,最后一次做特殊处理
2,然后是主菜单上的操作,为了实现不退出就一直执行的功能,选择用while(true){},在退出的时候选择用system.exit()退出虚拟机。
3,功能介绍方面的话需要注意的就是,在借出的时候,如果数据库中有,则借出,此时需要更新含有全部DVD信息的集合,
还有新增DVD信息的集合,还有储存DVD借出列表的集合。因为要改变其状态为借出,还要及时更新DVD借出列表
4,删除的时候要注意新增DVD集合中,也要及时进行更新。
这个项目介绍了如何创建一个简单的DVD租赁系统,包括用户登录、查看所有DVD、添加、删除和借还DVD等功能。用户登录有三次机会,登录成功后可以进行各种操作。在代码实现上,使用了主类(DVDMain)处理流程,属性和行为类(DVD)封装属性,以及数据管理类(DVDManagement)实现具体功能。在借出和删除操作中,注意了集合的实时更新以保持数据一致性。
602

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



