C++車両管理システム課程設計

7853 ワード

タイトル:
車両管理システムは主に各種車両の通常情報管理を担当する.システムの中の車両は主に大型バス、乗用車、トラックがある.各車両には車両番号、ナンバープレート、車両製造会社、車両購入時間、車両型番(大型バス、乗用車、トラック)、総キロ数、燃費/キロ、基本メンテナンス費用、養路費、累計総費用などの情報がある.大型バスには乗客数(最大乗客数)情報、乗用車には箱数(両ボックスまたは三ボックス)情報、トラックには積載重量などの情報がある.1台あたりの当月の総費用=原油価格*燃費/キロ+基本メンテナンス費用.基本メンテナンス費用:客車:2000元/月、乗用車:1000元/月、トラック:1500元/月.
(1)車両の追加:主に車両情報の追加を完了し、番号が一意であることを要求する.重複する番号が追加されると、データに重複を追加し、追加をキャンセルするように要求されます.車両情報ライブラリがいっぱいになると、新しいデータを追加できないことを示すプロンプトが表示されます.
(2)車両を照会する:3つの方法で物品を照会することができ、それぞれ:車両製造会社によって照会する:車両製造会社を入力し、照会した情報を出力し、この記録が存在しなければ、「当該車両製造会社は存在しない!」番号別クエリー:番号を入力し、クエリーされた情報を出力します.レコードが存在しない場合は、「この番号は存在しません!」とプロンプトが表示されます.カテゴリ別クエリー:カテゴリを入力し、クエリーした情報を出力し、レコードが存在しない場合は「このカテゴリには車両がありません!」とプロンプトします.
(3)車両情報ライブラリを表示:現在の車両情報ライブラリ内のすべての車両情報を出力し、各レコードが1行を占める.
(4)編集機能:クエリー結果に基づいて対応するレコードを変更し、番号の一意性に注意する.
(5)車両の削除:主に車両情報の削除を完了する.現在の車両リポジトリが空の場合は、「車両リポジトリが空です!」というメッセージが表示されます.操作を返します.そうでない場合は、削除する番号を入力し、番号に基づいて車両のレコードを削除します.この番号が車両リポジトリにない場合は、「この番号は存在しません」というメッセージが表示されます.
(6)統計情報:現在の車両情報庫における総物品数を出力し、車両種別別に現在の車両情報庫における各種別の物品数を統計して表示する.
(7)車両情報格納盤:現在のプログラムにおける車両情報をファイルに格納する.
(8)車両情報の読み出し:ファイルから車両情報をプログラムに読み込む.
 
要件:
1、C++言語でプログラム設計を実現する;
2、クラスとオブジェクト配列を利用して情報のデータ構造設計を実現する.
3、システムの各機能モジュールは関数の形式で実現することを要求する.
4、インタフェースが友好的(良好なヒューマンマシンインタラクション)、プログラムに必要な注釈を加える.
#include
#include
#include
#include
#include
using namespace std;
#define N 20          //       20
#define OilPrice 8.0  //  8   
class Manager;
class Cars
{
private:
	int num;        //  
    int pnum;       //   
    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()         //////////    
{
	int a = 0, x, y;
    while(1)
	{
		if(top < N)
		{
            cout<>x;
	        for(int j = 0; j < top; j++)
			{
				if ( car[j].num == x )     //    
				{
					cout<>car[top].pnum;
                cout<>car[top].made;
                cout<>car[top].time;
				cout<>car[top].RoadFee;
                cout<>car[top].type;
				while(!(car[top].type==1||car[top].type==2||car[top].type==3)) //         1-3
				{
					cout<>car[top].type;
				}
                cout<>car[top].km;
                if( car[top].type == 1 )    //   1-   
				{
					cout<>people[top];
                    car[top].cost = 2000;
					car[top].OilKm = 0.1;
				}
				else if( car[top].type == 2 )   //   2-   
				{
					cout<>coach[top];
                    car[top].cost = 1000;
					car[top].OilKm = 0.05;
				}
				else                            //   3-  
				{
					cout<>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<>y;
				while(!( y==1 || y==2 ))
				{
					cout<>y;
				}
                if(y == 2)
				{
					cout<>i;
		cout<>t;}
	else if(i == '2')
	{cout<>n;}
	else if(i == '3')
	{cout<>m;}
	for(int j = 0; j < top; j++)
		if(strcmp(car[j].made, t) == 0||car[j].num == n||car[j].type == m)
		{cout<>choose;
		if(choose == 1)
		edit();
	}
	else
	{
		if(i=='1') cout<>i;
		for(j = 0; j < top; j++)
		{
			if(car[j].num == i)  //        
			{
				cout<>car[j].pnum;
                cout<>car[j].made;
                cout<>car[j].time;
                cout<>car[j].type;
				while(!(car[j].type==1||car[j].type==2||car[j].type==3))
				{
					cout<>car[j].type;
				}
                cout<>car[j].km;
				cout<>car[j].RoadFee;
                if( car[j].type == 1 )    //   1-   
				{
					cout<>people[j];
                    car[j].cost = 2000;
					car[j].OilKm = 0.1;
				}
				else if( car[j].type == 2 )   //   2-   
				{
					cout<>coach[j];
                    car[j].cost = 1000;
					car[j].OilKm = 0.05;
				}
				else     //   3-  
				{
					cout<>weight[j];
                    car[j].cost = 1500;
					car[j].OilKm = 0.15;
				}
				write();
				a++;
			}
		}
		if(a == 0)
			cout<>i;
			for(int j = 0; j < top; j++)
			{
				if(car[j].num == i)   //      
				{
					if(top==1)
						car[0].type=0;
					else
					{
						if( car[top - 1].type == 1 )    //     car            1-   
						{
							people[j] = people[top - 1];///////// (         ) ///////
						    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   //     car            3-  
						{
						    weight[j] = weight[top - 1];
						    car[j].cost = 1500;
						    car[j].OilKm = 0.15;
						}
						car[j].num = car[top - 1].num;          ///////// (      ) ///////
					    car[j].pnum = car[top - 1].pnum;        ///////// (      ) ///////
					    strcpy(car[j].made, car[top - 1].made); ///////// (      ) ///////
					    car[j].time = car[top - 1].time;        ///////// (      ) ///////
					    car[j].type = car[top - 1].type;        ///////// (      ) ///////
					    car[j].km = car[top - 1].km;            ///////// (      ) ///////
					    car[j].RoadFee = car[top - 1].RoadFee;  ///////// (      ) ///////
					    car[j].AllCount = car[top-1].AllCount;  ///////// (         ) ///////
					}
					top--;   //            ,      
					a++;
					write();
				}
			}
			if(a == 0)
				cout<>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;
	top=0;
	read();
	system("cls");
	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<>i;
	while(!(i=='1'||i=='2'||i=='3'||i=='4'||i=='5'||i=='0'))
	{
		cout<