sujet
Développez un mini gestionnaire de DVD pour une vidéothèque pour gérer les disques DVD, y compris les fonctions suivantes: ajouter un DVD, afficher un DVD, supprimer un DVD, prêter un DVD et renvoyer un DVD.
conception:
1) Catégorie de DVD (attributs: id, nom, lendCount, lendDate, status) (la valeur par défaut est unique pour chaque DVD) Le champ lendCount est incrémenté de 1 pour chaque prêt
2) Classe DVDDB (utilisée pour enregistrer plusieurs DVD)
3) Classe DVDManager (fournit des fonctions de manipulation), ajouter un DVD, afficher un DVD, supprimer un DVD, prêter un DVD, renvoyer un DVD, une liste de classement de DVD (par ordre décroissant du nombre de prêts), quitter le système
Image d'effet
Utilisez ArrayList pour résoudre le problème
Classes et méthodes utilisées:
(1) Classes inhérentes à Java
java.util.ArrayList, classe, méthode add, méthode get, méthode remove
Méthode de format de classe java.text.SimpleDateFormat (affiche la date actuelle au format spécifié "aaaa-MM-jj HH: mm: ss")
java.util.Scanner classe méthode next et méthode nextInt
(2) Classe personnalisée
Classe DVD Classe DVDDB Classe DVDManager Classe DVDManagerSystem
Catégorie DVD
public class DVD {
private int id;
private String name;
private int lendCount;
private String lendDate;
private boolean status;
public DVD ( ) {
}
public DVD ( int id, String name) {
this . id = id;
this . name = name;
this . lendCount = 0 ;
this . status= true ;
}
public int getId ( ) {
return id;
}
public void setId ( int id) {
this . id = id;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getLendCount ( ) {
return lendCount;
}
public void setLendCount ( int lendCount) {
this . lendCount = lendCount;
}
public String getLendDate ( ) {
return lendDate;
}
public void setLendDate ( String lendDate) {
this . lendDate = lendDate;
}
public boolean isStatus ( ) {
return status;
}
public void setStatus ( boolean status) {
this . status = status;
}
}
Classe DVDDB
import java. util. ArrayList;
public class DVDDB {
private ArrayList< DVD> dvddb;
public DVDDB ( ArrayList< DVD> dvddb) {
this . dvddb = dvddb;
}
public DVDDB ( ) {
}
public ArrayList< DVD> getDvddb ( ) {
return dvddb;
}
public void setDvddb ( ArrayList< DVD> dvddb) {
this . dvddb = dvddb;
}
}
Classe DVDManager
import java. text. SimpleDateFormat;
import java. util. ArrayList;
import java. util. Date;
public class DVDManager {
public void addDVD ( DVDDB dvddb, DVD dvd) {
dvddb. getDvddb ( ) . add ( dvd) ;
}
public void lookDVD ( DVDDB dvddb) {
System. out. println ( "序号 " + " 状态" + " 名称" + " 借出日期" ) ;
ArrayList< DVD> dvds = dvddb. getDvddb ( ) ;
for ( int i = 0 ; i < dvds. size ( ) ; i++ ) {
DVD dvd = dvds. get ( i) ;
String lendStatus;
if ( dvd. isStatus ( ) ) {
lendStatus = "可借" ;
} else {
lendStatus = "已借出" ;
}
System. out. println ( dvd. getId ( ) + " " + lendStatus + " " + dvd. getName ( ) + " " + dvd. getLendDate ( ) ) ;
}
}
public void deleteDVD ( DVDDB dvddb, int id) {
for ( int i = 0 ; i < dvddb. getDvddb ( ) . size ( ) ; i++ ) {
if ( dvddb. getDvddb ( ) . get ( i) . getId ( ) == id) {
dvddb. getDvddb ( ) . remove ( i) ;
}
}
}
public void sendDVD ( DVDDB dvddb, int id) {
for ( int i = 0 ; i < dvddb. getDvddb ( ) . size ( ) ; i++ ) {
if ( dvddb. getDvddb ( ) . get ( i) . getId ( ) == id) {
dvddb. getDvddb ( ) . get ( i) . setStatus ( false ) ;
dvddb. getDvddb ( ) . get ( i) . setLendCount ( dvddb. getDvddb ( ) . get ( i) . getLendCount ( ) + 1 ) ;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
String time = simpleDateFormat. format ( new Date ( ) ) ;
dvddb. getDvddb ( ) . get ( i) . setLendDate ( time) ;
}
}
}
public void returnDVD ( DVDDB dvddb, int id) {
for ( int i = 0 ; i < dvddb. getDvddb ( ) . size ( ) ; i++ ) {
if ( dvddb. getDvddb ( ) . get ( i) . getId ( ) == id) {
dvddb. getDvddb ( ) . get ( i) . setStatus ( true ) ;
dvddb. getDvddb ( ) . get ( i) . setLendDate ( "无" ) ;
}
}
}
public void rankDVD ( DVDDB dvddb) {
DVDDB temp = new DVDDB ( new ArrayList < DVD> ( ) ) ;
for ( int i = 0 ; i < dvddb. getDvddb ( ) . size ( ) ; i++ ) {
temp. getDvddb ( ) . add ( dvddb. getDvddb ( ) . get ( i) ) ;
}
int max = 0 ;
for ( int i = 0 ; i < temp. getDvddb ( ) . size ( ) ; i++ ) {
max = i;
for ( int j = i+ 1 ; j < temp. getDvddb ( ) . size ( ) ; j++ ) {
if ( temp. getDvddb ( ) . get ( max) . getLendCount ( ) < temp. getDvddb ( ) . get ( j) . getLendCount ( ) ) {
max = j;
}
}
if ( i != max) {
DVD dvd = temp. getDvddb ( ) . get ( i) ;
temp. getDvddb ( ) . add ( i, temp. getDvddb ( ) . get ( max) ) ;
temp. getDvddb ( ) . add ( max, dvd) ;
}
}
lookDVD ( temp) ;
}
}
Client (ou test) DVDManagerSystem
import java. util. ArrayList;
import java. util. Scanner;
public class DVDManagerSystem {
public static void main ( String[ ] args) {
DVDDB dvddb = new DVDDB ( new ArrayList < DVD> ( ) ) ;
DVDManager dvdManager = new DVDManager ( ) ;
Scanner sc = new Scanner ( System. in) ;
while ( true ) {
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.DVD排行榜" ) ;
System. out. println ( "7.退出" ) ;
System. out. println ( "------------------------------" ) ;
System. out. println ( "请选择功能" ) ;
int i = sc. nextInt ( ) ;
switch ( i) {
case 1 :
System. out. println ( "请输入要添加的DVD的id号和名字(用回车分割输入)" ) ;
int id = sc. nextInt ( ) ;
String name = sc. next ( ) ;
DVD dvd = new DVD ( id, name) ;
dvdManager. addDVD ( dvddb, dvd) ; break ;
case 2 :
dvdManager. lookDVD ( dvddb) ; break ;
case 3 :
System. out. println ( "请输入要删除的DVD的id号" ) ;
int dvdDelete = sc. nextInt ( ) ;
dvdManager. deleteDVD ( dvddb, dvdDelete) ;
break ;
case 4 :
System. out. println ( "请输入要借的DVD的id号" ) ;
int dvdLend = sc. nextInt ( ) ;
dvdManager. sendDVD ( dvddb, dvdLend) ; break ;
case 5 :
System. out. println ( "请输入要归还的DVD的id号" ) ;
int dvdReturn = sc. nextInt ( ) ;
dvdManager. returnDVD ( dvddb, dvdReturn) ; break ;
case 6 : dvdManager. rankDVD ( dvddb) ; break ;
case 7 :
System. out. println ( "期待您的下次使用!再见!" ) ; return ;
default :
System. out. println ( "输入的数字不正确,请重新输入" ) ;
}
while ( true ) {
System. out. println ( "------------------------------" ) ;
System. out. println ( "按0返回" ) ;
int j = sc. nextInt ( ) ;
if ( j == 0 ) {
break ;
} else {
System. out. println ( "输入数据错误,请重试" ) ;
}
}
}
}
}
Résultats d'exécution du programme
Utilisez Vector pour résoudre le problème
Utilisez un tableau pour résoudre le problème