C语言实现歌手比赛系统
系统概述
歌手比赛系统是一款使用C语言实现的命令行程序,旨在为歌手比赛场次提供后台管理功能。该系统可以添加、删除、修改歌手信息,查询歌手列表和评分,并且可以实现对歌手评分的计算和排名。
实现步骤
步骤一:创建数据结构
首先需要定义一个数据结构来存储歌手的信息,数据结构可以用结构体来进行描述。以下是一个示例结构体:
typedef struct{
char name[20]; // 名称
int id; // 编号
char gender[10]; // 性别
char type[10]; // 流派
float score[10]; // 评分
float sumscore; // 总分
} Singer;
步骤二:实现基本功能
在实现系统的基本功能时,包括添加、删除、修改歌手信息,查询歌手列表和评分等操作。以下是具体实现步骤:
添加歌手
添加歌手需要用户输入歌手信息,包括姓名、编号、性别、流派等,输入完成后将歌手信息添加到系统中。
以下是一个示例代码:
void add_singer(Singer s[], int size){
printf("请输入歌手姓名:");
scanf("%s", s[size].name);
printf("请输入歌手编号:");
scanf("%d", &s[size].id);
printf("请输入歌手性别:");
scanf("%s", s[size].gender);
printf("请输入歌手流派:");
scanf("%s", s[size].type);
size++; // 添加成功后,更新歌手数量
printf("添加成功!\n");
}
删除歌手
删除歌手需要用户输入要删除歌手的编号,在系统中查找该歌手并删除其信息。
以下是一个示例代码:
void delete_singer(Singer s[], int size, int id){
int flag = 0;
for(int i=0;i<size;i++){
if(s[i].id == id){
for(int j=i;j<size;j++){
s[j] = s[j+1]; // 删除歌手信息
}
flag = 1;
break;
}
}
if(flag == 1){
size--; // 删除成功后,更新歌手数量
printf("删除成功!\n");
}
else{
printf("未找到该歌手!\n");
}
}
修改歌手信息
修改歌手信息需要用户输入要修改歌手的编号,然后可以选择要修改的信息,如姓名、性别、流派等。
以下是一个示例代码:
void modify_singer(Singer s[], int size, int id){
int i;
for(i=0;i<size;i++){
if(s[i].id == id){
printf("请选择要修改的信息:\n");
printf("1.姓名\t2.编号\t3.性别\t4.流派\n");
int num;
scanf("%d", &num);
switch(num){
case 1:
printf("请输入新姓名:");
scanf("%s", s[i].name);
printf("修改成功!\n");
break;
case 2:
printf("请输入新编号:");
scanf("%d", &s[i].id);
printf("修改成功!\n");
break;
case 3:
printf("请输入新性别:");
scanf("%s", s[i].gender);
printf("修改成功!\n");
break;
case 4:
printf("请输入新流派:");
scanf("%s", s[i].type);
printf("修改成功!\n");
break;
default:
printf("无效操作!\n");
}
break;
}
}
if(i == size){
printf("未找到该歌手!\n");
}
}
查询歌手列表
系统可以显示所有歌手的列表,以供用户查看。
以下是一个示例代码:
void show_singer_list(Singer s[], int size){
printf("姓名\t编号\t性别\t流派\n");
for(int i=0;i<size;i++){
printf("%s\t%d\t%s\t%s\n", s[i].name, s[i].id, s[i].gender, s[i].type);
}
}
歌手评分
用户可以为某个歌手进行评分,评分完成后,会计算出该歌手的总分并保存到系统中。
以下是一个示例代码:
void rate_singer(Singer s[], int size, int id){
for(int i=0;i<size;i++){
if(s[i].id == id){
printf("请输入评分:");
scanf("%f", &s[i].score[s[i].sumscore]); // 将用户输入的评分保存到数组中
s[i].sumscore += s[i].score[s[i].sumscore]; // 计算总分
printf("评分成功!\n");
break;
}
}
}
步骤三:实现排名功能
在完成基本功能后,可以根据歌手的总分来实现排名功能。以下是具体实现步骤:
计算总分
在每次评分完成后,更新歌手的总分。
以下是一个示例代码:
void calculate_total_score(Singer s[], int size){
for(int i=0;i<size;i++){
s[i].sumscore = 0.0;
for(int j=0;j<10;j++){
s[i].sumscore += s[i].score[j];
}
}
}
排名
根据歌手的总分来进行排名,可以使用冒泡排序来实现。
以下是一个示例代码:
void sort_singer(Singer s[], int size){
for(int i=0;i<size-1;i++){
for(int j=0;j<size-i-1;j++){
if(s[i].sumscore > s[j].sumscore){
Singer temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
示例说明
以下是具体使用示例:
示例一:添加歌手
Singer singers[10];
int size = 0;
add_singer(singers, size);
示例二:评分并显示排名
Singer singers[10];
int size = 0;
// 添加歌手
add_singer(singers, size);
add_singer(singers, size);
// 评分
rate_singer(singers, size, 1);
rate_singer(singers, size, 2);
// 排名
calculate_total_score(singers, size);
sort_singer(singers, size);
// 显示排名
show_singer_list(singers, size);
结论
通过以上步骤,我们可以实现一个基本的歌手比赛系统,并且可以根据总分来进行排名,具有一定实用价值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现歌手比赛系统 - Python技术站