(一)过程

首先建立一个项目,再根据需求创建一个学生类,包括:

评分程序python 评分程序设计_开发语言

接着进行程序编写

(1)学生类

静态属性:姓名、各科成绩、总成绩、成绩等级

成员函数:为了实现对数据成员的擦欧总,需要一组体术数据成员值的成员函数,除此外还有初始化函数、展示函数、修改函数等等。

class Score
{
	char *name;
	double per_score[4];
	double total_score;
	char rate;

public:
	Score();
	Score(char *na, double *per);
	double Gettotal();
	char* GetName();
	void Modify();
	char GetRate();
	void Display();
	void Input();
};

 (2)类体的实现

类体的实现程序存为与头文件相同的文件Score.cpp,在该文件中进行各函数的编写,包括初始化、展示函数、修改函数等等。

(3)主函数

在主函数中,编写一个菜单函数,并定义一个全局变量N,用以记录Student的个数,首先定义一组学生类,然后用do while循环展示菜单、接收用户选择,直至用户选择退出信息管理系统,则do while 循环结束,此外,还编写了输出对象数组元素、按姓名查询、输入对象数组元素等函数,组成main函数中中根据用户选择进行switch case的部分。

遇到的问题

(1)关于严重性代码说明项目文件

在调试过程中,出现了使用strcpy函数不安全,可能会发生缓冲区溢出的报错。

解决方法:更改项目属性(将 SDL 检查 选择为 否),或者在main函数前加上 #pragma warning(disable:4996) 这一语句(可以关掉关于函数不安全的警告)

采用第一种方法。

(二)代码

三个文件代码:

(1)Score.h:

#include<iostream>
using namespace std;

class Score
{
	char *name;
	double per_score[4];
	double total_score;
	char rate;

public:
	Score();
	Score(char *na, double *per);
	double Gettotal();
	char* GetName();
	void Modify();
	char GetRate();
	void Display();
	void Input();
};

(2)Score.cpp:

#include "score.h"
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

Score::Score()
{
	name = NULL;
	rate = 'B';
	total_score = 0;
}

Score::Score(char * na, double * per)
{
	if (na)
	{
		name = new char[strlen(na) + 1];        
		strcpy(name, na);
	}
	//per_score = new double[4];
	for (int i = 0; i < 4; i++)
	{
		per_score[i] = 0;
	}
}

char * Score::GetName()
{
	return name;
}

double Score::Gettotal()
{
	double x1 = ((per_score[0] + per_score[1]) / 20) * 100 * 0.25;   //两次随堂测试成绩
	double x2 = (per_score[2] / 100) * 100 * 0.25;          //期中考
	double x3 = (per_score[3] / 100) * 100 * 0.5;           //期末考
	total_score = x1 + x2 + x3;
	return x1 + x2 + x3;
}

void Score::Modify()
{
	int choice;
	cout << "你要修改哪门成绩?(1-随堂测试1,2-随堂测试2,3-期中考试,4-期末考试):";
	cin >> choice;
	double x;
	cout << "你要将其改为?:";
	cin >> x;
	if (choice == 1)
		per_score[0] = x;
	else if (choice == 2)
		per_score[1] = x;
	else if (choice == 3)
		per_score[2] = x;
	else
		per_score[3] = x;

}

char Score::GetRate()
{
	if (total_score >= 90)
		return 'A';
	else if (total_score >= 80)
		return 'B';
	else if (total_score >= 70)
		return 'C';
	else if (total_score >= 60)
		return 'D';
	else
		return 'E';
}

void Score::Display()            //输出数据
{
	cout << "姓名: " << name << endl;
	cout << "各科成绩:" << "随堂成绩1——" << per_score[0] << endl;
	cout << "\t随堂测试2——" << per_score[1] << endl;
	cout << "\t期中考试——" << per_score[2] << endl;
	cout << "\t期末考试——" << per_score[3] << endl;
	cout << "总成绩:" << Gettotal() << endl;
	cout << "该学生成绩等级为:" << GetRate() << endl;
}

void Score::Input()        //输入数据
{
	char na[10];
	cout << "请输入姓名:";
	cin >> na;
	if (name)
		delete[]name;
	name = new char[strlen(na) + 1];
	strcpy(name, na);
	char per[4];
	cout << "请输入该学生第一次随堂测试成绩:";
	cin >> per_score[0];
	cout << "请输入该学生第二次随堂测试成绩:";
	cin >> per_score[1];
	cout << "请输入该学生期中考试成绩:";
	cin >> per_score[2];
	cout << "请输入该学生期末考试成绩:";
	cin >> per_score[3];
}

(3)main(score).cpp:

#include "score.h"
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#pragma warning(disable:4996)


int N = 0;
void menu();
void Output(Score *array);
void Input(Score *array);
void Modify(Score *array);

int main()
{
	Score Array[5];
	int choice;
	do
	{
		menu();          //展示菜单
		cout << "请输入你的选择:";
		cin >> choice;
		if (choice >= 1 && choice <= 4)
		{
			switch (choice)
			{
			case 1:
				Input(Array);
				break;
			case 2:
				Output(Array);
				break;
			case 3:
				Modify(Array); 
				break;
			default:break;
			}
		}
	} while (choice != 4);

}

void menu()
{
	cout << "________________________________________________________" << endl;
	cout << "|\t\t1、录入该学生成绩\t\t\t|" << endl;
	cout << "|\t\t2、查看该学生成绩\t\t\t|" << endl;
	cout << "|\t\t3、修改该学生成绩\t\t\t|" << endl;
	cout << "|\t\t4、退出\t\t\t\t\t|" << endl;
	cout << "________________________________________________________" << endl;
}

void Output(Score * array)
{
	cout << "学生总人数 = " << N << endl;
	for (int i = 0; i < N; i++)
	{
		array[i].Display();
		cout << endl;
	}
}

void Input(Score * array)
{
	char ch;
	do
	{
		array[N].Input();
		N ++;
		cout << "继续输入吗?(Y or N ):";
		cin >> ch;
	} while (ch == 'Y');
}

void Modify(Score * array)
{
	int choice;
	char ch;
	do
	{
		cout << "你要修改第几个学生的成绩?:";
		cin >> choice;
		array[choice-1].Modify();
		cout << "还要修改吗?(Y or N ):";
		cin >> ch;
	} while (ch == 'Y');
}

(三)运行结果

评分程序python 评分程序设计_开发语言_02

评分程序python 评分程序设计_评分程序python_03

  

评分程序python 评分程序设计_开发语言_04

 

评分程序python 评分程序设计_开发语言_05