歌厅歌曲管理系统(转)用c语言实现的一个课程设计

来源:互联网 发布:sql2000附加数据库金蝶 编辑:程序博客网 时间:2024/04/27 04:02

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

完整的实现代码如下:

#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;   }  

原创粉丝点击