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

📄 studentmanage.cpp

📁 小的学生管理系统
💻 CPP
字号:
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

/*类成绩的定义*/
class chengji
{
public:
	chengji(){}
	chengji(double chi,double mat,double eng);
	chengji(chengji &p);
	~chengji(){}
	void changecj(double a,double b,double c);
    double getchi();
	double getmat();
	double geteng();
	double getzchengji();

private:
	double chinese;
	double mathd;
	double english;
	double zchengji;
};
chengji::chengji(double chi,double mat,double eng)
{
	chinese=chi;
	mathd=mat;
	english=eng;
	zchengji=chinese+mathd+english;
}
chengji::chengji(chengji &p)
{
	chinese=p.chinese;
	mathd=p.mathd;
	english=p.english;
	zchengji=p.zchengji;
}
double chengji::getchi()
{
	return chinese;
}
double chengji::getmat()
{
	return mathd;
}
double chengji::geteng()
{
	return english;
}
double chengji::getzchengji()
{
	return zchengji;
}
void chengji::changecj(double a,double b,double c)
{
	chinese=a;
	mathd=b;
	english=c;
	zchengji=chinese+mathd+english;
}


/*类学生的定义*/
class student:public chengji
{
public:	
	student(){}
	student(string a,string b,double chi,double mat,double eng):chengji(chi,mat,eng)
	{
		numb=a;
		name=b;
	}
	student(student &ps):chengji(ps)
	{
		numb=ps.numb;
		name=ps.name;
	}
	~student(){};
	string getnumb();
	string getname();
	void changest(string a,string b,double chi,double mat,double eng);
	void showst();
private:
	string numb;
	string name;
};
string student::getnumb()
{
	return numb;
}
string student::getname()
{
	return name;
}
void student::changest(string a,string b,double chi,double mat,double eng)
{
	changecj(chi,mat,eng);
	numb=a;
	name=b;
}


void creatstudent(student *pst,int num)
{
	string name;
	string numb;
	double chinese;
	double mathd;
	double english;
	for(int i=0;i<num;i++)
	{
		cout<<"输入第"<<i+1<<"个学生的学号:";
		cin>>numb;
		cout<<"输入第"<<i+1<<"个学生的姓名:";
		cin>>name;
		cout<<"输入第"<<i+1<<"个学生的语文成绩:";
		cin>>chinese;
		cout<<"输入第"<<i+1<<"个学生的数学成绩:";
		cin>>mathd;
		cout<<"输入第"<<i+1<<"个学生的英语成绩:";
		cin>>english;
		if(i>0)
		{
			for(int j=0;j<i;j++)
			{
				if(numb==pst[j].getnumb())
				{
					cout<<"重新输入学号,此学号已经存在!"<<endl;
					cin>>numb;
				}
			}
		}
		pst[i].changest(numb,name,chinese,mathd,english);
	}
}
void outputstudent()
{
	int i;
	int studvalue;
	string name;
	string numb;
	double chinese;
	double mathd;
	double english;
	fstream iofile("student.txt");
	string temp;
	iofile>>temp;
	if(temp=="Num_stud")
	{
		iofile>>studvalue;
	}
	student *ps=new student[studvalue];
	for(i=0;iofile>>numb;i++)
	{
		iofile>>name>>chinese>>mathd>>english;
		ps[i].changest(numb,name,chinese,mathd,english);
	}
	for(i=0;i<studvalue;i++)
	{
		cout<<ps[i].getnumb()<<" "
			<<ps[i].getname()<<" "
			<<ps[i].getchi()<<" "
			<<ps[i].getmat()<<" "
			<<ps[i].geteng()<<endl;
	}
	iofile.close();
}

void changestudent()
{
	int studvalue;
	int i;
	string name;
	string numb;
	double chinese;
	double mathd;
	double english;
	ifstream readfile("student.txt");
    string temp;
	readfile>>temp;
	if(temp=="Num_stud")
	{
		readfile>>studvalue;
	}
	student *ps=new student[studvalue];
	for(i=0;readfile>>numb;i++)
	{
		readfile>>name>>chinese>>mathd>>english;
		ps[i].changest(numb,name,chinese,mathd,english);
	}
	readfile.close();
	cout<<"输入要修改的学生的学号:"<<endl;
	cin>>numb;

	for(i=0;i<studvalue;i++)
	{
		if(numb==ps[i].getnumb())
			break;
	}
	if(i>=studvalue)
	{
		cout<<"要修改的学生的学号不存在!"<<endl;
	}
	else
	{
		cout<<"输入修改的学生的姓名:"<<endl;
		cin>>name;
		cout<<"输入修改的语文成绩:"<<endl;
		cin>>chinese;
		cout<<"输入修改的数学成绩:"<<endl;
		cin>>mathd;
		cout<<"输入修改的英语成绩:"<<endl;
		cin>>english;
		ps[i].changest(numb,name,chinese,mathd,english);
		ofstream writefile("student.txt");
		writefile<<"Num_stud"<<" "<<studvalue<<endl;
		for(i=0;i<studvalue;i++)
		{
			writefile<<ps[i].getnumb()<<" "
				<<ps[i].getname()<<" "
				<<ps[i].getchi()<<" "
				<<ps[i].getmat()<<" "
				<<ps[i].geteng()<<endl;
		}
		writefile.close();
	}
	delete []ps;
}

void increasestudent()
{
	int studvalue;
	int num;
	int i;
    string name;
	string numb;
	double chinese;
	double mathd;
	double english;
	ifstream readfile("student.txt");
	string temp;
	readfile>>temp;
	if(temp=="Num_stud")
	{
		readfile>>studvalue;
	}
	student *ps=new student[studvalue];
	for(i=0;readfile>>numb;i++)
	{
		readfile>>name>>chinese>>mathd>>english;
		ps[i].changest(numb,name,chinese,mathd,english);
	}
	readfile.close();
	cout<<"输入增加学生个数:"<<endl;
	cin>>num;
	student *pss=new student[num+studvalue];
	for(i=0;i<studvalue;i++)
	{
		pss[i]=ps[i];
	}
	delete []ps;
	for(i=studvalue;i<num+studvalue;i++)
	{
		cout<<"输入第"<<i+1<<"个学生的学号:";
		cin>>numb;
		if(i>0)
		{
			for(int j=0;j<i;j++)
			{
				if(numb==pss[j].getnumb())
				{
					cout<<"此学号已经存在!重新输入学号:";
					cin>>numb;
				}
			}
		}
		cout<<"输入第"<<i+1<<"个学生的姓名:";
		cin>>name;
		cout<<"输入第"<<i+1<<"个学生的语文成绩:";
		cin>>chinese;
		cout<<"输入第"<<i+1<<"个学生的数学成绩:";
		cin>>mathd;
		cout<<"输入第"<<i+1<<"个学生的英语成绩:";
		cin>>english;
		
		pss[i].changest(numb,name,chinese,mathd,english);
	}
	ofstream writefile("student.txt");
	writefile<<"Num_stud"<<" "<<studvalue+num<<endl;
	for(i=0;i<studvalue+num;i++)
	{
		writefile<<pss[i].getnumb()<<" "
			<<pss[i].getname()<<" "
			<<pss[i].getchi()<<" "
			<<pss[i].getmat()<<" "
			<<pss[i].geteng()<<endl;
	}
	writefile.close();
	delete []pss;
}



/*主程序*/
void main()
{
	int studvalue;
	int k;
	int drs=0;
	string name;
	string numb;
	double chinese;
	double mathd;
	double english;
	double max;
	fstream iofile("student.txt");
	if(!iofile)                                 //打开文件student.txt失败,新建文件
	{
		cout<<"新建一个只写文件!"<<endl;
		ofstream writefile("student.txt");
		if(!writefile)
		{
			cout<<"新建文件失败!"<<endl;
			return;
		}
		cout<<"输入学生个数:";
		cin>>studvalue;
		student *ps=new student[studvalue];
		writefile<<"Num_stud"<<" "<<studvalue<<endl;
		creatstudent(ps,studvalue);
		for(k=0;k<studvalue;k++)
		{
			writefile<<ps[k].getnumb()<<" "
				<<ps[k].getname()<<" "
				<<ps[k].getchi()<<" "
				<<ps[k].getmat()<<" "
				<<ps[k].geteng()<<endl;
		}
		writefile.close();
		char op='y';
		while(op=='y'||op=='Y')
		{
			cout<<"如需输出全部学生的成绩,按't'或'T':"<<endl;
			cout<<"如需输出全部学生的总分,按'z'或'Z':"<<endl;
			cout<<"如需输出总分最高的学生,按'm'或'M':"<<endl;
			cout<<"如需修改学生记录,按'c'或'C':"<<endl;
			cout<<"如需增加学生记录,按'i'或'I':"<<endl;
			cin>>op;
			switch(op)
			{
			case 't':
			case 'T':
				outputstudent();
				break;
			case 'z':
			case 'Z':
			   for(k=0;k<studvalue;k++)
			   {
				   cout<<ps[k].getnumb()<<" "
					   <<ps[k].getname()<<" "
					   <<ps[k].getzchengji()<<endl;
			   }
			   break;
			case 'm':
			case 'M':
				max=ps[0].getzchengji();
				for(k=0;k<studvalue;k++)
				{
					if(max<ps[k].getzchengji())
					{
						max=ps[k].getzchengji();
						drs=k;
					}
				}
				cout<<"总分最高的学生的学号是:"<<ps[drs].getnumb()<<" "
					<<"姓名是:"<<ps[drs].getname()<<" "
					<<"总分是:"<<ps[drs].getzchengji()<<endl;
				break;
			case 'c':
			case 'C':
				changestudent();
				break;
			case 'i':
			case 'I':
				increasestudent();
				break;
			}
			cout<<"输入是否继续,按'y'或'n':"<<endl;
			cin>>op;
		}
		delete []ps;
		
	}
	else                                                //打开文件student.txt成功
	{
		string temp;
		iofile>>temp;
		if(temp=="Num_stud")
		{
			iofile>>studvalue;
		}
		student *ps=new student[studvalue];
		for(k=0;iofile>>numb;k++)
		{
			iofile>>name>>chinese>>mathd>>english;
			ps[k].changest(numb,name,chinese,mathd,english);
		}
		iofile.close();
		char op='y';
		while(op=='y'||op=='Y')
		{
			cout<<"如需输出全部学生的成绩,按't'或'T':"<<endl;
			cout<<"如需输出全部学生的总分,按'z'或'Z':"<<endl;
			cout<<"如需输出总分最高的学生,按'm'或'M':"<<endl;
			cout<<"如需修改学生记录,按'c'或'C':"<<endl;
			cout<<"如需增加学生记录,按'i'或'I':"<<endl;
			cin>>op;
			switch(op)
			{
			case 't':
			case 'T':
				outputstudent();
				break;
			case 'z':
			case 'Z':
			   for(k=0;k<studvalue;k++)
			   {
				   cout<<ps[k].getnumb()<<" "
					   <<ps[k].getname()<<" "
					   <<ps[k].getzchengji()<<endl;
			   }
			   break;
			case 'm':
			case 'M':
				max=ps[0].getzchengji();
				for(k=0;k<studvalue;k++)
				{
					if(max<ps[k].getzchengji())
					{
						max=ps[k].getzchengji();
						drs=k;
					}
				}
				cout<<"总分最高的学生的学号是:"<<ps[drs].getnumb()<<" "
					<<"姓名是:"<<ps[drs].getname()<<" "
					<<"总分是:"<<ps[drs].getzchengji()<<endl;
				break;
			case 'c':
			case 'C':
				changestudent();
				break;
			case 'i':
			case 'I':
				increasestudent();
				break;
			}
			cout<<"输入是否继续,按'y'或'n':"<<endl;
			cin>>op;
		}
		delete []ps;
	}
}	

	












		
		












⌨️ 快捷键说明

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