欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      c++作業(yè)

      時(shí)間:2019-05-12 06:25:43下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《c++作業(yè)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《c++作業(yè)》。

      第一篇:c++作業(yè)

      P179 5.9.2(11)

      1.意圖

      保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。

      2.動機(jī)

      對一些類來說,只有一個(gè)實(shí)例是很重要的。雖然系統(tǒng)中可以有許多打印機(jī),但卻只應(yīng)該有一個(gè)打印假脫機(jī)(printer spooler),只應(yīng)該有一個(gè)文件系統(tǒng)和一個(gè)窗口管理器。一個(gè)數(shù)字濾波器只能有一個(gè)A / D轉(zhuǎn)換器。一個(gè)會計(jì)系統(tǒng)只能專用于一個(gè)公司。

      我們怎么樣才能保證一個(gè)類只有一個(gè)實(shí)例并且這個(gè)實(shí)例易于被訪問呢?一個(gè)全局變量使得一個(gè)對象可以被訪問,但它不能防止你實(shí)例化多個(gè)對象。一個(gè)更好的辦法是,讓類自身負(fù)責(zé)保存它的唯一實(shí)例。這個(gè)類可以保證沒有其他實(shí)例可以被創(chuàng)建(通過截取創(chuàng)建新對象的請求),并且它可以提供一個(gè)訪問該實(shí)例的方法。這就是Singleton模式。

      3.適用性

      在下面的情況下可以使用Singleton模式.當(dāng)類只能有一個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知的訪問點(diǎn)訪問它時(shí)。當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過子類化可擴(kuò)展的,并且客戶應(yīng)該無需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。

      4.結(jié)構(gòu)

      5.參與者

      Singleton

      定義一個(gè)GetInstance操作,允許客戶訪問它的唯一實(shí)例。GetInstance是一個(gè)類操作(即Smalltalk中的一個(gè)類方法和C++中的一個(gè)靜態(tài)成員函數(shù))??赡茇?fù)責(zé)創(chuàng)建它自己的唯一實(shí)例。

      6.協(xié)作

      客戶只能通過Singleton的GetInstance操作訪問一個(gè)Singleton的實(shí)例。

      7.效果

      Singleton模式有許多優(yōu)點(diǎn):

      1)對唯一實(shí)例的受控訪問因?yàn)镾ingleton類封裝它的唯一實(shí)例,所以它可以嚴(yán)格的控制客戶怎樣以及何時(shí)訪問它。

      2)縮小名空間Singleton模式是對全局變量的一種改進(jìn)。它避免了那些存儲唯一實(shí)例的全局變量污染名空間。

      3)允許對操作和表示的精化Singleton類可以有子類,而且用這個(gè)擴(kuò)展類的實(shí)例來配置一個(gè)應(yīng)用是很容易的。你可以用你所需要的類的實(shí)例在運(yùn)行時(shí)刻配置應(yīng)用。

      4)允許可變數(shù)目的實(shí)例這個(gè)模式使得你易于改變你的想法,并允許Singleton類的多個(gè)實(shí)例。此外,你可以用相同的方法來控制應(yīng)用所使用的實(shí)例的數(shù)目。只有允許訪問Singleton實(shí)例的操作需要改變。

      5)比類操作更靈活另一種封裝單件功能的方式是使用類操作(即C++中的靜態(tài)成員函數(shù)或者是Smalltalk中的類方法)。但這兩種語言技術(shù)都難以改變設(shè)計(jì)以允許一個(gè)類有多個(gè)實(shí)例。

      此外,C++中的靜態(tài)成員函數(shù)不是虛函數(shù),因此子類不能多態(tài)的重定義它們。

      8.實(shí)現(xiàn)

      class Singleton

      {

      static std::auto_ptr m_pInstance;

      protected:

      //prevent user making our any instance by manually

      //構(gòu)造函數(shù)是保護(hù)類型的。

      Singleton(){}

      public:

      ~Singleton(){}

      //Return this singleton class' instance pointer

      static Singleton* Instance()

      {

      if(!m_pInstance.get())

      {

      m_pInstance = std::auto_ptr(new Singleton());

      }

      return m_pInstance.get();

      }

      };

      怎樣來使用它呢?不要試圖從這個(gè)類派生你的單件子類,那樣的結(jié)果是不妥當(dāng)?shù)模绻阈枰鄠€(gè)單件子類,還是使用下面的宏定義更為妥當(dāng):

      #define DEFINE_SINGLETON(cls)

      private:

      static std::auto_ptr m_pInstance;

      protected:

      cls(){}

      public:

      ~cls(){}

      static cls* Instance(){

      if(!m_pInstance.get()){

      m_pInstance = std::auto_ptr(new cls());

      }

      return m_pInstance.get();

      }

      #define IMPLEMENT_SINGLETON(cls)

      std::auto_ptr cls::m_pInstance(NULL);

      假定你需要實(shí)現(xiàn)一個(gè)單件類YY,這樣書寫:

      class YY

      {

      DEFINE_SINGLETON(YY);

      public:

      //your interfaces here...};

      在cpp文件中,書寫:

      IMPLEMENT_SINGLETON(YY);

      需要引入這個(gè)類的實(shí)例的時(shí)候,使用這樣的語句:

      YY* pYY = YY::Instance();

      這,就是全部。

      如果需要定義其他的單件類,重復(fù)上面的定義,就可以了。

      當(dāng)想集中管理一個(gè)應(yīng)用程序所需的所有配置時(shí),可以聲明一個(gè)CToolsOptions的類,其中包含配置屬性集合。對于這個(gè)類的實(shí)例,顯然是一個(gè)實(shí)例就夠了;當(dāng)編寫繪圖程序時(shí),考慮繪制矩形,圓形等分別使用CGraphTool派生的工具類,每個(gè)派生類負(fù)責(zé)處理具體的繪制動作和相關(guān)的UI相應(yīng)邏輯。這些工具類典型的在被用戶選擇工具欄的圖元按鈕時(shí)被選中。依照這種模式,你應(yīng)該對所有的圖元工具從事注冊工作,使得繪圖程序了解運(yùn)行時(shí)刻可以使用那些圖元工具。同樣的,負(fù)責(zé)管理注冊信息的這個(gè)管理器也只需

      P2467.6.2(1)

      必須把它作為類成員函數(shù)的運(yùn)算符有:

      (),[],->和任何賦值運(yùn)算符,重載這些運(yùn)算符時(shí)必須把操作符函數(shù)聲明為類的成員函數(shù)

      什么時(shí)候定義類成員操作符重載,什么時(shí)候定義非類成員操作符重載?

      答:(1)如果一個(gè)重載操作符是類成員,那么只有當(dāng)跟它一起使用的左操作數(shù)是該類對象時(shí),它才會被調(diào)用,如果該操作符的左操作數(shù)必須是其他類型,那么重載操作符必須是非類成員操作符重載。

      (2)C++要求,賦值(=),下標(biāo)([ ]),調(diào)用(())和成員訪問箭頭(->)操作符必須被指定為類成員操作符,否則錯(cuò)誤。

      第二篇:C++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計(jì)

      C++/數(shù)據(jù)結(jié)構(gòu) 大作業(yè)/課程設(shè)計(jì)——【校園導(dǎo)游咨詢】【停車場管理】娃娃們可以收著以后用 絕對純手工打造 內(nèi)含類模塊/一維指針數(shù)組(謹(jǐn)以此程序供大家參考。運(yùn)行結(jié)果后面有貼圖)

      目錄

      【1】校園導(dǎo)游咨詢 程序設(shè)計(jì)源代碼 及 截圖 【2】停車場管理——方案一 程序設(shè)計(jì)源代碼 及 截圖 【3】停車場管理——方案二 程序設(shè)計(jì)源代碼 及 截圖

      【1】【【校園導(dǎo)游咨詢】】

      ######

      (ps:該校園導(dǎo)游咨詢系統(tǒng)沒有輸入值,所有信息是都在class MGraph的構(gòu)造函數(shù)中傳輸?shù)模倚@景點(diǎn)信息皆為【【上海電力學(xué)院】】景點(diǎn)信息。請大家注意,直接從文章copy到visual stutio中會出現(xiàn)中文字符,注意刪除,推薦大家在一行語句的分號后面,點(diǎn)出光標(biāo),按一下delete鍵,然后按一下enter鍵,完成visual stutio的自動對齊,這樣程序看起來一目了然,更易于操作和更改)【問題描述】

      設(shè)計(jì)一個(gè)校園導(dǎo)游程序,為來訪的客人提供各種信息查詢服務(wù)?!净疽蟆?/p>

      (1)設(shè)計(jì)你所在學(xué)校的校園平面圖,所含景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。(2)為來訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。

      (3)為來訪客人提供圖中任意景點(diǎn)的問路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一個(gè)最短的簡單路徑。【選作內(nèi)容】

      (6)擴(kuò)充每個(gè)景點(diǎn)的鄰接景點(diǎn)的方向等信息,使得路徑查詢結(jié)果能提供詳盡的導(dǎo)向信息。**************************【以下為類的定義】******************************** #include #include using namespace std;const int MaxSize=18;const int INFINITY=65535;//最大值無窮

      class direction;template class MGraph;template class VertexNode//定義頭結(jié)點(diǎn)

      { friend class MGraph;public: int vex;//頂點(diǎn)名稱 T vexname;//頂點(diǎn)名稱 T vexinf;//頂點(diǎn)信息

      direction dir;//存放頂點(diǎn)方位信息的direction類的dir。};

      class direction { public: int ln;//存放在方向圖中的橫坐標(biāo),表示東西 int col;//存放在方向圖中的縱坐標(biāo),表示南北 };template class MGraph//定義無向圖的鄰接矩陣

      { public: MGraph();

      //構(gòu)造函數(shù),初始化具有n個(gè)頂點(diǎn)的圖

      void printvexname();//顯示所有景點(diǎn)及景點(diǎn)代號

      void printvexinf(int i);//顯示代號為i景點(diǎn)的名稱及信息

      void printroad(int i,int j);//顯示景點(diǎn)i~j的最短路徑方案信息

      void printdir(int i,int j);//顯示景點(diǎn)i到j(luò)的方向信息,如“向東100m,向南200m” VertexNode adjlist[MaxSize];//存放景點(diǎn)全部信息的 景點(diǎn)類數(shù)組 int vertexNum,arcNum;//圖的頂點(diǎn)數(shù)和邊數(shù)

      void Root(int p,int q);//遞歸尋找pq間的最短路徑

      int Path[MaxSize][MaxSize],Dist[MaxSize][MaxSize];//創(chuàng)建Path和Dist分別存放兩點(diǎn)間最短路徑的前驅(qū)節(jié)點(diǎn),兩點(diǎn)間最短路徑長度

      int Line[MaxSize];//Line存放路徑 int kkk;//Line[]數(shù)組的標(biāo)記

      private: T vertex[MaxSize];//存放圖中頂點(diǎn)的數(shù)組

      int arc[MaxSize][MaxSize];//存放圖中邊的數(shù)組 };*************************【以下為類的實(shí)現(xiàn) 即類函數(shù)的定義】*********************************** template MGraph::MGraph()//a[]為景點(diǎn)代號,b[]為景點(diǎn)名稱,c[]為景點(diǎn)信息,d[]為景點(diǎn)方位信息的橫坐標(biāo),e[]為景點(diǎn)方位信息的縱坐標(biāo)

      //s[]為存放景點(diǎn)鄰接矩陣信息的一維數(shù)組,根據(jù)其對稱性可以用公式賦值給二維數(shù)組arc[][] { int s[]={0, 1,0, 0,2,0, 0,0,2,0, 0,0,2,3,0, 0,0,0,4,2,0, 0,0,0,0,2,3,0, 0,0,0,0,2,3,1,0, 0,0,2,0,2,0,0,2,0, 4,0,2,0,0,0,0,0,1,0, 0,0,0,0,0,0,0,0,0,2,0, 1,0,0,0,0,0,0,0,0,0,2,0, 0,0,0,0,0,0,0,0,0,3,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,2,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0, 0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,2,0};int a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};char* b[]={“南門”,“實(shí)驗(yàn)樓”,“南圖”,“大活”,“睿思樓”,“大禮堂”, “南4教”,“知行樓”,“國交樓”,“南3教”,“南2教”,“南1教”, “北圖”,“北3教”,“北4教”,“北2教”,“北1教”,“北門”};char* c[]={“南校區(qū)正門”,“物理實(shí)驗(yàn)樓”,“南校區(qū)圖書館”,“大學(xué)生活動中心”, “教師辦公樓、醫(yī)務(wù)室及留學(xué)生公寓”,“大禮堂,用于舉辦各種文藝演出”,“南校區(qū)第4教學(xué)樓”,“實(shí)習(xí)基地,計(jì)算機(jī)房等”, “國際交流中心,教職工餐廳”,“南校區(qū)第3教學(xué)樓”,“南校區(qū)第2教學(xué)樓”,“南校區(qū)第1教學(xué)樓”, “北校區(qū)圖書館”,“北校區(qū)第3教學(xué)樓”,“北校區(qū)第4教學(xué)樓”,“北校區(qū)第2教學(xué)樓”, “北校區(qū)第1教學(xué)樓”,“北校區(qū)正門”};int d[]={8,6,4,4,1,0,0,1,3,4,6,8,4,3,2,3,5,8};int e[]={8,8,8,10,8,10,7,6,6,6,6,6,3,1,0,0,0,2};int i,j;vertexNum=18;arcNum=30;

      for(i=0;i

      for(j=0;j void MGraph::printvexname(){ int i;for(i=0;i

      template void MGraph::printvexinf(int i){ cout< void MGraph::printdir(int i,int j){ int dx,nb;//臨時(shí)存放i與j之間的南北東西關(guān)系 j在i的哪邊?? dx=adjlist[j].dir.col-adjlist[i].dir.col;nb=adjlist[j].dir.ln-adjlist[i].dir.ln;if(dx>0)//即j在i的東邊

      cout<<“向東”<0)//即j在i的南邊

      cout<<“向南”< void MGraph::Root(int p,int q){

      if(Path[p][q]>0){

      Root(p,Path[p][q]);Root(Path[p][q],q);} else {

      Line[kkk]=q;kkk++;} }

      template void MGraph::printroad(int i,int j){ int p,q,m,k,item1,item2;for(p=0;p0)

      for(q=0;q0)if(((Dist[p][q]>Dist[p][k]+Dist[k][q])||(Dist[p][q]==0))&&(p!=q)){

      Dist[p][q]=Dist[p][k]+Dist[k][q];Path[p][q]=k;}

      cout<<“n=======n”;cout<<“從”<”;printdir(i,item2);cout<<“-->”<”;printdir(item1-1,item1);cout<<“-->”<

      { int choice;cout<<“================”<>choice;return choice;} void main(){ MGraph mg;int funcchoice();int fc;while(1){ fc=funcchoice();if(fc==1){ int i;for(i=0;i>i;mg.printvexinf(i);} else if(fc==3){ int i,j;mg.printvexname();cout<<“請輸入兩景點(diǎn)代號(我們將把最短路線反饋予您):”;cin>>i>>j;mg.printroad(i,j);} else if(fc==4)break;else cout<<“輸入有誤,請重新輸入!”<

      【2】【停車場管理系統(tǒng)【方案一 程序】】

      ######

      (ps:該程序有漏洞,若將要離開的車輛是停于便道上的,則對該車進(jìn)行駛離操作時(shí)程序內(nèi)部有錯(cuò)誤數(shù)據(jù),雖然做了函數(shù)完成這一功能,但因時(shí)間有限,沒能及時(shí)查找更正,現(xiàn)在懶得改了。。大家將就看吧。不過運(yùn)行是可以的)【問題描述】

      設(shè)停車場是一個(gè)可停放n輛汽車的 長通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車信放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場內(nèi)某輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進(jìn)入車場院,每輛停放在車場的車在它離開停車場時(shí)必須按它停留的時(shí)間長短交納費(fèi)用。試為停車場編制按上述要求進(jìn)行管理的模擬程序?!净疽蟆?/p>

      以棧模擬停車場,以隊(duì)列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號碼以及到達(dá)或離去的時(shí)刻。對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)?!緶y試數(shù)據(jù)】

      設(shè)n=2,輸入數(shù)據(jù)為:(A,1,5),(A,2,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到達(dá)(Arrival);D表示離去(Departure);E表示輸入結(jié)束(End)。**************************【以下為類的定義】************************************* #include using namespace std;const int Max=2;//車庫最大容量

      const double price=30;//每小時(shí)的費(fèi)用 //思想:(報(bào)告第四頁)

      //我的系統(tǒng)界面,輸入信息為:(到達(dá)/離開/退出);車牌號;時(shí)刻 //因此,我的停車場類分成車輛到達(dá)和車輛離開兩個(gè)主要的函數(shù)實(shí)現(xiàn)。//車輛到達(dá),有入棧和入隊(duì)。車輛離開有出棧,出隊(duì)和入棧操作。

      //因此我又編寫入棧的類,隊(duì)的類。與parkingmanagement進(jìn)行友元。

      //**************************************類定義*********************************************** class car//車的信息類

      { public: double time;//計(jì)費(fèi)時(shí)間 int number;//車牌號

      car *next;//存放car類型元素的數(shù)組初始地址 };class carstack//棧(停車場)的類

      { friend class parkingmanagement;//parkingmanagement能訪問carstack類中所有成員 public: carstack();//構(gòu)造函數(shù),棧的初始化 int empty();//判斷棧是否為空 int full();//判斷棧是否為滿

      car *s;//存放car類型棧元素的數(shù)組初始地址 int top;//棧頂指針 };class carqueue//隊(duì)列(便道)的類

      { friend class parkingmanagement;//parkingmanagement能訪問carstack類中所有成員 public: carqueue();//構(gòu)造函數(shù),隊(duì)列的初始化 int full();//判斷隊(duì)列是否為滿 car *front,*rear;//存放car類型隊(duì)列元素的數(shù)組初始地址 };class parkingmanagement { public: int pushstack(carstack &cs,int cnum,double ctime);//入棧,cs棧內(nèi)進(jìn)行調(diào)整,返回棧內(nèi)位置 void popstack(carstack &cs,int cnum);//出棧,cs棧內(nèi)進(jìn)行調(diào)整,//根據(jù)車牌號把車彈出棧,將出棧car的number賦值給int popstacknumber()//將出棧car的time賦值給double popstacktime(),無返回值!

      int pushqueue(carqueue &cq,int cnum,double ctime);//入隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回隊(duì)內(nèi)位置 int popqueue(carqueue &cq);//出隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回汽車車牌號

      void arrival(carstack &cs,carqueue &cq,int cnum,double ctime);//車輛到達(dá),//根據(jù)輸入的車牌號、到達(dá)時(shí)間,變更函數(shù)參數(shù);并cout車位信息

      void leave(carstack &cs,carqueue &cq,int cnum,double ctime);//車輛離開,//根據(jù)輸入的車牌號找到汽車,并進(jìn)行出棧操作、出隊(duì)操作和入棧操作; //并cout停留時(shí)間和收費(fèi)情況

      void deletequeue(carqueue &cq,int i);//刪除cq過道中第i輛車 int popstacknumber;//專門存放出棧的時(shí)候返回的車牌號 double popstacktime;//專門存放出棧的時(shí)候返回的時(shí)刻

      };**********************************【以下為類的實(shí)現(xiàn)】************************************ carstack::carstack()//構(gòu)造函數(shù),棧的初始化 { top=-1;s=new car[Max];//創(chuàng)建car類型棧元素的數(shù)組 if(s==NULL){ cout<<“棧空間分配不成功!”<

      cs.top++;(cs.s[cs.top]).number=cnum;//將cnum賦給棧頂位置的車的車牌號,s是car類型棧元素的數(shù)組(cs.s[cs.top]).time=ctime;//將ctime賦給棧頂位置的車的入棧時(shí)間,s是car類型棧元素的數(shù)組 return(cs.top+1);//返回棧內(nèi)位置加1,即停車場內(nèi)車位從1號開始 } } void parkingmanagement::popstack(carstack &cs,int cnum)//出棧,cs棧內(nèi)進(jìn)行調(diào)整,//根據(jù)車牌號把車彈出棧,將出棧car的number賦值給int popstacknumber //將出棧car的time賦值給double popstacktime,無返回值!{ int i;car p;carstack stemp;//定義一個(gè)carstack類型的臨時(shí)存放出棧元素的棧

      for(i=0;i<=cs.top;i++)if((cs.s[i]).number==cnum)break;//當(dāng)要出棧的車的車牌號=棧內(nèi)的車牌號元素時(shí),跳出循環(huán) p=cs.s[i];//將要出棧的元素賦給car類型的p存放

      while(cs.top>i)stemp.s[++(stemp.top)]=cs.s[(cs.top)--];//出棧的元素?cái)?shù)組逐個(gè)賦給臨時(shí)棧 popstacknumber=p.number;//將這個(gè)車牌號信息傳給int popstacknumber()popstacktime=p.time;//將該車的時(shí)間信息傳給double popstacktime()cs.top--;//棧頂指針回到原來位置

      while(stemp.top>=0)cs.s[++(cs.top)]=stemp.s[(stemp.top)--];//臨時(shí)棧出棧的元素逐個(gè)賦給原棧,完成先退再進(jìn)的工作 } int parkingmanagement::pushqueue(carqueue &cq,int cnum,double ctime)//入隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回隊(duì)內(nèi)位置 { car *p,*countp;int count(1);//count用于記錄車在過道上的位置信息,因隊(duì)列為鏈?zhǔn)降?,所以進(jìn)行循環(huán)累加 p=new car;//創(chuàng)建一個(gè)car類型的指針

      p->number=cnum;p->time=ctime;p->next=NULL;//首先將指向存放car類型元素的數(shù)組初始地址置空 if(cq.front==NULL)//第一次入隊(duì)要判斷頭結(jié)點(diǎn)是否為空 { cq.front=cq.rear=p;} else

      {//尾插法插入元素 p->next=(cq.rear)->next;(cq.rear)->next=p;cq.rear=(cq.rear)->next;} countp=(cq.front)->next;while(countp!=NULL){ count++;countp=countp->next;}//count即車在過道上的位置,【從1開始計(jì)?。 ?return count;} int parkingmanagement::popqueue(carqueue &cq)//出隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回汽車車牌號

      { car p;p.number=((cq.front)->next)->number;//cq隊(duì)里,從cq.front開始指向下一個(gè)元素的車牌號賦給car類型的車信息 p.time=((cq.front)->next)->time;//cq隊(duì)里,從cq.front開始指向下一個(gè)元素的時(shí)刻 //賦給car類型的車信息

      p.next=((cq.front)->next)->next;//cq隊(duì)里,從cq.front開始指向下一個(gè)元素的指針 //賦給car類型的車信息的下一個(gè)元素的指針 return p.number;cq.front=(cq.front)->next;} void parkingmanagement::arrival(carstack &cs,carqueue &cq,int cnum,double ctime)//車輛到達(dá),根據(jù)輸入的車牌號、到達(dá)時(shí)間,變更函數(shù)參數(shù);并cout車位信息 { int pos;if(!(cs.full()))//如果棧未滿,車輛停入停車場 { int fl(0),i;//定義一個(gè)從0開始的標(biāo)記fl for(i=0;i<=cs.top;i++){ if(cs.s[i].number==cnum)//如果到達(dá)的車的車牌號=棧內(nèi)已有車輛的車牌號 { fl=1;//fl記1 break;} } if(fl==1)//如果到達(dá)的車的車牌號!=棧內(nèi)已有車輛的車牌號 cout<<“輸入錯(cuò)誤!請重新輸入!”<

      cout<<“該停車場還有空位,請到”<

      { pos=pushqueue(cq,cnum,ctime);//入隊(duì),返回車位信息

      cout<<“該停車場已滿,請將車停到便道”<

      { popstack(cs,cnum);//出棧操作

      hour=ctime-popstacktime;//時(shí)間計(jì)算

      outcarnum=popqueue(cq);//將便道上的第一輛車出隊(duì),入棧。并將其車牌號賦給outcarnum pstack=pushstack(cs,outcarnum,ctime);//將便道上的第一輛車,入棧

      cout<<“該車在本停車場內(nèi)停留時(shí)間為”<

      { p=cq.front;while(p!=NULL){ count++;//如果在過道中找到該車,則該車的位置為過道中的第count位置(count從1開始)p=p->next;if(p->number==cnum)//在過道中找到要出去的車,則在隊(duì)列中刪除該car。//后面的車輛依然順序排列,補(bǔ)足空位

      { deletequeue(cq,count);if(count>Max){ cout<<“您的車在便道上的位置為”<

      car *p,*q;int j(0);p=cq.front;while(p && jnext;j++;}//找到第i個(gè)節(jié)點(diǎn)(i從1開始)if(!p ||!p->next)cout<<“i不合法”;else { q=p->next;p->next=q->next;delete q;} } *******************************【以下是主程序】************************************ void print(){ cout<<“= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =”<>acc>>carnum>>cartime;if(acc=='A')park.arrival(cars,carq,carnum,cartime);else if(acc=='D')park.leave(cars,carq,carnum,cartime);else if(acc=='E')break;else cout<<“您的輸入有誤,請重新輸入!”<

      ######【3】【停車場管理系統(tǒng)【方案二 程序】】

      (ps:本方案與方案一有同樣的問題,就是在對 便道上的車 進(jìn)行駛離操作時(shí),數(shù)據(jù)錯(cuò)誤,同樣的理由,沒有改正。如果有細(xì)心娃娃幫忙指點(diǎn)改正,在此感激啦~)

      *************************【以下為類定義】************************************ #include using namespace std;const int MaxSize=2;//停車場內(nèi)最多能停2輛車 template class carStack;// template //定義模板類

      struct Node//過道停車的隊(duì)列所需鏈?zhǔn)浇Y(jié)點(diǎn) { T carnum;//定義車牌號類型

      Node *next;//此處也可以省略 };template class carinfo {

      friend class carStack;public: T carnum;//車號

      int cartime;//停車時(shí)間 };

      template class carQueue { friend class carStack;public: carQueue();//構(gòu)造函數(shù),初始化一個(gè)空的鏈隊(duì)列

      int EnQueue(T cnum);//將元素x入隊(duì),并返回其在隊(duì)內(nèi)的位置(從1開始)T DeQueue();//將隊(duì)頭鏈?zhǔn)浇Y(jié)點(diǎn)出隊(duì),并返回汽車車牌號

      void deletequeue(int i);//將隊(duì)內(nèi)低i個(gè)元素刪除,即便道上i位置的汽車駛離 bool Empty();//判斷鏈隊(duì)列是否為空 Node *front, *rear;};template class carStack { friend class carinfo;public: carStack();//構(gòu)造函數(shù),棧的初始化,停車場容量為【size】 void Pushcar(T cnum,int ctime);//有車停入停車場

      int Popcar(T outcnum,int outctime);//將第cnum輛車出棧,并返回其停車時(shí)間(hour)bool full();//判斷棧是否為滿?滿則返回1 carinfo *S;//?? int top;};******************************【以下為類的實(shí)現(xiàn)】**************************************** template //初始化隊(duì)列 carQueue::carQueue(){ front=rear=NULL;} template int carQueue::EnQueue(T cnum)//車子進(jìn)入便道 { int i(0);Node *s,*p;//??

      s=new Node;s->carnum=cnum;s->next=NULL;if(front==NULL)//空隊(duì)列,【【【新結(jié)點(diǎn)既是隊(duì)頭,又是隊(duì)尾】】】關(guān)鍵是!front指向第一個(gè)結(jié)點(diǎn) {

      front=rear=s;} else {

      rear->next=s;//將結(jié)點(diǎn)s插入到隊(duì)尾 rear=s;} p=front;while(p!=NULL){ i++;p=p->next;}//i即車在過道上的位置,【從1開始計(jì)??!】 return i;}

      template T carQueue::DeQueue(){ Node *p;if(front==NULL)cout<<“便道上沒車”;else { p=front;

      front=front->next;//將隊(duì)頭元素所在結(jié)點(diǎn)摘鏈 } return p->carnum;delete p;//將出隊(duì)進(jìn)棧的車從隊(duì)列里刪除 }

      template bool carQueue::Empty()//判斷是否為空,為空則返回1,不為空則返回0 { return front==NULL;}

      template carStack::carStack()//構(gòu)造棧算法

      :top(-1){//建立一個(gè)最大尺寸為size的空棧

      S=new carinfo[MaxSize];//創(chuàng)建存儲棧的數(shù)組 if(S==NULL)//分配不成功

      { cerr<<“動態(tài)存儲失??!”<

      template void carStack::Pushcar(T cnum,int ctime){ if(top==MaxSize-1)cout<<“車場內(nèi)已停滿汽車”;else { S[++top].carnum=cnum;S[top].cartime=ctime;} }

      template int carStack::Popcar(T outcnum,int outctime){ int i,hour;carStack Stemp;//建一個(gè)臨時(shí)模擬停車場 int Stop=-1;for(i=0;i<=top;i++)if(outcnum==S[i].carnum)break;while(top>i)Stemp.S[++Stop]=S[top--];hour=outctime-S[top].cartime;return hour;top--;while(Stop>=0)S[++top]=Stemp.S[Stop--];} template bool carStack::full(){ return top==MaxSize-1;} template void carQueue::deletequeue(int i){ Node *p,*q;int j(1);p=front;while(p && jnext;j++;}//找到第i-1個(gè)結(jié)點(diǎn)(結(jié)點(diǎn)位置從1開始)if(!p||!p->next)cout<<“i不合法!”<next;p->next=q->next;delete q;} } ******************************【以下為主函數(shù)】***************************************

      void outputpark()//系統(tǒng)功能選擇頁面,輸入泊車信息

      { cout<<“========================”< cs;carQueue cq;while(1){ outputpark();cin>>arrive>>carnum>>cartime;if(arrive=='A'){ if(cs.top!=MaxSize-1)//停車場內(nèi)有空位可以駛?cè)?/p>

      { cs.Pushcar(carnum,cartime);cout<<“請駛?cè)胪\噲龅摹?

      Node *p;p=cq.front;while(p!=NULL){ if(p->carnum==carnum){ flagde=1;break;} pos++;p=p->next;} if(flagde){ cout<<“您的車停在便道上”<

      第三篇:C++大作業(yè)_職工信息管理系統(tǒng)源代碼

      #include #include #include using namespace std;

      const N=5000;// 定義系統(tǒng)可錄入的職工最大數(shù)值

      string Ename[N];long Enum[N];char Esex[N];int Eage[N];

      char Emarriage[N];int Edepart[N];int Eposition[N];int Edegree[N];int Eworktime[N];float Epay[N];

      class Employee {

      public:

      string Employeename;

      long Employeenum;

      char Employeesex;

      int Employeeage;

      char Employeemarriage;

      int Employeedepart;

      int Employeeposition;

      int Employeedegree;

      int Employeeworktime;

      float Employeepay;

      static long EmployeeMaxNum;

      static float EmployeeBasePay;

      void NewInfo();

      void ShowInfo();

      void showall();

      void showdepart(int depart);

      void showdegree(int degree);

      void showage(int min,int max);

      void shownum(long number);

      void RefreshInfo();

      void DeleteInfo();

      float Pay(int Employeegrade);

      static int MaxNum();};

      class DBOperate {

      public:

      string Employeename;

      long Employeenum;

      char Employeesex;

      int Employeeage;

      char Employeemarriage;

      int Employeedepart;

      int Employeeposition;

      int Employeedegree;

      int Employeeworktime;

      float Employeepay;

      static long EmployeeMaxNum;

      static float EmployeeBasePay;

      void WriteIn(int iflag);

      void ReadOut();

      void RefreshMaxNum(int iflag);//iflg=1 or-1 or 0 };

      long Employee::EmployeeMaxNum = 1000;float Employee::EmployeeBasePay = 1500;

      int Employee::MaxNum()//返回系統(tǒng)已經(jīng)存儲的人數(shù)

      {

      int MN = 0;

      ifstream myf;

      myf.open(“EmployeeMaxNum.txt”);

      myf>>MN;

      cout<

      myf.close();

      return MN;}

      void Employee::NewInfo()//添加新職工函數(shù)

      {

      cout<<“新職工姓名: ”;

      cin>>Employee::Employeename;

      Employee::Employeenum = EmployeeMaxNum + Employee::MaxNum()+1;

      cout<<“新職工性別(F為女性,M為男性): ”;

      cin>>Employee::Employeesex;

      cout<<“新職工年齡: ”;

      cin>>Employee::Employeeage;

      cout<<“新職工婚姻狀況(Y為已婚,N為未婚): ”;

      cin>>Employee::Employeemarriage;

      cout<<“新職工學(xué)歷,請輸入相應(yīng)學(xué)歷的序號: ”<

      cout<<“ [1:小學(xué) 2:初中 3:高中 4:本科 5:碩士 6:博士] ”;

      cin>>Employee::Employeedegree;

      while(Employee::Employeedegree!=1&&Employee::Employeedegree!=2&&Employee::Employeedegree!=3&&Employee::Employeedegree!=4&&Employee::Employeedegree!=5&&Employee::Employeedegree!=6)

      {

      cout<<“輸入有誤,請重新輸入:”<

      cout<<“ [1:小學(xué) 2:初中 3:高中 4:本科 5:碩士 6:博士] ”;

      cin>>Employee::Employeedegree;

      }

      cout<<“新職工所在部門,請輸入相應(yīng)部門的序號:”<

      cout<<“ [1:董事會 2:銷售部 3:人事部 4:客服中心 5:財(cái)務(wù)部 6:技術(shù)研發(fā)部 7:安全監(jiān)察部] ”;

      cin>>Employee::Employeedepart;

      while(Employee::Employeedepart!=1&&Employee::Employeedepart!=2&&Employee::Employeedepart!=3&&Employee::Employeedepart!=4&&Employee::Employeedepart!=5&&Employee::Employeedepart!=6&&Employee::Employeedepart!=7)

      {

      cout<<“輸入有誤,請重新輸入:”<

      cout<<“ [1:董事會 2:銷售部 3:人事部 4:客服中心 5:財(cái)務(wù)部 6:技術(shù)研發(fā)部 7:安全監(jiān)察部] ”;

      cin>>Employee::Employeedepart;

      }

      cout<<“新職工職位, 請輸入相應(yīng)職位的序號: ”<

      cout<<“ [1:臨時(shí)職工 2: 正式職工 3:部門經(jīng)理 4:主任 5:董事長] ”;

      cin>>Employee::Employeeposition;

      while(Employee::Employeeposition!=1&&Employee::Employeeposition!=2&&Employee::Employeeposition!=3&&Employee::Employeeposition!=4&&Employee::Employeeposition!=5)

      {

      cout<<“輸入有誤,請重新輸入:”<

      cout<<“ [1:臨時(shí)職員 2: 正式職員 3:部門經(jīng)理 4:主任 5:董事長] ”;

      cin>>Employee::Employeeposition;

      }

      cout<<“新職工的工作時(shí)長(不需要輸入單位): ”;

      cin>>Employee::Employeeworktime;

      Employee::Employeepay = Employee::Pay(Employee::Employeeposition);

      DBOperate dbo;

      dbo.ReadOut();

      int MaxNum = Employee::MaxNum();

      Enum[MaxNum] = Employee::Employeenum;

      Ename[MaxNum] = Employee::Employeename;

      Esex[MaxNum] = Employee::Employeesex;

      Eage[MaxNum] = Employee::Employeeage;

      Emarriage[MaxNum] = Employee::Employeemarriage;

      Edegree[MaxNum] = Employee::Employeedegree;

      Edepart[MaxNum] = Employee::Employeedepart;

      Eposition[MaxNum] = Employee::Employeeposition;

      Eworktime[MaxNum] = Employee::Employeeworktime;

      Epay[MaxNum] = Employee::Employeepay;

      dbo.WriteIn(1);

      cout<<“ 添加新成員成功!”<

      void Employee::ShowInfo()//程序主體 數(shù)據(jù)輸出函數(shù)

      {

      int choice1,choice2,min,max;

      long searchnum;

      Employee e;

      cout<<“*******************************************”<

      cout<<“-----------1.輸出全體職工信息--------------”<

      cout<<“-----------2.按職工部門輸出----------------”<

      cout<<“-----------3.按職工學(xué)歷輸出----------------”<

      cout<<“-----------4.按職工年齡輸出----------------”<

      cout<<“-----------5.按職工編號輸出----------------”<

      cout<<“*******************************************”<

      cout<<“ 請選擇查詢方式:”;

      cin>>choice1;

      switch(choice1)

      {

      case 1: showall();break;

      case 2: cout<<“請輸入要查詢職工的部門編號[1:董事會 2:銷售部 3:人事部 4:客服中心 5:財(cái)務(wù)部 6:技術(shù)研發(fā)部 7:安全監(jiān)察部] ”;

      cin>>choice2;

      e.showdepart(choice2);break;

      case 3: cout<<“請輸入要查詢職工的學(xué)歷編號: [1:小學(xué) 2:初中 3:高中 4:本科 5:碩士 6:博士] ”;

      cin>>choice2;

      e.showdegree(choice2);break;

      case 4: cout<<“請輸入要查詢的年齡范圍: ”;

      cout<<“最小值: ”;

      cin>>min;

      cout<<“最大值: ”;

      cin>>max;

      e.showage(min,max);break;

      case 5: cout<<“請輸入要查詢的職工編號: ”;

      cin>>searchnum;

      e.shownum(searchnum);break;

      default: cout<<“出錯(cuò)啦!”<

      } }

      void Employee::showall()//全體職工輸出函數(shù)

      { int i;

      long number;

      for(i=0;i

      {

      number = Enum[i];

      shownum(number);

      } }

      void Employee::showdepart(int depart)//按職工所在部門輸出函數(shù)

      {

      int i;

      switch(depart)

      {

      case 1: cout<<“董事會的成員有: ”<

      case 2: cout<<“銷售部的成員有: ”<

      case 3: cout<<“人事部的成員有: ”<

      case 4: cout<<“客服中心的成員有: ”<

      case 5: cout<<“財(cái)務(wù)部的成員有: ”<

      case 6: cout<<“技術(shù)研發(fā)部的成員有: ”<

      case 7: cout<<“安全監(jiān)察部的成員有: ”<

      default: cout<<“輸入錯(cuò)誤!>”<

      }

      for(i=0;i

      {

      if(Edepart[i] == depart)

      {

      long number = Enum[i];

      shownum(number);

      }

      else continue;

      } }

      void Employee::showdegree(int degree)//按職工學(xué)歷輸出函數(shù)

      {

      int i;

      switch(degree)

      {

      case 1:cout<<“初中學(xué)歷的員工有:”<

      case 2:cout<<“初中學(xué)歷的員工有:”<

      case 3:cout<<“高中學(xué)歷的員工有:”<

      case 4:cout<<“本科學(xué)歷的員工有:”<

      case 5:cout<<“碩士學(xué)位的員工有:”<

      case 6:cout<<“博士學(xué)位的員工有:”<

      }

      for(i=0;i

      {

      if(Edegree[i] == degree)

      {

      long number = Enum[i];

      shownum(number);

      } else continue;

      } }

      void Employee::showage(int min,int max)//按職工年齡段輸出函數(shù)

      {

      int i;

      for(i=0;i

      {

      if(Eage[i]>=min&&Eage[i]<=max)

      {

      long number = Enum[i];

      shownum(number);

      }

      else continue;

      } }

      void Employee::shownum(long number)//按職工編號輸出函數(shù)

      {

      int i;

      for(i=0;i

      {

      if(Enum[i] == number)

      {

      cout<<“**********************************”<

      cout<<“職工編號:”<

      cout<<“姓 名:”<

      cout<<“性 別:”;

      if(Esex[i]=='F')cout<<“女 ”<

      else if(Esex[i]=='M')cout<<“男 ”<

      cout<<“年 齡:”<

      cout<<“婚姻情況:”;

      if(Emarriage[i]=='Y')cout<<“已婚 ”<

      else if(Emarriage[i]=='N')cout<<“未婚 ”<

      cout<<“學(xué) 歷:”;

      switch(Edegree[i])

      {

      case 1:cout<<“小 學(xué) ”<

      case 2:cout<<“初 中 ”<

      case 3:cout<<“高 中 ”<

      case 4:cout<<“本 科 ”<

      case 5:cout<<“碩 士 ”<

      case 6:cout<<“博 士 ”<

      }

      cout<<“所在部門:”;

      switch(Edepart[i])

      {

      case 1:cout<<“董事會 ”<

      case 2:cout<<“銷售部 ”<

      case 3:cout<<“人事部 ”<

      case 4:cout<<“客服中心 ”<

      case 5:cout<<“財(cái)務(wù)部 ”<

      case 6:cout<<“技術(shù)研發(fā)部 ”<

      case 7:cout<<“安全監(jiān)察部 ”<

      }

      cout<<“所任職務(wù):”;

      switch(Eposition[i])

      {

      case 1:cout<<“臨時(shí)成員 ”<

      case 2:cout<<“正式員工 ”<

      case 3:cout<<“部門經(jīng)理 ”<

      case 4:cout<<“主任 ”<

      case 5:cout<<“董事長 ”<

      }

      cout<<“工作時(shí)長:”<

      cout<<“工資:”<

      cout<<“**********************************”<

      }

      else continue;

      } }

      void Employee::RefreshInfo()//修改職工信息的函數(shù) {

      int cNum = 1000;

      DBOperate dbo;

      dbo.ReadOut();

      void Employee::shownum(long number);

      cout<<“請輸入您要修改的職工編號:”;

      cin>>cNum;

      int MN;

      MN = Employee::MaxNum();

      for(int i=0;i

      {

      if(Enum[i] == cNum)

      {

      Employee::shownum(cNum);

      cout<<“請輸入該職工的新信息: ”<

      cout<<“職工姓名: ”;//錄入職工的新的數(shù)據(jù),職工編號保持不變

      cin>>Employee::Employeename;

      Ename[i] = Employee::Employeename;

      cout<<“職工性別(F為女性,M為男性): ”;

      cin>>Employee::Employeesex;

      Esex[i] = Employee::Employeesex;

      cout<<“職工年齡: ”;

      cin>>Employee::Employeeage;

      Eage[i] = Employee::Employeeage;

      cout<<“職工婚姻狀況(Y為已婚,N為未婚): ”;

      cin>>Employee::Employeemarriage;

      Emarriage[i] = Employee::Employeemarriage;

      cout<<“職工學(xué)歷,請輸入相應(yīng)學(xué)歷的序號:”<

      cout<<“ [1:小學(xué) 2:初中 3:高中 4:本科 5:碩士 6:博士] ”;

      cin>>Employee::Employeedegree;

      while(Employee::Employeedegree!=1&&Employee::Employeedegree!=2&&Employee::Employeedegree!=3&&Employee::Employeedegree!=4&&Employee::Employeedegree!=5&&Employee::Employeedegree!=6)

      {

      cout<<“輸入有誤,請重新輸入:”<

      cout<<“ [1:小學(xué) 2:初中 3:高中 4:本科 5:碩士 6:博士] ”;

      cin>>Employee::Employeedegree;

      }

      Edegree[i] = Employee::Employeedegree;

      cout<<“職工所在部門,請輸入相應(yīng)部門的序號: ”<

      cout<<“ [1:董事會 2:銷售部 3:人事部 4:客服中心 5:財(cái)務(wù)部 6:技術(shù)研發(fā)部 7:安全監(jiān)察部] ”;

      cin>>Employee::Employeedepart;

      while(Employee::Employeedepart!=1&&Employee::Employeedepart!=2&&Employee::Employeedepart!=3&&Employee::Employeedepart!=4&&Employee::Employeedepart!=5&&Employee::Employeedepart!=6&&Employee::Employeedepart!=7)

      {

      cout<<“輸入有誤,請重新輸入:”<

      cout<<“ [1:董事會 2:銷售部 3:人事部 4:客服中心 5:財(cái)務(wù)部 6:技術(shù)研發(fā)部 7:安全監(jiān)察部] ”;

      cin>>Employee::Employeedepart;

      }

      Edepart[i] = Employee::Employeedepart;

      cout<<“職工職位,請輸入相應(yīng)職位的序號:”<

      cout<<“ [1:臨時(shí)職員 2: 正式職員 3:部門經(jīng)理 4:主任 5:董事長] ”;

      cin>>Employee::Employeeposition;

      while(Employee::Employeeposition!=1&&Employee::Employeeposition!=2&&Employee::Employeeposition!=3&&Employee::Employeeposition!=4&&Employee::Employeeposition!=5)

      {

      cout<<“輸入有誤,請重新輸入:”<

      cout<<“ [1:臨時(shí)職員 2: 正式職員 3:部門經(jīng)理 4:主任 5:董事長] ”;

      cin>>Employee::Employeeposition;

      }

      Eposition[i] = Employee::Employeeposition;

      cout<<“員工的工作時(shí)(不需要輸入單位): ”;

      cin>>Employee::Employeeworktime;

      Eworktime[i] = Employee::Employeeworktime;

      Epay[i] = Employee::Pay(Employee::Employeeposition);

      break;

      }

      }

      dbo.WriteIn(0);}

      void Employee::DeleteInfo()//刪除職工數(shù)據(jù)的函數(shù)

      {

      char tmp;

      int cNum = 1000;

      DBOperate dbo;

      dbo.ReadOut();

      void Employee::shownum(long number);

      cout<<“請輸入您要刪除的職工編號>: ”;

      cin>>cNum;

      int MN;

      MN = Employee::MaxNum();

      for(int i=0;i

      {

      if(Enum[i] == cNum)

      Employee::shownum(cNum);

      }

      cout<<“確認(rèn)要刪除該職工信息?(Y為確認(rèn),N為放棄): ”;

      cin>>tmp;

      if(tmp=='Y')

      {

      if(i==MN-1)

      dbo.WriteIn(-1);

      else

      {

      for(int j=i;j

      { Enum[j] = Enum[j+1];}

      dbo.WriteIn(-1);

      }

      cout<<“ 刪除操作成功!”<

      } }

      float Employee::Pay(int Employeeposition)//根據(jù)職工職位計(jì)算工資的函數(shù)

      {

      float tmpPay;

      tmpPay = Employee::EmployeeBasePay + Employee::Employeeposition Employee::EmployeeBasePay;

      *

      return tmpPay;}

      void DBOperate::WriteIn(int iflag)//數(shù)據(jù)操作函數(shù)—寫入

      {

      DBOperate::RefreshMaxNum(iflag);

      ofstream myf(“Employee.txt”);

      Employee e;

      int MN;

      MN = e.MaxNum();

      for(int i=0;i

      {

      myf<

      }

      myf.close();

      return;}

      void DBOperate::ReadOut()//數(shù)據(jù)操作函數(shù)—讀出

      {

      ifstream myf(“Employee.txt”);

      Employee e;

      int MN;

      MN = e.MaxNum();

      for(int i=0;i

      {

      myf>>DBOperate::Employeenum>>DBOperate::Employeename>>DBOperate::Employeesex>>DBOperate::Employeeage>>DBOperate::Employeemarriage

      >>DBOperate::Employeedegree>>DBOperate::Employeedepart>>DBOperate::Employeeposition>>DBOperate::Employeeworktime>>DBOperate::Employeepay;

      Enum[i] = DBOperate::Employeenum;

      Ename[i] = DBOperate::Employeename;

      Esex[i] = DBOperate::Employeesex;

      Eage[i] = DBOperate::Employeeage;

      Emarriage[i] = DBOperate::Employeemarriage;

      Edegree[i] = DBOperate::Employeedegree;

      Edepart[i] = DBOperate::Employeedepart;

      Eposition[i] = DBOperate::Employeeposition;

      Eworktime[i] = DBOperate::Employeeworktime;

      Epay[i] = DBOperate::Employeepay;

      }

      myf.close();}

      void DBOperate::RefreshMaxNum(int iflag)//更新系統(tǒng)中員工計(jì)數(shù)文件的函數(shù)

      {

      int MaxNum = 0;

      ifstream myif(“EmployeeMaxNum.txt”);

      myif>>MaxNum;

      myif.close();

      MaxNum = MaxNum+iflag;

      ofstream myof(“EmployeeMaxNum.txt”);

      myof<

      myof.close();}

      int main()//主函數(shù)

      {

      system(“color B0”);//設(shè)置當(dāng)前窗口的背景色和前景色

      // 0 = 黑色

      = 灰色

      // 1 = 藍(lán)色

      = 淡藍(lán)色

      // 2 = 綠色

      A = 淡綠色

      // 3 = 淺綠色 B = 淡淺綠色

      // 4 = 紅色

      C = 淡紅色

      // 5 = 紫色

      D = 淡紫色

      // 6 = 黃色

      E = 淡黃色

      // 7 = 白色

      F = 亮白色

      int select = 0;

      while(select!=5)

      {

      cout<<“ ╭————————————————————————————╮”<

      cout<<“ ∣

      《主菜單》

      ∣”<

      cout<<“ ├————————————————————————————┤”<

      cout<<“ ∣

      1.新建并錄入職工信息

      ∣”<

      cout<<“ ∣

      2.按條件輸出職工信息

      ∣”<

      cout<<“ ∣

      3.修改指定職工的信息

      ∣”<

      cout<<“ ∣

      4.刪除職工信息

      ∣”<

      cout<<“ ∣

      5.退出系統(tǒng)

      ∣”<

      cout<<“ ╰————————————————————————————╯”<

      cout<<“ ——————————————————————————————”<

      cout<<“ 請選擇您需要功能的代號: ”;

      cin>>select;

      Employee e;

      DBOperate dbo;

      switch(select)

      {

      case 1:

      e.NewInfo();break;

      case 2:

      dbo.ReadOut();

      e.ShowInfo();break;

      case 3:

      e.RefreshInfo();break;

      case 4:

      e.DeleteInfo();break;

      case 5: cout<<“ 退出成功”<

      default: cout<<“命令錯(cuò)誤!”<

      }

      if(select == 5)

      break;

      }

      exit(1);

      return 0;}

      第四篇:潮流計(jì)算--電力系統(tǒng)大作業(yè)(C++編寫)

      程序設(shè)計(jì)所涉及二叉樹解釋

      任意一棵樹或一個(gè)森林都能唯一地對應(yīng)一棵二叉樹,由此而編寫本程序。本程序采用類二叉樹為整體結(jié)構(gòu),二叉樹類下定義節(jié)點(diǎn)類,每一條支路均為樹的一個(gè)節(jié)點(diǎn),支路所有的參數(shù)均作為節(jié)點(diǎn)的屬性,并給節(jié)點(diǎn)加入屬性“支路編號”,并以支路編號為依據(jù)構(gòu)建二叉樹,這就要求提前根據(jù)二叉樹結(jié)構(gòu)給每一個(gè)支路編號。

      支路編號原則:左子樹上所有編號均小于其雙親的編號,右子樹上所有編號均大于其雙親的編號,為了便于查看,本程序在節(jié)點(diǎn)較少時(shí)編號從1開始,逐個(gè)遞加至支路數(shù);當(dāng)支路較多時(shí),可不必拘泥于逐個(gè)遞加,只要滿足支路編號原則即可。

      例如習(xí)題3-4:

      123118kV113kV8.5+j20.5Wj2.82×10-4S1.22+j20.2Wj2.82×10-4SDST=0.17+j1.7MVA40+j30MVA20+j15MVA

      程序二叉樹結(jié)構(gòu)示意圖:

      本二叉樹中節(jié)點(diǎn)1即支路1為題目中節(jié)點(diǎn)1與節(jié)點(diǎn)2之間的部分; 本二叉樹中節(jié)點(diǎn)2即支路2為題目中節(jié)點(diǎn)2與節(jié)點(diǎn)3之間的部分; 對于習(xí)題3-3:

      程序二叉樹結(jié)構(gòu)示意圖:

      本二叉樹中節(jié)點(diǎn)2即支路2為題目中節(jié)點(diǎn)1與節(jié)點(diǎn)2之間的部分; 本二叉樹中節(jié)點(diǎn)1即支路1為題目中節(jié)點(diǎn)2與節(jié)點(diǎn)3之間的部分; 本二叉樹中節(jié)點(diǎn)3即支路3為題目中節(jié)點(diǎn)2與節(jié)點(diǎn)4之間的部分.拓展:

      如下多支路網(wǎng)絡(luò):

      對于三節(jié)點(diǎn)網(wǎng)絡(luò)需先進(jìn)行以下網(wǎng)絡(luò)處理轉(zhuǎn)化為標(biāo)準(zhǔn)二叉樹,而后進(jìn)行計(jì)算;

      圖中三角形表明該項(xiàng)阻抗為零,為純導(dǎo)線,并進(jìn)行相應(yīng)參數(shù)補(bǔ)充進(jìn)行計(jì)算。

      程序說明文檔

      ******************************************************************************************************************************************************* 本程序測試使用方法:在E盤根目錄下建立輸入文件:

      輸入文件名:input.txt;

      將所附算例對應(yīng)輸入文件內(nèi)容復(fù)制粘貼至上述文件中,在VC++6.0環(huán)境下運(yùn)行cpp文件得出結(jié)果。

      輸出文件在E盤根目錄下

      輸出文件名為:data.txt;******************************************************************************************************************************************************* 程序功能說明:本程序可以計(jì)算任意長度線型開始網(wǎng)絡(luò)潮流;

      支持多電壓等級下的計(jì)算;

      可在除供電節(jié)點(diǎn)外任意節(jié)點(diǎn)引出負(fù)載;

      *******************************************************************************************************************************************************

      輸入格式說明:以支路為基本單位,按潮流方向輸入數(shù)據(jù):

      以下例示意:

      //支路個(gè)數(shù)

      1,110,118,8.5,20.5,0.000564,0,0,1,0,0

      //線路等效的支路

      2,11,110,1.22,20.2,0,40,30,10,0.17,1.7

      //變壓器等效的支路

      .//按此方式知道輸入所有的支路

      .//輸入從上到下的順序?yàn)槌绷髟?/p>

      .//線型開式網(wǎng)絡(luò)中的流動方向

      /*

      第一行輸入支路個(gè)數(shù),回車

      第二行至后輸入各個(gè)支路參數(shù),回車分隔不同支路;

      各行輸入的支路參數(shù)順序是:

      支路編號,末端電壓,始端電壓,線路等效電阻,線路等效感抗,線路等效容納,末端輸入有功,末端輸入無功,變比,變壓器有功勵(lì)磁損耗,變壓器無功勵(lì)磁損耗

      對于線路等效電路:變壓器有功/無功損耗輸入零,變比輸入1;

      對于變壓器等效電路:所有的參數(shù)均歸算至高壓側(cè),Rt,Xt對應(yīng)輸入線路等效電阻/感抗的位置,線路等效容抗為零;

      對于個(gè)節(jié)點(diǎn)的引出負(fù)荷:輸入至以此節(jié)點(diǎn)為末節(jié)點(diǎn)的支路的末端輸入有功/無功部分;

      */ ******************************************************************************************************************************************************** 輸出文件格式說明:輸出的內(nèi)容包括

      (1)支路信息:每個(gè)支路元件的始端有功、無功和末端有功、無功;有功損耗無功損耗;電壓損耗;

      (2)全網(wǎng)信息:全網(wǎng)的總電源有功、總負(fù)荷有功、有功損耗、網(wǎng)損率;

      (3)迭代信息:每次完整迭代后的所有內(nèi)容;

      具體在輸出文件中都明確標(biāo)出。

      ********************************************************************************************************************************************************* 程序中變量定義說明:

      類中定義的變量

      class line_part{

      //定義支路類

      double U[2];

      //支路電壓降落:U[0]電壓降落橫分量,U[1]電壓降落縱分量

      double k;

      //變壓器變比

      double val;

      //支路排序

      double U_end;

      //支路末端電壓

      double U_begin;

      //支路首段電壓

      double X[3];

      //支路等效阻抗: X[0]電阻,X[1]感抗,X[2]容納

      double S_end[2];

      //支路末端功率:S_end[0]有功,S_end[1]無功

      double S_begin[2];

      //支路首段功率:S_begin[0]有功,S_begin[1]無功

      double S0[2];

      //變壓器勵(lì)磁損耗:S0[0]有功,S0[1]無功

      double S_org[2];

      //支路末端負(fù)載:S_org[0]有功,S_org[1]無功

      line_part *lchild,*rchild;

      //支路的后繼兩個(gè)支路 }

      class BinTree{

      //定義樹類

      void PreOrder(){PreOrder(root);};

      //樹的先序遍歷修改電壓

      void PostOrder(){PostOrder(root);};

      //樹的后序遍歷修改潮流

      void display(){display(root);};

      //樹的先序遍歷顯示數(shù)據(jù)

      line_part *root;

      //樹的根,是一個(gè)支路類

      };主函數(shù)中定義的數(shù)據(jù)

      ofstream outfile;

      //輸出數(shù)據(jù)流定

      ifstream infile;

      //輸入數(shù)據(jù)流定

      const int M(a);

      //支路個(gè)數(shù)常量

      主程序(復(fù)制粘貼到C++就能用)

      **************************************************************************************************************************************************************

      #include #include #include

      double p_cost_all=0;

      double sqr(double x){

      //平方計(jì)算函數(shù) return x*x;};

      class line_part{

      //定義支路類 private:

      double val;

      //支路排序

      double U_end;

      //支路末端電壓

      double U_begin;

      //支路首段電壓

      double X[3];

      //支路等效阻抗: X[0]電阻,X[1]感抗,X[2]容納

      double S_end[2];

      //支路末端功率:S_end[0]有功,S_end[1]無功

      double S_begin[2];

      //支路首段功率:S_begin[0]有功,S_begin[1]無功

      double S0[2];

      //變壓器勵(lì)磁損耗:S0[0]有功,S0[1]無功

      double S_org[2];

      //支路末端負(fù)載:S_org[0]有功,S_org[1]無功

      line_part *lchild,*rchild;public:

      double U[2];

      //支路電壓降落:U[0]電壓降落橫分量,U[1]電壓降落縱分量

      double k;

      //變壓器變比

      public: line_part(){ val=0;U_end=0;U_begin=0;X[0]=0;X[1]=0;

      X[2]=0;S_end[0]=S_org[0]=0;S_end[1]=S_org[1]=0;

      S_begin[0]=0;S_begin[1]=0;k=1;

      S0[0]=0;S0[1]=0;U[0]=0;U[1]=0;

      lchild = rchild= NULL;}

      line_part(double vall,double u_end=0,double u_begin=0,double r=0,double x=0,double b=0,double Pe=0,double Xe=0,double K=0,double P0=0,double Q0=0){

      val=vall;

      U_end=u_end;

      U_begin=u_begin;

      X[0]=r;

      X[1]=x;

      X[2]=b;

      S_end[0]=S_org[0]=Pe;

      S_end[1]=S_org[1]=Xe;

      S_begin[0]=0;

      S_begin[1]=0;

      k=K;

      S0[0]=P0;

      S0[1]=Q0;

      U[0]=0;

      U[1]=0;

      lchild = rchild= NULL;

      };friend class BinTree;

      friend void pass_U(line_part*a,line_part*b,line_part*c);

      //電壓傳遞函數(shù)

      friend void pass_w(line_part*a,line_part*b,line_part*c);

      //功率傳遞函數(shù)

      friend void pass_U2(line_part*a,line_part*b);

      //電壓傳遞函數(shù)

      friend void pass_w2(line_part*a,line_part*b);

      //功率傳遞函數(shù)

      void Sbegin(){

      (U_end)*X[2]/2))/sqr(Uend);;-sqr(U_begin)*X[2]/2-sqr(U_end)*X[2]/2;};void Uend(){

      double U_heng(0),U_zong(0);

      X[2]/2-S0[1];1])/U_begin;

      //U_heng即是△u2 0])/U_begin;

      //U_zong即是δu2 sqr(U_zong))/k;

      double get_val(){

      };

      //支路首段功率計(jì)算函數(shù) double Uend,I2;Uend=k*U_end;I2=(sqr(S_end[0])+sqr(S_end[1]-sqrS_begin[0]=S_end[0]+I2*X[0]+S0[0]S_begin[1]=S_end[1]+I2*X[1]+S0[1]

      //支路末端電壓計(jì)算函數(shù) double p_begin,q_begin;p_begin=S_begin[0]-S0[0];q_begin=S_begin[1]+sqr(U_begin)*U_heng=(p_begin*X[0]+q_begin*X[U_zong=(p_begin*X[1]-q_begin*X[U_end=sqrt(sqr(U_begin-U_heng)+U[0]=U_heng;U[1]=U_zong;};

      //返回支路編號 if(this==0){return-1;}else{ if(val>0&&val<100){return val;} else return-1;}

      double get_Uend(){

      //返回支路末端電壓

      return U_end;};

      double get_Ubegin(){

      //返回支路首段電壓

      return U_begin;};

      double get_Pbegin(){

      //返回支路首段有功

      return S_begin[0];};

      double get_Pend(){

      //返回支路末端有功

      return S_end[0];};

      double get_Qbegin(){

      //返回支路首段無功

      return S_begin[1];};

      double get_Qend(){

      //返回支路末端無功

      return S_end[1];};

      double get_Pcost(){

      //返回支路有功損耗

      return S_begin[0]-S_end[0];};

      double get_Qcost(){

      //返回支路無功損耗

      return S_begin[1]-S_end[1];};line_part *get_lchild(){

      //返回支路無功損耗

      return lchild;};line_part *get_rchild(){

      //返回支路無功損耗

      return rchild;};};

      void pass_U(line_part *a,line_part *b,line_part *c){(*c).U_begin=(*a).U_end;(*b).U_begin=(*a).U_end;};void pass_w(line_part *a,line_part *b,line_part *c){(*a).S_end[0]=(*b).S_begin[0]+(*c).S_begin[0]+(*a).S_org[0];(*a).S_end[1]=(*b).S_begin[1]+(*c).S_begin[1]+(*a).S_org[1];};void pass_U2(line_part *a,line_part *b){(*b).U_begin=(*a).U_end;};void pass_w2(line_part *a,line_part *b){(*a).S_end[0]=(*b).S_begin[0]+(*a).S_org[0];(*a).S_end[1]=(*b).S_begin[1]+(*a).S_org[1];};

      class BinTree{ public:

      friend void pass_U(line_part*,line_part*,line_part*);

      //電壓傳遞函數(shù)

      pass_w(line_part*,line_part*,line_part*);

      line_part(0,0,0,0,0,0,0,0,0,0,0);root = aa;}

      vall,double u_end=0,double u_begin=0,double r=0, Pe=0,double Xe=0, P0=0,double Q0=0){ egin,r,x,b,Pe,Xe,K,P0,Q0);

      private:

      *&t,double vall,double u_end,double u_begin,double r, Pe,double Xe, Q0);

      };

      friend void //功率傳遞函數(shù) BinTree(){line_part *aa=new line_part *Getroot(){return root;} void insertline_part(double

      double x=0,double b=0,double

      double K=0,double insertline_part(root,vall,u_end,u_b} void PreOrder(){PreOrder(root);};void PostOrder(){PostOrder(root);};void display(){display(root);};line_part *root;void insertline_part(line_part

      double x,double b,double

      double K,double P0,double void PreOrder(line_part *&t);void PostOrder(line_part *t);void display(line_part *&t);

      void BinTree::insertline_part(line_part *&t, double vall,double u_end=0,double u_begin=0,double r=0,double x=0,double b=0,double Pe=0,double Xe=0,double K=0,double P0=0,double Q0=0){

      //插入節(jié)點(diǎn)

      double ass=t->get_val();if(t==0||t->get_val()<=0){

      t=new line_part(vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} else if(vallget_val()){

      insertline_part(t->lchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} else {

      insertline_part(t->rchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} };/////////////////////////////////////////////////////////////////////////////////////////////////////////////// void BinTree::display(line_part *&t){

      if(t->get_val()>0&&t->get_val()<100){

      display(t->lchild);

      display(t->rchild);

      ofstream outfile1;

      outfile1.open(“e:data.txt”,ios::ate);

      p_cost_all +=t->get_Pcost();

      double U;

      // 計(jì)算并存放各個(gè)節(jié)點(diǎn)的電壓相角(始端為零)

      U=atan2(t->U[1],(t->get_Ubegin()-t->U[0]))/3.1415926*180;

      outfile1<<“支路”<get_val()<<“電壓相角”<<“

      ”<

      outfile1<<“

      ”<<“首端電壓”<<“

      ”<get_Ubegin()<

      outfile1<<“

      ”<<“末端電壓”<<“

      ”<get_Uend()<

      //計(jì)算并存放各個(gè)支double U_cost;

      //計(jì)算并存放各個(gè)支路的電壓損耗

      U_cost=t->get_Ubegin()-t->get_Uend();

      outfile1<<“

      ”<<“電壓損耗”<<“

      outfile1<<”

      “<<”始端有功“<<” 首端電壓

      outfile1<<“

      ”<<“始端無功”<<“ 路的末端電壓

      outfile1<<”

      “<<”末端有功“<<” 首端電壓

      outfile1<<“

      ”<<“末端無功”<<“ 路的末端電壓

      double P_cost;

      的有功損耗

      P_cost=t->get_Pcost();

      outfile1<<”

      “<<”有功損耗“<<”

      double Q_cost;

      的無功損耗

      Q_cost=t->get_Qcost();

      outfile1<<“

      ”<<“無功損耗”<<“

      outfile1.close();

      ”<get_Pbegin()<get_Qbegin()<

      //計(jì)算并存放各個(gè)支“<get_Pend()<get_Qend()<

      //計(jì)算并存放各個(gè)支

      //計(jì)算并存放各個(gè)支路 “<

      //計(jì)算并存放各個(gè)支路 ”<

      };/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

      void BinTree::PreOrder(line_part *&t){

      //先序遍歷二叉樹修改電壓

      0)

      get_lchild()->get_val()<100)

      get_rchild()->get_val()<100)

      get_rchild()->get_val()<100)

      if(t->get_val()>0&&t->get_val()<10{ if(t->get_lchild()->get_val()>0&&t-> { if(t->get_rchild()->get_val()>0&&t->

      {

      t->Uend();

      pass_U(t,t->lchild,t->rchild);

      t->lchild->Uend();

      t->rchild->Uend();

      }

      else{

      t->Uend();

      pass_U2(t,t->lchild);

      t->lchild->Uend();} } else { if(t->get_rchild()->get_val()>0&&t->

      {

      t->Uend();

      pass_U2(t,t->rchild);

      t->rchild->Uend();

      }

      else{} }

      PreOrder(t->lchild);PreOrder(t->rchild);

      } };void BinTree::PostOrder(line_part *t){

      //后序遍歷二叉樹修改潮流

      if(t->get_val()>0&&t->get_val()<100)

      get_lchild()->get_val()<100)

      get_rchild()->get_val()<100)

      get_rchild()->get_val()<100)

      { PostOrder(t->lchild);PostOrder(t->rchild);if(t->get_lchild()->get_val()>0&&t-> { if(t->get_rchild()->get_val()>0&&t->

      {

      t->lchild->Sbegin();

      t->rchild->Sbegin();

      pass_w(t,t->lchild,t->rchild);

      t->Sbegin();

      }

      else{

      t->lchild->Sbegin();

      pass_w2(t,t->lchild);

      t->Sbegin();} } else { if(t->get_rchild()->get_val()>0&&t->

      {

      t->rchild->Sbegin();

      pass_w2(t,t->rchild);

      t->Sbegin();

      }

      else{}

      };

      void main(){

      ofstream outfile;

      //輸入數(shù)據(jù)流定義

      infile>>a;

      cout<<“節(jié)點(diǎn)個(gè)數(shù)

      ”<

      const int M(a);

      double *A=new double[10*M];支路數(shù)據(jù)數(shù)組

      while(l<11*M){

      }

      }

      //輸出數(shù)據(jù)流定義 outfile.open(“e:data.txt”);outfile.clear();outfile.close();ifstream infile;infile.open(“e:input.txt”);

      int a;int l(0);char b;

      //支路節(jié)點(diǎn)數(shù)常

      //輸入流輸入各

      infile>>A[l];

      infile.get(b);l++;};outfile.open(“e:data.txt”,ios::ate);outfile<<“節(jié)點(diǎn)個(gè)數(shù)

      ”<

      i=0;i

      *i+1],A[11*i+2],A[11*i+3],A[11*i+4],*i+8],A[11*i+9],A[11*i+10]);

      如下“<

      outfile.close();

      BinTree elec;for(int

      //添加節(jié)點(diǎn)

      elec.insertline_part(A[11*i+0],A[11 A[11*i+5],A[11*i+6],A[11*i+7],A[11} for(i = 0;i<5;i++){ outfile.open(”e:data.txt“,ios::ate);outfile<

      outfile<

      elec.PostOrder();

      elec.PreOrder();elec.display();

      outfile.open(“e:data.txt”,ios::ate);

      “<

      ”<

      “<

      ”<

      outfile<

      line_part *ee=new line_part();ee=elec.Getroot();

      double aa =ee->get_Pbegin();

      outfile<<“全網(wǎng)的總電源有功

      outfile.close();

      outfile.open(”e:data.txt“,ios::ate);double bb;bb =aa-p_cost_all;

      outfile<<”全網(wǎng)的總負(fù)荷有功

      outfile<<“全網(wǎng)的總有功損耗

      double cc;

      cc = p_cost_all/aa*100;

      outfile<<”全網(wǎng)的網(wǎng)損率

      outfile.close();

      p_cost_all=0.0;

      }

      };

      **************************************************************************************************************************************************************習(xí)題3-3 input: 3 2,35,38.5,1.2,2.4,0,3,2,1,0,0 1,35,35,1,2,0,5,3,1,0,0 3,35,35,2,4,0,2,3,1,0,0

      習(xí)題3-4 Input: 最大負(fù)荷 2 1,110,118,8.5,20.5,0.000564,0,0,1,0,0 2,11,110,1.22,20.2,0,40,30,10,0.17,1.7 最小負(fù)荷 2 1,110,113,8.5,20.5,0.000564,0,0,1,0,0 2,11,110,1.22,20.2,0,20,15,10,0.17,1.7

      第五篇:西安交大C++程序設(shè)計(jì)第四章作業(yè)

      西安交通大學(xué)實(shí)驗(yàn)報(bào)告

      課程_計(jì)算機(jī)程序設(shè)計(jì)_實(shí)驗(yàn)名稱_數(shù)組與結(jié)構(gòu)體_

      系 別____ ___________ 實(shí) 驗(yàn) 日 期 2014年 3 月 18 日

      專業(yè)班級___ ___組別_____________ 實(shí) 驗(yàn) 報(bào) 告 日 期 2014年 3 月 22 日 姓 名__ __ __學(xué)號_ ___ 報(bào) 告 退 發(fā)(訂正、重做)同 組 人_________________________________ 教 師 審 批 簽 字

      一、實(shí)驗(yàn)?zāi)康模?/p>

      掌握數(shù)組與字符串的輸入方法,包括一維數(shù)組、二位數(shù)組,不含空格的一個(gè)字符串以及含空格的多個(gè)字符串的輸入以及處理。

      二、實(shí)驗(yàn)內(nèi)容:

      1.第一題:編寫一個(gè)程序?qū)⒔o出的矩陣轉(zhuǎn)置。(1)源程序代碼:

      #include using namespace std;int main(){

      } int jz[4][4]={{4,6,8,9},{2,7,4,5},{3,8,16,15},{1,5,7,11}};int zz[4][4];int i,j;for(i=0;i<4;i++){

      } return 0;for(j=0;j<4;j++){

      } cout<

      / 12

      2.第二題:改寫例4-5冒泡排序程序,由每輪挑選最小元素改為每輪挑選最大元素。(必做題)(1)源程序代碼:

      #include using namespace std;int main(){

      const int COUNT=16;int list[COUNT]={503,87,512,61,908,170,897,275,653,426,154,509,612,677,765,703};for(int i=COUNT-1;i>=0;i--){

      } cout<<“結(jié)果是:”<

      / 12

      for(int j=0;j

      } if(list[j+1]

      } int tmp=list[j+1];list[j+1]=list[j];list[j]=tmp;} return 0;(2)實(shí)驗(yàn)結(jié)果:

      3.第三題:編寫程序:輸入N(例如N為20)個(gè)整數(shù),統(tǒng)計(jì)輸出負(fù)數(shù)的個(gè)數(shù)、正整數(shù)的個(gè)數(shù)及0的個(gè)數(shù);計(jì)算輸出所有負(fù)數(shù)之和、所有正整數(shù)之和。(必做題)(1)源程序代碼:

      #include using namespace std;int main(){

      const int m=20;cout<<“請輸入個(gè)整數(shù):n”;int num[m];for(int n=0;n>num[n];} int z=0,f=0,l=0,Sz=0,Sf=0;for(int i=0;i

      if(num[i]>0){ z++;

      / 12

      }

      } } Sz=Sz+num[i];else {

      } if(num[i]<0){

      } else l++;f++;Sf=Sf+num[i];cout<<“正數(shù)的個(gè)數(shù)為:”<

      4.第四題:加密。明文中小寫字母用其后第3個(gè)小寫字母代替,明文中大寫字母用其后第3個(gè)大寫字母代替。(必做題)(1)源程序代碼:

      #include using namespace std;int main(){

      char in[200];cout<<“請輸入您要加密的語句(不超過個(gè)單詞):”;cin.get(in,200);

      / 12

      } int i;for(i=0;in[i]!=0;i++){

      } cout<<“加密結(jié)果是:”<='a'&&in[i]<='z'){

      } if(in[i]>='A'&&in[i]<='Z'){

      } if(in[i]>'W')in[i]=in[i]-23;in[i]=in[i]+3;else if(in[i]>'w')in[i]=in[i]-23;in[i]=in[i]+3;else(2)實(shí)驗(yàn)結(jié)果:

      5.第五題:編寫凱撒解密程序,即將第5題凱撒加密的密文解密成明文。(必做題)(1)源程序代碼:

      #include using namespace std;int main(){

      / 12

      } char in[200];cout<<“請輸入您要解密的語句:”;cin.get(in,200);int i;for(i=0;in[i]!=0;i++){

      } cout<<“解密結(jié)果是:”<='a'&&in[i]<='z'){

      } if(in[i]>='A'&&in[i]<='Z'){

      } if(in[i]<'D')in[i]=in[i]+23;in[i]=in[i]-3;else if(in[i]<'d')in[i]=in[i]+23;in[i]=in[i]-3;else(2)實(shí)驗(yàn)結(jié)果:為了與上題對照以驗(yàn)證是否正確,故意將上題的結(jié)果代入:

      / 12

      6.第六題:(必做題)編寫程序完成如下功能: A)定義二維數(shù)組8 ×8; B)自動生成數(shù)組中每個(gè)數(shù)據(jù)元素值為(i+1)×(j+1),i和j分別為行列坐標(biāo),輸出該數(shù)組所有元素; C)計(jì)算主對角線元素之和,計(jì)算次對角線元素之和,并輸出; D)將主對角線元素之和加到第一行中每個(gè)元素中,然后輸出第一行所有元素值。(1)源程序代碼:

      #include using namespace std;int main(){ const int M=8;int a[M][M];int i,j;cout<<“矩陣的各個(gè)元素為:n”;for(i=0;i

      for(j=0;j

      {

      a[i][j]=(i+1)*(j+1);

      if(a[i][j]>9)

      cout<

      else

      cout<

      }

      cout<

      zhu=zhu+a[i][i];

      fu=fu+a[i][M-i];} cout<<“主對角線元素之和為:”<

      } } cout<<“a[”<

      7.第七題:(必做題)編寫程序產(chǎn)生 ISBN 號的校驗(yàn)位。任何新出版的圖書都配有 ISBN 號,2007 年以前是由 10 位數(shù)字加上3個(gè)連字符組成的 ISBN,其中最后一位為校驗(yàn)位,校驗(yàn)位產(chǎn)生的具體算法如下:

      假設(shè)某國際標(biāo)準(zhǔn)書號號碼前 9 位是: 7-309-04547 ;計(jì)算加權(quán)和 S : S = 7 × 10+ 3 × 9+ 0 × 8+ 9 × 7+ 0 × 6+ 4 × 5+ 5 × 4+ 4 × 3+ 7 × 2 = 226 ;計(jì)算 S ÷ 11 的余數(shù) M : M = 226 mod 11 = 6 ;計(jì)算 11-M 的差 N : N = 11 ? 6 = 5 如果 N = 10,校驗(yàn)碼是字母“ X ”;如果 N = 11,校驗(yàn)碼是數(shù)字“ 0 ”;如果 N 為其他數(shù)字,校驗(yàn)碼是數(shù)字 N。所以,本書的校驗(yàn)碼是 5,故該

      / 12

      國際標(biāo)準(zhǔn)書號為 ISBN 7-309-04547-5。

      程序總體要求:先輸入 11 位字符組成 ISBN 字符串,如: 7-309-04547,然后計(jì)算產(chǎn)生校驗(yàn)碼(位)5,最后輸出完整的 ISBN 字符串 7-309-04547-5 下面是三本書的 ISBN,以便測試程序: 7-302-09831-X 7-302-13294-1 7-5053-8405-8(1)源程序代碼:

      //7-302-09831-X //7-302-13294-1 //7-5053-8405-8 #include using namespace std;int main(){ char num[20];cout<<“請輸入書號的前部分:”<>num;int i,j;int num_[20];int sum;cout<<“完整的書號是:”<

      if(num[i]>='0'&&num[i]<='9')

      {

      num_[i]=num[i]-'0';

      cout<

      sum=sum+num_[i]*j;

      j--;

      }

      else

      cout<

      } int M=sum%11;if(11-M==10){ if(11-M==11)

      } return 0;cout<<“-0”<

      (2)實(shí)驗(yàn)結(jié)果:

      八.第八題:兩個(gè)有序數(shù)列(由小到大排列)存放在兩個(gè)數(shù)組中,將兩數(shù)列歸并為一個(gè)有序數(shù)列,即歸并后的結(jié)果數(shù)列放在第三個(gè)數(shù)組中。例如: int a[5] = {1,4,10,13,16};//已知數(shù)列 int b[8] = {3,6,9,12,15,18,21,24};//已知數(shù)列 int c[13] = {1,3,4,6,10,12,13,15,16,18,21,24};//歸并后的結(jié)果數(shù)列(選做題)

      (1)源程序代碼:

      / 12

      #include using namespace std;int main(){ const int M=10;const int P=2;int a[P][M];int a2[2*M];int i;cout<<“請按順序輸入數(shù)列一的各個(gè)元素:”<>a[0][i];cout<<“請按順序輸入數(shù)列二的各個(gè)元素:”<

      cin>>a[1][i-M];for(i=0;i<2*M;i++){

      if(i

      {

      a2[i]=a[0][i];

      }

      if(i>=M)

      {

      a2[i]=a[1][i-M];

      } } for(i=2*M-1;i>=0;i--){

      for(int j=0;j

      {

      if(a2[j+1]

      {

      int tmp=a2[j+1];

      a2[j+1]=a2[j];

      a2[j]=tmp;

      }

      } } cout<<“合并后數(shù)列為:”<

      (2)實(shí)驗(yàn)結(jié)果: / 12

      下載c++作業(yè)word格式文檔
      下載c++作業(yè).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        華中科技大學(xué)c++第3次上機(jī)作業(yè)

        華中科技大學(xué) 《計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)(C++)》 實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱:第三次上機(jī)實(shí)驗(yàn)實(shí)驗(yàn)學(xué)時(shí):4 姓名:學(xué)號:班級:電氣 實(shí)驗(yàn)日期:2017/3/27 教師批閱簽字: 一、實(shí)驗(yàn)?zāi)康?? ? ? ? 掌握三種循環(huán)......

        C++常用填空題

        一、單項(xiàng)選擇題(共20題,每題1分,共20分) 6、對重載函數(shù)形參的描述中,錯(cuò)誤的是 D A. 參數(shù)的個(gè)數(shù)可能不同 B. 參數(shù)的類型可能不同 C. 參數(shù)的順序可能不同 D. 參數(shù)的個(gè)數(shù)、類型、順......

        C++實(shí)驗(yàn)

        上機(jī)實(shí)驗(yàn): 1、 回文是指正讀,反讀均相同的字符序列,如“abba”和“abdba”均是回文,但是“good”不是回文,試用STACK類編寫該程序。 #include #include #include int IsPalind......

        C++實(shí)驗(yàn)報(bào)告

        姓名:XX 學(xué)院:XXX 班級:XXX 學(xué)號:XXX - 1 i++; } while(i......

        c++學(xué)習(xí)方法

        學(xué)習(xí)C++應(yīng)該看的書 初級:語法/語意(C++) 《Essential C++ 中文版》 ,侯俊杰 譯,282頁 《C++大學(xué)教程(第二版)》,邱仲潘等 譯,816頁 《C++ Primer 中文版》,侯俊杰 譯, 《標(biāo)準(zhǔn)C++寶......

        什么是c++(本站推薦)

        什么是c++? C++ C++這個(gè)詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計(jì)算機(jī)編程語言。C++是一種......

        c++學(xué)習(xí)心得

        c++學(xué)習(xí)心得 2008-03-12 16:24 為初學(xué)者指路 首先聲明,我可不是什么高手,也就是剛脫貧。因?yàn)檫\(yùn)氣很好,買到了幾本好書,在學(xué)習(xí)過程中幾乎沒走什么彎路,沒費(fèi)什么勁就入門了,現(xiàn)在一般......

        C++學(xué)習(xí)心得

        C++學(xué)習(xí)心得 在計(jì)算機(jī)課程中,C++程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)的一門必修基礎(chǔ)課,該語言以其高效而又實(shí)用的特性:既可以進(jìn)行過程化程序設(shè)計(jì),又可進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì),是進(jìn)行軟件開發(fā)的......