• 个人简历制作
  • 个人简历模板
  • 个人简历范文
  • 个人简历表格
  • 个人简历封面
  • 英文简历
  • 当前位置: 工作范文网 > 简历 > 个人简历模板 > 正文

    南昌大学面向对象程序设计实验报告

    时间:2020-09-28 08:50:54 来源:工作范文网 本文已影响 工作范文网手机站

    南昌大学面向对象程序设计实验报告

    南昌大学实验报告

    学生姓名: 郭银博 学 号: 5602211023 专业班级:自动化113班

    实验类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期: 实验成绩:

    实验一熟悉C++的上机环境

    一.实验目的

    1.初步了解C++程序的编译、连接和运行的过程。?

    2.掌握和理解C++程序的结构。

    二.实验内容

    1.使用VC

    2.运行一个简单的C++程序

    ?3.编程求出对象中两个数据的和与差

    三.实验环境PC微机;Windows?

    操作系统;VC程序集成环境。

    四、实验程序

    #include

    class A

    {

    public:

    A(){a=b=0;}

    A(int a,int b)

    {a=a;b=b;}

    add(int a,int b)

    {int c=a+b;

    cout

    #include

    class A

    {public:

    A(char * st);

    ~A()

    {cout

    class Rational

    {public:

    Rational(int d,int n)

    {

    den=d;

    num=n;

    cout

    class A

    {

    public:

    A(int i,int j){a=i;b=j;}

    void Move(int x,int y){a+=x;b+=y;}

    void Show(){cout

    class A

    {public:

    A()

    {x=y=0;

    cout

    class A

    {public:

    A(){ver='A';}

    virtual void print()

    { coutprint();}

    void main()

    {

    A a;

    D1 d1(4);

    D2 d2(100);

    D3 d3(-25);

    print_info(&a);

    print_info(&d1);

    print_info(&d2);

    print_info(&d3);

    }

    五、实验结果分析:

    这个实验是有关动态联编内容的,程序中开始定义了一个类A,又定义了一个类D1,它是对A的公有继承,又定义一个类D2,也是对A的共有继承,而累D3是对D1的公有继承。每个类都有一个输出函数,同名同参数、同返回值,但是A类中说明为虚函数,并且是通过一个函数(参数为A类指针),还满足子类型关系,满足了动态联编的条件,这就说明为动态联编。

    把程序输进去,直至编译没有错误,运行,结果与分析结果一致。这就说明确实是采用的动态联编,根据调用的对象进行连接,就输出对应实参的相关数据。

    通过书上几个题目、上机以及老师讲授,目前对静态联编和动态联编搞的差不多了,不会很模糊了。

    南昌大学实验报告

    学生姓名: 郭银博 学 号: 5602211023 专业班级:自动化113班

    实验类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期: 实验成绩:

    实验七 扑克牌游戏程序设计

    一、实验目的:通过这个扑克牌游戏加深对c++的理解,学习函数封装思想。

    二.实验内容

    1.使用VC

    2.利用所给函数,建立一个类,通过类编出一个程序实现扑克牌的发牌。

    三.实验环境PC微机;Windows?

    操作系统;VC程序集成环境。

    四、实验程序

    #include

    #include

    #include

    enum suit {clubs, diamonds,hearts,spades};//花色枚举

    typedef int pips;//牌数

    struct card

    {suit s; pips p;};

    struct deck

    { card d[52];};

    class A

    { public:

    void init(){init_deck(deck1);}

    void shuffle()

    {shuffle(deck1);}

    void deal()

    {deal(52, 1, deck1.d, deck1);}

    void print_deck()

    {print_deck(deck1);}

    void person();

    void A::everyone();

    pips assign_pips(int n);

    suit assign_suit(int n);

    void assign(int n, card& c);

    void init_deck(deck& dk);

    pips get_pip(card c);

    suit get_suit(card c);

    void print_card(card c);

    void print_deck(deck& dk);

    void shuffle(deck& dk);

    void deal(int n, int pos, card* hand, deck& dk);

    private:

    deck deck1;

    };

    pips A::assign_pips(int n)//发牌数字

    { return (n%13+1);}

    suit A::assign_suit(int n)//发牌花色

    {

    return (static_cast(n/13));

    }

    void A::assign(int n, card& c)//每人得到的牌

    {

    c.s= assign_suit(n);

    c.p= assign_pips(n);

    }

    void A::init_deck(deck& dk)//初始化发牌

    {

    for (int i=0; i<52;++i)

    assign(i, dk.d[i]);

    }

    pips A::get_pip(card c)//返回取得牌数

    {

    return c.p;

    }

    suit A::get_suit(card c)//返回取得花色

    {

    return c.s;

    }

    void A::print_card(card c)//输出每张牌

    {

    cout<<c.p;

    switch(c.s)

    {

    case clubs:

    cout<<C ;

    break;

    case diamonds:

    cout<<D ;

    break;

    case hearts:

    cout<<H ;

    break;

    case spades:

    cout<<S ;

    }

    }

    void A::print_deck(deck& dk)//一张一张输出每个人(所有)的牌

    {

    for (int i=0; i<52;++i)

    print_card(dk.d[i]);

    }

    void A::shuffle(deck& dk)//洗牌(交换两张牌下标)

    {

    card t;

    for (int i=0; i<52;++i)

    {

    int k=(rand()%(52-i));

    t=dk.d[i];

    dk.d[i]= dk.d[k];

    dk.d[k]=t;

    }

    }

    void A::deal(int n, int pos, card* hand, deck& dk)//发牌

    {

    for (int i=pos; i<pos+n; ++i)

    hand[i-pos]=dk.d[i];

    }

    void A::person()

    {

    int n=0;

    for(int j=0;j<13;j++)

    {

    for(int i=0;i<4,n++;i++)

    d1[j][i]=deck1.d[n];

    }

    for(int m=0;m<4;m++)

    {

    for(int n=0;n<13;n++)

    print_card(d1[n][m]);

    //cout<<第<<i<<个人的牌:<<d1[i][j]<<endl;

    }

    }

    void A::everyone()

    {int n=0;

    for(int i=0;i<4;i++)

    {cout<<第<<++i<<个人的牌:;

    i--;

    for(int j=13*i;j<13*(i+1);j++)

    print_card(deck1.d[j]);

    cout<<endl;

    }

    }

    void main()

    {A a;

    srand(time(NULL)); // seed rand() from time()

    //struct deck1;

    a.init();

    a.shuffle();

    //for(int b;b<12;b++)

    a.deal();

    a.print_deck();

    cout<<endl;

    a.everyone();

    }

    五、实验结果分析:

    这是一个比较综合的实验,利用这学期所学知识,编写一个扑克牌游戏。之前所做实验都是某一个知识点的运用,并且真正自己写程序的很少,大多都是照书上写完运行。而这个实验要自己看懂,然后建立类,写主函数。

    由于怕自己课上完不成,于是就课下先看了一下各个程序,读懂它的作用以及实现,并在各个程序后面进行了注释。

    pips A::assign_pips(int n)//发牌数字

    suit A::assign_suit(int n)//发牌花色

    void A::assign(int n, card& c)//每人得到的牌

    void A::init_deck(deck& dk)//初始化发牌

    pips A::get_pip(card c)//返回取得牌数

    suit A::get_suit(card c)//返回取得花色

    void A::print_card(card c)//输出每张牌

    void A::print_deck(deck& dk)//一张一张输出每个人(所有)的牌

    void A::shuffle(deck& dk)//洗牌(交换两张牌下标)

    void A::deal(int n, int pos, card* hand, deck& dk)//发牌

    void A::everyone()//输出发给每个人的牌

    上课后重新熟悉一下各个函数,开始编程,遇到不少问题,就一次次地根据错误提示进行修改,程序在不断减少,最后还有两个错误,就是说成员函数的参数没有定义,但是回去看,明明已经定义了。在老师帮助下搞明白了,因为参数为类 的私有成员,根据所学知识,只有成员函数才能对其进行操作。而它却不能直接作为成员函数的参数,解决方法就是在定义一个无参成员函数对这个成员函数进行调用,最终成功了。但是他只是输出52个随机牌。我回去又进一步改进,使程序能输出每个人的牌,开始建立一个二维数组,但是就是不行,回到宿舍改进一下,最终终于成功了。

    通过这个实验,使我对于类的封装性,以及函数对类私有成员调用有了更深入的了解,感觉知识要深入理解。

    有关的专题