(c++课程设计)简单车辆管理系统(有五种类型的车辆)代码+报告

分享了一个大二学生在限定时间内设计的车辆管理系统的源代码,包括类的实现、界面设计、功能及遇到的问题。代码虽能运行,但质量不高,质疑课程设计的实际意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于这个课程设计 ,差点没把我头发愁没。

好了其实本质还是东拼西凑,编程能力没怎么长进,花里胡哨的东西却学了不少(不是)

万恶的学院,虽然要求三人一组,但是却分一二三类,三个人代码还不能互相抄袭。

最后每个人都要提交代码,完成报告,答辩。

我严重怀疑是不是最近学院真的闲的没事干......

好了废话不多说,我把代码贴出来啦,造福广大网友,回馈我在CSDN当伸手党的日子

(大体上功能是可以实现,就是文件打开会有乱码,但是在cmd界面的读写啥的都没问题)

目录

一、题目

二、界面

三、代码 

四、课程设计报告


一、题目

该系统能够实现以下功能:

(1)利用类、继承的相关理论知识,建立合理的类,能够管理至少5种车型,各种车型的相关数据,根据需要自行设定

(1)能够统计出该公司,所有车辆的累积行驶里程

(2)能够分类统计出每一类车辆的累积行驶里程、资产总额、驾驶员数量等相关信息

(3)能够根据驾驶员信息查找该驾驶员驾驶的车辆的详细信息

(4)能够统计出该公司车辆的总数额以及每类车辆的数量

(5)能够实现某个类型车辆的添加和删除

(6)其他功能可根据需要自行扩充,并请在课程设计报告中详细说明!

二、界面

 

三、代码 

 1、头文件

这是头文件Mary_Vehicle.h的内容

#include<windows.h>
#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>
#include<conio.h>
using namespace std;
#define N 20          //车辆最大存储量20
#define OilPrice 8.0  //油价8元每升
void flash();
class Manage_Vehicler;//提前声明车辆管理类
//设置全局变量
int Vehicle_counter=0;
ifstream infile;
ofstream outflie;

这是Mary_Vehicle.cpp源文件

#include"Mary_Vehicle.h"
//车辆类
class Vehicle              //汽车类
{
public:
	int num;                  //编号
    char ID[N];                  //车牌号
    char Vehicle_Drirer[N];             //驾驶人
    double Emption_Time;                     //购买时间(XXXX年)(多少个月)
    int Type;                      //型号(1-大客车,2-小轿车,3-卡车,4-摩托车,5-越野车)        公共变量
    double ODO;                 //总公里数
    int Base_fee;                           //基本维护费用
	int RoadFee;                   //养路费
	double OilKm;                  //耗油量/公里
	double Total_cost;               //累计总费用
	friend Manage_Vehicler;
public :
		Vehicle();
		~Vehicle(){};
};
Vehicle::Vehicle(){
	ID[N]=0;
	Vehicle_Drirer[N]='无';
	Emption_Time=2000.0;
	Type=0;
	ODO=0.0;
	Base_fee=0;
	RoadFee=0;
	OilKm=0.0;
	Total_cost=0.0;
}
//车辆数组类,公有继承自车辆类
class Manage_Vehicler:public Vehicle              //总的类(管理类)
{
private:
	Vehicle vehicle[N];             //所有车辆数	
	int Max_Passenger[N];         //最大载客量(大客车)    
	int coach[N];          //箱数,轿车
	int weight[N];        //载重量(卡车)
	int velocity[N];       //最大速度(摩托车)
	double height[N];           //栏板高(越野车)
	int eapacity[N];         //电池容量(Ah)(电动汽车)
	int top;        //记录当前车辆数量
public:
	Manage_Vehicler(){top = 0;}//车辆初始值为0  车辆总数
	void Add_vehicle();     //添加车辆
	void Search_vehicle();  //查询车辆
	void Displays_information();    //显示车辆信息库
    void Edit_vehicle();    //编辑功能
    void Delect_vehicle();   //删除车辆
    void Sum_vehicle();     //统计信息
    void Read_vehicle();    //读出车辆信息
    void Write_vehicle();   //车辆信息存盘
    void Interface(); //总界面
	~Manage_Vehicler(){};
};
 //添加车辆  
void Manage_Vehicler::Add_vehicle()          
{
	ifstream infile;
    infile.open("车辆信息.txt",ios::out);
    if(!infile) 
		{
			cout<<"error!文件打开失败!"<<endl;
			Sleep(1500);
			return;
	    }
	system("cls");//清空屏幕
	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 (vehicle[j].num==x)     
				{
					cout<<"编号重复,添加失败! 即将跳转至功能主界面"<<endl;
                    a++;       //如果重复++,此时a不为0
                    break;
				}
			}
			if(a==0)                 //此时编号不重复
			{ 
				vehicle[top].num = x;
                cout<<"车牌号:";
                cin>>vehicle[top].ID;     
                cout<<"车辆驾驶人:";
                cin>>vehicle[top].Vehicle_Drirer;
                cout<<"购买时间(XXXX年):";
                cin>>vehicle[top].Emption_Time;
				cout<<"养路费:";
				cin>>vehicle[top].RoadFee;
                
				cout<<"车辆型号(1-大客车,2-小轿车,3-卡车,4—摩托车,5—越野车):";
                cin>>vehicle[top].Type;
				while(!(vehicle[top].Type==1||vehicle[top].Type==2||vehicle[top].Type==3||vehicle[top].Type==4||vehicle[top].Type==5)) //判断输入指令是否为1-3
				{
					cout<<"输入车辆型号错误,请重新输入:";
					cin>>vehicle[top].Type;
				}
                
				cout<<"总公里数:";
                cin>>vehicle[top].ODO;
                if( vehicle[top].Type==1)    //此时是1-大客车,
				{
					cout<<"最大载客量:";
                    cin>>Max_Passenger[top];
                    vehicle[top].Base_fee = 2000;   //基本维护费用
					vehicle[top].OilKm = 0.1;   //耗油量/公里
				}
				else if( vehicle[top].Type == 2 )   //此时是2-小轿车
				{
					cout<<"车厢数:";
                    cin>>coach[top];
                    vehicle[top].Base_fee = 1000;
					vehicle[top].OilKm = 0.05;
				}
				else if(  vehicle[top].Type == 3  )                           //此时是3-卡车
				{
					cout<<"载重量:";
                    cin>>weight[top];
                    vehicle[top].Base_fee = 1500;
					vehicle[top].OilKm = 0.15;
				}
				else if(  vehicle[top].Type == 4  )                            //此时是4-摩托车
				{
					cout<<"最大速度:";
                    cin>>weight[top];
                    vehicle[top].Base_fee = 1500;
					vehicle[top].OilKm = 0.15;
				}
				else if(  vehicle[top].Type == 5  )                            //此时是5-越野车
				{
					cout<<"栏板高:";
                    cin>>weight[top];
                    vehicle[top].Base_fee = 1500;
					vehicle[top].OilKm = 0.15;
				}
				else if(  vehicle[top].Type == 6  )                            //此时是6-电动汽车
				{
					cout<<"电池容量:";
                    cin>>eapacity[top];
                    vehicle[top].Base_fee = 1500;
					vehicle[top].OilKm = 0.15;
				}
				vehicle[top].Total_cost =(OilPrice * vehicle[top].OilKm * vehicle[top].ODO) + (vehicle[top].Emption_Time *vehicle[top].Base_fee);  //计算总费用
				top++;        //车辆总数加一
				Write_vehicle();      //调用车辆信息存盘函数,在下面定义
                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;
            flash();
			break;
		}
	}
	Sleep(1500);   //延迟1.5秒
	system("cls");//清空屏幕
	Interface();     //调用总界面函数
}
 //查询车辆
void Manage_Vehicler::Search_vehicle()        
{
	//ifstream infile;
   /* infile.open("车辆信息.txt",ios::in);
    if(!infile) 
		{
			cout<<"error!文件打开失败!"<<endl;
			Sleep(1500);
			return;
	    }*/
	system("cls");//清空屏幕
	int choose,m,n,a=0;
	char i,j,t[20]; 
	cout<<"                                    |******************************"<<endl;
	cout<<"                                    |          查询车辆界面        "<<endl;
	cout<<"                                    |******************************"<<endl;
	cout<<"                                    |*        ◇1.按驾驶人查询       *"<<endl;
	cout<<"                                    |*        ◇2.按编号查询         *"<<endl;
	cout<<"                                    |*        ◇3.按类别查询         *"<<endl;
	cout<<"                                    |******************************\n"<<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-卡车,4—摩托车,5—越野车):";
		cin>>m;
	}	
	
	for(int j=0;j<top;j++)
		if(strcmp(vehicle[j].Vehicle_Drirer,t)==0 || vehicle[j].num==n || vehicle[j].Type==m)   //strcmp比较,相同返回0,小于负数,大于正数。如果所输入的想要查找的依据在车辆管理系统中存在,就会输出对应的车辆全部信息
		{
			cout<<"编号    车牌号   驾驶人  购买时间(XXXX年) 型号     特性     总公里 养路费 维护费  油耗  总费用"<<endl;
		    break;
		}
	for( j=0;j<top;j++)
		if(strcmp(vehicle[j].Vehicle_Drirer, t)==0 || vehicle[j].num==n || vehicle[j].Type==m) 
		{
			cout<<setw(0)<<vehicle[j].num<<setw(8)<<vehicle[j].ID<<setw(9)<<vehicle[j].Vehicle_Drirer<<setw(6)<<vehicle[j].Emption_Time;  //前四个
			
			if(vehicle[j].Type==1 )
				cout<<setw(23)<<"大客车"<<setw(8)<<"载客量:"<<Max_Passenger[j];  //输出特性
			else if(vehicle[j].Type == 2 )
				cout<<setw(23)<<"小轿车"<<setw(9)<<"车厢数: "<<coach[j];  
			else if(vehicle[j].Type == 3 )
				cout<<setw(23)<<"卡 车"<<setw(9)<<"载重量:"<<weight[j];
			else if(vehicle[j].Type == 4 )
				cout<<setw(23)<<"摩托车"<<setw(9)<<"最大速度:"<<velocity[j];
			else if(vehicle[j].Type == 5 )
				cout<<setw(23)<<"越野车"<<setw(9)<<"栏板高:"<<height[j];
			
			cout<<setw(6)<<vehicle[j].ODO<<setw(7)<<vehicle[j].RoadFee<<setw(8)<<vehicle[j].Base_fee<<setw(7)<<vehicle[j].OilKm<<setw(9)<<vehicle[j].Total_cost<<endl;			
			a++;        //使a不为0
		}
	if(a!=0)
	{
		cout<<"是否进行修改?(1-是,2-否):";
		cin>>choose;
		if(choose == 1)
		Edit_vehicle();        //调用编辑功能函数
	}
	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();   //无回显的取一个字符
	flash();
    Interface();         //调用界面函数
}
 //显示车辆信息库
void Manage_Vehicler::Displays_information()         
{
	//ifstream infile;
    infile.open("车辆信息.txt",ios::in);
    if(!infile) 
		{
			cout<<"error!文件打开失败!"<<endl;
			Sleep(1500);
			return;
	    }
	system("cls");//清空屏幕
	if(top != 0)      //top记录当前车辆数目
	{
		cout<<"********************************************************************************"<<endl;
		cout<<"编号  车牌号   驾驶人  购买时间(XXXX年)    型号     特性     总公里 养路费 维护费  油耗  总费用"<<endl;
 
		for(int j = 0; j < top; j++)         //使用for循环对应输出,j代表车辆数
		{
			cout<<setw(0)<<vehicle[j].num<<setw(13)<<vehicle[j].ID<<setw(9)<<vehicle[j].Vehicle_Drirer<<setw(6)<<vehicle[j].Emption_Time;
			if(vehicle[j].Type == 1 )
			   cout<<setw(13)<<"大客车"<<setw(8)<<"载客量:"<<setw(2)<<Max_Passenger[j];
			else if(vehicle[j].Type == 2 )
			   cout<<setw(13)<<"小轿车"<<setw(8)<<"车厢数:"<<setw(2)<<coach[j];
			else if(vehicle[j].Type == 3)
			   cout<<setw(13)<<"卡 车 "<<setw(8)<<"载重量:"<<setw(2)<<weight[j];
			else if(vehicle[j].Type == 4)
			   cout<<setw(13)<<"摩托车 "<<setw(8)<<"最大速度:"<<setw(2)<<velocity[j];
			else 
			   cout<<setw(13)<<"越野车 "<<setw(8)<<"栏板高:"<<setw(2)<<height[j];
			cout<<setw(6)<<vehicle[j].ODO<<setw(7)<<vehicle[j].RoadFee<<setw(8)<<vehicle[j].Base_fee<<setw(7)<<vehicle[j].OilKm<<setw(9)<<vehicle[j].Total_cost<<endl;
		}
		cout<<"********************************************************************************"<<endl;
	}
	else                               
	cout<<"车辆库为空!"<<endl;
	cout<<"按任意键返回主界面:";
	char z=getch();        //从输出获得一个字符之后调用界面函数
	flash();
	Interface();
}
  //编辑车辆,修改车辆      
void Manage_Vehicler::Edit_vehicle()   
{
	//ifstream infile;
    infile.open("车辆信息.txt",ios::out);
    if(!infile) 
		{
			cout<<"error!文件打开失败!"<<endl;
			Sleep(1500);
			return;
	    }
	system("cls");//清空屏幕
	int i, j, a = 0;
	cout<<"请依次输入需要修改的车辆信息:"<<endl;
	while(1)
	{
		cout<<"车辆编号:";
		cin>>i;
		for(j = 0; j < top; j++)
		{
			if(vehicle[j].num == i)  //车库有此编号的车
			{
				cout<<"车牌号:";
                cin>>vehicle[j].ID;
                cout<<"驾驶人:";
                cin>>vehicle[j].Vehicle_Drirer;
                cout<<"购买时间(XXXX年):";
                cin>>vehicle[j].Emption_Time;
                cout<<"型号(1-大客车,2-小轿车,3-卡车,4-摩托车,5-越野车):";
                cin>>vehicle[j].Type;
				
				while(!(vehicle[j].Type==1||vehicle[j].Type==2||vehicle[j].Type==3||vehicle[j].Type==4||vehicle[j].Type==5)) //判断是否有误
				{
					cout<<"输入信息有误,请输入1-5:";
					cin>>vehicle[j].Type;
				}
                
				cout<<"总公里数:";
                cin>>vehicle[j].ODO;
				cout<<"养路费:";
				cin>>vehicle[j].RoadFee;
                
				if( vehicle[j].Type == 1 )    //此时是1-大客车
				{
					cout<<"最大载客量:";
                    cin>>Max_Passenger[j];
                    vehicle[j].Base_fee = 2000;
					vehicle[j].OilKm = 0.1;
				}
				else if( vehicle[j].Type == 2 )   //此时是2-小轿车
				{
					cout<<"车厢数:";
                    cin>>coach[j];
                    vehicle[j].Base_fee = 1000;
					vehicle[j].OilKm = 0.05;
				}
				else if (vehicle[j].Type == 3)                      //此时是3-卡车
				{
					cout<<"载重量:";
                    cin>>weight[j];
                    vehicle[j].Base_fee = 1500;
					vehicle[j].OilKm = 0.15;
				}
				else if( vehicle[j].Type == 2 )   //此时是4-摩托
				{
					cout<<"最大速度:";
                    cin>>velocity[j];
                    vehicle[j].Base_fee = 1000;
					vehicle[j].OilKm = 0.05;
				}
				else                        //此时是5-越野
				{
					cout<<"栏板高:";
                    cin>>height[j];
                    vehicle[j].Base_fee = 1500;
					vehicle[j].OilKm = 0.15;
				}
				
				Write_vehicle();                  //调用存盘函数
				a++;         //成功后加一
			}
			
		}
		if(a == 0)      //未存成功,说明有错误
			cout<<"此编号不存在,不能进行修改,请重新输入!"<<endl;
		else
		{
			cout<<"修改成功!系统将返回主界面..."<<endl;
		
			break;               //跳出while循环
		}
	}
Sleep(1500);   //延迟1.5秒
Interface();
}
 //删除车辆
void Manage_Vehicler::Delect_vehicle()       
{
	ifstream infile;
    infile.open("车辆信息.txt",ios::out);
    if(!infile) 
		{
			cout<<"error!文件打开失败!"<<endl;
			Sleep(1500);
			return;
	    }
	system("cls");//清空屏幕
	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(vehicle[j].num == i)   //车辆编号存在
				{
					if(top==1)
						vehicle[0].Type=0;      //就一辆车,使其变为0					
					else                    //top不等于1
					{
						if( vehicle[top - 1].Type == 1 )    //判断出此时vehicle数组里储存在最后一组的是1-大客车
						{
							Max_Passenger[j] = Max_Passenger[j+1];         //Max_Passenger载客量
						    vehicle[j].Base_fee = 2000;         
						    vehicle[j].OilKm = 0.1;       
						}
					    else if(vehicle[top - 1].Type == 2 )    //判断出此时vehicle数组里储存在最后一组的是2-小轿车
						{
							coach[j] = coach[top - 1];  
						    vehicle[j].Base_fee = 1000;   
						    vehicle[j].OilKm = 0.05;
						}
					    else if(vehicle[top - 1].Type == 3 )   //判断出此时vehicle数组里储存在最后一组的是3-卡车
						{
						    weight[j] = weight[j+1];
						    vehicle[j].Base_fee = 1500;
						    vehicle[j].OilKm = 0.15;
						}
						 else if(vehicle[top - 1].Type == 4 )   //判断出此时vehicle数组里储存在最后一组的是4-摩托车
						{
						    velocity[j] = velocity[j+1];
						    vehicle[j].Base_fee = 1500;
						    vehicle[j].OilKm = 0.15;
						}
						 else if(vehicle[top - 1].Type == 5 )   //判断出此时vehicle数组里储存在最后一组的是5-越野车
						{
						    height[j] = height[j+1];
						    vehicle[j].Base_fee = 1500;
						    vehicle[j].OilKm = 0.15;
						}
						vehicle[j].num = vehicle[j+1].num;          //使所有的数据均减一
						strcpy(vehicle[j].ID, vehicle[j+1].ID);
					    strcpy(vehicle[j].Vehicle_Drirer, vehicle[j+1].Vehicle_Drirer); 
					    vehicle[j].Emption_Time = vehicle[j+1].Emption_Time;        
					    vehicle[j].Type = vehicle[j+1].Type;        
					    vehicle[j].ODO = vehicle[j+1].ODO;            
					    vehicle[j].RoadFee = vehicle[j+1].RoadFee;  
					    vehicle[j].Total_cost = vehicle[j+1].Total_cost;
						vehicle[j+1].Type=0;
					}					
					a++;
					Write_vehicle();   //存盘函数
				}
			}
			if(a == 0)
				cout<<"此编号不存在,不能进行删除,请重新输入!"<<endl;
			else
			{
				cout<<"删除成功!系统将返回功能界面..."<<endl;
				break;
			}
		}
	}
Sleep(1500);   //延迟1.5秒
Interface();
}
  //车辆信息存盘
void Manage_Vehicler::Write_vehicle()       
{
	ofstream Write_vehicle;
    Write_vehicle.open("车辆信息.txt",ios::out);
    if(!Write_vehicle) 
		{
			cout<<"error!文件打开失败!"<<endl;
			Sleep(1500);
			return;
	    }
	system("cls");//清空屏幕	
	if(Write_vehicle)
	{
		for(int i = 0; i <=top; i++)
		{
			//Write_vehicle<<endl;
			Write_vehicle<<vehicle[i].num<<" "<<vehicle[i].ID<<" "<<vehicle[i].Vehicle_Drirer<<" "<<vehicle[i].Emption_Time<<" "<<vehicle[i].Type<<" ";
		    if(vehicle[i].Type == 1)
				Write_vehicle<<Max_Passenger[i];//存入   载客量
		    else if(vehicle[i].Type == 2)
		     	Write_vehicle<<coach[i];//存入    车厢数
		    else if(vehicle[i].Type == 3)
			    Write_vehicle<<weight[i];//存入    载重量
			else if(vehicle[i].Type == 4)
		     	Write_vehicle<<velocity[i];//存入    最大速度
		    else 
			    Write_vehicle<<height[i];//存入    栏板高
		    Write_vehicle<<" "<<vehicle[i].ODO<<" "<<vehicle[i].RoadFee<<" "<<vehicle[i].Base_fee<<" "<<vehicle[i].OilKm<<" "<<vehicle[i].Total_cost;
		}
	}
}
///读出车辆信息
void Manage_Vehicler::Read_vehicle()            
{ 
	int start=1; 
	ifstream Read_vehicle;
    Read_vehicle.open("车辆信息.txt",ios::in);
    if(!Read_vehicle) 
		{
			cout<<"error!文件打开失败!"<<endl;
			Sleep(1500);
			return;
	    }
	system("cls");//清空屏幕
	while(start)
	{
	    if(Read_vehicle)
		{
		    while(!Read_vehicle.eof())   //文件不结束,还有内容
			{
		        Read_vehicle>>vehicle[top].num>>vehicle[top].ID>>vehicle[top].Vehicle_Drirer>>vehicle[top].Emption_Time>>vehicle[top].Type;
		        if(vehicle[top].Type == 1)
			        Read_vehicle>>Max_Passenger[top];//读取   载客量
		        else if(vehicle[top].Type == 2)
			        Read_vehicle>>coach[top];//读取    车厢数
		        else if(vehicle[top].Type == 3)
			    Read_vehicle>>weight[top];//存入    载重量
			    else if(vehicle[top].Type == 4)
		     	Read_vehicle>>velocity[top];//存入    最大速度
		        else 
			    Read_vehicle>>height[top];//存入    栏板高
		        Read_vehicle>>vehicle[top].ODO>>vehicle[top].RoadFee>>vehicle[top].Base_fee>>vehicle[top].OilKm>>vehicle[top].Total_cost;
		        if(vehicle[top].Type==1||vehicle[top].Type==2||vehicle[top].Type==3||vehicle[top].Type==4||vehicle[top].Type==5)
		            top++;
			}
			Read_vehicle.close();           //关闭文件
	        break;
	    }
	    else 
		{
		    ofstream o("车辆信息.txt");      
		    o.close();
		}
	}
}
//主界面
void Manage_Vehicler::Interface()            
{	int c1,c2,c3,c4,c5;
    c1=c2=c3=c4=c5=0;	
 
	for(int j = 0; j <= top; j++)
	{
		if( vehicle[j].Type == 1 ) c1++;      //统计大客车的数量
		else if(vehicle[j].Type == 2) c2++;      //统计小轿车的数量
		else if(vehicle[j].Type==3) c3++;      //统计卡车的数量
		else if(vehicle[j].Type==4) c4++;      //统计摩托车的数量
		else if(vehicle[j].Type==5) c5++;      //统计越野车的数量
	}
	top=c1+c2+c3+c4+c5;
	system("color F0");
	cout<<"\n\n\n                    -------------------------------------------------------------"<<endl;
	cout<<"                    |***********************************************************|                   "<<endl;
	cout<<"                    |***********************************************************|                    "<<endl;
	cout<<"                    |                欢迎进入车辆管理系统                       |\t\t"<<endl;
	cout<<"                    |***********************************************************|                    "<<endl;
	cout<<"                    |***********************************************************|                    "<<endl;
	cout<<"                    |*                   1.添加车辆                            *|\t\t|\t总车辆\t"<<top<<endl;
	cout<<"                    |*                   2.查询车辆                            *|\t\t|\t大客车\t"<<c1<<endl;
	cout<<"                    |*                   3.显示车辆                            *|\t\t|\t小轿车\t"<<c2<<endl;
	cout<<"                    |*                   4.编辑车辆                            *|\t\t|\t卡 车 \t"<<c3<<endl;
	cout<<"                    |*                   5.删除车辆                            *|\t\t|\t摩托车\t"<<c4<<endl;
	cout<<"                    |*                   0.退出系统                            *|\t\t|\t越野车\t"<<c5<<endl;
	cout<<"                    |***********************************************************|                                   "<<endl;
		cout<<"                    -------------------------------------------------------------\n\n\n"<<endl;
	char i;
		cout<<"                    |请输入你需要操作的选项:";
	cin>>i;
	while(!(i=='1'||i=='2'||i=='3'||i=='4'||i=='5'||i=='0'))
	{
		cout<<"                    |输入错误,请重新输入:";
		cin>>i;           
	}
	switch(i)
	{
	case '1':Add_vehicle();break;
    case '2':Search_vehicle();break;
    case '3':Displays_information();break;
    case '4':Edit_vehicle();break;
    case '5':Delect_vehicle();break;
    case '0':flash();return;
	}
}
//开始欢迎界面美化,设置字体颜色和背景色
void SetColor(unsigned short ForeColor,unsigned short BackGroundColor)
{HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,(ForeColor%1)|(BackGroundColor%16*16));}
//程序开始欢迎使用信息
void shine()
{
    for(int i=0;i<16;i++)
    {
        int j=11;
    SetColor(i,j);cout<<"\n\n\n\n\n\n\n********************************************************************************************************************\n";
    SetColor(i,j);cout<<"*********************************************************************************************************************\n";
    SetColor(i,j);cout<<"**************************                               ************************************************************\n";
    SetColor(i,j);cout<<"**************************    欢迎进入车辆管理系统!!        **********************************************************\n";
    SetColor(i,j);cout<<"**************************    欢迎进入车辆管理系统!!        **********************************************************\n";
    SetColor(i,j);cout<<"**************************                               ************************************************************\n";
    SetColor(i,j);cout<<"*********************************************************************************************************************\n";
    SetColor(i,j);cout<<"*********************************************************************************************************************\n";
    
    
    //cout<<"i="<<i<<"j="<<j<<endl;
    _sleep(100);
    system("cls");
   }
	return;
}
//退出时显示
void flash()
{
    system("color F0");
    for(int i=0;i<16;i++)
    {
        int j=11;
SetColor(i,j);cout<<"\n\n\n\n\n\n\n********************************************************************************";
    SetColor(i,j);cout<<"********************************************************************************";
    SetColor(i,j);cout<<"**************************                              ************************";
    SetColor(i,j);cout<<"**************************    感谢您的使用!!          ************************";
    SetColor(i,j);cout<<"**************************                              ************************";
    SetColor(i,j);cout<<"********************************************************************************";
    SetColor(i,j);cout<<"********************************************************************************";
    //cout<<"i="<<i<<"j="<<j<<endl;
    _sleep(100);
    system("cls");
   }
	return;
}
//主函数
int main()
{   
	shine();
	system("color F0");//设置控制台字体颜色为黑色,背景白色
	system("date");
	Manage_Vehicler a;
	a.Interface();
	//~Manage_Vehicler();
	return 0;
}

四、课程设计报告

这个太多了,就不都贴出来了。如果广大网友与需要的话,可以自行下载在下面这个链接里!

c++课程设计:简单车辆管理系统源代码(600+行)+报告(20+页)+记录文档-其它文档类资源-CSDN文库

这是当时画的大流程图(不是很专业啊哈哈)

 最后,虽然摸鱼很快乐,但是deadline的时候好痛苦,尤其是报告,自己写,自己作图,认认真真写了两天多。愿世间再无课程设计。

还有,为什么大二的我要经历大四答辩的痛苦???

(个人看法,这种课程设计真的很没意思,我们只给了一周的时间,六七百行代码起步,如果自己写自己调,做出来就得一个星期吧,还得写报告,不借鉴都写不完。当然,可能能做到的大有人在,只是因为我太菜了,哭泣)

******************* 实践教学 ******************* 理工大学 计算机与通信学院 2011年春季学期 C程序设计 课程设计 题 目: 专业班级: 姓 名: 学 号: 指导教师: 成 绩:__________________ 摘 要 在车辆销售管理当中,人工统计的速度慢,并且容易出现差错。本车辆销售管理系统的自动化加速了统计工作,提高管理效率。本程序主要采用对输入的相关信息进行自动分析,然后按组分类将数据保存到数组,这样的结构化非常便于程序后续的统计工作。统计具体过程涉及到车辆进价售价及利润排序等问题,将于正文中详细介绍。本程序实现了所有设计要求。 关键词:文件;排序;统计;C语言 目 录 一、需求分析 1 二、总体设计 2 三、详细设计 3 3.1 详细设计思路 3 3.2 算法流程图 3 四、编码 7 五、测试 8 六、设计总结 12 参考文献 13 致谢 14 附录 15 一、需求分析 本程序将用到文件系统,list.txt文件内容作为数据源,其中单行内容代表一张纸条。程序运行后首先将文件系统的原始数据读取并保存到程序的结构体数组当中,所以应提供文件输入的操作;由于纸条数据零散,所以要对原始数据进行分类操作并提供一个数组用于保存分类信息;在程序中要进行统计工作,所以要提供显示、排序等操作;另外应提供键盘式选择菜单实现功能选择。 二、总体设计 图1 车辆销售管理系统功能模块图 三、详细设计 3.1 详细设计思路 1.main()主函数 设置了程序的流程,结束程序。 2.select ( ) 选择函数 选择所想运行的各个函数. 3.functionscan ( ) 输入函数输入便条的数据. 4.function1 ( ) 文件的数据输入函数多次输入数据 5. function2 ( ) 统计函数每种汽车销售量以及销售额的统计 6. functionpaixu2 ( )总额排序函数按销售额对汽车进行排序 7. function4() 总额统计函数统计每种汽车的总额 8. function5() 统计报表函数统计商品总额 9. function6() 清空文件函数 清空文件数据 3.2 算法流程图 3.2.1保存函数Save()算法流程图如图2所示。 图2 保存函数Save()算法流程图 3.2.2输入函数input()算法流程图如图3所示。 图3 输入函数的算法流程图 3.2.3 输出汽车信息 图4 输出汽车信息 四、编码 原始数据有汽车编码,车名,进价,售价,销售数量。年所以定义一个全局结构体数组scrip用于保存原始数据。然后定义全局变量n保存纸条数目,定义数组s用于保存分类后的信息。源代码见附录 五、测试 1输入新数据测试如图5所示 图5 输入新数据测试 2按车名查找数据测试如图6所示 图6按车名查找数据测试 3按编号查找数据测试如图7所示 图7 按编号查找数据测试 4按车辆名称删除数据测试如图8所示 图8车辆名称删除数据测试 5列出所有数据测试如图9所示 图9列出所有数据测试 6统计各产品的收益和总收益测试如图10所示 图10统计各产品的收益和总收益测试 7按车辆销售额的大小排序并输出排序后结果测试如图11所示 图11按车辆销售额的大小排序并输出排序后结果测试 六、设计总结 通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。 回顾起这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多的东西。同时不仅可以巩固了以前所学到的知识,而且学到了很多在书本上所没有学到过的知识,通过这次课程设计使我懂得了理论与实际相结合是很重要的。只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论。才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,通过同学的帮助,逐渐克服各种问题,并且从中学习到了很多的东西。通过这次编程。我发现了很多的不足。让我了解到自身的问题。让我不断的进步。 参考文献 1 C/C++程序设计,王连相等,中国科学技术出版社,2004 2 C语言程序设计,谭浩强,清华大学出版社,1999 3 C程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4 C语言实用程序荟萃,西安电子科技大学出版社,1993 5 C语言函数手册,机械工业出版社,1999 6 C语言的实际应用,安徽科学技术出版社,2000 致谢 首先感谢我们的C程序老师让我学会了很多有关于C程序的知识。让我认识到C程序的重要性。再感谢我们周老师对我们做这次课设的支持与帮助。没有她的帮助,我们很难完美的完成这次课设。最后谢谢我的搭档康绿玉同学帮我攻克了许多难关,康绿玉同学给了我很大的鼓励。 附录 #include "stdio.h" #include "string.h" #include #define N 30 //struct car/*定义车辆信息结构体*/ #define N 30 struct car/*定义车辆信息结构体*/ { int number;/*车辆编号*/ char name[10];/*车辆名称*/ int inprice;/*进价*/ int outprice;/*售价*/ int quantity;/*车辆数量*/ }car[N];/*结构体数组*/ void welcome()/*欢迎界面*/ { printf(" ^^^^^^^ ^^^^^^^\n"); printf(" --------------------welcome--------------------\n"); printf(" #* *#\n"); printf(" #* 销售管理系统 *#\n");/*销售管理系统*/ printf(" #* *#\n"); printf(" ---------=====!what do you want to do!=====---------\n"); printf("\n"); printf(" **~~ 1 输入新数据 ~~**\n");/*输入一组新数据*/ printf(" **~~ 2 插入数据 ~~**\n");/*插入一组新数据*/ printf(" **~~ 3 按车辆名称查找数据 ~~**\n");/*按车辆名称查找数据*/ printf(" **~~ 4 按车辆编号查找数据 ~~**\n");/*按车辆编号查找数据*/ printf(" **~~ 5 按车辆名称查找并删除数据 ~~**\n");/*按车辆名称查找并删除数据*/ printf(" **~~ 6 列出所有数据 ~~**\n");/*列出所有数据*/ printf(" **~~ 7 统计各产品的收益及总收益 ~~**\n");/*统计各产品的收益及总收益*/ printf(" **~~ 8 按车辆销售额从小到大排序并输出排序前后的结果 ~~**\n");/*按车辆销售额从小到大排序并输出排序前后的结果*/ printf("\n"); printf(" ----------------\n"); printf("\n"); printf("please input you choice(A number between 1 and 8):\n"); } void input1(int i)/*输入单组数据*/ { printf("请输入车辆数据:\n");/*输入数据*/ printf("请输入车辆编号:\n");/*输入车辆编号*/ scanf("%d",&car[i].number); printf("请输入车名:\n");/*输入车辆名称*/ scanf("%s",&car[i].name); printf("请输入车辆进价:\n");/*输入车辆进价*/ scanf("%d",&car[i].inprice); printf("请输入车辆售价:\n");/*输入车辆售价*/ scanf("%d",&car[i].outprice); printf("请输入车辆数量:\n");/*输入车辆数量*/ scanf("%d",&car[i].quantity); } void input()/*连续输入多组数据*/ { int i,m=0; char x; for(i=0;i<N;i++) if(strlen(car[i].name)!=0)/*计算已有的数据个数*/ m++; for(i=m;i<N-1;i++) { input1(i); x=getchar(); if(x=='y') continue;/*继续输入*/ else break;/*中断输入*/ } } int insert()/*添加一组新数据*/ { int i,m=0; for(i=0;i<N;i++) if(strlen(car[i].name)!=0)/*计算已有的数据个数*/ m++; input1(m);/*输入此数据*/ return 0; } void search_name()/*按车名查找*/ { char name[20]; int i,flag=0; printf("输入要查找的车辆的品名:");/*输入要查找的车辆的品名*/ scanf("%s",&name); for(i=0;i<N;i++) if(strcmp(car[i].name,name)==0)/*校验品名*/ { printf("the information of this name:\n"); printf("Number: %d\nName: %s\nInprice: %d\nOutprice: %d\nQuantity: %d\n",car[i].number,car[i].name,car[i].inprice,car[i].outprice,car[i].number);/*输出要查找的数据的编号、车名、进价、售价、数量*/ flag=1; } if(flag==0) printf("The name is not exist !\n");/*所输入的车名不存在*/ } Delete()/*通过车名查找并删除数据*/ { char n[10]; int i,j,b=0,m=0; for(i=0;i<N;i++) if(strlen(car[i].name)!=0)/*计算已有的数据个数*/ m++; printf("输入要删除的数据的名称");/*输入要删除的数据的名称*/ scanf("%s",&n); for(i=0;i<m;i++) if(strcmp(car[i].name,n)==0)/*校验名称*/ { for(j=i;j<=m;j++) car[j]=car[j+1]; b=1; } if(b==0) printf("没有要找的数据!\n");/*没有要找的数据*/ if(b==1) printf("成功删除数据!\n");/*成功删除数据*/ } void search_number()/*按车辆编号查找*/ { int number,i,flag=0; printf("请输入要查找的车辆编号:");/*输入要查找的车辆的编号*/ scanf("%d",&number); for(i=0;i<N;i++) if(car[i].number==number)/*校验车辆编号*/ { printf("the information of this number:\n"); printf("Number: %d\nName: %s\nInprice: %d\nOutprice: %d\nQuantity: %d\n",car[i].number,car[i].name,car[i].inprice,car[i].outprice,car[i].number);/*输出要查找的数据的编号、车名、进价、售价、数量*/ flag=1; } if(flag==0) printf("所暑促的编号不存在 !\n");/*所输入的编号不存在*/ } void profit()/*统计各车辆的收益及总收益的函数*/ { int p[N],pr=0,i,m=0; for(i=0;i<N;i++) if(strlen(car[i].name)!=0)/*计算已有的数据个数*/ m++; for(i=0;i<m;i++) { p[i]=(car[i].outprice-car[i].inprice)*car[i].quantity;/*计算车辆i的收益*/ pr=pr+p[i];/*计算总收益*/ printf("Name: %-7s\tNumber: %-7d\tprofit: %-10d\n",car[i].name,car[i].number,p[i]);/*输出车辆i的收益*/ } printf("Total Profit: %d\n",pr);/*输出总收益*/ } void sort()/*按销售额排序*/ { int i,j,t,s,m=0,b[N],a[N]; for(i=0;i<N;i++) if(strlen(car[i].name)!=0)/*计算已有的数据个数*/ m++; for(i=0;i<m;i++) { b[i]=car[i].outprice*car[i].quantity;/*将车辆销售额放入数组b[i]*/ a[i]=car[i].number;/*将车辆编号放入数组a[i]*/ } printf("Before sorted:\n"); for(i=0;i<m;i++) /*输出排序前的结果,编号和销售额*/ printf("Number: %-5d\tSale: %-10d\n",a[i],b[i]); for(i=1;i<m;i++) for(j=0;jb[j+1]) { t=b[j]; b[j]=b[j+1]; b[j+1]=t; /*冒泡法排序*/ s=a[j]; a[j]=a[j+1]; a[j+1]=s; } printf("After sorted:\n"); /*输出排序后的结果,编号和销售额*/ for(i=0;i<m;i++) printf("Number: %-5d\tSale: %-10d\n",a[i],b[i]); } void output()/*输出全部数据*/ { int i,m=0; for(i=0;i<N;i++) if(strlen(car[i].name)!=0)/*计算已有的数据个数*/ m++; printf("Disply all the data below:\n"); for(i=0;i<m;i++) { printf("The number: %d\n",car[i].number);/*输出车辆编号*/ printf("The name: %s\n",car[i].name);/*输出车辆名称*/ printf("The inprice: %d\n",car[i].inprice);/*输出车辆进价*/ printf("The outprice: %d\n",car[i].outprice);/*输出车辆售价*/ printf("The quantity: %d\n",car[i].quantity);/*输出车辆数量*/ printf("\n"); } } main()/*主函数*/ { int c; welcome(); while(1) { scanf("%d",&c);/*输入选择项*/ switch(c) { case 0:welcome();break;/*清屏并显示欢迎界面*/ case 1:input();printf("输入数据并提示输入0以返回欢迎界面查看选项!\n");break;/*输入数据并提示输入0以返回欢迎界面查看选项*/ case 2:insert();printf("添加一组新数据并提示输入0以返回欢迎界面查看选项!\n");break;/*添加一组新数据并提示输入0以返回欢迎界面查看选项*/ case 3:search_name();printf("按车名查找并提示输入0以返回欢迎界面查看选项!\n");break;/*按车名查找并提示输入0以返回欢迎界面查看选项*/ case 4:search_number();printf("按车辆编号查找并提示输入0以返回欢迎界面查看选项!\n");break;/*按车辆编号查找并提示输入0以返回欢迎界面查看选项*/ case 5:Delete();printf("按车名查找并删除数据并提示输入0以返回欢迎界面查看选项\n");break;/*按车名查找并删除数据并提示输入0以返回欢迎界面查看选项*/ case 6:output();printf("输出全部数据并提示输入0以返回欢迎界面查看选项\n");break;/*输出全部数据并提示输入0以返回欢迎界面查看选项*/ case 7:profit();printf("统计各车辆的收益及总收益并提示输入0以返回欢迎界面查看选项\n");break;/*统计各车辆的收益及总收益并提示输入0以返回欢迎界面查看选项*/ case 8:sort();printf("按销售额从小到大排序并提示输入0以返回欢迎界面查看选项!\n");break;/*按销售额从小到大排序并提示输入0以返回欢迎界面查看选项*/ } } }
车辆管理系统主要负责各种车辆的常规信息管理工作。 系统中的车辆主要有大客车、小轿车和卡车。每种车辆车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、 耗油量/公里、基本维护费用、养路费、累计总费用等信息。大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等 信息。 每台车辆当月总费用=油价*耗油量/公里+基本维护费用。 基本维护费用:客车:2000 元/月,小轿车:1000 元/月,卡车:1500 元/月 功能要求: (1)添加车辆:主要完成车辆信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再 添加新的数据。 (2)查询车辆:可按照三种方式来查询物品,分别为: 按车辆制造公司查询:输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!”; 按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”; 按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!”; (3)显示车辆信息库:输出当前车辆信息库中所有车辆信息,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除车辆:主要完成车辆信息的删除。如果当前车辆信息库为空,则提示“车辆信息库为空!”,并返回操作;否则,输入要删除的编号,根据编号删 除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。 (6)统计信息 输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。 (7)车辆信息存盘:将当前程序中的车辆信息存入文件中。 (8)读出车辆信息:从文件中将车辆信息读入程序。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值