课设要求:实现一个简单的歌曲管理系统,允许用户添加、编辑、删除、搜索和展示歌曲信息。系统将使用文本文件存储歌曲数据,以便用户可以在关闭后保持数据持久性。
PS:新手上路,还望各位大佬门们多多指教🤞🤞
1. 功能需求
1.1 数据结构
- 需要定义一个
Song
结构,包含以下属性:songNumber
(歌曲编号,整数)songName
(歌曲名称,字符串)singer
(歌手,字符串)language
(语言,字符串,可选为中文或英文)releaseDate
(发行日期,字符串)downloads
(下载量,整数)
1.2 主要功能
-
歌曲添加功能
- 用户可以输入歌曲编号、名称、歌手、语言、发行日期和下载量,系统将该歌曲信息添加到歌曲数据库中。
- 歌曲编号必须是唯一的,重复编号的添加会被拒绝。
-
歌曲编辑功能
- 用户可以通过输入歌曲编号来查找并编辑已有歌曲的信息,包括名称、歌手、语言、发行日期和下载量。
- 若歌曲编号不存在,系统需要提示用户。
-
歌曲删除功能
- 用户可以根据歌曲编号删除指定的歌曲。
- 若歌曲编号不存在,系统需要提示用户。
-
歌曲展示功能
- 系统可以显示当前所有歌曲的信息,包括编号、名称、歌手、语言、发行日期和下载量。
- 当数据库为空时,系统需要给出提示信息。
-
歌曲搜索功能
- 用户可以通过歌曲名称、编号或歌手进行搜索,系统将返回符合条件的歌曲信息。
-
歌曲计数功能
- 系统可以显示数据库中当前歌曲的总数量。
-
插入歌曲功能
- 用户可以在指定位置插入新歌曲,确保原有歌曲的编号保持正确的顺序。
- 位置的范围应在当前数据库大小内。
-
歌曲排序功能
- 系统可以根据歌曲编号对数据库中的歌曲进行升序排序。
1.3 持久化存储
- 所有的歌曲数据需要能够保存到名为
songs.txt
的文件中,程序启动时加载该文件中的数据。 - 应用程序在关闭时,会将当前的歌曲数据库保存到该文件中。
2. 用户界面需求
- 该系统应通过命令行界面与用户交互,提供清晰的文本提示。
- 用户操作应简单易懂,系统应及时给出操作结果反馈。
3. 安全与错误处理
- 系统需对子操作进行合理的错误处理,如文件打开失败、输入格式错误等。
- 对用户输入的数据进行基本的验证,以确保数据的正确性。
头文件:
1.头文件分析
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
#include<sstream>
#include <string>
using namespace std;
<iostream>
: 包含输入输出流的函数<vector>
: 提供动态数组的实现,vector<Song>
被用作歌曲数据库的存储。<algorithm>
:用于排序以及查找功能。本代码中,使用了sort
和find_if
。<fstream>
: 提供文件输入输出的功能,支持在文件中读取和写入。这里的ifstream
和ofstream
用于加载和保存歌曲数据。<sstream>
: 提供字符串流的支持<string>
: 提供字符串类std::string
,用于处理和存储文本数据。
2.数据结构:
struct Song
{
int songNumber;//歌曲编号
string songName;//歌曲名称
string singer;//歌手
string language;//语言
string releaseDate;//发行日期
int downloads;//下载量
};
- Song 结构体:定义了一个包含歌曲信息的数据结构,包括歌曲编