设计一个学生类student

img

设计一个学生类Student:
1.数据成员包括:学号,姓名,性别,出生日期,院系、专业;其中,“出生日期”要声明为一个内嵌对象;2.成员函数基本功能有:
(a)可以从键盘输入学生的基本信息;
(b)定义一个函数setImfo(形参表),可以修改学生的基本信息;
(c)成员函数void showO显示学生信息;
3.Student类要包含:构造函数、内联成员函数、带默认参
数的构造函数、复制构造函数;

【以下回答由 GPT 生成】

#include <stdio.h>
#include <string.h>

// 定义日期结构体
typedef struct {
    int year;
    int month;
    int day;
} Date;

// 学生类定义
typedef struct {
    char id[20];
    char name[20];
    char sex[10];
    Date birth;
    char department[20];
    char major[20];
} Student;

// 函数声明
void inputInfo(Student *student);
void setInfo(Student *student, char name[], char sex[], Date birth, char department[], char major[]);
void showInfo(Student student);
inline char* getStudentName(Student student);
Student createStudent();
Student createStudentWithDefaultValue(char name[], char sex[], Date birth, char department[], char major[]);
Student copyStudent(Student student);

// 主函数
int main() {
    // 创建学生对象,并从键盘输入学生信息
    Student student;
    inputInfo(&student);

    // 显示学生信息
    showInfo(student);

    // 修改学生信息
    setInfo(&student, "Tom", "Male", student.birth, "Computer Science", "Software Engineering");

    // 显示修改后的学生信息
    showInfo(student);

    // 获取学生姓名
    char *name = getStudentName(student);
    printf("Student name: %s\n", name);

    // 创建新的学生对象,并提供默认值
    Student studentWithDefaultValue = createStudentWithDefaultValue("Jerry", "Male", student.birth, "Computer Science", "Software Engineering");
    showInfo(studentWithDefaultValue);

    // 复制现有学生对象
    Student copiedStudent = copyStudent(student);
    showInfo(copiedStudent);

    return 0;
}

// 从键盘输入学生信息
void inputInfo(Student *student) {
    printf("Please enter student information:\n");
    printf("ID: ");
    scanf("%s", student->id);
    printf("Name: ");
    scanf("%s", student->name);
    printf("Sex: ");
    scanf("%s", student->sex);
    printf("Birth: (YYYY-MM-DD) ");
    scanf("%d-%d-%d", &(student->birth.year), &(student->birth.month), &(student->birth.day));
    printf("Department: ");
    scanf("%s", student->department);
    printf("Major: ");
    scanf("%s", student->major);
}

// 修改学生信息
void setInfo(Student *student, char name[], char sex[], Date birth, char department[], char major[]) {
    strcpy(student->name, name);
    strcpy(student->sex, sex);
    student->birth = birth;
    strcpy(student->department, department);
    strcpy(student->major, major);
}

// 显示学生信息
void showInfo(Student student) {
    printf("Student ID: %s\n", student.id);
    printf("Student Name: %s\n", student.name);
    printf("Student Sex: %s\n", student.sex);
    printf("Student Birth: %d-%d-%d\n", student.birth.year, student.birth.month, student.birth.day);
    printf("Student Department: %s\n", student.department);
    printf("Student Major: %s\n", student.major);
}

// 获取学生姓名,内联成员函数
inline char* getStudentName(Student student) {
    return student.name;
}

// 构造函数
Student createStudent() {
    Student student;
    return student;
}

// 带默认参数的构造函数
Student createStudentWithDefaultValue(char name[], char sex[], Date birth, char department[], char major[]) {
    Student student;
    strcpy(student.name, name);
    strcpy(student.sex, sex);
    student.birth = birth;
    strcpy(student.department, department);
    strcpy(student.major, major);
    return student;
}

// 复制构造函数
Student copyStudent(Student student) {
    Student newStudent;
    strcpy(newStudent.id, student.id);
    strcpy(newStudent.name, student.name);
    strcpy(newStudent.sex, student.sex);
    newStudent.birth = student.birth;
    strcpy(newStudent.department, student.department);
    strcpy(newStudent.major, student.major);
    return newStudent;
}

以上是一个使用C语言实现的设计学生类的程序。详细解释如下:

  1. 首先,定义了一个日期结构体Date,包含年、月、日三个成员变量。
  2. 然后,定义了一个学生类Student,包含学号、姓名、性别、出生日期、院系、专业等数据成员。
  3. 接着,分别实现了用于从键盘输入学生信息、修改学生信息、显示学生信息的三个函数inputInfosetInfoshowInfo
  4. getStudentName函数中用inline关键字定义了一个内联成员函数,用于获取学生的姓名。
  5. 实现了构造函数createStudent用于创建一个学生对象,不带任何参数。
  6. 实现了带默认参数的构造函数createStudentWithDefaultValue,可以创建一个学生对象,并可以提供默认值。
  7. 实现了复制构造函数copyStudent,用于创建一个与现有学生对象相同的新对象。
  8. 在主函数main中,示例了如何使用这些函数进行学生对象的创建、信息输入、修改、显示和复制操作。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^