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

📄 极好的学生管理系统.cpp

📁 极好的院校管理系统 功能完善
💻 CPP
字号:
//-----------------------------------------------------
//---------------学生成绩管理系统----------------------
//-----------------------------------------------------
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
//----------------------------------------------------
//----------------------------------------------------
const int n=100;       //n为学生总数
const int m=4;         //定义有四门课程
int g=1;               //连续输入学生信息时表示人数的变量初始值为1
int p=-1;              //非连续输入时所需加的值初始值为-1
float a[m];            //每个学生的各四门课程成绩            
//----------------------------------------------------
//--------------------Stud----------------------------
class Stud             //声明类Stud
{
public:                //类的公有成员
	void Input();
    void Display();
    void Cout();
    void Quit();
private:               //类的私有成员
	int numb;
	char name[20];
	float score;
	float sum;
};
//----------------------------------------------------------
//----------------------------------------------------------
Stud st[n];
void Stud::Input()        //输入函数
{
	char ch='y';
    fstream outfile;      //打开文件前先说明一个fstream类的对象
	outfile.open("Stud.dat",ios::out|ios::app);//使用成员函数open()以追加写方式打开文件
	if(!outfile)          //看文件是否被打开
	{
		cout<<"Stud.dat can't open.\n";
		abort();
	}
	while(ch=='y')
	{
		st[g+p].sum=0;
	    cout<<"请输入第"<<g+p<<"个学生的学号:";
	    cin>>st[g+p].numb;
	    cout<<"请输入"<<g+p<<"个学生的姓名:";
        cin>>st[g+p].name;
        cout<<"请输入"<<g+p<<"个学生的各四门课程成绩:"<<endl;
        for(int j=0;j<m;j++)      //四门课程的成绩相加得到st[g+p].sum
		{
			cin>>a[j];
	        st[g+p].sum+=a[j];
		}
	    cout<<"第"<<g+p<<"个学生总分:"<<st[g+p].sum<<endl;
	    outfile.write((char *)&st[g+p].numb,sizeof(st[g+p].numb));//向文件中写入信息
        outfile.write((char *)&st[g+p].name,sizeof(st[g+p].name));//向文件中写入信息
        outfile.write((char *)&st[g+p].sum,sizeof(st[g+p].sum));  //向文件中写入信息
        outfile.close(); 
	    cout<<"是否继续输入?(y or n)"<<endl;                      //提出是否再输入
	    cin>>ch;
        switch(ch)                                                //控制是否再输入
		{
		case 'y':                //再输入人数加1
			g++;
	        break;
	    case 'n':                //不输入退出
		    break;
		}
	}
}
//------------------------------------------------------------
//------------------------------------------------------------
void Stud::Display()             //显示函数
{
	int i;
    fstream infile ;             //从文本文件中读取信息
	infile.open("stud.dat",ios::in|ios::app);//以使用成员函数open()以追加读方式打开文件
    if(!infile)                              //看文件是否被打开
	{
		cout<<"stud.dat can't open.\n";
		abort();
	}
	for(i=1;i<=g+p;i++)
	{
		infile.read((char *)&st[i].numb,sizeof(st[i].numb));//用read()函数把信息读出来
		infile.read((char *)&st[i].name,sizeof(st[i].name));//用read()函数把信息读出来
		infile.read((char *)&st[i].sum,sizeof(st[i].sum));  //用read()函数把信息读出来
        infile.close();
	}
    for(int j=1;j<g+p;j++)          //按学生的成绩从高到低排序
	for(int k=1;k<=g+p-j;k++)
	if(st[k].sum<st[k+1].sum)       //如符合条件进行交换
	{
		float t;
		int b;
		char na[20];
		t=st[k].sum;
		st[k].sum=st[k+1].sum;
		st[k+1].sum=t;
        b=st[k].numb;
		st[k].numb=st[k+1].numb;
		st[k+1].numb=b;
		strcpy(na,st[k].name);
		strcpy(st[k].name,st[k+1].name);
		strcpy(st[k+1].name,na);
	}
    for(int m=1;m<=g+p;m++)       //输出排序后的成绩
	{
		cout<<"第"<<m<<"名的学号为:"<<st[m].numb<<endl;
		cout<<"第"<<m<<"名的姓名为:"<<st[m].name<<endl;     
		cout<<"第"<<m<<"名的总分为:"<<st[m].sum<<endl;
	}
}
//---------------------------------------------------------
//---------------------------------------------------------
void Stud::Cout()                 //算平均成绩
{
	float Tsum=0;
    for(int i=1;i<=g+p;i++)       //求各学生总成绩之和
	{
		Tsum+=st[i].sum;
	}
    float average=Tsum/(g+p);     //平均成绩
    cout<<"平均分为:"<<average<<endl;
}
//----------------------------------------------------------
//-----------------------主函数-----------------------------
void main()
{
	char f;
	int s;
    bool t;
    t=true;
    while(t)
	{
		do{                   
			cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"<<endl;
			cout<<"           学生成绩管理系统          "<<endl;
			cout<<"                                     "<<endl;
			cout<<"           1.   成绩输入             "<<endl;
			cout<<"           2.   成绩显示             "<<endl;
			cout<<"           3.   统    计             "<<endl;
			cout<<"           A.学生总数B.平均分数      "<<endl;
			cout<<"           0.   退    出             "<<endl;
			cout<<"                                     "<<endl;
			cout<<"           请输入一个选项!           "<<endl;
			cout<<"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"<<endl;
			cin>>s;
		}while (s!=1&&s!=2&&s!=3&&s!=0);
		switch(s){                             //switch语句
		case 1:
			p++;
			st[n].Input();
            break;
        case 2:
	        st[n].Display(); 
            break;
        case 3:
			cout<<"请选择统计的内容:A.学生人数B.平均分数(A OR B)?"<<endl;
			do{
				cin>>f;
			}while (f!='A'&&f!='B');
			switch(f){
			case 'A':
				cout<<"学生总数为:"<<g+p<<endl;
	            break;
            case 'B':
	            st[n].Cout();
	            break;
            default:
				cout<<"输入错误,请重新输入!"<<endl;
			}
			break;
		case 0:
			t=false;
            exit(0);
        default:
			cout<<"输入错误,请重新输入!";
		}//switch语句的结束 
	}    //while语句的结束
}        //主函数的结束

⌨️ 快捷键说明

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