运动会计分系统—面向对象

School.class

#include<string>
using namespace std;
class School
{
private:
	int id;
	string name;
	int totalCore;
	int manCore;
	int womanCore;
public:
	School(int i,string n,int totalcore,int mancore,int womancore){
		{id=i;name=n;totalCore=totalcore;manCore=mancore;womanCore=womancore;}
	}
	School(int i,string n){
		{id=i;name=n;totalCore=0;manCore=0;womanCore=0;}
	}
	~School(){};
	int getId(){
	return id;
	}
	string getName(){
	return name;
	}
	int getTotalCore(){
	return totalCore;
	}
	int getManCore(){
	return manCore;
	}
	int getWomanCore(){
	return womanCore;
	}

	void totalCoreAdd(int core){
		totalCore = totalCore + core;
	}
	void manCoreAdd(int core){
		manCore = manCore + core;
		totalCoreAdd(core);
	}
	void womanCoreAdd(int core){
		womanCore = womanCore + core;
		totalCoreAdd(core);
	}
};


SportsMan.class

#include<string>

using namespace std;
class SportsMan
{
private:
	int id;
	string name;
	int schoolId;
public:	
	SportsMan(int i,string n,int j){
		{id=i;name=n;schoolId=j;}
	}
	~SportsMan(){};

	int getSchoolId(){
	return schoolId;
	}
	string getName(){
	return name;
	}
	int getId(){
	return id;
	}
};


SportsItem.class

#include <string>

using namespace std;

class SportsItem
{
private:
	int id;
	string name;
	int ScoringRule;
	int sportman [5];
	string sportmanName [5];

public:
	SportsItem(int i,string n,int j,int a,int b,int c,string aa,string bb,string cc){
		id=i;name=n;ScoringRule=j;
		sportman[0]=a;sportman[1]=b;sportman[2]=c;
		sportmanName[0]=aa;sportmanName[1]=aa;sportmanName[2]=cc;

	}
	SportsItem(int i,string n,int j){
		{id=i;name=n;ScoringRule=j;}
	}
	~SportsItem(){};
	void setSportman(){
		for(int i=0;i<5;i++)
		sportman[i]=0;
	}
	string getName(){
	return name;
	}
	int getId(){
	return id;
	}
	int getScoringRule(){
	return ScoringRule;
	}
	int* getSportman(){
	return sportman;
	}
	string* getSportmanName(){
	return sportmanName;
	}
	void setSportman(int a[],int n){
		for(int i=0;i<n;i++){
			sportman[i]=a[i];
		}
	}
	void setSportmanName(string a[],int n){
		for(int i=0;i<n;i++){
			sportmanName[i]=a[i];
		}
	}
};


SportsSystem.class

// SportsSystem.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <fstream>
#include "School.cpp"
#include "SportsMan.cpp"
#include "SportsItem.cpp"

using namespace std;

void sortById(School *arr[], int n) {
School* tmp;
for (int i=0; i<n-1; ++i) {
        for (int j=i+1; j<n; ++j) {
                if (arr[i]->getId() > arr[j]->getId()) {
                        tmp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = tmp;
                }
        }
	}
for(int i=0;i<n;i++){
		cout<<"编号:"<<arr[i]->getId()<<"\t名称:"<<arr[i]->getName()<<"\t总分"<<arr[i]->getTotalCore()<<"\t男子团体:"<<arr[i]->getManCore()<<"\t女子团体:"<<arr[i]->getWomanCore()<<"\n";
	}
}
void sortByName(School *arr[], int n) {
School* tmp;
for (int i=0; i<n-1; ++i) {
        for (int j=i+1; j<n; ++j) {
                if (arr[i]->getName() > arr[j]->getName()) {
                        tmp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = tmp;
                }
        }
	}
for(int i=0;i<n;i++){
		cout<<"编号:"<<arr[i]->getId()<<"\t名称:"<<arr[i]->getName()<<"\t总分"<<arr[i]->getTotalCore()<<"\n";
	}
}
void sortByTotalCore(School *arr[], int n) {
School* tmp;
for (int i=0; i<n-1; ++i) {
        for (int j=i+1; j<n; ++j) {
                if (arr[i]->getTotalCore() < arr[j]->getTotalCore()) {
                        tmp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = tmp;
                }
        }
	}
for(int i=0;i<n;i++){
		cout<<"编号:"<<arr[i]->getId()<<"\t名称:"<<arr[i]->getName()<<"\t总分"<<arr[i]->getTotalCore()<<"\n";
	}
}
void sortByManCore(School *arr[], int n) {
School* tmp;
for (int i=0; i<n-1; ++i) {
        for (int j=i+1; j<n; ++j) {
                if (arr[i]->getManCore() < arr[j]->getManCore()) {
                        tmp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = tmp;
                }
        }
	}
for(int i=0;i<n;i++){
		cout<<"编号:"<<arr[i]->getId()<<"\t名称:"<<arr[i]->getName()<<"\t男子总分:"<<arr[i]->getManCore()<<"\n";
	}
}
void sortByWomanCore(School *arr[], int n) {
School* tmp;
for (int i=0; i<n-1; ++i) {
        for (int j=i+1; j<n; ++j) {
                if (arr[i]->getWomanCore() < arr[j]->getWomanCore()) {
                        tmp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = tmp;
                }
        }
	}
for(int i=0;i<n;i++){
		cout<<"编号:"<<arr[i]->getId()<<"\t名称:"<<arr[i]->getName()<<"\t女子总分:"<<arr[i]->getWomanCore()<<"\n";
	}
}
string getSchool(int id,School *p[]){
	return p[id]->getName();
}
void querySport(int index,SportsItem *p[],int si,School *ps[],int s){
	int size = p[index]->getScoringRule();
	cout<<"项目:"<<p[index]->getName()<<"\n";
	if(size==3){
		for(int i=0;i<3;i++){
			cout<<"第"<<i+1<<"名:\t"<<getSchool(p[index]->getSportman()[i],ps)<<":"<<p[index]->getSportmanName()[i]<<"\n";}
	}else{
		for(int i=0;i<5;i++){
			cout<<"第"<<i+1<<"名:\t"<<getSchool(p[index]->getSportman()[i],ps)<<":"<<p[index]->getSportmanName()[i]<<"\n";}
	}
}
void querySport(int Sid,int Xid,SportsItem *p[],int si,School *ps[],int s){
	int size = p[Xid]->getScoringRule();
	cout<<"项目:"<<p[Xid]->getName()<<"\n";
	for(int i=0;i<size;i++){
		if(p[Xid]->getSportman()[i]==Sid){
			cout<<"第"<<i+1<<"名:\t"<<getSchool(p[Xid]->getSportman()[i],ps)<<":"<<p[Xid]->getSportmanName()[i]<<"\n";
		}
	}
}
void outSchool(int n,School *p[]){
	ofstream outfile;
	outfile.open("School.txt",ios::trunc);
	if(!outfile){
		cout<<"文件打开错误!\n";
		abort();
	}
	for(int i=0;i<n;i++){
		outfile<<p[i]->getId()<<" "<<p[i]->getName()<<" "<<p[i]->getTotalCore()<<" "
			<<p[i]->getManCore()<<" "<<p[i]->getWomanCore();
		if(i!=(n-1)){outfile<<"\n";}
	}
	outfile.close();
}
int inputSchool(School *p[]){
	 ifstream inobj("School.txt");
	 char t[50];
	 int i=0;
	 while (!inobj.eof())
	 {  
	  inobj.getline(t,49);
	  stringstream a;
	  a.str(t);
	  int id,totalCore,manCore,womanCore;
	  string name;
	  a>>id>>name>>totalCore>>manCore>>womanCore;
	  p[i]=new School(id,name,totalCore,manCore,womanCore);
	  
	  cout<<p[i]->getId()<<"\t"<<p[i]->getName()<<"\t"<<p[i]->getTotalCore()<<"\t"
		  <<p[i]->getManCore()<<"\t"<<p[i]->getWomanCore()<<"\n";
	  
	  i++;
	 }
	 return i-1;
}
void outSportsMan(int n,SportsMan *p[]){
	ofstream outfile;
	outfile.open("SportsMan.txt",ios::trunc);
	if(!outfile){
		cout<<"文件打开错误!\n";
		abort();
	}
	for(int i=0;i<n;i++){
		outfile<<p[i]->getId()<<" "<<p[i]->getName()<<" "<<p[i]->getSchoolId();
	if(i!=(n-1)){outfile<<"\n";}
	}
	outfile.close();
}
int inputSportsMan(SportsMan *p[]){
	ifstream inobj("SportsMan.txt");
	 char t[50];
	 int i=0;
	 while (!inobj.eof())
	 {  
	  inobj.getline(t,49);
	  stringstream a;
	  a.str(t);
	  int id,schoolid;
	  string name;
	  a>>id>>name>>schoolid;
	  cout<<id<<"\t"<<name<<"\t"<<schoolid<<"\n";
	  p[i]=new SportsMan(id,name,schoolid);
	  i++;
	 }
	 cout<<endl;
	 return i-1;
}
void outSportsItem(int n,SportsItem *p[]){
	ofstream outfile;
	outfile.open("SportsItem.txt",ios::trunc);
	if(!outfile){
		cout<<"文件打开错误!\n";
		abort();
	}
	for(int i=0;i<n;i++){
		outfile<<p[i]->getId()<<" "<<p[i]->getName()<<" "<<p[i]->getScoringRule()<<" "<<p[i]->getSportman()[0]<<" "<<p[i]->getSportman()[1]<<" "<<p[i]->getSportman()[2]<<
			" "<<p[i]->getSportmanName()[0]<<" "<<p[i]->getSportmanName()[1]<<" "<<p[i]->getSportmanName()[2];
	if(i!=(n-1)){outfile<<"\n";}
	}

	outfile.close();
}
int inputSportsItem(SportsItem *p[]){
	ifstream inobj("SportsItem.txt");
	 char t[50];
	 int i=0;
	 while (!inobj.eof())
	 {  
	  inobj.getline(t,49);
	  stringstream a;
	  a.str(t);
	  int id,rule,one,two,three;
	  string name,name1,name2,name3;
	  a>>id>>name>>rule>>one>>two>>three>>name1>>name2>>name3;
	  cout<<id<<"\t"<<name<<"\t"<<rule<<"\t"<<one<<"\t"<<two<<"\t"<<three<<"\t"<<name1<<"\t"<<name2<<"\t"<<name3<<"\n";
	  p[i]=new SportsItem(id,name,rule,one,two,three,name1,name2,name3);
	  i++;
	 }
	 return i-1;
}
int _tmain(int argc, _TCHAR* argv[])
{
	School *p[50];
	SportsMan *pm[50];
	SportsItem *pi[50];
	int M=0,W=0,SchoolNum=0,count=0;
	cout<<"*************************************************\n";
	cout<<"******************运动会成绩系统*****************\n";
	cout<<"*************************************************\n";
	cout<<"a.文件加载数据\t\tb.手工输入数据\n";
		char choice='b';
		while(choice!='p'){
			cin>>choice;
			switch(choice){
			case 'b':
				cout<<"第一步:初始化学校信息及运动员信息\n";
				cout<<"请输入学校个数:\n";
				cin>>SchoolNum;
				for(int i=0;i<SchoolNum;i++){
					cout<<"请输入学校"<<i+1<<"名称\n";
					string SchoolName;
					cin>>SchoolName;
					p[i]=new School(i,SchoolName);
					cout<<"请输入该学校参赛运动员个数:\n";
					int SportsmanNum;
					cin>>SportsmanNum;
					for(int j=0;j<SportsmanNum;j++){
						cout<<"请输入第"<<j+1<<"名运动员名字:\n";
						string ManName;
						cin>>ManName;
						pm[count]=new SportsMan(count,ManName,i);
						count++;
					}
				}
				cout<<"*************************************************\n";
				cout<<"第二步:初始化运动会项目信息\n";
				cout<<"请输入运动会男子项目个数:\n";
				cin>>M;
				for(int i=0;i<M;i++){
					cout<<"请输入男子项目"<<i+1<<"名称\n";
					string SportName;
					cin>>SportName;
					pi[i]=new SportsItem(i+1,SportName,3);
					pi[i]->setSportman();
				}
				cout<<"请输入运动会女子项目个数:\n";
				cin>>W;
				for(int i=0;i<W;i++){
					cout<<"请输入女子项目"<<i+1<<"名称\n";
					string SportName;
					cin>>SportName;
					pi[i+M]=new SportsItem(M+i+1,SportName,3);
					pi[i+M]->setSportman();
				}
				cout<<"*************************************************\n";
				cout<<"第三步:运动项目成绩录入:\n";
				for(int i=0;i<W+M;i++){
					int a[5];
					string b[5];
					if(i<W){cout<<"请输入男子<"<<pi[i]->getName()<<">\n";
					int size = pi[i]->getScoringRule();
					for(int j=0;j<size;j++){
						cout<<"第"<<j+1<<"名:\n";
						string name;
						cin>>name;
						for(int k =0;k<count;k++){
							if(pm[k]->getName()==name){
								a[j]=pm[k]->getSchoolId();
								b[j]=name;
								for(int n=0;n<SchoolNum;n++){
									if(p[n]->getId()==pm[k]->getSchoolId()){
										if(j==0){p[n]->manCoreAdd(5);}
										if(j==1){p[n]->manCoreAdd(3);}
										if(j==2){p[n]->manCoreAdd(2);}
										break;
									}
								}
							}
						}
					}
					}else{
						cout<<"请输入女子<"<<pi[i]->getName()<<">\n";
						int size = pi[i]->getScoringRule();
						for(int j=0;j<size;j++){
						cout<<"第"<<j+1<<"名:\n";
						string name;
						cin>>name;
						for(int k =0;k<count;k++){
							if(pm[k]->getName()==name){
								a[j]=pm[k]->getSchoolId();
								b[j]=name;
								for(int n=0;n<SchoolNum;n++){
									if(p[n]->getId()==pm[k]->getSchoolId()){
										if(j==0){p[n]->womanCoreAdd(5);}
										if(j==1){p[n]->womanCoreAdd(3);}
										if(j==2){p[n]->womanCoreAdd(2);}
										break;
									}
								}
								break;
							}
						}
						}
					}
					pi[i]->setSportman(a,5);
					pi[i]->setSportmanName(b,5);
				}
				outSchool(SchoolNum,p);
				outSportsMan(count,pm);
				outSportsItem(W+M,pi);
				choice = 'p';
				break;
			case 'a':
				SchoolNum=inputSchool(p);
				count=inputSportsMan(pm);
				inputSportsItem(pi);
				choice = 'p';
				break;
			case 'p':
				break;
			default:
				cout<<"输入错误.\n";
				break;
			}
		}
		cout<<"*************************************************\n";
		cout<<"运动会项目成绩录入完成.\n";		
		cout<<"*************************************************\n";
		cout<<"学校信息查询:\n";
		cout<<"选择查询方式:\n";
		cout<<"a.按校编号\t\tb.按校名称\t\tc.按校总分\n";
		cout<<"d.按男总分\t\te.按女总分\t\tf.继续测试\n";
		char choice2='a';
		while(choice2!='f'){
			cin>>choice2;
			switch(choice2){
				case 'a':
					cout<<"按学校编号输出:\n";
					sortById(p, SchoolNum);
					cout<<"*************************************************\n";
					break;
				case 'b':
					cout<<"按学校名称输出:\n";
					sortByName(p, SchoolNum);
					cout<<"*************************************************\n";
					break;
				case 'c':
					cout<<"按学校总分输出:\n";
					sortByTotalCore(p, SchoolNum);
					cout<<"*************************************************\n";
					break;
				case 'd':
					cout<<"按学校男子团体总分输出:\n";
					sortByManCore(p, SchoolNum);
					cout<<"*************************************************\n";
					break;
				case 'e':
					cout<<"按学校女子团体总分输出:\n";
					sortByWomanCore(p, SchoolNum);
					cout<<"*************************************************\n";
					break;
				case 'f':
					break;
				default:
					cout<<"输入错误.\n";
					break;
			}
		}
		cout<<"*************************************************\n";
		cout<<"运动项目查询\n";
		cout<<"选择查询方式\n";
		cout<<"a.按编号查询某项目的获奖情况\n";
		cout<<"b.按编号查询某校某项获奖情况\n";
		cout<<"c.退出完成测试.\n";
		char choice3='a';
		while(choice3!='c'){
			cin>>choice3;
			switch(choice3){
				case 'a':
					cout<<"请输入要查询项目的编号:\n";
					int index;
					cin>>index;
					querySport(index-1,pi,W+M,p,SchoolNum);
					cout<<"*************************************************\n";
					break;
				case 'b':
					cout<<"查询某校某项获奖情况\n";
					int Sid,Xid;
					cout<<"请输入学校编号:\n";
					cin>>Sid;
					cout<<"请输入项目编号:\n";
					cin>>Xid;
					querySport(Sid-1,Xid-1,pi,W+M,p,SchoolNum);
					cout<<"*************************************************\n";
					break;
				case 'c':
					break;
				default:
					cout<<"输入错误.\n";
					break;
			}
		}
	return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值