实验四
实验名称: 歌曲管理系统
实验目的: 掌握类的定义, JAVA 应用程序的设计与实现。
实验时间: (4 学时)
实验类型: 设计型
实验内容:
系统中的对象
歌曲(Song.java):
编号、歌名、语言(中文/英文)、类别(流行/通俗)、歌手
系统功能描述
对已有的曲目进行管理:
查找歌曲信息(按歌名\语言\歌手\类别等进行查询)
增加歌曲
删除某歌曲
技术要求
List/Map
画面参考
*******************歌曲管理***************************
1------------------------查找歌曲
2------------------------增加歌曲
3------------------------删除歌曲
4------------------------显示所有歌曲
5------------------------推出系统
*********************************************************
(1)song.java
1 public class Song { 2 private int id; 3 private String title; 4 private String language; 5 private String category; 6 private String singer; 7 8 public Song(int id, String title, String language, String category, String singer) { 9 this.id = id; 10 this.title = title; 11 this.language = language; 12 this.category = category; 13 this.singer = singer; 14 } 15 16 public int getId() { 17 return id; 18 } 19 20 public String getTitle() { 21 return title; 22 } 23 24 public String getLanguage() { 25 return language; 26 } 27 28 public String getCategory() { 29 return category; 30 } 31 32 public String getSinger() { 33 return singer; 34 } 35 }
(2)SongManagementSystem.java
1 import java.util.*; 2 3 public class SongManagementSystem { 4 private Map<Integer, Song> songMap = new HashMap<>(); 5 private int nextId = 1; 6 private Scanner scanner = new Scanner(System.in); 7 8 public static void main(String[] args) { 9 SongManagementSystem system = new SongManagementSystem(); 10 system.run(); 11 } 12 13 public void run() { 14 int choice; 15 do { 16 displayMenu(); 17 System.out.print("请输入选项: "); 18 choice = scanner.nextInt(); 19 scanner.nextLine(); // 读取换行符 20 21 switch (choice) { 22 case 1: 23 searchSong(); 24 break; 25 case 2: 26 addSong(); 27 break; 28 case 3: 29 deleteSong(); 30 break; 31 case 4: 32 displayAllSongs(); 33 break; 34 case 5: 35 System.out.println("感谢使用,再见!"); 36 break; 37 default: 38 System.out.println("无效选项,请重新输入!"); 39 } 40 } while (choice != 5); 41 } 42 43 private void displayMenu() { 44 System.out.println("*******************歌曲管理***************************"); 45 System.out.println("1------------------------查找歌曲"); 46 System.out.println("2------------------------增加歌曲"); 47 System.out.println("3------------------------删除歌曲"); 48 System.out.println("4------------------------显示所有歌曲"); 49 System.out.println("5------------------------退出系统"); 50 System.out.println("*****************************************************"); 51 } 52 53 private void searchSong() { 54 System.out.print("请输入要查询的歌曲信息: "); 55 String keyword = scanner.nextLine(); 56 57 List<Song> matchedSongs = new ArrayList<>(); 58 for (Song song : songMap.values()) { 59 if (song.getTitle().contains(keyword) || 60 song.getLanguage().contains(keyword) || 61 song.getSinger().contains(keyword) || 62 song.getCategory().contains(keyword)) { 63 matchedSongs.add(song); 64 } 65 } 66 67 if (matchedSongs.isEmpty()) { 68 System.out.println("未找到匹配的歌曲!"); 69 } else { 70 System.out.println("以下是匹配的歌曲:"); 71 for (Song song : matchedSongs) { 72 System.out.println(song.getId() + " - " + song.getTitle() + " - " + song.getLanguage() + " - " + song.getCategory() + " - " + song.getSinger()); 73 } 74 } 75 } 76 77 78 private void addSong() { 79 System.out.print("请输入歌名: "); 80 String name = scanner.nextLine(); 81 82 System.out.print("请输入语言: "); 83 String language = scanner.nextLine(); 84 85 System.out.print("请输入类别: "); 86 String category = scanner.nextLine(); 87 88 System.out.print("请输入歌手: "); 89 String singer = scanner.nextLine(); 90 91 Song newSong = new Song(nextId, name, language, category, singer); 92 songMap.put(nextId, newSong); 93 nextId++; 94 95 System.out.println("歌曲添加成功!"); 96 } 97 98 private void deleteSong() { 99 System.out.print("请输入要删除的歌曲编号: "); 100 int id = scanner.nextInt(); 101 if (songMap.containsKey(id)) { 102 songMap.remove(id); 103 System.out.println("歌曲删除成功!"); 104 } else { 105 System.out.println("未找到对应编号的歌曲!"); 106 } 107 } 108 109 private void displayAllSongs() { 110 if (songMap.isEmpty()) { 111 System.out.println("当前没有歌曲信息!"); 112 } else { 113 System.out.println("所有歌曲信息如下:"); 114 for (Song song : songMap.values()) { 115 System.out.println(song.getId() + " - " + song.getTitle() + " - " + song.getLanguage() + " - " + song.getCategory() + " - " + song.getSinger()); 116 } 117 } 118 } 119 }