00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TestDB.h"
00013
00014 void ListTable(DataBase *pBase)
00015 {
00016 printf("Id\t | Nom\t\t | Nb entree\t | Nb label\n");
00017
00018 for(int i = 0; i < pBase->GetNbTable(); i++)
00019 {
00020 printf("%i\t | %s\t | %i\t\t | %i\n", pBase->GetTableNo(i)->GetId(), pBase->GetTableNo(i)->GetName(),
00021 pBase->GetTableNo(i)->GetNbEntry(), pBase->GetTableNo(i)->GetNbData()
00022 );
00023 }
00024
00025 printf("\n");
00026 }
00027
00028 void GereTable(DataBaseTable *pTable)
00029 {
00030 char Key;
00031 char Name[1024];
00032 int Nb, i;
00033
00034 do
00035 {
00036 ConsoleClear();
00037
00038 printf("--- Gestion d'une table ---\n\n");
00039 printf("Nom de la table : %s\n", pTable->GetName());
00040 printf("Nombre d'entrees : %i\n", pTable->GetNbEntry());
00041 printf("Nombre de labels : %i\n\n", pTable->GetNbData());
00042 printf("\t a : Ajouter une entree\n");
00043 printf("\t d : Supprimer une entree\n");
00044 printf("\t g : Gerer une entree\n\n");
00045 printf("\t l : Ajouter un label\n");
00046 printf("\t r : Renomer un label\n");
00047 printf("\t s : Supprimer un label\n\n");
00048 printf("\t q : Pour retourner au menu principal\n\n");
00049 printf("\t Entrez le numero de l'action souhaiter : ");
00050
00051 fflush(stdin);
00052 Key = KeyGet();
00053
00054 ConsoleClear();
00055
00056 switch(Key)
00057 {
00058 case 'a' :
00059 printf("- Ajout d'une entree -\n\n");
00060
00061 i = pTable->GetNbEntry();
00062 pTable->AddEntry();
00063
00064 if((i + 1) == pTable->GetNbEntry())
00065 printf("Entree ajoutee");
00066 else
00067 printf("Ajout impossible");
00068 break;
00069
00070 case 'd' :
00071 printf("- Suppression d'une entree -\n\n");
00072
00073 ListEntry(pTable);
00074
00075 printf("\t Entrez l'Id de l'entree a supprimer, 0 pour quitter\n\n: ");
00076 scanf("%i",&Nb);
00077
00078 if(pTable->GetEntry(Nb))
00079 {
00080 i = pTable->GetNbEntry();
00081 pTable->DelEntry(Nb);
00082
00083 if((i - 1) == pTable->GetNbEntry())
00084 printf("\n\nEntree supprimee");
00085 else
00086 printf("\n\nSuppression impossible");
00087 }
00088 else
00089 printf("\n\nEntree non trouvee");
00090
00091 break;
00092
00093 case 'g' :
00094 printf("- Gestion d'une entree -\n\n");
00095
00096 ListEntry(pTable);
00097
00098 printf("\t Entrez l'Id de l'entree a gerer, 0 pour quitter\n\n: ");
00099 scanf("%i",&Nb);
00100
00101 if(Nb)
00102 GereEntry(pTable, Nb);
00103 else
00104 printf("\n\nEntree non trouvee");
00105
00106 break;
00107
00108 case 'l' :
00109 printf("- Ajout d'un label -\n\n");
00110
00111 for(i = 0; i < pTable->GetNbData(); i++)
00112 printf("%i\t : %s\n", i, pTable->GetLabel(i));
00113
00114 printf("\t Entrez le nom, 0 pour quitter\n\n: ");
00115 scanf("%s", Name);
00116
00117 if(Name)
00118 {
00119 if(pTable->AddLabel(Name))
00120 printf("\n\nLabel ajouter");
00121 else
00122 printf("\n\nAjout impossible");
00123 }
00124
00125 break;
00126
00127 case 'r' :
00128 printf("- Renomage d'un label -\n\n");
00129
00130 for(i = 0; i < pTable->GetNbData(); i++)
00131 printf("%i\t : %s\n", i + 1, pTable->GetLabel(i));
00132
00133 printf("\t Entrez l'id, 0 pour quitter\n\n: ");
00134 scanf("%i", &Nb);
00135
00136 if(Nb && (Nb <= pTable->GetNbData()))
00137 {
00138 printf("\t Entrez le nom, 0 pour quitter\n\n: ");
00139 scanf("%s", Name);
00140
00141 if(*Name != '0')
00142 {
00143 if(pTable->SetLabel(Nb - 1, Name))
00144 printf("\n\nLabel renomer");
00145 else
00146 printf("\n\nRenomage impossible");
00147 }
00148 }
00149
00150 break;
00151
00152 case 's' :
00153 printf("- Suppression d'un label -\n\n");
00154
00155 for(i = 0; i < pTable->GetNbData(); i++)
00156 printf("%i\t : %s\n", i + 1, pTable->GetLabel(i));
00157
00158 printf("\t Entrez le nom, 0 pour quitter\n\n: ");
00159 scanf("%s", Name);
00160
00161 if(*Name != '0')
00162 {
00163 if(pTable->DelLabel(Name))
00164 printf("\n\nLabel supprimer");
00165 else
00166 printf("\n\nSuppression impossible");
00167 }
00168
00169 break;
00170 }
00171
00172 if(Key != 'q')
00173 {
00174 printf("\n\nPressez \'entree\' pour continuer\n");
00175 KeyGet();
00176 }
00177 }
00178 while(Key != 'q');
00179 }
00180
00181 void ListEntry(DataBaseTable *pTable)
00182 {
00183 int i, j;
00184
00185 printf("Id\t | Size:Data (%i fois)\n\n\t", pTable->GetNbData());
00186
00187 for(i = 0; i < pTable->GetNbData(); i++)
00188 printf(" | %s\t", pTable->GetLabel(i));
00189
00190 printf("\n");
00191
00192 for(i = 0; i < pTable->GetNbEntry(); i++)
00193 {
00194 printf("%i\t", pTable->GetEntryNo(i)->GetId());
00195
00196 for(j = 0; j < pTable->GetNbData(); j++)
00197 printf(" | %i:%s\t", pTable->GetDataNo(i, j)->GetSize(), pTable->GetDataNo(i, j)->GetData());
00198
00199 printf("\n");
00200 }
00201 printf("\n");
00202 }
00203
00204 void GereEntry(DataBaseTable *pTable, int iId)
00205 {
00206 int Nb;
00207 char Name[1024];
00208 char Buffer[1024];
00209
00210 do
00211 {
00212 ConsoleClear();
00213
00214 printf("--- Gestion d'une entree ---\n\n");
00215
00216 printf("Nom de la table : %s\n", pTable->GetName());
00217 printf("Id de l'entree : %i\n\n", iId);
00218
00219 for(Nb = 0; Nb < pTable->GetNbData(); Nb++)
00220 printf("%i \t %s\t %i : %s\n", Nb + 1, pTable->GetLabel(Nb), pTable->GetData(iId, Nb)->GetSize(), pTable->GetData(iId, Nb)->GetData());
00221
00222 printf("\n\t Entrez l'id de la data a modifiee, 0 pour quitter\n\n: ");
00223
00224 scanf("%i", &Nb);
00225
00226 ConsoleClear();
00227
00228 if(Nb && (Nb <= pTable->GetNbData()))
00229 {
00230 printf("Ancienne data \'%s\': \n", pTable->GetLabel(Nb - 1));
00231 printf("%i : %s\n\n", pTable->GetData(iId, Nb - 1)->GetSize(), pTable->GetData(iId, Nb - 1)->GetData());
00232 printf("\t Entrez la nouvelle data\n\n: ");
00233
00234 scanf("%s", Buffer);
00235
00236 if(pTable->GetData(iId, Nb - 1)->SetData(Buffer) == strlen(Buffer))
00237 printf("\n\nData modifiee");
00238 else
00239 printf("\n\nModification impossible");
00240
00241 printf("\n\nPressez \'entree\' pour continuer\n");
00242 KeyGet();
00243 }
00244 }
00245 while(Nb);
00246 }
00247