⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weihu.cpp

📁 一个简单的学生信息管理系统
💻 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 + -