- 论坛徽章:
- 0
|
c语言程序有点问题,请大家帮我看看
#include<stdio.h>;
#include<string.h>;
#include<stdlib.h>;
//结构体
struct student
{
char name[20];
char sex;
float score;
};
void disp();
void student();
void menscore();
void womenscore();
void taxisscore();
void allscore();
void main()
{
//struct student stud;
int chioce=0;
disp();
printf("请选择您要执行的操作:\n" ;
scanf("%d",&chioce);
switch(chioce)
{
case 1:
student();
break;
case 2:
menscore();
break;
case 3:
womenscore();
break;
case 4:
allscore();
break;
case 5:
taxisscore();
break;
case 6:
printf("退出系统!!!\n" ;
break;
}
}
void disp()
{
printf("\t|========================学生成绩管理系统===============|" ;
printf("\n\t| |" ;
printf("\n\t|\t\t1、请输入学生成绩\t\t\t|" ;
printf("\n\t|\t\t2、显示所有男生学生成绩\t\t\t|" ;
printf("\n\t|\t\t3、显示所有女生学生成绩\t\t\t|" ;
printf("\n\t|\t\t4、显示所有的成绩\t\t\t|" ;
printf("\n\t|\t\t5、显示所有排序后的成绩\t\t\t|" ;
printf("\n\t|\t\t6、退出系统\t\t\t\t|\n" ;
printf("\t|+=====================================================+|\n\n");
}
//添加学生成绩
void student()
{
FILE *fp;
char flag='Y';
struct student stud;
system("cls");
if((fp=fopen("student","a+"))==NULL)
{
printf("打开文件失败!!!");
getchar();
return;
}
while(flag=='Y')//控制添加的人数
{
while(1)
{
printf("请输入学生姓名:\n");//
scanf("%s",&stud.name);
getchar();
if(strlen(stud.name)==0)
{
printf("您的输入有误,请重新输入!!!!\n");
}
else
{
break;
}
}
// 输入学生性别
while(1)
{
printf("请输入学生性别<男: M/女: F>;\n");//输入性别判断
scanf(" %c",&stud.sex);
if(stud.sex!='M'&&stud.sex!='F')
{
printf("您的输入有误,请重新输入!!!!!\n");
}
else
{
break;
}
}
//输入学生成绩
while(1)
{
printf("请<0--100>;:\n");
scanf("%f",&stud.score);
if(stud.score>;0&&stud.score<100)
{
break;
}
else
{
printf("您的输入有误,请重新输入!!!!!:\n");
getchar();
}
}
//是否继续添加
fwrite(&stud,sizeof(struct student),1,fp);//把学生的数据写入文件
printf("写入成功,您要继续吗?<Y/N>;");
scanf(" %c",&flag);
printf("\n");
}
fclose(fp);
}
void menscore()
{
FILE *fp;
int count=0;
struct student stud;
fp=fopen("student","r");
if(fp==NULL)
{
printf("打开文件失败!!!");
getchar();
return;
}
printf("所有男生成绩列表:\n");
printf("姓名\t性别\t\t成绩\n");
printf("______________________________\n");
while(fread(&stud,sizeof(struct student),1,fp)==1)//条件:是否正常读出文件
{
if(stud.sex=='M')
{
printf("%s\t%c\t\t%5.1f\n",stud.name,stud.sex,stud.score);
count++;
}
}
printf("______________________________\n");
printf("%20d记录被找到\n",count);
printf("点任意键返回.....\n");
fclose(fp);
}
//所有女生成绩列表
void womenscore()
{
FILE *fp;
int count=0;
struct student stud;
fp=fopen("student","r");//以只读方式打开文件
if(fp==NULL)
{
printf("打开文件失败!!!");
getchar();
return;
}
printf("所有女生成绩列表:\n");
printf("姓名\t性别\t\t成绩\n");
printf("______________________________\n");
while(1)
{
fread(&stud,sizeof(struct student),1,fp);//读文件
if(stud.sex=='F')
{
printf("%s\t%c\t\t%5.1f\n",stud.name,stud.sex,stud.score);
count++;
}
}
printf("______________________________\n");
printf("%20d记录被找到\n",count);
printf("点任意键返回.....\n");
fclose(fp);
}
//所有成绩列表
void allscore()
{
FILE *fp;
int count=0;
struct student stud;
fp = fopen("student","rb");//以只读方式打开文件
if (fp==NULL)
{
printf("打开文件失败!!!");
getchar();
return;
}
printf("所有成绩列表:\n");
printf("姓名\t性别\t\t成绩\n");
printf("______________________________\n");
while(1)
{
fread(&stud,sizeof(struct student),1,fp);//读文件
if(feof(fp))
{
break;
}
printf("%s\t%c\t\t%5.1f\n",stud.name,stud.sex,stud.score);
count++;
}
printf("______________________________\n");
printf("%20d记录被找到\n",count);
printf("点任意键返回.....\n");
fclose(fp);
}
//所有排序后的成绩
void taxisscore()
{
FILE *fp;
int i=0,j;
int count=0;
struct student stud[50],temp;
fp=fopen("student","rb");//以只读方式打开文件
if(fp==NULL)
{
printf("打开文件失败!!!");
return;
}
//读文件
while (1)
{
fread(&stud,sizeof(struct student),1,fp);//读文件
if(feof(fp))//检查文件是否已结束
{
break;
}
count++;//累加读出文件的纪录
}
fclose(fp);
//排序
for(i=1;i<count;i++)
{
for(j=i-1;j<count;j++)
{
if(stud[i-1].score>;stud[j+1].score)
{
temp=stud[i-1];
stud[i-1]=stud[j+1];
stud[j+1]=temp;
}
}
}
printf("______________________________\n");
for(j=0;j<i;j++)
{
printf("%d\t%s\t%c\t%8.2f\n",j+1,stud[j].name,stud[j].sex,stud[j].score);
}
printf("______________________________\n");
printf("%20d记录被找到\n",count);
printf("点任意键返回.....\n");
} |
|