最佳歌手排行榜数据结构课实训报告.docx

上传人:b****6 文档编号:3727414 上传时间:2022-11-24 格式:DOCX 页数:15 大小:163KB
下载 相关 举报
最佳歌手排行榜数据结构课实训报告.docx_第1页
第1页 / 共15页
最佳歌手排行榜数据结构课实训报告.docx_第2页
第2页 / 共15页
最佳歌手排行榜数据结构课实训报告.docx_第3页
第3页 / 共15页
最佳歌手排行榜数据结构课实训报告.docx_第4页
第4页 / 共15页
最佳歌手排行榜数据结构课实训报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

最佳歌手排行榜数据结构课实训报告.docx

《最佳歌手排行榜数据结构课实训报告.docx》由会员分享,可在线阅读,更多相关《最佳歌手排行榜数据结构课实训报告.docx(15页珍藏版)》请在冰豆网上搜索。

最佳歌手排行榜数据结构课实训报告.docx

最佳歌手排行榜数据结构课实训报告

数据结构实训报告

 

题目:

流行歌手排行榜

 

一、课程设计题目:

流行歌手排行榜

二、问题描述:

建立一个流行歌手排行榜。

三、问题分析

1、输入的形式:

整型数字(范围:

0-100),字符型(歌手姓名及歌曲名称)

2、输出的形式:

字符型

3、程序所达到的功能:

(1)输入歌手信息

(2)显示歌手信息

(3)投票

(4)显示前十名

4、算法涉及的基本理论分析:

(1)定义结构体singer;

(2)switch语句;

(3)while语句;

(4)for语句;

(5)break语句。

5、题目研究和实现的价值:

通过这个简单的程序初步认识到编程这项工作在将来的程序开发中的作用和价值。

 

四、算法设计

1、概要设计

  各程序模块之间的层次(调用)关系:

 

 

 

2、详细设计

(1)所有函数的算法描述;

①主函数程序:

intmain()

{

SINGERa[N];

intn,choice;

do{

choice=choiceItem();

switch(choice){

case1:

n=input(a);break;

case2:

browse(a,n);break;

case3:

Top10(a,n);break;

case4:

vote(a,n);break;

}

}while(choice!

=0);

printf("\n\nBye!

!

");

return0;

}

②显示主菜单程序:

voiddisplayMenu()

{

printf("\n============主菜单============\n");

printf("\n1..........输入信息\n");

printf("\n2..........显示信息\n");

printf("\n3..........显示前十名\n");

printf("\n4..........投票\n");

printf("\n0..........返回\n");

printf("\n选择:

");

}

intchoiceItem()

{

intchoice;

charline[80];

do{

displayMenu();

gets(line);

choice=atoi(line);

}while(choice<0||choice>4);

returnchoice;

}

③输入信息程序:

intinput(SINGERs[])

{

charbuf[256];

inti=0;

while

(1)

{

printf("\nPleaseInputNoSinger_NameSong_Name\n");

gets(buf);

if(buf[0]=='\0')break;

sscanf(buf,"%d%s%s",&s[i].No,s[i].singer_name,s[i].name);

s[i++].num=1;

}

returni;

}

④显示信息程序:

voidbrowse(SINGERs[],intn)

{

inti;

printf("\nNum\tSinger_Name\tSong_Name\n");

for(i=0;i

printf("%d\t%s\t%s\n",s[i].No,s[i].singer_name,s[i].name);

}

 

⑤显示前十名程序:

voidTop10(SINGERs[],intn)

{

inti,j,k;

SINGERtemp[N],t;

for(i=0;i

temp[i]=s[i];

for(i=0;i

{

k=i;

for(j=j+1;j

if(temp[k].num

if(k!

=i)

{

t=temp[i];

temp[i]=temp[k];

temp[k]=t;

}

}

printf("\nSinger_Name\tSong_Name\n");

for(i=0;i<10&&i

printf("%s\t\t%s\n",temp[i].singer_name,temp[i].name);

}

⑥投票程序:

voidvote(SINGERs[],intn)

{

inti;

charbuf[80];

printf("\nEntersinger'No:

");

gets(buf);

for(i=0;i

if(s[i].No==atoi(buf))

{

s[i].num++;

printf("\nVoteOK\n");

break;

}

if(i==n)

printf("ErrorNo.\n");

}

 

流程图

 

 

 

 

 

 

五、算法实现

#include

#include

#defineN100

typedefstructsinger{

intNo;

charsinger_name[32];

charname[16];

intnum;

}SINGER;

voiddisplayMenu();

intchoiceItem();

intinput(SINGERs[]);

voidbrowse(SINGERs[],intn);

voidTop10(SINGERs[],intn);

voidvote(SINGERs[],intn);

intmain()

{

SINGERa[N];

intn,choice;

do{

choice=choiceItem();

switch(choice){

case1:

n=input(a);break;

case2:

browse(a,n);break;

case3:

vote(a,n);

break;

case4:

Top10(a,n);break;

}

}while(choice!

=0);

printf("\n\nBye!

!

");

return0;

}

voiddisplayMenu()

{

printf("\n================Menu================\n");

printf("\n1============录入歌手信息============\n");

printf("\n2=========显示流行歌手排行榜=========\n");

printf("\n3===============投票=================\n");

printf("\n4==========显示人气歌手排行==========\n");

printf("\n0===============退出=================\n");

printf("\n请选择:

");

}

intchoiceItem()

{

intchoice;

charline[80];

do{

displayMenu();

gets(line);

choice=atoi(line);

}while(choice<0||choice>4);

returnchoice;

}

intinput(SINGERs[])

{

charbuf[256];

inti=0;

while

(1)

{

printf("\n请输入序号歌手姓名歌曲名称\n");

gets(buf);

if(buf[0]=='\0')break;

sscanf(buf,"%d%s%s",&s[i].No,s[i].singer_name,s[i].name);

s[i++].num=1;

}

returni;

}

voidbrowse(SINGERs[],intn)

{

inti;

printf("\n序号\t歌手姓名\t歌曲姓名\n");

for(i=0;i

printf("%d\t%5s\t%12s\n",s[i].No,s[i].singer_name,s[i].name);

}

voidvote(SINGERs[],intn)

{

inti;

charbuf[80];

printf("\n请输入你想投给的歌手序号:

");

gets(buf);

for(i=0;i

if(s[i].No==atoi(buf))

{

s[i].num++;

printf("\nVoteOK\n");

break;

}

if(i==n)

printf("ErrorNo.\n");

}

voidTop10(SINGERs[],intn)

{

inti,k,j=0;

SINGERtemp[N],t;

for(i=0;i

temp[i]=s[i];

for(i=0;i

{

k=i;

for(j=j+1;j

if(temp[k].num

if(k!

=i)

{

t=temp[i];

temp[i]=temp[k];

temp[k]=t;

}

}

printf("\n歌手姓名\t歌曲姓名\n");

for(i=0;i<10&&i

printf("%s\t\t%s\n",temp[i].singer_name,temp[i].name);

}

 

六、软件测试

具体情况见截屏或运行程序。

歌手排行榜.c

日志.doc

7、技术讨论

根据题目要求的功能实现,首先应该要考虑整个程序的结构,继而写出整个程序界面的主菜单,根据菜单列出的各项功能,编出相应的算法其中应用到for循环,while循环语句以及switch选择分支语句,定义歌手的信息,必然要用到结构体类型,而且为了实现程序功能,还必须写出主函数以及对主函数进行调用。

八、收获与体会

通过一周的实践周,我们颇有收获。

在分组时我们认识到了要学会团结分工合作,任务不是个人的,而是我们每个人都应尽力去做的。

同时在编译算法的时候,我们学会了运用书本上的知识以及来自互联网的各种信息,从中采取一些相关知识得以运用。

当然编译时常常会出现错误,我们在一起纠正错误同时找到了一些窍门得以提高效率。

在撰写实训报告时我们相互帮助分工合作。

总之,在工作过程中让我们在提高专业技能的同时互相交流增进友谊。

9、软件运行的部分截图及说明

1主菜单显示截图:

2录入歌手信息截图:

 

3显示流行歌手排行榜截图

4为歌手投票截图

 

5显示人气歌手排行榜截图

6退出截图

 

参考文献

C程序设计教程——潭浩强

数据结构(C语言描述)——徐孝凯贺桂英

网络

 

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

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1