采用面向对象思想,设计大学生信息管理系统相关类的定义和测试。要求为: 1)定义大学生基类; 2)具有构造函数,析构函数; 3)定义派生类测控学生、机自学生、过控学生,包装学生; 4)定义类数据成员,实现数据封装; 5)定义虚函数实现多态性:信息输入输出、析构等。

时间: 2024-03-15 14:44:29 浏览: 7
好的,以下是一个参考实现: ```cpp #include <iostream> #include <string> using namespace std; // 大学生基类 class Student { private: string name; // 姓名 int age; // 年龄 string id; // 学号 public: Student(string name, int age, string id) : name(name), age(age), id(id) {} virtual ~Student() {} // 获取姓名、年龄、学号 string getName() const { return name; } int getAge() const { return age; } string getId() const { return id; } // 设置姓名、年龄、学号 void setName(string name) { this->name = name; } void setAge(int age) { this->age = age; } void setId(string id) { this->id = id; } // 信息输入输出 virtual void input() { cout << "姓名:"; cin >> name; cout << "年龄:"; cin >> age; cout << "学号:"; cin >> id; } virtual void output() const { cout << "姓名:" << name << endl; cout << "年龄:" << age << endl; cout << "学号:" << id << endl; } }; // 测控学生 class MeasurementStudent : public Student { private: int experimentCount; // 实验次数 public: MeasurementStudent(string name, int age, string id, int experimentCount) : Student(name, age, id), experimentCount(experimentCount) {} // 获取实验次数 int getExperimentCount() const { return experimentCount; } // 设置实验次数 void setExperimentCount(int experimentCount) { this->experimentCount = experimentCount; } // 信息输入输出 void input() { Student::input(); cout << "实验次数:"; cin >> experimentCount; } void output() const { Student::output(); cout << "实验次数:" << experimentCount << endl; } }; // 机自学生 class AutomaticControlStudent : public Student { private: string researchArea; // 研究领域 public: AutomaticControlStudent(string name, int age, string id, string researchArea) : Student(name, age, id), researchArea(researchArea) {} // 获取研究领域 string getResearchArea() const { return researchArea; } // 设置研究领域 void setResearchArea(string researchArea) { this->researchArea = researchArea; } // 信息输入输出 void input() { Student::input(); cout << "研究领域:"; cin >> researchArea; } void output() const { Student::output(); cout << "研究领域:" << researchArea << endl; } }; // 过控学生 class ProcessControlStudent : public Student { private: double score; // 成绩 public: ProcessControlStudent(string name, int age, string id, double score) : Student(name, age, id), score(score) {} // 获取成绩 double getScore() const { return score; } // 设置成绩 void setScore(double score) { this->score = score; } // 信息输入输出 void input() { Student::input(); cout << "成绩:"; cin >> score; } void output() const { Student::output(); cout << "成绩:" << score << endl; } }; // 包装学生 class PackagingStudent : public Student { private: string packagingType; // 包装类型 public: PackagingStudent(string name, int age, string id, string packagingType) : Student(name, age, id), packagingType(packagingType) {} // 获取包装类型 string getPackagingType() const { return packagingType; } // 设置包装类型 void setPackagingType(string packagingType) { this->packagingType = packagingType; } // 信息输入输出 void input() { Student::input(); cout << "包装类型:"; cin >> packagingType; } void output() const { Student::output(); cout << "包装类型:" << packagingType << endl; } }; int main() { // 定义大学生对象 Student* student; // 输入测控学生信息 student = new MeasurementStudent("", 0, "", 0); student->input(); student->output(); delete student; // 输入机自学生信息 student = new AutomaticControlStudent("", 0, "", ""); student->input(); student->output(); delete student; // 输入过控学生信息 student = new ProcessControlStudent("", 0, "", 0.0); student->input(); student->output(); delete student; // 输入包装学生信息 student = new PackagingStudent("", 0, "", ""); student->input(); student->output(); delete student; return 0; } ``` 注意,这只是一个参考实现,您可以根据项目需求进行修改和完善。同时,这里采用了指针和动态内存分配,需要注意正确释放动态内存,避免内存泄漏问题。

相关推荐

最新推荐

recommend-type

按以下描述和要求建立两个类:基类 Rectangle(矩形类) 和派生类 Cube(正方体)

按以下描述和要求建立两个类:基类 Rectangle(矩形类) 和派生类 Cube(正方体) 1. Rectangle 私有成员:  double x1, y1; //左下角的坐标  double x2, y2; //右上角的坐标 公有成员:  带缺省值的构造...
recommend-type

图书管理系统面向对象的分析与设计

该小型图书管理系统的面向对象的分析与设计,主要包括了用例图、活动图、时序图以及VOPC等
recommend-type

基于Java Web的学生选课系统JavaWeb设计

系统面向的用户为:管理员、教师、学生。主要的模块分为,用户登录模块,管理员发布选课,进行增删查改。学生进行课程的选定以及退选。教师管理员可以查看自己所带课程选课的相关学生信息等等。 关键词:JSP;MySQL...
recommend-type

基于php+MySql实现学生信息管理系统实例

到此这篇关于基于php+MySql实现学生信息管理系统实例的文章就介绍到这了,更多相关php+MySql实现学生信息管理系统内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
recommend-type

学生信息管理系统(报告).doc

◆能够提供添加、查询、删除和修改学生管理系统信息的功能; ◆能够显示数据记录集中的所有记录; ◆将系统录入的信息保存在文件中; ◆能够输出管理系统信息。 1.2 设计要求 要求设计程序输出如下: 1.总的...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。