中文字幕在线流畅不卡精品,在线视频综合站,国产精品137页,亚洲制服丝袜中文字幕在

<td id="urspe"></td>
<small id="urspe"><menuitem id="urspe"></menuitem></small><small id="urspe"><sup id="urspe"></sup></small>

  • <small id="urspe"></small>
    <sub id="urspe"><menu id="urspe"><samp id="urspe"></samp></menu></sub>

    中南大學(xué)c++實(shí)踐報(bào)告

    發(fā)布時(shí)間:2017-07-12  編輯:沈舒文 手機(jī)版

      星期三四五

      實(shí)訓(xùn)內(nèi)容

      1、模擬網(wǎng)上購(gòu)書結(jié)賬功能;

      實(shí)訓(xùn)要求

      1、給出詳細(xì)的需求分析和描述,并給出實(shí)際需求分析文檔和UML描述;

      2、給出詳細(xì)設(shè)計(jì)文檔及UML描述;

      3、根據(jù)詳細(xì)設(shè)計(jì)的結(jié)果,寫出完整的C++代碼。要注意編碼風(fēng)格與編碼規(guī)范。

      4、根據(jù)測(cè)試?yán)碚摚瑢懗鰷y(cè)試數(shù)據(jù)并給出詳細(xì)測(cè)試報(bào)告;

      5、對(duì)該系統(tǒng)的可擴(kuò)充性、可修改性和可維護(hù)性給出客觀的評(píng)價(jià)。

     、賳栴}分析與功能定義:

      本體是一個(gè)非常實(shí)用的題目。

      隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)上購(gòu)物越來越受到大家的喜愛,坐在家中,點(diǎn)點(diǎn)鼠標(biāo),就有人把你要的東西送到手中,多愜意呀。

      現(xiàn)在要解決的問題是:用戶網(wǎng)上購(gòu)書以后,系統(tǒng)根據(jù)購(gòu)書人的不同類型計(jì)算出購(gòu)書人的費(fèi)用。

      網(wǎng)上購(gòu)書的一般過程是:用戶首先輸入他的會(huì)員號(hào),然后,選擇想買的書籍放到購(gòu)書筐中,選擇結(jié)束以后,用戶要求系統(tǒng)結(jié)賬,系統(tǒng)編輯算出費(fèi)用通知用戶。本例并不像模擬網(wǎng)上購(gòu)書的全部過程,所以會(huì)把選擇書的過程省去,假設(shè)用戶已經(jīng)選定了兩本書。

      根據(jù)實(shí)際情況,確定了購(gòu)書人可分為三類:普通人、會(huì)員、貴賓。

     、趯(duì)象(類)設(shè)計(jì)

      根據(jù)上面的分析,需要設(shè)計(jì)一個(gè)基類buyer和它的3個(gè)派生類member(會(huì)員)、layfolk(普通人)、honoured_guest(貴賓);愔邪臄(shù)據(jù)成員是姓名、購(gòu)書人編號(hào)、地址、購(gòu)書金額。Member類中除了繼承了buyer的數(shù)據(jù),還增加了會(huì)員級(jí)別:honoured_guest則增加了折扣率一項(xiàng)。

      在基類中定義了構(gòu)造函數(shù)和對(duì)所有類型的購(gòu)書人相同的操作,getbuyname()負(fù)責(zé)取出購(gòu)書者的姓名;getaddress()負(fù)責(zé)取出購(gòu)書者的地址;getpay()負(fù)責(zé)取出購(gòu)書者應(yīng)付的金額;getid()負(fù)責(zé)取出購(gòu)書者的編號(hào)。

      有關(guān)購(gòu)書者的定義類如下:

      class buyer

      {

      protected:

      string name;

      int buyerID;

      string address;

      double pay;

      public:

      buyer();

      buyer(string n,int b,string a,double p);

      string getbuyername();

      string getaddress();

      double getpay();

      int getid();

      virtual void display()=0;

      virtual void setpay(double=0)=0;

      };

      class member:public buyer

      {

      public:

      member(string n,int b,int l,string a,double p):buyer(n,b,a,p)

      {leaguer_grade=1;}

      void display();

      void setpay(double p);

      private:

      int leaguer_grade;

      };

      class honoured_guest:public buyer

      {

      double discount_rate;

      public:

      honoured_guest(string n,int b,double r,string a,double p):buyer(n,b,a,p)

      {discount_rate=r;}

      void display();

      void setpay(double p);

      };

      class layfolk:public buyer

      {

      public:

      layfolk(string n,int b,string a,double p):buyer(n,b,a,p)

      { }

      void display();

      void setpay(double p);

      };

      由于在計(jì)算購(gòu)書金額的時(shí)要知道用戶買了那些書以及書的原價(jià),所以必須建立一個(gè)類book,幫助完成對(duì)數(shù)的有關(guān)操作。

      類book的定義如下:

      class book

      {

      protected:

      string book_ID;

      string book_name;

      string auther;

      string publishing;

      double price;

      public:

      book();

      book(string b_id,string b_n,string au,string pu,double pr);

      void display();

      string getbook_ID();

      string getbook_name();

      string getauther();

      string getpublishing();

      double getprice();

      };

      從book到buyer類的箭頭表示:book對(duì)象要傳消息給buyer對(duì)象。

      class string

      {

      friend ostream& operator<<(ostream& S,const string& Str);

      friend istream& operator>>(istream& S,string& Str);

      public:

      string();

      string(const string& Str);

      void operator=(const string& Str);

      ~string();

      string(char * p);

      private:

      short m_Length;

      char * m_Data;

      };

      ③核心控制設(shè)計(jì)

      在主函數(shù)中我們要做的操作包括:

      (1) 建立繼承了基類buyer的3各類對(duì)象。

      (2) 建立兩個(gè)book對(duì)象。

      (3) 請(qǐng)用戶輸入購(gòu)書人的編號(hào)。

      (4) 通過編號(hào)查詢到相應(yīng)的對(duì)象。

      (5) 用對(duì)象的計(jì)算金額的方法計(jì)算購(gòu)書金額。

     、芫幋a與測(cè)試

      完成前幾階段的工作,現(xiàn)在就可以編碼實(shí)現(xiàn)程序了。

      程序中包括了4個(gè)文件:buy.h、book..h、strclass.h和buy_book.cpp文件。

      Buy_book.cpp程序中有main()函數(shù)

      完整程序及相應(yīng)的說明如下:

      //buy.h文件

      class buyer

      {

      protected:

      string name;

      int buyerID;

      string address;

      double pay;

      public:

      buyer();

      buyer(string n,int b,string a,double p);

      string getbuyername();

      string getaddress();

      double getpay();

      int getid();

      virtual void display()=0;

      virtual void setpay(double=0)=0;

      };

      class member:public buyer

      {

      public:

      member(string n,int b,int l,string a,double p):buyer(n,b,a,p)

      {leaguer_grade=1;}

      void display();

      void setpay(double p);

      private:

      int leaguer_grade;

      };

      class honoured_guest:public buyer

      {

      double discount_rate;

      public:

      honoured_guest(string n,int b,double r,string a,double p):buyer(n,b,a,p)

      {discount_rate=r;}

      void display();

      void setpay(double p);

      };

      class layfolk:public buyer

      {

      public:

      layfolk(string n,int b,string a,double p):buyer(n,b,a,p)

      { }

      void display();

      void setpay(double p);

      };

      buyer::buyer()

      {

      name="";

      buyerID=0;

      address="";

      pay=0;

      }

      buyer::buyer(string n,int b,string a,double p)

      {

      name=n;

      buyerID=b;

      address=a;

      pay=p;

      }

      double buyer::getpay()

      {return pay;}

      string buyer::getaddress()

      {return address;}

      string buyer::getbuyername()

      {return name;}

      int buyer::getid()

      {return buyerID;}

      void member::display()

      {

      cout<<"購(gòu)書人姓名:"<

      cout<<"購(gòu)書人編號(hào):"<

      cout<<"購(gòu)書人為會(huì)員,級(jí)別:"<

      cout<<"地址 :"<

      }

      void member::setpay(double p)

      {

      if(leaguer_grade==1)

      pay=.95*p+pay;

      else if(leaguer_grade==2)

      pay=.90*p+pay;

      else if(leaguer_grade==3)

      pay=.85*p+pay;

      else if(leaguer_grade==4)

      pay=.8*p+pay;

      else if(leaguer_grade==5)

      pay=.7*p+pay;

      else

      cout<<"級(jí)別錯(cuò)誤!";

      }

      void honoured_guest::display()

      {

      cout<<"購(gòu)書人姓名:"<

      cout<<"購(gòu)書人編號(hào):"<

      cout<<"購(gòu)書人為貴賓,折扣率為:"<

      cout<<"地址 :"<

      }

      void honoured_guest::setpay(double p)

      { pay=pay+(1-discount_rate)*p; }

      void layfolk::display()

      {

      cout<<"購(gòu)書人姓名:"<

      cout<<"購(gòu)書人編號(hào):"<

      cout<<"購(gòu)書人為普通人"<<"\n";

      cout<<"地址:"<

      }

      void layfolk::setpay(double p)

      {pay=pay+p;}

      //buy.h結(jié)束

      //book.h開始

      class book

      {

      protected:

      string book_ID;

      string book_name;

      string auther;

      string publishing;

      double price;

      public:

      book();

    123

    最熱文章榜Hot  Top