歌曲信息管理系统Word格式文档下载.docx

上传人:b****3 文档编号:6314440 上传时间:2023-05-06 格式:DOCX 页数:30 大小:108.67KB
下载 相关 举报
歌曲信息管理系统Word格式文档下载.docx_第1页
第1页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第2页
第2页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第3页
第3页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第4页
第4页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第5页
第5页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第6页
第6页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第7页
第7页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第8页
第8页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第9页
第9页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第10页
第10页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第11页
第11页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第12页
第12页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第13页
第13页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第14页
第14页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第15页
第15页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第16页
第16页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第17页
第17页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第18页
第18页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第19页
第19页 / 共30页
歌曲信息管理系统Word格式文档下载.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

歌曲信息管理系统Word格式文档下载.docx

《歌曲信息管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《歌曲信息管理系统Word格式文档下载.docx(30页珍藏版)》请在冰点文库上搜索。

歌曲信息管理系统Word格式文档下载.docx

scanf("

%d"

&

k);

if(k<

1||k>

7)

(w1=1;

getchar();

}

elsew1=0;

}while(w1==1);

switch(k)

(case1:

enter();

break;

case2:

delet();

/*主界面*/

/*对选择的数字作判断*/

/*输入模块*/

/*删除模块*/

case3:

browse();

/*浏览模块*/

case4:

search();

case5:

devide();

case6:

add();

case7:

exit(0);

/*查找模块*//*分组模块*//*添加模块*/

main()

menu();

/*主函数*/

2.各功能模块设计

(1)输入模块

[分析]

数据信息存放在文件中,一条记录对应一个歌曲,即符合习惯也方便管理。

现在要考虑的问题是一条歌曲的记录从文件读进来后以什么形式存放?

我们很容易知道存放若干个歌曲就用结构体数组。

structsong

charname[20];

/*歌曲名*/

charcreater[20];

/*作者*/

charsinger[20];

/*演唱者*/

chardate[6];

/*日期*/

}so[N];

[注意]so[N]中的N为歌曲数目,程序中采用宏定义方式,可以随时对N进行修

改。

本程序宏定义#defineN100

[流程图]

[程序]

enter()/*输入模块*/

inti,n;

Howmanysongs(0-%d)?

:

"

N-1);

n);

/*要输入的歌曲数目*/

\nEnterdatanow\n\n"

for(i=0;

i<

n;

i++)

\ninput%dthsongrecord.\n"

i+1);

input(i);

/*调用输入函数*/

if(i!

=0)save(n);

/*调用保存函数*/

printf_back();

/*返回*/

}—

(2)删除模块

[分析]

功能是在显示所有歌曲信息后,用户输入要删除歌曲的名字,根据歌名查找记录并删除。

删除的一般做法是将数据从文件中删除,删除位置后面的记录往前挪。

【程序】

voiddelet()/*删除模块*/

structsongs;

inti,n,k,w0=1,w1,w2=0;

n=load();

/*调用加载函数*/

k=-1;

printf_face();

/*调用显示数据结构项目函数*/

if((i!

=0)&

&

i%10==0)

\n\nRememberwhichneededdelete.passanykeytocontiune"

\n\n"

printf_one(i);

/*调用显示一个记录函数*/

}—

\n\nEnterName.thatyouwanttodelete!

Name:

%s”,&

s.name);

if(strcmp(s.name,so[i].name)==0)

k=i;

s=so[i];

if(k==-1)

\n\nNOexit!

Areyouagain?

\n\n\t1).again2).noandback!

[]\b\b"

if(n==1)delet();

elsemenu();

while(k==-1);

printf_one(k);

/*调用显示一个记录函数*/w1=delete_data(i,n);

/*调用显示删除数据函数*/if(w1==1)(

\nSuccessfulA-A.\n\nAreyouagain?

w0);

w2=1;

}else(

w0=0;

if(w2==1)so[k]=s;

while(w0==1);

(3)浏览模块

该模块功能是显示所以歌曲记录信息

voidbrowse()/*浏览模块*/

(i%10==0))

\n\nPassanykeytocontinue\n"

\tThereare%drecord.\n"

n);

\nPassanykeytoback\n"

(4)查找模块

该模块的功能是根据输入的歌曲名、作者、演唱者、日期或四者全部查找相应的歌曲记录,找到后问是否继续查找还是返回主菜单。

search()

intc,m=0;

\n\nsearchby=>

\n\n1).name2).creater3).singer4).date5).all6).back"

Whichyouneed?

%d”,&

c);

if(c>

5||c<

1)

\nChoiceerror!

Pleaseagain!

m=1;

}while(m!

=0);

switch(c)

case1:

fname();

/*根据歌曲名查找*/

fcreater();

/*根据作者名查找*/

fsinger();

/*根据演唱者查找*/

fdate();

/*根据日期查找*/

fall();

/*根据歌曲详细信息查找*/

\n\nSearchingisover!

其中查找模块调用了具体查找的5个函数。

①根据歌曲名查找fname()

【说明】

流程图与总的查找模块流程图一致。

fname()

intk=-1;

\n\nname:

name);

if(strcmp(so[i].name,name)==0)

\nNotFound\n"

\n\nAreyouagain?

\n\t1).again2).noandback[]\b\b"

if(n==1)fname();

②)根据作者名查找fcreater()

fcreater()

\n\ncreater:

%s"

creater);

if(strcmp(so[i].creater,creater)==0)

(k=i;

if(n==1)fcreater();

3)根据演唱者查找fsinger()

fsinger()

\n\nsinger:

singer);

if(strcmp(so[i].singer,singer)==0)

if(n==1)fsinger();

④根据日期查找fdate()

fdate()

chardate[8];

\n\ndate:

date);

if(strcmp(so[i].date,date)==0)

if(n==1)fdate();

◎根据歌曲详细信息查找fall()

fall()

\nname:

\ncreater:

s.creater);

\nsinger:

s.singer);

\ndate:

s.date);

if((strcmp(so[i].name,s.name)==0)&

(strcmp(so[i].creater,s.creater)==0)&

strcmp(so[i].singer,s.singer)==0)&

(strcmp(so[i].date,s.date)==0))

\n\t1).again2).noandback

[]\b\b"

if(n==1)fall();

(5)分组模块

【分析】

该模块的功能是将所有歌曲信息按照作者名一样的进行分组,然后从新显示分组后的所有歌曲信息。

【流程图】

输入歌曲作者名字

将所有歌曲的作者进行比较,

致的分组放在一起

显示分组后的所有歌曲信息

fz(inti,intn)

intj;

for(j=i+1;

j<

j++)

if(strcmp(so[i].creater,so[j].creater)==0)

if(j==i+1)

i++;

fz(i,n);

else

s=so[i+1];

so[i+1]=so[j];

so[j]=s;

if(j==n-1)

i++;

fz(i,n);

save(n);

}devide()

inti=0,n;

fz(i,n);

(6)添加模块

该模块的功能是用户需要增加新的歌曲信息,用户通过键盘逐条写到原来的输入文件中,注意是添加新的歌曲信息而不能覆盖原有歌曲信息。

voidadd()

inti,n,m,k;

FILE*fp;

Howmanysongsdoyouwanttoadd(0-%d)?

N-1-n);

m);

k=m+n;

for(i=n;

k;

\nInput%dthsongrecord.\n"

i-n+1);

input(i);

if((fp=fopen("

song.txt"

"

w"

))==NULL)

(printf("

\nCannotopenfile\n"

fprintf(fp,"

%s%s%s%s\n"

so[i].name,so[i].creater,so[i].singer,so[i].date);

fclose(fp);

【注意】问题的整个程序还要用到文件包含命令和宏定义

#include<

stdio.h>

#include<

stdlib.h>

string.h>

malloc.h>

#defineN100

3.公共函数

下面是在每个功能模块中都有可能用到的一些公共函数。

(1)显示一个记录函数

voidprintf_one(inti)

{—

\n%s%s%s%s\n"

so[i].name,so[i].creater,so[i].singer,so[i].date);

(2)输入一个完整记录函数

input(inti)

{

so[i].name);

so[i].creater);

so[i].singer);

so[i].date);

(3)保存函数

save(intn)

inti;

exit

(1);

so[i].name,so[i].creater,so[i].singer,so[i].date);

(4)返回上一级函数

printf_back()

voidbrowse();

voidmenu();

intw;

\n\n\tSuccessful.A-A\n\nH);

Whatdoyouwanttodo?

\n\n\t1).Browseall

now\t2).Back:

w);

if(w==1)browse();

(5)加载函数

intload()

r"

return0;

!

feof(fp);

fscanf(fp,"

%s%s%s%s"

return(i);

(6)显示数据结构项目函数

printf_face()

{—

\nnamecreatersingerdate\n"

(7)显示删除数据函数

intdelete_data(intj,intn)

=j)

return1;

五.上机操作

1.数据源

程序经过编译、运行后,由用户经键盘输入歌曲信息

2.编译、链接和运行

3.结果

下面是各个模块的界面图

(2)输入模块

在主界面出现后输入1按回车看到下图:

C:

MC\TC,EKB

1234567

enterdeletebrowseseai^clideuideaddexit

choiceyournumber<

l-?

>

113

Hownanusonas<

0-99>

?

(3)输入要输入的歌曲记录数然后逐条增加,如下图:

hoiceyoui*numbepCl-75:

11Jlounanysongrs<

0—?

=3

Enterdatanou

inputl^hsonsFCGord-

lAne=qqq[

reat&

y:

q(f

late=1

input2fchsanyi*eeai'

dl_

lane-uwvj

i'

eatep:

uu

ii«

ger=u

late-2

input3thsonsrecordl-

lane*eee

ir&

ater:

ee

m土n.套e

late"

3

GiiccessFuilwA

dououuanctodo?

(4)返回主菜单后输入2进入删除模块

bhoiceyoupnunhev<

l-7^:

[2J

name

epeater

singei*

<

late

qq

q

1

l-H-JUJ

IHJ

u

2

bee

ee

e

3

Entei^Name.thatyouvanttodel«

te!

Nane:

eeenameCPeatei*singerdateeeeeee2EuccessfulA—A_fireyouagain?

|1〉_己ggizln2〉*ni)andbad?

[_]

(5)输入2后返回主菜单再输入3进入浏览模块

choiceyaupnunfcer<

[3]

lamecpestersingerd就t”

邮aaq1

叫hhhu2

ThereaiEe2reccrd.

Passanykeytohack

MKMMKMMMMMXMKMMKMMWflliHUKNHWMHKMKMMKMKKKKMKKMH

1_ente^

2-delet#

3-hx。

叩雪酷

4.scareli

5.djeuide

6.Md

7,exit

JtKUKJtJtJCJtJtKZKJtJ(3t

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2