使用java设计一个简单的多媒体系统,基类MyMedia(String mediaName, float price, String press, String artist)类,其中包含MyBook(String bookISBN,String editor)、MyCd(String cdISRC)及MyTape(String tapeISRC)三个子类,三个子类中都有print方法输出信息。按照类的设计模式,完成他们的插入book、删除book、查找book,插入cd、删除cd、查找cd,插入tape、删除tape、查找tape以及查找全部媒体的功能。MyMedia类中有并且还拥有一个interfaceMedias接口和一个MediaTest测试类,interfaceMedias接口的方法有public int addMedia(Vector medias,MyMedia tempMedia); public int deleteMedia(Vector medias); public MyMedia findMedia(Vector medias,String artist); public void printlnMedia(Vector medias); public String input(String); 并且MediaTest测试类实现了interfaceMedias接口,同时所有的数据都是由用户自己输入
时间: 2024-02-13 11:07:28 浏览: 73
探究C++中string类的实现原理以及扩展使用
好的,我明白您的问题。下面是Java代码实现:
```
import java.util.Scanner;
import java.util.Vector;
// 定义媒体基类
class MyMedia {
protected String mediaName; // 媒体名称
protected float price; // 媒体价格
protected String press; // 出版社
protected String artist; // 艺术家
// 构造函数
public MyMedia(String mediaName, float price, String press, String artist) {
this.mediaName = mediaName;
this.price = price;
this.press = press;
this.artist = artist;
}
// 输出媒体信息
public void print() {
System.out.println("媒体名称:" + mediaName);
System.out.println("媒体价格:" + price);
System.out.println("出版社:" + press);
System.out.println("艺术家:" + artist);
}
}
// 定义图书类
class MyBook extends MyMedia {
private String bookISBN; // 图书ISBN
private String editor; // 编辑
// 构造函数
public MyBook(String mediaName, float price, String press, String artist, String bookISBN, String editor) {
super(mediaName, price, press, artist);
this.bookISBN = bookISBN;
this.editor = editor;
}
// 输出图书信息
public void print() {
super.print();
System.out.println("图书ISBN:" + bookISBN);
System.out.println("编辑:" + editor);
}
}
// 定义CD类
class MyCD extends MyMedia {
private String cdISRC; // CD ISRC
// 构造函数
public MyCD(String mediaName, float price, String press, String artist, String cdISRC) {
super(mediaName, price, press, artist);
this.cdISRC = cdISRC;
}
// 输出CD信息
public void print() {
super.print();
System.out.println("CD ISRC:" + cdISRC);
}
}
// 定义磁带类
class MyTape extends MyMedia {
private String tapeISRC; // 磁带ISRC
// 构造函数
public MyTape(String mediaName, float price, String press, String artist, String tapeISRC) {
super(mediaName, price, press, artist);
this.tapeISRC = tapeISRC;
}
// 输出磁带信息
public void print() {
super.print();
System.out.println("磁带ISRC:" + tapeISRC);
}
}
// 定义媒体接口
interface interfaceMedias {
public int addMedia(Vector medias, MyMedia tempMedia); // 插入媒体
public int deleteMedia(Vector medias); // 删除媒体
public MyMedia findMedia(Vector medias, String artist); // 查找媒体
public void printlnMedia(Vector medias); // 输出所有媒体信息
public String input(String str); // 输入提示信息
}
// 实现媒体接口
class MediaTest implements interfaceMedias {
// 插入媒体
public int addMedia(Vector medias, MyMedia tempMedia) {
medias.addElement(tempMedia);
System.out.println("添加媒体成功!");
return 0;
}
// 删除媒体
public int deleteMedia(Vector medias) {
Scanner input = new Scanner(System.in);
System.out.print("请输入要删除的媒体名称:");
String mediaName = input.nextLine();
int size = medias.size();
for (int i = 0; i < size; i++) {
MyMedia media = (MyMedia) medias.elementAt(i);
if (media.mediaName.equals(mediaName)) {
medias.removeElementAt(i);
System.out.println("删除媒体成功!");
return 0;
}
}
System.out.println("没有找到媒体!");
return -1;
}
// 查找媒体
public MyMedia findMedia(Vector medias, String artist) {
int size = medias.size();
for (int i = 0; i < size; i++) {
MyMedia media = (MyMedia) medias.elementAt(i);
if (media.artist.equals(artist)) {
System.out.println("找到媒体:");
return media;
}
}
System.out.println("没有找到媒体!");
return null;
}
// 输出所有媒体信息
public void printlnMedia(Vector medias) {
int size = medias.size();
for (int i = 0; i < size; i++) {
MyMedia media = (MyMedia) medias.elementAt(i);
media.print();
System.out.println("");
}
}
// 输入提示信息
public String input(String str) {
Scanner input = new Scanner(System.in);
System.out.print(str);
return input.nextLine();
}
}
// 主类
public class MultimediaSystem {
public static void main(String[] args) {
Vector medias = new Vector();
MediaTest mediaTest = new MediaTest();
while (true) {
System.out.println("请选择操作:");
System.out.println("1.插入图书\t2.删除图书\t3.查找图书\t4.插入CD\t5.删除CD\t6.查找CD\t7.插入磁带\t8.删除磁带\t9.查找磁带\t10.查找所有媒体\t11.退出");
Scanner input = new Scanner(System.in);
int choice = input.nextInt();
switch (choice) {
case 1:
// 插入图书
String mediaName = mediaTest.input("请输入图书名称:");
float price = Float.parseFloat(mediaTest.input("请输入图书价格:"));
String press = mediaTest.input("请输入出版社:");
String artist = mediaTest.input("请输入艺术家:");
String bookISBN = mediaTest.input("请输入图书ISBN:");
String editor = mediaTest.input("请输入编辑:");
MyBook book = new MyBook(mediaName, price, press, artist, bookISBN, editor);
mediaTest.addMedia(medias, book);
break;
case 2:
// 删除图书
mediaTest.deleteMedia(medias);
break;
case 3:
// 查找图书
String artist1 = mediaTest.input("请输入艺术家:");
mediaTest.findMedia(medias, artist1);
break;
case 4:
// 插入CD
mediaName = mediaTest.input("请输入CD名称:");
price = Float.parseFloat(mediaTest.input("请输入CD价格:"));
press = mediaTest.input("请输入出版社:");
artist = mediaTest.input("请输入艺术家:");
String cdISRC = mediaTest.input("请输入CD ISRC:");
MyCD cd = new MyCD(mediaName, price, press, artist, cdISRC);
mediaTest.addMedia(medias, cd);
break;
case 5:
// 删除CD
mediaTest.deleteMedia(medias);
break;
case 6:
// 查找CD
String artist2 = mediaTest.input("请输入艺术家:");
mediaTest.findMedia(medias, artist2);
break;
case 7:
// 插入磁带
mediaName = mediaTest.input("请输入磁带名称:");
price = Float.parseFloat(mediaTest.input("请输入磁带价格:"));
press = mediaTest.input("请输入出版社:");
artist = mediaTest.input("请输入艺术家:");
String tapeISRC = mediaTest.input("请输入磁带ISRC:");
MyTape tape = new MyTape(mediaName, price, press, artist, tapeISRC);
mediaTest.addMedia(medias, tape);
break;
case 8:
// 删除磁带
mediaTest.deleteMedia(medias);
break;
case 9:
// 查找磁带
String artist3 = mediaTest.input("请输入艺术家:");
mediaTest.findMedia(medias, artist3);
break;
case 10:
// 查找所有媒体
mediaTest.printlnMedia(medias);
break;
case 11:
// 退出
System.exit(0);
default:
System.out.println("输入错误,请重新输入!");
break;
}
}
}
}
```
这个多媒体系统通过输入提示信息,实现了插入、删除、查找、输出所有媒体信息等功能。同时,图书、CD、磁带三个子类都有自己的属性,可以输出自己的信息。
阅读全文