C++學(xué)校運動會管理系統(tǒng)的實現(xiàn)
更新時間:2018年10月18日 09:43:06 作者:zzuli-dk
這篇文章主要為大家詳細(xì)介紹了C++如何實現(xiàn)學(xué)校運動會管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C++實現(xiàn)運動會管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
#include <iostream>
#include <cstdio>
#include <string>
#include <windows.h>
#include <set>
#include <map>
using namespace std;
const int MAXN = 100005;
typedef long long LL;
map< pair<string, string>, int> mtable;//男生參賽成績
map< pair<string, string>, int> wtable;//女生參賽成績
multimap<string, string> parti;//學(xué)號對應(yīng)參賽項目
set <string> st;//有哪些學(xué)生學(xué)號
map<string, int> mitem;//參加該項目的女學(xué)生數(shù)
map<string, int> witem;//參加該項目的男學(xué)生數(shù)
map<string, int> item;//項目數(shù)參加人數(shù)
map<string, int> acad;//學(xué)院的總得分
map<string, int> macad;//學(xué)院男生得分
map<string, int> wacad;//學(xué)院女生得分
int cnt;
struct student
{
string number;
string name;
string acad;
string sex;
int participate;
} stu[MAXN];
void menu()
{
cout<<"**************系統(tǒng)菜單功能項*****************\n";
cout<<"1.運動會報名\n";
cout<<"2.參賽信息查詢\n";
cout<<"3.競賽檢錄\n";
cout<<"4.競賽成績錄入\n";
cout<<"5.競賽成績查詢\n";
cout<<"6.競賽成績排序\n";
cout<<"7.退出程序\n";
return ;
}
void apply()//報名
{
system("cls");
string s1,s2,s3,s4,s5;
cout<<"請輸入學(xué)生信息\n";
cout<<"請分別輸入學(xué)生所屬學(xué)院名,學(xué)生姓名,學(xué)生學(xué)號, 學(xué)生性別,學(xué)生參加的項目名\n";
cin>>s1>>s2>>s3>>s4>>s5;
if(st.find(s3)==st.end())
{
stu[cnt].acad=s1;
stu[cnt].name=s2;
stu[cnt].number=s3;
stu[cnt].sex=s4;
stu[cnt++].participate++;
st.insert(s3);
}
else
{
for(int i=0; i<cnt; ++i)
{
if(s3==stu[i].number)
{
if(stu[i].participate+1<=3)
stu[i].participate++;
else
{
printf("此學(xué)生已經(jīng)報滿3項,無法繼續(xù)填報\n");
return ;
}
}
}
}
parti.insert(make_pair(s3,s5));
acad.insert(make_pair(s1,0));
item[s5]++;
if(s4=="男")
{
mitem[s5]=mitem[s5]+1;
macad.insert(make_pair(s1,0));
mtable[pair<string, string>(s3,s5)]=0;
}
else
{
witem[s5]=witem[s5]+1;
wacad.insert(make_pair(s1,0));
wtable[pair<string, string>(s3,s5)]=0;
}
return ;
}
void query()//查詢
{
printf("信息查詢的結(jié)果如下\n");
for(int i=0; i<cnt; ++i)
{
cout<<"學(xué)生學(xué)號"<<stu[i].number<<" "<<"學(xué)生姓名"<<stu[i].name<<" "<<"學(xué)生性別"<<stu[i].sex<<" "<<"學(xué)生所屬院系"<<stu[i].acad<<" "<<"學(xué)生參加項目數(shù)"<<stu[i].participate<<endl;;
cout<<"同學(xué)姓名:"<<" "<<stu[i].name<<" "<<"參加了以下項目\n";
multimap<string,string>::iterator it=parti.begin();
for(; it!=parti.end(); it++)
{
if(it->first==stu[i].number)
{
cout<<it->second<<" ";
}
}
cout<<"\n";
}
return ;
}
void registration()//檢錄
{
system("cls");
cout<<"請輸入即將檢錄的比賽項目名字"<<endl;
string s;
cin>>s;
cout<<"請一下同學(xué)前來檢錄"<<"\n";
int flag=0;
multimap<string, string>::iterator it = parti.begin();
for(; it!=parti.end(); ++it)
{
if(it->second==s)
{
flag=1;
cout<<it->first<<endl;
}
}
if(!flag)
cout<<"沒有人報名該比賽\n"<<endl;
return ;
}
void record()//錄入成績
{
printf("請輸入學(xué)生學(xué)號,和項目名字以及項目的名次\n");
string s1,s2;
int grade, ans=0;
cin>>s1>>s2>>grade;
for(int i=0; i<cnt; ++i)
{
if(stu[i].number==s1)
{
if(stu[i].sex=="男")
{
if(mitem[s2]>6)
{
if(grade==1)
ans=7;
else if(grade==2)
ans=5;
else if(grade==3)
ans=3;
else if(grade==4)
ans=2;
else if(grade==5)
ans=1;
else
ans=0;
}
else
{
if(grade==1)
ans=5;
else if(grade==2)
ans=3;
else if(grade==3)
ans=2;
else
ans=0;
}
macad[stu[i].acad]+=ans;
mtable[pair<string,string>(s1,s2)]=ans;
}
else
{
if(witem[s2]>6)
{
if(grade==1)
ans=7;
else if(grade==2)
ans=5;
else if(grade==3)
ans=3;
else if(grade==4)
ans=2;
else if(grade==5)
ans=1;
else
ans=0;
}
else
{
if(grade==1)
ans=5;
else if(grade==2)
ans=3;
else if(grade==3)
ans=2;
else
ans=0;
}
wacad[stu[i].acad]+=ans;
wtable[pair<string, string>(s1,s2)]=ans;
}
acad[stu[i].acad]+=ans;
}
}
}
void menu2()
{
cout<<"1.按學(xué)院查看\n";
cout<<"2.按參賽項目查看\n";
cout<<"3.按參賽運動員查看\n";
cout<<"4.退出\n";
cout<<"請輸入您的選擇\n";
return ;
}
void query_contest1()
{
map<string, int>::iterator it=acad.begin();
for(; it!=acad.end(); ++it)
{
cout<<"學(xué)院名字:"<<it->first<<endl;
for(int i=0; i<cnt; ++i)
{
if(stu[i].acad==it->first)
{
multimap<string, string>::iterator iter=parti.begin();
for(; iter!=parti.end(); ++iter)
{
if(stu[i].number!=iter->first)
continue;
if(stu[i].sex=="男")
cout<<"姓名: "<<stu[i].name<<"項目: "<<iter->second<<"成績: "<<mtable[pair<string,string>(iter->first,iter->second)]<<endl;
else
cout<<"姓名: "<<stu[i].name<<"項目: "<<iter->second<<"成績: "<<wtable[pair<string,string>(iter->first,iter->second)]<<endl;
}
}
}
}
}
void query_contest2()
{
map<string, int>::iterator it=item.begin();
for(; it!=item.end(); it++)
{
cout<<"項目名稱:"<<it->first<<endl;
multimap<string, string>::iterator iter=parti.begin();
for(; iter!=parti.end(); iter++)
{
if(iter->second==it->first)
{
for(int i=0; i<cnt; ++i)
{
if(iter->first==stu[i].number)
{
if(stu[i].sex=="男")
cout<<"姓名: "<<stu[i].name<<"項目: "<<iter->second<<"成績: "<<mtable[pair<string,string>(iter->first,iter->second)]<<endl;
else
cout<<"姓名: "<<stu[i].name<<"項目: "<<iter->second<<"成績: "<<wtable[pair<string,string>(iter->first,iter->second)]<<endl;
}
}
}
}
}
}
void query_contest3()
{
for(int i=0; i<cnt; ++i)
{
cout<<"姓名: "<<stu[i].name<<"\n";
multimap<string, string>::iterator iter=parti.begin();
for(; iter!=parti.end(); iter++)
{
if(iter->first==stu[i].number)
{
if(stu[i].sex=="男")
cout<<"項目: "<<iter->second<<"成績: "<<mtable[pair<string,string>(iter->first,iter->second)]<<endl;
else
cout<<"項目: "<<iter->second<<"成績: "<<wtable[pair<string,string>(iter->first,iter->second)]<<endl;
}
}
}
}
void query_contest()//比賽成績查詢
{
system("cls");
menu2();
int op;
if(cnt==0)
{
printf("當(dāng)前無人報名比賽,請先報名比賽\n");
return ;
}
scanf("%d", &op);
switch(op)
{
case 1:
query_contest1();
break;
case 2:
query_contest2();
break;
case 3:
query_contest3();
break;
case 4:
return;
break;
default:
printf("輸入有誤,請重新輸入\n");
}
}
void sort_contest()//比賽成績排序
{
int Size=acad.size();
for(int i=0; i<Size; ++i)
{
int Max=-1;
string Maxs="";
map<string, int >::iterator it = acad.begin();
map<string, int >::iterator iter;
for(; it!=acad.end(); ++it)
{
if(Max<it->second)
{
Max=it->second;
Maxs=it->first;
iter=it;
}
}
acad.erase(iter);
cout<<"學(xué)院名稱:"<<Maxs<<" 學(xué)院總分:"<<Max<<endl;
cout<<"男生總得分:"<<macad[Maxs]<<" 女生總得分"<<wacad[Maxs]<<endl;
}
}
int main()
{
int op;
cout<<("**************學(xué)校運動會管理系統(tǒng)*****************\n");
// printf("請分別輸入?yún)①悓W(xué)院個數(shù),男子競賽項目數(shù)和女子競賽項目數(shù)\n");
// scanf("%d %d %d", &c, &n, &m);
// if(c<0||n<0||m<0)
// {
// printf("輸入值有誤,請重新輸入\n");
// scanf("%d %d %d", &c, &n, &m);
// }
cnt=0;
while(1)
{
menu();
scanf("%d", &op);
switch(op)
{
case 1:
apply();
break;
case 2:
query();
break;
case 3:
registration();
break;
case 4:
record();
break;
case 5:
query_contest();
break;
case 6:
sort_contest();
break;
case 7:
return 0;
break;
default:
cout<<"錯誤輸入, 請重新輸入\n";
break;
}
}
return 0;
}
效果圖:


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- C++課程設(shè)計之運動會管理系統(tǒng)
- C++實現(xiàn)學(xué)校運動會管理系統(tǒng)
- linux下C/C++學(xué)生信息管理系統(tǒng)
- C++實現(xiàn)企業(yè)職工工資管理系統(tǒng)
- C++實現(xiàn)景區(qū)信息管理系統(tǒng)
- C++實現(xiàn)停車場管理系統(tǒng)
- 基于C++語言實現(xiàn)機(jī)動車違章處罰管理系統(tǒng)
- C++學(xué)生信息管理系統(tǒng)
- C++實現(xiàn)簡單的信息管理系統(tǒng)
- C++實現(xiàn)簡單職工管理系統(tǒng)
- C++基礎(chǔ)學(xué)生管理系統(tǒng)
- C++實現(xiàn)簡單的圖書管理系統(tǒng)
- C++實現(xiàn)簡單職工信息管理系統(tǒng)
- C++實現(xiàn)簡單的學(xué)生管理系統(tǒng)
- C++實現(xiàn)病人就醫(yī)管理系統(tǒng)
相關(guān)文章
C語言庫函數(shù)qsort及bsearch快速排序算法使用解析
這篇文章主要為大家介紹了C語言庫函數(shù)qsort及bsearch快速排序算法的使用示例解析2022-02-02

