Witam ! Przygodę z C++ rozpocząłem około 3 miesiące temu, więc bardzo przepraszam jeśli nie będę wyrażał się zbyt profesjonalne.
A zatem mam za zadanie stworzyć bazę danych specjalistów, gdzie między innymi muszę wykorzystać struktury dynamiczne. Każdego specjalistę cechuje id , imię , nazwisko, ośrodek itp. W program muszą być takie funkcje jak dodawanie i usuwanie lekarzy z bazy i tym podobne. Spędziłem już trochę czasu nad programem, rozpisałem sobie na kartce jak to może wyglądać. I tak utworzyłem już strukturę oraz menu programu. W main'ie zainicjowałem tablicę dynamiczną o nazwie LK, po to by na wstępie zapytać użytkownika jak dużą chce mieć bazę danych. Zrobiłem już również funkcję (aczkolwiek jeszcze niepełną) dodawania specjalistów (wiem, że muszę to jeszcze dopracować [mam na to pomysł). W tej chwili chciałem sprawdzić czy wszystkie wcześniej wpisane dane poprawnie się wyświetlają (void lista_calosc) i w tym momencie mam na razie problem. Funkcja wyświetla tylko dane pierwszej osoby. Prosiłbym o znalezienie błędu w kodzie, jestem świadom, że popełniam w pewnym momencie błąd w przekazywaniu tablicy dynamicznej do funkcji. Dziękuję i czekam na odpowiedzi , pomoc i wskazów. Pozdrawiam
Jestem świadom, że jest jeszcze bałagan w kodzie .
#include <iostream>
#include<iomanip>
#include<cstdlib>
#include <cstring>
using namespace std;
const int D_ID = 3;
const int D_IM = 10;
const int D_NAZ = 20;
const int D_OS = 40; // ??
const int D_SPEC = 20;
const int D_OPI = 255;
struct lekarz{
char ID[D_ID];
char imie[D_IM];
char nazwisko[D_NAZ];
char osrodek[D_OS];
char specjalnosc[D_SPEC];
int ilpacj;
};
struct opinie{
char opinia[D_OPI];
char imie_kom[D_IM];
char naz_kom[D_NAZ];
};
// --------------MENU---------------------
void menu(lekarz LK[] , int liczba_spec );
void menu_gl (int opcja);
void menu_szuk();
void menu_kasuj();
//-------------FUNKCJE GLOWNE------------
void dodaj_lekarza (lekarz LK[]);
// ------------LISTA---------------------
void lista_naglowek();
void lista_lekarz(lekarz LK[]);
void lista_calosc(lekarz LK[], const int liczba_spec);
//----------------------------------------
int main() {
lekarz *LK;
int liczba_spec;
cout << "Podaj ilosc specjalistow (rezerwacja pamieci) : ";
cin >> liczba_spec;
LK = new lekarz[liczba_spec];
menu(LK, liczba_spec);
delete [] LK;
}
// ---------------------------------
//FUNKCJE ODPOWIADAJACE ZA MENU
void menu_gl(int opcja)
{
switch(opcja)
{
case 1: {
cout << endl;
cout << "BAZA DANYCH SPECJALISTOW" << endl;
cout << "------------------------" << endl;
cout << "MENU GLOWNE :" << endl;
cout << "------------------------" << endl;
cout << "1 - Dodaj Lekarza" << endl;
cout << "2 - Usun Lekarza" << endl;
cout << "3 - Edytuj dane lekarza" << endl;
cout << "4 - Wyszukaj lekarza" << endl;
cout << "5 - Lista lekarzy" << endl;
cout << "0 - Zakoncz prace" << endl;
cout << ">>";
break;
}
case 2: {
cout << endl;
cout << "MENU WYSZUKIWANIA : " << endl;
cout << "------------------------" << endl;
cout << "1 - Wyszukiwanie lekarza po nazwisku" << endl;
cout << "2 - Wyszukiwanie lekarza po specjalizacji" << endl;
cout << "3 - Wyszukiwanie po osrodku" << endl;
cout << "4 - Wyszukiwanie specjalisty z najmniejsza kolejka" << endl;
cout << "0 - Wyjdz do glownego menu" << endl;
cout << ">>";
break;
}
case 3: {
cout << endl;
cout << "MENU KASOWANIA : " << endl;
cout << "------------------------" << endl;
cout << "1 - Skasuj dane lekarza po nazwisku" << endl;
cout << "2 - Skasuj dane lekarza po ID" << endl;
cout << "0 - Wyjdz do glownego menu" << endl;
cout << ">>";
break;
}
}
}
void menu(lekarz LK[] , int liczba_spec )
{
int opcja_menu;
do{
menu_gl(1);
cin >> opcja_menu;
switch(opcja_menu)
{
case 1: dodaj_lekarza(LK);
break;
case 2: menu_kasuj();
break;
//case 3: menu_edycja();
//break;
case 4: menu_szuk();
break;
case 5: lista_calosc(LK , liczba_spec);
break;
}
}while(opcja_menu!=0);
}
void menu_szuk()
{
int opcja_menu;
do{
menu_gl(2);
cin >> opcja_menu;
switch(opcja_menu)
{
case 1: ;
break;
case 2: ;
break;
case 3: ;
break;
case 4: ;
break;
}
}while(opcja_menu !=0);
}
void menu_kasuj()
{
int opcja_menu;
do{
menu_gl(3);
cin >> opcja_menu;
switch(opcja_menu)
{
case 1: ;
break;
case 2: ;
break;
}
}while(opcja_menu !=0);
}
//-----------FUNKCJE GLOWNE---------------
void dodaj_lekarza (lekarz LK[])
{
int n;
cout << "Ilu chcesz dodac specjalistow ? (Podaj liczbe) : ";
cin >> n;
for(int i = 0 ; i < n ; i++)
{
cout << "ID : ";
cin >> LK[i].ID;
cout << "Imie : ";
cin >> LK[i].imie;
cout << "Nazwisko : ";
cin >> LK[i].nazwisko;
cout << "Osrodek : ";
cin >> LK[i].osrodek;
cout << "Specjalnosc : ";
cin >> LK[i].specjalnosc;
cout << "Ilosc pacjentow w kolejce : ";
cin >> LK[i].ilpacj;
}
}
//---------------LISTA------------------------
void lista_naglowek()
{
cout << endl;
cout << "|ID | IMIE | NAZWISKO | OSRODEK | SPECJALNOSC | KOLEJKA | " << endl;
cout << "_________________________________________________________________" << endl;
}
void lista_lekarz(lekarz LK[])
{
cout << setw(10) << LK->ID;
cout << setw(15) << LK->nazwisko;
cout << setw(10) << LK->osrodek;
cout << setw(15) << LK->specjalnosc;
cout << setw(10) << LK->ilpacj;
cout << endl;
}
void lista_calosc( lekarz LK[] , const int liczba_spec)
{
lista_naglowek();
for ( int i = 0 ; i < liczba_spec ; i++)
lista_lekarz(LK);
cout << "________________________________________________________________" << endl;
cout << "Ilosc lekarzy w bazie : " << liczba_spec << endl;
cout << endl;
}