用c++的语言编写一个学生和教师的数据输入和显示程序,学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号姓名、性别、年龄的输入和显示设计成一个类persona,并作为学生类student和教师类teacher的基类
时间: 2023-12-22 12:21:14 浏览: 92
C++语言概述 数据的输入与输出 基本数据类型和表达式
以下是使用 C 语言编写的学生和教师的数据输入和显示程序,其中学生和教师类都继承自 persona 基类:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义 persona 基类
typedef struct {
int id;
char name[20];
char gender;
int age;
} persona;
// 定义学生类 student,继承自 persona 类
typedef struct {
persona p;
char department[20];
float score;
} student;
// 定义教师类 teacher,继承自 persona 类
typedef struct {
persona p;
char title[20];
char department[20];
} teacher;
// 函数声明
void input_persona(persona *p);
void display_persona(const persona *p);
void input_student(student *s);
void display_student(const student *s);
void input_teacher(teacher *t);
void display_teacher(const teacher *t);
int main() {
int choice;
do {
printf("请选择要输入的数据类型:\n");
printf("1. 学生\n");
printf("2. 教师\n");
printf("3. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入学生信息:\n");
student s;
input_student(&s);
printf("学生信息为:\n");
display_student(&s);
break;
case 2:
printf("请输入教师信息:\n");
teacher t;
input_teacher(&t);
printf("教师信息为:\n");
display_teacher(&t);
break;
case 3:
printf("程序已退出。\n");
break;
default:
printf("输入有误,请重新选择。\n");
break;
}
} while (choice != 3);
return 0;
}
// 输入 persona 基类数据
void input_persona(persona *p) {
printf("请输入编号:");
scanf("%d", &p->id);
printf("请输入姓名:");
scanf("%s", p->name);
printf("请输入性别(M/F):");
scanf(" %c", &p->gender);
printf("请输入年龄:");
scanf("%d", &p->age);
}
// 显示 persona 基类数据
void display_persona(const persona *p) {
printf("编号:%d\n", p->id);
printf("姓名:%s\n", p->name);
printf("性别:%c\n", p->gender);
printf("年龄:%d\n", p->age);
}
// 输入学生类数据
void input_student(student *s) {
input_persona(&s->p);
printf("请输入系别:");
scanf("%s", s->department);
printf("请输入成绩:");
scanf("%f", &s->score);
}
// 显示学生类数据
void display_student(const student *s) {
display_persona(&s->p);
printf("系别:%s\n", s->department);
printf("成绩:%.2f\n", s->score);
}
// 输入教师类数据
void input_teacher(teacher *t) {
input_persona(&t->p);
printf("请输入职称:");
scanf("%s", t->title);
printf("请输入部门:");
scanf("%s", t->department);
}
// 显示教师类数据
void display_teacher(const teacher *t) {
display_persona(&t->p);
printf("职称:%s\n", t->title);
printf("部门:%s\n", t->department);
}
```
注意:以上代码仅为示例,实际应用中还需要添加输入校验等代码,以保证数据的正确性和程序的健壮性。
阅读全文