任务需求:
模拟电影DVD在线销售系统:
1)能存储n个电影的DVD对象,数量不确定;
2)能获取电影DVD对象的总数;
3)能够循环取出电影DVD对象;
4)在指定的位置添加电影DVD;
5)删除某个电影。
6)添加销售冠军电影的DVD对象;
7)能删除销量最后一名的电影DVD对象。
所需知识点:
1.List接口的实现类ArrayList、LinkedList;
2.对集合信息的增删改查;
3.增强for循环
代码如下:
package cn.demo.main;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Demo();
}
private static void Demo() {
LinkedList<ArrayList<String>> llist = new LinkedList<>() ; //存储DVD信息。
Scanner scr = new Scanner(System.in);
System.out.println("请输入添加DVD对象的个数:");
int number = scr.nextInt() ;
for(int i=0;i<number;i++){
System.out.println("请输入此DVD对象中存储的电影个数:");
int number1 = scr.nextInt() ;
ArrayList<String> list = new ArrayList<>() ; //存储DVD中的电影。
for(int j=0;j<number1;j++){
String movieName = scr.next() ;
list.add(movieName); //向ArrayList中存储电影。
}
llist.add(list); //向LinkedList中存储DVD。
}
int newflag = 1;
while(newflag==1){
MainShow();
int flag = scr.nextInt() ;
if(flag==1){
Demo1(llist, scr);
}else if(flag==2){
Demo2(llist);
}else if(flag==3){
Demo3(llist, scr, flag);
}else if(flag==4){
Demo4(llist, scr);
}else{
System.out.println("退出!");
newflag=0;
}
}
}
private static void Demo4(LinkedList<ArrayList<String>> llist, Scanner scr) {
System.out.println("输入需要删除电影所属DVD的序号:");
int index6 = scr.nextInt() ;
System.out.println("输入需要删除的电影名称:");
String movieName = scr.next() ;
int newIndex1 = 1 ;
for (ArrayList<String> list : llist) {
if(newIndex1==index6){
for(int i=0;i<list.size();i++){
if(movieName.equals(list.get(i))){
list.remove(i);
}
}
System.out.println("删除完成!");
System.out.println("删除结果为:");
System.out.println(list);
break;
}
newIndex1++;
}
}
private static void Demo3(LinkedList<ArrayList<String>> llist, Scanner scr,
int flag) {
System.out.println("DVD列表如下:");
int index = 1 ;
for (ArrayList<String> l : llist) {
Iterator<String> itr = l.iterator() ;
System.out.print("DVD"+index+"中的电影有:");
while(itr.hasNext()){
System.out.print(itr.next()+" ");
}
System.out.println();
index++;
}
System.out.println("通过上面的列表输入你想要修改的DVD和电影:");
System.out.println("修改的DVD序号:");
int newindex = scr.nextInt() ;
System.out.println("修改的电影名称:");
String newmovie = scr.next() ;
int newIndex1 = 1 ;
for (ArrayList<String> list : llist) {
if(newIndex1==newindex){
int flag5 = 0 ;
for(int i=0;i<list.size();i++){
if(newmovie.equals(list.get(i))){
list.remove(i);
System.out.println("请输入修改后的电影名称:");
String moviename = scr.next() ;
list.add(moviename);
System.out.println("修改成功!");
flag5 = 1;
System.out.println("修改结果为:");
System.out.println(list);
break;
}
}
if(flag5==0){
System.out.println("此DVD中没有这个电影!");
}
break;
}
newIndex1++;
}
}
private static void Demo2(LinkedList<ArrayList<String>> llist) {
int index = 1 ;
System.out.println("------查看界面------");
for (ArrayList<String> l : llist) {
Iterator<String> itr = l.iterator() ;
System.out.print("DVD"+index+"中的电影有:");
while(itr.hasNext()){
System.out.print(itr.next()+" ");
}
System.out.println();
index++;
}
}
private static void Demo1(LinkedList<ArrayList<String>> llist, Scanner scr) {
System.out.println("------增加界面------");
System.out.println("请输入增加的DVD个数:");
int num = scr.nextInt() ;
for(int i=0;i<num;i++){
System.out.println("请输入此DVD对象中存储的电影个数:");
int number3 = scr.nextInt() ;
ArrayList<String> list2 = new ArrayList<>() ; //存储DVD中的电影。
System.out.println("添加的电影名字为:");
for(int j=0;j<number3;j++){
String movieName = scr.next() ;
list2.add(movieName); //向ArrayList中存储电影。
}
System.out.println("请输入添加的位置:");
try{
int index = scr.nextInt() ;
llist.add(index,list2); //向LinkedList中存储DVD。
System.out.println("在"+index+"位置上,添加成功!");
}catch(Exception e){
System.out.println("输入的index超出了集合本身长度!");
}
}
}
private static void MainShow() {
System.out.println("------功能界面------");
System.out.println("-------1.增加-------");
System.out.println("-------2.查看-------");
System.out.println("-------3.修改-------");
System.out.println("-------4.删除-------");
System.out.println("-------5.退出-------");
System.out.println("请输入你的选择:");
}
}