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

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

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

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

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

      數(shù)據(jù)結(jié)構(gòu) 停車場(chǎng)管理 完整版 實(shí)習(xí)報(bào)告[合集五篇]

      時(shí)間:2019-05-13 19:51:48下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《數(shù)據(jù)結(jié)構(gòu) 停車場(chǎng)管理 完整版 實(shí)習(xí)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《數(shù)據(jù)結(jié)構(gòu) 停車場(chǎng)管理 完整版 實(shí)習(xí)報(bào)告》。

      第一篇:數(shù)據(jù)結(jié)構(gòu) 停車場(chǎng)管理 完整版 實(shí)習(xí)報(bào)告

      實(shí)習(xí)報(bào)告

      題目:停車場(chǎng)管理

      一. 需求分析

      1. 用棧來(lái)表示停車場(chǎng),用隊(duì)列來(lái)表示停車道。

      2. 用戶需輸入車輛的必要信息,如車輛的到達(dá)或離開(kāi),汽車牌號(hào)以及到達(dá)或離去的時(shí)刻。停車場(chǎng)的容量及單位時(shí)間的停車費(fèi)由編程序者自行設(shè)置,結(jié)構(gòu)需輸出車輛停車所需繳納的費(fèi)用。

      3. 本程序要求對(duì)車輛的動(dòng)態(tài)能夠輸出具體的信息內(nèi)容,包括停車或離開(kāi)的時(shí)間,位置,及所需繳納的停車費(fèi)。4. 測(cè)試數(shù)據(jù)為:

      N=2,輸入數(shù)據(jù)為:(’A’,1,5),(‘A’,2.,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0).其中:’A’表示到達(dá),’D’表示離去,’E’表示輸入結(jié)束。5.程序執(zhí)行的命令為:

      1.創(chuàng)建棧和隊(duì)列。2.對(duì)車輛的行為進(jìn)行相應(yīng)的處理。3.輸出車輛的信息。

      二. 概要設(shè)計(jì)

      1.設(shè)定棧的抽象數(shù)據(jù)類型定義:

      ADT Stack{

      數(shù)據(jù)對(duì)象:D={ai|ai屬于Elem,i=1,2……,n, n>=0}

      數(shù)據(jù)關(guān)系:R1={| ai-1,ai屬于D,i=2,……,n}

      基本操作:

      initStack(&S)

      操作結(jié)果:構(gòu)造一個(gè)空棧S.pop(&S,&e)

      初始條件:棧S已存在。

      操作結(jié)果:刪除S的棧頂元素,并以e返回其值。

      push(&S,&e)

      初始條件:棧S已存在。

      操作結(jié)果:在棧S的棧頂插入新的棧頂元素e。

      lengthstack(S)

      初始條件:棧S已存在。

      操作結(jié)果:返回S中的元素個(gè)數(shù),即棧的長(zhǎng)度。}ADT Stack;2.設(shè)定隊(duì)列的抽象數(shù)據(jù)類型定義:

      ADT Queue{

      數(shù)據(jù)對(duì)象:D={ai| ai屬于Elem, i=1,2,……,n, n>=0}

      數(shù)據(jù)關(guān)系:R1={| ai-1,ai 屬于D,i=2,……,n}

      基本操作:

      initqueue(&Q)

      操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列Q.enqueue(&Q, e)

      初始條件:隊(duì)列Q已存在。

      操作結(jié)果:插入元素e為Q的新的隊(duì)尾元素。

      dequeue(&Q, &e)

      初始條件:Q為非空隊(duì)列。

      操作結(jié)果:刪除Q的對(duì)頭元素,并用e返回其值。

      Lengthqueue(Q)

      初始條件:隊(duì)列Q已存在。

      操作結(jié)果:返回Q的元素個(gè)數(shù),即隊(duì)列的長(zhǎng)度。}ADT Queue 3.本程序主要包括三個(gè)模塊

      1.主程序模塊;

      int main(){

      初始化;

      do{

      接受命令;

      處理命令;

      }while(命令!=退出); } 2.處理車輛到達(dá)模塊; 3.處理車輛離開(kāi)模塊;

      各模塊之間的調(diào)用關(guān)系如下:

      處理車輛到達(dá)模塊?主程序模塊?處理車輛離開(kāi)模塊

      三. 詳細(xì)設(shè)計(jì)

      設(shè)計(jì)程序如下:

      #include #define n 2

      //將停車場(chǎng)的容量設(shè)為2; #define cost 10 //將單位時(shí)間的停車費(fèi)設(shè)為10,車道里不收費(fèi);

      #define OVERFLOW-2

      #define ERROR 0 //分配棧的存儲(chǔ)空間失?。?using namespace std;

      typedef struct Elem {//定義元素?cái)?shù)據(jù)結(jié)構(gòu)類型

      int carnum;int time;}Elem;

      typedef struct QNode {//隊(duì)列

      struct QNode *next;Elem Qelem;}QNode,*QueuePtr;

      typedef struct { QueuePtr front;//隊(duì)頭指針

      QueuePtr rear;//隊(duì)尾指針 }LinkQueue;

      void initqueue(LinkQueue &Q){//構(gòu)造一個(gè)空隊(duì)列

      Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!Q.front)exit(OVERFLOW);Q.front->next=Q.rear->next=NULL;}

      void enqueue(LinkQueue &Q,int carnum,int time){//入隊(duì)操作

      QueuePtr p=(QueuePtr)malloc(sizeof(QNode));p->Qelem.carnum=carnum;p->Qelem.time=time;p->next=NULL;Q.rear->next=p;Q.rear=p;} int lengthqueue(LinkQueue Q){ int i=0;QueuePtr p;p=Q.front->next;while(p!=Q.rear){

      i++;

      p=p->next;} i++;return i;} void dequeue(LinkQueue &Q,Elem &e){//從對(duì)頭離隊(duì)操作,并返回其值 QueuePtr p=(QueuePtr)malloc(sizeof(QNode));if(Q.front==Q.rear)

      cout<<“車道中沒(méi)有車輛!”<

      p=Q.front->next;

      e=p->Qelem;

      Q.front->next=p->next;

      if(Q.rear==p)Q.rear=Q.front;

      free(p);} } typedef struct { Elem *base;Elem *top;int stacksize;}Sqstack;void initStack(Sqstack &S){//創(chuàng)建一個(gè)空棧

      S.base=(Elem*)malloc(n*sizeof(Elem));if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=n;} int push(Sqstack &S,Elem &e)//插入新的元素 { Elem *temp;if(S.top-S.base==S.stacksize)

      return 1;else {

      temp=S.top;

      temp->carnum=e.carnum;

      temp->time=e.time;

      S.top++;

      return 0;} } int lengthstack(Sqstack S){//當(dāng)前棧的長(zhǎng)度

      return S.top-S.base;}

      int pop(Sqstack &S,Elem &e){ //刪除棧頂元素,并返回其值

      if(S.top==S.base)return ERROR;e=*--S.top;return 1;} void carin(Sqstack &S,LinkQueue &Q,Elem car){ int k=0;//輸入數(shù)據(jù)正確

      QueuePtr r;Elem *temp;temp=S.base;while(temp!=S.top)/在棧中尋找是否有同一編號(hào)的車;

      {

      if(temp->carnum==car.carnum)

      {

      cout<<“該車號(hào)在停車場(chǎng)中已存在,請(qǐng)重新輸入!”<

      k=1;//找到了有同一編號(hào)的車

      break;

      }

      temp++;} if(k==0&&Q.front!=Q.rear){//在棧中未找到,從隊(duì)列中查找

      r=Q.front->next;//隊(duì)頭

      while(r&&r->Qelem.carnum!=car.carnum)

      {r=r->next;}

      if(r&&r->Qelem.carnum==car.carnum){cout<<“該車號(hào)在車道中已存在,請(qǐng)重新輸入!”<

      {

      if(S.top-S.base!=S.stacksize)//說(shuō)明棧未滿,{

      S.top->carnum=car.carnum;

      S.top->time=car.time;

      S.top++;

      cout<<“請(qǐng)進(jìn)入停車場(chǎng)”<

      }

      else

      {

      enqueue(Q,car.carnum,car.time);

      cout<<“請(qǐng)便車道”<

      } } }

      void carleave(Sqstack &S,LinkQueue &Q,Elem car){ int ture=0;//在棧中沒(méi)有找到與要離開(kāi)的車

      Elem e,em,*temp;

      QueuePtr p,r;temp=S.base;if(ture==0){

      while(temp!=S.top)//先在棧中尋找;

      {

      if(temp->carnum==car.carnum)

      {

      int temp_cost;

      temp_cost=(car.time-temp->time)*cost;

      ture=1;//在棧中找到

      cout<<“您的停車時(shí)間為”<time<<“小時(shí),請(qǐng)交納費(fèi)用!”<

      break;

      }

      temp++;

      }

      if(ture==1)

      //備用棧

      {

      Sqstack spear;

      initStack(spear);

      while(S.top!=temp+1)//先在棧中尋找;

      {

      pop(S,em);

      push(spear,em);

      }

      pop(S,*temp);

      if(spear.top!=spear.base)

      {

      while(spear.top!=spear.base)

      {

      pop(spear,em);

      push(S,em);

      } } } if(ture==1&&Q.front!=Q.rear)//棧中有車離開(kāi),將隊(duì)列中的車進(jìn)入棧中 { dequeue(Q,e);

      //離隊(duì),并返回?cái)?shù)據(jù)e S.top->carnum=e.carnum;S.top->time=car.time;S.top++;cout<

      } } if(ture==0&&Q.front!=Q.rear)//棧中沒(méi)找到要離開(kāi)的車

      {

      p=Q.front;

      r=Q.front->next;//隊(duì)頭

      while(r&&r->Qelem.carnum!=car.carnum)

      {

      p=r;

      r=r->next;

      }

      if(r&&r->Qelem.carnum==car.carnum)

      ture=2;//在隊(duì)列中找到要離開(kāi)的車

      if(r&&r->Qelem.carnum==car.carnum)

      {

      ture=2;

      cout<<“便道”<Qelem.carnum<<“號(hào)車離開(kāi),不收取費(fèi)用!”<

      p->next=r->next;

      free(r);

      } }//直接從隊(duì)列離開(kāi)

      if(ture==0)

      cout<<“沒(méi)有該輛車!”<

      char c;

      int j=0,temp_time,i=1;//i==0,判斷臨時(shí)記錄時(shí)間的temp_time應(yīng)該去該次的值,還是上次的值。j==0,表示第一次輸入數(shù)據(jù),不需要檢測(cè)數(shù)據(jù)是否正確

      LinkQueue Q;Sqstack S;Elem car;initqueue(Q);

      initStack(S);

      cout<<“請(qǐng)輸入車輛信息(到達(dá)離開(kāi)或退出標(biāo)志A D E,車牌號(hào),當(dāng)前時(shí)間)”<

      while(cin>>c>>car.carnum>>car.time)

      {

      if(j==1)

      {

      if(S.top==S.base)

      cout<<“停車場(chǎng)中沒(méi)有車!”<

      else

      {

      if(car.time

      {

      cout<<“您輸入的時(shí)間有誤,請(qǐng)重新輸入!”<

      i=0;//temp_time還是記錄上次的值

      }

      else

      {

      temp_time=car.time;

      i=1;

      }

      }

      if(i==1)//正確的數(shù)據(jù)

      {

      if(c=='A')//到達(dá)

      carin(S,Q,car);

      else if(c=='D')

      {

      if(S.top==S.base);

      else

      carleave(S,Q,car);

      }

      }

      j=1;

      }

      if(j==0)//第一次輸入數(shù)據(jù)不需要檢測(cè)

      {

      if(c=='A')//到達(dá)

      carin(S,Q,car);

      else if(c=='D')

      {

      if(S.top==S.base)

      cout<<“停車場(chǎng)中沒(méi)有車!”<

      else

      carleave(S,Q,car);

      }

      j=1;

      temp_time=car.time;

      }

      if(c=='E')

      {

      cout<<“輸入結(jié)束!”<

      break;

      }

      } return 0;}

      四. 調(diào)試分析

      1.本次作業(yè)是設(shè)計(jì)停車場(chǎng)的管理系統(tǒng),就需要判斷車牌號(hào),及時(shí)間的輸入的正確性,輸入的數(shù)據(jù)有比較嚴(yán)格的要求,必須符合實(shí)際。因此對(duì)數(shù)據(jù)需要多次判斷。2.處理車輛到達(dá)模塊和處理車輛離開(kāi)模塊其空間復(fù)雜度為O(m*n);3.本程序循環(huán)用的很多,找車,排隊(duì),等等。4.主程序設(shè)計(jì)的有點(diǎn)亂。

      用戶手冊(cè)

      1.運(yùn)行,按屏幕提示輸入車輛信息;

      2.回車顯示車輛在停車場(chǎng)或停車道的信息; 3.輸入E,則退出。

      六. 測(cè)試結(jié)果

      七 附錄

      #include

      第二篇:數(shù)據(jù)結(jié)構(gòu)-停車場(chǎng)管理-實(shí)習(xí)報(bào)告

      實(shí)習(xí)報(bào)告

      題目:停車場(chǎng)管理

      一. 需求分析

      1. 用棧來(lái)表示停車場(chǎng),用隊(duì)列來(lái)表示停車道。

      2. 用戶需輸入車輛的必要信息,如車輛的到達(dá)或離開(kāi),汽車牌號(hào)以及到達(dá)或離去的時(shí)刻。停車場(chǎng)的容量及單位時(shí)間的停車費(fèi)由編程序者自行設(shè)置,結(jié)構(gòu)需輸出車輛停車所需繳納的費(fèi)用。

      3. 本程序要求對(duì)車輛的動(dòng)態(tài)能夠輸出具體的信息內(nèi)容,包括停車或離開(kāi)的時(shí)間,位置,及所需繳納的停車費(fèi)。4. 測(cè)試數(shù)據(jù)為:

      N=2,輸入數(shù)據(jù)為:(’A’,1,5),(‘A’,2.,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0).其中:’A’表示到達(dá),’D’表示離去,’E’表示輸入結(jié)束。5.程序執(zhí)行的命令為:

      1.創(chuàng)建棧和隊(duì)列。2.對(duì)車輛的行為進(jìn)行相應(yīng)的處理。3.輸出車輛的信息。

      二. 概要設(shè)計(jì)

      1.設(shè)定棧的抽象數(shù)據(jù)類型定義:

      ADT Stack{

      數(shù)據(jù)對(duì)象:D={ai|ai屬于Elem,i=1,2……,n, n>=0}

      數(shù)據(jù)關(guān)系:R1={| ai-1,ai屬于D,i=2,……,n}

      基本操作:

      InitStack(&S)

      操作結(jié)果:構(gòu)造一個(gè)空棧S.pop(&S,&e)

      初始條件:棧S已存在。

      操作結(jié)果:刪除S的棧頂元素,并以e返回其值。

      push(&S,&e)

      初始條件:棧S已存在。

      操作結(jié)果:在棧S的棧頂插入新的棧頂元素e。

      EmptyStack(S)

      初始條件:棧S已存在。

      操作結(jié)果:若棧為空,則返回TRUE,否則,返回FALSE }ADT Stack;2.設(shè)定隊(duì)列的抽象數(shù)據(jù)類型定義:

      ADT Queue{

      數(shù)據(jù)對(duì)象:D={ai| ai屬于Elem, i=1,2,……,n, n>=0}

      數(shù)據(jù)關(guān)系:R1={| ai-1,ai 屬于D,i=2,……,n}

      基本操作:

      InitQueue(&Q)

      操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列Q.Append(&Q, e)

      初始條件:隊(duì)列Q已存在。

      操作結(jié)果:插入元素e為Q的新的隊(duì)尾元素。

      Remove(&Q, &e)

      初始條件:Q為非空隊(duì)列。

      操作結(jié)果:刪除Q的對(duì)頭元素,并用e返回其值。

      EmptyQueue(Q)

      初始條件:隊(duì)列Q已存在。

      操作結(jié)果:若隊(duì)列為空,則返回TRUE,否則,返回FALSE

      }ADT Queue 3.本程序主要包括三個(gè)模塊

      1.主程序模塊;

      int main(){

      初始化;

      do{

      接受命令;

      處理命令;

      }while(命令!=退出); } 2.處理車輛到達(dá)模塊; 3.處理車輛離開(kāi)模塊;

      各模塊之間的調(diào)用關(guān)系如下:

      處理車輛到達(dá)模塊?主程序模塊?處理車輛離開(kāi)模塊

      三. 詳細(xì)設(shè)計(jì)

      設(shè)計(jì)程序如下: 1.棧的頭文件

      #ifndef _SQSTACK_H_ #define _SQSTACK_H_ struct Car { int plate, arrive_t;};class SqStack { public: int top;Car *base;int size;void InitStack(int m=100);bool EmptyStack()const;bool Push(Car &c);bool Pop(Car &c);};void SqStack::InitStack(int n){ base = new Car[n];top =-1;size = n;} bool SqStack::EmptyStack()const { if(top ==-1)

      return true;else

      return false;} bool SqStack::Push(Car &c){ if(top == sizec.arrive_t;if(timelong < 0){

      cout << “the input is false,please do it again”<

      packing.Push(c);

      while(!temp.EmptyStack())

      {

      temp.Pop(c);

      packing.Push(c);

      }

      return 0;} cout << “car ” << pla << “ was departed from packing lot” << endl;cout << “停留時(shí)間:” << timelong << endl;cout << “繳納金額:” << timelong*price << endl;while(!temp.EmptyStack()){

      temp.Pop(c);

      packing.Push(c);}

      if(!sevice_road.EmptyQueue())

      {

      sevice_road.Remove(c);

      map[c.plate] = 0;

      c.arrive_t = tim;

      packing.Push(c);

      cout << “car ” << c.plate << “ in packing lot” << endl;

      } } return 0;} int main(){ cout << “請(qǐng)輸入停車場(chǎng)規(guī)?!?<< endl;cout << “xxxxxxxxxx” << endl;int n;cin >> n;cout << “xxxxxxxxxx” << endl;SqStack packing, temp;LinkQueue sevice_road;packing.InitStack(n);temp.InitStack();sevice_road.InitQueue();cout << “請(qǐng)輸入指令:A-arrive、D-depart、E-exit cout << ”xxxxxxxxxx“ << endl;char command;cin >> command;while(command!= 'E'){

      if(command == 'A')

      {

      Arrive(packing, sevice_road);

      cout << ”xxxxxxxxxx“ << endl;

      }

      if(command == 'D')

      {

      Depart(packing, temp, sevice_road);

      cout << ”xxxxxxxxxx“ << endl;

      }

      cin >> command;} }

      車牌號(hào)時(shí)間” << endl;

      四. 調(diào)試與驗(yàn)收

      1.本次作業(yè)是設(shè)計(jì)停車場(chǎng)的管理系統(tǒng),就需要判斷車牌號(hào),及時(shí)間的輸入的正確性,輸入的數(shù)據(jù)有比較嚴(yán)格的要求,必須符合實(shí)際。因此對(duì)數(shù)據(jù)需要多次判斷。2.處理車輛到達(dá)模塊和處理車輛離開(kāi)模塊其空間復(fù)雜度為O(m*n);3.本程序循環(huán)用的很多,找車,排隊(duì),等等。

      4.在驗(yàn)收時(shí),老師提出一些當(dāng)輸入為不正常輸入的時(shí)候的情況,而我沒(méi)有考慮到,所以又做了一定的修改。

      5.驗(yàn)收時(shí),老師提到所加map破壞了程序整體結(jié)構(gòu)的完好性,是有待改進(jìn)的地方。

      用戶手冊(cè)

      1.按屏幕提示輸入停車場(chǎng)規(guī)模和車輛信息; 2.回車顯示車輛在停車場(chǎng)或停車道的信息; 3.輸入E退出。

      六. 測(cè)試結(jié)果

      七 附錄

      源程序文件名清單: LinkQueue.cpp LinkQueue.h SqStack.cpp

      SqStack.h 停車場(chǎng)管理.cpp

      第三篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-停車場(chǎng)管理

      課 程 設(shè) 計(jì) 報(bào) 告

      課程名稱

      數(shù)據(jù) 結(jié)構(gòu)

      停車場(chǎng)管理

      學(xué)生姓名 班級(jí)/學(xué)號(hào) 191103

      一、需求分析

      設(shè)停車場(chǎng)是一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門(mén)可供

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

      【測(cè)試數(shù)據(jù)】

      設(shè)n=2,輸入數(shù)據(jù)為:(’A’,1,5),(’A’,2,10),(’D’,1,15),(’A’,3,20),(’A’,4,25),(’A’,5,30),(’D’,2,35),(’D’,4,40),(’E’,0,0)。其中:’A’表示到達(dá);’D’表示離去;’E’表示輸入結(jié)束。概要設(shè)計(jì)

      以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道。棧以順序結(jié)構(gòu)實(shí)現(xiàn)。隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。每一組輸入數(shù)據(jù)包括:汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼以及到達(dá)或離去的時(shí)刻。

      輸出信息:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。

      二、詳細(xì)設(shè)計(jì)

      三、程序設(shè)計(jì)

      1.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) /*棧,模擬停車場(chǎng)*/ typedef struct Car1 {

      //車

      int number;//汽車車號(hào)

      int ar_time;//汽車到達(dá)時(shí)間 }CarNode;

      typedef struct {

      //停車場(chǎng)

      CarNode *base;//停車場(chǎng)的堆棧底

      CarNode *top;//停車場(chǎng)的堆棧頂

      int stacksize;}Park;

      /*隊(duì)列,模擬便道*/ typedef struct Car2 {

      //車

      int number;//汽車車號(hào)

      int ar_time;//汽車到達(dá)時(shí)間

      struct Car2 *next;}*CarPtr;

      typedef struct {

      //便道

      CarPtr front;//便道的隊(duì)列的對(duì)頭

      CarPtr rear;//便道的隊(duì)列的隊(duì)尾

      int length;}Shortcut;2.程序設(shè)計(jì)

      主函數(shù)中包括3個(gè)子函數(shù),A(arrive),D(depart),E(end)

      (1)輸入車輛數(shù)據(jù):A為到達(dá),D為離去,E為結(jié)束程序。

      (2)接著輸入車輛的牌照信息

      (3)若為到達(dá)的車輛,輸入進(jìn)場(chǎng)信息,若為離去的車輛,輸入離場(chǎng)信息。(4)若車輛到達(dá),可得到車輛的停放位置信息,若車輛離去,可得到車輛的停放時(shí)間(在便道上的停放時(shí)間除外),以及應(yīng)該交納的費(fèi)用。

      (5)本程序不斷循環(huán)要求輸入車輛信息,直到輸入的車輛數(shù)據(jù)為E時(shí),程序結(jié)束。

      四、調(diào)試分析

      a、一開(kāi)始在調(diào)試程序時(shí)遇到了內(nèi)存錯(cuò)誤,經(jīng)過(guò)DEBUG,找到了引起內(nèi)存錯(cuò)誤的原因:即在建立隊(duì)頭指針與隊(duì)尾指針時(shí)沒(méi)有對(duì)指針進(jìn)行初始化(沒(méi)有為指針動(dòng)態(tài)分配空間)。問(wèn)題得到解決。

      b、本程序中:車輛到達(dá),離去時(shí)的時(shí)間復(fù)雜度均為:O(n)。本程序空間復(fù)雜度為:O(n)

      五、使用說(shuō)明和測(cè)試結(jié)果

      1.使用說(shuō)明:用戶按照屏幕所顯示的提示來(lái)選擇需要進(jìn)行操作

      2、測(cè)試結(jié)果:

      測(cè)試結(jié)果滿足題目要求,程序無(wú)錯(cuò)誤。

      六、心得體會(huì)

      通過(guò)此實(shí)驗(yàn),加深了我對(duì)數(shù)據(jù)結(jié)構(gòu)這門(mén)課的理解,真正運(yùn)用了知識(shí)。將理論與現(xiàn)實(shí)完美的聯(lián)系在了一起。增強(qiáng)了動(dòng)手能力,對(duì)今后的工作學(xué)習(xí)都有很大的幫助。單調(diào)的看書(shū)本沒(méi)有太大的作用,只有去編程才能理解究竟學(xué)習(xí)的作用。同時(shí),編程過(guò)程中遇到過(guò)各種各樣的問(wèn)題,與同學(xué)討論,與老師交流。鍛煉了我的協(xié)做能力與克服困難的能力。編程也極大的提高了我的學(xué)習(xí)積極性。

      七、附錄

      #include #include #include #define SIZE 2//停車場(chǎng)位置數(shù),共5個(gè)車位 typedef int Status;

      /*棧,模擬停車場(chǎng)*/ typedef struct Car1 {

      //車

      int number;//汽車車號(hào)

      int ar_time;//汽車到達(dá)時(shí)間 }CarNode;

      typedef struct {

      //停車場(chǎng)

      CarNode *base;//停車場(chǎng)的堆棧底

      CarNode *top;//停車場(chǎng)的堆棧頂

      int stacksize;

      }Park;

      /*隊(duì)列,模擬便道*/ typedef struct Car2 {

      //車

      int number;//汽車車號(hào)

      int ar_time;//汽車到達(dá)時(shí)間

      struct Car2 *next;}*CarPtr;

      typedef struct {

      //便道

      CarPtr front;//便道的隊(duì)列的對(duì)頭

      CarPtr rear;//便道的隊(duì)列的隊(duì)尾

      int length;}Shortcut;/*初始化停車場(chǎng)*/ Status InitStack(Park &P){

      P.base=(CarNode*)malloc(SIZE*sizeof(Car1));

      if(!P.base)exit(-2);

      P.top=P.base;

      P.stacksize=0;

      return 1;}

      Status Push(Park &P,CarNode e){//車進(jìn)入停車場(chǎng)

      *P.top++=e;

      ++P.stacksize;

      return 1;}

      Status Pop(Park &P,CarNode &e){//車離開(kāi)停車場(chǎng)

      if(P.top==P.base)

      printf(“停車場(chǎng)為空”);

      else

      {

      e=*--P.top;

      --P.stacksize;

      }

      return 1;} /*初始化便道*/ Status InitQueue(Shortcut &S){

      S.front=S.rear=(CarPtr)malloc(sizeof(Car2));

      if(!S.front||!S.rear)exit(-2);

      S.front->next=NULL;

      S.length=0;

      return 1;}

      Status EnQueue(Shortcut &S,int number,int ar_time){//車進(jìn)入便道

      CarPtr p;

      p=(CarPtr)malloc(sizeof(Car2));

      if(!p)exit(-2);

      p->number=number;

      p->ar_time=ar_time;

      p->next=NULL;

      S.rear->next=p;

      S.rear=p;

      ++S.length;

      return 1;}

      Status DeQueue(Shortcut &S,CarPtr &w){//車離開(kāi)便道

      if(S.length == 0)

      printf(“通道為空”);

      else

      {

      w = S.front->next;

      S.front->next=S.front->next->next;

      --S.length;

      }

      return 1;}

      Status Arrival(Park &P,Shortcut &S){//對(duì)進(jìn)站車輛的處理

      int number,ar_time;

      printf(“請(qǐng)輸入車牌號(hào):”);

      scanf(“%d”,&number);

      printf(“進(jìn)場(chǎng)的時(shí)刻:”);

      scanf(“%d”,&ar_time);

      if(P.stacksize

      {

      CarNode c;

      c.number=number;

      c.ar_time=ar_time;

      Push(P,c);

      printf(“請(qǐng)將車停在第%d號(hào)車道。n”,P.stacksize);

      }

      else

      {

      EnQueue(S,number,ar_time);

      printf(“停車場(chǎng)已滿,請(qǐng)暫時(shí)停在便道的第%d個(gè)位置。n”,S.length);

      }

      return 1;}

      Status Leave(Park &P,Park &P1,Shortcut &S){//對(duì)離站車輛的處理

      int number,le_time,flag=1,money,ar_time;

      printf(“請(qǐng)輸入車牌號(hào):”);

      scanf(“%d”,&number);

      printf(“出場(chǎng)的時(shí)刻:”);

      scanf(“%d”,&le_time);

      CarNode e,m;

      CarPtr w;

      while(P.stacksize)

      {

      Pop(P,e);

      if(e.number==number)

      {

      flag=0;

      money=(le_time-e.ar_time)*2;

      ar_time=e.ar_time;

      break;

      }

      Push(P1,e);

      }

      while(P1.stacksize)

      {

      Pop(P1,e);

      Push(P,e);

      }

      // 車從停車場(chǎng)中出

      if(flag == 0)

      {

      if(S.length!=0)

      {

      DeQueue(S,w);

      m.ar_time=le_time;

      m.number=w->number;

      Push(P,m);

      free(w);

      printf(“車牌號(hào)為%d的車已由便道進(jìn)入停車場(chǎng)n”,m.number);

      }

      printf(“停車費(fèi)為%d, 占用車位數(shù)為%dn”,money,P.stacksize);

      }

      else

      {

      printf(“停車場(chǎng)不存在牌號(hào)為%d的車n”, number);

      }

      return 1;} /*主函數(shù)*/ int main(){

      int m=1;

      char flag;//選項(xiàng)

      Park P,Q;

      Shortcut S;InitStack(P);InitStack(Q);InitQueue(S);

      while(m)

      {

      printf(“n

      停車場(chǎng)管理程序

      n”);

      printf(“A 汽車進(jìn)車場(chǎng)

      D 汽車出車場(chǎng)

      E 退出程序n”);

      printf(“請(qǐng)選擇(A,D,E): ”);

      scanf(“%c”,&flag);

      switch(flag)

      {

      case 'A':

      case 'a':

      Arrival(P,S);break;//車進(jìn)入停車場(chǎng)

      case 'D':

      case 'd':

      Leave(P,Q,S);break;//車離開(kāi)停車場(chǎng)

      case 'E':

      case 'e':

      m=0;

      break;

      default:

      printf(“Input error!n”);

      break;

      }

      while(flag!= 'n')

      scanf(“%c”,&flag);

      } }

      第四篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_15_停車場(chǎng)管理

      停車場(chǎng)管理系統(tǒng)

      ——數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)程序設(shè)計(jì)書(shū)

      小組成員:

      彭路

      20131344031 崔琦

      20131344028 徐佳

      20131344027 范福龍 20121344024 班級(jí) : 13軟件工程1班 時(shí)間:2014.12.22

      目錄

      一、程序設(shè)計(jì)目標(biāo)

      二、問(wèn)題描述

      三、需求分析

      四、概要設(shè)計(jì)

      五、詳細(xì)設(shè)計(jì)

      六、源程序清單

      七、軟件說(shuō)明書(shū)

      八、測(cè)試報(bào)告

      九、課程設(shè)計(jì)總結(jié)

      一、程序設(shè)計(jì)目標(biāo)

      本管理程序由c/c++語(yǔ)言完成,實(shí)現(xiàn)了對(duì)停車場(chǎng)收費(fèi)問(wèn)題的處理。本程序保證了程序的健壯性和操作性,在閱讀過(guò)使用說(shuō)明書(shū)之后可以輕松使用。本管理系統(tǒng)假設(shè)車輛在停車場(chǎng)時(shí)一直有人在駕駛,或者說(shuō)停車場(chǎng)的每塊停車位均可智能移動(dòng)。并假設(shè)車輛進(jìn)出場(chǎng)耗時(shí)不計(jì),且時(shí)間均為整數(shù)類型。最后自動(dòng)或者人工完成收費(fèi)。

      二、問(wèn)題描述

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

      三、需求分析

      根據(jù)問(wèn)題描述,可把本停車場(chǎng)抽象成一個(gè)棧存儲(chǔ)類型s1,需要輸入最大停車容量n。每當(dāng)輸入’A’時(shí)即為有車輛申請(qǐng)進(jìn)入停車場(chǎng)操作,此時(shí)需要判斷停車場(chǎng)是否有空位,如果有空位,那么這輛車可以進(jìn)入停車場(chǎng),即為執(zhí)行一次壓棧操作(push),并記錄進(jìn)入停車場(chǎng)的時(shí)間t1,并輸出位置p1;如果停車場(chǎng)沒(méi)有空位,那么這輛車在門(mén)外便道等候,并輸出位置p2。根據(jù)問(wèn)題描述,可以把此門(mén)外便道抽象成一個(gè)隊(duì)列存儲(chǔ)類型q,而每有一輛車進(jìn)入門(mén)外便道,即相當(dāng)于進(jìn)行一次插入隊(duì)列操作(push)。每當(dāng)輸入’D’時(shí)即為有車輛申請(qǐng)離開(kāi)停車場(chǎng)操作,此時(shí)需要判斷該車輛在停車場(chǎng)的位置。如果該車位于停車場(chǎng)最外側(cè)即相當(dāng)于棧頂,那么該車可以直接批準(zhǔn)離開(kāi)并根據(jù)輸入的離開(kāi)時(shí)間t2計(jì)算出停車時(shí)間t2-t1,根據(jù)該車本次停車時(shí)間完成收費(fèi)后即可成功駛出停車場(chǎng),即相當(dāng)于成功彈出棧頂元素(pop);如果該車沒(méi)有位于停車場(chǎng)最外側(cè),事實(shí)上,這也是大多數(shù)的情況,那么需要將該車外側(cè)的車依次(即為擋路的車)移動(dòng)進(jìn)一個(gè)臨時(shí)停車場(chǎng),根據(jù)問(wèn)題描述,可以將該臨時(shí)停車場(chǎng)抽象成另一個(gè)棧存儲(chǔ)類型s2,那么此次移動(dòng)操作相當(dāng)于將棧中某元素以上的元素依次壓入另一個(gè)棧(push)。當(dāng)申請(qǐng)離開(kāi)的車駛出停車場(chǎng)后,在臨時(shí)停車場(chǎng)的車輛依次進(jìn)入停車場(chǎng),此操作相當(dāng)于將棧s2內(nèi)元素依次彈出棧(pop)并壓入棧s1(push)。此時(shí)判斷門(mén)外便道上有無(wú)等待進(jìn)入停車場(chǎng)的車輛,如果有的話,門(mén)外便道上第一輛車可以進(jìn)入停車場(chǎng),并記錄進(jìn)入時(shí)間t1,此次操作相當(dāng)于取出隊(duì)列q的隊(duì)首元素并將其壓入棧s1中。而輸入’E’時(shí),即退出系統(tǒng)。至此,所有分析結(jié)束。

      四、概要設(shè)計(jì)

      根據(jù)需求分析,解決此問(wèn)題需要構(gòu)建一個(gè)Cars類型的結(jié)構(gòu)體,構(gòu)建一個(gè)CarNode類型的節(jié)點(diǎn)結(jié)構(gòu)體以構(gòu)建SQueue類型的隊(duì)列結(jié)構(gòu)體,并需要構(gòu)建一個(gè)SQstack類型的棧結(jié)構(gòu)體。接下來(lái),分別定義隊(duì)列和棧的各項(xiàng)基本操作函數(shù)。最后,完成菜單函數(shù)以實(shí)現(xiàn)各項(xiàng)操作。

      五、詳細(xì)設(shè)計(jì)

      本程序定義了三個(gè)頭文件,manager_cars.h、manager_stack.h、manager_queue.h。分別實(shí)現(xiàn)了Cars類型的結(jié)構(gòu)體、SQueue類型的隊(duì)列結(jié)構(gòu)體、SQstack類型的棧結(jié)構(gòu)體以及隊(duì)列的相關(guān)操作函數(shù)和棧的相關(guān)操作函數(shù)。具體如下:

      1、manager_cars.h

      sq->lastCar=car;sq->firstCar->nextCar=NULL;sq->length=0;} //進(jìn)入隊(duì)列操作

      void enterSQueue(SQueue *sq,int num,int t){ CarNode *car=(CarNode *)malloc(sizeof(CarNode));car->headCar.condition='D';car->headCar.number=num;car->headCar.time=t;car->headCar.position=2;

      car->nextCar=NULL;sq->lastCar->nextCar=car;sq->lastCar=car;sq->length++;} //出隊(duì)列操作

      void exceedSQueue(SQueue *sq){ if(sq->firstCar==sq->lastCar)

      return;CarNode *car=(CarNode *)malloc(sizeof(CarNode));car=sq->firstCar->nextCar;sq->firstCar->nextCar=car->nextCar;sq->length--;if(sq->lastCar==car)

      sq->lastCar=sq->firstCar;free(car);

      }

      //檢測(cè)隊(duì)列存在

      int SQueueEmpty(SQueue sq){ if(sq.firstCar==sq.lastCar)

      return 1;else

      return 0;} //獲取隊(duì)首元素

      void getSQueue(SQueue sq,Cars *e){ if(sq.firstCar==sq.lastCar)

      return;*e=sq.firstCar->nextCar->headCar;S.base;}

      extern int GetTop(SQstack S,Cars *e)//若棧不為空,則用e返回S的棧頂元素,并返回OK;否則返回ERROR { if(S.top == S.base)return 0;

      *e = *(S.top-1);

      return 1;

      }

      extern int Push(SQstack*S,Cars e)//插入元素e為新的棧頂元素

      { if(S->top

      cout<<“請(qǐng)正確輸入Y或N:”<

      scanf(“%c”,&flag);

      getchar();} while(flag=='Y'){

      flag='C';

      Cars car;

      SQstack park;//定義棧并初始化

      InitStack(&park);

      SQueue street;//定義隊(duì)列并初始化

      setSQueue(&street);

      cout<<“請(qǐng)輸入本停車場(chǎng)最多可提供的車位數(shù):”;

      scanf(“%d”,&maxNum);

      getchar();

      cout<<“請(qǐng)輸入每小時(shí)停車費(fèi):”;

      cin>>Pprice;

      cout<

      cout<<“請(qǐng)輸入到達(dá)(A)/離開(kāi)(D)信息,車牌號(hào),時(shí)間(格式為A 1 5):”;

      cin>>car.condition>>car.number>>car.time;

      //scanf(“%c %d %d”,&car.condition,&car.number,&car.time);

      //getchar();

      while(car.condition!='E'&&car.number!=0&&car.time!=0)

      {

      switch(car.condition)

      {

      case 'A':

      {

      enterPark(car,park,street);

      break;

      }

      case 'D':

      {

      int lasttime;

      lasttime=outOfPark(car,park,street,car.number,car.time);

      cout<

      cout<<“此車在停車場(chǎng)停留了”<break;

      }

      default :cout<<“請(qǐng)輸入正確的格式!”<

      }

      cin>>car.condition>>car.number>>car.time;

      //scanf(“%c %d %d”,&car.condition,&car.number,&car.time);

      Cars headCar;struct CarNode *nextCar;}CarNode;

      typedef struct { CarNode *firstCar;CarNode *lastCar;

      int length;}SQueue;//建隊(duì)列鏈表

      void setSQueue(SQueue *sq){ CarNode *car=(CarNode *)malloc(sizeof(CarNode));sq->firstCar=car;sq->lastCar=car;sq->firstCar->nextCar=NULL;sq->length=0;} //進(jìn)入隊(duì)列操作

      void enterSQueue(SQueue *sq,int num,int t){ CarNode *car=(CarNode *)malloc(sizeof(CarNode));car->headCar.condition='D';car->headCar.number=num;car->headCar.time=t;car->headCar.position=2;

      car->nextCar=NULL;sq->lastCar->nextCar=car;sq->lastCar=car;sq->length++;} //出隊(duì)列操作

      void exceedSQueue(SQueue *sq){ if(sq->firstCar==sq->lastCar)

      return;CarNode *car=(CarNode *)malloc(sizeof(CarNode));car=sq->firstCar->nextCar;sq->firstCar->nextCar=car->nextCar;sq->length--;if(sq->lastCar==car)

      sq->lastCar=sq->firstCar;free(car);

      }

      //檢測(cè)隊(duì)列存在

      int SQueueEmpty(SQueue sq){ if(sq.firstCar==sq.lastCar)

      return 1;else

      return 0;} //隊(duì)首元素

      void getSQueue(SQueue sq,Cars *e){ if(sq.firstCar==sq.lastCar)

      return;*e=sq.firstCar->nextCar->headCar;}

      //隊(duì)列長(zhǎng)度

      int SQueueLength(SQueue sq){ int len=0;if(sq.firstCar!=sq.lastCar)len=sq.length;return len;}

      #endif

      manager_stack.h #include #include #include“manager_cars.h”

      #ifndef manager_stack_h #define manager_stack_h

      #define STACK_INIT_SIZE 100 //棧的存儲(chǔ)空間初始分配量 #define STACKINCREMENT 10 //棧的存儲(chǔ)空間分配增量

      typedef struct SQstack

      //棧的結(jié)構(gòu)體

      { Cars * base;Cars * top;int stacksize;S.base;}

      extern int GetTop(SQstack S,Cars *e)//若棧不為空,則用e返回S的棧頂元素,并返回OK;否則返回ERROR { if(S.top == S.base)return 0;

      *e = *(S.top-1);

      return 1;

      }

      extern int Push(SQstack*S,Cars e)//插入元素e為新的棧頂元素

      { if(S->top-S->base >= S->stacksize)

      {

      S->base =(Cars *)realloc(S->base,(S->stacksize + STACKINCREMENT)*sizeof(Cars));

      if(!S->base)return 0;

      S->top = S->base + S->stacksize;

      S->stacksize += STACKINCREMENT;

      }

      *S->top++ = e;

      return 1;

      }

      extern int Pop(SQstack *S,Cars *e)//若棧不空,則刪除S的棧頂元素,用e返回其值,并返回OK,否則返回ERROR { if(S->top == S->base)return 0;

      *e = *--S->top;

      return 1;

      }

      #endif

      七、軟件說(shuō)明書(shū)

      1、打開(kāi)系統(tǒng),輸入Y進(jìn)入管理系統(tǒng)。

      2、接下來(lái)按提示輸入停車場(chǎng)的可供使用的車位數(shù)。

      3、按提示輸入該停車場(chǎng)每小時(shí)收費(fèi)標(biāo)準(zhǔn)。

      4、按提示輸入到達(dá)后者離開(kāi)信息,例如A 1 5,D 1 10。

      5、輸入E 0 0并輸入N,退出系統(tǒng)。

      八、測(cè)試報(bào)告

      1、如圖,當(dāng)打開(kāi)系統(tǒng)時(shí)出現(xiàn)此界面,輸入Y為進(jìn)入系統(tǒng),輸入N為退出系統(tǒng)。

      2、如圖,如果輸入錯(cuò)誤會(huì)提示出錯(cuò),并重新輸入。

      3、如圖,輸入Y后,按提示依次輸入停車場(chǎng)可提供的最大車位數(shù)和每小時(shí)的停車費(fèi)。

      4、如圖,輸入A 1 5后,提示進(jìn)入停車場(chǎng)的信息。

      5、如圖,輸入A 2 10,A 3 15后,依次顯示提示信息。

      6、如圖,輸入D 1 20后,分別顯示便道進(jìn)入停車場(chǎng)的3號(hào)車和1號(hào)車的收費(fèi)情況。

      7、如圖,輸入E 0 0,再按提示輸入N,即可退出系統(tǒng)。

      九、課程設(shè)計(jì)總結(jié)

      通過(guò)團(tuán)隊(duì)對(duì)該問(wèn)題分析,互相補(bǔ)充了觀點(diǎn),增強(qiáng)了對(duì)該題目正確認(rèn)識(shí)。隊(duì)員們進(jìn)行了縝密的需求分析,并分工完成各文件和函數(shù)的編寫(xiě)。隊(duì)員們紛紛表示,這絕對(duì)是一個(gè)以前不能想象到的任務(wù)。通過(guò)對(duì)該系統(tǒng)的編寫(xiě)、實(shí)現(xiàn),著實(shí)增強(qiáng)了隊(duì)員們的團(tuán)隊(duì)意識(shí)以及對(duì)數(shù)據(jù)結(jié)構(gòu)的進(jìn)一步的理解。當(dāng)程序成功運(yùn)行后,隊(duì)員們都非常興奮,雖然本系統(tǒng)仍有瑕疵,但是可以說(shuō)這是隊(duì)員們的心血。

      0

      第五篇:數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

      數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的實(shí)習(xí)報(bào)告怎么寫(xiě)呀,請(qǐng)求做過(guò)課設(shè)的同學(xué)發(fā)一篇范文過(guò)來(lái)謝謝-_-規(guī)范實(shí)習(xí)報(bào)告的開(kāi)頭應(yīng)給出題目、班級(jí)、姓名、學(xué)號(hào)和完成日期,并包括以下七個(gè)內(nèi)容:

      1、需求分析以無(wú)歧義的陳述說(shuō)明程序設(shè)計(jì)的任務(wù),強(qiáng)調(diào)的是程序要做什么?明確規(guī)定:(1)輸入的形式和輸入值的范圍;(2)輸出的形式;(3)程序所能達(dá)到的功能;(4)測(cè)試數(shù)據(jù):包括正確地輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果,數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告。

      2、概要設(shè)計(jì)說(shuō)明本程序中用到的所有抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系。

      3、詳細(xì)設(shè)計(jì)實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有數(shù)據(jù)類型,對(duì)每個(gè)操作只需要寫(xiě)出偽碼算法;對(duì)主程序和其他模塊也都需要寫(xiě)出偽碼算法(偽碼算法達(dá)到的詳細(xì)程度建議為:按照偽碼算法可以在計(jì)算機(jī)鍵盤(pán)直接輸入高級(jí)程序設(shè)計(jì)語(yǔ)言程序);畫(huà)出函數(shù)的調(diào)用關(guān)系圖。

      4、調(diào)試分析內(nèi)容包括:(1)調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析;(2)算法的時(shí)空分析(包括基本操作和其他算法的時(shí)間復(fù)雜度和空間復(fù)雜度的分析)和改進(jìn)思想;(3)經(jīng)驗(yàn)和體會(huì)等,實(shí)習(xí)報(bào)告《數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告》。

      5、用戶使用說(shuō)明說(shuō)明如何使用你編寫(xiě)的程序,詳細(xì)列出每一步操作步驟。

      6、測(cè)試結(jié)果列出你的測(cè)試結(jié)果,包括輸入和輸出。這里的測(cè)試數(shù)據(jù)應(yīng)該完整和嚴(yán)格,最好多于需求分析中所列。

      7、附錄題目:約瑟夫-實(shí)習(xí)報(bào)告尺寸:約瑟夫-實(shí)習(xí)報(bào)告.doc目錄:

      一、需求分析

      二、概要設(shè)計(jì)

      三、程序具體設(shè)計(jì)及函數(shù)調(diào)用關(guān)系

      四、調(diào)試分析

      五、測(cè)試結(jié)果原文:實(shí)習(xí)報(bào)告題目:約瑟夫(Joseph)問(wèn)題的一種描述是:編號(hào)為1,2,.,n的n個(gè)人按順時(shí)針?lè)较驀蝗?,每人持有一個(gè)密碼(正整數(shù))。一開(kāi)始任選一個(gè)整數(shù)作為報(bào)數(shù)上限值m,從第一個(gè)人開(kāi)始按順時(shí)針?lè)较蜃?開(kāi)始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù)。報(bào)m的人出列,將他的密碼作為新的m值,從他在順時(shí)針?lè)较蛏系南乱粋€(gè)開(kāi)始重新從1報(bào)數(shù),如此下去,直至年有人全部出列為止。試設(shè)計(jì)一個(gè)程序求出出列順序。班級(jí):姓名:學(xué)號(hào):完成日期:

      一、需求分析1.本演示程序中,利用單向循環(huán)鏈表存儲(chǔ)結(jié)構(gòu)存儲(chǔ)約瑟夫環(huán)數(shù)據(jù)(即n個(gè)人的編號(hào)和密碼)。2.演示程序以用戶和計(jì)算機(jī)的對(duì)話方式執(zhí)行,即在計(jì)算機(jī)終端上顯示“提示信息”之后,由用戶在鍵盤(pán)上輸入演示程序中需要輸入的數(shù)據(jù),運(yùn)算結(jié)果顯示在其后。3.程序執(zhí)行的命令包括:1)構(gòu)造單向循環(huán)鏈表;2)4.測(cè)試數(shù)據(jù)m的初值為20;n=7,7個(gè)人的密碼依次為:3,1,7,2,4,8,4,首先m值為6(正確的出列順序?yàn)?,1,4,7,2,1,3,5)。

      二、概要設(shè)計(jì)1.單向循環(huán)鏈表的抽象數(shù)據(jù)類型定義為:ADT List{數(shù)據(jù)對(duì)象:D={ai|ai∈正整數(shù),I=1,2,.,n,n≥0}數(shù)據(jù)關(guān)系:R1={ai-1,ai|,ai-1,ai∈D,I=1,2,.,n}基本操作:Init List(&L)操作結(jié)果:構(gòu)造一個(gè)空的線性表L。List Insert(&L,i,e)初始條件:線性表L已存在,1≤i≤List Length(L)+1.操作結(jié)果:在L中第i個(gè)位置之前插入新的數(shù)據(jù)無(wú)素e,L長(zhǎng)度加1。List Delete(&L,i,&e)初始條件:線性表L存在非空,1≤i≤List Length(L).操作結(jié)果:刪除L的第i個(gè)元素,并用e返回其值,L長(zhǎng)度減1。2.程序包含四個(gè)模塊:1)主程序模塊:void main(){.

      下載數(shù)據(jù)結(jié)構(gòu) 停車場(chǎng)管理 完整版 實(shí)習(xí)報(bào)告[合集五篇]word格式文檔
      下載數(shù)據(jù)結(jié)構(gòu) 停車場(chǎng)管理 完整版 實(shí)習(xí)報(bào)告[合集五篇].doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(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ù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

        數(shù)據(jù)結(jié)構(gòu)第六次作業(yè)p134 ——11411203張玉24. template void SeqQueue::EnQueue(const T& x){//插入函數(shù) if(IsFull==true){ maxSize=2*maxSize; elements[rear]=x; rear......

        數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

        附件: 實(shí)習(xí)報(bào)告格式,如下: 數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告 班級(jí): 姓名:xxx(20121514101) xxx(20121514101) xxx(20121514101) 指導(dǎo)教師:日期: 題目 一、問(wèn)題描述(把你所選的題目及要求說(shuō)一下) 二、概......

        數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

        數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告 班級(jí):13軟件二班 姓名:殷健 學(xué)號(hào):1345536225 子集和數(shù)問(wèn)題 1:?jiǎn)栴}描述 子集和數(shù)問(wèn)題1:子集和問(wèn)題的為〈W,c〉。其中,W={w1,w2,...,wn}是一個(gè)正整數(shù)的集合,子集和......

        數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告

        一、概述軟件開(kāi)發(fā)的流程 二、回顧C(jī)語(yǔ)言的基本語(yǔ)法: 1、 常量(類型) 2、 變量(類型、定義) 3、 表達(dá)式(例子:三位數(shù)的拆分) 4、 控制語(yǔ)句(if條件語(yǔ)句,例子:餓了嗎?for循環(huán)語(yǔ)句,例子:做好事......

        上機(jī)實(shí)習(xí)報(bào)告—停車場(chǎng)管理(5篇)

        實(shí)習(xí)報(bào)告 題目:停車場(chǎng)管理 班級(jí):計(jì)算機(jī)學(xué)院12052313 姓名:盧魏旭 學(xué)號(hào):12051521 完成日期:2012年10月 一、 需求分析 以棧模擬停車場(chǎng),以隊(duì)列模擬停車場(chǎng)以外的便道,每一組輸入的數(shù)據(jù)......

        數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告(大全五篇)

        一、需求分析1、 程序所實(shí)現(xiàn)的功能;2、 程序的輸入,包含輸入的數(shù)據(jù)格式和說(shuō)明;3、 程序的輸出,程序輸出的形式;4、 測(cè)試數(shù)據(jù),如果程序輸入的數(shù)據(jù)量比較大,需要給出測(cè)試數(shù)據(jù);5、 合作......

        數(shù)據(jù)結(jié)構(gòu)圖書(shū)管理報(bào)告

        一.實(shí)驗(yàn)?zāi)康?圖書(shū)管理: 圖書(shū)管理基本業(yè)務(wù)活動(dòng)包括:對(duì)一本書(shū)的采編入庫(kù)、清除庫(kù)存。借閱和歸還等等。試設(shè)計(jì)一個(gè)圖書(shū)管理系統(tǒng),將上述業(yè)務(wù)活動(dòng)借助于計(jì)算機(jī)系統(tǒng)完成。 二.實(shí)驗(yàn)內(nèi)容......

        停車場(chǎng)調(diào)查實(shí)習(xí)報(bào)告

        交通工程學(xué) 停車場(chǎng)調(diào)查實(shí)習(xí)報(bào)告 班級(jí): 姓名:熊健 學(xué)號(hào): 區(qū)域:西寧市城西區(qū)09交通工程0913020020 一、區(qū)域1停車場(chǎng)調(diào)查 1、基本資料調(diào)查 區(qū)域1停車場(chǎng)為佳惠家具城的專屬停車場(chǎng),......