各位大神,我在运行文件时出现了乱码,而且设置了编码运行正常,但是关闭shell再运行就不可以了。还有就是出现了sh:color:+乱码 是用putty或securecrt之类的登录的不? 回车符格式不一样吧 //停车场模拟程序 //该程序需实现以下功能: //(1) 模拟车辆进出 //(2) 模拟停车功能,该程序需要为进来的车辆安排一个车位 //(3) 计费功能,根据停车时间计算费用,在车辆离开时收取 #include<iostream> #include<vector> #include<time.h> #include<string> #include<stdlib.h> using namespace std; //定义车位数量 const int pNumber=10; //定义当前时间 const time_t beginTime=time(NULL); //定义停车的价格 const int price=5; //申明Calendar函数 void Calendar(time_t t); //申明一个全局临时变量来存储每辆车的费用 double amountMoney=0; class Car { private: //定义车辆进入和离开停车场的时间 string carID; time_t enterTime; time_t leaveTime; int parkID;//停车位编号 double money; public: int getParkID() { return parkID; } string getID() { return carID; } Car(string str,int parkNumber) { this->carID=str; this->enterTime=time(NULL); this->parkID=parkNumber; cout<<"进入停车场的时间:"<<endl; Calendar(enterTime); } ~Car() { } double countMoney() { return this->money=price*(this->leaveTime-this->enterTime); } void Leave() { this->leaveTime=time(NULL); cout<<"离开停车场的时间:"<<endl; Calendar(leaveTime); cout<<"共计在停车场停留 "<<this->leaveTime-this->enterTime<<"秒"<<endl; amountMoney+=countMoney(); cout<<"总费用为 :"<<countMoney()<<" RMB"<<endl; this->~Car(); }
}; class CarPark { private: vector<bool> bvec; vector<Car> cvec; int parkNumber;//车位号 double amountMoney; public: CarPark() { //将停车位容器置为pNumber大小,并且以false表示空车位,true表示车位有车占用 this->bvec.resize(pNumber); this->amountMoney=0; for(size_t i=0;i<this->bvec.size();i++) bvec[i]=false; } //判断停车场是否停满了车辆 bool isEmpty() { for(size_t i=0;i<this->bvec.size();i++) { if(bvec[i]==false) { this->parkNumber=i; return true; } } return false; } //存车 void enterCar() { if(this->isEmpty()==true) { string id; cout<<"输入车牌号:"<<endl; cin>>id; //存车前应该检查输入的车牌号是否之前输入过 vector<Car>::iterator iter; bool exist=false; for(iter=this->cvec.begin();iter!=this->cvec.end();iter++) { if(iter->getID()==id) { cout<<"此车牌号的车已经在停车场内,车牌号输入错误!"<<endl;exist=true; break; } } if(exist==false) { Car car(id,this->parkNumber);//通过id和parkNumber对car进行标识 cvec.push_back(car); cout<<"请停在 "<<this->parkNumber<<" 号车位!"<<endl; bvec[this->parkNumber]=true;//将此车位标识为true表示已有车停留 } } else cout<<"停车场现在没有空的车位!"<<endl; } //取车 void leaveCar() { string id; cout<<"输入车牌号:"<<endl; cin>>id; vector<Car>::iterator iter; for(iter=this->cvec.begin();iter!=this->cvec.end();iter++) { if(iter->getID()==id) { int value; value=iter->getParkID(); this->bvec[value]=false;//车辆离开将车位设为false标识为车位空闲 iter->Leave(); } }
} //查询空位 void findParking() { cout<<"空闲车位有:"<<endl; for(size_t i=0;i<this->bvec.size();i++) if(bvec[i]==false) cout<<i<<" "; cout<<endl; } }; void Menu() { system("color 2E"); for(int i=0;i<20;i++) cout<<"*"; cout<<"停车场模拟程序"; for(int i=0;i<20;i++) cout<<"*"; cout<<endl; CarPark carPark; do{ cout<<"1:存入车辆 2:取出车辆 3:查询空闲车位 4:查看收益 5:退出"<<endl; char key; cin>>key; switch(key) { case '1': carPark.enterCar();cout<<endl;break; case '2': carPark.leaveCar();cout<<endl;break; case '3': carPark.findParking();cout<<endl;break; case '4': cout<<amountMoney<<endl;break; case '5': exit(0);cout<<endl;break; default: cout<<"输入了错误的指示,请重新输入!"<<endl; } }while(true); } void Calendar(time_t t) { time(&t); struct tm* tminfo; tminfo=localtime(&t); cout <<("Date: %04d-%02d-%02d %02d时%02d分%02d秒\n", tminfo->tm_year + 1900, tminfo->tm_mon + 1, tminfo->tm_mday,tminfo->tm_hour,tminfo->tm_min,tminfo->tm_sec); } int main() { Menu(); return 0; }
|