[C++] - 面向对象-院校管理系统
注:来源于教科书
[问题描述]
设计一个院校管理程序.
学生包括姓名,性别,身份证号码,生日,年龄,地址,学号,宿舍号,专业,年级的输入输出;
教师包括姓名,性别,身份证号码,生日,年龄,地址,公寓,每天工作时间,每月薪水,授课专业,所从事的科研名称,所带研究生数目的输入输出;
工人包括姓名,性别,身份证号码,生日,年龄,地址,公寓,每天工作时间,每月薪水,工作类别的输入输出.
[算法分析]
设计一个RECORD类,它包括姓名,性别,身份证号码,生日,年龄,地址的输入输出,然后从RECORD类派生一个STUDENT类,实现学生数据学号,宿舍号,专业,年级的输入输出,从RECORD类派生一个STAFF的中间类,实现公寓,每天工作时间,每月薪水的输入输出,再从STAFF类派生出PROFESSOR类和WORKER类,分别实现教师授课专业,所从事的科研名称,所带研究生数目和工作类别的输入输出.下图反映了这些类之间的关系.
┏━━━━━┓
┃ 类RECORD ┃
┗━━━━━┛
公有继承↙ ↘公有继承
┏━━━━━┓ ┏━━━━━┓
┃ 类STUDENT┃ ┃ 类STAFF ┃
┗━━━━━┛ ┗━━━━━┛
公有继承↙ ↘公有继承
┏━━━━━━┓ ┏━━━━━┓
┃ 类PROFESSOR┃ ┃ 类WORKER ┃
┗━━━━━━┛ ┗━━━━━┛
院校管理系统类图
*/
#include "iostream.h"
#include "string.h"
#include "conio.h"
const char EMPTY='\0';
//RECORD类
class RECORD{
private: //私有部分
char *NAME; //姓名
char *SEX; //性别
char *IDENTIFIER; //身份证号码
char *BIRTHDAY; //生日
char *ADDRESS; //地址
int AGE; //年龄
public: //公有部分
RECORD(); //构造函数
void INSERT_NAME(char *S); //插入姓名
void INSERT_SEX(char *S); //插入性别
void INSERT_IDENTIFIER(char *S); //插入身份证号码
void INSERT_BIRTHDAY(char *S); //插入生日
void INSERT_ADDRESS(char *S); //插入地址
void INSERT_AGE(int A); //插入年龄
void PRINT(); //输出信息
};
//STUDENT子类
class STUDENT:public RECORD{
//This class is derived from RECORD and inherits all the public members of the parent class.
private: //私有部分
char *STUDENT_ID; //学号
char *DORMITORY_NUM; //宿舍号
char *MAJOR; //专业
int LEVEL; //年级
public: //公有部分
STUDENT(); //子类构造函数
void INSERT_STUDENT_ID(char *s); //插入学号
void INSERT_DORMITORY_NUM(char *s); //插入宿舍号
void INSERT_MAJOR(char *s); //插入专业
void INSERT_LEVEL(int A); //插入年级
void PRINT(); //输出信息
};
//STAFF子类
class STAFF:public RECORD{
//STAFF类由RECORD派生并继承父类RECORD的全部公有成员
private: //私有部分
char *DEPARTMENT; //公寓号
int WORKTIME; //工作时间
float SALARY; //薪水(每月)
public: //公有部分
STAFF(); //子类构造函数
void INSERT_DEPARTMENT(char *S); //插入公寓号
void INSERT_WORKTIME(int A); //插入工作时间
void INSERT_SALARY(float A); //插入薪水
void PRINT(); //输出信息
};
//PROFESSOR子类
class PROFESSOR:public STAFF{
//This class is derived from the derived class STAFF.
private: //私有部分
char *TEACH_MAJOR; //授课专业
char *SEARCH_NAME; //科研名称
int GRADUATE_STUDENT_NUM; //所带研究生数目
public: //公有部分
PROFESSOR(); //二级继承类PROFESSOR的构造函数
void INSERT_TEACH_MAJOR(char *S); //插入授课专业
void INSERT_SEARCH_NAME(char *S); //插入科研名称
void INSERT_GRADUATE_STUDENT_NUM(int A); //插入所带研究生数目
void PRINT(); //输出信息
};
//WORKER子类
class WORKER:public STAFF{
//This class is derived from the derived class STAFF.
private: //私有部分
char *WORK_TYPE; //工作类别
public: //公有部分
WORKER(); //二级继承类PROFESSOR的构造函数
void INSERT_WORK_TYPE(char *S); //插入工作类别
void PRINT(); //输出信息
};
/***********************************************************************************/
//定义父类RECORD成员
RECORD::RECORD(){ //构造函数
NAME = EMPTY;
SEX = "MALE";
IDENTIFIER = EMPTY;
BIRTHDAY = EMPTY;
AGE = 0;
};
void RECORD::INSERT_NAME(char *S){ //插入姓名
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
NAME = BUFFER;
};
void RECORD::INSERT_SEX(char *S){ //插入性别
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
SEX = BUFFER;
};
void RECORD::INSERT_IDENTIFIER(char *S){ //插入身份证号码
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
IDENTIFIER = BUFFER;
};
void RECORD::INSERT_BIRTHDAY(char *S){ //插入生日
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
BIRTHDAY = BUFFER;
};
void RECORD::INSERT_ADDRESS(char *S){ //插入地址
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
ADDRESS = BUFFER;
};
void RECORD::INSERT_AGE(int A){ //插入年龄
AGE = A;
};
void RECORD::PRINT(){ //输出信息
cout << NAME << endl
<< SEX << " "
<< IDENTIFIER << " "
<< BIRTHDAY << " "
<< AGE << " "
<< ADDRESS << endl;
};
/
//继承自父类RECORD的STUDENT子类成员
STUDENT::STUDENT(){
RECORD:RECORD(); //Use the same constructor as the parent class.
STUDENT::DORMITORY_NUM = EMPTY;
STUDENT::MAJOR = EMPTY;
STUDENT::LEVEL = 0;
};
void STUDENT::INSERT_STUDENT_ID(char *S){ //插入学号
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
STUDENT_ID = BUFFER;
};
void STUDENT::INSERT_DORMITORY_NUM(char *S){ //插入宿舍号
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
DORMITORY_NUM = BUFFER;
};
void STUDENT::INSERT_MAJOR(char *S){ //插入专业
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
MAJOR = BUFFER;
};
void STUDENT::INSERT_LEVEL(int A){ //插入年级
LEVEL = A;
};
void STUDENT::PRINT(){ //输出信息
RECORD::PRINT(); //继承父类RECORD的PRINT()函数
cout << endl;
cout << "STUDENT_ID --> " << STUDENT_ID << endl
<< "DORMITORY_NUM --> " << DORMITORY_NUM << endl
<< "MAJOR --> " << MAJOR << endl
<< "LEVEL --> " << LEVEL << endl;
};
/
//继承自父类RECORD的STAFF子类成员
STAFF::STAFF(){ //子类构造函数
RECORD:RECORD(); //继承自父类RECORD的构造函数
DEPARTMENT = EMPTY;
WORKTIME = 0;
SALARY = 300;
};
void STAFF::INSERT_DEPARTMENT(char *S){ //插入公寓号
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
DEPARTMENT = BUFFER;
};
void STAFF::INSERT_WORKTIME(int A){ //插入工作时间
WORKTIME = A;
};
void STAFF::INSERT_SALARY(float A){ //插入薪水
SALARY = A;
};
void STAFF::PRINT(){ //输出信息
RECORD::PRINT(); //继承父类RECORD的PRINT()函数
cout << endl;
cout << "DEPARTMENT --> " << DEPARTMENT << endl
<< "WORK TIME(PER DAY) --> " << WORKTIME << endl
<< "SALARY --> $" << SALARY << endl;
};
/
//从继承类STAFF导出的子类PROFESSOR成员
PROFESSOR::PROFESSOR(){ //二级继承类PROFESSOR的构造函数
STAFF:STAFF(); //继承父类STAFF的构造函数
TEACH_MAJOR = EMPTY;
SEARCH_NAME = EMPTY;
GRADUATE_STUDENT_NUM = 0;
};
void PROFESSOR::INSERT_TEACH_MAJOR(char *S){ //插入授课专业
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
TEACH_MAJOR = BUFFER;
};
void PROFESSOR::INSERT_SEARCH_NAME(char *S){ //插入科研名称
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
SEARCH_NAME = BUFFER;
};
void PROFESSOR::INSERT_GRADUATE_STUDENT_NUM(int A){ //插入所带研究生数目
GRADUATE_STUDENT_NUM = A;
};
void PROFESSOR::PRINT(){ //输出信息
STAFF::PRINT(); //调用父类STAFF的PRINT()函数
cout << endl;
cout << "TEACH MAJOR --> " << TEACH_MAJOR << endl
<< "THE PROFESSOR'S SEARCH'S NAME --> " << SEARCH_NAME << endl
<< "THE NUMBER OF PROFESSOR'S GRADUATE STUDENT --> " << GRADUATE_STUDENT_NUM << endl;
};
/
//从继承类STAFF导出的子类WORKER成员
WORKER::WORKER(){ //二级继承类PROFESSOR的构造函数
STAFF:STAFF(); //继承父类STAFF的构造函数
WORK_TYPE = "WORKER";
};
void WORKER::INSERT_WORK_TYPE(char *S){ //插入工作类别
char *BUFFER;
BUFFER = new char[strlen(S)+1];
strcpy(BUFFER,S);
WORK_TYPE = BUFFER;
};
void WORKER::PRINT(){ //输出信息
STAFF::PRINT(); //调用父类STAFF的PRINT()函数
cout << endl;
cout << "THE WORKER IS A --> " << WORK_TYPE << endl;
};
/***********************************************************************************/
void main(){
STUDENT STU; //定义学生类的实例
PROFESSOR PRO; //定义教授类的实例
WORKER WOR; //定义工人类的实例
/*STUDENT RECORD*/
STU.INSERT_NAME("ZHANG SAN");
STU.INSERT_SEX("FEMALE");
STU.INSERT_IDENTIFIER("123456789");
STU.INSERT_BIRTHDAY("1979/1/1");
STU.INSERT_AGE(20);
STU.INSERT_ADDRESS("BGD 100 BEIJIG");
STU.INSERT_STUDENT_ID("12345");
STU.INSERT_DORMITORY_NUM("8-3-225");
STU.INSERT_MAJOR("COMPUTER SCIENCE");
STU.INSERT_LEVEL(5);
/*PROFESSOR RECORD*/
PRO.INSERT_NAME("LI SI");
PRO.INSERT_SEX("MALE");
PRO.INSERT_IDENTIFIER("11223344");
PRO.INSERT_BIRTHDAY("1940/1/1");
PRO.INSERT_AGE(60);
PRO.INSERT_ADDRESS("111222333 ABCDE CHAOYANG");
PRO.INSERT_DEPARTMENT("3-3-3");
PRO.INSERT_WORKTIME(6);
PRO.INSERT_SALARY(10000);
PRO.INSERT_TEACH_MAJOR("MATH");
PRO.INSERT_SEARCH_NAME("THE METHOD FOR CALCULATING");
PRO.INSERT_GRADUATE_STUDENT_NUM(30);
/*WORKER RECORD*/
WOR.INSERT_NAME("WANG WU");
WOR.INSERT_SEX("MALE");
WOR.INSERT_IDENTIFIER("44556677");
WOR.INSERT_BIRTHDAY("1970/1/1");
WOR.INSERT_AGE(30);
WOR.INSERT_ADDRESS("23456 EFGHI HAIDIAN");
WOR.INSERT_DEPARTMENT("10-3-6");
WOR.INSERT_WORKTIME(10);
WOR.INSERT_SALARY(1000);
WOR.INSERT_WORK_TYPE("CLEARER");
STU.PRINT();
cout << "\n------------------------------------------------------------\n" << endl;
PRO.PRINT();
cout << "\n------------------------------------------------------------\n" << endl;
WOR.PRINT();
}
转载于:https://www.cnblogs.com/hcbin/archive/2010/02/22/1669588.html
[C++] - 面向对象-院校管理系统相关推荐
- RDBMS(关系型数据库管理系统)和 OODBMS(面向对象数据库管理系统)区别
RDBMS: RDBMS 代表关系数据库管理系统.它是一个基于关系模型的数据库管理系统,也就是数据和关系被一些互相关联的表组成的集合锁替代.它是一个能让用户自己创建.更新数据库,并且实现对数据库管理和 ...
- python2.面向对象学生管理系统
main.py(程序主入口) #1.导入管理系统模块 from mangerSystem import * #2.启动管理系统 #保证是当前文件运行才启动管理系统:if -- 创建对象并调用run() ...
- [C++] - 面向对象-图书管理系统
注:来源于教科书 /* [问题描述] 设计一个图书管理系统,该图书管理系统分为借书,还书,图书维护和读者维护4个部分,如下图所示. ┏━━━━━━━┓ ...
- C++简单面向对象学校管理系统
C++简单学校管理系统 关键词 设计 功能: 一.头文件 1.menu.h 2.Login.h 3.People.h 4.Student.h 5.Teacher.h 二.源文件 1.main.cpp ...
- 关系数据库系统RDBMS与面向对象数据库管理系统ODBMS优缺点比较
关系数据库系统与面向对象数据库系统各自的优缺点 关系数据库系统的优点 a.灵活性和建库的简单性:目前在多数RDDMS产品中使用标准查询语言SQL,允许用户几乎毫无差别地从一个产品到另一个产品存取信息. ...
- python面向对象设计管理系统_python面向对象之单例设计模型
单例 目标 单例设计模式 `__new__` 方法 Python 中的单例 01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的 ...
- 11.面向对象设计笔记
面向对象分析-问题域精确模型 面向对象设计-求解问题域模型,得到系统实现方案 文章目录 面向对象设计六准则 弱耦合 强内聚 六个启发规则 软件重用(软件成分重用) 可重用类构件的特点 三种重用方式 系 ...
- OO开发思想:面向对象的开发方法(Object oriented,OO)
面向对象的开发方法(Object oriented,OO)认为是好文章吧,拿来分享一下(转载) 面向对象的开发方法(Object oriented,OO) 从事软件开发的工程 师们常常有这样 的体会: ...
- 面向对象的关系数据库设计
面向对象的关系数据库设计 一.概念的区分 有些人把面向对象的数据库设计(即数据库模式)思想与面向对象数据库管理系统(OODBMS) 理论混为一谈.其实前者是数据库用户定义数据库模式的思路,后者是数据库 ...
最新文章
- 水母智能联合蚂蚁森林、犀牛智造等,用AI助力非遗出圈,39万人开工得“福”
- 实现数据集多( 高 )维可视化(附代码)
- Javascript 装饰器极速指南
- python 对象类型有哪些?
- 修改echarts环形图的牵引线及文字位置
- php_mvc实现步骤五
- 广州大学计算机网络期末考试2013,广州大学计算机网络技术试卷(A卷)
- util中注入service
- 极光推送 java 绑定别名_极光推送-别名篇
- 给WPF文字加多条修饰线
- 2010_8_18_静态路由_静态路由路由排错(不连续地址汇总)
- Atitit GRASP(General Responsibility Assignment Software Patterns),中文名称为“通用职责分配软件模式”
- mysql 批量查询插入,MySQL批量插入查询出来的数据
- 以接口请求的方式,解决移动端页面中字体文件过大的问题
- ab test -- 实验效果不显著的改善方法 -- CUPED
- rpm -ivh *rpm 是什么意思
- 万恶的LayoutSubviews
- [DUBBO] disconnected from 问题
- Outlook 2013 pst/ost邮件数据文件迁移实现
- 看完它你就造了!为什么AR直播是淘宝造物节最火的黑科技
热门文章
- mysql教程日志_MySQL日志
- merge规则 python_用Python处理PDF
- 决策树(十二)--XGBoost
- osea/Beat Classification 4.0-4.2
- 基于Zephyr在微型MCU上使用Tensor Flow Lite Micro做图像分类
- 记录:编译opencv-4.1.0、opencv_contrib-4.1.0、dense_flow过程
- registerModule: 动态注册vuex模块,对于自定义生成组件很有用
- 人脸表情分类与识别:opencv人脸检测+Keras情绪分类
- Win8 Metro(C#)数字图像处理--2.39二值图像投影
- [Contest20180116]随机游走