djgonzo
March 19th, 2006, 07:58 PM
the following is a console vehicle maintenance program. We cannot seem to get the edit function working correctly: when we wish to delete a vehicle it does not work. Try out the program and see if it works for you. I would appreciate any advice...thanx in advanx
//============================================================================
// Vehicle Maintenance Tracking Application
// -----------------------------------------
//
// Application Overview:
// This application allows the user to input up to 20 different vehicles that will be tracked.
// Each Vehicle will have the data entered.......
//
//
//==============================================================================
// Header Files
#include "stdafx.h"
#include <iostream>
#include <string>
#include <iomanip>
// Namespace
using namespace std;
// Structs
struct vehicleType
{
int number;
int mileage;
string plate;
string vin;
string model;
};
// Prototypes
void mainMenu(int& parUserChoice);
void initVehicles(vehicleType parVehicles[]);
void QuickCheck(vehicleType parVehicles[]);
void addVehicle(vehicleType parVehicles[]);
void EditVehicle(vehicleType parVehicles[]);
void ListVehicles(vehicleType parVehicles[]);
// Global Variables
char x;
int main (void)
{
// Local Variable Declaration
int userChoice = 0; // User main menu selection
vehicleType vehicles[20]; // Create 20 element struct
initVehicles(vehicles);
do
{
mainMenu(userChoice);
switch (userChoice)
{
case 0:
//Exit
break;
case 1:
addVehicle(vehicles);
break;
case 2:
EditVehicle(vehicles); //call EditVehicle function
break;
case 3:
QuickCheck(vehicles);//call QuickCheck function
break;
case 4:
ListVehicles(vehicles); //call Reports function
system("PAUSE");
break;
}
}while (userChoice != 0);
}
void mainMenu(int& parUserChoice)
{ // Begin mainMenu
do // Displays menu until user chooses to quit the program
{ // Begin do loop
// Clear Screen
system("cls");
// List Main Menu
cout << " Main Menu" << endl;
cout << "===========" << endl;
cout << "1 - Enter New" << endl;
cout << "2 - Edit" << endl;
cout << "3 - Quick Check" << endl;
cout << "4 - Display Report" << endl;
cout << "0 - Exit" << endl;
cout << "Enter your selection(1-4, 0 to exit): ";
cin >> parUserChoice;
} while (parUserChoice > 4 || parUserChoice <0); // Continues until user enters a valid selection
} // End mainMenu
void addVehicle(vehicleType parVehicles[])
{ // Begin addVehicle
bool found = false;
for (int counter = 0;counter<20;counter++) // Loop to count through vehicle records
{
if (parVehicles[counter].number == 0) // Checks whether data record exists
{
parVehicles[counter].number = counter + 1;
cout << "Enter Model: ";
cin >> parVehicles[counter].model;
cout << "Enter VIN: ";
cin >> parVehicles[counter].vin;
cout << "Enter Plate Number: ";
cin >> parVehicles[counter].plate;
cout << "Enter Mileage (Whole numbers only): ";
cin >> parVehicles[counter].mileage;
counter = 20;
found = true;
}
}
if (!found) // Used if all struct elements have data in them
{
cout << "Vehicle capacity is full" << endl;
system("pause");
}
}
void initVehicles(vehicleType parVehicles[])
{
// Init all vehicle numbers to 0
for (int counter = 0;counter < 20;counter++)
{
parVehicles[counter].number=0;
}
}
void EditVehicle(vehicleType parVehicles[])
{ // Begin EditVehicle()
int EditSelect = 0; // User selection of which vehicle attribute to edit
int VehicleSelect = 0; // User selection of which vehicle to edit
if(parVehicles[0].number == 0) // Checks to see if there is at least one record in the system
{
cout << "There are no vehicles in the database to edit.";
system("PAUSE");
}
else // Executed if there is at least one vehicle in the system
{
cout << "Which vehicle would you like to edit?" << endl << endl;
ListVehicles(parVehicles);
cout << "Please make your selection (1-20) and hit Enter:";
cin >> VehicleSelect;
system("cls");
cout << "What would you like to edit on the vehicle?" << endl;
cout << "0 - Nothing/Exit Without Changes" << endl;
cout << "1 - Model" << endl;
cout << "2 - VIN" << endl;
cout << "3 - License Plate" << endl;
cout << "4 - Mileage" << endl;
cout << "5 - Remove Vehicle" << endl;
cin >> EditSelect;
switch(EditSelect) // User selection of which vehicle item to edit
{
case 0:
break; // Quit Edit
case 1:
cout << "Old Model: " << parVehicles[VehicleSelect-1].model << "\tNew Model: ";
cin >> parVehicles[VehicleSelect-1].model;
break;
case 2:
cout << "Old VIN: " << parVehicles[VehicleSelect-1].vin << "\tNew VIN: ";
cin >> parVehicles[VehicleSelect-1].vin;
break;
case 3:
cout << "Old Plate: " << parVehicles[VehicleSelect-1].plate << "\tNew Plate: ";
cin >> parVehicles[VehicleSelect-1].plate;
break;
case 4:
cout << "Old Mileage: " << parVehicles[VehicleSelect-1].mileage << "\tNew Mileage: ";
cin >> parVehicles[VehicleSelect-1].mileage;
break;
case 5:
cout << "Deleting Vehicle: " << parVehicles[VehicleSelect-1].model << " ";
parVehicles[VehicleSelect-1].number = NULL;
//parVehicles[VehicleSelect-1].model = " ";
//parVehicles[VehicleSelect-1].vin = " ";
//parVehicles[VehicleSelect-1].plate = " ";
//parVehicles[VehicleSelect-1].mileage = 0;
system("cls");
ListVehicles(parVehicles);
system("PAUSE");
break;
} // End switch statement
} // End else statement
} // End EditVehicle()
void ListVehicles(vehicleType parVehicles[])
{
if(parVehicles[0].number == 0)
{
cout << "You have not entered any vehicles in the database.";
system("PAUSE");
}
else
{
cout << "Number\tModel\tVIN\tPlate\tMileage" << endl << endl;
for(int a=0; a<20; a++)
{ // Begin for loop
if(parVehicles[a].number == 0)
{ // Begin if statement
cout << a+1 << "\tEmpty Record" << endl; // Prints "Empty Record if a structure element does not contain info
} // End if statement
else // Executes if there is at least one vehicle record in the system
{ // Begin else statement
cout << parVehicles[a].number;
cout << "\t" << parVehicles[a].model;
cout << "\t" << parVehicles[a].vin;
cout << "\t" << parVehicles[a].plate;
cout << "\t" << parVehicles[a].mileage << endl;
} // End else statement
} // End for loop
} // End else statement
} // End ListVehicles function
void QuickCheck(vehicleType parVehicles[])
{
int a = 0;
int status = 0;
cout << "Which vehicle would you like to check?" << endl << endl;
ListVehicles(parVehicles);
cout << "Please make your selection (1-20) and hit Enter:";
cin >> a;
a = a -1;
system("cls");
if((parVehicles[a].mileage >= 45000) && (parVehicles[a].mileage < 50000))
{
cout << "Your vehicle will require a 50,000 mile checkup soon.\n";
status = 1;
}
else if (parVehicles[a].mileage >=50000)
{
cout << "The vehicle you have selected is due for a 50,000 mile checkup.\n";
status = 1;
}
if((parVehicles[a].mileage >= 25000) && (parVehicles[a].mileage < 30000))
{
cout << "Your vehicle will require a new air filter soon.\n";
status = 1;
}
else if (parVehicles[a].mileage >=30000)
{
cout << "The vehicle you have selected is due for a new air filter.\n";
status = 1;
}
if((parVehicles[a].mileage >= 70000) && (parVehicles[a].mileage < 75000))
{
cout << "Your vehicle will require a 50,000 mile checkup soon.\n";
status = 1;
}
else if (parVehicles[a].mileage >=75000)
{
cout << "The vehicle you have selected is due for transmission checkup.\n";
status = 1;
}
if (status == 0)
cout << "Your vehicle is currently up to date with maintenance.\n";
system("PAUSE");
}
//============================================================================
// Vehicle Maintenance Tracking Application
// -----------------------------------------
//
// Application Overview:
// This application allows the user to input up to 20 different vehicles that will be tracked.
// Each Vehicle will have the data entered.......
//
//
//==============================================================================
// Header Files
#include "stdafx.h"
#include <iostream>
#include <string>
#include <iomanip>
// Namespace
using namespace std;
// Structs
struct vehicleType
{
int number;
int mileage;
string plate;
string vin;
string model;
};
// Prototypes
void mainMenu(int& parUserChoice);
void initVehicles(vehicleType parVehicles[]);
void QuickCheck(vehicleType parVehicles[]);
void addVehicle(vehicleType parVehicles[]);
void EditVehicle(vehicleType parVehicles[]);
void ListVehicles(vehicleType parVehicles[]);
// Global Variables
char x;
int main (void)
{
// Local Variable Declaration
int userChoice = 0; // User main menu selection
vehicleType vehicles[20]; // Create 20 element struct
initVehicles(vehicles);
do
{
mainMenu(userChoice);
switch (userChoice)
{
case 0:
//Exit
break;
case 1:
addVehicle(vehicles);
break;
case 2:
EditVehicle(vehicles); //call EditVehicle function
break;
case 3:
QuickCheck(vehicles);//call QuickCheck function
break;
case 4:
ListVehicles(vehicles); //call Reports function
system("PAUSE");
break;
}
}while (userChoice != 0);
}
void mainMenu(int& parUserChoice)
{ // Begin mainMenu
do // Displays menu until user chooses to quit the program
{ // Begin do loop
// Clear Screen
system("cls");
// List Main Menu
cout << " Main Menu" << endl;
cout << "===========" << endl;
cout << "1 - Enter New" << endl;
cout << "2 - Edit" << endl;
cout << "3 - Quick Check" << endl;
cout << "4 - Display Report" << endl;
cout << "0 - Exit" << endl;
cout << "Enter your selection(1-4, 0 to exit): ";
cin >> parUserChoice;
} while (parUserChoice > 4 || parUserChoice <0); // Continues until user enters a valid selection
} // End mainMenu
void addVehicle(vehicleType parVehicles[])
{ // Begin addVehicle
bool found = false;
for (int counter = 0;counter<20;counter++) // Loop to count through vehicle records
{
if (parVehicles[counter].number == 0) // Checks whether data record exists
{
parVehicles[counter].number = counter + 1;
cout << "Enter Model: ";
cin >> parVehicles[counter].model;
cout << "Enter VIN: ";
cin >> parVehicles[counter].vin;
cout << "Enter Plate Number: ";
cin >> parVehicles[counter].plate;
cout << "Enter Mileage (Whole numbers only): ";
cin >> parVehicles[counter].mileage;
counter = 20;
found = true;
}
}
if (!found) // Used if all struct elements have data in them
{
cout << "Vehicle capacity is full" << endl;
system("pause");
}
}
void initVehicles(vehicleType parVehicles[])
{
// Init all vehicle numbers to 0
for (int counter = 0;counter < 20;counter++)
{
parVehicles[counter].number=0;
}
}
void EditVehicle(vehicleType parVehicles[])
{ // Begin EditVehicle()
int EditSelect = 0; // User selection of which vehicle attribute to edit
int VehicleSelect = 0; // User selection of which vehicle to edit
if(parVehicles[0].number == 0) // Checks to see if there is at least one record in the system
{
cout << "There are no vehicles in the database to edit.";
system("PAUSE");
}
else // Executed if there is at least one vehicle in the system
{
cout << "Which vehicle would you like to edit?" << endl << endl;
ListVehicles(parVehicles);
cout << "Please make your selection (1-20) and hit Enter:";
cin >> VehicleSelect;
system("cls");
cout << "What would you like to edit on the vehicle?" << endl;
cout << "0 - Nothing/Exit Without Changes" << endl;
cout << "1 - Model" << endl;
cout << "2 - VIN" << endl;
cout << "3 - License Plate" << endl;
cout << "4 - Mileage" << endl;
cout << "5 - Remove Vehicle" << endl;
cin >> EditSelect;
switch(EditSelect) // User selection of which vehicle item to edit
{
case 0:
break; // Quit Edit
case 1:
cout << "Old Model: " << parVehicles[VehicleSelect-1].model << "\tNew Model: ";
cin >> parVehicles[VehicleSelect-1].model;
break;
case 2:
cout << "Old VIN: " << parVehicles[VehicleSelect-1].vin << "\tNew VIN: ";
cin >> parVehicles[VehicleSelect-1].vin;
break;
case 3:
cout << "Old Plate: " << parVehicles[VehicleSelect-1].plate << "\tNew Plate: ";
cin >> parVehicles[VehicleSelect-1].plate;
break;
case 4:
cout << "Old Mileage: " << parVehicles[VehicleSelect-1].mileage << "\tNew Mileage: ";
cin >> parVehicles[VehicleSelect-1].mileage;
break;
case 5:
cout << "Deleting Vehicle: " << parVehicles[VehicleSelect-1].model << " ";
parVehicles[VehicleSelect-1].number = NULL;
//parVehicles[VehicleSelect-1].model = " ";
//parVehicles[VehicleSelect-1].vin = " ";
//parVehicles[VehicleSelect-1].plate = " ";
//parVehicles[VehicleSelect-1].mileage = 0;
system("cls");
ListVehicles(parVehicles);
system("PAUSE");
break;
} // End switch statement
} // End else statement
} // End EditVehicle()
void ListVehicles(vehicleType parVehicles[])
{
if(parVehicles[0].number == 0)
{
cout << "You have not entered any vehicles in the database.";
system("PAUSE");
}
else
{
cout << "Number\tModel\tVIN\tPlate\tMileage" << endl << endl;
for(int a=0; a<20; a++)
{ // Begin for loop
if(parVehicles[a].number == 0)
{ // Begin if statement
cout << a+1 << "\tEmpty Record" << endl; // Prints "Empty Record if a structure element does not contain info
} // End if statement
else // Executes if there is at least one vehicle record in the system
{ // Begin else statement
cout << parVehicles[a].number;
cout << "\t" << parVehicles[a].model;
cout << "\t" << parVehicles[a].vin;
cout << "\t" << parVehicles[a].plate;
cout << "\t" << parVehicles[a].mileage << endl;
} // End else statement
} // End for loop
} // End else statement
} // End ListVehicles function
void QuickCheck(vehicleType parVehicles[])
{
int a = 0;
int status = 0;
cout << "Which vehicle would you like to check?" << endl << endl;
ListVehicles(parVehicles);
cout << "Please make your selection (1-20) and hit Enter:";
cin >> a;
a = a -1;
system("cls");
if((parVehicles[a].mileage >= 45000) && (parVehicles[a].mileage < 50000))
{
cout << "Your vehicle will require a 50,000 mile checkup soon.\n";
status = 1;
}
else if (parVehicles[a].mileage >=50000)
{
cout << "The vehicle you have selected is due for a 50,000 mile checkup.\n";
status = 1;
}
if((parVehicles[a].mileage >= 25000) && (parVehicles[a].mileage < 30000))
{
cout << "Your vehicle will require a new air filter soon.\n";
status = 1;
}
else if (parVehicles[a].mileage >=30000)
{
cout << "The vehicle you have selected is due for a new air filter.\n";
status = 1;
}
if((parVehicles[a].mileage >= 70000) && (parVehicles[a].mileage < 75000))
{
cout << "Your vehicle will require a 50,000 mile checkup soon.\n";
status = 1;
}
else if (parVehicles[a].mileage >=75000)
{
cout << "The vehicle you have selected is due for transmission checkup.\n";
status = 1;
}
if (status == 0)
cout << "Your vehicle is currently up to date with maintenance.\n";
system("PAUSE");
}