简单评分程序(面向对象程序设计及C++)

编程入门 行业动态 更新时间:2024-10-10 05:26:53

简单评分程序(面向对象<a href=https://www.elefans.com/category/jswz/34/1771020.html style=程序设计及C++)"/>

简单评分程序(面向对象程序设计及C++)

(一)过程

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

接着进行程序编写

(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;elseper_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';elsereturn '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');
}

(三)运行结果

 

 

 

 

更多推荐

简单评分程序(面向对象程序设计及C++)

本文发布于:2024-02-07 01:05:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752625.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序设计   面向对象   评分   简单   程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!