车辆管理系统设计(C++)


车辆管理系统设计(C++)


#include<iostream>
#include<windows.h>
#include<fstream>
#define N 100 //车辆总存储量
using namespace std;
struct Cars{
	int num; //车辆编号
	int pnum;  //车牌号 
	char made[20];//制造公司 
	double year; //生产日期 
	char type; //车辆型号B-大客车,C-小轿车,L-卡车
	int km; //总公里数
	int cost; //基本维护费用
};
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()
{
	int a = 0, y;
	while(1)
	{
		if(top < N)
{
	int i;
	cout<<"请输入需添加的车辆信息:"<<endl;
	cout<<"请输入车辆编号:";  cin>>i;
	for(int j = 0; j < top; j++)
{
	if(car[j].num == i)
		{cout<<"编号重复,添加失败!系统将自动返回..."<<endl;
		a++;
		break;}
}
	if(a == 0){ //编号不重复
	car[top].num = i;
	cout<<"请输入车牌号:";  cin>>car[top].pnum;
	cout<<"请输入车辆制造公司:";  cin>>car[top].made;
	cout<<"请输入购买时间:";  cin>>car[top].year;   
	cout<<"请选择车辆型号(B-大客车,C-小轿车,L-卡车):";  cin>>car[top].type;
	cout<<"请输入总公里数:";  cin>>car[top].km;
	if(car[top].type == 'B'|| car[top].type == 'b')
		{
			cout<<"请输入载客量:";  cin>>people[top];
			car[top].cost = 2000;}
	else if(car[top].type == 'C'|| car[top].type == 'c')
	{
		cout<<"请输入车厢数:";  cin>>coach[top];
		car[top].cost = 1000;}
	else
		{
			cout<<"请输入载重量:";  cin>>weight[top];
			car[top].cost = 1500;}
	top++;
	cout<<"是否继续添加?(1-是, 2-否)"<<endl;
	cin>>y;
	if(y == 2)
	{
		cout<<"请稍等,系统将自动返回功能界面..."<<endl;
		break;}
	}
	else //编号重复
	break;
}
	else
	{cout<<"车辆信息库已满,不能再添加!"<<endl;
	cout<<"系统将自动返回功能界面..."<<endl;
	break;}
}
	Sleep(2000);
	jiemian();
}
void Manager::search()
{
int i, j, a = 0, b;
char k;
cout<<"*  1.按车辆制造公司查询  *"<<endl;
cout<<"*  2.按编号查询          *"<<endl;
cout<<"*  3.按类别查询          *"<<endl;
cout<<"*  请输入你的选项:(1-3)*"<<endl;
cin>>i;
switch(i){
	case 1:char  m[20];
		cout<<"请输入需查询车辆的制造公司:"<<endl;
		cin>>m;
		for(j = 0; j < top; j++)
		{
		if(strcmp(car[j].made, m) == 0)
		{
		cout<<"车辆编号:"<<car[j].num<<"  "<<"车牌号:"<<car[j].pnum<<"  "
		<<"车辆制造公司:"<<car[j].made<<"  "<<"车辆购买时间:"<<car[j].year<<"  "
		<<"车辆型号:"<<car[j].type<<"  "<<"总公里数:"<<car[j].km<<"  ";
		if(car[j].type == 'B'|| car[j].type == 'b')
			cout<<"载客量:"<<people[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
		else if(car[j].type == 'C'|| car[j].type == 'c')
		cout<<"车厢数:"<<coach[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
		else 
			cout<<"载重量:"<<weight[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
			a++;}
		}
		if(a == 0)
			cout<<"该车辆制造公司不存在!"<<endl;
		else
			{cout<<"是否进行修改?(Y-是,N-否)"<<endl;
				cin>>k;if(k == 'Y' || k == 'y')edit();}
				break;
	case 2:  int n;
		cout<<"请输入需查询的车辆编号:"<<endl;
		cin>>n;
		for( j = 0; j < top; j++)
			{if(car[j].num == n)
			{
			cout<<"车辆编号:"<<car[j].num<<"  "<<"车牌号:"<<car[j].pnum<<"  "
			<<"车辆制造公司:"<<car[j].made<<"  "<<"车辆购买时间:"<<car[j].year<<"  "
			<<"车辆型号:"<<car[j].type<<"  "<<"总公里数:"<<car[j].km<<"  ";
			if(car[j].type == 'B'|| car[j].type == 'b')
				cout<<"载客量:"<<people[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
			else if(car[j].type == 'C'|| car[j].type == 'c')
				cout<<"车厢数:"<<coach[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
			else
				cout<<"载重量:"<<weight[j]<<""<<"基本费用:"<<car[j].cost<<endl;a++;}
			}
			if(a == 0)
				cout<<"该车辆编号不存在!"<<endl;
			else
				{cout<<"是否进行修改?(Y-是,N-否)"<<endl;
				cin>>k;if(k == 'Y' || k == 'y')edit();
				}break;
	case 3: char t;
		cout<<"请输入需查询的车辆型号:(B-大客车,C-小轿车,L-卡车)"<<endl;
		cin>>t;
		for(j = 0; j < top; j++)
		{if(car[j].type == t)
		{
		cout<<"车辆编号:"<<car[j].num<<"  "<<"车牌号:"<<car[j].pnum<<"  "
		<<"车辆制造公司:"<<car[j].made<<"  "<<"车辆购买时间:"<<car[j].year<<"  "
		<<"车辆型号:"<<car[j].type<<"  "<<"总公里数:"<<car[j].km<<"  ";
		if(car[j].type == 'B'|| car[j].type == 'b')
			cout<<"载客量:"<<people[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
		else if(car[j].type == 'C'|| car[j].type == 'c')
			cout<<"车厢数:"<<coach[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
		else
			cout<<"载重量:"<<weight[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
			a++;}
		}
		if(a == 0)
			{cout<<"该车辆型号不存在!"<<endl;}
		else
			{cout<<"是否进行修改?(Y-是,N-否)"<<endl;
			cin>>k;if(k == 'Y' || k == 'y')  edit();
			}break;
	default: cout<<"输入有误!"<<endl;
	break;
	}
	Sleep(2000);
	cout<<"按1返回主界面:"<<endl;
	cin>>b;
	if(b == 1) jiemian();
	else{cout<<"输入有误,系统将退出..."<<endl;
		Sleep(3000);
	return;}
}
void Manager::show()
{
int i;
if(top != 0)
	{cout<<"当前车库中的所有车辆信息为:"<<endl;
	for(int j = 0; j < top; j++)
		{
		cout<<"车辆编号:"<<car[j].num<<"  "<<"车牌号:"<<car[j].pnum<<endl 
		<<"车辆制造公司:"<<car[j].made<<"  "<<"车辆购买时间:"<<car[j].year<<endl
		<<"车辆型号:"<<car[j].type<<"  "<<"总公里数:"<<car[j].km<<endl;
		if(car[j].type == 'B'|| car[j].type == 'b')
			cout<<"载客量:"<<people[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
	else if(car[j].type == 'C'|| car[j].type == 'c')
			cout<<"车厢数:"<<coach[j]<<""<<"基本费用:"<<car[j].cost<<endl;
	else
		cout<<"载重量:"<<weight[j]<<"  "<<"基本费用:"<<car[j].cost<<endl;
		}
		}
	else
		cout<<"车辆库为空!"<<endl;
cout<<"按1返回主界面:"<<endl;
cin>>i;
if(i == 1) jiemian();
else
	{cout<<"输入有误,系统将退出..."<<endl;
	Sleep(3000);
	return ;
	}
}
void Manager::edit()
{
int i, j, a = 0;
char m[20];
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>>m;
		strcpy(car[j].made, m);
		cout<<"购买时间:";
		cin>>car[j].year;
		cout<<"车辆型号(B-大客车,C-小轿车,L-卡车):";
		cin>>car[j].type;
		cout<<"总公里数:";
		cin>>car[j].km;
	if(car[j].type == 'B'||car[j].type == 'b')
		{cout<<"载客量:";cin>>people[j];}
	else if(car[j].type == 'C'||car[j].type == 'c')
		{cout<<"车厢数:";cin>>coach[j];}
	else
		{cout<<"载重量:";
		cin>>weight[j];
		}
		a++;
		}
}
if(a == 0)
	cout<<"此编号不存在,不能进行修改,请重新输入!"<<endl;
if(a != 0)
{cout<<"修改成功!系统将返回主界面..."<<endl;
break;}
}
Sleep(1500);
jiemian();
}
void Manager::delet()
{
int i, a = 0,b=0;
while(1){if(top == 0)
{cout<<"车辆信息库为空!系统将返回功能界面..."<<endl;
b++;
break;
}
else
	{cout<<"请输入需要删除的车辆编号:";
cin>>i;`在这里插入代码片`
for(int j = 0; j < top; j++)
{if(car[j].num == i){//车辆编号存在
if(car[top - 1].type == 'B'|| car[top - 1].type == 'b')
{people[j] = people[top - 1];
	car[j].cost = 2000;
	b++;
}
else if(car[top - 1].type == 'C'|| car[top - 1].type == 'c')
	{coach[j] = coach[top - 1];
	car[j].cost = 1000;
	b++;}
else{weight[j] = weight[top - 1];
	car[j].cost = 1500;
	}
	car[j].num = car[top - 1].num;
	car[j].pnum = car[top - 1].pnum;
	strcpy(car[j].made, car[top - 1].made);
	car[j].year = car[top - 1].year;
	car[j].type = car[top - 1].type;
	car[j].km = car[top - 1].km;
	top--;
	a++;
	b++;
	}
}
if(a == 0)
	cout<<"此编号不存在,不能进行删除,请重新输入!"<<endl;
	else{cout<<"删除成功!系统将返回功能界面..."<<endl;
		break;}
		}
}
if(b==1)
	{
	Sleep(5000);
	jiemian();}
}
void Manager::sum()
{if(top != 0)
	{int j, b = 0, c = 0, l = 0;
		cout<<"当前车辆信息库中总车辆数为:"<<top<<"辆"<<endl;
	for(j = 0; j < top; j++)
		{if(car[j].type == 'B'|| car[j].type == 'b')
		b++; //统计大客车的数量
else if(car[j].type == 'C'|| car[j].type == 'c')
	c++; //统计小轿车的数量
else
	l++; //统计卡车的数量
	}
cout<<"各型号车辆数为:"<<endl;
cout<<"大客车:"<<b<<"辆"<<"  "<<"小轿车:"<<c<<"辆"<<"  "
<<"卡车:"<<l<<"辆"<<endl;}
else
	cout<<"车库信息为空!"<<endl;
cout<<"系统将返回主界面..."<<endl;
Sleep(5000);
jiemian();
}
void Manager::write(){
ofstream in("guanli.txt",ios_base::app);
for(int i = 0; i < top ; i++)
{	cout<<"车辆编号:";
	in<<car[i].num<<" "<<endl;
	cout<<"车牌号:";
	in<<car[i].pnum<<" "<<endl;
	cout<<"车辆制造公司:";
	in<<car[i].made<<" "<<endl;
	cout<<"车辆购买时间:";
	in<<car[i].year<<" "<<endl;
	cout<<"车辆型号:";
	in<<car[i].type<<" "<<endl;
	cout<<"总公里数:";
	in<<car[i].km<<" "<<endl;
	cout<<"基本维护费用:";
	in<<car[i].cost<<" "<<endl;
	if(car[i].type == 'B'|| car[i].type == 'b')
		{cout<<"载客量:";in<<people[i]<<endl;}
	else if(car[i].type == 'C'|| car[i].type == 'c')
		{cout<<"车厢数:";in<<coach[i]<<endl;}
	else
		{cout<<"载重量:";in<<weight[i]<<endl;}}
	in.close();
	cout<<"车辆信息已成功写入同目录下的a.txt文件中!系统将返回主界面..."<<endl;
		Sleep(3000);
	jiemian();
}
void Manager::read()
{
ifstream out("guanli.txt",ios::in);
while(!out.eof())
	{
	out>>car[top].num>>car[top].pnum>>car[top].made
	>>car[top].year>>car[top].type>>car[top].km>>car[top].cost;
	if(car[top].type == 'B'|| car[top].type == 'b')
		out>>people[top];
	else if(car[top].type == 'C'|| car[top].type == 'c')
		out>>coach[top];
	else
		out>>weight[top];
		top++;}
	out.close();
	//if(out.eof()) cout<<"系统将返回主界面..."<<endl;
	cout<<"读取同目录下guanli.txt文件成功!系统将返回主界面..."<<endl;
	top--; 
	Sleep(3000);
	jiemian();
}
void Manager::jiemian()
	{system("cls");
	int i;
	cout<<"***********************************"<<endl;
	cout<<"*        欢迎进入车辆管理系统     *"<<endl;
	cout<<"*            1.添加车辆           *"<<endl;
	cout<<"*            2.查询车辆           *"<<endl;
	cout<<"*            3.显示车辆           *"<<endl;
	cout<<"*            4.编辑车辆           *"<<endl;
	cout<<"*            5.删除车辆           *"<<endl;
	cout<<"*            6.统计车辆           *"<<endl;
	cout<<"*            7.存储车辆           *"<<endl;
	cout<<"*            8.读取车辆           *"<<endl;
	cout<<"*            0.退出系统           *"<<endl;
	cout<<"***********************************"<<endl;
	cout<<"请输入你需要操作的选项:(0-8)"<<endl;
	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 6:  sum();break;
	case 7:  write();break;
	case 8:  read();break;
	case 0:  return;
	default:  cout<<"输入有误!系统将退出..."<<endl;}
	return ;
}
int main()
{Manager a;
a.jiemian();
return 0;
}
车辆管理系统主要负责各种车辆的常规信息管理工作。 系统中的车辆主要有大客车、小轿车和卡车。每种车辆车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、 耗油量/公里、基本维护费用、养路费、累计总费用等信息。大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等 信息。 每台车辆当月总费用=油价*耗油量/公里+基本维护费用。 基本维护费用:客车:2000 元/月,小轿车:1000 元/月,卡车:1500 元/月 功能要求: (1)添加车辆:主要完成车辆信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再 添加新的数据。 (2)查询车辆:可按照三种方式来查询物品,分别为: 按车辆制造公司查询:输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!”; 按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”; 按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!”; (3)显示车辆信息库:输出当前车辆信息库中所有车辆信息,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除车辆:主要完成车辆信息的删除。如果当前车辆信息库为空,则提示“车辆信息库为空!”,并返回操作;否则,输入要删除的编号,根据编号删 除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。 (6)统计信息 输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。 (7)车辆信息存盘:将当前程序中的车辆信息存入文件中。 (8)读出车辆信息:从文件中将车辆信息读入程序。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值