C++课程设计之学生成绩管理系统

成绩管理系统——C++课程设计

1.具体要求及功能

具体要求:
	制作一个系统制作一个系统实现对学生成绩的管理功能,可以对学生信息及成绩信息进行录入、修改、删除等。
基本功能:
		(1)增加、修改、删除一个学生及成绩信息。
        (2)显示学生成绩。
        (3)按条件显示学生资料(条件有学号、姓名等)。
        (4)按条件显示班级最高分数以及对应的学生姓名(条件有课程名)
        (5)计算所有学生的平均成绩。

2.具体实现

1.总体设计

开始
主界面
1.成绩输入
2.显示学生成绩
3.按条件查询
4.增加成绩
5.修改成绩
6.删除成绩
7.成绩排序
8.计算平均值
9.退出程序
1.按学号查找
2.按姓名查找
1.按数学成绩
升序/降序
2.按英文成绩
3.按总成绩成绩

2.详细设计

有了整体设计这一框架,我们逐步进行设计

1.设计界面:

利用 cout 输出一些符号组合成界面,然后利用while循环主界面和switch、case语句进行对功能选择的实现。构成了主函数

int main()
{
    
    
	meau2();
	int num;
	while(num!=9)
	{
    
    

		 cout<<"                                                                 "<<endl;
		 cout<<"               ●●●●●●●●●●●●●●●●●●●●●●●●       "<<endl;
		 cout<<"              $$                                              $$      "<<endl;
		 cout<<"              $$  ******************************************  $$      "<<endl;
		 cout<<"              $$               学生成绩管理系统               $$      "<<endl;
		 cout<<"              $$         ★1 成绩录入                ★       $$      "<<endl;
		 cout<<"              $$         ★2 显示学生成绩信息        ★       $$      "<<endl;
		 cout<<"              $$         ★3 输入您想查找的学生条件  ★       $$      "<<endl;
		 cout<<"              $$         ★4 增加一个学生及成绩信息  ★       $$      "<<endl;
		 cout<<"              $$         ★5 修改一个学生及成绩信息  ★       $$      "<<endl;
		 cout<<"              $$         ★6 删除一个学生及成绩信息  ★       $$      "<<endl;
		 cout<<"              $$         ★7 按条件进行成绩排序      ★       $$      "<<endl;
		 cout<<"              $$         ★8 计算所有学生的平均成绩  ★       $$      "<<endl;
		 cout<<"              $$         ★9 退出系统                ★       $$      "<<endl;
		 cout<<"              $$                                              $$      "<<endl;
		 cout<<"              $$  ******************************************  $$      "<<endl;
		 cout<<"              ●●●●●●●●●●●●●●●●●●●●●●●●       "<<endl;
		 cout<<"            ---------------------------------------------        "<<endl;
		 cout<<"                  友情提示:在开始操作前,请先录入信息,按1进      "<<endl;
		 cout<<"                  行成绩的录入,然后进行操作(*^__^*)(*^__^*)           "<<endl;


		system("color 0A");
		student c;
		cout<<"请输入一个数字进行选择:"<<endl;
		cin>>num;
		switch(num)
		{
    
    
			case 1:system("cls");
				c.Newlist();break;
			case 2:system("cls");
				c.xianshi();break;
			case 3:system("cls");
				c.check();break;
			case 4:system("cls");
				c.zengjia();break;
			case 5:system("cls");
				c.xiugai();break;
			case 6:system("cls");
				c.shanchu();break;
			case 7:system("cls");
				c.paixu();break;
			case 8:system("cls");
				c.pingjun();break;
			case 9:system("cls");
				c.meau1();break;
			default:cout<<"请选择序号:"<<endl;
		}
	}
	return 0;
}
2.定义一个学生类
class student {
    
                       //定义一个学生类//
public:
//student(){}
	student(double i = 0, string n = "#", int a = 0, int b = 0, int c = 0);
	string name;
	int num;
	int zcj;
	int sx;
	int yy;
	void Newlist();
	void xianshi();
	void zengjia();
	void shanchu();
	void xiugai();
	void paixu();
	void pingjun();
	void check();
	void meau1();
//void meau2();
};

然后进行构造函数

student::student(double i, string n, int a, int b, int c)
{
    
    
	num = i;
	name = n;
	zcj = a;
	sx = b;
	yy = c;
}
3.新建学生信息
//**************新建学生成绩信息**************//
void student::Newlist()
{
    
    
	cout << "请输入学生人数";
	cin >> n;
	ofstream outfile("stu.dat", ios::out);  //定义文件流对象,打开磁盘文件"stu.dat"
	if (! outfile)                          //如果打开失败,outfile返回0值
	{
    
    
		cerr << "打开失败" << endl;
		abort();
	}
	for (int i = 0; i < n; i++)
	{
    
    
		cout << "请输入学生学号" << endl;
		cin >> stu[i].num;
		cout << "输入学生姓名" << endl;
		cin >> stu[i].name;
		cout << "输入数学成绩" << endl;
		cin >> stu[i].sx;
		cout << "输入英语成绩" << endl;
		cin >> stu[i].yy;
		stu[i].zcj = stu[i].sx + stu[i].yy;
//cout<<"输入学生总成绩"<<endl;
//cin>>stu[i].zcj;

	}
	outfile.close();  //关闭磁盘文件
	cout << "学生信息已经建立";
}

//*************显示成绩信息*************//
void student::xianshi()
{
    
    
	int i;
	cout << "所有学生的信息为:" << endl;
	cout << "学号   姓名  数学成绩  英语成绩  总成绩 " << endl;
	cout << "--------------------------------------------------------------------" << endl;
//ofstream outfile("stu.dat",ios::out);   //定义文件流对象,打开磁盘文件"stu.dat"
//if(! outfile)                           //如果打开失败,outfile返回0值
//{
    
    
//cerr<<"打开失败"<<endl;
//abort();
//}
	for (i = 0; i < n; i++)
	{
    
    
		cout << stu[i].num << '\t' << ' ' << stu[i].name << '\t' << stu[i].sx << '\t' << stu[i].yy << '\t' << stu[i].zcj << endl;
	}
}

4.增加学生信息
//*************增加成绩信息*****************//
void student::zengjia()
{
    
    
	cout << "请输入学生学号" << endl;
	cin >> stu[n].num;
	cout << "输入学生姓名" << endl;
	cin >> stu[n].name;
	cout << "输入数学成绩" << endl;
	cin >> stu[n].sx;
	cout << "输入英语成绩" << endl;
	cin >> stu[n].yy;
	stu[n].zcj = stu[n].yy + stu[n].sx;
	n++;
}
5.删除学生信息

//****************删除成绩信息******************//
void student::shanchu()
{
    
    
	int a, b, p;
	cout << "请输入要删除学生的学号" << endl;
	cin >> a;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)      //查找学生
		{
    
    
			if (stu[j].num == a)
			{
    
    
				b = 1;
				p = j;
			}
		}

	if (b == 1)
	{
    
    
		for (i = p; i < n; i++)
			stu[i] = stu[i + 1];
		n--;
		cout << "已删除此学生" << endl;
	}
	else cout << "没有此学生" << endl;
}
6.修改学生信息
//****************修改成绩信息******************//
void student::xiugai()
{
    
    
	int a, b, p;
	cout << "请输入要需要修改学生的学号" << endl;
	cin >> a;
	for (int j = 0; j < n; j++)
	{
    
    
		if (stu[j].num == a)
		{
    
    
			b = 1;
			p = j;
		}
	}
	if (b == 1)
	{
    
    
		cout << "请输入新的学生学号" << endl;
		cin >> stu[p].num;
		cout << "输入学生姓名" << endl;
		cin >> stu[p].name;
		cout << "输入数学成绩" << endl;
		cin >> stu[p].sx;
		cout << "输入英语成绩" << endl;
		cin >> stu[p].yy;
		stu[p].zcj = stu[p].yy + stu[p].sx;
		cout << "已修改此学生" << endl;
	}
	else cout << "没有此学生" << endl;
}
7.课程成绩排序
//****************************课程成绩排序***************************//
void student::paixu()
{
    
    
	int c, choice, m, j, k, p;
	student temp;
	cout << "***************请选择成绩统计课程  ***************" << endl;
	cout << "                   ★1 数  学  ★ "                << endl;
	cout << "                   ★2 英  语  ★ "                << endl;
	cout << "                   ★3 总成绩  ★ "                << endl;
	cin >> c;
	switch (c)
	{
    
    
	case 1: cout << "*******************************************" << endl;
		cout << "            ★1 降序排列★ "                << endl;
		cout << "            ★2 升序排列★ "                << endl;  //数学成绩排序
		cin >> choice;
		if (choice == 2)
		{
    
    
			for (m = 0; m < n - 1; m++)                    //选择排序法
			{
    
    
				k = m;
				for (j = m + 1; j < n; j++)
					if (stu[j].sx < stu[k].sx) k = j;
				if (k != m)
				{
    
    
					temp = stu[k];
					stu[k] = stu[m];
					stu[m] = temp;
				}
			}
		}
		else if (choice == 1)
		{
    
    
			for (m = 0; m < n - 1; m++)
			{
    
    
				k = m;
				for (j = m + 1; j < n; j++)
					if (stu[j].sx > stu[k].sx) k = j;
				if (k != m)
				{
    
    
					temp = stu[k];
					stu[k] = stu[m];
					stu[m] = temp;
				}
			}
		}
		cout << "   学生学号     姓名       数学成绩      " << endl;
		for (p = 0; p < n; p++)
			cout << '\t' << stu[p].num << '\t' << stu[p].name << '\t' << '\t' << stu[p].sx << endl;
		break;
		case 2: cout << "*******************************************" << endl;
		cout << "            ★1 降序排列★ "                << endl;
		cout << "            ★2 升序排列★ "                << endl;                 //英语成绩排序
		cin >> choice;
		if (choice == 2)
		{
    
    
			for (m = 0; m < n - 1; m++)
			{
    
    
				k = m;
				for (j = m + 1; j < n; j++)
					if (stu[j].yy < stu[k].yy) k = j;
				if (k != m)
				{
    
    
					temp = stu[k];
					stu[k] = stu[m];
					stu[m] = temp;
				}
			}
		}
		else if (choice == 1)
		{
    
    
			for (m = 0; m < n - 1; m++)
			{
    
    
				k = m;
				for (j = m + 1; j < n; j++)
					if (stu[j].yy > stu[k].yy) k = j;
				if (k != m)
				{
    
    
					temp = stu[k];
					stu[k] = stu[m];
					stu[m] = temp;
				}
			}
		}
		cout << "   学生学号" << '\t' << "姓名" << '\t' << "总成绩" << endl;
		for (p = 0; p < n; p++)
			cout << '\t' << stu[p].num << '\t' << stu[p].name << '\t' << stu[p].yy << endl;
		break;
		case 3: cout << "*******************************************" << endl;
		cout << "            ★1 降序排列★ "                << endl;
		cout << "            ★2 升序排列★ "                << endl;
		//总成绩排序
		cin >> choice;
		if (choice == 2)
		{
    
    
			for (m = 0; m < n - 1; m++)
			{
    
    
				k = m;
				for (j = m + 1; j < n; j++)

					if (stu[j].zcj < stu[k].zcj) k = j;
				if (k != m)
				{
    
    
					temp = stu[k];
					stu[k] = stu[m];
					stu[m] = temp;
				}
			}
		}
		else if (choice == 1)
		{
    
    
			for (m = 0; m < n - 1; m++)
			{
    
    
				k = m;
				for (j = m + 1; j < n; j++)

					if (stu[j].zcj > stu[k].zcj) k = j;
				if (k != m)
				{
    
    
					temp = stu[k];
					stu[k] = stu[m];
					stu[m] = temp;
				}
			}
		}
		cout << "   学生学号" << '\t' << "姓名" << '\t' << "总成绩" << endl;
		for (p = 0; p < n; p++)
			cout << '\t' << stu[p].num << '\t' << stu[p].name << '\t' << stu[p].zcj << endl;
	}
}
8.求平均成绩
//****************求平均成绩******************//
void student::pingjun()
{
    
    
	float sum = 0;
	float ave;
	int i;
	for (i = 0; i < n; i++)
	{
    
    
		sum += stu[i].zcj;
	}
	ave = sum / n;
	cout << "所有学生的平均成绩为:" << ave << endl;
}
9.学生成绩查询
//*****************学生成绩查询********************//
void student::check()
{
    
    
	void Check1();
	void Check2();
	int c;
	cout << "         ◤   ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇    ◥  " << endl;
	cout << "            ☆                                              ☆      " << endl;
	cout << "            ☆    ***********请选择查询方式***********      ☆      " << endl;
	cout << "            ☆      ↓   ↓   ↓   ↓   ↓   ↓   ↓        ☆      " << endl;
	cout << "            ☆     ● 1 按姓名查询                          ☆      " << endl;
	cout << "            ☆     ● 2 按学号查询                          ☆      " << endl;
	cout << "            ☆     ● 3 返回上一级                          ☆      " << endl;
	cout << "            ☆                                              ☆      " << endl;
	cout << "         ◣    ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇   ◢  " << endl;
	cin >> c;
	switch (c)
	{
    
    
	case 1: Check1(); break;
	case 2: Check2(); break;
	case 3: return;
	default: cout << "请选择序号进行操作:" << endl;
	}
}
void Check1()                       //按姓名查找
{
    
    
	int b, p;
	string a;
	cout << "请输入要需要查找学生的姓名" << endl;
	cin >> a;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
		{
    
    
			if (stu[j].name == a)
			{
    
    
				b = 1;
				p = j;
			}
		}
	if (b == 1)
	{
    
    
		cout << "学号, 姓名,   数学, 英语, 总成绩" << endl;
		cout << stu[p].num << '\t' << stu[p].name << '\t' << stu[p].sx << '\t' << stu[p].yy << '\t' << stu[p].zcj << endl;
	}
	else cout << "没有此学生" << endl;
}
void Check2()                        //按学号查找
{
    
    
	int a, b, p;
	cout << "请输入要需要查找学生的学号" << endl;
	cin >> a;
	for (int j = 0; j < n; j++)
	{
    
    
		if (stu[j].num == a)
		{
    
    
			b = 1;
			p = j;
		}
	}
	if (b == 1)
	{
    
    
		cout << "学号,  姓名, 数学,  英语,总成绩" << endl;
		cout << stu[p].num << '\t' << stu[p].name << '\t' << stu[p].sx << '\t' << stu[p].yy << '\t' << stu[p].zcj << endl;
	}
	else cout << "没有此学生" << endl;
}
10.退出界面
void student::meau1()
{
    
    
	cout << endl;
	cout << "      ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽       " << endl;
	cout << "       △                                            △        " << endl;
	cout << "        △                                            △       " << endl;
	cout << "         △            ※ 感谢使用 ※                △        " << endl;
	cout << "          △                  '  :  `               △         " << endl;
	cout << "         △                .-----:                 △          " << endl;
	cout << "        △               .'       `.                △         " << endl;
	cout << "       △         ,      /       (o) `               △        " << endl;
	cout << "      △          \\`._/            ,__)              △       " << endl;
	cout << "       △      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~          △        " << endl;
	cout << "         △                                         △         " << endl;
	cout << "       △△△△△△△△△△△△△△△△△△△△△△△△        " << endl;

}
11.进入界面
void meau2()
{
    
    
	cout << endl;
	cout << endl;
	cout << endl;
	cout << endl;
	cout << endl;
	cout << endl;
	cout << " △▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△ " << endl;
	cout << " ◆                                                                          ◆ " << endl;
	cout << " ◆                                                                          ◆ " << endl;
	cout << " ◆                                                                          ◆ " << endl;
	cout << " ◆                         ★ 欢迎进入成绩管理系统 ★                       ◆ " << endl;
	cout << " ◆                                                                          ◆ " << endl;
	cout << " ◆                                                                          ◆ " << endl;
	cout << " ◆                                                                          ◆ " << endl;
	cout << " △▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△ " << endl;


	srand((unsigned)time(NULL));
	char stu[20] = {
    
    0};
	int m = 0;
	union utype
	{
    
    
		int i;
		char ch;
		float a;
	} temp;
	temp.i = 266;
	printf("%d\n", temp.ch);
	while (m != 10)
	{
    
    
		int a = rand() % 8;
		sprintf(stu, "color 0a%d", a);
		system(stu);
		Sleep(500);
		m++;
	}
}

3.运行结果

1.首先进入主界面,有10s钟的颜色闪光

在这里插入图片描述
2.主界面

在这里插入图片描述
3.按 1 进行成绩录入

在这里插入图片描述
4.按 2 显示录入成绩

在这里插入图片描述
5.按姓名查询成绩

在这里插入图片描述
6.按学号查询成绩

在这里插入图片描述
7. 增加一个成绩信息

在这里插入图片描述

8.删除一个成绩信息

在这里插入图片描述

9.修改一个成绩信息

在这里插入图片描述

10.按数学成绩升序排序

在这里插入图片描述

11.按英语成绩降序排序

在这里插入图片描述

12.计算平均成绩

在这里插入图片描述

13.退出系统

在这里插入图片描述

4.完整源码

完整源码获取点这里 c++课程设计之学生成绩管理系统源码

如果没有积分的小伙伴可私聊我或添加下方我的微信,我发给你

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jiangcheng2016/article/details/108810485