本设计涉及到对数据的输入、增加、删除、修改、查询、排序以及文件存取的具体应用。还有函数指针、类的应用、多文件结构等知识。可移植性强、界面美观、初具小型系统雏形,是一份值得借鉴与学习的课程设计。希望读者喜欢~

特此声明:

基于有一些阅读者想与笔者有交流与合作,贴一下本人的微信:StarsForMoon,添加请说明来意(如CSDN)。如果觉得做得还不错的话,考虑到笔者暂时还不能用爱发电,整个项目打包(源码、设计文档)+ 任意一处源码答疑可联系微信,30R即可。感谢你对笔者的支持!CSDN上确实不方便发送,谢谢配合:)

另外笔者还有另一个开发项目:Python结合机器学习的基于天气预报数据的数据分析与可视化课程设计项目,欢迎感兴趣的朋友交流学习~

编译器:VisualStudio 2019 / Dev C++皆可

系统 : 歌手比赛评分系统

设计要求:
设计一个有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分和最低分,剩下分数的平均值作为每位选手最后的成绩。要求设计一个能对比赛数据进行输入、增加、删除、修改、排序、查询、保存、展示的选手评分系统。

要求完成的主要任务:
1)采用类定义每个选手的参赛编号,姓名以及十个裁判打出的分数;
2)从键盘输入每个选手的相关信息:参赛编号,姓名和十个得分;
3)计算每位选手的最后得分,并按分数由高到低排序;
4)查询功能:输入参赛选手的编号或姓名,便可输出该选手的得分以及排名。

创新点:
(1)运用多种查询方法,精确查找、二分法查询、模糊查询就是典型的应用,对不同数据做到可查可改可删。
(2)运用多种排序方法,冒泡排序、选择排序、直接插入排序、希尔排序对成绩数据,或者成绩+编号的多属性环境下进行排序,运用数学中带分数的思想,解决了多属性排序的问题

优点:
(1)简洁美观,方便使用。
笔者从用户使用角度出发,不断优化迭代程序,将功能选择权交给用户,做到方便用户使用。

(2)功能多样,不呆板。
排序、查询功能是核心功能,因此对这两处的设计尤为看重,排序功能多种排序方法实现,且分为单属性和多属性排序,还可升降序查看。查询功能做到不同数据类型也能查,能查单个数据,也能查询多条数据。

(3)使用类方法,面向对象编程。

模块设计结构图

主要数据结构:

(一)、Singer类
/*歌手信息*/
class Singer
{private:int Number;         //选手编号char  *name;         //选手姓名float prescores[10];//选手初始10个成绩数据float maxscore;       //选手最高分float minscore;      //选手最低分float totalscore;       //选手总分(10)float evenscore;      //选手(8)float averagescore;   //选手平均分
public:friend class Judge;              //judge和singer互为友元类Singer(float presc[], int Num, const char *nam,          //构造函数float maxsc,float minsc,float totalsc,float evensc,float averagesc);~Singer();                                                    //析构函数/*类的成员函数*/float GetMax(float a[], int len);                           //最大值float GetMin(float b[], int len);                          //最小值float sum(float c[], int len);                             //求和/*友元函数*/friend void menu(Singer singers[], Judge judges[], int* n, int* m,int *judge_num,bool *system_key);             //菜单函数friend void ContestantInfo(Singer singers[], Judge judges[], int* n, int* m); //选手个人信息输入函数friend void ContestantRankings(Singer singers[], int n);    //选手排名friend bool QueryInfo(Singer singers[], int n);           //查询选手信息friend void InsertInfo(Singer singers[], Judge judges[], int* n, int* m,int judge_num);     //插入选手数据friend void SaveInfo(Singer singers[], int n);                  //保存函数friend void JudgeScores(Singer singers[], Judge judges[], int* n, int* m,int judge_num);      //裁判打分函数friend bool ModifyInfo(Singer singers[], int n,int judge_num);  //修改函数friend void DelInfo(Singer singers[], int* n);                      //删除函数friend void DisplayInfo(Singer singers[], int n);                 //信息展示函数/*友元函数子函数*/friend int binaryFindNo(Singer singers[], int n, int score);   //二分查找函数friend void RankView(Singer singers[], int n);          //排序查看函数friend void ObverseOrder(Singer singers[], int n);      //正序输出friend void ReverseOrder(Singer singers[], int n);        //逆序输出friend void BubbleSort(Singer singers[], int n);          //冒泡排序friend void SelectSort(Singer singers[], int n);          //选择排序friend void ShellSort(Singer singers[], int n);               //希尔排序friend void InsertSort(Singer singers[], int n);          //插入排序
};
(二)、Judge类
/*裁判信息*/
class Judge
{public:int JudgeNo;             //评委编号float score;              //评委评分friend class Singer;      //judge和singer互为友元类~Judge();                    //析构函数
};

一、主要文件结构

说明:

① func.cpp:用于存放实现所有功能的函数(如菜单实现、各种增删改查保存展示功能的函数实现、数据输入与保存、数据展示)。

② main.py:负责启动系统,调用函数执行相应功能与终止系统,它是程序运行入口。

③ singer.h:函数的声明,类的声明。相当于是func.cpp的蓝图。

二、具体文件细节(部分)

(1)main.cpp源代码:

#pragma
#include<iostream>
#include "singer.h"
using namespace std;/*主函数调用的入口*/
int main()
{/*系统的总开关*/bool system_key = 1;//避免直接使用exit(0)/*一些最基本的底层信息*/int n = 10;//总选手人数,默认为10人int m = 0;//增加的人数int judge_num = 10;   //裁判数量Judge judges[10]; //十个裁判默认生成/*十个默认选手的十个成绩*/float scr_1[10] = { 10,10,10,10,10,10,10,10,10,10 };float scr_2[10] = { 10,10,10,10,10,10,10,10,10,10 };float scr_3[10] = { 10,8,10,10,10,10,10,7,10,10 };float scr_4[10] = { 10,8,10,5,10,5,10,7,10,10 };float scr_5[10] = { 10,8,10,5,10,5,10,7,10,10 };float scr_6[10] = { 9,8,9,5,9,5,9,7,9,9 };float scr_7[10] = { 1,2,3,4,5,6,7,8,9,10 };float scr_8[10] = { 0,1,1,1,1,1,1,1,1,1 };float scr_9[10] = { 2,3,3,4,1,4,5,1,2,2 };float scr_10[10] = { 1,3,7,0,10,3,6,7,4,5 };/*默认对象初始化*/Singer singers[10] ={{scr_1,1001,(char*)"张三",10,10,100,80,10},{scr_2,1003,(char*)"王五",10,10,100,80,10},{scr_3,1004,(char*)"李四",10,7,95,78,9.75},{scr_4,1002,(char*)"赵六",10,5,85,70,8.75},{scr_5,1005,(char*)"孙一",10,5,85,70,8.75},{scr_6,1006,(char*)"钱七",9,5,79,64,8.00},{scr_7,1007,(char*)"Tom",10,1,55,44,5.50},{scr_8,1008,(char*)"Biden",1,0,9,8,1.00},{scr_9,1009,(char*)"Trump",5,1,27,21,2.625},{scr_10,1010,(char*)"Moss",10,0,46,36,4.50}};/*函数入口,所有功能的集成*/while (system_key){menu(singers, judges,&n,&m,&judge_num,&system_key);}return 0;
}

(2)func.cpp源代码(部分):

#pragma once
#include "singer.h"
#include <iostream>
using namespace std;/*菜单函数*/
void menu(Singer singers[], Judge judges[], int* n, int* m,int *judge_num,bool *system_key)
{int choice;cout << "  ******************************************************\n\n";cout << "  *                歌手比赛管理系统                    *\n \n";cout << "  ******************************************************\n\n";cout << "  *********************系统功能菜单*********************       \n";cout << "     ---------------------------------------------   \n";cout << "     *********************************************     \n";cout << "     * 0.系统帮助及说明  * *  1.输入选手信息   *     \n";cout << "     *********************************************     \n";cout << "     * 2.输入评委打分    * *  3.选手成绩排序   *     \n";cout << "     *********************************************     \n";cout << "     * 4.查询选手数据    * *  5.追加选手数据   *     \n";cout << "     *********************************************     \n";cout << "     * 6.保存选手数据    * *  7.删除选手信息   *     \n";cout << "     *********************************************     \n";cout << "     * 8.显示选手信息    * *  9.修改选手信息*     \n";cout << "     *********************************************     \n";cout << "     * 10.退出系统       *     \n";cout << "     ---------------------------------------------     \n";cout << "请选择菜单编号:";cin >> choice;switch (choice)//switch多分支用于功能选择{case 0:{SystemHelp();break;}case 1:{ContestantInfo(singers, judges, n, m);break;}case 2:{JudgeScores(singers, judges, n, m,*judge_num);break;}case 3:{ContestantRankings(singers, *n);break;}case 4:{QueryInfo(singers, *n);break;}case 5:{InsertInfo(singers, judges, n, m,*judge_num);break;}case 6:{SaveInfo(singers, *n);break;}case 7:{DelInfo(singers, n);break;}case 8:{DisplayInfo(singers, *n);break;}case 9:{ModifyInfo(singers, *n,*judge_num);break;}case 10:{*system_key = 0;cout << "即将退出程序!\n";break;//exit(0); //终止整个程序运行}default:{cout << "请在0-10之间选择\n";//增加使用友好性}}
}

菜单展示:

func.cpp中各种实现功能的函数一览:

一些核心功能的展示

(1)排序功能展示

(2)查询功能展示

(3)显示功能展示

(3)singer.h源代码:

#pragma once
#define _CRT_SECURE_NO_WARNINGS//fopen函数不安全
#include<string>//字符串比较
#include<iomanip>//格式控制
#include<fstream>//文件输入输出流
#include<stdlib.h>/*裁判信息*/
class Judge
{public:int JudgeNo;             //评委编号float score;              //评委评分friend class Singer;      //judge和singer互为友元类~Judge();                    //析构函数
};/*歌手信息*/
class Singer
{private:int Number;         //选手编号char  *name;      //选手姓名float prescores[10];//选手初始10个成绩数据float maxscore;      //选手最高分float minscore;      //选手最低分float totalscore;    //选手总分(10)float evenscore;  //选手(8)float averagescore;  //选手平均分
public:friend class Judge;                                                      //judge和singer互为友元类Singer(float presc[], int Num, const char *nam,                          //构造函数float maxsc,float minsc,float totalsc,float evensc,float averagesc);~Singer();                                                                //析构函数/*类的成员函数*/float GetMax(float a[], int len);                                       //最大值float GetMin(float b[], int len);                                      //最小值float sum(float c[], int len);                                         //求和/*友元函数*/friend void menu(Singer singers[], Judge judges[], int* n, int* m,int *judge_num,bool *system_key);             //菜单函数friend void ContestantInfo(Singer singers[], Judge judges[], int* n, int* m); //选手个人信息输入函数friend void ContestantRankings(Singer singers[], int n);                        //选手排名friend bool QueryInfo(Singer singers[], int n);                                   //查询选手信息friend void InsertInfo(Singer singers[], Judge judges[], int* n, int* m,int judge_num);     //插入选手数据friend void SaveInfo(Singer singers[], int n);                                  //保存函数friend void JudgeScores(Singer singers[], Judge judges[], int* n, int* m,int judge_num);      //裁判打分函数friend bool ModifyInfo(Singer singers[], int n,int judge_num);                              //修改函数friend void DelInfo(Singer singers[], int* n);                                    //删除函数friend void DisplayInfo(Singer singers[], int n);                             //信息展示函数/*友元函数子函数*/friend int binaryFindNo(Singer singers[], int n, int score);                 //二分查找函数friend void RankView(Singer singers[], int n);                                  //排序查看函数friend void ObverseOrder(Singer singers[], int n);                              //正序输出friend void ReverseOrder(Singer singers[], int n);                                //逆序输出friend void BubbleSort(Singer singers[], int n);                              //冒泡排序friend void SelectSort(Singer singers[], int n);                              //选择排序friend void ShellSort(Singer singers[], int n);                                   //希尔排序friend void InsertSort(Singer singers[], int n);                              //插入排序
};/*系统帮助函数*/
void SystemHelp();

其他的更多内容(比如数据输入、保存、修改等比较易于实现)就不在这里展示了,这个系统非常完善,笔者这里有清晰的注释与设计文档,且技术水平自认为还是可以的。这份课程设计是专业排名第二的分数,有96分。

如有购买需求,请直接添加微信:StarsForMoon ,其他问题也欢迎私信交流或在评论区留言,感谢看到此处~

最后,觉得做得还不错的话请点赞、收藏、转发支持一下吧~,要是点一点关注那就更好了!

【C++课程设计项目】歌手评分系统(代码量1500行含设计文档)相关推荐

  1. 歌手比赛系统c语言程序注释,C语言程序课程设计—歌手比赛系统(20页)-原创力文档...

    淮南师范学院 课程设计报告 歌手比赛系统 姓 名:胡欢欢 学号: 1008010109 专 业:计算机科学与技术 班 级: 10 级( 1)班 指导教师:彭飞 职称: XXX 2013 年 3 月 7 ...

  2. 基于springboot“漫画之家”系统(附源码、设计文档)

    摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,& ...

  3. c语言ktv点歌系统链表,C语言链表实现歌手评分系统

    本文实例为大家分享了C语言链表实现歌手评分系统的具体代码,供大家参考,具体内容如下 此程序可以添加文件操作用于保存歌手得分等信息,此程序实现了链表的增删查和链表冒泡排序交换节点功能 #include ...

  4. 2021-5-11【头歌】【歌手评分系统】

    编程要求 歌手评分系统:有7个评委对歌手打分,请编程计算歌手的成绩. 规则:去掉一个最高分,去掉一个最低分,求平均分,就是歌手应得分. 效果如下: 输入:99 98.5 96 92.5 96.5 90 ...

  5. 基于ssh的航空订票系统-飞机订票系统javaweb-机票订购课程设计java代码(源码+数据库文件+文档)

    基于ssh的航空订票系统-飞机订票系统javaweb-机票订购java代码(源码+数据库文件+文档) 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言: ...

  6. 基于JAVA计算机课程在线培训学习管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA计算机课程在线培训学习管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA计算机课程在线培训学习管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: ...

  7. 基于JAVA汽车租赁系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA汽车租赁系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA汽车租赁系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  8. 基于JAVA高校实习管理平台系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA高校实习管理平台系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA高校实习管理平台系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...

  9. 基于JAVA华水疫情预警与防护用品调度系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA华水疫情预警与防护用品调度系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA华水疫情预警与防护用品调度系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: ...

最新文章

  1. Android替换view父节点,android – issue:指定的子节点已经有父节点.您必须首先在孩子的父母上调用removeView()...
  2. php验证码内置函数,刚写了一个PHP的高效验证码函数 | 学步园
  3. linux文本文件和win文本文件的格式互换
  4. crt 8.7.3 黑暗模式_科技有意思 | 黑黑黑黑黑黑黑黑暗模式
  5. keil p0 0c语言不了,Keil C51对C语言的关键词扩展之十三: sfr
  6. Oracle非常规恢复(使用BBED跳过归档)
  7. Nginx测试实验--rest服务端负载均衡应用
  8. jquery 自定义插件!
  9. ...三个点es6用法
  10. smote算法 不平衡数据集处理方法
  11. java poi 创建ppt图表,柱状图
  12. ps基础学习:渐变工具制作倒影效果
  13. recovery模式是什么意思?recovery模式怎么刷机?
  14. 计算机日志存储在哪里,Win7系统日志存放位置的更改
  15. 用力一瞥Android渲染机制-黄油计划
  16. 2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,
  17. window系统 安装 nvm 详细步骤
  18. 立创开源|USB示波器+信号发生器+USB存储 三合一
  19. 618主场之变:谁是后疫情时代消费的主角?
  20. Ubuntu查看一些版本 1

热门文章

  1. 大厂码农在北京买房需要几年?
  2. discuz论坛的抓取
  3. linux 查看用户权限组,linux用户组及权限
  4. 编程最佳字体_网站上使用的10种最佳装饰字体
  5. c语言小游戏小人的移动,C乐趣之移动的小人
  6. u盘插在电脑上灯亮没有反应_u盘插电脑灯在闪但是没反应怎么办
  7. httprunner之业务解耦
  8. 阿里云数据库(RDS)查看空间使用情况
  9. 「机械工程」力矩,转矩,扭矩的理解
  10. 微信小程序|小程序开发进阶