用c++面向对象设计一个代码,求大佬

(1)用户输入用户名及口令,然后在已有的用户名及口令中检查是否合法,合法进入查询界面;对于不合法的用户或口令最多出错3次,超出3次后自动退出程序;(2)在评委所打的分数中,去掉一个最高分,去掉一个最低分,得出各选手的平均分,然后按平均分进行排序,得出各选手的名次。(3)设计出菜单,使用户能够设置评委的人数并输入姓名,设置选手的人数,并能将最后的得分及名次情况能够保存到文件中记录下来。(3)参考所给出的程序,其它未说明功能可自行添加设计。  

代码如下,如有帮助,请采纳一下,谢谢。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//定义参赛选手信息
struct StPartner
{
	string name;
	vector<float> score;
	float avg;
};
//登陆
bool Login(string name,string pwd,int tms)
{
	int i = 0;
	string us,pd;
	while(i < tms)
	{
		cout << "请输入用户名和密码:";
		cin >> us >> pd;
		if (us == name && pwd == pd)
		{
			return true;
		}else
		{
			i++;
			cout << "用户名或密码错误,还有" << tms -i << "次机会。" << endl;
		}
	}
	return false;
}
//录入评委信息
void LoadPwinfo(vector<string> &vpw)
{
	int nmb,i;
	string name;
	cout << "请输入评委的人数:" << endl;
	cin >> nmb;
	cout << "请输入评委的名字:";
	for (i = 0; i < nmb; i++)
	{
		cin >> name;
		vpw.push_back(name);
	}
}

//录入选手成绩
int LoadXsInfo(StPartner* vp,int n)
{
	int nmb,i,j;
	float sum = 0.0,max,min,tmp;
	cout << "请输入选手人数:" ;
	cin >> nmb;
	

	cout << "请输入选手姓名和" << n << "个评委给出的成绩:" << endl;
	for (i = 0; i < nmb;i++)
	{
		sum = 0.0;
		StPartner st;
		cin >> st.name;
		for (j = 0;j < n;j++)
		{
			cin >> tmp;
			st.score.push_back(tmp);
			sum += tmp;
			if(j == 0)
			{
				max = tmp;
				min = tmp;
			}else
			{
				if(tmp > max) max = tmp;
				if(tmp < min) min = tmp;
			}
		}
		st.avg = (sum - max - min)/(n-2);
		vp[i] = st;
	}
	return nmb;
}



//排名
void Sortv(StPartner* vp,int size)
{
	int i,j;
	StPartner tmp;
	for (i = 0; i < size -1; i++)
	{
		for (j = 0; j < size -1 - i; j++)
		{
			if (vp[j].avg < vp[j+1].avg)
			{
				tmp = vp[j];
				vp[j] = vp[j+1];
				vp[j+1] = tmp;
			}
		}
	}
	cout << "排序后" << endl;
	for (i = 0; i < size; i++)
	{
		cout << vp[i].name << ": " << vp[i].avg << endl;
	}
}

//写入文件
void WriteFile(StPartner* vp,int size)
{
	int i,j;
	FILE* fp;
	if (!(fp = fopen("a.txt","w")))
	{
		return;
	}
	for (i = 0; i< size; i++)
	{
		fprintf(fp,"%s    %d   %.2f   ",vp[i].name.c_str(),i+1,vp[i].avg);
		for (j = 0;j < vp[i].score.size(); j++)
		{
			if(j < vp[i].score.size()-1)
				fprintf(fp,"%.2f   ",vp[i].score[j]);
			else
				fprintf(fp,"%.2f\n",vp[i].score[j]);
		}
	}
	fclose(fp);
}

int main()
{
	string username = "zhangsan";
	string pwd = "123456";
	int tms =3;

	string strum;
	string strpw;
	
	bool isLogin = false;  //是否已经登录
	vector<string> vPw;    //评委名字
	StPartner vp[20];     //选手信息
	int opt;
	int nmbxs = 0;
	//
	while(true)
	{
		//system("cls");
		cout << "1.登录系统" << endl;
		cout << "2.录入评委人数和姓名" << endl;
		cout << "3.录入选手名字和分数" << endl;
		cout << "4.显示排名" <<endl;
		cout << "5.写入文件" << endl;
		cout << "9.退出系统" << endl;
		cin >> opt;

		switch(opt)
		{
		case 1:
			isLogin = Login(username,pwd,tms);
			if(!isLogin)
				return 0;
			system("cls");
			break;
		case 2:
			if (!isLogin)
				cout << "请先登陆系统" << endl;
			else
			{
				LoadPwinfo(vPw);
				system("cls");
			}
			break;
		case 3:
			if (!isLogin)
				cout << "请先登陆系统" << endl;
			else if (vPw.size() == 0)
			{
				cout << "请先录入评委信息"<< endl;
			}else
			{
				nmbxs = LoadXsInfo(vp,vPw.size());
				system("cls");
			}
			break;
		case 4:
			if (!isLogin)
				cout << "请先登陆系统" << endl;
			else if (vPw.size() == 0)
			{
				cout << "请先录入评委信息"<< endl;
			}else if(nmbxs == 0)
			{
				cout << "请先录入选手成绩" << endl;
			}else
				Sortv(vp,nmbxs);
			break;
		case 5:
			WriteFile(vp,nmbxs);
			break;
		case 9:
			
			return 0;
		default:
			break;
		}
	}
}

那正确的口令和密码从哪来呢?

你这是两个题目,还是一个题目啊

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632