C++备忘录源代码.docx
《C++备忘录源代码.docx》由会员分享,可在线阅读,更多相关《C++备忘录源代码.docx(11页珍藏版)》请在冰豆网上搜索。
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("%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("%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");
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("%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",nam
);
flag=1;
}
printf("%s%s%s%s%s%s%s/n",p->name,p->singe,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;ip=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;
}