具体完整代码如下,第170行
//C.J.K.学员管理系统(CSMS)
//CSMS: C.J.K._Scholars_Management_System
//Ownship:Confraternity of Jankers of Keyboard (C.J.K.)
//Written by 1724834368@qq.com
//////////预处理//////////
#include <bits/stdc++.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
using namespace std;
////////////////////////
//////////常量定义//////////
string Head_Str="=====C.J.K.学员管理系统(CSMS)=====\n\n";
string Please_Input_Number="\n>>请输入对应数字执行操作:\n";
string Unknown_Error=">>未知错误!\n";
//////////////////////////
//////////学员信息结构体//////////
class SDs {
//SD:Scholars_Data
public:
void printall() {
cout<<"姓名:"<<Name<<endl
<<"性别:"<<Sex<<endl
<<"编号:"<<Number<<endl
<<"头衔:"<<Titles<<endl
<<"语言:"<<Languages<<endl
<<"积分:"<<Exp<<endl
<<"备注:"<<Note<<endl
<<endl;
}
string Name; //姓名
string Sex; //性别
string Number; //编号
string Titles; //头衔
string Languages; //语言
string Exp; //积分
string Note; //备注
};
vector<SDs> SDV; //学员数据容器
SDs SDM; //学员数据组员
///////////////////////////////
//////////头部函数声明//////////
void SLP(); //系统加载页面
void LSD(); //载入学员数据
int MMP(); //主菜单页面
int GSD(); //查询学员信息
void SSD(); //保存学员数据
void Over(); //结束程序
void OKEND();//回车或换行结束
//////////////////////////////
//////////主函数//////////
int main() {
LSD();
SLP();
Main_MMP_Begin:
int Model=MMP();
switch(Model) {
case 48:
system("cls");
SSD();
Over();
return 0;
break;
case 49:
system("cls");
GSD();
goto Main_MMP_Begin;
break;
default:
cout<<Unknown_Error;
Sleep(2000);
break;
}
return 0;
}
/////////////////////////
//////////尾部函数定义//////////
void SLP() {
//SLP:System_Loading_Page
system("color F9");
cout<<Head_Str
<<"系统加载中";
for(int i=0;i<10;i++) {
Sleep(300);
cout<<'.';
}
cout<<"加载成功!"<<endl;
Sleep(1000);
system("cls");
}
void LSD() {
//LSD:Load_Scholars_Data
freopen("CJK_Scholars_Data.txt","r",stdin);
while(cin>>SDM.Name>>SDM.Sex>>SDM.Number>>SDM.Titles>>SDM.Languages>>SDM.Exp>>SDM.Note) {
SDV.push_back(SDM);
}
fclose(stdin);
fflush(stdin);
}
int MMP() {
//MMP:Main_Meun_Page
system("cls");
cout<<Head_Str
<<"【主菜单】"<<endl
<<"0.保存并退出"<<endl
<<"1.查询学员信息"<<endl
<<"2.更改学员信息"<<endl
<<"3.增删学员信息"<<endl;
cout<<Please_Input_Number;
Cin_Model_MMP:
int Model;
fflush(stdin);
Model=getch();
if(Model<48||Model>51) {
goto Cin_Model_MMP;
}
return Model;
}
int GSD() {
//GSD:Get_Scholars_Date
cout<<Head_Str
<<"【查询学员信息】"<<endl
<<"0.返回主菜单"<<endl
<<"1.查询全部学员信息"<<endl
<<"2.查询指定姓名学员信息"<<endl
<<"3.查询指定编号学员信息"<<endl;
cout<<Please_Input_Number;
Cin_Model_MMP:
int Model;
fflush(stdin);
Model=getch();
if(Model<48||Model>51) {
goto Cin_Model_MMP;
}
switch(Model) {
case 48:return 0;break;
case 49: {
system("cls");
cout<<Head_Str
<<"【查询全部学员信息】"<<endl<<endl;
for(int i=0;i<int(SDV.size());i++) {
SDV[i].printall();
Sleep(100);
}
OKEND();
break;
}
case 50: {
system("cls");
cout<<Head_Str
<<"【查询指定姓名学员信息】"<<endl<<endl;
Cin_Name:
cout<<"请输入学员姓名:"<<endl;
string name="";
OKEND();
break;
}
}
}
void Over() {
system("cls");
cout<<Head_Str;
cout<<">>保存并退出!"<<endl;
Sleep(2000);
}
void SSD() {
//Save_Scholars_Data
}
void OKEND() {
cout<<">>回车或换行返回主菜单..."<<endl;
while(getch()!='\n'&&getch()!='\r') {}
}
//////////////////////////////
可能是因为你的缓冲区有额外的字符,cin>>不是跳过去了,而是把回车等那些残留的字符当作输入了
可以在跳过的地方之前加上一行
fflush(stdin);
或者
getchar()
之类的,把这些残留的字符先清除