#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct playdate
{
float playerscore[10];
float ave;
float sum;
char num[20];
char name[20];
}
play[2];
void getDate()
{
int i;
printf("请输入两名选手数据:编号 姓名\n");
for(i=0;i<2;i++)
{
scanf("%s",&play[i].num);
getchar( );
scanf("%s",&play[i].name);
getchar( );
}
FILE *p1 = fopen("xinxi.txt", "a+");
if(p14 == NULL)
{
printf("open error!\n");
}
if(p1 == NULL)
{
printf("open error!\n");
}
for(i=0;i<5;i++)
{
fputs(play[i].num,p1);//存疑
fputs("\t",p1);
fputs(play[i].name,p1);//存疑
fputs("\n",p1);
}
fclose(p1);
}
void scoreDate()
{ int i,j;
FILE *p1 = fopen("xinxi.txt","a");
for(i=0;i<2;i++)
{
printf("请输入评委打分;");
for(j=0;j<10;j++)
{
fscanf(p1,"%s",play[i].playerscore[j]);
fputs("\t",p1);
fputc(play[i].playerscore[j],p1);
}
}
fclose(p1);//制表?
}
void scorank()
{ int i,j;
float max,min;
FILE *p1 = fopen("xinxi.txt","a");
for(i=0;i<2;i++)
{
play[i].sum=0;
play[i].ave=0;
for(j=0;j<10;j++)
{
play[i].sum+=play[i].playerscore[j];
fputs("\t",p1);
fputc(play[i].sum,p1);
}
}
max=play[i].playerscore[0];
min=play[i].playerscore[0];
for(j=1;j<10;j++)
{
if (play[i].playerscore[j]>max)
max = play[i].playerscore[j];
if (play[i].playerscore[j]<min)
min = play[i].playerscore[j];
}
play[i].ave=(play[i].sum-max-min)/8;
fputs("\t",p1);
fputc(play[i].ave,p1);
}//按平均分排序还未做。
void finDate()
{ char k;
int j;
FILE *p1 = fopen("xinxi.txt","r");
printf("请输入要查询的学生编号:\n");
getchar();
scanf("%s",&k);
printf("%s\t%s\t",play[k-1].num,play[k-1].name);
for(int j = 0; j < 10; j++)
{
printf("%.2f\t", play[k-1].playerscore[j]);
}
printf("%.2f\t%.2f", play[k-1].sum, play[k-1].ave);
}
void addstuDate()
{
int m;
FILE *p1 = fopen("xinxi.txt", "a");
printf("这是第几个追加选手:\n");
getchar( );
scanf("%d",&m);
printf("请输入要追加的选手数据:(编号 姓名 )\n");
scanf("%s",&play[m+2].num);
getchar( );
scanf("%s",&play[m+2].name);
getchar( );
fputs(play[m+2].num,p1);
fputs("\t",p1);
fputs(play[m+2].name,p1);
fputs("\n",p1);
fclose(p1);
}
void writeFile()
{
int m,j;
FILE *p1 = fopen("xinxi.txt", "a");
printf("这是第几个追加选手:\n");
getchar( );
scanf("%d",&m);
printf("请输入评委打分:\n");
for(j=0;j<10;j++)
{
fscanf(p1,"%s",play[m+2].playerscore[j]);
fputs("\t",p1);
fputc(play[m+2].playerscore[j],p1);
}
fclose(p1);
}
void closeMenu()
{
exit(0);
}
void Display()//菜单界面
{
int choice=0;
printf("\t=======歌手比赛系统=======\t\n\n");
printf("\t1、输入选手数据\t\n\n");
printf("\t2、评委打分\t\n\n");
printf("\t3、成绩排序\t\n\n");
printf("\t4、数据查询\t\n\n");
printf("\t5、追加学生数据\t\n\n");
printf("\t6、写入数据文件\t\n\n");
printf("\t7、退出系统\t\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
getDate();
break;
case 2:
scoreDate();
break;
case 3:
scorank();
break;
case 4:
finDate();
break;
case 5:
addstuDate();
break;
case 6:
writeFile();
break;
case 7:
closeMenu();
break;
}
}
int main()
{
Display();
return 0;
}
p14那里是传上来误输!这个不用在意,主要是我发现我这个程序连名字和编号都录入不了,是文件方法用错了吗?
请你把程序的第一部分 -- 输入实现了, 你可以单步执行看看错在哪里。