2302_79720847 2023-09-17 15:00 采纳率: 37.5%
浏览 17
已结题

设计一个学生类student

img

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-17 16:13
    关注

    【以下回答由 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中,示例了如何使用这些函数进行学生对象的创建、信息输入、修改、显示和复制操作。

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月18日
  • 创建了问题 9月17日

悬赏问题

  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
  • ¥15 微信小程序 前端页面内容搜索
  • ¥15 cpu是如何判断当前指令已经执行完毕,然后去执行下条指令的
  • ¥15 安装visual studio2022时visualstudiosetup启动不了,闪退。问题代号0x0和0x1389
  • ¥30 java spring boot2.5.3版本websocket连不上
  • ¥15 angular js调外部链接查看pdf
  • ¥15 openFOAM DPMFoam
  • ¥15 将查询到的值,赋值到table指定行中
  • ¥50 docker容器内部启动shell脚本多命令