编写一个学生和教师数据输入和显示程序,要求: (1)学生数据有编号、姓名、班号和成绩。 (2)教师数据有编号、姓名、职称和部门。 (3)将编号、姓名的输入和显示设计成类person,作为学生数据操作类student和教师数据操作类teacher的基类。用完整的准确的c++语言表示
时间: 2024-06-10 19:04:23 浏览: 51
下面是一个可能的实现:
```c
#include <stdio.h>
#include <string.h>
// 定义一个抽象的人物类
typedef struct {
int id; // 编号
char name[20]; // 姓名
} Person;
// 学生类继承自人物类
typedef struct {
Person p; // 继承属性
int class_id; // 班号
int score; // 成绩
} Student;
// 教师类继承自人物类
typedef struct {
Person p; // 继承属性
char title[20]; // 职称
char department[20]; // 部门
} Teacher;
// 输入一个人物对象的编号和姓名
void input_person(Person *p) {
printf("请输入编号:");
scanf("%d", &p->id);
printf("请输入姓名:");
scanf("%s", p->name);
}
// 显示一个人物对象的编号和姓名
void show_person(Person p) {
printf("编号:%d,姓名:%s\n", p.id, p.name);
}
// 输入一个学生对象的班号和成绩
void input_student(Student *s) {
input_person(&s->p);
printf("请输入班号:");
scanf("%d", &s->class_id);
printf("请输入成绩:");
scanf("%d", &s->score);
}
// 显示一个学生对象的全部信息
void show_student(Student s) {
show_person(s.p);
printf("班号:%d,成绩:%d\n", s.class_id, s.score);
}
// 输入一个教师对象的职称和部门
void input_teacher(Teacher *t) {
input_person(&t->p);
printf("请输入职称:");
scanf("%s", t->title);
printf("请输入部门:");
scanf("%s", t->department);
}
// 显示一个教师对象的全部信息
void show_teacher(Teacher t) {
show_person(t.p);
printf("职称:%s,部门:%s\n", t.title, t.department);
}
int main() {
// 测试代码
Student s;
input_student(&s);
printf("输入的学生信息为:\n");
show_student(s);
Teacher t;
input_teacher(&t);
printf("输入的教师信息为:\n");
show_teacher(t);
return 0;
}
```
解释一下,我们先定义了一个最基本的人物类,包括编号和姓名两个属性。然后学生类和教师类都继承自这个类,但分别增加了班号/成绩和职称/部门两个属性。
我们还定义了几个方法,分别用于输入和显示不同的对象。在输入人物信息的时候,会先输入编号然后输入姓名,使用了指针传递参数的方式。这样写的好处是可以共用输入编号和姓名的代码,避免了重复。其他的类的输入和显示方法类似。
最后在 `main` 函数里测试了一下。当然,实际使用是需要根据具体业务场景来写的。
阅读全文