1. 數據結構課程設計 停車場管理(數據結構)
讓我想起了大學數據結構的老師,這個題目就是一個數據結構題目而已.
2. 數據結構課設:銀行排隊系統模擬
用優先順序隊列來模擬整個過程,每個客戶都需要有到達、離開兩次入隊操作。
建立一個大小為n的數組,來記錄每個窗口(接下來的)的空閑時間,初始化全部賦值為0。
這里我們假設有1、2兩個窗口,T(1)=T(2)=0
建立一個(按時間的)優先順序隊列,初始化為空。
假設銀行0時開業,下面舉例來說明:
第一個客人於1分鍾到達,假設這個客人辦理業務需要的時間為10分鍾(一般模擬過程中,這個時間是在某個范圍內隨機生成的)。為該用戶分配一個空閑窗口1,同時T(1)=11。此時需要入隊:
------------------------
------------------------
第二個客人於3分鍾時到達,假設這個客人辦理業務需要的時間為5分鍾。由於T(2)==0<3,說明在這位客人到達時第2號窗口是閑的,那麼讓他去2號窗口,同時T(2)=3+5=8。然後入隊:
-------------------------------------------------
->
-------------------------------------------------
第三個客人於4分鍾時到達,假設這個客人辦理業務需要的時間為6分鍾。此時T(1)=11>4,T(2)=8>4,兩個窗口都是忙碌的。但由於T(2)<T(3),我們認為2號窗口相對來說輕松一些,讓他去2號窗口排隊,同時T(2)=T(2)+6=14。然後入隊:
--------------------------------------------------------------------------
->->
---------------------------------------------------------------------------
……
整個過程持續下去,一直到關門時間為止。
上面的示例在隊列中只記錄了離開時間,實際上還可以記錄到達時間、在哪個窗口辦理等等信息,這樣只需要將這個優先順序隊列依次執行出隊操作,就能統計出平均業務受理時間、平均等待時間、哪個窗口工作量多少.
3. 求代寫用C++設計一個銀行排隊系統, 數據結構課程設計……
去論文網吧,這上面槍手少
4. 課程設計數據結構嚴蔚敏銀行業務模擬
http://download.pudn.com/downloads104/sourcecode/app/45666021yinhangyewumonixitong.rar
看看這個,僅供參考
5. 數據結構課程設計產品進銷存管理系統
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include <fstream>
using namespace std;
//結構體
struct commodity
{
int num;//商品號
char kind[10];//產品的種類
char name[10];//產品的名稱
int count;//產品的總量
char date[15];//進貨日期
int sale;//銷出數量
char saledate[15];//銷售時間
} cod[50],codtemp[50],dod[50];//產品名稱cod,產品種類dod
//定義函數
void inputnum();
void inputkind();
void inputname();
void sort();
int count(int n);
void binarysearch();
int choice;
int main(int argc, char *argv[])
{
cout<<"\t\t\t歡迎進入產品進銷存管理系統"<<endl;
do{
cout<<"\t1.產品入庫"<<endl;
cout<<"\t2.查找產品"<<endl;
cout<<"\t3.退出系統"<<endl;
cin>>choice;
switch(choice) {
case 1:cout<<"\t1.產品類的添加"<<endl;
cout<<"\t2.產品的添加"<<endl;
cout<<"\t3.數量的添加"<<endl;
cin>>choice;
switch(choice){
case 1:inputkind();break;
case 2:inputname();break;
case 3:inputnum();break;
default:cout<<"錯誤!";break;
}break;
case 2:binarysearch();break;
case 3:exit(0); break;
default:cout<<"錯誤!"<<endl;
break;
}
} while(1);
system("PAUSE");
return 0;
}
//計算文件中結構體個數
int count(int n)
{
FILE *fp;
int i;
if((fp=fopen("產品","r"))==NULL)
{
cout<<"打不開文件!"<<endl;
exit(0);
}
for(i=0;fread(&cod[i],sizeof(struct commodity),1,fp);i++) //讀文件
{
}
return i;
}
//產品種類的添加
void inputkind()
{
FILE *fp1,*fp2;
int i,size,size1,j;
if((fp1=fopen("產品種類","a"))==NULL)
{ //追加
cout<<"打不開文件!"<<endl;
exit(0);
}
cout<<"請輸入新入庫產品種類的個數:";
cin>>size;
for(i=0;i<size;i++)
{//在產品種類文件中添加
cout<<"請輸入第"<<i+1<<"個產品種類的資料"<<endl;
cout<<"產品的種類:";
cin>>dod[i].kind;
cout<<"請輸入該產品種類中產品的個數:";
cin>>size1;
if((fp2=fopen("產品","a"))==NULL)
{ //追加
cout<<"打不開文件!"<<endl;
exit(0);
}
for(j=0;j<size1;j++)
{//在產品文件中添加
cout<<"請再次輸入種類:";
cin>>cod[j].kind;
cout<<"請輸入產品號:";
cin>>cod[j].num;
cout<<"產品的名稱:";
cin>>cod[j].name;
cout<<"產品的數量:";
cin>>cod[j].count;
cout<<"產品的進貨日期:";
cin>>cod[j].date;
cout<<"銷出數量:";
cin>>cod[j].sale;
cout<<"銷售時間:";
cin>>cod[j].saledate;
}
fwrite(&cod[i],sizeof(struct commodity),1,fp2);
}
fwrite(&dod[i],10,1,fp1); //把數據寫入文件
fclose(fp1);
fclose(fp2);//關閉
}
//產品的添加
void inputname()
{
FILE *fp;
int i,size;
if((fp=fopen("產品","a"))==NULL)
{ //追加
cout<<"打不開文件!"<<endl;
exit(0);
}
cout<<"請輸入新入庫產品的個數:";
cin>>size;
for(i=0;i<size;i++) {
{
cout<<"請輸入第"<<i+1<<"個產品的資料"<<endl;
cout<<"所屬產品的種類:";
cin>>cod[i].kind; //
cout<<"請輸入產品號:";
cin>>cod[i].num;
cout<<"產品的名稱:";
cin>>cod[i].name;
cout<<"產品的數量:";
cin>>cod[i].count;
cout<<"產品的進貨日期:";
cin>>cod[i].date;
cout<<"銷出數量:";
cin>>cod[i].sale;
cout<<"銷售時間:";
cin>>cod[i].saledate;
}
fwrite(&cod[i],sizeof(struct commodity),1,fp); //把數據寫入文件
}
fclose(fp); //關閉
}
//數量的添加
void inputnum()
{
FILE *fp;
int i,size,j;
int k=count(1);
char str[10];//記錄增加數量的產品名稱
sort();
if((fp=fopen("產品","rb"))==NULL)
{ //追加
cout<<"打不開文件!"<<endl;
exit(0);
}
cout<<"請輸入增加數量的產品名稱:";
cin>>str;
cout<<"請輸入數量:";
cin>>size;
for(i=0;fread(&cod[i],sizeof(struct commodity),1,fp);i++)
{
if(strcmp(str,cod[i].name)==0)
{
cod[i].count=cod[i].count+size;
{ //重寫
fp=fopen("產品","wb");
for(j=0;j<k;j++)
fwrite(&cod[j],sizeof(struct commodity),1,fp);
fclose(fp);
}
break;
}
}
fclose(fp); //關閉
cout<<"添加成功!"<<endl;
}
//商品排序
void sort() //排序函數
{
int i,j,n,last,w;
int templist[30];
struct commodity temp;
FILE *fp;
if((fp=fopen("產品","rb"))==NULL)
{
cout<<"打不開文件!"<<endl;
exit(0);
}
int k=count(1);
for(i=0;i<k;i++)
{
fread(&cod[i],sizeof(struct commodity),1,fp);
templist[i]=cod[i].num;
}
i--;
while(i>0) //冒泡排序
{
last=0;
for(n=0;n<i;n++)
{
if(templist[n+1]<templist[n])
{
w=templist[n];templist[n]=templist[n+1];templist[n+1]=w;
last=n;
}
}
i=last;
}
for(i=0;i<k;i++)
for(j=0;j<k;j++)
{
fseek(fp,j*sizeof(struct commodity),0);
fread(&cod[j],sizeof(struct commodity),1,fp);
if(templist[i]==cod[j].num) //比較數組中i的值是否與結構體中商品號相等
codtemp[i]=cod[j]; //將文件中存儲的結構體數據暫存在臨時結構體中
}
fclose(fp);
{ //重寫
FILE *fp;
fp=fopen("產品","wb");
for(i=0;i<k;i++)
fwrite(&codtemp[i],sizeof(struct commodity),1,fp);
fclose(fp);
}
}
// 查找商品
void binarysearch()
{
int low=0,high,k,mid=0,m,seek;
char str[10];
k=count(1);
high=k-1;
sort(); //調用
cout<<"請選擇查找方式:"<<endl;
cout<<"1.產品號查找"<<endl;
cout<<"2.產品名查找"<<endl;
cin>>seek;
switch(seek)
{ case 1:
{
cout<<"請輸入產品號:";
cin>>m;
while(low<=high) //折半查找
{
mid=(low+high)/2;
if(m==cod[mid].num)
{
FILE *fp;
if((fp=fopen("commodity","r"))==NULL)
{
cout<<"打不開文件."<<endl;
exit(0);
}
fseek(fp,mid*sizeof(struct commodity),0);
fread(&cod[mid],sizeof(struct commodity),1,fp);
fclose(fp);
//
cout<<"所屬產品類:";
cout<<cod[mid].kind<<endl;
cout<<"產品號:";
cout<<cod[mid].num<<endl;
cout<<"產品名稱:";
cout<<cod[mid].name<<endl;
cout<<"產品總量:"<<cod[mid].count<<endl;
cout<<"進貨日期:"<<cod[mid].date<<endl;
cout<<"銷出數量:"<<cod[mid].sale<<endl;
cout<<"銷售日期:"<<cod[mid].saledate<<endl;
break;
}
else if(m<cod[mid].num)
high=mid-1;
else low=mid+1;
}
if(low!=high)
cout<<"不存在該商品!"<<endl;
break;
}
case 2:
{ FILE *fp;
fp=fopen("產品","r");
cout<<"請輸入產品名:"<<endl;
cin>>str;
for(int i=0;fread(&cod[i],sizeof(struct commodity),1,fp);i++)
{
if(strcmp(str,cod[i].name)==0) //是否匹配
{
cout<<"所屬產品類:";
cout<<cod[i].kind<<endl;
cout<<"產品號:";
cout<<cod[i].num<<endl;
cout<<"產品名稱:";
cout<<cod[i].name<<endl;
cout<<"產品總量:"<<cod[i].count<<endl;
cout<<"進貨日期:"<<cod[i].date<<endl;
cout<<"銷出數量:"<<cod[i].sale<<endl;
cout<<"銷售日期:"<<cod[i].saledate<<endl;
break;
}
}
fclose(fp);
break;
}
default :
cout<<"系統關閉!"<<endl;
break;
}
}
6. 數據結構課程設計(c語言):活期儲蓄處理
#include <iostream>
#include <string>
#include <time.h>
using namespace std;
int total; //初始時銀行現存資金總額
int closeTime; //營業結束時間
int arriveTime; //兩個到達事件之間的間隔上限
int dealTime; //客戶之間交易的時間上限
int dealMoney = 30000; //交易額上限
int currentTime = 0; //當前時間
int totalTime = 0; //客戶逗留總時間
int counter = 0; //客戶總數
int number = 1; //初始客戶序列號+
struct service
{
int num; //客戶號
string type; //到達或離開
int beginTime;
int endTime;
int money; //正數為存款,負數為取款
service* next;
};
struct queue
{ //隊列
service* head;
service* rear;
};
void push(queue &q,int d)
{// 插入元素d為Q的新的隊尾元素
service* temp = new service;
temp->money = d;
temp->next = NULL;
if(NULL == q.head)
{//隊列為空,初始化
q. head = temp;
q. rear = temp;
}//if
else
{//隊列不為空,插入元素d
q. rear->next = temp;
q. rear = q.rear->next;
}//else
}
void pop(queue &q)
{// 若隊列不空,出對列函數
service* temp;
temp = q. head;
if(NULL ==q. head->next)
q.head = q. rear =NULL;
else
q. head=q. head->next;
delete temp;
}
service* front(queue &q)
{//返回隊首元素
return q. head;
}
service* back(queue &q)
{//返回隊尾元素
return q. rear;
}
service* searchAndDel(queue &q,int m)
{//在隊列中尋找可處理元素
service* sign = q. head; //標記頭節點
service* temp;
while(NULL != q. head)
{
if((-(q. head->money)) <m)
{//隊首元素可以處理
if(q. head==q.rear)
{
temp = q. head;
q. head = q. rear = NULL;
return temp;
}//if
else
{//隊首元素出列
temp = q. head;
q. head = q. head->next; // 首節點後移一位,返回原首節點
return temp;
}//else
}//while
else
{//隊首元首不能被處理
if(q. head == q. rear){}
else
{//首節點移到隊列尾部
q. rear->next = q. head;
q. rear = q. rear->next;
q. head =q. head->next;
q. rear->next = NULL;
}//else
}//else
if(q. head == sign)//隊列循環一周時停止
return NULL;
}
return NULL;
}
bool state =1; //用於判斷是否有窗口在處理
int currentTimeOfDeal = 0;
int theArriveTime = 0;
queue eq; //事件隊列
queue fq; //隊列一
queue sq; //對列二
//初始化三個隊列
void arrive()
{/*"到達"函數 隨機產生顧客,進入隊列一
產生到達事件 進入事件隊列*/
push(fq,(rand()% (2*dealMoney) -dealMoney)); //隨機產生顧客加入第一隊列
back(fq)->beginTime = currentTime;
back(fq)->num = number;
push(eq,(back(fq)->money)); //將產生事件加入事件隊列
back(eq)->beginTime = currentTime;
back(eq)->type = "到達";
back(eq)->num = number;
++number;
}
void putMoney()
{ //存款函數
total += front(fq)->money; //更新資金總額
push(eq,front(fq)->money); //加入事件隊列 離開
back(eq)->type = "離開";
back(eq)->num = front(fq)->num;
back(eq)->endTime = (front(fq)->beginTime + rand()%dealTime +1);
++counter; //更新客戶總數
totalTime += (back(eq)->endTime - front(fq)->beginTime); //更新逗留時間
pop(fq); //刪除第一隊列第一個業務
currentTimeOfDeal = back(eq)->endTime;
state =0;
}
void getMoney()
{//取款函數
if( (-fq.head->money) > total )
{//資金短缺 加入第二隊列
push( sq,front(fq)->money );
back(sq)->beginTime = front(fq)->beginTime;
back(sq)->num = front(fq)->num;
pop(fq);
}//if
else
{
total += back(fq)->money;
push(eq,front(fq)->money); //加入事件隊列 離開
back(eq)->type = "離開";
back(eq)->num = front(fq)->num;
back(eq)->endTime = (front(fq)->beginTime + rand()%dealTime +1);
back(eq)->beginTime = 0;
currentTimeOfDeal = back(eq)->endTime;
++counter; //更新客戶總數
totalTime += ( back(eq)->endTime - back(fq)->beginTime ); //更新逗留時間
pop(fq); //刪除第一隊列第一個業務
state =0;
}//else
}
service* temped ;
int randomTemp;
void findAndDeal()
{//在對列中尋找可處理元素,對其進行處理
while( (temped= searchAndDel(sq,total))&&NULL != temped )
{//查找可處理取款
total += temped->money; //更新資金總額
push(eq,temped->money); //加入事件隊列訓 離開
back(eq)->type = "離開";
back(eq)->num = temped->num;
randomTemp = rand()%dealTime +1;
back(eq)->endTime = currentTime + randomTemp ;
currentTimeOfDeal += randomTemp;
++counter; //更新客戶總數
totalTime += ( back(eq)->endTime - temped->beginTime ); //更新逗留時間
delete temped; //刪除節點
temped = NULL;
}
state = 0;
}
int main()
{
printf(" ********************************************\n");
printf(" 歡迎進入銀行模擬系統\n");
printf(" ********************************************\n");
printf("1.開始模擬 0.退出\n");
int n;
scanf("%d",&n);
while(n==1)
{
srand(time(NULL)); //初始化隨機函數
printf("輸入銀行的初始存款:\n");
scanf("%d",&total);
printf("輸入銀行的營業時間:\n");
scanf("%d",&closeTime);
printf("輸入最大到達時間間隔:\n");
scanf("%d",&arriveTime);
printf("輸入最大的處理時間:\n");
scanf("%d",&dealTime);
theArriveTime +=rand()%arriveTime + 1; //首次到達時間
while(currentTime < closeTime)
{
++currentTime;
if( currentTimeOfDeal < currentTime ) currentTimeOfDeal = currentTime ;
if( currentTimeOfDeal == currentTime ) state = 1;
if( currentTime == theArriveTime ) //到達事件
{
arrive();
theArriveTime +=rand()%arriveTime +1;
}//if
if( 1 == state && NULL != fq.head)
{
if(fq.head->money >= 0)
{
putMoney();
findAndDeal();
}//if
else
getMoney();
}//if
}
cout <<endl<< "客戶序列"<<"\t" <<"事件類型"<<"\t\t"<<" 時間"<<"\t"<<" 處理金額"<<endl;
while( NULL != eq.head) //清除事件隊列
{
if(eq.head->type=="離開")
cout << eq.head->num<<"\t\t"<<eq.head->type<<"\t\t"<<"\t\t"<<eq.head->endTime<<"\t\t"<<eq.head->money<<endl;
if(eq.head->type=="到達")
cout << eq.head->num<<"\t\t"<<eq.head->type<<"\t\t"<<"\t\t"<<eq.head->beginTime<<"\t\t"<<eq.head->money<<endl;
pop(eq);
}
cout << "未處理客戶:" <<""<<endl;
while( NULL != fq.head)
{
totalTime += ( closeTime - fq.head->beginTime ); //更新結束時第一隊列中未處理的客戶
cout <<fq.head->num <<" "<<endl ;
++counter;
pop(fq);
}//while
cout <<"客戶逗留平均時間為: " << totalTime/counter <<endl;
cout<<"銀行當前余額:"<<total<<endl;
break;
}//while(n==1)
return 0;
}//maim()
7. 數據結構課程設計~~~~ 求大蝦~~~~~!
這個題目,實現起來沒那麼容易的,圖的操作還是比較復雜的。
提供文件形式輸入,就是指把需要輸入的選項,先保存到文件中,一般是TXT文件,然後程序讀取文件加到資料庫中。
8. 數據結構課程設計
我這有個停車場管理系統跟你的輪船渡口管理系統差不多!!改一下就能用!!
#include<iostream.h>
#include<string.h>
#include<stdlib.h> //free()函數功能
const int Max_Park=1;
int bian=0;//便道上有多少車
//.................................................................
struct Car
{
char pattent;//車輛類型,a=小轎車,b=客車,c=大卡車
int number;//車輛牌照
int intime;//車進入的時間,用整數表示
};
typedef struct Queue
{
Car car;
Queue*next;
}Queue,*LQueue;//模擬停車場外的便道
typedef struct Stack
{
Car *car;
int top;
}Stack,*LStack;//模擬停車場的棧
//..................................................................
class Road
{
public:
Queue q1;
LQueue q2;
public:
void InitQ(LQueue&Head,LQueue&Rear);//隊列的初始化
void InQ(LQueue&Rear,Car pacr);//入隊列
void FindQ(LQueue Head,int num);//在便道上查找車輛信息
void OutQ(LQueue Head,int num);//出便道
};//便道類結束
//...................................便道類函數定義
void Road::InitQ(LQueue&Head,LQueue&Rear)
{
Rear->next=NULL;
Head=Rear;
}//隊列的初始化
void Road::InQ(LQueue&Rear,Car pacr)
{
LQueue Node=new Queue;
Node->car=pacr;
Node->next=NULL;
Rear->next=Node;
Rear=Rear->next;
bian++;
}//入隊列
void Road:: FindQ(LQueue Head,int num)
{
int pos=0;
for(LQueue q=Head;q->next!=NULL;q=q->next,pos++)
{
if(q->next->car.number==num)
{
cout<<"要查找的車在便道"<<pos+1<<"位"<<" 車類型為";
switch(q->next->car.pattent)
{
case'a':cout<<"小轎車";break;
case'b':cout<<"客車";break;
case'c':cout<<"大卡車";break;
}
cout<<"此車進入的時間為"<<q->next->car.intime<<endl;
}
}
cout<<"此車不在停車場!!"<<endl;
}//在便道上查找車輛信息
void Road:: OutQ(LQueue Head,int num)
{
LQueue p=new Queue;
for(LQueue q=Head;q->next!=NULL;q=q->next)
{
if(q->next->car.number==num)
{
p=q->next;
q->next=p->next;
free(p);
bian--;
break;
}
}
}
//........................................................
class Park
{
public:
Stack s1;
Stack s2;
Road R7;
public:
void OutputS(Car e);
void InputS(Car&e);
void InitS(LStack ss1);
Car PopS(LStack ss1);
int PushS(LStack ss1,Car car);
int FindS(LStack ss1,int number);
void InPark(LStack ss1,LQueue &Rear);
void Delete(LStack ss1,LStack ss2,int n);
void OutPark(LStack ss1,LStack ss2,LQueue Head);
void Search(LStack ss1,LQueue Head,LQueue Rear);
};//車位類結束
//......................................車位類函數的定義
void Park::OutputS(Car e)
{
cout<<"這輛車的牌照是:"<<e.number<<endl<<"這輛車的類型是:";
switch(e.pattent)
{
case'a':cout<<"小轎車";break;
case'b':cout<<"客車";break;
case'c':cout<<"大卡車";break;
}
cout<<"進入時間為:"<<e.intime<<endl;
}//查詢停車場的車
void Park:: InputS(Car&e)
{
cout<<"請輸入此車的類型a=小轎車,b=客車,c=大客車"<<endl;
cin>>e.pattent;
cout<<"請輸入此此車的牌照號:"<<endl;
cin>>e.number;
cout<<"請輸入入場時間:"<<endl;
cin>>e.intime;
}//進入停車場的車
void Park::InitS(LStack ss)
{
ss->car=new Car[Max_Park];
ss->top=-1;
}//初始化棧
Car Park:: PopS(LStack ss)
{
Car eee=ss->car[ss->top];
ss->top--;
return eee;
}//出棧
int Park::PushS(LStack ss,Car car)
{
if(ss->top<Max_Park-1)
{
ss->top++;
ss->car[ss->top].intime=car.intime;
ss->car[ss->top].number=car.number;
ss->car[ss->top].pattent=car.pattent;
return 0;
}
else
return -1;
}//車位已滿,則進入便道
int Park::FindS(LStack ss,int number)
{
for(int i=0;i<=ss->top;i++)
{
if(ss->car[i].number==number)
return i;
}
return -1;//在便道上查找要找的車
}//在車位上查找要找的車輛
void Park::InPark(LStack ss1,LQueue &Rear)
{
Car ee;
InputS(ee);
int n=PushS(ss1,ee);
if(n<0)
{
Car rcar;
rcar.number=ee.number;
rcar.pattent=ee.pattent;
rcar.intime=ee.intime;
R7.InQ(Rear ,rcar);
}
}//車輛進場,有車位如車位,無車位進便道
void Park::Delete(LStack ss1,LStack ss2,int n)
{
int size=ss1->top;
for(int i=0;i<size-n;i++)
PushS(ss2,PopS(ss1));
PopS(ss1);
for( i=0;i<size-n;i++)
PushS(ss1,PopS(ss2));
}//以一個棧為中轉,將任意為的車出場
void Park::OutPark(LStack ss1,LStack ss2,LQueue Head)
{
cout<<"請輸入要出場的車的車牌號:"<<endl;
int num;
cin>>num;
int nn;
nn=FindS(ss1,num);
if(nn>=0)
{
cout<<"這輛車在車位上"<<endl;
OutputS(ss1->car[nn]);
Delete(ss1,ss2,nn);
if(ss1->top<=Max_Park-1)
if(Head->next!=NULL)
{
cout<<"\n便道上的車要進車位!"<<endl;
LQueue p=new Queue;
p=Head->next;
Head->next=p->next;
PushS(ss1,p->car);
free(p);
bian--;
}
}
else
{
R7.FindQ( Head, num);
R7.OutQ( Head,num);
}
}//輸出要出場的車
void Park::Search(LStack ss1,LQueue Head,LQueue Rear)
{
cout<<"停車場中現有"<<ss1->top+1<<"輛車"<<endl;
if(Head==Rear)
cout<<"便道上沒有車!"<<endl;
else
cout<<"便道上停了"<<bian<<"輛車"<<endl;
}//輸出停車場的車輛信息
//............................................................
void show()
{
cout<<"*********************本停車場信息**************************"<<endl;
cout<<"本停車場共有"<<Max_Park<<"個車位"<<endl;
cout<<"只允許停放小轎車,客車,大卡車"<<endl;
cout<<"車輛進入要做車輛類型,車牌,進入時間的記錄"<<endl;
cout<<"***********************************************************"<<endl;
}
/*void choise()
{
if(Max_Park-(ss1->top+1)>0)
{
cout<<"停車場中"<<ss1->top+1<<"輛車"<<endl;
cout<<"還可以停放"<<Max_Park-(ss1->top+1)<<"輛車"<<endl;
}
else
cout<<"\n停車場已滿,再來的車只能放在便道上!"<<endl;
cout<<"輸入要進行的操作:"<<endl
<<"A=進場"<<endl
<<"D=出場"<<endl
<<"F=查詢車輛信息"<<endl
<<"E=結束程序!"<<endl;
}*/
void main()
{
Road R6;
show();
LStack ss1=new Stack;//停車場的棧
LStack ss2=new Stack;//作為車輛中轉的棧
LQueue Head=new Queue;//隊列的頭
LQueue Rear=new Queue;//隊列的尾
R6.InitQ( Head, Rear);//隊列初始化
Park park;
park.InitS(ss1);
park.InitS(ss2);
while(1)
{
if(Max_Park-(ss1->top+1)>0)
{
cout<<"停車場中"<<ss1->top+1<<"輛車"<<endl;
cout<<"還可以停放"<<Max_Park-(ss1->top+1)<<"輛車"<<endl;
}
else
cout<<"\n停車場已滿,再來的車只能放在便道上!"<<endl;
cout<<"輸入要進行的操作:"<<endl
<<"A=進場"<<endl
<<"D=出場"<<endl
<<"F=查詢車輛信息"<<endl
<<"E=結束程序!"<<endl;
char demand;
cin>>demand;
switch(demand)
{
case 'A':
{
int w=1;
while(w)
{
park.InPark(ss1,Rear);
cout<<"車輛繼續進場按1,要進行其他操作按0!"<<endl;
if(Max_Park-(ss1->top+1)>0)
{
cout<<"停車場中"<<ss1->top+1<<"輛車"<<endl;
cout<<"還可以停放"<<Max_Park-(ss1->top+1)<<"輛車"<<endl;
}
else
cout<<"\n停車場已滿,再來的車只能放在便道上!"<<endl;
cout<<"輸入要進行的操作:"<<endl
<<"A=進場"<<endl
<<"D=出場"<<endl
<<"F=查詢車輛信息"<<endl
<<"E=結束程序!"<<endl;
cin>>w;
}
};break;
case 'D': park.OutPark(ss1,ss2, Head);break;
case'F':park.Search(ss1, Head, Rear) ; break;
case'E':exit(0);
}
}
}