车库一个车库有20辆
汽车要出售,一辆汽车的知名度
是:它的登记号它的品牌
车对象:包含登记号,和品牌
car {
int number;
string pingpai;
}
车库对象包含:20个车
cartotal{
car car【20】;
}
#include<stdio.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
using nhttps://img-mid.csdnimg.cn/release/static/image/mid/ask/773899967256113.png "#left")
amespace std;
class Student{
//创建对象
public:
int price;
int year;
int pow;
char* name ="car";
void print(){
cout<<name<<"的价格是"<<price<<",年份是"<<year<<",功率是"<<pow<<endl;
}
};
int main(){
Student stu;
stu.price=100;
stu.year=2001;
stu.pow=100;
stu.print();
//for循环创建20个车对象
Student arr[20] ;
for(int i=0;i<20;i++){
Student stui;
stui.price=i*100;
stui.year=2001;
srand((unsigned)time(NULL));
stui.pow=i*rand();
stui.print();
arr[i]= stui;
}
int total=0;
int max=0;
for(int i=0;i<20;i++){
//计算平均价格和总价格
total+=arr[i].price;
if(arr[i].price>max){
max=arr[i].price;
}
}
int pjz= total/20;
printf("总价格是:%d\n", total);
printf("平均价格是:%d\n",pjz);
printf("最大的价格是:%d\n",max);
}
#include<windows.h>
#include<iostream>
#include<fstream>
#include<iomanip>
#include<conio.h>
using namespace std;
#define N 20 //车辆最大存储量20
#define OilPrice 8.0 //油价8元每升
class Manager;
class Cars //汽车类
{
private:
int num; //编号
char pnum[20]; //车牌号
char made[20]; //制造公司
double time; //购买时间(多少个月)
int type; //型号(1-大客车,2-小轿车,3-卡车) 公共变量
double km; //总公里数
int cost; //基本维护费用
int RoadFee; //养路费
double OilKm; //耗油量/公里
double AllCount; //累计总费用
friend Manager;
};
class Manager //总的类
{
private:
Cars car[N]; //汽车数
int people[N]; //最大载客量(大客车)
int coach[N]; //箱数(小轿车)
int weight[N]; //载重量(卡车)
int top; //记录当前车辆数量
public:
Manager(){top = 0;}//车辆初始值为0 汽车总数
void add(); //添加车辆
void search(); //查询车辆
void show(); //显示车辆信息库
void edit(); //编辑功能
void delet(); //删除车辆
void sum(); //统计信息
void read(); //读出车辆信息
void write(); //车辆信息存盘
void jiemian(); //总界面
};
void Manager::add() //添加车辆 调用总的类之中的add函数
{
int a = 0, x, y; // x代表车辆编号
while(1)
{
if(top < N) //判断top当前已存车辆数小于汽车最大存储数N
{
cout<<"请输入需添加的车辆信息"<<endl;
cout<<"车辆编号:";
cin>>x;
for(int j=0; j<top;j++) //判断编号是否重复
{
if (car[j].num==x)
{
cout<<"编号重复,添加失败! 即将跳转至功能主界面"<<endl;
a++; //如果重复++,此时a不为0
break;
}
}
if(a==0) //此时编号不重复
{
car[top].num = x;
cout<<"车牌号:";
cin>>car[top].pnum;
cout<<"车辆制造公司:";
cin>>car[top].made;
cout<<"购买时间:";
cin>>car[top].time;
cout<<"养路费:";
cin>>car[top].RoadFee;
cout<<"车辆型号(1-大客车,2-小轿车,3-卡车):";
cin>>car[top].type;
while(!(car[top].type==1||car[top].type==2||car[top].type==3)) //判断输入指令是否为1-3
{
cout<<"输入指令号错误,重输:";
cin>>car[top].type;
}
cout<<"总公里数:";
cin>>car[top].km;
if( car[top].type==1) //此时是1-大客车,
{
cout<<"最大载客量:";
cin>>people[top];
car[top].cost = 2000; //基本维护费用
car[top].OilKm = 0.1; //耗油量/公里
}
else if( car[top].type == 2 ) //此时是2-小轿车
{
cout<<"车厢数:";
cin>>coach[top];
car[top].cost = 1000;
car[top].OilKm = 0.05;
}
else //此时是3-卡车
{
cout<<"载重量:";
cin>>weight[top];
car[top].cost = 1500;
car[top].OilKm = 0.15;
}
car[top].AllCount =(OilPrice * car[top].OilKm * car[top].km) + (car[top].time *car[top].cost); //计算总费用
top++; //车辆总数加一
write(); //调用车辆信息存盘函数,在下面定义
cout<<"是否继续添加车辆?(1-是,2-否):";
cin>>y;
while(!( y==1 || y==2 ))
{
cout<<"输入指令号错误,重输:";
cin>>y;
}
if(y == 2)
{
cout<<"即将跳转至功能主界面"<<endl;
break;
}
}
else //此时编号重复
break;
}
else //top>N
{
cout<<"车辆信息库已满,不能再添加车辆!"<<endl;
cout<<"即将跳转至功能主界面"<<endl;
break;
}
}
Sleep(1000); //延迟1秒
jiemian(); //调用总界面函数
}
void Manager::search() //查询车辆
{
int choose,m,n,a=0;
char i,t[20];
cout<<"****************************"<<endl;
cout<<"* 1.按车辆制造公司查询 *"<<endl;
cout<<"* 2.按编号查询 *"<<endl;
cout<<"* 3.按类别查询 *"<<endl;
cout<<"****************************"<<endl;
cout<<" 请输入你的选项:";
while(1)
{
cin>>i;
cout<<endl;
if(i=='1'||i=='2'||i=='3')
break;
cout<<"输入错误,重输:";
}
if(i=='1')
{
cout<<"请输入需查询车辆的制造公司:";
cin>>t;
}
else if(i =='2')
{
cout<<"请输入需查询的车辆编号:";
cin>>n;
}
else if(i == '3')
{
cout<<"请输入需查询的车辆型号(1-大客车,2-小轿车,3-卡车):";
cin>>m;
}
for(int j=0;j<top;j++)
if(strcmp(car[j].made,t)==0 || car[j].num==n || car[j].type==m) //strcmp比较,相同返回0,小于负数,大于正数
{
cout<<"编号 车牌号 制造商 购买时间 型号 特性 总公里 养路费 维护费 油耗 总费用"<<endl;
break;
}
for( j=0;j<top;j++)
if(strcmp(car[j].made, t)==0 || car[j].num==n || car[j].type==m)
{
cout<<setw(0)<<car[j].num<<setw(13)<<car[j].pnum<<setw(9)<<car[j].made<<setw(6)<<car[j].time; //前四个
if(car[j].type==1 )
cout<<setw(13)<<"大客车"<<setw(8)<<"载客量:"<<people[j]; //输出特性
else if(car[j].type == 2 )
cout<<setw(13)<<"小轿车"<<setw(9)<<"车厢数: "<<coach[j];
else
cout<<setw(13)<<"卡 车"<<setw(9)<<"载重量:"<<weight[j];
cout<<setw(6)<<car[j].km<<setw(7)<<car[j].RoadFee<<setw(8)<<car[j].cost<<setw(7)<<car[j].OilKm<<setw(9)<<car[j].AllCount<<endl;
a++; //使a不为0
}
if(a!=0)
{
cout<<"是否进行修改?(1-是,2-否):";
cin>>choose;
if(choose == 1)
edit(); //调用编辑功能函数
}
else //上述a++的函数未成功,最上面1,2,3的查询结果没有
{
if(i=='1') cout<<"车辆制造公司不存在!"<<endl;
if(i=='2') cout<<"车辆编号不存在!"<<endl;
else if (i=='3') cout<<"车辆型号不存在!"<<endl;
}
cout<<"按任意键返回功能主界面"<<endl;
char zz=getch(); //无回显的取一个字符
jiemian(); //调用界面函数
}
void Manager::show() //显示车辆信息库
{
if(top != 0) //top记录当前车辆数目
{
cout<<"********************************************************************************"<<endl;
cout<<"编号 车牌号 制造商 购买时间 型号 特性 总公里 养路费 维护费 油耗 总费用"<<endl;
for(int j = 0; j < top; j++) //使用for循环对应输出,j代表车辆数
{
cout<<setw(0)<<car[j].num<<setw(13)<<car[j].pnum<<setw(9)<<car[j].made<<setw(6)<<car[j].time;
if(car[j].type == 1 )
cout<<setw(13)<<"大客车"<<setw(8)<<"载客量:"<<setw(2)<<people[j];
else if(car[j].type == 2 )
cout<<setw(13)<<"小轿车"<<setw(8)<<"车厢数:"<<setw(2)<<coach[j];
else
cout<<setw(13)<<"卡 车 "<<setw(8)<<"载重量:"<<setw(2)<<weight[j];
cout<<setw(6)<<car[j].km<<setw(7)<<car[j].RoadFee<<setw(8)<<car[j].cost<<setw(7)<<car[j].OilKm<<setw(9)<<car[j].AllCount<<endl;
}
cout<<"********************************************************************************"<<endl;
}
else
cout<<"车辆库为空!"<<endl;
cout<<"按任意键返回主界面:";
char z=getch(); //从输出获得一个字符之后调用界面函数
jiemian();
}
void Manager::edit() //编辑车辆,既修改车辆
{
int i, j, a = 0;
cout<<"请依次输入需要修改的车辆信息:"<<endl;
while(1)
{
cout<<"车辆编号:";
cin>>i;
for(j = 0; j < top; j++)
{
if(car[j].num == i) //车库有此编号的车
{
cout<<"车牌号:";
cin>>car[j].pnum;
cout<<"制造公司:";
cin>>car[j].made;
cout<<"购买时间:";
cin>>car[j].time;
cout<<"型号(1-大客车,2-小轿车,3-卡车):";
cin>>car[j].type;
while(!(car[j].type==1||car[j].type==2||car[j].type==3)) //判断是否有误
{
cout<<"输入信息有误,请输入1-3:";
cin>>car[j].type;
}
cout<<"总公里数:";
cin>>car[j].km;
cout<<"养路费:";
cin>>car[j].RoadFee;
if( car[j].type == 1 ) //此时是1-大客车
{
cout<<"最大载客量:";
cin>>people[j];
car[j].cost = 2000;
car[j].OilKm = 0.1;
}
else if( car[j].type == 2 ) //此时是2-小轿车
{
cout<<"车厢数:";
cin>>coach[j];
car[j].cost = 1000;
car[j].OilKm = 0.05;
}
else //此时是3-卡车
{
cout<<"载重量:";
cin>>weight[j];
car[j].cost = 1500;
car[j].OilKm = 0.15;
}
write(); //调用存盘函数
a++; //成功后加一
}
}
if(a == 0) //未存成功,说明有错误
cout<<"此编号不存在,不能进行修改,请重新输入!"<<endl;
else
{
cout<<"修改成功!系统将返回主界面..."<<endl;
break; //跳出while循环
}
}
Sleep(1000); //延迟1秒
jiemian();
}
void Manager::delet() //删除车辆
{
int i, a = 0; //a用来判断循环是否成功
while(1)
{
if(top == 0) //车库为空无法删除
{
cout<<"车辆信息库为空!系统将返回功能界面..."<<endl;
break; //跳出while循环
}
else //不为空
{
cout<<"请输入需要删除的车辆编号:";
cin>>i;
for(int j = 0; j < top; j++) //for循环用来删除所有存盘的信息
{
if(car[j].num == i) //车辆编号存在
{
if(top==1)
car[0].type=0; //就一辆车,使其变为0
else //top不等于1
{
if( car[top - 1].type == 1 ) //判断出此时car数组里储存在最后一组的是1-大客车
{
people[j] = people[j+1]; //people载客量
car[j].cost = 2000;
car[j].OilKm = 0.1;
}
else if(car[top - 1].type == 2 ) //判断出此时car数组里储存在最后一组的是2-小轿车
{
coach[j] = coach[top - 1];
car[j].cost = 1000;
car[j].OilKm = 0.05;
}
else if(car[top - 1].type == 3 ) //判断出此时car数组里储存在最后一组的是3-卡车
{
weight[j] = weight[j+1];
car[j].cost = 1500;
car[j].OilKm = 0.15;
}
car[j].num = car[j+1].num; //使所有的数据均减一
strcpy(car[j].pnum, car[j+1].pnum);
strcpy(car[j].made, car[j+1].made);
car[j].time = car[j+1].time;
car[j].type = car[j+1].type;
car[j].km = car[j+1].km;
car[j].RoadFee = car[j+1].RoadFee;
car[j].AllCount = car[j+1].AllCount;
car[j+1].type=0;
}
a++;
write(); //存盘函数
}
}
if(a == 0)
cout<<"此编号不存在,不能进行删除,请重新输入!"<<endl;
else
{
cout<<"删除成功!系统将返回功能界面..."<<endl;
break;
}
}
}
Sleep(1000); //延迟1秒
jiemian();
}
void Manager::write() //车辆信息存盘
{
ofstream write;
write.open("d:\\b.txt",ios::out); //以输出方式打开文件
if(write)
{
for(int i = 0; i <=top; i++)
{
write<<endl;
write<<car[i].num<<" "<<car[i].pnum<<" "<<car[i].made<<" "<<car[i].time<<" "<<car[i].type<<" ";
if(car[i].type == 1)
write<<people[i];//存入 载客量
else if(car[i].type == 2)
write<<coach[i];//存入 车厢数
else
write<<weight[i];//存入 载重量
write<<" "<<car[i].km<<" "<<car[i].RoadFee<<" "<<car[i].cost<<" "<<car[i].OilKm<<" "<<car[i].AllCount;
}
}
}
void Manager::read() ///读出车辆信息
{
while(1)
{
ifstream read("d:\\b.txt",ios::in);
if(read)
{
while(!read.eof()) //文件不结束,还有内容
{
read>>car[top].num>>car[top].pnum>>car[top].made>>car[top].time>>car[top].type;
if(car[top].type == 1)
read>>people[top];//读取 载客量
else if(car[top].type == 2)
read>>coach[top];//读取 车厢数
else
read>>weight[top];//读取 载重量
read>>car[top].km>>car[top].RoadFee>>car[top].cost>>car[top].OilKm>>car[top].AllCount;
if(car[top].type==1||car[top].type==2||car[top].type==3)
top++;
}
read.close(); //关闭文件
break;
}
else
{
ofstream o("d:\\a.txt");
o.close();
}
}
}
void Manager::jiemian()
{ int c1=0,c2=0,c3=0;
for(int j = 0; j <= top; j++)
{
if( car[j].type == 1 ) c1++; //统计大客车的数量
else if(car[j].type == 2) c2++; //统计小轿车的数量
else if(car[j].type==3) c3++; //统计卡车的数量
}
top=c1+c2+c3;
cout<<"***********************************"<<endl;
cout<<"* 欢迎进入车辆管理系统 *"<<endl;
cout<<"* 1.添加车辆 *"<<endl;
cout<<"* 2.查询车辆 *\t\t总车辆\t"<<top<<endl;
cout<<"* 3.显示车辆 *\t\t大客车\t"<<c1<<endl;
cout<<"* 4.编辑车辆 *\t\t小轿车\t"<<c2<<endl;
cout<<"* 5.删除车辆 *\t\t卡 车 \t"<<c3<<endl;
cout<<"* 0.退出系统 *"<<endl;
cout<<"***********************************"<<endl;
cout<<"请输入你需要操作的选项:";
char i;
cin>>i;
while(!(i=='1'||i=='2'||i=='3'||i=='4'||i=='5'||i=='0'))
{
cout<<"输入错误,请重新输入:";
cin>>i;
}
switch(i)
{
case '1':add();break;
case '2':search();break;
case '3':show();break;
case '4':edit();break;
case '5':delet();break;
case '0':return;
}
}
int main()
{
Manager a;
a.jiemian();
return 0;
}
你想问什么?