信息科学与技术学院C++语言程序设计音乐管理系统姓名: XXXXXXX学号: XXXXXX班级: XXXXXXX指导老师: XXXXX1目录目录实验目的........................................................................................................... 错误!未定义书签。
实验内容........................................................................................................... 错误!未定义书签。
概要设计. (3)详细设计 (4)主函数 (5)各功能模块要求 (7)(1)添加模块 (7)(2)查询歌曲模块 (8)(3)删除模块 (13)(4)显示模块 .................................................................................. 错误!未定义书签。
(5)类 (16)总结 (17)附录 (18)实验目的(1)通过实验来检查对C++程序设计掌握度是多少;(2)进一步巩固了所学的C++程序设计语言的基本概念和理论;(3)通过编写程序,知道自己对本程序设计语言不熟悉的地方和灵巧运用的地方。
实验内容本系统是一个歌曲信息管理系统,采用VS 2012编译器作为开发环境,这个环境是我们在学习C++的平台。
输入数据类型主要是int和string类型,输入内容包括:歌曲编号、歌曲名称、歌手、歌曲风格等数据。
用户在歌曲信息数据时要保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确。
输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,显示内容包括:歌曲编号、歌曲名称、歌手、歌曲风格等数据。
用户在添加数据的时候,如果添加位置没有文件则返回错误信息。
本系统同时只能对一个数据文件进行相关操作,不能同时打开多个数据文件,其类似于单用户操作系统。
当用户读取数据后可对其进行显示,删除等相关操作。
概要设计`3详细设计音乐管理流程图图1主函数主函数一般设计得比较简洁。
一般情况下,程序员会选择把主菜单也写在主函数中,但本系统的主函数只有主页面,其菜单函数是类的函数成员。
[程序]【主函数程序部分】int main(){Musicsystem mus1;cout<<"****************************************************************"<<endl;cout<<"**********"<<endl;cout<<"******"<<endl;cout<<"** Welcome To Onion Music System **"<<endl;cout<<"******"<<endl;cout<<"**********"<<endl;cout<<"****************************************************************"<<endl<<endl;mus1.meun();return 0;}【主菜单程序部分】void Musicsystem::meun(){Musicsystem mus;cout<<"\n 主菜单"<<endl;cout<<"\t请选择(0-3):"<<endl;cout<<"\t1.添加歌曲\n\t2.查询歌曲\n\t3.删除歌曲\n\t4.显示歌曲\n\t0.退出\n\t请选择:";int ch;cin>>ch;while(ch<0||ch>4){5cout<<"输入有误,请重新输入!"<<endl;meun();}if(ch==0) exit(0);switch(ch){case 1:{mus.add();meun();}break;case 2:{mus.search();meun();}break;case 3:{mus.Delete();meun();}break;case 4:{mus.show();meun();}break;case 0:break;default:;}}效果图:各功能模块要求(1)添加模块把一首歌的一个信息对应一个类的数据成员,逐条添加到文件尾部。
【程序部分】void Musicsystem::add(){int n;cout<<"请输入想要增加的歌曲数:";cin>>n;ofstream outfile("e://Music.txt",ios::app);//在文件尾部添加数据if(!outfile){cout<<"\t文件不存在或打开失败"<<endl;exit(1); //退出系统}for(int i=sum;i<(n+sum);i++){cout<<"请输入歌曲编号:";cin>>music.num;cout<<"\n请输入歌曲名:";cin>>;cout<<"\n请输入歌手名:";cin>>music.singer;cout<<"\n请输入歌曲风格:";cin>>music.style;outfile<<music.num<<" "<<<<" "<<music.singer<<" "<<music.style<<endl;length++;}cout<<"\t\t\t添加歌曲成功!"<<endl;outfile.close();}效果图:7(2)查询歌曲模块开始选择查询歌曲方式歌曲编号歌名歌手风格输入要查询的歌曲编号查询菜单输入要查询的歌曲名输入要查询的歌曲风格输入要查询的歌手显示查找到的记录【程序部分】void Musicsystem::search(){Musicsystem mus; //查询对象Music music[100];//存储对象Music m;int flag=0;ifstream infile("e://Music.txt",ios::in); //打开文件if(!infile){cerr<<"\t\t文件读取失败或不存在!"<<endl;exit(1);}//把文件的内容存在infile中for(int i=0;i<length;i++){infile>>music[i].num>>music[i].name>>music[i].singer>>music[i]. style;}infile.close();int ch;cout<<"\n\t查询:\n\t1.按歌曲编号查询"<<endl;cout<<"\t2.按歌名查询"<<endl;cout<<"\t3.按歌手名查询"<<endl;cout<<"\t4.按歌曲种类查询"<<endl;cout<<"\t0.退出"<<endl;cout<<"\t请选择:";cin>>ch;switch(ch){9case 1:{cout<<"请输入编号:";cin>>m.num;if(m.num=='0') break;cout<<"\n查询结果:"<<endl;for(int i=0;i<length;i++){if(music[i].num==m.num){flag++;cout<<"\t歌曲编号:"<<music[i].num<<"\t 歌曲名:"<<music[i].name<<"\t歌唱者:"<<music[i].singer<<"\t歌曲风格:"<<music[i].style<<endl;}}if(flag==0) cout<<"\t\t\t找不到该歌曲"<<endl;search();}break;case 2:{cout<<"请输入歌名:";cin>>;cout<<"\n查询结果:"<<endl;for(int i=0;i<length;i++){if(music[i].name==){flag++;cout<<"\t歌曲编号:"<<music[i].num<<"\t 歌曲名:"<<music[i].name<<"\t歌唱者:"<<music[i].singer<<"\t歌曲风格:"<<music[i].style<<endl;}}if(flag==0) cout<<"\t\t\t找不到该歌曲"<<endl;search();}break;case 3:{cout<<"请输入歌手名:";cin>>m.singer;cout<<"\n查询结果:"<<endl;for(int i=0;i<length;i++){if(music[i].singer==m.singer){flag++;cout<<"\t歌曲编号:"<<music[i].num<<"\t 歌曲名:"<<music[i].name<<"\t歌唱者:"<<music[i].singer<<"\t歌曲风格:"<<music[i].style<<endl;}}if(flag==0) cout<<"\t\t\t找不到该歌曲"<<endl;search();}break;case 4:{cout<<"请输入歌曲风格:";11cin>>m.style;cout<<"\n查询结果:"<<endl;for(int i=0;i<length;i++){if(music[i].style==m.style){flag++;cout<<"\t歌曲编号:"<<music[i].num<<"\t 歌曲名:"<<music[i].name<<"\t歌唱者:"<<music[i].singer<<"\t歌曲风格:"<<music[i].style<<endl;}}if(flag==0) cout<<"\t\t\t找不到该歌曲"<<endl;search();}break;case 0:mus.meun();break;//default:{cout<<"\t\t\t输入有误,请重新输入!"<<endl;search();}break;}}效果图:13(3)删除模块流程图如下:【程序部分】void Musicsystem::Delete(){Music music[100];int del;ifstream infile("e://music.txt",ios::in);if(!infile){cerr<<"\t\t\t 文件读取失败或不存在!"<<endl;exit(1);}for(int i=0;i<length;i++){infile>>music[i].num>>music[i].name>>music[i].singer>>music[i].输入编号 删除歌曲 结束开始style;}infile.close();ofstream outfile("e://music.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}cout<<"请输入你要删除的歌曲编号:";cin>>del;for(int i=0;i<length;i++){if(music[i].num!=del)outfile<<music[i].num<<" "<<music[i].name<<" "<<music[i].singer<<" "<<music[i].style<<endl;}cout<<"\t\t\t删除成功!"<<endl;length--;outfile.close();}效果图:(4)显示模块流程图如下:【程序部分】void Musicsystem::show(){ifstream infile("e://music.txt",ios::in);if(!infile){cerr<<"\t\t\t文件读取失败或不存在!"<<endl;exit(1);}for(int i=0;i<length;i++){infile>>music.num>>>>music.singer>>music.style;cout<<"歌曲编号:"<<music.num<<"\t歌曲名:"<<<<"\t\t歌唱者:"<<music.singer<<"\t歌曲风格:"<<music.style<<endl<<endl;}}效果图:15(5)类【程序如下】//属性类class Music{public:friend class Musicsystem; //通过友元类来访问属性类private:int num;string name,singer,style;};//功能类class Musicsystem{public:Musicsystem ();~Musicsystem(){};void meun(); //主菜单void add(); //增加void search(); //查找void Delete(); //删除void show(); //显示歌曲信息private:Music music;};总结通过设计并编译本音乐管理系统,我深刻体会到C++程序设计语言确实是比C语言要简洁好用一点。