学校人员信息的抽象与封装

一、实验目的:1、根据学生老师之间的关联关系,利用继承性和派生类,设计若干自定义类;

1、 掌握类的成员成员、静态成员和虚函数;

2、 定义和调用用户函数PrintInfo(Person &ob),体会虚函数的特性。

实现一个win32控制台的应用程序,可以对学校人员的信息输入和显示。

  1 #include "stdafx.h"
  2 #include "iostream"
  3 #include "string"
  4 using namespace std;
  5 class TDate{                            //定义TDate
  6 protected:
  7     int Year, Month, Day;
  8 public:
  9     TDate()
 10     {
 11     }
 12     TDate(int year, int month, int day)
 13     {
 14         Year = year;
 15         Month = month;
 16         Day = day;
 17     }
 18     void Display()
 19     {
 20         cout << "出生年份:" << Year << endl;
 21         cout << "出生月份:" << Month << endl;
 22         cout << "出生日期:" << Day << endl;
 23     }
 24
 25 };
 26 class Person :public TDate{
 27 protected:
 28     int ID;
 29     static int Count;
 30     string Name, Sex;
 31 public:
 32     Person()
 33     {
 34     }
 35     Person(int id, string name, string sex, int year, int month, int day) :TDate(year, month, day)
 36     {
 37         //ID=id;
 38         Name = name;
 39         Sex = sex;
 40     }
 41     virtual void Display()
 42     {
 43         cout << "姓名:" << Name << endl;
 44         cout << "性别:" << Sex << endl;
 45         TDate::Display();
 46     }
 47 };
 48 int Person::Count = 0;
 49 class Teacher :public Person{
 50 protected:
 51     string Title;
 52     string Dept;
 53 public:
 54     Teacher()
 55     {
 56         Count++;
 57         ID = Count;
 58     }
 59     Teacher(string title, string dept, int id, string name, string sex, int year, int month, int day) :Person(id, name, sex, year, month, day)
 60     {
 61         Count++;
 62         ID = Count;
 63         Title = title;
 64         Dept = dept;
 65     }
 66     virtual void Display()
 67     {
 68         cout << "----------老师信息----------" << endl;
 69         cout << "编号:" << ID << endl;
 70         cout << "姓名:" << Name << endl;
 71         cout << "性别:" << Sex << endl;
 72         cout << "出生日期:" << Year << "年" << Month << "月" << Day << "日" << endl;
 73         cout << "职称:" << Title << endl;
 74         cout << "所在系:" << Dept << endl;
 75     }
 76
 77 };
 78 class Student :public Person{
 79 protected:
 80     string Major, Grade;
 81 public:
 82     Student()      //定义无参构造函数,因为主函数里要之声明一个类,但是在之后才赋值。
 83     {
 84         Count++;
 85         ID = Count;
 86     }
 87     Student(int id, string name, string sex, int year, int month, int day, string major, string grade) :Person(id, name, sex, year, month, day)
 88     {
 89         Count++;
 90         ID = Count;
 91         Major = major;
 92         Grade = grade;
 93     }
 94     virtual void Display()
 95     {
 96         cout << "----------学生信息----------" << endl;
 97         cout << "编号:" << ID << endl;
 98         cout << "姓名:" << Name << endl;
 99         cout << "性别:" << Sex << endl;
100         cout << "出生日期:" << Year << "年" << Month << "月" << Day << "日" << endl;
101         cout << "专业:" << Major << endl;
102         cout << "年级:" << Grade << endl;
103     }
104     virtual void SetValue()
105     {
106         //cout<<"---------请输入学生信息---------"<<endl;
107         cout << "姓名:";
108         cin >> Name;
109         cout << "性别:";
110         cin >> Sex;
111         cout << "出生年份:";
112         cin >> Year;
113         cout << "出生月份:";
114         cin >> Month;
115         cout << "出生日期:";
116         cin >> Day;
117         cout << "年级:";
118         cin >> Grade;
119         cout << "专业:";
120         cin >> Major;
121         cout << endl;
122     }
123 };
124 int main()
125 {
126     cout << "----------输入学生信息----------" << endl;
127     Teacher teach("讲师", "计算机系", 1, "张山", "男", 1978, 11, 11);
128     Student stu;
129     stu.SetValue();
130     teach.Display();
131     stu.Display();
132     int i;
133     cin >> i;
134
135 }

时间: 2024-10-06 00:07:20

学校人员信息的抽象与封装的相关文章

非专业码农 JAVA学习笔记 3 抽象、封装和类(1)

抽象.封装和类(1)待续 首先声明,今天接了太多个电话,两个小时看书被打断多次,缩减为一个小时.不管了,走马观花也要看完几个小节: (一)抽象与封装:抽象-抽取和研究实际性问题加以考察(抽象-尼玛抽出对象…) 封装:相关操作封存在命名空间.类等 (二)java的类: 1.系统定义的类(用于import中引入) 类名 作用 Java.lang 语言包,默认加载 Java.io, In out:文件数据流操作产生的输入输出流 Java.util 低级工具,如时间data类,变成数组vector类,h

非专业码农 JAVA学习笔记 3 抽象、封装和类(2)

(2).静态域-放在内存公共存储单元,不放在特定的对象,用static修饰 (续上一篇<非专业码农 JAVA学习笔记 3 抽象.封装和类(1)>...) (3).静态初始器-由static引导的一对大括号括起来的语句组,作用跟构造函数相似 (4).最终域-final引导的,值在整个过程都不发生改变的 5.方法 (1)方法的定义:修饰词1 修饰词2…返回值类型 方法名(参数) throw[异常列表] 这里个人经验就是注意定义了返回值的方法,要在方法体里面增加return 该类型变量:此外遇到if

PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

PHP面向对象三大特点学习 学习目标:充分理解抽象.封装.继承.多态 面象对向的三大特点:封装性.继承性.多态性 首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称为抽象 一.封装性 封装就是把抽取出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有被授权的操作(方法)才能对数据进行操作. php提供了三种访问控制修饰符 public 表示全局,本类内部,类外部,子类都可以访问 pro

java面向对象编程(五)--四大特征之抽象、封装

1.抽象 我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版).这种研究问题的方法称为抽象. 2.封装 封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作. java中实现封装的方法: 案例:不能随便查看人的年龄,工资等隐私[Demo116.java] //封装案例[Demo116.java] public class Demo116{ public static

Webform---修改人员信息

public partial class Edit : System.Web.UI.Page { private MyDBDataContext _Context = new MyDBDataContext(); //绑定民族 private void FillNation() { List<Nation> list = _Context.Nation.ToList(); txtNation.DataSource = list; txtNation.DataTextField = "

小插件: 例 新增操作人 点击文本框需要展示所有的人员提供选择弹框 人员信息全部自动带出来

效果图: 描述: 点击人员input 弹出模态框提供选择 , 选择确定后人员信息自动带入以下文本框 页面: <div class="form-group"> <label class="col-md-3 control-label">维修人系统编号:</label> <div class="col-md-8"> <input id="RepairUserAccount" n

SQL查询不同部门的人员信息

需要统计当前库中的不同部门的人员信息: SELECT name,asname,(CASE org_member.title WHEN 'ME' THEN '成员' WHEN 'M' THEN '负责人 END),email from org_member JOIN account ON account.user_ptr_id=org_member.user_id RIGHT JOIN org ON org.id=org_member.org_id WHERE org_id in(select i

mysql8.0如何快速生成100万数据人员信息数据

在爱学习mysql优化时 我需要大量数据才检测sql语句的效率 下面给大家模拟一个生成100万人员信息的数据的范例 创建一个数据库  名为test 建立表 create table t(id bigint not null auto_increment primary key, mobile bigint, password varchar(64), username varchar(64), sex tinyint not null default 1, birthday datetime,

Java基础-四大特性理解(抽象、封装、继承、多态)

抽象: 象就是有点模糊的意思,还没确定好的意思. 就比方要定义一个方法和类.但还没确定怎么去实现它的具体一点的子方法,那我就可以用抽象类或接口.具体怎么用,要做什么,我不用关心,由使用的人自己去定义去实现. 封装: 属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作.封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 概念: 封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,