Projet в обследовании птиц, имеющих проблемы с кодом. как хранить данные, как системы баз данных

Как я могу сохранить свои данные в следующих категориях: вода, вода и т. Д. Когда я даю информацию о водоплавающих птицах, то я даю информацию о домашних птицах. Но вторая информация переопределяет первую. Есть ли способ хранения данных для категорий?

/* declaring header files */
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include <fstream>
#include <bits/stdc++.h>
#include <string>

using namespace std;
class Bird{

private:
char name[50],colour[50],nature[50],location[50];
float living_duration;

public:
int code;
int set_info(){
char name='\0';
char colour='\0';
char nature='\0';
char location='\0';
float living_duration=0.0;
}
int get_info(){
cout<<"\nEnter bird's name: ";
cin>>name;
cout<<"Colour: ";
cin>>colour;
cout<<"Nature: ";
cin>>nature;
cout<<"Location: ";
cin>>location;
cout<<"Living Duration: ";
cin>>living_duration;
cout<<"Bird's code: ";
cin>>code;
}
int display_info(){
cout<<"\nBird's name: "<<name;
cout<<"\nColour     : "<<colour;
cout<<"\nNature     : "<<nature;
cout<<"\nlocation     : "<<location;
cout<<"\nLiving Duration  : "<<living_duration<<" year";
cout<<"\nCode       : "<<code;
}
}obj[100];

int main(){
int i,j,k,n,m;
do{
cout<<"\n\nWhat do you want to do\n1.Input bird's information"<<"\n2.Display\n3.Search\n4.Exit."<<"\n\nChoose appropriate number: ";
cin>>n;

switch(n){
case 1://bird information
cout<<"Please Select Birds Category"<<endl;
cout<<"------------------"<<endl;
cout<<"1)Water\n2)Domestic\n3)prey\n4)treebased\n5)flightless\n6)migratory\n"<<endl;
cin>>m;
switch(m){
case 1:
cout<<"Enter the number of bird how many to input: ";
cin>>j;
for(i=1;i<=j;i++){
cout<<"\nInformation of Bird "<<i<<".\n";
obj[i].get_info();
}
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
default:
cout<<"Wrong choice!!\nPlease enter correct number.";
break;
}case 2://display
for(i=1;i<=j;i++)
{
cout<<"\nBird no "<<i<<".\n";
obj[i].display_info();
cout<<"\n";
}
break;

case 3://search
cout<<"\nEnter the bird code: ";
cin>>k;

for(i=1;i<=j;i++)
{
if(k==obj[i].code)
{
cout<<"\nBird no "<<i<<".\n";
obj[i].display_info();
break;
}
}
if(k!=obj[i].code)
cout<<"Wrong code input...\n";
break;

case 4://exit
break;

default:
cout<<"Wrong choice!!\nPlease enter correct number.";
break;
}

}while(n!=4);
}

1

Решение

Вы должны разделить свои понятия между птицами данные и контейнер данных.

В реляционный база данных, вы бы имели таблицы. Пусть столбцы таблицы будут представлены элементами данных структуры. Запись (строка) таблицы будет экземпляром структуры записи:

class Bird
{
public:
std::string name;
std::string colour;
std::string nature;
std::string location;
float       living_duration;
};

Для контейнера или таблицы вы можете использовать std::vector:
std::vector<Bird> bird_table;

Многие реляционные базы данных также включают индексные таблицы ускорить поиск. Таблица индексов будет содержать пары, ключ (или значение столбца) и индекс в std::vector, Язык C ++ имеет удобный контейнер, называемый std::map:

std::map<string, unsigned int> name_index;

string Параметр представляет тип ключа или столбца.
unsigned int Параметр представляет индекс в базе данных (внешний ключ a.k.a).

Чтобы получить запись Bird по имени, вы сначала обращаетесь к таблице индексов, а затем к вектору:

   unsigned int database_index = name_index["crow"];
Bird  crow = database[index];
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]