课程设计:十大歌手排行榜
2015-07-09 13:13
405 查看
唉,课程设计,没办法,还是花了点时间写咯。。纪念一下~
txt文件:
张学友 [0] 一路上有你
刘欢 [0] 弯弯的月亮
周华健 [0] 朋友
刘德华 [0] 今天
梁静茹 [0] 暖暖
周杰伦 [0] 龙卷风
刘惜君 [0] 我很快乐
王菲 [0] 红豆
许嵩 [0] 断桥残雪
苏打绿 [0] 再遇见
#include<bits/stdc++.h> using namespace std; int cnt; set<string> s; //建立二叉排序树 set<string>::iterator it; map<string,int> m; //歌手与票数以hash表的形式存储 map<string,string> mm; //歌手与主打歌曲通过hash映照 struct P { string name, song; int num; }p[10010]; bool cmp(P c, P d) {return c.num > d.num;} void Sort() //按投票数排序 { cnt = 0; for(it=s.begin(); it!=s.end(); it++) { p[cnt].name = (*it); p[cnt].num = m[(*it)]; p[cnt++].song = mm[(*it)]; } sort(p,p+cnt,cmp); } void Solve_1() //给喜欢的歌手投票 { string name, song; printf("请输入歌手名字:"); cin >> name; if(mm[name] == "") { printf("请输入歌手的主打歌曲:"); cin >> song; mm[name] = song; //利用hash表每个歌手对应着其主打歌曲 } s.insert(name); m[name]++; //此歌手票数加1 cout << "歌手" << name << "已经有" << m[name] << "票啦!\n\n"; } void Solve_2() //查看上榜歌手主打歌曲 { if(s.size() < 10) puts("人数还不足十个,请稍后查看"); else { for(int i = 0; i<10; i++) cout << p[i].name << " 主打歌曲为 《" << mm[p[i].name] << "》\n\n"; } } void Solve_3() //查看歌手票数 { string name; printf("请输入要查看歌手的名字:"); cin >> name; cout << name << "现在已有:" << m[name] << "票\n\n"; } void Solve_4() //排行榜 { if(s.size() < 10) {puts("人数尚不足十个"); return ;} puts("\n"); cout << " " << "十大流行歌手" << endl; cout << " " << "歌手名字[得票数]" << endl; for(int i=0; i<38; i++) printf("-"); puts(""); for(int i=0; i<10; i++) cout << " " << p[i].name << "[" << p[i].num << "]\n"; cout << endl; } void Solve() //打印初始化页面 { cout << "***************************************" << endl; cout << "* 十大流行歌手 *" << endl; cout << "*-------------------------------------*" << endl; cout << "* 1.给喜欢的歌手投票 *" << endl; cout << "* 2.查看上榜歌手主打歌曲 *" << endl; cout << "* 3.查看歌手票数 *" << endl; cout << "* 4.排行榜 *" << endl; cout << "* 0.保存并退出 *" << endl; cout << "***************************************" << endl; cout << '\n' << "Please select(1,2,3,4,0): " ; } int main() { string t; char fname[100], fsong[100]; int fnum; freopen("out.txt", "r", stdin); //从文件输入 while(scanf("%s [%d] %s", fname,&fnum,fsong) != EOF) { string x = fname; s.insert(x), m[x] = fnum, mm[x] = fsong; } Sort(); freopen("CON", "r", stdin); //改为从控制台输入 while(1) { Solve(); cin >> t; if(t == "1") {Solve_1(); Sort();} else if(t == "2") Solve_2(); else if(t == "3") Solve_3(); else if(t == "4") Solve_4(); else if(t == "0") break; else puts("非法输入!!!\n"); } freopen("out.txt", "w", stdout); //从文件输出 for(int i=0; i<cnt; i++) cout << p[i].name << " [" << p[i].num << "]" << p[i].song << endl; fclose(stdin); fclose(stdout); return 0; }学到了如何从文件输入与从控制台输入的相互转化。
txt文件:
张学友 [0] 一路上有你
刘欢 [0] 弯弯的月亮
周华健 [0] 朋友
刘德华 [0] 今天
梁静茹 [0] 暖暖
周杰伦 [0] 龙卷风
刘惜君 [0] 我很快乐
王菲 [0] 红豆
许嵩 [0] 断桥残雪
苏打绿 [0] 再遇见
相关文章推荐
- 12C -- 配置EM Express的端口
- 6.2-2
- jquery select选中表单特效三级联动
- 再说约瑟夫环
- WPF 多语言
- Python发邮件
- iOS添加日期选择器
- 解题报告:线段树的查询
- 安卓卸载一个程序的代码
- C# 中的委托和事件(通俗易懂)
- html 学习笔记2
- HDU 5072 Coprime (单色三角形+容斥原理)
- 百度地图页面上展示
- GRE写作必备句型
- 6.2-1
- Chrome Dev Tool 中时间线各阶段代表的意义
- 转载Mysql的乱码问题
- 关于心理的二十五种倾向(查理·芒格)-1
- MySQL与Oracle 差异比较之数据类型比较
- JavaScript编码规范-Baidu