C++如何用线性表设计一个乐库管理系统
时间: 2024-03-17 16:45:42 浏览: 29
可以使用线性表来实现一个乐库管理系统。具体实现可以采用顺序表或链表两种方式。
1. 顺序表方式
使用顺序表来存储音乐信息,每个节点包含音乐的名称、歌手、时长等信息。在顺序表中添加、删除、查找、修改音乐信息。
```c++
#include <iostream>
#include <vector>
using namespace std;
struct Music {
string name; // 音乐名称
string artist; // 歌手
int duration; // 时长,单位为秒
};
class MusicList {
public:
// 添加音乐
void addMusic(string name, string artist, int duration);
// 删除音乐
void deleteMusic(string name);
// 查找音乐
void findMusic(string name);
// 修改音乐信息
void modifyMusic(string name, string artist, int duration);
// 显示所有音乐
void showAllMusic();
private:
// 音乐列表
vector<Music> musicList;
};
// 添加音乐
void MusicList::addMusic(string name, string artist, int duration) {
Music music;
music.name = name;
music.artist = artist;
music.duration = duration;
musicList.push_back(music);
}
// 删除音乐
void MusicList::deleteMusic(string name) {
for (int i = 0; i < musicList.size(); i++) {
if (musicList[i].name == name) {
musicList.erase(musicList.begin() + i);
break;
}
}
}
// 查找音乐
void MusicList::findMusic(string name) {
for (int i = 0; i < musicList.size(); i++) {
if (musicList[i].name == name) {
cout << "音乐名称:" << musicList[i].name << endl;
cout << "歌手:" << musicList[i].artist << endl;
cout << "时长:" << musicList[i].duration << endl;
break;
}
}
}
// 修改音乐信息
void MusicList::modifyMusic(string name, string artist, int duration) {
for (int i = 0; i < musicList.size(); i++) {
if (musicList[i].name == name) {
musicList[i].artist = artist;
musicList[i].duration = duration;
break;
}
}
}
// 显示所有音乐
void MusicList::showAllMusic() {
for (int i = 0; i < musicList.size(); i++) {
cout << "音乐名称:" << musicList[i].name << endl;
cout << "歌手:" << musicList[i].artist << endl;
cout << "时长:" << musicList[i].duration << endl;
}
}
```
2. 链表方式
使用链表来存储音乐信息,每个节点包含音乐的名称、歌手、时长等信息。在链表中添加、删除、查找、修改音乐信息。
```c++
#include <iostream>
#include <string>
using namespace std;
struct Music {
string name; // 音乐名称
string artist; // 歌手
int duration; // 时长,单位为秒
Music* next; // 指向下一个节点的指针
};
class MusicList {
public:
MusicList() {
head = NULL;
}
// 添加音乐
void addMusic(string name, string artist, int duration);
// 删除音乐
void deleteMusic(string name);
// 查找音乐
void findMusic(string name);
// 修改音乐信息
void modifyMusic(string name, string artist, int duration);
// 显示所有音乐
void showAllMusic();
private:
Music* head; // 链表头指针
};
// 添加音乐
void MusicList::addMusic(string name, string artist, int duration) {
Music* music = new Music;
music->name = name;
music->artist = artist;
music->duration = duration;
music->next = NULL;
if (head == NULL) {
head = music;
} else {
Music* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = music;
}
}
// 删除音乐
void MusicList::deleteMusic(string name) {
if (head == NULL) {
return;
}
Music* p = head;
if (p->name == name) {
head = p->next;
delete p;
return;
}
Music* q = p->next;
while (q != NULL) {
if (q->name == name) {
p->next = q->next;
delete q;
break;
}
p = p->next;
q = q->next;
}
}
// 查找音乐
void MusicList::findMusic(string name) {
Music* p = head;
while (p != NULL) {
if (p->name == name) {
cout << "音乐名称:" << p->name << endl;
cout << "歌手:" << p->artist << endl;
cout << "时长:" << p->duration << endl;
break;
}
p = p->next;
}
}
// 修改音乐信息
void MusicList::modifyMusic(string name, string artist, int duration) {
Music* p = head;
while (p != NULL) {
if (p->name == name) {
p->artist = artist;
p->duration = duration;
break;
}
p = p->next;
}
}
// 显示所有音乐
void MusicList::showAllMusic() {
Music* p = head;
while (p != NULL) {
cout << "音乐名称:" << p->name << endl;
cout << "歌手:" << p->artist << endl;
cout << "时长:" << p->duration << endl;
p = p->next;
}
}
```
以上是两种实现方法,可以根据实际需求进行选择。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)