标题:关于学校运动会管理系统
只看楼主
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
得分:0 
回复 9楼 wanglianyi1
团体报表生成还是有错误~·
2016-07-07 09:45
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
你的汉字在我这面全是乱码,我直接换英文了,不过是中式英语,凑活看吧,哈哈,你的格式自己调整吧,还有有的地方getchar好像没大用,加的有点多,小细节自己改改吧,能编译了,你再调试下数据输出看看
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 50

struct student
{
    char name[20];
    char sex[20];
    char college[20];
    char item[20];
    int  ranking;
}stu[N];
void menu();
void printf_face1()                                                               //定义一个面向用户的输出函数
{ 
    printf("\n\t name\t sex\t college\t item\t ranking\n");
}
void printf_face()                                                               //定义一个面向用户的输出函数
{ 
    printf("\n\t number\t name\t sex\t college\t item\t ranking\n");
}
void printf_one(int i)                                                            //定义一个输出函数
{ 
    printf("\t%s\t%s\t%s\t%s\t%d",stu[i].name,stu[i].sex,stu[i].college,stu[i].item,stu[i].ranking);
}

void input(int i)                                                                //输入数据
{
    printf_face1();
    printf("\t");
      scanf("\t%s\t%s\t%s\t\t%s\t\t%d",stu[i].name,stu[i].sex,stu[i].college,stu[i].item,stu[i].ranking);
}
void printf_back()                                                             //返回上一界面
{ 
     printf("\n\n\t___.done. ___\n\n");
     getchar();
//     getchar();
//     getchar();
      menu();
}
void save(int n)                                                                //存入数据
{ FILE *fp; int i;
  if((fp=fopen("file","wb"))==NULL)
  { printf("\n open error \n");
    exit(0);
  }
  for(i=0;i<n;i++)
  if(stu[i].name[0]!='\0')
  if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)                             //结构体依次写入文件,若写入失败则返回非0值
  printf("input error\n");
  fclose(fp);
}
int load()                                                                        //打开本地已存入的数据
{ FILE *fp;
  int i;
  if((fp=fopen("file","rb"))==NULL)
{ printf("\n open error \n");
  exit(0);
}
for(i=0;!feof(fp);i++)
   fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void enter()                                                                       //输入原始数据
{
    int i,n;
    printf("input the number of the People(0-%d)?:",N-1);
    scanf("%d",&n);
    getchar();            //这里加个getchar();
    printf("input date:\n");
    for(i=0;i<n;i++)
      {
          printf("\n intput the record of the %d.\n",i+1);
          input(i);
      }
    if(i!=0) save(n);
    printf_back();
}

void find()                                                                     //查找函数//
{
    char fs[20];
    int i,n;
    n=load();
    printf("input the sportsman's college or name of your research:");
    scanf("%s",&fs);
    for(i=0;i<n;i++)
    {
        if(strcmp(stu[i].college,fs)==0)
            {
            printf("found the sportsman of your research:\n");
            printf_face1();
            printf_one(i);
            }
        else if(strcmp(stu[i].name,fs)==0)
            {
            printf("found the sportsman of your research:\n");
            printf_face1();
            printf_one(i);
            }
        else
            {
            printf("no date!\n");
            }
    }
    getchar();
    getchar();
    menu();
}
void scorer()                                                                         //团体总分//
{   
    int i,n,sum=0,x;
    char fs[20];
    n=load();
    printf("input the college of your research:");
    scanf("%s",&fs);
      for(i=0;i<n;i++)
    {
        if(strcmp(stu[i].college,fs)==0)
        {
             printf_face1();
             printf_one(i);
             if(stu[i].ranking==1) x=7;
             else if(stu[i].ranking==2) x=5;
             else if(stu[i].ranking==3) x=3;
             else if(stu[i].ranking==4) x=2;
             else if(stu[i].ranking==5) x=1;
             else x=0;
             sum=sum+x;
         }
   
    }
    printf("\n总分%d:\n",sum);
    getchar();
    getchar();
    getchar();
    menu();
}
void menu()                                                                         //主界面
{
    int n, w1;
    do{
        system("cls");
        puts("\t\t************************menu************************\n\n ");
        puts("\t\t*******************1.new************************\n\n ");
        puts("\t\t*******************2.search************************\n\n ");
        puts("\t\t*******************3.table of sum************************\n\n ");
        puts("\t\t*******************4.exit************************\n\n ");
   //   puts("\n\n\t\t************ ***运动会管理系统*********************** ");
        printf("select(1-4): [ ]\b\b");
        scanf("%d",&n);
        if(n<1||n>4)
        {
            w1=1;
            getchar();
        }
        else w1=0;
        getchar();
    }while(w1==1);
      switch(n)
      {
          case 1: enter(); break;
          case 2: find(); break;
          case 3: scorer(); break;
          case 6: exit(0);
      }
}
int main()                                                                       //主函数
{
    menu();
    return 0;
}


[此贴子已经被作者于2016-7-7 10:05编辑过]

2016-07-07 10:02
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
得分:0 
回复 12楼 wanglianyi1
新建输入的时候还是不行,只能输入一个数据,在出现就出现了报错~~~
2016-07-07 10:09
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 11楼 hllSaturn
那可能还是这段
程序代码:
void save(int n)                                                                //存入数据
{ FILE *fp; int i;
  if((fp=fopen("file","wb"))==NULL)
  { printf("\n open error \n");
    exit(0);
  }
  for(i=0;i<n;i++)
  if(stu[i].name[0]!='\0')
  if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)                             //结构体依次写入文件,若写入失败则返回非0值
  printf("input error\n");
  fclose(fp);
}

有问题你看看呢
2016-07-07 10:11
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 13楼 hllSaturn
你把输入每一个参数单独用一个gets或者scanf语句来进行输入,再试试
2016-07-07 10:12
Hut_king
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-5-29
得分:0 
兄弟,最基本的scanf("%s",&a[i])忽略了,不过还是感谢你们的代码。
2018-05-29 22:43
Hut_king
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-5-29
得分:0 
void input(int i)                                                                //输入数据
{
    printf_face1();
    printf("\t");
    scanf("%s",&stu[i].name);
    scanf("%s",&stu[i].sex);
    scanf("%s",&stu[i].college);
    scanf("%s",&stu[i].item);
    scanf("%d",&stu[i].ranking);
}
2018-05-29 22:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466717-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.096230 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved