1. 程式人生 > 實用技巧 >C++高階語言程式設計實驗七-中國礦業大學

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();
}

執行結果

第二題

題目描述

自定義一個簡單日期類 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;
}

執行截圖

第三題

題目描述

設計一個學生類(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;
}

執行截圖