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

📄 stuinfomansys.cpp

📁 班级通讯录管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <iomanip>

using namespace std;

class StuInfor  
{
private:
	int     S_Position;										//输出次序
	string	S_Number;                                       //学号
	string	S_Name;                                         //姓名
	float	S_Score_Math;                                   //数学分数
	float	S_Score_Chinese;                                //语文分数
	float	S_Score_English;                                //英语分数
	float   S_Score_Totle;									//总分
	char    S_Rank;                                         //排名
	string  S_Other;                                        //备注
	bool	Open_flag;
	int		Record;
public:
	StuInfor();
	virtual ~StuInfor();
	void Cmenu(StuInfor &L);								//  菜单函数
	void ReadFromFile(StuInfor &L);						    //  读入数据
	void PrintAll(StuInfor &L);								//  打印全部
	void SavetoFile(StuInfor &L);							//	写入文件即保存
	void Search_Listmember(StuInfor &L);					//  查找成员
	void Search_On_Name(StuInfor &L);						//	按姓名查找
	void Search_On_Number(StuInfor &L);						//	按学号查找
	void ModifyMember(StuInfor &L);							//	修改成员数据
	void DelMember(StuInfor &L);                            //	删除数据成员
	void InsertMember(StuInfor &L);							//  插入数据成员
};

StuInfor::StuInfor()                                        //  构造函数进行一些初始化
{
	Record=0;
	Open_flag=false;
	S_Rank=' ';
}
StuInfor::~StuInfor()
{
}

//////////////////////////////////////////////////////////////////////////
StuInfor stu[50];    //定义对象数组,来存放数据,每一个学生数据即是一个对象
//////////////////////////////////////////////////////////////////////////

void StuInfor::Cmenu(StuInfor &L)						//  菜单函数实现
{
    system("cls");                  //清屏
	cout<<"\n\n\n\t\tStudent Information Management System"<<endl;
	cout<<"\n\t\t\t\tMade By:月子   QQ:562888025\n"<<endl;
	
	cout<<"***************************************************************************\n"<<endl; 
	cout<<"\t 1.Read From File \t\t 2.Print All List member"<<endl;
	cout<<"\t 3.Search List member\t\t 4.Insert List member"<<endl; 
	cout<<"\t 5.Modify List member\t\t 6.Delete List member"<<endl;
	cout<<"\t 7.Save To File\t\t\t 0.Exit System"<<endl;
	
	cout<<"***************************************************************************\n"<<endl; 	
	cout<<"Please input a number above!"<<endl;
	int i;
start:
	cin>>i;
	switch(i) 
	{
	case 1:L.ReadFromFile(L);break;
	case 2:L.PrintAll(L); break;
	case 3:L.Search_Listmember(L);break;
	case 4:L.InsertMember(L);break;
	case 5:L.ModifyMember(L);break;
	case 6:L.DelMember(L);break;
	case 7:L.SavetoFile(L);break;
	case 0:exit(1);break;
	default:
		{
			cout<<"Error,please put a number again!"<<endl;
			goto start; break;
		}
	}
}

void StuInfor::ReadFromFile(StuInfor &L)
{
	system("cls"); //清屏
	Open_flag=true;
	ifstream filein;
	filein.open("StuInfo.txt",ios_base::in);  //输入流打开文件
	if (!filein)    //判断是否打开成功
	{
		cerr<<"\n open error!"<<endl;
		exit(1);
	}
	//		cout<<setw(2)<<"次序"<<setw(8)<<"  学号"<<setw(5)<<"      姓名"       //表头信息
	//		<<setw(6)<<"   数学成绩"<<setw(6)<<"   语文成绩"<<setw(6)
	//		<<"   英语成绩"<<setw(6)<<"  总分"<<"  总分排名"<<"  备注"<<endl;
	//	cout<<"****************************************************************************"<<endl;
	
	for (int i=0;!filein.eof();i++)    //遍历文件中的元素
	{	
		filein>>stu[i].S_Position>>stu[i].S_Number>>stu[i].S_Name>>
			stu[i].S_Score_Chinese >>stu[i].S_Score_Math>>stu[i].S_Score_English;
		stu[i].S_Score_Totle=stu[i].S_Score_Chinese +stu[i].S_Score_Math+stu[i].S_Score_English;
		
		//		cout<<setw(2)<<stu[i].S_Position<<setw(13)<<stu[i].S_Number<<setw(6)<<stu[i].S_Name     //输出所有信息
		//			<<setw(10)<<stu[i].S_Score_Chinese<<setw(10)<<stu[i].S_Score_Math<<setw(10)
		//			<<stu[i].S_Score_English<<setw(10)<<stu[i].S_Score_Totle<<stu[i].S_Rank<<endl;
		Record=i;
	}
	cout<<" The Loading Finished!You can make other operations now!"<<endl;
	
	filein.close();        //关闭文件
	char temp;  //临时定义用于输入的变量
	cout<<"Continue to run the system?(y/n)"<<endl;
	cin>>temp;
	if (temp=='y')
	{
		L.Cmenu(L);   //返回主菜单
	}
	else
		exit(1);
}


void StuInfor::PrintAll(StuInfor &L)
{
	system("cls");
	char _load_temp='n';
	if (!Open_flag)
	{
		cout<<"File hasn't loaded,and now load it?(y/n)"<<endl;
		cin>>_load_temp;
		if (_load_temp=='y')
		{
			L.ReadFromFile(L);   //加载文件
		}
		else
			L.Cmenu(L);   //返回主菜单
	}
	
	cout<<setw(2)<<"次序"<<setw(8)<<"  学号"<<setw(5)<<"      姓名"       //表头信息
		<<setw(6)<<"   数学成绩"<<setw(6)<<"   语文成绩"<<setw(6)
		<<"   英语成绩"<<setw(6)<<"  总分"<<"  总分排名"<<"  备注"<<endl;
	cout<<"****************************************************************************"<<endl;
	for (int i=0;i<=Record;i++)    //遍历文件中的元素
	{	
		stu[i].S_Score_Totle=stu[i].S_Score_Chinese +stu[i].S_Score_Math+stu[i].S_Score_English;
		
		cout<<setw(2)<<stu[i].S_Position<<setw(13)<<stu[i].S_Number<<setw(6)<<stu[i].S_Name     //输出所有信息
			<<setw(10)<<stu[i].S_Score_Chinese<<setw(10)<<stu[i].S_Score_Math<<setw(10)
			<<stu[i].S_Score_English<<setw(10)<<stu[i].S_Score_Totle<<stu[i].S_Rank<<endl;
		
	}
	cout<<" The Print Finished!"<<endl;
	char temp;  //临时定义用于输入的变量
	cout<<"Continue to run the system?(y/n)"<<endl;
	cin>>temp;
	if (temp=='y')
	{
		L.Cmenu(L);   //返回主菜单
	}
	else
		exit(1);
}


void StuInfor::ModifyMember(StuInfor &L)
{
	system("cls");
	char _load_temp='n';
	if (!Open_flag)
	{
		cout<<"File hasn't loaded,and now load it?(y/n)"<<endl;
		cin>>_load_temp;
		if (_load_temp=='y')
		{
			L.ReadFromFile(L);   //加载文件
		}
		else
			L.Cmenu(L);   //返回主菜单
	}	
	cout<<"\t Your position is at Modify list member Function!"<<endl;
	int _Position;
	cout<<"Please input the Position you want to Modify!"<<endl;
	cin>>_Position;
	int flag=1;                         //标识,用来标识是否找到要找的东西
	char f,p;
	for (int i=0;i<=Record;i++)       //遍历文件中的信息
	{
		
		if(_Position==stu[i].S_Position)     //以位置查找并打印查找到的东西
		{
			cout<<"What you want is:"<<endl;                  //打印出查找出来的东西
			cout<<setw(2)<<"次序"<<setw(8)<<"  学号"<<setw(5)<<"      姓名"       //表头信息
				<<setw(6)<<"   数学成绩"<<setw(6)<<"   语文成绩"<<setw(6)
				<<"   英语成绩"<<setw(6)<<"  总分"<<"  总分排名"<<"  备注"<<endl;
			cout<<"****************************************************************************"<<endl;
			cout<<setw(2)<<stu[i].S_Position<<setw(13)<<stu[i].S_Number<<setw(6)<<stu[i].S_Name     //输出所有信息
				<<setw(10)<<stu[i].S_Score_Chinese<<setw(10)<<stu[i].S_Score_Math<<setw(10)
				<<stu[i].S_Score_English<<setw(10)<<stu[i].S_Score_Totle<<stu[i].S_Rank<<endl;
			flag=0;	
		}
	}
	if(flag)        //没有找到要找的元素,询问是否退出系统
	{
		cout<<"No find your position!\n"<<endl;
		cout<<"Continue to run the system?(y/n)"<<endl;
		cin>>p;
		if (p=='y')
		{
			L.Cmenu(L);
		}
		else
			exit(1);
	}
	else        //找到了要找的元素,可以进行操作了
	{
		cout<<"Do you want to Modify it?(y/n)"<<endl;  //确认修改
		cin>>f;
		if (f=='y')
		{
			i=_Position-1;             //逐项修改选中元素
			cout<<"Now Please In put the new data!"<<endl;
			cout<<"Input The new Number:"<<endl;
			cin>>stu[i].S_Number;			
			cout<<"Input The new Name:"<<endl;
			cin>>stu[i].S_Name;			
			cout<<"Input The new Chinese score:"<<endl;
			cin>>stu[i].S_Score_Chinese;			
			cout<<"Input The new Math score:"<<endl;
			cin>>stu[i].S_Score_Math;			
			cout<<"Input The new English score:"<<endl;
			cin>>stu[i].S_Score_English;	
			
			cout<<"Succeed to Modify the data!\nAnd do not forget to save befor leave!"<<endl;
		}
		else
		{
			cout<<"Failed to modify!"<<endl;
		}
		
		cout<<"Continue to run the system?(y/n)"<<endl; //是否继续操作系统
		cin>>p;
		if (p=='y')
		{
			L.Cmenu(L);   //返回主菜单
		} 
		else
			exit(1);
	}
}

void StuInfor::Search_Listmember(StuInfor &L)
{	
	system("cls");
	char _load_temp='n';
	if (!Open_flag)
	{
		cout<<"File hasn't loaded,and now load it?(y/n)"<<endl;
		cin>>_load_temp;
		if (_load_temp=='y')
		{
			L.ReadFromFile(L);   //加载文件
		}
		else
			L.Cmenu(L);   //返回主菜单
	}
	system("cls");
	cout<<"\t Your position is Serach Function!"<<endl;
	cout<<"\t\tWhat would you like to sesrch on?"<<endl;
	cout<<" \t   1.On Name \t 2 On Number \t 3 Quit Search"<<endl;
	int i;
P_S_start:
	cin>>i;
	switch(i)                                 //选择函数,按姓名查找或者按照学号查找
	{
		
	case 1: L.Search_On_Name(L);   break;
	case 2: L.Search_On_Number(L); break;
	case 3: L.Cmenu(L);break;
	case 0: exit(1);break;
	default:cout<<"Wrong input!\n Put a number again!"<<endl;goto P_S_start;break;
	}
	L.Cmenu(L);
}
void StuInfor::Search_On_Name(StuInfor &L)
{
	system("cls");
	string _Name;
	cout<<"\t Your position is Serach on Name Function!"<<endl;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -