C++之学生成绩信息管理系统

本文介绍了使用C++编程实现的一个学生成绩信息管理系统,包括数据录入、删除、浏览和查询等功能。系统涉及管理员和老师两个角色,管理员可管理老师信息,老师负责学生成绩。系统设计了控制台界面,实现了动态添加、删除、修改和查询学生信息,以及文件保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

为了加深对自己所学到的C++相关知识的理解,熟悉C++程序设计语言编程以及调试的基本技能,锻炼自己利用C++语言程序设计进行简单软件设计的基本思路和方法,提高运用高级语言解决实际问题的能力。我用C++做了一个学生成绩信息管理系统,下面介绍它所实现的功能以及具体的代码。


一、系统设计介绍

主要实现功能:数据录入、数据删除、数据浏览、数据查询等。

1.界面

本次界面直接在控制台窗口中显示(即黑框框显示),主要涉及到三个操作

  1. 显示信息
  2. 清屏
  3. 退出系统

2.角色及功能

成绩管理系统中涉及到两个角色:管理员老师

  1. 管理员
    登录
    添加老师
    删除老师
    查询老师
  2. 教师
    登录
    学生成绩录入
    浏览学生成绩
    查询具体学生成绩
    修改学生成绩
    删除学生成绩
    学生成绩持久化存储----采用文件保存

3.系统设计要求

  1. 学生人数事先无法确定(动态增长)。
  2. 功能:学生成绩录入,查询,修改,删除,保存文件(增、删、查、改)。
  3. 界面:系统使用文字菜单,用户通过选择菜单项的编号,实现系统对子模块的调用(switch语句)。
  4. 学号:学号是一个9位整数构成的字符串, 学号的编码规则:入学年份+在读年级+在读班级+班内编号;入学年份用4位整数构成字符串,如2015年入学则表示为:”2015”;在读年级用1位整数构成字符串,如正在1年级读书则表示为:”1”;在读班级用2位整数构成字符串,如正在1班读书则表示为:”01”;班内编号用2位整数构成字符串,如在班内编号为23号则表示为:”23”)。
  5. 课程:语文,英语,数学,物理,化学,生物。
  6. 成绩总表结构:学号—姓名—课程名—平时成绩—期末成绩—总评成绩
    要求:总评成绩由程序自动计算,总评成绩=平时成绩×30%+期末成绩×70%。
  7. 文件的保存格式及内容:根据班级号以及课程名从学生的成绩总表中提取出子表并存储成一个文本文件。该文本文件名由班级号
    和课程名拼音字符串构成。
    要求:输入班级号和课程名字符串后自动生成文件名。如1班,语文,则文件名为:c1yuwen.txt。

4.集成开发环境

vs2013

二、声明

所包含的头文件以及定义的宏

#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<cstdlib>
#include<sstream>
#include<fstream>
using namespace std;
#define PASSWARD "1"

1.学生类

创建一个学生类用于存放学生的相关信息

//学生的信息
class student {
public:
	student( string name = "张三", string lesson = "1", const string id = "111111111")
		:_name(name)
		, _lesson(lesson)
		, _id(id)
	{}
	void stuscore(const string crouse, const vector<float>& score)
	{
		_stuscore[crouse] = score;
	}
	string _name;
	string _id;//学号
	string _lesson;//班级号(方便用于文件存储)
	//map<课程名,成绩> _stuscore;
	map<string, vector<float>> _stuscore;//存储学生的课程以及它对应的成绩
};

2.老师类

用创建老师类对学生信息进行管理

class Teacher {
public:

	Teacher(const string name = "张三", const string passward = "111")
		: _name(name)
		, _passward(passward)
	{}
	void AddGrade();//增
	void LookGrade();//浏览学生成绩
	void FindStudentGrade();//查
	void ModifyStudentGrade();//改
	void DeleteGrede();//删
	void Save();//保存至文件
	string _name;//姓名
	string _passward ;//密码
	//map<学生ID,学生信息> _stuinfo;
	map<string, student> _stuinfo;//学生信息
};

3.管理员类

创建管理员类,对老师信息进行管理。

class Admini {
public:
	Admini(string name = "张三")
		:_name(name)
	{
		_passward = PASSWARD;
	}
	void AddTeacher();//添加老师
	void DelTeacher();//删除老师
	void LookTeacher();//浏览老师信息成绩
	void FindTeacher();//查找老师信息
	string _name;
	string _passward;
	Teacher _teach;//创建一个默认的老师对象方便对学生信息进行操作
	//vector<pair<老师姓名,老师密码>> teachinfo;
	map<string, string> _teachinfo;//老师信息
};

4.界面菜单

void Menu();//主界面
void AdmMenu();//管理员的操作界面
void TeachMenu();//老师的操作界面

三、管理员类中声明的成员函数的实现

1.添加老师信息

void Admini::AddTeacher()
{
	string name, passward;
	cout << "请输入老师姓名:>" << endl;
	cin >> name;
	cout << "请输入老师密码:>" << endl;
	cin >> passward;
	_teachinfo[name] = passward;
	cout << "添加成功" << endl;
	system("pause");
	system("cls");
}

2.删除老师信息

void Admini::DelTeacher()
{
	cout << "请输入要删除的老师姓名:>" << endl;
	string name;
	cin >> name;
	if (_teachinfo.find(name) == _teachinfo.end())
	{
		cout << "查无此人" << endl;
	}
	else
	{
		_teachinfo.erase(name);
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}

3.浏览老师信息

void Admini::LookTeacher()
{
	if (_teachinfo.size())
	{
		cout << "------老师信息------" << endl;
		cout << "老师姓名  老师密码" << endl;
		for (auto e : _teachinfo)
		{
			cout << "  " << e.first << "      " << e.second << endl;
			cout << "--------------------" << endl;
		}
	}
	else
	{
		cout << "暂无人员信息" << endl;
	}
	system("pause");
	system("cls");
}

4.查找老师信息

void Admini::FindTeacher()
{
	cout << "请输入要查找的老师姓名" << endl;
	string name;
	cin >> name;
	if (_teachinfo.find(name) != _teachinfo.end())
	{
		cout << "------老师信息------" << endl;
		cout << "老师姓名  老师密码" << endl;
		cout << "  " << name << "      " << _teachinfo[name] << endl;
		cout << "--------------------" << endl;
	}
	else
	{
		cout << "查无此人" << endl;
	}
	system("pause");
	system("cls");
}

四、老师类中声明的成员函数的实现

1.添加学生成绩信息

//增
void Teacher::AddGrade()
{
	//创建一个学生
	string name;
	cout << "请输入学生姓名:>" << endl;
	cin >> name;
	int  year, grade,lesson, id;
	cout << "请输入学生入学年份(4位数):>" << endl;
	cin >> year;
	while (year > 10000 || year < 1000)
	{
		cout << "年份输入错误,请重新输入:" << endl;
		cin >> year;
		break;
	}
	cout << "请输入学生年级(1位数):>" << endl;
	cin >> grade;
	while (grade > 10)
	{
		cout << "年级输入错误,请重新输入:" << endl;
		cin >> grade;
		break;
	}
	cout << "请输入学生班级(2位数):>" << endl;
	cin >> lesson;
	while (lesson > 100)
	{
		cout << "班级输入错误,请重新输入:" << endl;
		cin >> lesson;
		break;
	}
	cout << "请输入学生在班级的编号(2位):>" << endl;
	cin >> id;
	while (id > 100)
	{
		cout << "学生在班级的编号输入错误,请重新输入:" << endl;
		cin >> id;
		break;
	}
	string ID;
	ID += to_string(year);
	ID += to_string(grade);
	if (lesson < 10)//如果不足2位就给它补0
	{
		ID += '0';
	}
	ID += to_string(lesson);
	if (id < 10)
	{
		ID += '0';
	}
	ID += to_string(id);
	student stu(name, to_string(lesson), ID);
	//每个学生学习的课程有语文,英语,数学,物理,化学,生物。
	vector<string> crouse{"语文", "英语", "数学", "物理", "化学", "生物"};
	cout << "请输入学生成绩信息" << endl;
	for (auto it : crouse)
	{
		cout << "请输入" << it << "的成绩"<<endl;
		vector<float> score(3);
		cout << "平时成绩:>";
		cin >> score[0];
		while (score[0] > 100)
		{
			cout << "成绩输入有误,请重新输入!" << endl;
			cout << "平时成绩:>";
			cin >> score[0];
		}
		cout << "期末成绩:>" ;
		cin >> score[1];
		while (score[1] > 100)
		{
			cout << "成绩输入有误,请重新输入!" << endl;
			cout << "期末成绩:>";
			cin >> score[1];
		}
		score[2] = score[0] * 3 / 10 + score[1] * 7 / 10;//总成绩
		stu.stuscore(it, score);
	}
	_stuinfo[ID] = stu;
	cout << "添加成功" << endl;
	system("pause");
	system("cls");
}

2.浏览学生成绩信息

void Teacher::LookGrade()
{
	if (_stuinfo.size())
	{
		cout << "-------------------------成绩总表-------------------------" << endl;
		cout << "   " << "学号" << "    " << "姓名" << "  " << "课程名" << "     " << "平时成绩" << "         " << "期末成绩" << "        " << "总评成绩" << endl;
		//成绩总表结构约定为(学号,姓名,课程名,平时成绩,期末成绩,总评成绩)
		string pre;
		for (auto it : _stuinfo)
		{
			for (auto e : it.second._stuscore)
			{
				if (pre != it.first)
				{
					cout << it.first << "  " << _stuinfo[it.first]._name << "  ";
					pre = it.first;
				}
				else
				{
					cout << "                 ";
				}
				cout << e.first << "      ";
				printf("%f        %f        %f\n", e.second[0], e.second[1], e.second[2]);
				cout << "----------------------------------------------------------" << endl;
			}
		}
	}
	else
	{
		cout << "暂无人员信息" << endl;
	}
	system("pause");
	system("cls");
}

3.查找具体学生成绩(ID)

//查
void Teacher::FindStudentGrade()
{
	cout << "请输入要查询的学生ID" << endl;
	string ID;
	cin >> ID;
	if (_stuinfo.find(ID) == _stuinfo.end())
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "查询成功" << endl;
		cout << "-------------------------学生信息-------------------------" << endl;
		cout << "   " << "学号" << "    " << "姓名" << "  " << "课程名" << "  " << "平时成绩" << "  " << "期末成绩" << "  " << "总评成绩" << endl;
		//for (auto e : _stuinfo[ID]._stuscore)
		//{
		//	cout << ID << "  " << _stuinfo[ID]._name << "  " << e.first << "      " << e.second[0] << "        " << e.second[1] << "        " << e.second[2] << endl;
		//	cout << "----------------------------------------------------------" << endl;
		//}
		string pre;
		for (auto e : _stuinfo[ID]._stuscore)
		{
			if (pre != ID)
			{
				cout << ID << "  " << _stuinfo[ID]._name << "  ";
				pre = ID;
			}
			else
			{
				cout << "                 ";
			}
			cout << e.first << "      ";
			printf("%f        %f        %f\n", e.second[0], e.second[1], e.second[2]);
			cout << "----------------------------------------------------------" << endl;
		}
	}
	system("pause");
	system("cls");
}

4.删除具体学生信息(ID)

//删
void _DeleteGrede(map<string, student>& _stuinfo, string ID)
{
	_stuinfo.erase(_stuinfo.find(ID));
}
void Teacher::DeleteGrede()
{
	cout << "请输入要删除的学生ID" << endl;
	string ID;
	cin >> ID;
	if (_stuinfo.find(ID) == _stuinfo.end())
	{
		cout << "查无此人" << endl;
	}
	else
	{
		_DeleteGrede(_stuinfo, ID);
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}

5.修改具体学生信息(ID)

//改
void Teacher::ModifyStudentGrade()
{
	cout << "请输入要修改的学生ID" << endl;
	string ID;
	cin >> ID;
	if (_stuinfo.find(ID) == _stuinfo.end())
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "该学生信息如下:";
		cout << "---------------------------学生信息---------------------------" << endl;
		cout << "   " << "学号" << "    " << "姓名" << "  " << "课程名" << "  " << "平时成绩" << "  " << "期末成绩" << "  " << "总评成绩" << endl;
		string pre;
		for (auto e : _stuinfo[ID]._stuscore)
		{
			if (pre != ID)
			{
				cout << ID << "  " << _stuinfo[ID]._name << "  ";
				pre = ID;
			}
			else
			{
				cout << "                 ";
			}
			cout << e.first << "      ";
			printf("%f        %f        %f\n", e.second[0], e.second[1], e.second[2]);
			cout << "--------------------------------------------------------------" << endl;
		}
		cout << "是否需要修改?(1.修改/0.不修改)";
		int n = 0;
		cin >> n;
		if (n)
		{
			_DeleteGrede(_stuinfo, ID);//删除学生信息
			cout << "请重新输入学生信息" << endl;
			AddGrade();//新增学生信息
			cout << "修改成功" << endl;
		}
	}
	system("pause");
	system("cls");
}

6.文件保存

struct ConfigManager
{
public:
	ConfigManager(const char* filename)
		:_filename(filename)
	{}
	void WriteText(const map<string, student>& info, const string& crou,const string& less)
	{
		ofstream ofs(_filename);
		ofs << "-------------------------学生信息-------------------------" << endl;
		ofs << "   " << "学号" << "    " << "姓名" << "  " << "课程名" << "  " << "平时成绩" << "  " << "期末成绩" << "  " << "总评成绩" << endl;
		ofs << "----------------------------------------------------------" << endl;
		for (auto it : info)
		{
			if (it.second._lesson == less)
			{
				string pre;
				for (auto e : it.second._stuscore)
				{
					if (e.first == crou)
					{
						if (pre != it.second._name)
						{
							ofs << it.second._id << "  " << it.second._name << "  ";
							pre = it.second._name;
						}
						else
						{
							ofs << "                 ";
						}
						ofs << e.first << "      " << e.second[0] << "        " << e.second[1] << "        " << e.second[2] << endl;
						ofs << "----------------------------------------------------------" << endl;
					}
				}
			}
		}
	}
private:
	string _filename; // 配置文件
};
//保存至文件
void Teacher::Save()
{
	//每个班级每门课程的成绩可以从学生的成绩总表提取出子表并存储成一个文本文件。该文本文件名由班级号
	//和课程名拼音字符串构成。输入班级号和课程名字符串后自动生成文件名。如1班,语文,则文件名为:c1yuwen.txt。
	string filename;
	string less, crou;//班级号,课程名
	cout << "请输入班级号:>";
	cin >> less;
	filename += 'c';
	filename += less;
	int flag = 1;
	while (flag)
	{
		flag = 0;
		cout << "请输入课程名:>";
		cin >> crou;
		if (crou == "语文")
		{
			filename += "yuwen";
		}
		else if (crou == "数学")
		{
			filename += "shuxue";
		}
		else if (crou == "英语")
		{
			filename += "yingyu";
		}
		else if (crou == "物理")
		{
			filename += "wuli";
		}
		else if (crou == "化学")
		{
			filename += "huaxue";
		}
		else if (crou == "生物")
		{
			filename += "shengwu";
		}
		else
		{
			cout << "输入课程名错误,请重新输入!" << endl;
			flag = 1;
		}
	}
	filename += ".txt";
	ConfigManager file(filename.c_str());
	file.WriteText(_stuinfo, crou,less);
	cout << "保存成功" << endl;
	system("pause");
	system("cls");
}

五、界面菜单声明的函数的实现

1.主界面

void Menu() {
	cout << "***********************************************" << endl;
	cout << "*********  欢迎来到学生成绩管理系统!  *********" << endl;
	cout << "*********         请选择您的身份      *********" << endl;
	cout << "*********	   1.管理员           *********" << endl;
	cout << "*********	   2.老师             *********" << endl;
	cout << "*********	   0.退出系统         *********" << endl;
	cout << "***********************************************" << endl;
}

2.管理员

void AdmMenu(){
	cout << "*********************************" << endl;
	cout << "*********  1、添加老师  *********" << endl;
	cout << "*********  2、浏览老师  *********" << endl;
	cout << "*********  3、查询老师  *********" << endl;
	cout << "*********  4、删除老师  *********" << endl;
	cout << "*********  0、退出系统  *********" << endl;
	cout << "*********************************" << endl;
}

3.老师

void TeachMenu() {
	cout << "*************************************" << endl;
	cout << "*********  1、学生成绩录入  *********" << endl;
	cout << "*********  2、浏览学生成绩  *********" << endl;
	cout << "*********  3、查询学生成绩  *********" << endl;
	cout << "*********  4、删除学生成绩  *********" << endl;
	cout << "*********  5、修改学生成绩  *********" << endl;
	cout << "*********  6、保存学生数据  *********" << endl;
	cout << "*********  0、退出系统      *********" << endl;
	cout << "*************************************" << endl;
}

六、主函数

enum  oper//操作的枚举
{
	ADD = 1,
	LOOK,
	FIND,
	DELETE,
	MODIFY,
	SAVE,
};
int main()
{
	while (1)
	{
		Menu();
		int n = 0;
		cin >> n;
		system("cls");
		if (n == 1)//管理员
		{
			cout << "**********************管理员**********************" << endl;
			cout << "管理员您好,请输入您的姓名:>" << endl;
			string name,id;
			cin >> name;
			cout << "请输入您的密码:>" << endl;
			cin >> id;
			system("cls");
			if (id != PASSWARD)
			{
				cout << "**********************管理员**********************" << endl;
				cout << "密码有误,请重新登录!" << endl;
			}
			else
			{
				Admini adm(name);
				int input = 1;
				while (input)
				{
					cout << "**********************管理员**********************" << endl;
					AdmMenu();
					cout << "请选择您要进行的操作:>" << endl;
					cin >> input;
					system("cls");
					cout << "**********************管理员**********************" << endl;
					switch (input)
					{
					case ADD:
						adm.AddTeacher();
						break;
					case LOOK:
						adm.LookTeacher();
						break;
					case FIND:
						adm.FindTeacher();
						break;
					case DELETE:
						adm.DelTeacher();
						break;
					case 0:
						break;
					default:
						cout << "非法输入!" << endl;
						break;
					}
				}
			}
		}
		else if (n == 2)//老师
		{
			cout << "**********************老师**********************" << endl;
			cout << "老师您好,请输入您的姓名:>" << endl;
			string name, id;
			cin >> name;
			cout << "请输入您的密码:>" << endl;
			cin >> id;
			system("cls");
			if (id != PASSWARD)
			{
				cout << "**********************老师**********************" << endl;
				cout << "密码有误,请重新登录!" << endl;
			}
			else
			{
				Teacher tch(name,id);
				int input = 1;
				while (input)
				{
					cout << "**********************老师**********************" << endl;
					TeachMenu();
					cout << "请选择您要进行的操作:>" << endl;
					cin >> input;
					system("cls");
					cout << "**********************老师**********************" << endl;
					switch (input)
					{
					case ADD:
						tch.AddGrade();
						break;
					case LOOK:
						tch.LookGrade();
						break;
					case FIND:
						tch.FindStudentGrade();
						break;
					case DELETE:
						tch.DeleteGrede();
						break;
					case MODIFY:
						tch.ModifyStudentGrade();
						break;
					case SAVE:
						tch.Save();
						break;
					case 0:
						break;
					default:
						cout << "非法输入!" << endl;
						break;
					}
				}
			}
		}
		else if(n == 0)//退出系统
		{
			break;
		}
		else
		{
			cout << "非法输入!" << endl;
		}
		system("cls");
	}
	return 0;
}


总结

以上就是今天要讲的内容,本文主要介绍了用C++实现的一个学生成绩信息管理系统,主要介绍它所实现功能以及具体实现的代码,大家可以根据代码自行此时。本文作者目前也是正在学习C++相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。
最后,如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

相当不错的一个成绩管理系统 #include #include #include #include using namespace std; enum {SUBJECT=5};//一共五门 typedef struct { char subject[10];//科目名称 int score;//科目成绩 }markinfo; typedef struct studentnode { markinfo mark[SUBJECT]; int totalmark; char name[10];//学生姓名 studentnode * next; }studentnode; class student { studentnode * head; public: student(); int addstudent(); ~student(); int countmark(); int sortbymark(); int save(); int show(); int display(); int readfiletolist(); int searchbyname(); }; student::student() //用构造函数来初始化。 { head=new studentnode; head->next=NULL; } //1.输入学生姓名、成绩等数据,并保存在链表中。 int student::addstudent() { studentnode * p; int i; char check; system("cls"); cout<<"**********************"<<endl; cout<<"请输入学生信息:"<<endl; do { p=new studentnode; cin.ignore(); cout<name); i=0; p->totalmark=0; do { cout<mark[i].subject); cout<>p->mark[i].score; } while(p->mark[i].score>100||p->mark[i].scoretotalmark=p->totalmark+p->mark[i].score; getchar(); } while(++i!=SUBJECT); if(head->next==NULL) { head->next=p;p->next=NULL; } else { p->next=head->next; head->next=p; } cout<next; if(p==NULL) { cout<<"没有学生,请重新输入"<<endl;system("pause");return 0; } else { cout<<"***************"<<endl; cout<<"学生成绩汇总:"<<endl; while(p) { cout<<"姓名:"<name<<" 总成绩:"<totalmark<next; } } system("pause"); return 0; } //4.输出所有学生成绩到一个文件中。 int student::save() { char address[35]; int i; studentnode * p=head->next; cout<<"请输入保存的地址"<<endl; cin.ignore(); gets(address); ofstream fout; fout.open(address,ios::app|ios::out); while(p) { fout<<"*"; fout<name<<"*"; i=0; while(i!=SUBJECT) { fout<mark[i].subject<<"*"; fout<mark[i].score; i++; } //fout<next; } fout.flush(); fout.close(); cout<next; while(p) { s=p->next; delete p; p=s; } delete head; } //3.按照总成绩大小对记录进行排序 int student::sortbymark() { studentnode *move1=head->next; studentnode *move2,*max,*pre1,*pre2,*maxpre,*s=move1; if(head->next==NULL) { cout<<"没有记录,请添加"<next!=NULL;pre1=move1,maxpre=pre1,move1=move1->next,max=move1) { for(pre2=move1,move2=move1->next;move2!=NULL;pre2=move2,move2=move2->next) if(move2->totalmark>max->totalmark) { maxpre=pre2; max=move2; } if(move1->next==max) //交换max和move1。 { pre1->next=max; move1->next=max->next; max->next=move1; move1=max; } else { s=move1->next; move1->next=max->next; max->next=s; maxpre->next=move1; pre1->next=max; move1=max; } } cout<<"已经按照从大到小排序"<next; int i; if(head->next==NULL){cout<<"没有学生记录,请添加"<<endl;system("pause"); return 0;} else { while(p) { cout<<"姓名:"<name; i=1; while(i!=SUBJECT+1) { cout<<"科目:"<mark[i-1].subject; cout<<" 成绩:"<mark[i-1].score; i++; } cout<next; } } system("pause"); return 0; } //6:从文件按读取记录 int student::display() { ifstream fin; char buf[100]; char str[25]; cout<<"请输入路径及文件名:"<<endl; cin.ignore(); gets(str); fin.open(str); if(!fin) { cout<<"没有此文件"<<endl; system("pause"); return 0; } while(fin) { fin.getline(buf,sizeof(buf)); cout<<buf<<endl; } system("pause"); return 0; } //8从文件中读取数据,并将数据保存在链表中 int student::readfiletolist() { ifstream fin; int i; char str[25]; cout<<"请输入路径及文件名:"<<endl; cin.ignore(); gets(str); fin.open(str); if(!fin) { cout<<"没有此文件"<totalmark=0; fin.getline(p->name,100,'*'); i=0; while(i!=SUBJECT) { fin.getline(p->mark[i].subject,100,'*'); fin>>p->mark[i].score; p->totalmark+=p->mark[i].score; i++; } if(head->next==NULL) { head->next=p; p->next=NULL; } else { p=head->next; head->next=p; } } cout<<"信息已经保存在链表中"<next==NULL) { cout<<"没有学生,请添加或者从文件中读取"<next; char findname[10]; int i; cout<name,findname)) { cout<<"经查找,找到该生信息如下:"<<endl<<endl; cout<<"姓名:"<name; i=1; while(i!=SUBJECT+1) { cout<<"科目:"<mark[i-1].subject; cout<<" 成绩:"<mark[i-1].score; i++; } cout<next; } cout<<"没有此学生,请添加或者从文件中读取"<<endl; system("pause"); return 0; } int showmenu() { int choice; char * menu[9]={ "1:输入学生成绩保存到链表\n", "2:计算每位学生成绩\n", "3:按照总成绩大小对记录进行排序\n", "4:输出所有学生成绩到一个文件中\n", "5:显示新输入的学生信息\n", "6:从文件中读取信息\n", "7:将文件信息保存在链表中\n", "8:根据姓名查找学生记录\n", "9:结束程序\n" }; cout<<" "<<"*****************************************************"<<endl; cout<<" *"<<" "<<"学生成绩管理系统"<<" *"<<endl; cout<<" "<<"*****************************************************"<<endl; for(choice=0;choice<9;choice++) cout<<" "<<menu[choice]; cout<<" "<<"*****************************************************"<<endl; cout<<"please choose to continue"<>choice; } while(choice>9||choice<1); return choice; } int main() { int menuitem,flag=1; student stu; while(flag) { system("cls"); menuitem=showmenu(); switch(menuitem) { case 1:{stu.addstudent();break;} case 2:{stu.countmark();break;} case 3:{stu.sortbymark();break;} case 4:{stu.save();break;} case 5:{stu.show();break;} case 6:{stu.display();break;} case 7:{stu.readfiletolist();break;} case 8:{stu.searchbyname();break;} case 9:{flag=0;break;} } } return 0; }
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codeJinger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值