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

本文实例为大家分享了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;
} 

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

您可能感兴趣的文章:

  • C语言实现学生信息管理系统(单链表)
  • C语言单链表版学生信息管理系统
  • 学生信息管理系统C语言版
  • C语言实现简单学生学籍管理系统
  • C语言学生学籍管理系统课程设计
  • C语言实现学生学籍管理系统
  • C语言实现图书管理系统
  • C语言职工信息管理系统源码
  • C语言银行系统课程设计
  • C语言银行储蓄系统源码
(0)

相关推荐

  • C语言实现学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<windows.h> //**********************************结构体************************************* struct score

  • C语言银行储蓄系统源码

    本文为大家分享了C语言银行储蓄系统源码,实现银行的各项功能,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> void openaccount();//开户 void save();//存款 void withdraw();//取款 void showAccount();//查询 void transferAccounts();

  • C语言职工信息管理系统源码

    本文实例为大家分享了C语言职工信息管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工号 char name[20];//姓名 char sex[5];//性别 char born[20];//生日 char edu[20];//学历 char po

  • C语言银行系统课程设计

    本文为大家分享了C语言银行系统课程设计,供大家参考,具体内容如下 main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> #define MaxNum 200 #define N_P 6 typedef struct { int AccountNumber[3]; char name[20];

  • C语言实现简单学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date /*出生日期*/ { int year; int month; int day; }; struct

  • 学生信息管理系统C语言版

    C语言学生信息管理系统包括以下功能: 1.学生信息的整体注册 2.学生信息的修改 3.学生成绩信息的录入 4.学生信息的添加 5.恢复误删的学生信息 6.学生信息的删除 7.密码修改保存函数 8.学生信息的查询 9.密码修改函数 10.学生信息管理系统的菜单函数 #include "stdio.h" #include "malloc.h" #include "string.h" #include "stdlib.h" #inc

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言单链表版学生信息管理系统

    本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下 代码: //以单链表作为存储结构,设计和实现课程成绩管理的完整程序. //程序包括如下功能. //1.建立学生成绩表,包含学生的学号.姓名和成绩. //2.可以显示所有学生成绩. //3.可以计算学生的总数. //4.可以按学号和序号查找学生. //5.可以在指定位置插入学生成绩数据. //6.可以删除指定位置的学生数据. //7.可以把学生成绩按从高到低的顺序排序. //作者: yinlinqvan //操作系统:

  • C语言学生学籍管理系统课程设计

    C语言学生学籍管理系统做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456 代码: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct student { char xuehao[100];//输入学号 char name[100];//输入姓名 char sex[100];//输入性别 int

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

    本文实例为大家分享了C语言实现歌曲信息管理系统的具体代码,供大家参考,具体内容如下 系统功能:该系统以菜单方式工作,歌曲信息包括:歌名.演唱者.作词.作曲.所属专辑.出版时间.出版公司.试设计一歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录入.修改.插入.删除功能:歌曲排序浏览功能:按歌名查询.按演唱者查询等功能. 完整的实现代码如下: #include "stdio.h" #include "stdlib.h" #include "string.h&q

  • C语言实现天气信息管理系统

    本文实例为大家分享了C语言实现天气信息管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> #include<time.h> #include<unistd.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #defi

  • C语言实现学生信息管理系统(文件版)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 下面是我自己用写的学生信息管理系统,为了增加数据的利用率,分为学生端和教师端,同时实现账号密码登录,以文件的形式将其存入. 代码如下 #include <stdio.h> #include <string.h> #include <string> #include<Windows.h> #define USER "TOM" // 事先定义用户名,用于登录页

  • C语言版学生信息管理系统

    本文实例为大家分享了C语言版学生信息管理系统的具体代码,供大家参考,具体内容如下 一.题目分析 1.功能概述 1)查询学生信息 2)添加学生信息 3)修改学生信息 4)删除学生信息 5)刷新学生信息 6)保存学生信息 7)输出当前学生信息 2.题目要求: 1)使用结构体建立学生信息体制 2)实现七大基本功能 3)采用文件存储学生信息 二.算法构造 1.难点解析----对文件的操作 1.1文件读取 FILE * fp; if ((fp = fopen(filename, "r")) ==

  • C语言实现学生信息管理系统(多文件)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 elemtype.h /***************************** * 这是学生成绩管理系统中的记录结构文件. * 文件名:elemtype.h * 作者: * 创建日期:2012-12-05 * 完成日期:2012-12-07 * 版本:1.0 * 修改记录: * * ******************************/ #ifndef ELEMTYPE #define ELEMTYP

  • C语言实现车辆信息管理系统

    本文实例为大家分享了C语言实现车辆信息管理系统的具体代码,供大家参考,具体内容如下 车辆信息管理系统 问题描述:建立车辆信息管理系统,实现车辆信息的添加和维护管理. 系统存储数据要求:每台车辆至少需要包含以下属性,系统中保存多台车辆的信息: 车辆型号(如思域.卡罗拉.天籁等) 厂商(如广汽本田.一汽大众.东风日产等) 车型级别(如紧凑型车.中型车.SUV等) 座位数(如5座.7座等) 排量(如1.2T.1.4T.1.5T.1.6T等) 变速箱(如手动.手自一体.无级变速等) 车身颜色(白色.黑色

  • C语言实现超市信息管理系统

    本文实例为大家分享了C语言实现超市信息管理系统的具体代码,供大家参考,具体内容如下 设计要求:设计一个超市信息管理系统,利用结构体存储货物信息和所购买商品的信息,并使用链表保存购物车信息,能够完成建立库存信息以及文件自动建立库存信息,对购物车添加商品.结算并修改库存等操作,可以将库存信息保存在文件中,并且可以对文件中的库存信息进行读取与显示. 程序代码如下: /*ifndef/define/endif"主要目的是防止头文件的重复包含和编译*/ #ifndef MARKET_H #define M

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言实现超市信息管理系统课程设计

    本文实例为大家分享了C语言实现超市信息管理系统的具体代码,供大家参考,具体内容如下 一. 需求分析 目前商品市场的商品信息玲琅满目,货物信息的储存以及更新就变的越来越重要.因此,我们小组设计的“超市信息管理程序”旨在解决货物的信息和购买商品信息的储存问题以及实现建立库存信息,对购物车添加商品.结算并修改库存等操作,同时也能实现对库存信息的读取和显示. 我们设计的程序要实现以下要求: 1. 使用两个不同的结构体分别保存货物信息和购物车中的商品信息,可在商品信息结构体中嵌套货物信息结构体.2. 将货

随机推荐