1、最佳歌手排行榜数据结构课实训报告数据结构实训报告题目:流行歌手排行榜一、课程设计题目:流行歌手排行榜二、问题描述:建立一个流行歌手排行榜。三、问题分析 1、输入的形式:整型数字(范围:0-100),字符型(歌手姓名及歌曲名称) 2、输出的形式:字符型 3、程序所达到的功能: (1)输入歌手信息 (2)显示歌手信息 (3)投票 (4)显示前十名 4、算法涉及的基本理论分析: (1)定义结构体singer;( 2 )switch语句;( 3 )while语句;( 4 )for语句; (5)break语句。 5、题目研究和实现的价值: 通过这个简单的程序初步认识到编程这项工作在将来的程序开发中的作用
2、和价值。四、算法设计1、概要设计各程序模块之间的层次(调用)关系:2、详细设计(1)所有函数的算法描述; 主函数程序: int main() SINGER aN; int n, choice; do choice = choiceItem(); switch (choice) case 1: n = input(a); break; case 2: browse(a, n); break; case 3: Top10(a, n); break; case 4: vote(a, n); break; while (choice!=0); printf(nnBye!); return 0; 显示主
3、菜单程序:void displayMenu() printf(n= 主菜单=n); printf(n 1.输入信息n); printf(n 2.显示信息n); printf(n 3.显示前十名n); printf(n 4.投票n); printf(n 0.返回 n); printf(n选择:);int choiceItem() int choice; char line80; do displayMenu(); gets(line); choice = atoi(line); while (choice4); return choice; 输入信息程序:int input(SINGER s)
4、char buf256; int i = 0; while(1) printf(nPlease Input No Singer_Name Song_Name n); gets(buf); if (buf0 = 0) break; sscanf( buf, %d%s%s, &si.No, si.singer_name, si.name); si+.num = 1; return i; 显示信息程序:void browse(SINGER s , int n) int i; printf(n NumtSinger_NametSong_Namen); for (i=0; in; i+) printf(
5、 %dt%st%sn, si.No, si.singer_name, si.name); 显示前十名程序:void Top10(SINGER s, int n) int i, j, k; SINGER tempN, t; for (i=0; iN; i+) tempi = si; for (i=0; in-1; i+) k = i; for (j=j+1; jn; j+) if (tempk.numtempj.num) k = j; if (k!=i) t = tempi; tempi = tempk; tempk = t; printf(n Singer_NametSong_Namen);
6、for (i=0; i10 & in; i+) printf( %stt%sn, tempi.singer_name, tempi.name); 投票程序:void vote(SINGER s , int n) int i; char buf80; printf(nEnter singerNo :); gets(buf); for (i=0; in; i+) if (si.No=atoi(buf) si.num+; printf(nVote OKn); break; if (i=n) printf(Error No.n);流程图五、算法实现#include #include #define N
7、 100typedef struct singer int No; char singer_name32; char name16; int num; SINGER;void displayMenu();int choiceItem();int input(SINGER s );void browse(SINGER s , int n);void Top10(SINGER s , int n);void vote(SINGER s , int n);int main() SINGER aN; int n, choice; do choice = choiceItem(); switch (ch
8、oice) case 1: n = input(a); break; case 2: browse(a, n); break; case 3: vote(a, n); break; case 4: Top10(a, n); break; while (choice!=0); printf(nnBye!); return 0;void displayMenu() printf(n= Menu =n); printf(n 1=录入歌手信息=n); printf(n 2=显示流行歌手排行榜=n); printf(n 3=投票=n); printf(n 4=显示人气歌手排行=n); printf(n
9、0=退出=n); printf(n请选择:);int choiceItem() int choice; char line80; do displayMenu(); gets(line); choice = atoi(line); while (choice4); return choice;int input(SINGER s) char buf256; int i = 0; while(1) printf(n请输入 序号 歌手姓名 歌曲名称 n); gets(buf); if (buf0 = 0) break; sscanf( buf, %d%s%s, &si.No, si.singer_
10、name, si.name); si+.num = 1; return i; void browse(SINGER s , int n) int i; printf(n 序号t歌手姓名t歌曲姓名n); for (i=0; in; i+) printf( %dt%5st%12sn, si.No, si.singer_name, si.name);void vote(SINGER s , int n) int i; char buf80; printf(n请输入你想投给的歌手序号 :); gets(buf); for (i=0; in; i+) if (si.No=atoi(buf) si.num
11、+; printf(nVote OKn); break; if (i=n) printf(Error No.n);void Top10(SINGER s, int n) int i,k, j = 0; SINGER tempN, t; for (i=0; iN; i+) tempi = si; for (i=0; in-1; i+) k = i; for (j=j+1; jn; j+) if (tempk.numtempj.num) k = j; if (k!=i) t = tempi; tempi = tempk; tempk = t; printf(n 歌手姓名t歌曲姓名n); for (
12、i=0; i10 & in; i+) printf( %stt%sn, tempi.singer_name, tempi.name);六、软件测试具体情况见截屏或运行程序。歌手排行榜.c日志.doc7、技术讨论根据题目要求的功能实现,首先应该要考虑整个程序的结构,继而写出整个程序界面的主菜单,根据菜单列出的各项功能,编出相应的算法其中应用到for循环,while循环语句以及switch选择分支语句,定义歌手的信息,必然要用到结构体类型,而且为了实现程序功能,还必须写出主函数以及对主函数进行调用。八、收获与体会 通过一周的实践周,我们颇有收获。在分组时我们认识到了要学会团结分工合作,任务不是个人的,而是我们每个人都应尽力去做的。同时在编译算法的时候,我们学会了运用书本上的知识以及来自互联网的各种信息,从中采取一些相关知识得以运用。当然编译时常常会出现错误,我们在一起纠正错误同时找到了一些窍门得以提高效率。在撰写实训报告时我们相互帮助分工合作。总之,在工作过程中让我们在提高专业技能的同时互相交流增进友谊。9、软件运行的部分截图及说明 1 主菜单显示截图: 2 录入歌手信息截图:3 显示流行歌手排行榜截图4 为歌手投票截图5 显示人气歌手排行榜截图6 退出截图参考文献C程序设计教程潭浩强数据结构(C语言描述)徐孝凯 贺桂英网络
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1