| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1943 人关注过本帖
标题:急求~运动会计分系统
只看楼主 加入收藏
遥忆灵月
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-7-6
收藏
 问题点数:0 回复次数:6 
急求~运动会计分系统
任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)
  功能要求:
1). 可以输入各个项目的前三名或前五名的成绩;
  2).能统计各学校总分,
  3).可以按学校编号、学校总分、男女团体总分排序输出;
  4). 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
  规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
  输出形式:有中文提示,各学校分数为整形
  界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
  存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
搜索更多相关主题的帖子: 运动会 系统 计分 
2008-07-06 14:35
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:0 
恕我直言,这是一个大工程。。

要想做出来并调试好。

对我这个新手来说起码要半天的时间,而我没有那么多的时间。。。


看看有没有高手肯花一两个小时给你做了。。
2008-07-06 14:45
dielongyi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-19
收藏
得分:0 
1、数据类型定义
    (1)系的定义:
    typedef struct Department    //系的结构
    {
            char name[20];        //系的名称
            int number;            //系的编号
            int boy;            //男子团体总分
            int girl;            //女子团体总分
            Department *next;    }Department;
    (2)运动项目定义:
    typedef struct Sport    //运动项目结构
    {
            char name[20];        //运动项目名称
            int isboy;            //0为女项目,1为男项目
            int is3;            //0为取前五名,1为取前五名
            int number;            //项目编号
            int first;            //第一名系的编号
            int second;            //第二名系的编号
            int third;            //第三名系的编号
            int fourth;            //第四名系的编号

            int fifth;            //第五名系的编号
               Sport *next;
}Sport;、
2011-05-28 11:58
dielongyi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-19
收藏
得分:0 
系调用图
                    department_add
                    department_Order
 <1>Department        department_search  
                  department_addmark
                  department_show
                  department_isexist
                  department_output
                  department_read
                  department_write
                  department_getlong


                  sport_isexist
                  sport_add
                  sport_getlong   
                  sport_write
    <2>Sport           sport_read
                  sport_output
                    sport_search
2011-05-28 11:59
dielongyi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-19
收藏
得分:0 
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
#include<ctype.h>
#include<stdio.h>
#include<conio.h>
typedef struct Department    //系的结构
{
    char name[20];        //系的名称
    int number;            //系的编号
    int boy;            //男子团体总分
    int girl;            //女子团体总分
    Department *next;    }Department;
typedef struct Sport    //运动项目结构
{
    char name[20];        //运动项目名称
    int isboy;            //0为女项目,1为男项目
    int is3;            //0为取前五名,1为取前五名
    int number;            //项目编号
    int first;            //第一名系的编号
    int second;            //第二名系的编号
    int third;            //第三名系的编号
    int fourth;            //第四名系的编号
    int fifth;            //第五名系的编号
    Sport *next;
}Sport;
int getint(int a)        //字符转换成数字
{
    return (int)(a-'0');
}
Department * head1;
//-------启动画面函数----------
void Cover()   
{  system("color 1b");
  char line[]={"程序读取中 请耐心等待..."};
  char bar[]={"...."};
 int i,j,k=0,x=0,y=0;   
  for(i=0;i<=strlen(line)/2;)
  {
    system("cls");
    for(j=0;j<9;j++)   //改变行坐标
        cout<<endl;
    for(j=0;j<(75-strlen(line))/2;j++) //改变列坐标
        cout<<" ";
    for(j=1;j<=i;j++)         //进度显示器
        cout<<"●";
    for(x=strlen(line)/2;x>i;x--)
        cout<<"○";
    if(k==4)
        i++;
    cout<<endl;   
    for(j=0;j<(75-strlen(line))/2;j++)   //行坐标定位
        cout<<" ";
    cout<<line;         //输出线条
    cout<<endl;
    for(j=0;j<(65-strlen(bar))/2;j++)
        cout<<" ";
    cout<<(i+7)*5<<"% Loading";
    cout.write(bar,k);
    cout<<endl;
    for(j=0;j<10;j++)
        cout<<endl;
    for(j=0;j<24;j++)
        cout<<" ";
    cout<<"程序设计员:文专计0811张庆龙 孙晋芳 朱明"<<endl;
    for(j=0;j<24;j++)
        cout<<" ";
    for(j=0;j<=18;j++)
        cout<<"─";
    cout<<endl;
    for(j=0;j<10000000;j++);//延时效果
    k++;
    if(k>4)
        k=0;
  }
}

void department_add()        //添加系
{
    Department * p;
    int mark=0;
    p=new Department;
    cout<<"请输入系的名称:";
    cin>>p->name;
    char c;
    while (mark!=1)
    {
        cout<<"请输入系的编号:";
        cin>>c;
        if (!isdigit(c))//是否为数字
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            mark=1;
            p->number=c;
        }
    }
    p->boy=0;
    p->girl=0;
    p->next=head1->next;
    head1->next=p;
    cout<<"成功添加了一个系"<<endl;
}
int department_getlong(Department *first)//得到链表长度
{
    int i=0;
    while (first->next!=NULL)
    {
        i++;
        first=first->next;
    }
    return i;
}
void department_write()//将系数据写入文本
{
    Department * p;
    p=head1;
    p=p->next;
    ofstream outfile("Department.txt",ios::out);
    outfile<<department_getlong(p)+1<<" ";
    while (p!=NULL)
    {
        outfile<<p->name<<" "<<p->number<<" "<<p->boy<<" "<<p->girl<<" ";
        p=p->next;
    }
    outfile.close();
    cout<<"Write Success!"<<endl;
}
void department_read()//从文本读入系数据
{
    int i;
    ifstream infile ("Department.txt",ios::in);
    infile>>i;
    while(i>0)
    {
        Department * p;
        p=new Department;
        infile>>p->name>>p->number>>p->boy>>p->girl;
        p->next=head1->next;
        head1->next=p;
        i--;
    }
    cout<<"Department Data Read Success!"<<endl;
}
void department_output(Department *p)//输出系
{
    cout<<" 系名    编号 男团总分 女团总分 总分\t\n";
    while(p)
    {
        cout<<p->name<<"     \t"<<getint(p->number)<<"\t"<<p->boy<<"\t"<<p->girl<<"\t "<<(p->girl+p->boy)<<endl;
        p=p->next;
    }
}
int department_isexist(int a)//检验系是否存在
{
    int b=0;
    Department *p;
    p=head1;
    p=p->next;
    while(p)
    {
        if(p->number==a)
        {
            return 1;
        }
        p=p->next;
    }
    return 0;
}
void department_show(int a)//输出所有系
{
    Department *p;
    p=head1;
    p=p->next;
    while(p)
    {
        if(p->number==a)
        {
            cout<<p->name<<" ";
            return;
        }
        p=p->next;
    }
    cout<<" 无   ";
}
void department_search(int a)//按编号搜索系
{
    Department *p;
    p=head1;
    p=p->next;
    while(p)
    {
        if(p->number==a)
        {
            cout<<"系名:"<<p->name<<" "<<"男子团体总分:"<<p->boy<<" "<<"女子团体总分:"<<p->girl<<" "<<"总分:"<<(p->boy+p->girl)<<" ";
            return;
        }
        p=p->next;
    }
    cout<<"无此编号";
}
void department_addmark(int a,int b,int c)//a为分数,b为系编号,c=1表示男,c=0表示女
{
    Department *p;
    p=head1;
    p=p->next;
while(p)
    {
        if(p->number==b)
        {
            if(c=='1')
            {
                p->boy=p->boy+a;
            }
            else
            {
                p->girl=p->girl+a;
            }
        }
        p=p->next;
    }
}
void department_order(Department *temp,int type) //type=0按总分,type=1按男总分,type=2按女总分,
{
    Department *p,*q,*small,*temp1;
    temp1=new Department;
    temp1->next=NULL;
    p=temp;
    while(p)
    {
        small=p;
        q=p->next;
        while(q)
        {
            switch(type)
            {
            case 0:
                if((q->boy+q->girl)<(small->girl+small->boy))
                {
                    small=q;
                }
                break;
            case 1:
                if(q->boy<small->boy)
                {
                    small=q;
                }
                break;
            case 2:
                if(q->girl<small->girl)
                {
                    small=q;
                }
                break;
            default:
                cout<<"error"<<endl;
            }

            if(small!=p)
            {
                temp1->boy=p->boy;
                p->boy=small->boy;
                small->boy=temp1->boy;
                temp1->girl=p->girl;
                p->girl=small->girl;
                small->girl=temp1->girl;
                strcpy(temp1->name,p->name);
                strcpy(p->name,small->name);
                strcpy(small->name,temp1->name);
                temp1->number=p->number;
                p->number=small->number;
                small->number=temp1->number;    //将系的名字互换
            }
            q=q->next;
        }
        p=p->next;
    }
}
Sport * head2;
int sport_isexist(int a)    //检查运动项目(编号)是否已经存在
{
    int b=0;
    Sport *p;
    p=head2;
    p=p->next;
    while(p)
    {
        if(p->number==a)
        {
            return 1;
        }
        p=p->next;
    }
    return 0;
}
void sport_add()        //添加项目
{
    Sport * p;
    int mark=0;
    p=new Sport;
    cout<<"请输入项目名称:";
    cin>>p->name;
    char c;
    while (mark!=1)
    {
        cout<<"请输入项目编号:";
        cin>>c;
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            if(sport_isexist(c))
            {
                cout<<"该编号已存在"<<endl;
            }
            else
            {
                mark=1;
                p->number=c;
            }
        }
    }
    mark=0;
    while (mark!=1)
    {
        cout<<"请输入项目类型(0为女子项目,1为男子项目):";
        cin>>c;
        p->isboy=(int)(c-'0');//字符转换成数字
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else if(p->isboy<0||p->isboy>1)
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            mark=1;
            p->isboy=c;
        }
    }
    mark=0;
    while (mark!=1)
    {
        cout<<"请输入项目名次情况(0为取前3名,1为取前5名):";
        cin>>c;
        p->is3=(int)(c-'0');
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else if(p->is3<0||p->is3>1)
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            mark=1;
            p->is3=c;
        }
    }
    mark=0;
    while (mark!=1)
    {
        cout<<"请输入第一名的系的编号:";
        cin>>c;
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            if(!department_isexist(c))
            {
                cout<<"该系不存在,请先添加";
            }
            else
            {
                mark=1;
                p->first=c;
                if(p->is3=='0')
                    department_addmark(5,c,p->isboy);
                else
                    department_addmark(7,c,p->isboy);
            }
        }   
    }
    mark=0;
    while (mark!=1)
    {
        cout<<"请输入第二名的系的编号:";
        cin>>c;
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            if(!department_isexist(c))
            {
                cout<<"该系不存在,请先添加";
            }
            else
            {
                mark=1;
                p->second=c;
                if(p->is3=='0')
                    department_addmark(3,c,p->isboy);
                else
                    department_addmark(5,c,p->isboy);
            }
        }
    }
    mark=0;
    while (mark!=1)
    {
        cout<<"请输入第三名的系的编号:";
        cin>>c;
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            if(!department_isexist(c))
            {
                cout<<"该系不存在,请先添加";
            }
            else
            {
                mark=1;
                p->third=c;
                if(p->is3=='0')
                    department_addmark(2,c,p->isboy);
                else
                    department_addmark(3,c,p->isboy);
            }
        }
    }
    mark=0;
    if(p->is3=='1')
    {
        while (mark!=1)
        {
        cout<<"请输入第四名的系的编号:";
        cin>>c;
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            if(!department_isexist(c))
            {
                cout<<"该系不存在,请先添加";
            }
            else
            {
                mark=1;
                p->fourth=c;
                department_addmark(2,c,p->isboy);
            }
        }
        }
        mark=0;
        while (mark!=1)
        {
        cout<<"请输入第五名的系的编号:";
        cin>>c;
        if (!isdigit(c))
        {
            cout<<"数据非法"<<endl;
        }
        else
        {
            if(!department_isexist(c))
            {
                cout<<"该系不存在,请先添加"<<endl;
            }
            else
            {
                mark=1;
                p->fifth=c;
                department_addmark(1,c,p->isboy);
            }
        }
        }
    }
    else
    {
        p->fourth='0';
        p->fifth='0';
    }
    p->next=head2->next;
    head2->next=p;
    cout<<"成功添加了一个运动项目"<<endl;
}
int sport_getlong(Sport *first)                //得到项目链表长度
{
    int i=0;
    while (first->next!=NULL)
    {
        i++;
        first=first->next;
    }
    return i;
}
void sport_write()                            //将项目数据写入文本文档
{
    Sport * p;
    p=head2;
    p=p->next;
    ofstream outfile("Sport.txt",ios::out);
    outfile<<sport_getlong(p)+1<<" ";
    while (p!=NULL)
    {
        outfile<<p->name<<" "<<p->number<<" "<<p->isboy<<" "<<p->is3<<" "<<p->first<<"  "<<p->second<<" "<<p->third<<" "<<p->fourth<<" "<<p->fifth<<" ";
        p=p->next;
    }
    outfile.close();
    cout<<"Write Success!"<<endl;
}
void sport_read()                            //从文本读取项目数据
{
    int i;
    ifstream infile ("Sport.txt",ios::in);
    infile>>i;
    while(i>0)
    {
        Sport * p;
        p=new Sport;
        infile>>p->name>>p->number>>p->isboy>>p->is3>>p->first>>p->second>>p->third>>p->fourth>>p->fifth;
        p->next=head2->next;
        head2->next=p;
        i--;
    }
    cout<<"Sport Data Read Success!"<<endl;
}
void sport_output(Sport *p)                        //输出项目的情况
{
    cout<<"name  "<<"\t"<<"Num"<<"  "<<"B/G"<<"  "<<"  3/5"<<"    "<<"  first"<<"   "<<"second"<<"  "<<"third"<<"   "<<"fourth"<<"   "<<"fifth"<<"  "<<endl;
    while(p)
    {
     cout<<    p->name   <<"\t"   <<" "    <<getint(p->number)<<"   "   <<    getint(p->isboy)<<"     "   <<getint(p->is3)<<"      "<<"  ";
        department_show(p->first);
        department_show(p->second);
        department_show(p->third);
        department_show(p->fourth);
        department_show(p->fifth);
        //printf("\n");
        p=p->next;
        cout<<"\n";

    }
    cout<<endl;
}
void sport_search(int a)                        //搜索项目
{
    Sport *p;
    p=head2;
    p=p->next;
    while(p)
    {
        if(p->number==a)
        {
            cout<<"项目名:"<<p->name<<endl<<"项目类型:";
            if(p->isboy==1)
            {
                cout<<"男子项目";
            }
            else
            {
                cout<<"女子项目";
            }
            cout<<endl<<"第一名:";
            department_show(p->first);
            cout<<endl<<"第二名:";
            department_show(p->second);
            cout<<endl<<"第三名:";
            department_show(p->third);
            cout<<endl<<"第四名:";
            department_show(p->fourth);
            cout<<endl<<"第五名:";
            department_show(p->fifth);
            return;
        }
        p=p->next;
    }
    cout<<"无此编号";
}
void main()                            //运动会程序主函数
{
Cover();
    system("color 2b");    //改变背景,前景色
    head1=new Department;
    head1->next=NULL;
    head2=new Sport;
    head2->next=NULL;
    //school_add();
    sport_read();
    department_read();
    //sport_add();
    Department * p1;
    Sport * p2;
    p1=head1;
    p1=p1->next;
    p2=head2;
    p2=p2->next;
    char choose;
    char temp;
    //string ch="  ";
    int a=1;
    while(a!=0)
    {
        cout<<endl;
        cout<<"               .oO欢迎使用运动会分数统计系统Oo.       "<<endl;
        cout<<"         **********************************************************"<<endl;
        cout<<"         *                                                        *"<<endl;
        cout<<"         *   1.输入系别;                 2.输入运动项目          *"<<endl;
        cout<<"         *                                                        *"<<endl;
        cout<<"         *   3.按系别编号输出总分;       4.按总分排序;            *"<<endl;
        cout<<"         *                                                        *"<<endl;
        cout<<"         *   5.按男团体总分排序;         6.按女团体总分排序;      *"<<endl;
        cout<<"         *                                                        *"<<endl;
        cout<<"         *   7.按项目编号查询;           8.按系别编号查询;        *"<<endl;
        cout<<"         *                                                        *"<<endl;
        cout<<"         *                       0.退出                           *"<<endl;
        cout<<"         *                                                        *"<<endl;
        cout<<"         *           提示:需先输入系别后才能输入运动项目         *"<<endl;
        cout<<"         *                                                        *"<<endl;
        cout<<"         **********************************************************"<<endl;
        cout<<"                              请选择:";
        //cin>>ch;
        //choose=int(ch[0])+int(ch[1])-'0';    //处理异常状态
        cin>>choose;
        if (!isdigit(choose))
        {
            system("cls");
            cout<<"操作非法1"<<endl;
        }
        else
        {
            switch(getint(choose))
            {
               
                case 1:
                    system("cls");
                    department_add();
                    break;
                case 2:
                    system("cls");
                    cout<<"当前项目:"<<endl;
                    sport_output(p2);
                    cout<<"当前系:"<<endl;
                    department_output(p1);
                    sport_add();
                    break;
                case 3:
                    system("cls");
                    department_output(p1);
                    break;
                case 4:
                    system("cls");
                    department_order(p1,0);
                    department_output(p1);
                    break;
                case 5:
                    system("cls");                    
                    department_order(p1,1);
                    department_output(p1);
                    break;
                case 6:
                    system("cls");
                    department_order(p1,2);
                   department_output(p1);
                    break;
                case 7:
                    system("cls");
                    cout<<"请输入项目编号:";
                    cin>>temp;
                    sport_search(temp);
                    break;
                case 8:
                    system("cls");
                    cout<<"请输入系的编号:";
                    cin>>temp;
                    department_search(temp);
                    break;
                case 0:
                    system("cls");
                    a=0;
                    break;
                default:
                    system("cls");
                    cout<<"操作非法\n";
            }
        }
    }
    department_write();
    sport_write();
    system("exit");
}
2011-05-28 11:59
dielongyi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-19
收藏
得分:0 
才弄得,希望对其他人有所帮助
2011-05-28 12:01
wyh4936
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-4-6
收藏
得分:0 
大神!看了都觉得膜拜,想抄不敢用。


2016-04-06 15:18
快速回复:急求~运动会计分系统
数据加载中...
 
   



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

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