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

📄 studentgradeinformationmanagement.cpp

📁 定义学生类Student
💻 CPP
字号:
/*1.	定义学生类Student,包含学生姓名、学号、3门或更多门课程的成绩以及对这些成员的操作;
2.	定义Student的对象数组,然后录入学生信息并显示到屏幕,同时保存到文件;
3.	从文件读取数据并查询、修改和统计学生成绩。
4.	在录入信息前要有提示信息。
5.	屏幕输出和文件存取时可使用>>、<<运算符重载或用I/O流对象引用作参数的成员函数实现。*/
#define MAX 2
#include<iostream>
#include<iomanip>
#include<fstream>//输入输出文件流类的头文件
using namespace std;
#include<string.h>
#include<math.h>
class student
{
  public:
	  char name[10];
	  long num;
	  float math,English,computer;
	  float total;
      float aver;
      student();//student类的构造函数
	  ~student(){};//student类的析构函数
	  void serach_name(student s[MAX]);//按姓名查询学生的信息
	  void serach_num(student s[MAX]);//按学号查询学生的信息
	  void modify(student s[MAX]);//修改学生的信息
	  void counttotal_aver(student s[MAX]);//统计学生成绩
      void input();//请输入学生的信息
	  void output();//输出所有学生成绩
};
student::student()
{
   math=0;
   English=0;
   computer=0;
   total=0;
   aver=0;
}
void student::serach_name(student s[MAX])
{
	int i,k=0;
	ifstream rfile;
	rfile.open("file1.txt",ios_base::binary);
	if(rfile)  
	{
		for(i=0;i<MAX;i++)
        rfile>>s[i].name>>s[i].num>>s[i].math>>
        s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
	}
    else cout<<"不能打开此文件!"<<endl;

    char a[10];
    cout<<"输入要查询的学生姓名:"<<endl;
    cin>>a;

    for(i=0;i<MAX;i++)
	{
		if(strcmp(s[i].name,a)==0)
		{
			k=1; 
            cout<<"姓名     "<<"学号      "<<"数学  "<<"英语  "
	        <<"计算机 "<<"总分 "<<"平均分"<<endl;  
            s[i].output();
		}
	}
    rfile.close();
    if(k==0) cout<<"查询失败!"<<endl;
}
void student::serach_num(student s[MAX])
{
	int i,k=0;
    ifstream rfile;
    rfile.open("file1.txt",ios_base::binary);
    if(rfile)  
	{  
		for(i=0;i<MAX;i++)
		{
			rfile>>s[i].name>>s[i].num>>s[i].math>>
            s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
		}
	}
    else cout<<"不能打开此文件!"<<endl;

    long n;
    cout<<"输入要查询的学生学号:"<<endl;
    cin>>n;
    for(i=0;i<MAX;i++)
    if(s[i].num==n)
	{
		k=1; 
        cout<<"姓名     "<<"学号      "<<"数学  "<<"英语  "<<"计算机 "<<"总分 "<<"平均分"<<endl;   
        s[i].output();
    }
    rfile.close();
    if(k==0) cout<<"查询失败!"<<endl;
}
void student::modify(student s[MAX])
{
	int i,m,k=0;
    ifstream rfile;
    rfile.open("file1.txt",ios_base::binary);
    if(rfile)  
	{  
		for(i=0;i<MAX;i++)
		{ 
			rfile>>s[i].name>>s[i].num>>s[i].math>>
            s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
		}
	}
    else cout<<"不能打开此文件!"<<endl;
    rfile.close();
    char a[10];
    cout<<"输入要修改的学生姓名:"<<endl;
    cin>>a;
    for(i=0;i<MAX;i++)
    if(strcmp(s[i].name,a)==0)
	{
		k=1; 
		m=i;
        cout<<"姓名     "<<"学号      "<<"数学  "<<"英语  "<<"计算机 "<<"总分 "<<"平均分"<<endl;  
        s[i].output();
	}
    if(k==0) cout<<"查询失败!"<<endl;
    if(k==1)
	{
		cout<<"请输入新的学生姓名,学号,数学,英语,计算机成绩:"<<endl;
        cin>>name>>num>>math>>English>>computer;
        strcpy(s[m].name,name);
        s[m].num=num;
        s[m].math=math;
        s[m].English=English;
        s[m].computer=computer;
        s[m].total=s[m].English+s[m].math+s[m].computer;
        s[m].aver=s[m].total/3;
        cout<<"你要修改的学生信息已修改为:"<<endl;
        cout<<"姓名     "<<"学号      "<<"数学  "<<"英语  "<<"计算机 "<<"总分 "<<"平均分"<<endl;  
        s[m].output();
        ofstream tfile;
        tfile.open("file1.txt",ios_base::binary);
        for(i=0;i<MAX;i++)
		{
			tfile<<s[i].name<<"  "<<s[i].num<<"  "<<s[i].math<<"  "
            <<s[i].English<<"  "<<s[i].computer<<"  "<<s[i].total<<"  "
            <<s[i].aver<<endl;
		}
        tfile.close();

	}
}
void student::counttotal_aver(student s[MAX])
{ 
	int i;
	ifstream rfile;
    rfile.open("file1.txt",ios_base::binary);
    if(rfile)  
	{  
		for(i=0;i<MAX;i++)
		{  
			rfile>>s[i].name>>s[i].num>>s[i].math>>
            s[i].English>>s[i].computer>>s[i].total>>s[i].aver;
		}
	}
    else cout<<"不能打开此文件!"<<endl;
    rfile.close();
    cout<<"姓名      "<<"学号       "<<"总分  "<<"平均分  "<<endl;
    for(i=0;i<MAX;i++)
	{
		s[i].total=s[i].English+s[i].math+s[i].computer;
        s[i].aver=s[i].total/3;
        cout<<setiosflags(ios_base::left)<<setw(10)<<s[i].name
        <<setw(10)<<s[i].num<<setw(6)<<s[i].total<<setw(6)<<s[i].aver<<endl;
	}
    ofstream tfile;
    tfile.open("file1.txt",ios_base::binary);
    for(i=0;i<MAX;i++)
	{
		tfile<<s[i].name<<"  "<<s[i].num<<"  "<<s[i].math<<"  "
        <<s[i].English<<"  "<<s[i].computer<<"  "<<s[i].total<<"  "
        <<s[i].aver<<endl;
	}
}

void student::input()
{
	cout<<"请输入姓名:"<<endl; 
    cin>>name;
    cout<<"请输入学号:"<<endl; 
    cin>>num;
    cout<<"请输入数学成绩:"<<endl; 
	cin>>math;
    cout<<"请输入英语成绩:"<<endl; //同上
    cin>>English;
    cout<<"请输入计算机成绩:"<<endl;
    cin>>computer;
}
void student::output()
{ 
	cout<<setiosflags(ios_base::left)<<setw(10)<<name<<setw(10)
    <<num<<setw(6)<<math<<setw(6)<<English<<setw(6)<<computer
    <<setw(6)<<total<<setw(6)<<aver<<endl;
}
//*************************************************************
void print1()
{
	cout<<"                   * * * * * * * * * * * * * * * * * * * * *"<<endl;
    cout<<"                   * * * * * * * * * * * * * * * * * * * * *"<<endl;
    cout<<"                   * * * * *学生成绩管理系统 * * * * * * * *"<<endl;
    cout<<"                   * * * * * * * * * * * * * * * * * * * * *"<<endl;
    cout<<"                   * * * * * * * * * * * * * * * * * * * * *"<<endl;
}
//*************************************************************
void print2()
{
	cout<<"*******************************************"<<endl;
    cout<<"*   *   *   *    该程序要实现的主要功能:    *    *    *    *"<<endl;
    cout<<"*   *   *   *    *    *    *    *     *     *    *    *    *"<<endl;
    cout<<"*   *   1------统计学生的信息------counttotal_aver()  *    *"<<endl;
    cout<<"*   *   2------按姓名查询学生信息------serach_name()  *    *"<<endl;
    cout<<"*   *   3------按学号查询学生信息-------serach_num()  *    *"<<endl;
    cout<<"*   *   4------修改学生信息-----------------modify()  *    *"<<endl;
    cout<<"*   *   5------显示所有学生的信息-----------Output()  *    *"<<endl;
    cout<<"*   *   0------退出学生管理系统---------------exit()  *    *"<<endl;
    cout<<"*   *   *   *    *    *    *    *     *     *    *    *    *"<<endl;
}
//*************************************************************
void main()
{
	print1();
	student stu[MAX],s;
    int i,x;
    for(i=0;i<MAX;i++)
    { 
		cout<<"请输入第"<<i+1<<"个学生的姓名,学号及数学,英语,计算机成绩:"<<endl;
        stu[i].input();
    }
    ofstream tfile;
    tfile.open("file1.txt",ios_base::binary);
    for(i=0;i<MAX;i++)
	{
		tfile<<stu[i].name<<"  "<<stu[i].num<<"  "<<stu[i].math<<"  "
        <<stu[i].English<<"  "<<stu[i].computer<<"  "<<stu[i].total<<"  "
        <<stu[i].aver<<endl;
   
	}
    tfile.close();
    while(1)
	{
		print2();
		cout<<"选择:";
		cin>>x;
     switch(x)
	 {
	 case 1:  s.counttotal_aver(stu); break;
     case 2:  s.serach_name(stu); break;
     case 3:  s.serach_num(stu); break;
     case 4:  s.modify(stu); break;
     case 5:  cout<<"输出"<<MAX<<"个学生的信息"<<endl;
              cout<<"姓名     "<<"学号      "<<"数学  "<<"英语  "
		      <<"计算机 "<<"总分 "<<"平均分"<<endl;  
			  for(i=0;i<MAX;i++)
			  {
				  stu[i].output();
			  }
		      break;
     case 0:  exit(1); break;
	 }
	}
}













⌨️ 快捷键说明

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