歌手比赛系统C语言代码(张建)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
void Menu();//菜单
void Sort();//排序
void GetInfo();//输入基本信息
void Input();//录入信息
void Mark();//评委打分
void Average(struct Student *p1);//求平均
void Show();//歌手成绩查询
void Query();//歌手得分详细得分查询
void FilePrint();//写入文件
int j=1;
struct Student *head;
struct Student *p1,*p2;
struct Student
{
char number[10];
char name[10];
float grade[10];
float average;
struct Student *next;
};
void main()
{
Menu();
}
void Menu()
{
while(1)
{
char choose;
system("cls");
printf(" ********歌手比赛系统********\n");
printf(" 1.输入基本信息 \n");
printf(" 2.评委打分 \n");
printf(" 3.歌手成绩查询 \n");
printf(" 4.歌手详细得分查询 \n");
printf(" 5.歌手名次排序 \n");
printf(" 6.写入文件 \n");
printf(" 7.退出系统 \n");
printf(" ****************************\n");
choose=getch();
switch(choose)
{
case'1':GetInfo();break;
case'2':Mark();break;
case'3':Show();break;
case'4':Query();break;
case'5':Sort();break;
case'6':FilePrint();break;
case'7':exit(0);break;
}
}
}
void Sort()//排序
{
p1=head;
if(head!=NULL)
{
if(p1->average!=-1610612736&&p1->average!=-431602080.000000)
{
struct Student *temp,*a;
system("cls");
printf("排序中...........\n");
for(p1=head;p1
for(temp=p1->next;temp<=p2;)
{
if(p1->average
{
a=p1;
p1=temp;
temp=a;
}
temp=temp->next;
}
p1=p1->next;
}
printf("排序完成\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
}
else
{
printf("请录入信息并打分后进行排序!!!\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
}
void GetInfo()//输入基本信息
{
void Input();//录入信息
char contin='y';
while(contin!='N'||contin!='n')
{
if(j==1)
{
head=p1=p2=malloc(sizeof(struct Student));
}
else
{
p1=malloc(sizeof(struct Student));
p2->next=p1;
p2=p1;
}
Input();
printf("按Y键继续,按N键返回主菜单\n");
contin=getch();
if(contin=='Y'||contin=='y')
{
j++;
}
else if(contin=='N'||contin=='n')
{
j++;
Menu();break;
}
}
}
void Input()//录入信息
{
system("cls");
printf(" *******歌手信息录入*******\n");
printf("请输入歌手序号:");
scanf("%s",&p1->number);
printf("请输入歌手姓名:");
scanf("%s
",&p1->name);
}
void Mark()//评委打分
{
void Average(struct Student *p1);//求平均分
char number[10];
int i;
struct Student *p1;
if(head!=NULL)
{
system("cls");
printf(" *******歌手评分*******\n");
printf("请输入要打分的歌手序号:");
scanf("%s",&number);
p1=head;
while(p1<=p2)
{
if(strcmp((p1->number),number)==0)
{
for(i=0;i<10;i++)
{
printf("请第%d个评委打分:",i+1);
scanf("%f",&p1->grade[i]);
}
Average(p1);
goto yougeshou;
}
p1=p1->next;
}
printf("暂无此歌手\n");
yougeshou:
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
else
{
printf("请录入信息后进行打分!!!\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
}
void Average(struct Student *p1)//求平均分
{
int i;
float sum=0;
float max,min;;
for(i=0;i<10;i++)
{
if(i==0)max=p1->grade[i];min=p1->grade[i];
if(p1->grade[i]>max)max=p1->grade[i];
if(p1->grade[i]
sum+=p1->grade[i];
}
sum-=(max+min);
p1->average=sum/10;
}
void Show()//歌手成绩查询
{
struct Student *p1;
p1=head;
if(p1!=NULL)
{
system("cls");
printf(" *******歌手得分*******\n");
printf("歌手号码\t歌手名字\t歌手成绩\n");
while(p1<=p2)
{
float temp;
if(p1->average==-431602080.000000)
temp=0;
else
temp=p1->average;
printf("%s\t\t%s\t\t%f\n",p1->number,p1->name,temp);
p1=p1->next;
}
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
else
{
printf("请录入信息并打分后查询!!!\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
}
void Query()//歌手得分详细得分查询
{
char number[10];
int i;
struct Student *p1;
if(head!=NULL)
{
system("cls");
printf(" *******歌手得分*******\n");
printf("请输入要查分的歌手序号:");
scanf("%s",&number);
p1=head;
while(p1<=p2)
{
if(strcmp((p1->number),number)==0)
{
if(p1->grade[0]!=0)
{
for(i=0;i<10;i++)
{
float temp;
if(p1->grade[i]==-431602080.000000)
temp=0;
else
temp=p1->grade[i];
printf("第%d个评委打分为:",i+1);
printf("%f\n",temp);
system("pause");
}
break;
}
else
{
printf("请评分后进行查询!!!\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
break;
}
}
p1=p1->next;
}
if(p1==NULL)
{
printf("请录入该歌手信息后进行查询!!!\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
}
else
{
printf("请录入信息后进行查询!!!\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
}
vo
id FilePrint()//写入文件
{
FILE *file;
struct Student *p1;
p1=head;
if(p1!=NULL)
{
float temp;
system("cls");
file=fopen("d:\\导出.txt","w");
fprintf(file,"歌手号码\t歌手名字\t歌手成绩\n");
while(p1<=p2)
{
if(p1->average==-1610612736||p1->average==-431602080.000000)
temp=0;
else
temp=p1->average;
fprintf(file,"%s\t\t%s\t\t%f\n",p1->number,p1->name,temp);
p1=p1->next;
}
fprintf(file,"写入文件成功");
fclose(file);
printf("写入文件成功\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
else
{
printf("请录入信息并打分后写入文件!!!\n");
printf("按任意键返回主菜单\n");
system("pause");
Menu();
}
}