C语言如何实现歌曲信息管理系统

这篇文章主要介绍了C语言如何实现歌曲信息管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

本文实例为大家分享了C语言实现歌曲信息管理系统的具体代码,供大家参考,具体内容如下

C语言如何实现歌曲信息管理系统

系统功能:该系统以菜单方式工作,歌曲信息包括:歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司。试设计一歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录入、修改、插入、删除功能;歌曲排序浏览功能;按歌名查询、按演唱者查询等功能。

完整的实现代码如下:

#include"stdio.h"
#include"stdlib.h"
#include"string.h"
//歌曲信息包括:歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司
typedefstructmusic
{
charname[20];//歌名
charsinger[20];//演唱者
charauthors[20];//作词
charcompose[30];//作曲
charalbum[20];//所属专辑
chartime[15];//出版时间
charcompany[30];//出版公司
structmusic*next;
}music;
music*head=NULL;
intlength;//链表的长度
voidcreate()
{
music*p1,*p2;
length=0;
p1=(music*)malloc(sizeof(music));
strcpy(p1->name,"-1");
if(head==NULL)
head=p1;
printf("请输入音乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");
while(1)//歌名为0的时候退出
{
p2=(music*)malloc(sizeof(music));
//输入歌曲信息
scanf("%s%s%s%s%s%s%s",p2->name,p2->singer,p2->authors,p2->compose,p2->album,p2->time,p2->company);
if(strcmp(p2->name,"0")==0)
{
printf("链表创建完成!/n");
break;
}
length++;//链表的长度
p1->next=p2;
p2->next=NULL;
p1=p1->next;
}
return;
}
voidModifymusicInfo()
{
music*p=head->next;
charname[20];
printf("请输入要修改的歌曲的歌名:");
getchar();
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
printf("修改前,歌名为%s的歌曲的信息如下:/n",name);
printf("音乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");
printf("%s%s%s%s%s%s%s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company);
printf("请输入歌曲的新的所属专辑:");
getchar();
scanf("%s",p->album);
printf("请输入歌曲的新出版公司:");
getchar();
scanf("%s",p->company);
printf("修改后,歌名为%s的歌曲的信息如下:/n",name);
printf("音乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");
printf("%s%s%s%s%s%s%s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company);
return;
}
p=p->next;
}
if(p==NULL)
{
printf("该歌曲不存在!/n");
return;
}
}

voiddisplay()
{
music*p=head->next;
printf("链表中所有的歌曲信息如下:/n");
printf("音乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");
while(p!=NULL)
{
printf("%s%s%s%s%s%s%s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company);
p=p->next;
}
return;
}
voidsearch()
{
intnum,x,flag;
charname[20];
music*p=head->next;
printf("请选择查询的方式:/n");
printf("1、按歌名查询/t2、按演唱者查询/n");
scanf("%d",&x);
if(x==1)
{
printf("需要查找的歌曲歌名为:");
getchar();
scanf("%s",name);
while(p!=NULL)
{

if(strcmp(p->name,name)==0)
{
printf("歌名为%s的歌曲的信息如下:/n",name);
printf("音乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");
printf("%s%s%s%s%s%s%s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company);
return;
}
p=p->next;
}
if(p==NULL)
printf("没有这首歌曲的记录!/n");
}
elseif(x==2)
{
flag=0;
printf("需要查找的演唱者为:");
getchar();
scanf("%s",name);
p=head->next;
while(p!=NULL)
{
if(strcmp(p->singer,name)==0)
{
if(flag==0)
{
printf("演唱者为%s的歌曲的信息如下:/n",name);
printf("音乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");
flag=1;
}
printf("%s%s%s%s%s%s%s/n",p->name,p->singer,p->authors,p->compose,p->album,p->time,p->company);
}
p=p->next;
}
if(p==NULL&&flag==0)
{
printf("没有该演唱者的歌曲记录!/n");
return;
}
}
return;
}

voidinsert()
{
intnum,i;
music*p,*q;
p=head;

printf("请输入你要插入位置:");
scanf("%d",&num);
if(num>length)
{
printf("找不到要插入的位置/n");
return;
}
else
{
printf("请输入你要插入的音乐的歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司:/n");
q=(music*)malloc(sizeof(music));
//输入歌曲信息
scanf("%s%s%s%s%s%s%s",q->name,q->singer,q->authors,q->compose,q->album,q->time,q->company);
while(p!=NULL)
{
if(strcmp(p->name,q->name)==0)
{
printf("该歌曲已经存在,无法插入!/n");
return;
}
p=p->next;
}
p=head;
for(i=0;i<num;i++)
p=p->next;
q->next=p->next;
p->next=q;
length++;
printf("插入成功!/n");
return;
}
}

voidDelete()
{
charname[20];
music*p,*q;
q=head,p=head->next;
printf("请输入要删除的歌曲的歌名:/n");
getchar();
scanf("%s",name);

while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
q->next=p->next;
free(p);
length--;
printf("删除成功!/n");
return;
}
p=p->next;
q=q->next;
}
if(p==NULL)
{
printf("找不到要删除的歌曲!/n");
return;
}
}
voidmenu()
{
printf("________________________________________________________________/n");
printf("|歌厅歌曲管理系统|/n");
printf("|0、退出系统|/n");
printf("|1、录入歌曲信息|/n");
printf("|2、显示歌曲信息|/n");
printf("|3、查找链表中的某一首歌曲|/n");
printf("|4、删除链表中指定歌曲|/n");
printf("|5、指定的位置上插入一个新结点|/n");
printf("|6、修改歌曲信息|/n");
printf("________________________________________________________________/n");
return;
}
intmain(void)
{
inta;
menu();
while(1)
{
printf("请选择相应的功能:");
scanf("%d",&a);
switch(a)
{
case0:
return0;
case1:
create();
menu();
break;
case2:
if(head)
{
display();
menu();
}
else
{
printf("链表为空,请先建立链表!/n");
menu();
}
break;
case3:
if(head)
{
search();
menu();
}
else
{
printf("链表为空,请先建立链表!/n");
menu();
}
break;
case4:
if(head)
{
Delete();
menu();
}
else
{
printf("链表为空,请先建立链表!/n");
menu();
}
break;
case5:
if(head)
{
insert();
menu();
}
else
{
printf("链表为空,请先建立链表!/n");
menu();
}
break;
case6:
if(head)
{
ModifymusicInfo();
menu();
}
else
{
printf("链表为空,请先建立链表!/n");
menu();
}
break;
default:
break;
}
}
system("pause");
return0;
}

感谢你能够认真阅读完这篇文章,希望小编分享的“C语言如何实现歌曲信息管理系统”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!

发布于 2021-05-30 14:07:17
收藏
分享
海报
0 条评论
159
上一篇:C语言如何实现变色进度条 下一篇:C语言如何实现简单学生管理系统
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码