C++高级语言程序设计实验七-中国矿业大学

第一题

题目描述

对本章示范题的用于管理商店商品的实现程序进行完善:完成Wardrobe立柜类的具体定义与使用,并添加“帽子仓库类”以及“立柜仓库类”的定义及使用,以使程序能够对商店的这三种商品(衬衣、帽子、立柜)进行简单的管理与应用。
要对商品实现的操作有:商品的进库(增加某类商品及其库存量),商品的出库(减少某类商品及其库存量),以及某类商品总价格的计算。

源代码

#include<iostream>
using namespace std;
class Complex
{
    private:
        double real;
        double imag;
    public:
        Complex()
        {
            real=0;
            imag=0;
        }
        Complex(double r, double i)
        {
            real=r;
            imag=i;
        }
        Complex AddCom(Complex c2);
        void OutCom();
};
 
Complex Complex::AddCom(Complex c2)
{
    real += c2.real;
    imag += c2.imag;
    return * this;
}
void Complex::OutCom()
{
    if (real == 0)
        cout << imag << "i";
    else if (imag == 0)
        cout << real;
    else
        cout << real << "+" << imag << "i";
}
int main()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    Complex c1(a, b);
    Complex c2(c, d);
    c1.AddCom(c2);
    c1.OutCom();
}

运行结果

C++高级语言程序设计实验七-中国矿业大学

第二题

题目描述

自定义一个简单日期类 DateType,它具有数据成员 y、m、d,用来表示当前日期的年、月、日。
而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。
class DateType {
//自定义的日期类 DateType
int y,m,d;
//数据成员,表示当前日期的年、月、日
public:
DateType(int y0=1, int m0=1, int d0=1);
//构造函数,设定年、月、日;并设置参数默认值
void IncrementDay();
//增加 1 天
bool Equal(DateType dt2);
//判断二日期是否相等
void PrintDate();
//屏幕输出日期对象的有关数据(年、月、日)
};
1、完成有参构造函数
2、完成 void IncrementDay()函数,计算天数加1后的日期。
3、完成Equal(DateType dt2)函数,判断两个日期是否相等。
4、完成打印输出函数PrintDate(),在屏幕上输出日期对象的有关数据(年、月、日)
5、编写并完成主函数,实现输入包含六个整数,说明DateType类对象dt1,dt2,分别是dt1和dt2的年月日。请先输出dt1,dt2,然后判断dt1,dt2是否相等,再对dt1,dt2分别增加一天。最后输出dt1,dt2。
注意:在IncrementDay成员函数中,当对日期增加1天后,要注意所谓的“进位”问题:首先算出本“日”所在的月份具有的天数N(注意闰年与平年的2月份天数不一样),若加1之后的“日”数值超过所在的月份具有的天数N时,“进位”到月,而月份若超过12时还要“进位”到年等。

源代码

#include<iostream>
using namespace std;
 
class DateType{
    protected:
        int y;
        int m;
        int d;
    public:
        DateType(int yy=0,int mm=0,int dd=0):y(yy),m(mm),d(dd){}
        void PrintDate()
        {
            cout << y << "-" << m << "-" << d;
        }
        void up()
        {
            int g[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
            if(y%4==0&&y%100!=0||y%400==0) g[2] = 29;
            d++;
            if(d>g[m])
            {
                d-=g[m];
                m++;
                if(m>12)
                {
                    m-=12;
                    y++;
                }
            }
        }
};
class TimeType{
    protected:
        int h;
        int m;
        int s;
    public:
        TimeType(int hh=0,int mm=0,int ss=0):h(hh),m(mm),s(ss){}
        void PrintTime()
        {
            cout << h << ":" << m << ":" << s;
        }
        int up(int ss)
        {
            s+=ss;
            int temp = s/60;
            if(temp)
            {
                m+=temp;
                s-=60*temp;
                temp=m/60;
                if(temp)
                {
                    h+=temp;
                    m-=60*temp;
                    temp=h/24;
                    if(temp)
                    {
                        h-=24*temp;
                        return temp;
                    }
                }
            }
            return 0;
        }
};
class DateTimeType {  
    DateType date;
    TimeType time;
    public:
        DateTimeType(int y0=1, int m0=1, int d0=1, int hr0=0, int mi0=0, int se0=0):date(y0,m0,d0),time(hr0,mi0,se0){}
        DateType& GetDate(){ return date; } 
        TimeType& GetTime(){ return time; } 
        void IncrementSecond(int s)
        {
            //如果大于24小时 
 
            if(time.up(s))
            {
                date.up();//日期增加一天 
            }
        }
        void PrintDateTime()
        {
            date.PrintDate();
            cout << " ";
            time.PrintTime();
            cout << endl;
        }
};
 
int main(){
    DateTimeType dttm1(1999,12,31,23,59,59), dttm2;
    (dttm1.GetDate()).PrintDate(); 
    cout<<endl;
    dttm1.PrintDateTime(); 
    dttm2.PrintDateTime();
    dttm1.IncrementSecond(30); 
    dttm1.PrintDateTime();
    return 0;
}

运行截图

C++高级语言程序设计实验七-中国矿业大学

第三题

题目描述

设计一个学生类(CStudent),其私有数据成员:注册号、姓名、数学、外语、计算机课程的成绩。公有成员函数是:求三门课总成绩的函数 Sum;求三门课平均成绩的函数 Average;显示学生数据信息的函数 Display;设置学生数据信息的函数 SetData。
1.可按如下样式设计 CStudent类的各数据成员以及成员函数
class CStudent { //学生类 CStudent
unsigned long reg_num; //数据成员:注册号
char name[30]; //数据成员:姓名
float math, eng, comp; //数据成员:数学、英语、计算机成绩
public: //公有成员函数
float Sum(); //求三门课总成绩的函数 Sum
float Average(); //求三门课平均成绩的函数 Average
Display(); //显示学生数据信息的函数 Display
SetData (unsigned long r, char* n, float m, float e, float c) ;
//设置学生数据信息的函数 SetData
};
在主函数,通过使用“CStudent stu[150];”的语句,来说明一个CStudent类对象的数组stu,而后通过各对象stu[i]来处理并求取每一学生的总成绩、平均成绩等。
(1)输入本次欲处理的学生人数 TOTAL(小于等于 150 的正整数);
(2)输入全班 TOTAL 个学生的有关信息,依次放入对象数组的各元素 stu[i]中(通过使用“stu[i].SetData(...);”形式的语句来实现);
(3)对全班TOTAL个学生,依次通过对象stu[i]来求出其总成绩、平均成绩等(其中要使用形如“stu[i].Sum()”以及“stu[i].Average()”式样的对成员函数进行调用的语句),并同时求出全班学生总成绩最高者处于 stu 数组的下标位置idx_max,而后通过使用“stu[idx_max].Display();”来输出该学生有关的全部数据信息。

源代码

#include<iostream>
#include<string>
using namespace std;
 
class Person{
    protected:
        string name;
        int age;
        string sex;
    public:
        Person(){}
        Person(string n,int a,string s):name(n),age(a),sex(s){}
        void Display()
        {
            cout << name << " " << age << " " << sex;
        }
};
class Student:public Person{
    protected:
        int regnum;
        string department;
    public:
        Student(){}
        Student(string n,int a,string s,int r,string d)
        {
            name=n;age=a;sex=s;regnum=r;department=d;
        }
        void Display()
        {
            Person::Display();
            cout << " " << regnum << " " << department;
        }
};
class GraduateStudent:public Student{
    protected:
        string advisor;
    public:
        GraduateStudent(){};
        GraduateStudent(string n,int a,string s,int r,string d,string ad):Student(n,a,s,r,d),advisor(ad){}
        void Display()
        {
            Student::Display();
            cout << " " << advisor;
        }
};
class Teacher:public Person{
    protected:
        string course;
        string post;
    public:
        Teacher(string n,int a,string s,string c,string p):Person(n,a,s),course(c),post(p){}
        void Display()
        {
            Person::Display();
            cout << " " << course << " " << post;
        }
};
 
int main()
{
    cout << "== per1.Display() => name,age,sex" << endl;
    Person per1("sun",42,"M");
    per1.Display();cout << endl;
    cout << "== stu1.Display() => name,age,sex,Reg_Number,department" << endl;
    Student stu1("guo",22,"F",1001,"comp");
    stu1.Display();cout << endl;
    cout << "== teach1.Display() => name,age,sex,course,post" << endl;
    Teacher teach1("fang",38,"M","english","professor");
    teach1.Display();cout << endl;
    cout << "== gStu.Display() => name,age,sex,Reg_Number,department,advisor" << endl;
    GraduateStudent gStu("wu",25,"M",1021,"comp","wei");
    gStu.Display();
    return 0;
}

运行截图

C++高级语言程序设计实验七-中国矿业大学

上一篇:Git submodule 特性


下一篇:20192309 2020-2021-1 《数据结构与面向对象程序设计》 实验三