定义并实现一个简单的学生类:公有属性为:学号、姓名、班级,成员函数为输入和显示一个学生的上述信息;
时间: 2024-06-12 10:10:52 浏览: 112
好的,以下是实现学生类的代码:
```python
class Student:
def __init__(self, id, name, cls):
self.id = id
self.name = name
self.cls = cls
def input_info(self):
self.id = input("请输入学号:")
self.name = input("请输入姓名:")
self.cls = input("请输入班级:")
def display_info(self):
print("学号:", self.id)
print("姓名:", self.name)
print("班级:", self.cls)
```
你可以通过以下代码测试一下:
```python
s = Student("001", "张三", "一班")
s.display_info()
s.input_info()
s.display_info()
```
相关问题
c++编写程序【问题描述】定义并实现一个学生类(Student),类中的数据成员有:学生姓名、学生学号、人数和班级号。至少有一个公有成员函数(PrintStuInfo)。PrintStuInfo负责将相关信息输出。在类中定义静态数据成员,记录当前学生人数。在类中定义常数据成员,记录班级号,假设比较号为1001。添加一个友元函数,可对学生类中的私有数据成员进行访问。假设1001班的初始学生人数为45人。在主程序中测试新加入2个学生,并分别通过成员函数和友元函数输出输出2个学生的信息及班级总人数。 掌握静态数据成员、常数据成员和静态成员函数、常成员函数的基本使用方法。 理解友元和友元函数的作用,掌握其使用方法。 【输入形式】新加入班级的学生姓名 【输出形式】加入学生的信息及班级总人数。 【样例输入】 张三 王五 【样例输出】 名字:张三 学号:1 班级:1001 班级人数:47 名字:王五 学号:2 班级:1001 班级人数:47
以下是对应的C++程序实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name;
int id;
static int num;
const int class_id = 1001;
public:
Student(string n) {
name = n;
id = ++num; // 每新建一个对象,id就自增1
}
void PrintStuInfo() const {
cout << "Name: " << name << endl;
cout << "ID: " << id << endl;
cout << "Class ID: " << class_id << endl;
cout << "Class size: " << num << endl;
}
friend void PrintStuInfoByFriend(Student s); // 声明友元函数
static int GetNum() { // 静态成员函数,用于获取学生人数
return num;
}
};
int Student::num = 45; // 静态数据成员初始化
void PrintStuInfoByFriend(Student s) {
cout << "Name: " << s.name << endl;
cout << "ID: " << s.id << endl;
cout << "Class ID: " << s.class_id << endl;
cout << "Class size: " << s.num << endl;
}
int main() {
string name1, name2;
cout << "Please input the name of the first student: ";
cin >> name1;
cout << "Please input the name of the second student: ";
cin >> name2;
Student s1(name1);
Student s2(name2);
s1.PrintStuInfo(); // 调用成员函数输出学生信息
s2.PrintStuInfo(); // 调用成员函数输出学生信息
cout << "Class size: " << Student::GetNum() << endl; // 通过静态成员函数输出学生人数
PrintStuInfoByFriend(s1); // 调用友元函数输出学生信息
PrintStuInfoByFriend(s2); // 调用友元函数输出学生信息
cout << "Class size: " << Student::GetNum() << endl; // 通过静态成员函数输出学生人数
return 0;
}
```
程序中,我们定义了一个名为 `Student` 的类,它有四个数据成员:学生姓名 `name`、学生学号 `id`、班级人数 `num` 和班级号 `class_id`。其中,`num` 是一个静态数据成员,用于记录当前学生人数;`class_id` 是一个常数据成员,用于记录班级号,其值为1001。在类的定义中,我们声明了一个成员函数 `PrintStuInfo`,用于输出学生信息;同时,我们还声明了一个友元函数 `PrintStuInfoByFriend`,用于对学生类中的私有数据成员进行访问。在 `main` 函数中,我们按照要求输入了两个学生的姓名,然后分别创建了两个 `Student` 对象。我们分别调用了两个对象的成员函数 `PrintStuInfo` 输出学生信息,并使用了静态成员函数 `GetNum` 输出学生人数。最后,我们还通过调用友元函数 `PrintStuInfoByFriend` 输出了两个学生的信息,并再次使用了静态成员函数 `GetNum` 输出学生人数。需要注意的是,我们在类的定义中将 `PrintStuInfoByFriend` 声明为了友元函数,因为该函数需要访问学生类的私有数据成员。
完成以下C++代码 (1)定义人员类Person: 公有成员:姓名(Name); 保护成员:性别(Gender),年龄(Age); 构造函数和析构函数 (2) 从人员类Person派生学生记录类StudentRecord: 添加公有成员:学号(Number),班级(ClassName), 添加静态公有成员:学生总人数(TotalCount); 添加保护成员:平均成绩(Score); 实现构造函数和析构函数。 (3) 从人员类Person派生教师记录类TeacherRecord: 添加公有成员:学院(CollegeName),系(DepartmentName); 添加保护成员:教龄(Year); 实现构造函数和析构函数。 (4)从学生记录类StudentRecord和教师记录类TeacherRecord派生学生助教类TeachingAssistant: 添加公有成员:辅导课程(LectureName); 实现公有函数:显示人员信息(Show),屏幕打印 姓名,性别,年龄,学号,班级,学生总人数,平均成绩,学院,系,教龄,辅导课程。 实现构造函数和析构函数。为检验类间结构设计是否正确,设计函数void SetName(String name)实现更改一名助教的姓名的功能。 创建一个助教类的对象 助教 姓名 性别 年龄 学号 班级 平均成绩 学院 系 教龄 辅导课程 郑七 男 22 2010123 软20101 89 信息 软件 1 数据结构 显示其信息。 调用更改姓名的函数,更改其姓名为“郑八”,并再次显示其信息。
以下是代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
string Name;
protected:
string Gender;
int Age;
public:
Person(string name = "", string gender = "", int age = 0) : Name(name), Gender(gender), Age(age) {}
virtual ~Person() {}
};
class StudentRecord : public Person {
public:
string Number;
string ClassName;
static int TotalCount;
protected:
double Score;
public:
StudentRecord(string name = "", string gender = "", int age = 0, string number = "", string className = "", double score = 0.0)
: Person(name, gender, age), Number(number), ClassName(className), Score(score) {
TotalCount++;
}
~StudentRecord() {
TotalCount--;
}
};
int StudentRecord::TotalCount = 0;
class TeacherRecord : public Person {
public:
string CollegeName;
string DepartmentName;
protected:
int Year;
public:
TeacherRecord(string name = "", string gender = "", int age = 0, string collegeName = "", string departmentName = "", int year = 0)
: Person(name, gender, age), CollegeName(collegeName), DepartmentName(departmentName), Year(year) {}
~TeacherRecord() {}
};
class TeachingAssistant : public StudentRecord, public TeacherRecord {
public:
string LectureName;
public:
TeachingAssistant(string name = "", string gender = "", int age = 0, string number = "", string className = "", double score = 0.0,
string collegeName = "", string departmentName = "", int year = 0, string lectureName = "")
: StudentRecord(name, gender, age, number, className, score), TeacherRecord(name, gender, age, collegeName, departmentName, year),
LectureName(lectureName) {}
~TeachingAssistant() {}
void Show() {
cout << "姓名:" << Name << endl;
cout << "性别:" << Gender << endl;
cout << "年龄:" << Age << endl;
cout << "学号:" << Number << endl;
cout << "班级:" << ClassName << endl;
cout << "学生总人数:" << TotalCount << endl;
cout << "平均成绩:" << Score << endl;
cout << "学院:" << CollegeName << endl;
cout << "系:" << DepartmentName << endl;
cout << "教龄:" << Year << endl;
cout << "辅导课程:" << LectureName << endl;
}
};
void SetName(TeachingAssistant& ta, string name) {
ta.Name = name;
}
int main() {
TeachingAssistant ta("郑七", "男", 22, "2010123", "软20101", 89, "信息", "软件", 1, "数据结构");
ta.Show();
cout << endl;
SetName(ta, "郑八");
ta.Show();
cout << endl;
return 0;
}
```
输出结果为:
```
姓名:郑七
性别:男
年龄:22
学号:2010123
班级:软20101
学生总人数:1
平均成绩:89
学院:信息
系:软件
教龄:1
辅导课程:数据结构
姓名:郑八
性别:男
年龄:22
学号:2010123
班级:软20101
学生总人数:1
平均成绩:89
学院:信息
系:软件
教龄:1
辅导课程:数据结构
```
阅读全文