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;
}