运动会比赛计分系统,该如何解决

运动会比赛计分系统
原题是这样的:
运动会比赛计分系统
要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数
各项目名次取法有如下几种:
取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;
功能要求:
(1)系统以菜单方式工作
(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩
(4)查看参赛学校信息和比赛项目信息等。

我自己写了一部分,但是最重要的中间那个环节一点头绪都没有,有没有人指点一下应该怎么做?
注:不要源代码,只是想知道怎么做这道题的思想,希望可以详细的说明一下步骤,谢谢大家啦。

下面是我写的一部分简单的部分~
#include <stdio.h>
#include<stdlib.h>
void main()
{  
  void sum();
void msum();
void wsum();
void end1();
void wayA();
void wayB();

char s;

//主菜单
printf("\n");
  printf("\t\t* * * * * * * * * * * * * * * * * * * * * * * * *\n");
  printf("\t\t* *\n");
  printf("\t\t* 欢迎使用比赛计分系统 *\n");
  printf("\t\t* *\n");
  printf("\t\t* * * * * * * * * * * * * * * * * * * * * * * * *\n");


  printf("\n\n");
  printf("\t\t N:参赛学校总数\n\n");
  printf("\t\t M:男子竞赛项目数\n\n");
  printf("\t\t W:女子竞赛项目数\n\n");
printf("\t\t O:退出数目输入\n\n");
   
printf("请输入N,M,O,W:");
scanf("%s",&s);
while(s!='0')
{
switch(s)
  {
  case 'O':end1();break;
  case 'N':sum();break;
  case 'M':msum();break;
  case 'W':wsum();break;
  }
printf("\n请输入O,N,M,W:");
scanf("%s",&s); 
}
}

void sum()//接受用户输入参赛学校总数值
{ int x;
printf("\n请输入参赛学校总数:\n");
scanf("%d",&x);
printf("参加本次运动会的学校为%d\n\n",x);

}

void msum()//接受用户输入男子竞赛项目数
{ int y;
printf("\n请输入男子竞赛项目数:\n");
scanf("%d",&y);
printf("男子竞赛项目数为%d\n\n",y);
}

void wsum()//接受用户输入女子竞赛项目数
{ int z;
printf("\n请输入女子竞赛项目数:\n");
scanf("%d",&z);
printf("女子竞赛项目数为%d\n\n",z);
}

void wayA()
{
//这个地方就是第一种计分方式的具体过程
}

void wayB()
{
//这个地方就是第二种计分方式的具体过程
}



void end1()
{

char i;
printf("\n\n\n请选择以下两种评分标准:\n");
printf("\n");
printf("\n");
printf("请输入A,B:");
scanf("%s",&i);
while(i!='0')
{
switch(i)
  {
  case 'A':wayA();exit(0);
  case 'B':wayB();exit(0);
  }
}
}



上面这段程序也请帮忙检查一下吧,这一段程序是可以运行的。但是....后面的就不会了~

------解决方案--------------------
帮顶一个!
------解决方案--------------------
看样子你是不清楚数据怎样存储和函数间的参数传递 把所以函数都要用的变量设为全局变量 这样其他函数就都可以调用
------解决方案--------------------
会链表不? 
C/C++ code

struct Sport
{
    int SpoNo;          //项目号码        
    char SpoName[10]; //项目名称
    char Sex;          //项目类别
    int FirstNo;      //第一命学校编号
    int SecondNo;     //...
    int ThirdNo;      //...
    int FouthNo;
    int FifthNo;
}

struct School
{
    int SchNo;
    int SchNme;
    .....//学校具体信息

}

int main()
{
    struct Sport *head;
    head=creat();
    ......
    return 0;
}
}

------解决方案--------------------
其他所以函数都是围绕这这两个链表来转的 明白?

------解决方案--------------------