写出满足以下要求的C语言代码歌曲信息管理系统的设计与实现 基本要求: (1)歌曲信息包括歌曲名、作者、演唱者、发行年月、专辑等。(2)可以对歌曲信息进行输入、删除、编辑、浏览。(3)可以根据歌曲名、作者、演唱者查询歌曲信息。(4)提供按作者分组显示功能
时间: 2023-08-15 21:06:24 浏览: 45
好的,以下是满足要求的C语言代码歌曲信息管理系统的设计与实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SONGS 100
typedef struct {
char name[50];
char author[50];
char singer[50];
char release_date[20];
char album[50];
} Song;
Song songs[MAX_SONGS];
int num_songs = 0;
void add_song() {
Song song;
printf("请输入歌曲名:");
scanf("%s", song.name);
printf("请输入作者:");
scanf("%s", song.author);
printf("请输入演唱者:");
scanf("%s", song.singer);
printf("请输入发行年月:");
scanf("%s", song.release_date);
printf("请输入专辑:");
scanf("%s", song.album);
songs[num_songs++] = song;
printf("歌曲信息添加成功!\n");
}
void delete_song() {
char name[50];
printf("请输入要删除的歌曲名:");
scanf("%s", name);
int i;
for (i = 0; i < num_songs; i++) {
if (strcmp(songs[i].name, name) == 0) {
int j;
for (j = i; j < num_songs - 1; j++) {
songs[j] = songs[j + 1];
}
num_songs--;
printf("歌曲信息删除成功!\n");
return;
}
}
printf("没有找到要删除的歌曲信息!\n");
}
void edit_song() {
char name[50];
printf("请输入要编辑的歌曲名:");
scanf("%s", name);
int i;
for (i = 0; i < num_songs; i++) {
if (strcmp(songs[i].name, name) == 0) {
printf("请输入新的作者(或输入“-”表示不修改):");
scanf("%s", songs[i].author);
printf("请输入新的演唱者(或输入“-”表示不修改):");
scanf("%s", songs[i].singer);
printf("请输入新的发行年月(或输入“-”表示不修改):");
scanf("%s", songs[i].release_date);
printf("请输入新的专辑(或输入“-”表示不修改):");
scanf("%s", songs[i].album);
printf("歌曲信息修改成功!\n");
return;
}
}
printf("没有找到要编辑的歌曲信息!\n");
}
void view_song() {
char name[50];
printf("请输入要查看的歌曲名(或输入“-”表示查看所有歌曲):");
scanf("%s", name);
if (strcmp(name, "-") == 0) {
int i;
for (i = 0; i < num_songs; i++) {
printf("歌曲名:%s,作者:%s,演唱者:%s,发行年月:%s,专辑:%s\n",
songs[i].name, songs[i].author, songs[i].singer, songs[i].release_date, songs[i].album);
}
} else {
int i;
for (i = 0; i < num_songs; i++) {
if (strcmp(songs[i].name, name) == 0) {
printf("歌曲名:%s,作者:%s,演唱者:%s,发行年月:%s,专辑:%s\n",
songs[i].name, songs[i].author, songs[i].singer, songs[i].release_date, songs[i].album);
return;
}
}
printf("没有找到要查看的歌曲信息!\n");
}
}
void group_song() {
char author[50];
printf("请输入要按作者分组显示的作者:");
scanf("%s", author);
int i;
for (i = 0; i < num_songs; i++) {
if (strcmp(songs[i].author, author) == 0) {
printf("歌曲名:%s,演唱者:%s,发行年月:%s,专辑:%s\n",
songs[i].name, songs[i].singer, songs[i].release_date, songs[i].album);
}
}
}
int main() {
int choice;
do {
printf("\n1. 输入歌曲信息\n");
printf("2. 删除歌曲信息\n");
printf("3. 编辑歌曲信息\n");
printf("4. 浏览歌曲信息\n");
printf("5. 按作者分组显示\n");
printf("0. 退出\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_song();
break;
case 2:
delete_song();
break;
case 3:
edit_song();
break;
case 4:
view_song();
break;
case 5:
group_song();
break;
case 0:
printf("谢谢使用!\n");
break;
default:
printf("无效的选择!\n");
break;
}
} while (choice != 0);
return 0;
}
```
这个代码实现了对歌曲信息的输入、删除、编辑、浏览和按作者分组显示等功能,可以根据歌曲名、作者、演唱者查询歌曲信息。其中,歌曲信息使用结构体存储,歌曲数量使用全局变量 `num_songs` 统计,歌曲信息数组使用全局变量 `songs` 存储。为了方便实现,这里使用了简单的线性查找算法,如果歌曲数量很多,效率可能较低。