Parking System(一个C++写的停车系统)

  • D4_192287
    了解作者
  • 13.8MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-16 02:03
    上传日期
停车场是一个可以放n辆车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按照到达时间的先后顺序排列,若车场内已经停满n辆车,则后来的车辆只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车可以进入;当停车场内某辆车要离开时,在它之后进入车场的车辆必须先退出车场为它让路,待该车辆开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车,在它离开的时候必须按它停留的时间长短缴纳费用。 用Stack和Queue来模拟
Parking System.rar
  • Parking System
  • Parking System
  • Debug
  • cl.command.1.tlog
    2KB
  • link.12792.write.1.tlog
    2B
  • rc.command.1.tlog
    634B
  • CL.read.1.tlog
    38KB
  • vc100.idb
    579KB
  • mt.read.1.tlog
    378B
  • Parking System.exe.embed.manifest.res
    472B
  • Parking System.exe.embed.manifest
    406B
  • Queue.obj
    57.4KB
  • link.9500-cvtres.write.1.tlog
    2B
  • link.12792.read.1.tlog
    2B
  • link-cvtres.read.1.tlog
    2B
  • link.read.1.tlog
    3.4KB
  • link.3020.write.1.tlog
    2B
  • rc.read.1.tlog
    350B
  • link.write.1.tlog
    1.1KB
  • link.9500-cvtres.read.1.tlog
    2B
  • CL.write.1.tlog
    3.2KB
  • Parking System_manifest.rc
    218B
  • vc100.pdb
    292KB
  • link.9500.write.1.tlog
    2B
  • main.obj
    89.8KB
  • link.command.1.tlog
    1.9KB
  • Stack.obj
    53.6KB
  • link.12792-cvtres.read.1.tlog
    2B
  • mt.write.1.tlog
    378B
  • Parking System.lastbuildstate
    69B
  • link.12792-cvtres.write.1.tlog
    2B
  • link.3020.read.1.tlog
    2B
  • link.3020-cvtres.write.1.tlog
    2B
  • Parking System.log
    4.5KB
  • link.3020-cvtres.read.1.tlog
    2B
  • mt.command.1.tlog
    446B
  • Parking System.exe.intermediate.manifest
    381B
  • link.9500.read.1.tlog
    2B
  • rc.write.1.tlog
    358B
  • link-cvtres.write.1.tlog
    2B
  • Parking System.vcxproj.user
    143B
  • Parking System.vcxproj
    4KB
  • Queue.cpp
    3.2KB
  • Stack.h
    742B
  • main.cpp
    7.4KB
  • Stack.cpp
    2.7KB
  • Parking System.vcxproj.filters
    1.3KB
  • Queue.h
    917B
  • Debug
  • Parking System.exe
    54.5KB
  • Parking System.ilk
    444.6KB
  • Parking System.pdb
    763KB
  • ipch
  • parking system-dba4ba9d
  • parking system-8bdf279d.ipch
    43.5MB
  • Parking System.sdf
    26.6MB
  • Parking System.suo
    14KB
  • Parking System.sln
    909B
内容介绍
#include <iostream> #include <Windows.h> #include <cstdlib> #include <ctime> #include "Queue.h" #include "Stack.h" using namespace std; int main() { int creat_command(int a);//产生随机数 void doAction( int &maxstack,int &command,Stack &park,Stack &temp,Queue &wait,Queue &leave,int &number); int creat_number(int a); int maxstack; int sec_number; double money; cout<<"***************************欢迎进入模拟停车场管理系统***************************"<<endl; cout<<"请设置停车场可容量最大汽车数:"<<endl; cin >> maxstack; cout << "请输入您需要操作的时间(min)" << endl; cin >> sec_number; cout << "请输入收费标准(元/秒)" << endl; cin >> money; cout << endl; Stack park;//停车场 park.get_maxstack(maxstack); Stack temp;//临时停放为给要离去的汽车让路而从停车场退出来的汽车 temp.get_maxstack(maxstack); Queue wait;//便道 Queue leave;//离开车辆 int command; int counter=0; int number=1;//汽车牌号 while(true) { if(counter == (((sec_number*60)/15))*3) break; command = creat_command(4); cout << command << endl; doAction(maxstack,command,park,temp,wait,leave,number); //每隔15秒输出停车场信息 Stack temp_p(park); Queue temp_q(wait); Queue temp_l(leave); if((counter>=3) && (counter%3==0)) { cout << '\n'<< "*******车场内的车为*******" << endl; if(!temp_p.empty()) { cout << "车场中的车辆为:" << temp_p.get_number() << endl << endl; while(!temp_p.empty()) { temp_p.top_print(); temp_p.pop(); cout << endl; } } if(park.empty()) cout << "车场内为空,没有车停留。" << endl ; cout << endl; cout << "*******便道里的车为:*******" << endl; if(!temp_q.empty()) { cout << "便道内的车辆为:" << temp_q.get_position() << endl ; while (!temp_q.empty()) { temp_q.retrieve_print(); temp_q.serve(); cout << endl; } } if(wait.empty()) cout << "便道内为空,没有车停留." << endl ; cout << endl; cout << "*******离开的车为 *******" << endl; if(!temp_l.empty()) { while( !temp_l.empty()) { temp_l.leave_print(money); temp_l.serve(); } cout << endl; } if(leave.empty()) cout << "停车场中没有车离开." << endl; cout << endl; leave.clear(); } Sleep(5000); counter++; } return 0; } int creat_command(int a) { //产生随机数并返回给主函数 srand((unsigned) time(NULL)); int x; x = rand() % a; if( x == 3) { return 1; } else return x; } void doAction( int &maxstack,int &command,Stack &park,Stack &temp,Queue &wait,Queue &leave,int &number) { switch(command) { //无进无出 case 0: break; //有车辆进入 case 1: if(park.get_number() == maxstack) { //如果停车场已满则将新进来的车放入便道 tm c;//定义0时间 c.tm_hour=0; c.tm_min=0; c.tm_sec=0; //定义进入便道的时刻 time_t t = time(NULL); tm wait_t = *(localtime(&t)); wait.append(number,wait_t,c,c); number++; } //如果停车场没有满 else { tm c; c.tm_hour=0; c.tm_min=0; c.tm_sec=0; time_t t = time(NULL); tm park_t = *(localtime(&t));//定义进入车场的时间 park.push(number,c,park_t);//将车开入停车场 number++; } break; //有车辆出去 case 2: if(park.empty())//如果停车场为空的话,则不能进行删除 { cout << "停车场为空,没有车离开" << endl; break; } else { if(!park.empty())//如果停车场不是空的则可以进行删除(车驶离) { //如果便道中有车等待 //则进行删除并将便道内的车放入停车场中 if(!wait.empty()) { int creat_number(int a); //离开的时间 time_t t = time(NULL); tm leave_t = *(localtime(&t)); //获得便道的车进入停车场的时间 tm park_t = *(localtime(&t)); //车在停车场中的位置 int num; num=creat_number(maxstack); cout << "出站的车为:第" << num << "辆车"<< endl; //车离开的编号 int th_number; //离开车场的车的到达时间 tm wt; tm pt; tm lt; park.get_car_infor(num,th_number,wt,pt); //将离开停车场的车辆信息压入Queue leave中 leave.append(th_number,wt,pt,leave_t); int r = park.get_number(); //将number-num辆车放到临时栈里 if(num == park.get_number()) { park.get_car_top(th_number,wt,pt); temp.push(th_number,wt,pt); park.pop(); } else { if(num < park.get_number()) { for(int i = 0;i<r-num;i++) { park.get_car_top(th_number,wt,pt); temp.push(th_number,wt,pt); park.pop(); } park.pop(); } } //将临时栈里的车压入停车场 for(int i = 0;i<r-num;i++) { temp.get_car_top(th_number,wt,pt); park.push(th_number,wt,pt); temp.pop(); } //将离开便道要去车场的信息压入车场中 wait.get_wait_leave_infor(th_number,wt,pt,lt); park.push(th_number,wt,park_t); wait.serve(); } else { //如果便道内没有成等待 if( wait.empty() ) { int creat_number(int a); //离开的时间 time_t t = time(NULL); tm leave_t = *(localtime(&t)); //车在停车场中的位置 int num; num=creat_number(park.get_number()); /*cout << "*******离开的车为 *******" << endl;*/ cout << "出站的车为: 第" << num << "辆车" << endl; //车离开的编号 int th_number; //离开车场的车的到达时间 tm wt; tm pt; park.get_car_infor(num,th_number,wt,pt); //cout << "离开的车的编号" << th_number << endl; //将离开停车场的车辆信息压入Queue leave中 leave.append(th_number,wt,pt,leave_t); //将number-num辆车放到临时栈里 if( (park.get_number()-1)!= 0) { int r = park.get_number(); // if(num == park.get_number()) { park.get_car_top(th_number,wt,pt); //cout << "进入临时车站的车的编号" <<th_number << endl; temp.push(th_number,wt,pt); park.pop(); } else { if(num < park.get_number()) { for(int i = 0;i<r-num;i++) { park.get_car_top(th_number,wt,pt); //cout << "进入临时车站的车的编号" <<th_number << endl; temp.push(th_number,wt,pt); park.pop(); //cout << "count=" << park.get_number() << endl; } park.pop(); } } //将临时栈里的车压入停车场 for(int i = 0;i< r-num;i++) { temp.get_car_top(th_number,wt,pt); park.push(th_number,wt,pt); //cout<<"临时站压入车场编号"<<th_number<<endl; temp.pop(); } } else { //如果停车站中只有一辆车 //则只需将第一辆车删除即可 if( park.get_number()-1 == 0) { park.pop(); break; } } } } } } break; default: break; } } int creat_number(int a) { //产生随机数 srand((unsigned) time(NULL)); return (1 + rand() % a); }
评论
    相关推荐
    • C++ Primer
      C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对...
    • c++课件
      c++课件c++课件c++课件c++课件c++课件c++课件c++课件c++课件c++课件c++课件c++课件c++课件c++课件
    • C++ PRrimer
      本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。本版对前一版进行了彻底的...
    • C++
      C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++
    • C++ primer
      本文档具有C++ primer 以及 C++ primer 标准答案各一份,内容清晰充实!希望与热爱C++的学友们一起同舟共济,努力学习!
    • c++information
      c++c++c++c++c++c++c++c++c++c++c++c++
    • c++yuyanbiancheng
      这是C和C++集成的编程环境!这是C和C++集成的编程环境!这是C和C++集成的编程环境!这是C和C++集成的编程环境!这是C和C++集成的编程环境!
    • effective C++
      有关C++编程方面的检验性介绍,对由C转向C++,和有C++编程基础的程序员有帮助,不过是英文版
    • C++ Primer
      这本处适合各个阶段的C++程序员,这本书可以帮助初学者快速入门,里面有最实用,最容易理解的代码;同时这也是有经验的C++程序员最好的一本参考手册
    • C++ Primer
      本书是久负盛名的C++经典教程引,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++