标题:关于学校运动会管理系统
只看楼主
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
结帖率:62.5%
 问题点数:0 回复次数:16 
关于学校运动会管理系统
程序代码:
通宵一夜,还是没有调好,求助~
三、实验内容
   设计并实现一个学校运动会管理系统。

 问题描述:
(1) 初始化输入:N-参赛院系总数,M-男子竞                  
(2) 各项目名次取法如下:
取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;        
(3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息(姓名,性别,学院,项目,名次),如:小王 男子 计算机学院 跳远 第一名。
(4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define load sizeof(student)
#define N 50
void read();
void save();
struct student
{
char name[20];
char sex[20];
char college[20];
char item[20];
char ranking[20];
}stu[N];
void printf_face1()                                                               //定义一个面向用户的输出函数
{ printf("\n\t姓名\t性别\t学院\t项目\t名次\n"); }
void printf_face()                                                               //定义一个面向用户的输出函数
{ printf("\n\t序号\t姓名\t性别\t学院\t项目\t名次\n"); }

void input(int i)                                                                //输入数据
{
    printf_face1(); printf("\t");
  scanf("\t%s\t%s\t%s\t%s\t%s",stu[i].name,stu[i].sex,stu[i].college,stu[i].item,stu[i].ranking);

 }
void printf_back()                                                             //返回上一界面
{

 int w;  void browse();  void menu();

 printf("\n\n\t___.已完成. ___\n\n");

 printf("你需要:\n\n\t1).浏览所有\t2).返回:  [ ]\b\b");

 scanf("%d",&w);

 if(w==1) browse();

 else menu();
}
void save(int n)                                                                //存入数据
{ FILE *fp; int i;
  if((fp=fopen("file","wb"))==NULL)
  { printf("\n无法打开文件\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("文件写入错误r\n");
  fclose(fp);
}
int load()                                                                        //打开本地已存入的数据
{ FILE *fp;
  int i;
  if((fp=fopen("file","rb"))==NULL)
{ printf("\n无法打开文件\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("请输入人数(0-%d)?:",N-1);
     scanf("%d",&n);
      printf("请输入数据:\n");
      for(i=0;i<n;i++)
      {
          printf("\n输入第 %d个记录.\n",i+1);
          input(i);
      }
      if(i!=0) save(n);
      printf_back();
}

void find()                                                                     //查找函数//
{
    char fs[20];
    int n;
    n=load();
    printf("输入你要查找运动员的学院或姓名:");
    scanf("%s",&fs);
    for(int i=0;i<n;i++)
    {
        if(strcmp(stu[i].college,fs)==0)
        {
            printf("你要找的运动员已找到:\n");
            printf_face1();
            printf_one(i);
            break;
        }
        else if(strcmp(stu[i].name,fs)==0)
        {
            printf("你要找的运动员已找到:\n");
            printf_face1();
            printf_one(i);
            break;
        }
        else
        {
            printf("你要找的运动员未找到:\n");
            printf("该运动员缺赛或不存在!");
            break;
        }
    }
    menu();
}
void scorer()                                                                         //团体总分//
{   
    int n,sum=0;
    n=load();
    printf("输入你要查找院系:");
    scanf("%s",&fs);
    for(int 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);
    menu();
}
void menu()                                                                         //主界面
{
     int n, w1;
    do{
        system("cls");
        puts("\t\t*********************菜        单************************\n\n ");
        puts("\t\t*******************1.新        建************************\n\n ");
        puts("\t\t*******************2.查        找************************\n\n ");
        puts("\t\t*******************3.团体总分报表************************\n\n ");
        puts("\t\t*******************4.退        出************************\n\n ");
        puts("\n\n\t\t************ ***运动会管理系统*********************** ");
        printf("请选择服务种类(1-4) : [ ]\b\b");
        scanf("%d",&n);
        if(n<1||n>4)
        {w1=1;getchar();}
        else w1=0;
    }while(w1==1);
  switch(n)
  {
  case 1: enter(); break;
  case 2: find(); break;
  case 3: scorer(); break;
  case 6: exit(0);
  }
}
void main()                                                                       //主函数
{
    menu();
}
搜索更多相关主题的帖子: 比赛结果 管理系统 运动会 运动员 学校 
2016-07-07 08:20
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
程序代码:
void find()                                                                     //查找函数//
{
    char fs[20];
    int n;
    n=load();
    printf("输入你要查找运动员的学院或姓名:");
    scanf("%s",&fs);
    for(int i=0;i<n;i++)
    {
        if(strcmp(stu[i].college,fs)==0)
        {
            printf("你要找的运动员已找到:\n");
            printf_face1();
            printf_one(i);
            break;
        }
        else if(strcmp(stu[i].name,fs)==0)
        {
            printf("你要找的运动员已找到:\n");
            printf_face1();
            printf_one(i);
            break;
        }
        else
        {
            printf("你要找的运动员未找到:\n");
            printf("该运动员缺赛或不存在!");
            break;
        }
    }
    menu();
}

这段程序里的printf_one();是什么意思函数吗?没看到函数体,是程序没有贴全吗?是你代码中的printf_face();吧?不过也不太对,printf_face();没有参数的,如果是这个你却传递了个i,这个函数是没写嘛?
第二个你的menu()函数前面没有声明,但是在menu()前面的几个函数却调用了它
是不是好多错误,你把你调试的错误提示发上来看看呢?这个程序是你自己写的吗?

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

2016-07-07 08:46
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
得分:0 
回复 2楼 wanglianyi1
程序代码:
#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];
char ranking[20];
}stu[N];
void printf_face1()                                                               //定义一个面向用户的输出函数
{ printf("\n\t姓名\t性别\t学院\t\t项目\t\t名次\n"); }
void printf_face()                                                               //定义一个面向用户的输出函数
{ printf("\n\t序号\t姓名\t性别\t学院\t\t项目\t\t名次\n"); }
void printf_one(int i)                                                            //定义一个输出函数
{ printf("\t%s\t%s\t%s\t%s\t%s",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%s",stu[i].name,stu[i].sex,stu[i].college,stu[i].item,stu[i].ranking);

 }
void printf_back()                                                             //返回上一界面
{

 void menu();

 printf("\n\n\t___.已完成. ___\n\n");

 getchar();

 getchar();

 getchar();
  menu();
}
void save(int n)                                                                //存入数据
{ FILE *fp; int i;
  if((fp=fopen("file","wb"))==NULL)
  { printf("\n无法打开文件\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("文件写入错误r\n");
  fclose(fp);
}
int load()                                                                        //打开本地已存入的数据
{ FILE *fp;
  int i;
  if((fp=fopen("file","rb"))==NULL)
{ printf("\n无法打开文件\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("请输入人数(0-%d)?:",N-1);
     scanf("%d",&n);
      printf("请输入数据:\n");
      for(i=0;i<n;i++)
      {
          printf("\n输入第 %d个记录.\n",i+1);
          input(i);
      }
      if(i!=0) save(n);
      printf_back();
}

void find()                                                                     //查找函数//
{
    char fs[20];
    int i,n;
    n=load();
    printf("输入你要查找运动员的学院或姓名:");
    scanf("%s",&fs);
    for(i=0;i<n;i++)
    {
        if(strcmp(stu[i].college,fs)==0)
            {
            printf("你要找的运动员已找到:\n");
            printf_face1();
            printf_one(i);
            }
        else if(strcmp(stu[i].name,fs)==0)
            {
            printf("你要找的运动员已找到:\n");
            printf_face1();
            printf_one(i);
            }
        else
            {
            printf("你要找的运动员未找到!\n");
            }
    }
    getchar();
    getchar();
    menu();
}
void scorer()                                                                         //团体总分//
{   
    int i,n,sum=0,x;
    char fs[20];
    n=load();
    printf("输入你要查找院系:");
    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*********************菜        单************************\n\n ");
        puts("\t\t*******************1.新        建************************\n\n ");
        puts("\t\t*******************2.查        找************************\n\n ");
        puts("\t\t*******************3.团体总分报表************************\n\n ");
        puts("\t\t*******************4.退        出************************\n\n ");
        puts("\n\n\t\t************ ***运动会管理系统*********************** ");
        printf("请选择服务种类(1-4) : [ ]\b\b");
        scanf("%d",&n);
        if(n<1||n>4)
        {w1=1;getchar();}
        else w1=0;
    }while(w1==1);
  switch(n)
  {
  case 1: enter(); break;
  case 2: find(); break;
  case 3: scorer(); break;
  case 6: exit(0);
  }
}
void main()                                                                       //主函数
{
    menu();
}


这是我修改过的,能运行,但是查找的时候又有问题
2016-07-07 09:14
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
得分:0 
回复 2楼 wanglianyi1
团体报表生成的时候,总分显示为0~~~
2016-07-07 09:19
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
程序代码:
int load()                                                                        //打开本地已存入的数据
{ 
    FILE *fp=fopen("file","rb");;
      int i;    //i是什么意义呢?没有赋初始值
      if((fp=fopen("file","rb"))==NULL)
    { 
        printf("\n无法打开文件\n");
          return -1;
    }
    for(i=0;!feof(fp);i++)
           fread(&stu[i],sizeof(struct student),1,fp);
        fclose(fp);
    return(i-1);    //这里i-1有问题
}
2016-07-07 09:24
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 4楼 hllSaturn
你的缩进格式最好整理下,看的有点累
2016-07-07 09:26
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 4楼 hllSaturn
int load()                                                                        //打开本地已存入的数据
{ FILE *fp;
  int i;            //i是什么作用?没有初始值,也没有传参进来
  if((fp=fopen("file","rb"))==NULL)
{ printf("\n无法打开文件\n");
  exit(0);
}
for(i=0;!feof(fp);i++)
   fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);    //这里却用i-1,作用是什么呢?
}
2016-07-07 09:28
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
还有个问题:你的结构体中ranking是个数组 但你后面
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;
这个有问题
2016-07-07 09:34
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
程序代码:
struct student
{
char name[20];
char sex[20];
char college[20];
char item[20];
char ranking[20];  // -->改为 int ranking;
}stu[N];


程序代码:
void printf_one(int i)                                                            //定义一个输出函数
{
    // printf("\t%s\t%s\t%s\t%s\t%s",stu[i].name,stu[i].sex,stu[i].college,stu[i].item,stu[i].ranking);
    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%s",stu[i].name,stu[i].sex,stu[i].college,stu[i].item,stu[i].ranking);
      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); 

 }


上面3个地方更改下就没有错误没有警告了,你再调试下看看,对了,还有你的menu函数放到最前面,或者在最前面加个menu函数的声明

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

2016-07-07 09:38
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
得分:0 
以下是引用wanglianyi1在2016-7-7 09:34:39的发言:

还有个问题:你的结构体中ranking是个数组 但你后面
if(stu.ranking==1) x=7;
             else if(stu.ranking==2) x=5;
             else if(stu.ranking==3) x=3;
             else if(stu.ranking==4) x=2;
             else if(stu.ranking==5) x=1;
这个有问题
这个要怎么改?~
2016-07-07 09:42



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




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

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