首页 > 其他分享 >第十四天第二个问题

第十四天第二个问题

时间:2023-05-04 18:11:06浏览次数:30  
标签:char run 第二个 Person void 问题 第十四天 Student Teacher

问题描述:

以人类Person为基类公有派生学生类Student和教师类Teacher,main(void)函数完成对其的测试。

Person类结构说明:

 
Person类的数据成员包括:
①私有数据成员:身份证号no(char [20]型),姓名name(char [20]型)。
Person类成员函数包括:
①有参构造函数Person(char *, char *)和拷贝构造函数Person(const  Person  &),其中有参构造函数参数默认值为空串或0(当参数为NULL时视为空串处理),输出信息“Person Constructor run”,拷贝构造函数输出信息“Person CopyConstructor run”
②析构函数,析构函数输出信息“Person Destructor run”
③公有函数成员:void  setNo(char *)和char * getNo()分别返回和设置身份证号no(当参数为NULL时视为空串处理)
④公有函数成员:void  setName(char *)和char*  getName()分别返回和设置姓名name(当参数为NULL时视为空串处理)
⑤公有成员函数void show() const用于显示人的基本信息,显示格式为:
No=身份证号,Name=姓名
 

Student类结构说明:

 
公有派生学生类Student以人类Person为基类,Student类的结构说明如下:
Student类的数据成员包括:
①私有数据成员:身份证号no继承自Person类,姓名name继承自Person类。
②私有数据成员:学号sNo(char [10]型)
③私有数据成员:班级className(char [20]型)
④私有数据成员:成绩score(double型)
Student类成员函数包括:
①有参构造函数Student(char *, char *, char *,char *, double)和拷贝构造函数Student(const  Student  &),其中有参构造函数参数默认值为空串或0.0(当参数为NULL时视为空串处理),输出信息“Student Constructor run”,拷贝构造函数输出信息“Student CopyConstructor run”
②析构函数,析构函数输出信息“Student Destructor run”
③公有函数成员:void  setSNo(char *)和char * getSNo()分别返回和设置学号sNo(当参数为NULL时视为空串处理)
④公有函数成员:void  setClassName(char *)和char*  getClassName()分别返回和设置班级className(当参数为NULL时视为空串处理)
⑤公有函数成员:void  setScore(double )和double  getScore()分别返回和设置成绩score(当参数缺省时视为0.0)
⑥公有成员函数void show() const用于显示学生的基本信息,显示格式为:
No=身份证号,Name=姓名
SNo=学号,ClassName=班级,Score=成绩
其中,成绩四舍五入取整。
 

Teacher类结构说明:

 
公有派生教师类Teacher以人类Person为基类,Teacher类的结构说明如下:
Teacher类的数据成员包括:
①私有数据成员:身份证号no继承自Person类,姓名name继承自Person类。
②私有数据成员:工号tNo(char [10]型)
③私有数据成员:部门班级departmentName(char [20]型)
④私有数据成员:工资wages(double型)
Teacher类成员函数包括:
①有参构造函数Teacher(char *, char *, char *,char *, double)和拷贝构造函数Teacher(const  Teacher  &),其中有参构造函数参数默认值为空串或0.0(当参数为NULL时视为空串处理),输出信息“Teacher Constructor run”,拷贝构造函数输出信息“Teacher CopyConstructor run”
②析构函数,析构函数输出信息“Teacher Destructor run”
③公有函数成员:void  setTNo(char *)和char * getTNo()分别返回和设置工号tNo(当参数为NULL时视为空串处理)
④公有函数成员:void  setDepartmentName(char *)和char*  getDepartmentName()分别返回和设置部门departmentName(当参数为NULL时视为空串处理)
⑤公有函数成员:void  setWages(double )和double  getWages()分别返回和设置工资wages(当参数缺省时视为0.0)
⑥公有成员函数void show() const用于显示教师的基本信息,显示格式为:
No=身份证号,Name=姓名
TNo=工号,DepartmentName=部门,Wages=工资
其中,工资四舍五入取整。
 

裁判测试程序样例:

 
#include <iostream>
using namespace std;
//Person类
class Person{
protected:
    char no[20];                   //身份证号
    char name[20];                //姓名
public:
    Person(char *str1=0,char *str2=0);//有参构造
    Person(const Person &p);        //拷贝构造
    ~Person();                    //析构函数
    void show() const;             //显示Person信息
    void setNo(char *str);          //设置身份证号
    void setName(char *str);        //设置姓名
    char *getNo();                //获取身份证号
    char* getName();              //获取姓名
};
//有参构造
Person::Person(char *str1,char *str2){
    int i;
    i=0;
    if(str1!=0)
        while(str1[i]!='\0'){
            no[i]=str1[i];
            i++;
        }
    no[i]='\0';
    i=0;
    if(str2!=0)
        while(str2[i]!='\0'){
            name[i]=str2[i];
            i++;
        }
    name[i]='\0';
    cout<<"Person Constructor run"<<endl;
}
//拷贝构造
Person::Person(const Person &p){
    int i=0;
    while(p.no[i]!='\0'){
        no[i]=p.no[i];
        i++;
    }
    no[i]='\0';
    i=0;
    while(p.name[i]!='\0'){
        name[i]=p.name[i];
        i++;
    }
    name[i]='\0';
    cout<<"Person CopyConstructor run"<<endl;
}
//析构函数
Person::~Person(){
    cout<<"Person Destructor run"<<endl;
}
//显示Person
void Person::show() const{
    cout<<"No="<<no<<",Name="<<name<<endl;
}
//设置身份证号
void Person::setNo(char *str){
    int i=0;
    if (str)
        while(str[i]!='\0'){
            no[i]=str[i];
            i++;
        }
    no[i]='\0';
}
//设置姓名
void Person::setName(char *str){
    int i=0;
    if (str)
        while(str[i]!='\0'){
            name[i]=str[i];
            i++;
        }
    name[i]='\0';
}
//获取身份证号
char* Person::getNo(){
    return no;
}
//获取姓名
char* Person::getName(){
    return name;
}

/* 请在这里填写答案 */

//主函数
int main(){
    char s1[19]="130502190001010332";
    char s2[20]="doublebest";
    char s3[19]="20181234";
    char s4[20]="铁1801";
    double value=60.67;
    Student stu1(s1,s2,s3,s4,value);
    stu1.show();
    Student stu2=stu1;
    cin.getline(s3,10,'\n');
    cin.getline(s4,20,'\n');
    cin>>value;
    stu2.setSNo(s3);
    stu2.setClassName(s4);
    stu2.show();
    Teacher t1(s1,s2,s3,s4,value);
    t1.show();
    Teacher t2=t1;
    t2.setTNo(s3);
    t2.setDepartmentName(s3);
    t2.show();
    return 0;
}
 

输入样例:

20181234
铁1801
45.45
 

输出样例:

Person Constructor run
Student Constructor run
No=130502190001010332,Name=doublebest
SNo=20181234,ClassName=铁1801,Score=61
Person CopyConstructor run
Student CopyConstructor run
No=130502190001010332,Name=doublebest
SNo=20181234,ClassName=铁1801,Score=61
Person Constructor run
Teacher Constructor run
No=130502190001010332,Name=doublebest
TNo=20181234,DepartmentName=铁1801,Wages=45
Person CopyConstructor run
Teacher CopyConstructor run
No=130502190001010332,Name=doublebest
TNo=20181234,DepartmentName=20181234,Wages=45
Teacher Destructor run
Person Destructor run
Teacher Destructor run
Person Destructor run
Student Destructor run
Person Destructor run
Student Destructor run
Person Destructor run

代码:

int round(double n)
{
if(n>0)
return n-int(n)>=0.5?int(n)+1:int(n);
else
return -n-int(-n)>=0.5?-(int(-n)+1):-(int(-n));
}
class Student:public Person
{
private:
char sNo[10];
char className[20];
double score;
public:
Student(char * a,char * b,char * c,char * d,double e=0.0):Person(a,b)
{
int i;
score=e;
i=0;
if(c!=0)
while(c[i]!='\0'){
sNo[i]=c[i];
i++;
}
sNo[i]='\0';
i=0;
if(d!=0)
while(d[i]!='\0'){
className[i]=d[i];
i++;
}
className[i]='\0';
cout<<"Student Constructor run"<<endl;
}
Student(const Student &p):Person(p)
{
int i;
score=p.score;
i=0;
while(p.sNo[i]!='\0'){
sNo[i]=p.sNo[i];
i++;
}
sNo[i]='\0';
i=0;
while(p.className[i]!='\0'){
className[i]=p.className[i];
i++;
}
className[i]='\0';
cout<<"Student CopyConstructor run"<<endl;
}
~Student()
{
cout<<"Student Destructor run"<<endl;
}
void setSNo(char * c)
{
int i=0;
if (c)
while(c[i]!='\0'){
sNo[i]=c[i];
i++;
}
sNo[i]='\0';
}
char * getSNo()
{
return sNo;
}
void setClassName(char * d)
{
int i=0;
if (d)
while(d[i]!='\0'){
className[i]=d[i];
i++;
}
className[i]='\0';
}
char* getClassName()
{
return className;
}
void setScore(double e)
{
score=e;
}
double getScore()//分别返回和设置成绩score(当参数缺省时视为0.0)
{
return score;
}
void show()const
{
cout<<"No="<<no<<",Name="<<name<<endl;
cout<<"SNo="<<sNo<<",ClassName="<<className<<",Score="<<round(score)<<endl;
}
};
class Teacher:public Person
{
private:
char tNo[10];
char departmentName[20];
double wages;
public:
Teacher(char * a, char * b, char * c,char * d, double e=0.0):Person(a,b)
{
int i;
wages=e;
i=0;
if(c!=0)
while(c[i]!='\0'){
tNo[i]=c[i];
i++;
}
tNo[i]='\0';
i=0;
if(d!=0)
while(d[i]!='\0'){
departmentName[i]=d[i];
i++;
}
departmentName[i]='\0';
cout<<"Teacher Constructor run"<<endl;
}

Teacher(const Teacher &p):Person(p)
{
int i;
i=0;
while(p.tNo[i]!='\0'){
tNo[i]=p.tNo[i];
i++;
}
tNo[i]='\0';
i=0;
while(p.departmentName[i]!='\0'){
departmentName[i]=p.departmentName[i];
i++;
}
departmentName[i]='\0';
wages=p.wages;
cout<<"Teacher CopyConstructor run"<<endl;
}
~Teacher()
{
cout<<"Teacher Destructor run"<<endl;
}
void setTNo(char * c)
{
if(c==NULL)
{
*tNo='\0';
}
int i=0;
if (c)
while(c[i]!='\0'){
tNo[i]=c[i];
i++;
}
tNo[i]='\0';
}
char * getTNo()
{
return tNo;
}
void setDepartmentName(char * d)
{
if(d==NULL)
{
*departmentName='\0';
}
int i=0;
if (d)
while(d[i]!='\0'){
departmentName[i]=d[i];
i++;
}
departmentName[i]='\0';

}
char* getDepartmentName()
{
return departmentName;
}
void setWages(double e)
{
wages=e;
}
double getWages()
{
return wages;
}
void show() const
{
cout<<"No="<<no<<",Name="<<name<<endl;
cout<<"TNo="<<tNo<<",DepartmentName="<<departmentName<<",Wages="<<round(wages)<<endl;
}
};

 

标签:char,run,第二个,Person,void,问题,第十四天,Student,Teacher
From: https://www.cnblogs.com/czfznb/p/17372128.html

相关文章

  • 问题解答 | FMCW TDMA-MIMO毫米波雷达信号处理仿真
    本文编辑:@调皮连续波,保持关注调皮哥,获得更多雷达学习资料和建议!大家好,我是调皮哥,今天继续给大家分享干货,助力大家轻松、快乐、有方向地学习雷达。之前分享的文章:雷达仿真|FMCWTDMA-MIMO毫米波雷达信号处理仿真(可修改为DDMA-MIMO)当中,存在几个小问题(bug),具体如下:第十节:多普勒补偿”......
  • 部署Kubeadm遇到的哪些问题,并且如何解决
    1)设置错误导致kubeadm安装k8s失败提示:ERRORFileContent–proc-sys-net-bridge-bridge-nf-call-iptables[root@node01data]#kubeadmjoinmasterIP地址:6443--tokenabcdef.0123456789abcdef>--discovery-token-ca-cert-hashsha256:e7a08a24b68c738cccfcc3ae56b7a433......
  • 雷达问问 | 2023年02月第三次问题及解答汇总
    【雷达问问】是公众号平台新推出的一个文章板块,目的是搜集在雷达技术交流群、私信、知乎,以及其他地方的关于雷达的问题或信息,方便为后来人提供参考。关于问题的解答,主要是雷达行业人员的回答,并不是权威,仅供大家参考,如有疑问,欢迎交流。【雷达问问】1、初学者想问下:波束形成和DOA估计......
  • 互联网医院系统源码:数据安全与隐私保护问题如何解决?
    当下,互联网医院系统源码已经走进了很多人的视野中,它的作用和好处小编就不用强调了,今天我们来聊另一个话题——隐私与数据安全。在智慧医疗行业,安全问题更是重中之重,这也自然而然成为了老生常谈的一个问题。本文小编将从互联网医院系统源码的数据安全与隐私保护的意义、当前面临的挑......
  • "IWR1642单帧串口数据采集" 一些问题与解决
    公众号【调皮连续波】【正文】问题描述:最近,有粉丝在使用TIIWR1642BOOST评估板时,不采用DCA1000,利用单板的串口输出一帧数据时,出现数据显示不全的问题。以下是出现问题时输出的不完全的数据帧:(数据帧的帧头部分经过注释处理,其中的HEX内容和原始数据是一致的)可以看到上述数据帧的总字......
  • MRP的问题
    MRP的问题一、MRP简介1.MRP(MaterialRequirementsPlanning,物料需求计划)是一种生产计划系统,通过对物料需求进行计算,制定生产计划以及物料采购计划,以保证生产活动的顺利进行。2.历史MRP的起源可以追溯到20世纪50年代,当时由于经济的发展和生产的复杂化,生产计划变得越......
  • vue this.$router.push 页面传值问题
    在修改一个别人的bug的时候发现一个问题,记录一下,vue前端页面在刷新页面后只读页面可以编辑了在前一个传值页面他的写法是this.$router.push({name:'xxx',query:{isEdit:false}});在接收的时候写的是this.isEdit=this......
  • C语言函数指针数组,GCC编译问题
    使用C语言函数指针数组实现简单的计算器,代码如下#include<stdio.h>#include<stdlib.h>doubleadd(doublea,doubleb){return(a+b);};doublesub(doublea,doubleb){return(a-b);};doublemul(doublea,doubleb){return(a*b);};doubl......
  • 表单的el-input无法输入问题
    问题描述通过js方法等于号赋值后,页面输入框输入或删除内容无反应修改方法(1)使用$focusUpdate,在@input中调用,强制刷新dom,这样可能会导致表单rule校验失效 (2)使用$set替换等于号赋值内容参考vue中的$forceUpdate()......
  • 空指针指向地址问题
    //src=data.path;charfilepath2[64]={0};strcpy(filepath2,"/tmp/mnt/usb1_1/gw_upgrade/V1.0.0.bin");src=filepath2;空指针指向地址问题空指针指向地址问题空指针指向地址问题空指针指向地址问题......