资源描述
南京航空航天大学金城学院
《C++面向对象程序设计》课程设计
试验汇报
题目: _ 车位管理程序
班级:
分组:
组员:
成绩:
指导老师:
完成日期: 年 月 日
目录
一、程序关键功效
二、系统总框架图
三、各模块功效
四、功效模块图
五、程序结构步骤图
六、试验结果
七、编程体会
八、参考资料
九、附录:程序清单及源程序
一、 程序关键功效
(1)停车:新来车辆时假如有空位,按次序为该车分配停车位,并自动统计开始停车时间(用系统时间);
(2)计费:车辆开走时,输入车位编号,自动统计结束停车时间(用系统时间);计算出对应停车费;
(3)显示:显示停车场中各类车辆信息。
(4)退出
二、系统总框架图
主函数
用户选择操作
操作完成
退出程序
三、 各模块功效
Park类 //描述停车场类Park,定义Park内数据组员
Automobile类 //包含纯虚函数Pay用于显示车辆信息并交纳对应停车费,和getlicense()取得车牌号
Time类 // 获取系统时间
Truck类 //公有继承Automobile类,并增加静态数据组员deadweight(载重量),对基类中纯虚函数pay()具体定义
Carriage类 //公有继承Automobile类,并增加静态数据组员num(乘坐人数),对基类中纯虚函数pay()具体定义
Car类 //公有继承Automobile类,并增加静态数据组员displacement(排气量)
int main () //主函数(功效选择→ 功效实现)
四、 功效模块图
主函数
输入车牌号
退出
返回菜单
输入车牌号
选择车类型
停车
显示
取车
取车成功
显示缴费信息
停车成功
显示停车场信息
五、程序结构步骤图
开始
pay(int i=0)
Car
结束
pay(int i=0)
pay(int i=0)
Carriage
Truck
getlicense()
停车
取车
显示
六、试验结果
七、编程体会
刚开始没有想到去怎么做,简单弄了一下框架,后面慢慢边写边改,然后就写出来了。经过baidu查找,知道了用tm 时间结构。这次课设让我对c++有了更深认识
八、参考资料
(1) 《C++面向对象程序设计》/陈腊梅等编.-北京:中国电力出版社,.8
九、附录:程序清单及源程序
#include <iostream>
#include <time.h>
#include <string>
using namespace std;
class Park
{
public:
int judge; //判定车位是否为空,0为空,1相反
int t_hour; //开始停车时间
int t_min;
int q_hour; //qiut离开时间
int q_min;
int leixing; //车类型
string chepai;//车牌号
};
Park p[3]; //定义Park类对象p[3]
//---------------------------------------------------------
class Automobile //基类
{
int i;
double j ;
string license; //车牌号
public:
string getlicense()
{
cout<<"请输入车牌号:"<<endl;
cin>>license;
return license;
}
double money(int i=0)
{
j=1/60;
return ((p[i].q_hour-p[i].t_hour)*60+(p[i].q_min-p[i].t_min))*j;
}
virtual void pay(int i)=0; //纯虚函数
};
//---------------------------------------------------------
class Time //定义时间类
{
int hour; //时
int min; //分
public:
void gettime() //时间函数
{
struct tm *newtime; //获取时间
time_t long_time;
time( &long_time );
newtime = localtime( &long_time );
hour=newtime->tm_hour; //得到系统目前小时
min=newtime->tm_min; //得到系统目前分钟
}
int showTime_h()
{
return hour;
}
int showTime_m()
{
return min;
}
};
//---------------------------------------------------------
class Truck:public Automobile //卡车
{
static float deadweight; //载重量
public:
void pay(int i=0)
{
cout<<"-------------------"<<endl;
cout<<"取车成功!"<<endl;
cout<<"车牌号:"<<p[i].chepai<<endl;
cout<<"所停车位:"<<i+1<<endl;
cout<<"载重量:"<<deadweight<<endl;
cout<<"进入停车场时间:"<<p[i].t_hour <<":"<<p[i].t_min<<endl;
cout<<"离开停车场时间:"<<p[i].q_hour <<":"<<p[i].q_min<<endl;
cout<<"需交纳停车费:"<<(money())*2<<endl;
cout<<"-------------------"<<endl;
}
void zaizhong()
{
cout<<"请输入载重量"<<endl;
cin>>deadweight;
}
};
//---------------------------------------------------------
class Carriage:public Automobile //客车
{
static int num; //乘坐人数
public:
void pay(int i=0)
{
cout<<"-------------------"<<endl;
cout<<"取车成功!"<<endl;
cout<<"车牌号:"<<p[i].chepai<<endl;
cout<<"所停车位:"<<i+1<<endl;
cout<<"乘坐人数:"<<num<<endl;
cout<<"进入停车场时间:"<<p[i].t_hour <<":"<<p[i].t_min<<endl;
cout<<"离开停车场时间:"<<p[i].q_hour <<":"<<p[i].q_min<<endl;
cout<<"需交纳停车费:"<<(money())*1.5<<endl;
cout<<"-------------------"<<endl;
}
void renshu()
{
cout<<"请输入乘坐人数:"<<endl;
cin>>num;
}
};
//---------------------------------------------------------
class Car:public Automobile //小轿车
{
static float displacement; //排气量
public:
void pay(int i=0)
{
cout<<"-------------------"<<endl;
cout<<"取车成功!"<<endl;
cout<<"车牌号:"<<p[i].chepai<<endl;
cout<<"所停车位:"<<i+1<<endl;
cout<<"排气量:"<<displacement<<endl;
cout<<"进入停车场时间:"<<p[i].t_hour <<":"<<p[i].t_min<<endl;
cout<<"离开停车场时间:"<<p[i].q_hour <<":"<<p[i].q_min<<endl;
cout<<"需交纳停车费:"<<(money())*1<<endl;
cout<<"-------------------"<<endl;
}
void paiqi()
{
cout<<"请输入排气量:"<<endl;
cin>>displacement;
}
};
float Truck::deadweight=0; //静态组员初始化
int Carriage::num=0;
float Car::displacement=0;
//---------------------------------------------------------
int main()
{
int i,m,n;
string lschepai;
do
{
cout<<" 欢迎光临 "<<endl;
cout<<"**************************"<<endl;
cout<<" 1. 停车 "<<endl;
cout<<" 2. 取车 "<<endl;
cout<<" 3. 显示 "<<endl;
cout<<" 4. 退出 "<<endl;
cout<<"**************************"<<endl;
cout<<" 请选择功效:"<<endl;
cin>>m;
if(m==1)
{
for(i=0;i<3;i++)
{
if(p[i].judge==0) //judge为0即代表车位为空,能够停车
{
do{
cout<<"请选择车类型:1:Truck 2:Carriage 3:Car"<<endl;
cin>>p[i].leixing;
switch(p[i].leixing)
{
case 1:{Truck Truck1; p[i].chepai=Truck1.getlicense();Truck1.zaizhong();}break;
case 2:{Carriage Carriage1; p[i].chepai=Carriage1.getlicense();Carriage1.renshu();}break;
case 3:{Car Car1; p[i].chepai=Car1.getlicense();Car1.paiqi();}break;
default:cout<<"输入错误!"<<endl;break;
}
}
while(p[i].leixing!=1&&p[i].leixing!=2&&p[i].leixing!=3);
Time Time_t;
Time_t.gettime();
p[i].t_hour=Time_t.showTime_h();
p[i].t_min=Time_t.showTime_m();
cout<<"-------------------"<<endl;
cout<<"停车成功!车位:"<<i+1<<endl;
cout<<"车牌号:"<<p[i].chepai<<endl;
cout<<"车类型:"<<p[i].leixing<<endl;
cout<<"停车时间:"<<p[i].t_hour <<":"<<p[i].t_min<<endl;
cout<<"-------------------"<<endl;
p[i].judge=1; //给judge赋值为1,表明该车位已占用
break;
}
else
{
if(i==2)
cout<<endl<<"车位已满!请选择其它功效!"<<endl<<endl;;
}
}
}
if(m==2)
{
cout<<"请输入车牌号:"<<endl;
cin>>lschepai;
Time Time_q;
Time_q.gettime();
for(i=0;i<3;i++)
{
if(lschepai==p[i].chepai)
{
p[i].q_hour=Time_q.showTime_h();
p[i].q_min=Time_q.showTime_m();
switch(p[i].leixing)
{
case 1:{Truck Truck2;Truck2.pay(i);};break;
case 2:{Carriage Carriage2;Carriage2.pay(i);};break;
case 3:{Car Car2;Car2.pay(i);};break;
}
p[i].judge=0;
break;
}
else
{
if(i==2)
cout<<"你输入车牌号不存在!"<<endl;
}
}
}
if(m==3)
{
for(i=0;i<3;i++)
{
cout<<"-------------------"<<endl;
if(p[i].judge==1)
{
cout<<"车位:"<<i+1<<endl;
cout<<"车牌号:"<<p[i].chepai<<endl;
cout<<"车类型:"<<p[i].leixing<<endl;
cout<<"进入停车场时间:"<<p[i].t_hour <<":"<<p[i].t_min<<endl;
cout<<"目前时间:"<<p[i].t_hour <<":"<<p[i].t_min<<endl;
}
if(p[i].judge==0)
{
cout<<"车位"<<i+1<<"为空!"<<endl;
}
cout<<"-------------------"<<endl;
}
}
if(m==4)
break;
if(m!=1&&m!=2&&m!=3&&m!=4)
{
cout<<"你输入有误,请重新输入!"<<endl;
}
}
while(m!=4);
return 0;
}
展开阅读全文