首页 > 编程 > C > 正文

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

2020-01-26 13:47:45
字体:
来源:转载
供稿:网友

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

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

完整的实现代码如下:

#include "stdio.h" #include "stdlib.h" #include "string.h" //歌曲信息包括:歌名、演唱者、作词、作曲、所属专辑、出版时间、出版公司 typedef struct music {   char name[20];  //歌名   char singer[20]; //演唱者   char authors[20]; //作词   char compose[30]; //作曲   char album[20];  //所属专辑   char time[15];  //出版时间   char company[30]; //出版公司   struct music *next; }music; music *head=NULL; int length;  //链表的长度 void create() {   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 ; } void ModifymusicInfo() {   music *p=head->next;   char name[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 ;   } }  void display() {   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 ; } void search() {   int num,x,flag;   char name[20];   music *p=head->next;   printf("请选择查询的方式:/n");   printf("1、按歌名查询/t 2、按演唱者查询/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");   }   else if(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 ; }  void insert() {   int num,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 ;   } }   void Delete() {   char name[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 ;   } } void menu() {   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 ; } int main(void) {   int a;   menu();   while(1)   {     printf("请选择相应的功能:");     scanf("%d",&a);     switch(a)     {     case 0:       return 0;     case 1:       create();       menu();       break;     case 2:       if(head)       {         display();         menu();       }       else       {         printf("链表为空,请先建立链表!/n");         menu();       }       break;     case 3:       if(head)       {         search();         menu();       }       else       {         printf("链表为空,请先建立链表!/n");         menu();       }       break;     case 4:       if(head)       {         Delete();         menu();       }       else       {         printf("链表为空,请先建立链表!/n");         menu();       }       break;     case 5:       if(head)       {         insert();         menu();       }       else       {         printf("链表为空,请先建立链表!/n");         menu();       }       break;     case 6:       if(head)       {         ModifymusicInfo();         menu();       }       else       {         printf("链表为空,请先建立链表!/n");         menu();       }       break;     default:       break;     }   }   system("pause");   return 0; } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选