Java实验报告四

发布时间 2023-11-24 16:20:57作者: 李图南99

实验四
实验名称: 歌曲管理系统
实验目的: 掌握类的定义, 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 }