📄 weihu.cpp
字号:
#include<iostream>
#include<fstream>
#include<string>
#include<algorithm>
#include<vector>
#include"weihu.h"
#include"sdt.h"
using std::cin;
using std::cout;
using std::vector;
using std::ofstream;
using std::map;
using std::string;
using std::endl;
std::vector<student> svec;
void weihu_menu()
{
cout<<"*********************08欧洲杯冠军意大利***********************"<<"\n"
<<"******************欢迎光临学生信息维护系统********************"<<"\n"
<<"****************************^_^*******************************"<<"\n"
<<"* 1.建立学生成绩文件 ●█〓██▄▄▄▄▄▄ ●GOAL● *"<<"\n"
<<"* 2.添加学生记录 ▄▅██████▅▄▃▂ *"<<"\n"
<<"* 3.删除学生记录 ██████████████ *"<<"\n"
<<"* 4.修改学生记录 ◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤ *"<<"\n"
<<"* 5.删除全部学生记录 *"<<"\n"
<<"* 6.返回上级菜单 *"<<"\n"
<<"* 制作人:剑侠£影枫 *"<<"\n"
<<"* 联系QQ:32861410 *"<<"\n"
<<"* E-mail:youxiaoitaly@hotmail.com *"<<"\n"
<<endl;
select_menu();
int select_weihu;
while(cin>>select_weihu)
{
switch(select_weihu)
{
case 1:system("cls");build_data();back_main();break;
case 2:system("cls");con_add(); build_data();back_main();break;
case 3:system("cls");del_data();build_data();back_main();break;
case 4:system("cls");modif_data();build_data();back_main();break;
case 5:system("cls");del_all();build_data();back_main();break;
case 6:come_back();break;
default:cout<<"输入无效,返回重新输入!";
}
}
}
void build_data() //建立学生成绩文件
{
char ss;
if(svec.empty())
{
cout<<"现在还没有任何内容,需要马上添加吗?(Y/N)"<<endl;
cin>>ss;
if(ss=='y'||ss=='Y')
con_add();
else
{
ofstream os("sdt.txt");
for(vector<student>::const_iterator sdt_it=svec.begin();sdt_it!=svec.end();++sdt_it)
os<<*sdt_it<<endl;
exit(0);
}
}
else
{
ofstream os("sdt.txt");
sort(svec.begin(),svec.end()); //按班级排序输出
for(vector<student>::const_iterator sdt_it=svec.begin();sdt_it!=svec.end();++sdt_it)
os<<*sdt_it<<endl;
}
}
void add_data() //添加学生记录
{
cout<<"请按照“学生 学号 班级 课程1 分数 课程2 分数”格式录入数据(每一个班的课程顺序必须一直)Ctrl+Z结束录入"<<endl;
student s;
cin>>s;
svec.push_back(s);
}
void con_add() //重复添加
{
bool flag=true;
char c;
while(flag)
{
add_data();
cin.clear(); //刷新输入流
cout<<"继续添加吗?(Y/N)"<<endl;
cin>>c;
if(c=='n'||c=='N')
flag=false;
}
}
void del_data() //删除3门课程不及格的学生记录
{
bool has=true;
cout<<"即将删除有3门课程不及格的学生记录!"<<endl;
for(vector<student>::iterator del_it=svec.begin();del_it!=svec.end();++del_it)
{
int cnt=0;
/*遍历每一个同学每一门学科,找出小于60分的*/
for(map<string,double>::iterator map_it=del_it->s_score.begin();map_it!=del_it->s_score.end();++map_it)
{
if(map_it->second<60.0)
++cnt;
}
if(cnt>=3) //如果有3门小于60 则删除
{
has=false;
char flag;
cout<<"即将删除:"<<"\n"
<<"\t"<<*del_it<<"\n"
<<"\t"<<"确认吗?(Y/N)"<<endl;
cin>>flag;
if(flag=='Y'||flag=='y')
{
svec.erase(del_it);
--del_it;
}
else
continue;
}
}
if(has) cout<<"没有符合删除条件的数据!"<<endl;
}
void del_all()
{
char s;
cout<<"该操作会删除全部数据,你确认继续吗?(Y/N)"<<endl;
cin>>s;
if(s=='y'||s=='Y')
svec.clear();
else weihu_menu();
}
void modif_data()
{
string mdi_num;
head:cout<<"输入要修改学生的学号:"<<endl;
cin>>mdi_num;
bool has=true;
for(vector<student>::iterator mdi_it=svec.begin();mdi_it!=svec.end();++mdi_it)
{
if((*mdi_it).s_num==mdi_num)
{
has=false;
for(map<string,double>::iterator map_it=(*mdi_it).s_score.begin();map_it!=(*mdi_it).s_score.end();++map_it)
{
char flag;
cout<<"是否修改:"<<"\n"
<<"\t"<<(*mdi_it).s_name<<"\t"<<(*mdi_it).s_class<<"\t"<<map_it->first<<"\t"<<map_it->second<<"\n"
<<"\t"<<"确认吗?(Y/N)"<<endl;
cin>>flag;
if(flag=='Y'||flag=='y')
{
cout<<"请输入修改后的分数:"<<endl;
cin>>map_it->second;
}
}
}
}
if(has)
{
char y;
cout<<"没有找到你输入的学号!返回重新输入?(Y/N)"<<endl;
cin>>y;
if(y=='y'||y=='Y')
goto head;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -