C语言实现一个简单的点歌系统

创建一个简单的点歌系统可以用C语言实现,这里提供一个基本的框架。这个系统可以包括歌曲列表、用户选择歌曲的功能以及播放歌曲的功能。以下是一个示例代码:

c 复制代码
#include <stdio.h>
#include <string.h>

#define MAX_SONGS 100
#define MAX_LENGTH 100

typedef struct {
    char name[MAX_LENGTH];
    char artist[MAX_LENGTH];
} Song;

typedef struct {
    Song songs[MAX_SONGS];
    int count;
} Playlist;

// 函数声明
void addSong(Playlist *playlist, const char *name, const char *artist);
void listSongs(const Playlist *playlist);
int chooseSong(const Playlist *playlist);

int main() {
    Playlist playlist = { .count = 0 };
    
    // 添加一些示例歌曲
    addSong(&playlist, "Yesterday", "The Beatles");
    addSong(&playlist, "Bohemian Rhapsody", "Queen");
    addSong(&playlist, "Hotel California", "Eagles");

    int choice;
    do {
        listSongs(&playlist);
        printf("请输入您想要听的歌曲编号(输入-1退出): ");
        scanf("%d", &choice);
        if (choice != -1) {
            playSong(&playlist, choice);
        }
    } while (choice != -1);

    return 0;
}

void addSong(Playlist *playlist, const char *name, const char *artist) {
    if (playlist->count < MAX_SONGS) {
        strcpy(playlist->songs[playlist->count].name, name);
        strcpy(playlist->songs[playlist->count].artist, artist);
        playlist->count++;
    } else {
        printf("播放列表已满。\n");
    }
}

void listSongs(const Playlist *playlist) {
    printf("播放列表:\n");
    for (int i = 0; i < playlist->count; i++) {
        printf("%d. %s - %s\n", i + 1, playlist->songs[i].name, playlist->songs[i].artist);
    }
}

int chooseSong(const Playlist *playlist) {
    int choice;
    printf("请选择歌曲编号: ");
    scanf("%d", &choice);
    return choice - 1;
}

void playSong(Playlist *playlist, int index) {
    if (index >= 0 && index < playlist->count) {
        printf("正在播放: %s - %s\n", playlist->songs[index].name, playlist->songs[index].artist);
    } else {
        printf("无效的选择。\n");
    }
}

这个程序定义了一个Playlist结构体来存储歌曲列表,并定义了Song结构体来保存每首歌的名字和艺术家名字。addSong函数用于添加新歌到播放列表,listSongs用于列出所有歌曲,chooseSong让用户选择歌曲,而playSong则根据用户的选择"播放"歌曲(在这里只是输出歌曲的信息)。

请注意,这只是一个非常基础的实现,实际应用中还需要考虑错误处理、输入验证、更复杂的用户界面等。此外,为了使程序更加完整,还可以添加删除歌曲、修改歌曲信息等功能。如果要保存歌曲信息,可以考虑使用文件操作来读写数据。

相关推荐
野生技术架构师14 分钟前
1200 道 JAVA 面试题(各大企业常见面试题及答案)
java·开发语言
“AI国潮设计-小江”24 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁美食猫IP & 创意甜品设计(附ComfyUI工作流思路)
开发语言·人工智能·python·prompt·aigc
Yyyyyy~41 分钟前
【java】类和对象
java·开发语言
幼儿园蛋小黑42 分钟前
【无标题】C语言变量,类型转换,运算符,输入和输出
c语言·嵌入式实时数据库
草莓熊Lotso1 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php
Joy T1 小时前
Spring AI 2.0 进阶入门:Workflow、Routing、Task State 与可控 Agent
开发语言·人工智能·workflow·routing·springai·orchestrator·evaluator
重生之小比特1 小时前
【Java SE】抽象类和接口
java·开发语言
传奇开心果编程1 小时前
【Rust入门知识点学与练】第33课:异步编程入门(async/await)强化
开发语言·学习·rust
传奇开心果编程1 小时前
【Rust入门知识点学与练】第34课:所有权与借用
开发语言·学习·rust
529宝宝起名网2 小时前
用 Python 开发历史名字查询与起名灵感工具:从古籍人物数据库到名字文化故事生成
开发语言·前端·python