如何将生成的数据保存到TXT文本中!求教
就是添加一个文件操作函数,让数据保存在TXT文本中
程序代码:#include<stdio.h>
#include<process.h>
#define N 5 //学校个数
#define bm 4 //男团体个数
#define gm 3 //女团体个数
void xuanze();
void xunhuan();
struct match //比赛项目
{
int matchnum;
int rank[5]; //有些项目取前五名,此处改为5,反之为三则改3 -----》 //最高分计算
}
mat[bm+gm]; //男女项目
struct school //学校
{
int schoolnum; //学校编号
struct match mat[bm+gm]; //男女项目
int total; //最高分数
int boytotal; //男最高分
int girltotal; //女最高分
}sch[N];
void huanyingni() /*开始界面,欢迎使用*/
{
printf("\t*****************************************************************\n\n");
printf("\t 欢迎使用运动会统计系统\n\n");
printf("\t*****************************************************************\n\n");
}
void input() //输入成绩
{
int i,j,k;
for(i=0;i<N;i++) //初始化分数
{
sch[i].total=0;
sch[i].boytotal=0;
sch[i].girltotal=0;
for(k=0;k<bm+gm;k++)
{
sch[i].mat[k].rank[0]=0;
sch[i].mat[k].rank[1]=0;
sch[i].mat[k].rank[2]=0;
sch[i].mat[k].matchnum=k+1;
}
}
printf(" *********输入成绩**********\n");
printf("输入说明:\n");
printf(" 1.学校编号为1--%d; 项目编号为1--%d (1-%d为男子项目,%d-%d为女子项目).\n",N,bm+gm,bm,bm+1,bm+gm);
printf(" 2. 成绩只能是'0'或'1'\n('0'表示没获得该项目的该名次,'1'表示获得了该项目的该名次.以Tab键前进。)\n",N);
for(i=0;i<N;i++)
{
printf("请输入学校编号: ");
scanf("%d",&sch[i].schoolnum);
if(sch[i].schoolnum<0||sch[i].schoolnum>N) //判断学校编号是否输入正确
{
printf("输入错误(只能是1-%d)请重新输入:",N);
}
printf("项目编号 ");
for(k=0;k<bm+gm;k++)
printf("%d ",sch[i].mat[k].matchnum);
printf("\n");
for(j=0;j<3;j++)
{
printf("第(%d)名:",j+1);
for(k=0;k<bm+gm;k++)
scanf(" %d",&sch[i].mat[k].rank[j]);
for(k=0;k<bm+gm;k++)
if(sch[i].mat[k].rank[j]!=0&&sch[i].mat[k].rank[j]!=1) //成绩只能是'0'或'1'
{
printf("输入错误,请重新输入,成绩只能是'0'或'1'\n");
}
}
}
}
void totaljisuan() //最高分计算
{
int i,k,b;
for(i=0;i<N;i++)
for(k=0,b=0;k<bm+gm;k++)
{
//b=sch[i].mat[k].rank[0]*5+sch[i].mat[k].rank[1]*3+sch[i].mat[k].rank[2]*2;
b=sch[i].mat[k].rank[0]*7+sch[i].mat[k].rank[1]*5+sch[i].mat[k].rank[2]*3+sch[i].mat[k].rank[3]*2+sch[i].mat[k].rank[4]*1;
sch[i].total=sch[i].total+b;
if(k<bm)
sch[i].boytotal=sch[i].boytotal+b;
if(k>=bm)
sch[i].girltotal=sch[i].girltotal+b;
}
}
void mulu()
{
printf("\n\n **系统目录**\n"); //系统目录
printf("\t\t ************************************\n");
printf("\t\t ####################################\n");
printf("\t\t*# 1.统计各学校总分 *\t \n");
printf("\t\t*# 2.按学校编号排序输出 *\t \n");
printf("\t\t*# 3.按学校总分排序输出 *\t \n");
printf("\t\t*# 4.按男团体总分排序输出 *\t \n");
printf("\t\t*# 5.按女团体总分排序输出 *\t \n");
printf("\t\t*# 6.按学校编号查询学校某个项目情况 *\t \n");
printf("\t\t*# 7.按项目编号查询取得名次的学校 *\t \n");
printf("\t\t*# 0.退出 *\t \n");
printf("\t\t ************************************\n");
printf("\t\t ####################################\n");
}
void funct0() //退出系统
{
printf("\n\t\t******* 谢谢使用! *******\n");
printf("\n\t\t******* 谢谢使用! *******\n");
exit(0);
}
void funct1() //统计各学校总分
{
int i,q;
printf(" **********统计各学校总分**********\n");
printf("**学校编号**\t\t\t\t**总分**\n");
for(i=0;i<N;i++)
printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].total);
printf("\n");printf("\n");
printf(" 0:退出;1:返回目录。\n");
printf("请选择: ");
scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else
{
printf("输入错误(只能是0或1),请重新输入:");
}
}
void funct2() //按学校编号排序
{
struct school sch1;
int i,j,q;
for(j=0;j<N-1;j++)
for(i=0;i<N-j-1;i++)
if(sch[i].schoolnum>sch[i+1].schoolnum)
{
sch1=sch[i];
sch[i]=sch[i+1];
sch[i+1]=sch1;
}
printf(" **********按学校编号排序**********\n");
printf(" **学校编号**\t\t\t\t**总分**\n");
for(i=0;i<N;i++)
printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].total);
printf("\n");printf("\n");
printf("0:退出;1:返回目录。\n");
printf("请选择: ");
scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else
{
printf("输入错误(只能是0或1),请重新输入:");
}
}
void funct3() //按学校总分排序
{
struct school sch1;
int i,j,q;
for(j=0;j<N-1;j++)
for(i=0;i<N-j-1;i++)
if(sch[i].total<sch[i+1].total)
{
sch1=sch[i];
sch[i]=sch[i+1];
sch[i+1]=sch1;
}
printf(" **********按学校总分排序**********\n");
printf(" **学校编号**\t\t\t\t**总分**\n");
for(i=0;i<N;i++)
printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].total);
printf("\n");printf("\n");
printf("0:退出;1:返回目录。\n");
printf("请选择: ");
scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else
{
printf("输入错误(只能是0或1),请重新输入:");
}
}
void funct4() //按男团体总分排序
{
struct school sch1;
int i,j,q;
for(j=0;j<N-1;j++)
for(i=0;i<N-j-1;i++)
if(sch[i].boytotal<sch[i+1].boytotal)
{
sch1=sch[i];
sch[i]=sch[i+1];
sch[i+1]=sch1;
}
printf(" **********按男团体总分排序**********\n");
printf(" **学校编号**\t\t**总分**\n");
for(i=0;i<N;i++)
printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].boytotal);
printf("\n");printf("\n");
printf("0:退出;1:返回目录。\n");
printf("请选择: ");
scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else
{
printf("输入错误(只能是0或1),请重新输入:");
}
}
void funct5() //按女团体总分排序
{
struct school sch1;
int i,j,q;
for(j=0;j<N-1;j++)
for(i=0;i<N-j-1;i++)
if(sch[i].girltotal<sch[i+1].girltotal)
{
sch1=sch[i];
sch[i]=sch[i+1];
sch[i+1]=sch1;
}
printf(" **********按女团体总分排序**********\n");
printf(" **学校编号**\t\t**总分**\n");
for(i=0;i<N;i++)
printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].girltotal);
printf("\n");printf("\n");
printf("0:退出;1:返回目录。\n");
printf("请选择: ");
scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else
{
printf("输入错误(只能是0或1),请重新输入:");
}
}
void funct6() //按学校编号查询学校某个项目情况
{
int i,n,m,q;
printf(" **********按学校编号查询学校某个项目情况**********\n");
printf("*******请输入所要查询的学校编号: ");
scanf("%d",&n);
if(n!=1&&n!=2)
{
printf("!!!!输入错误,学校编号只能是'0'或'1',请重新输入!!!!n");
}
printf("请输入所要查询的项目编号: ");
scanf("%d",&m);
for(i=0;i<N;i++)
if(n==sch[i].schoolnum)
{
printf("学校编号: %d 项目编号: %d\n",n,m);
if(sch[i].mat[m].rank[0]==1)
printf("第一名(获得) ");
if(sch[i].mat[m].rank[1]==1)
printf("第二名(获得) ");
if(sch[i].mat[m].rank[2]==1)
printf("第三名(获得) ");
else
printf("本校该项目未进入前三名");
}
printf("\n");printf("\n");
printf("0:退出;1:返回目录;2:返回上一级。\n");
printf("请选择: ");
scanf("%d",&q);
if(q==1) xunhuan();
if(q==0) funct0();
if(q==2);
else
{
printf("输入错误(请输入0或1或2),请重新输入:");
}
}
void funct7() //按项目编号查询取得名次的学校
{
int i,t,q;
printf(" **********按项目编号查询取得名次的学校**********\n");
printf("*****请输入所要查询的项目编号: ") ;
scanf("%d",&t);
printf("项目编号:%d\n",t) ;
for(i=0;i<N;i++)
{
if(sch[i].mat[t-1].rank[0]==1)
printf("获得第一名的学校编号是:%d \n",sch[i].schoolnum);
if(sch[i].mat[t-1].rank[1]==1)
printf("获得第二名的学校编号是:%d \n",sch[i].schoolnum);
if(sch[i].mat[t-1].rank[2]==1)
printf("获得第三名的学校编号是:%d \n",sch[i].schoolnum);
}
printf("\n");printf("\n");
printf("0:退出;1:返回目录;2:返回上一级。\n");
printf("请选择: ");
scanf("%d",&q);
if(q==1) xunhuan();
if(q==0) funct0();
if(q==2);
else
{
printf("输入错误(只能是0或1或2),请重新输入:");
}
}
void xunhuan() //返回目录
{
int t;
mulu();
printf("\t\t请选择(输入0--7)序号:\t");
scanf("%d",&t);
while(t!=0&&t!=1&&t!=2&&t!=3&&t!=4&&t!=5&&t!=6&&t!=7)
{
printf("输入有误,请重新选择:");
scanf("%d",&t);
}
switch(t)
{
case 0:funct0();break;
case 1:funct1();break;
case 2:funct2();break;
case 3:funct3();break;
case 4:funct4();break;
case 5:funct5();break;
case 6:funct6();break;
case 7:funct7();break;
}
}
//
void main()
{
huanyingni();
input();
totaljisuan();
xunhuan();
}
[此贴子已经被作者于2016-1-7 21:15编辑过]

