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

📄 scoredatabase.cpp

📁 一个简单的学生管理系统 用c++编写 实现包括填加.删除等基本功能
💻 CPP
字号:
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
#include "ScoreDatabase.h"

ScoreDatabase::ScoreDatabase()                 //构造函数,将score.txt读到score[]中
{
    Score s;
	top=-1;
	fstream file("score.txt",ios::in);
	while(1)
	{
		file.read((char *)&s,sizeof(s));
		if (!file) break;
		top++;
		score[top]=s;
	}
	file.close();
}

void ScoreDatabase::clear()                    //删除所有学生信息
{
	top=-1;
}

int ScoreDatabase::addScore(char *n,char *na,int c,int e,int d,int m,int v)   //添加学生成绩时先查找学生是否存在
{
    Score *p=query(n);
	if(p==NULL)
	{
		top++;
		score[top].addScore(n,na,c,e,d,m,v);
		return 1;
	}
	else
	{
	    cout<<"该学号已存在!请另取学号"<<endl;
	    return 0;
	}
}

Score *ScoreDatabase::query(char *n)                     //按学号查找
{
    for(int i=0;i<=top;i++)
		if(strcmp(n,score[i].Stud::getno())==0 && score[i].gettam()==0)
			return &score[i];
    return NULL;
}

Score *ScoreDatabase::rquery(char *na)                  //按姓名查找
{
	for(int i=0;i<=top;i++)
		if(strcmp(na,score[i].Stud::getname())==0 && score[i].gettam()==0)
			return &score[i];
    return NULL;
}

void ScoreDatabase::disp()                              //输出所有学生成绩信息
{
	cout<<endl;
	cout<<setw(15)<<"****学号"<<setw(10)<<"姓名"<<setw(10)<<"C语言"<<setw(10)<<"英语"<<setw(10)<<"数据库"<<setw(10)<<"多媒体"<<setw(5)<<"VC"<<setw(10)<<"总分";
	for (int i=0;i<=top;i++)
	{
		if(score[i].gettam()==0)
		    score[i].disp();
	}
}

void ScoreDatabase::paixu()                              //按总分排序
{
    Score s;
	for(int i=0;i<=top-1;i++)
		for(int j=0;j<=top-i-1;j++)
			if(score[j].getTotalScore()<score[j+1].getTotalScore())
			{
				s=score[j+1];
                score[j+1]=score[j];
                score[j]=s;
			}
	cout<<"\n 排序成功!"<<endl;
}




void ScoreDatabase::Scoredata()                          //学生成绩库维护
{
	int choice=1;
	int choice1=1;
    int choice2=1;
	char c;
	char rno[10];
	char rname[20];
	int rCScore;
    int rEnglishScore;
	int rDatabaseScore;
	int rMediaScore;
	int rVcScore;
	Score *r;
	while(choice!=0)                     //选择需要的操作
	{
		cout<<"\n学生成绩管理系统  1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 7:排序 0:退出 =>";
		cin>>choice;
		switch (choice)
		{
		case 1:
			cout<<"  输入学生学号:";
			cin>>rno;
			cout<<"  输入学生姓名:";
			cin>>rname;
			cout<<" 输入C语言成绩:";
			cin>>rCScore;
			cout<<"  输入英语成绩:";
			cin>>rEnglishScore;
			cout<<"输入数据库成绩:";
			cin>>rDatabaseScore;
			cout<<"输入多媒体成绩:";
            cin>>rMediaScore;
            cout<<"    输入VC成绩:";
            cin>>rVcScore;
			addScore(rno,rname,rCScore,rEnglishScore,rDatabaseScore,rMediaScore,rVcScore);
			break;
		case 2:
            cout << "  输入学生学号:";
			cin >> rno;
			r=query(rno);
			if (r==NULL)
			{
				cout << "  该学生不存在" << endl;
				break;
			}
            while(choice1!=0)               //选择要更改的内容
			{
			    cout<<"想更改的内容:1:C语言成绩 2:英语成绩 3:数据库成绩 4:多媒体成绩 5:VC成绩 0:退出 =>";
			    cin>>choice1;
				switch(choice1)
				{
				case 1:
                    cout << "  输入新的C语言成绩:";
			        cin >> rCScore;
			        r->changeCScore(rCScore);
			        break;
				case 2:
                    cout << "  输入新的英语成绩:";
			        cin >> rEnglishScore;
			        r->changeEnglishScore(rEnglishScore);
			        break;
                case 3:
                    cout << "  输入新的数据库成绩:";
			        cin >> rDatabaseScore;
			        r->changeDatabaseScore(rDatabaseScore);
			        break;
                case 4:
                    cout << "  输入新的多媒体成绩:";
			        cin >> rMediaScore;
			        r->changeMediaScore(rMediaScore);
			        break;
                case 5:
                    cout << "  输入新的VC成绩:";
			        cin >> rVcScore;
			        r->changeVcScore(rVcScore);
			        break;
				}
			}
			break;
		case 3:
			cout << "  输入学生学号:";
			cin >>rno;
			r=query(rno);
			if (r==NULL)
			{
				cout << "  该学生不存在" << endl;
				break;
			}
			cout<<"是否真的删除? y/n   ";
			cin>>c;
			if(c=='y')
			{
			    r->delScore();
				cout<<"\n"<<setw(10)<<"删除成功!"<<endl;
				break;
			}
			else
				break;
		case 4:
            cout<<"1:按学号查找  2:按姓名查找 =>";
			cin>>choice2;
            switch (choice2)
			{
			case 1:
			    cout << "\n  输入学生学号:";
			    cin >> rno;
			    r=query(rno);
				break;
			case 2:
				cout<< "\n   输入学生姓名:";
				cin >> rname;
				r=rquery(rname);
				break;
			}
			if (r==NULL)
			{
				cout << "  该学生不存在" << endl;
				break;
			}
			r->disp();
			break;
		case 5:
			disp();
			break;
		case 6:
            cout<<"是否真的全部删除? y/n   ";
			cin>>c;
			if(c=='y')
			{
			    clear();
				cout<<"\n"<<setw(10)<<"删除成功!"<<endl;
				break;
			}
			else
				break;
		case 7:
			paixu();
			break;
		}
	}
}

ScoreDatabase::~ScoreDatabase()                         //析构函数,将score[]写入score.txt文件中       
{
    fstream file("score.txt",ios::out);
	for(int i=0;i<=top;i++)
		if(score[i].gettam()==0)
			file.write((char *)&score[i],sizeof(score[i]));
    file.close();
}

⌨️ 快捷键说明

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