commit
This commit is contained in:
parent
df2be62fe2
commit
e015c4a017
3 changed files with 307 additions and 234 deletions
146
conf.c
146
conf.c
|
@ -3,12 +3,15 @@
|
|||
#include <string.h>
|
||||
#include "conf.h"
|
||||
|
||||
int findConfId(ptConf confChain) {
|
||||
int findConfId(ptConf confChain)
|
||||
{
|
||||
ptConf px = confChain;
|
||||
int max = 0;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
if (px -> id > max) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
if (px->id > max)
|
||||
{
|
||||
max = px->id;
|
||||
}
|
||||
|
||||
|
@ -18,7 +21,8 @@ int findConfId(ptConf confChain) {
|
|||
return max + 1;
|
||||
}
|
||||
|
||||
ptConf newConfChain() {
|
||||
ptConf newConfChain()
|
||||
{
|
||||
ptConf confChain = (ptConf)malloc(sizeof(tConf));
|
||||
|
||||
confChain->next = (ptConf)malloc(sizeof(tConf));
|
||||
|
@ -28,10 +32,12 @@ ptConf newConfChain() {
|
|||
return confChain;
|
||||
}
|
||||
|
||||
void addConf(ptConf confChain, int id, char title[], char speaker[], int day, int month, int year) {
|
||||
void addConf(ptConf confChain, int id, char title[], char speaker[], int day, int month, int year)
|
||||
{
|
||||
ptConf px = confChain;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
|
@ -49,17 +55,21 @@ void addConf(ptConf confChain, int id, char title[], char speaker[], int day, in
|
|||
px->next->next = NULL;
|
||||
}
|
||||
|
||||
void removeConf(ptConf confChain, int id) {
|
||||
void removeConf(ptConf confChain, int id)
|
||||
{
|
||||
ptConf px = confChain;
|
||||
|
||||
while (px -> next != NULL && px -> next -> id != id) {
|
||||
while (px->next != NULL && px->next->id != id)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
if (px -> next != NULL && px -> next -> id == id) {
|
||||
if (px->next != NULL && px->next->id == id)
|
||||
{
|
||||
ptListenerList py = px->next->listeners->next;
|
||||
|
||||
while (py -> next != NULL) {
|
||||
while (py->next != NULL)
|
||||
{
|
||||
removeConfFromConfList(py->listener->confs, px->next);
|
||||
py = py->next;
|
||||
}
|
||||
|
@ -70,12 +80,15 @@ void removeConf(ptConf confChain, int id) {
|
|||
}
|
||||
}
|
||||
|
||||
int findListenerId(ptListener listenerChain) {
|
||||
int findListenerId(ptListener listenerChain)
|
||||
{
|
||||
ptListener px = listenerChain;
|
||||
int max = 0;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
if (px -> id > max) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
if (px->id > max)
|
||||
{
|
||||
max = px->id;
|
||||
}
|
||||
|
||||
|
@ -85,7 +98,8 @@ int findListenerId(ptListener listenerChain) {
|
|||
return max + 1;
|
||||
}
|
||||
|
||||
ptListener newListenerChain() {
|
||||
ptListener newListenerChain()
|
||||
{
|
||||
ptListener listenerChain = (ptListener)malloc(sizeof(tListener));
|
||||
|
||||
listenerChain->prev = NULL;
|
||||
|
@ -97,14 +111,17 @@ ptListener newListenerChain() {
|
|||
return listenerChain;
|
||||
}
|
||||
|
||||
int addListener(ptListener listenerChain, int id, char name[], int age, int level) {
|
||||
if (level < 0 || level > 5) {
|
||||
int addListener(ptListener listenerChain, int id, char name[], int age, int level)
|
||||
{
|
||||
if (level < 0 || level > 5)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
ptListener px = listenerChain;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
|
@ -122,17 +139,21 @@ int addListener(ptListener listenerChain, int id, char name[], int age, int leve
|
|||
return 0;
|
||||
}
|
||||
|
||||
void removeListener(ptListener listenerChain, int id) {
|
||||
void removeListener(ptListener listenerChain, int id)
|
||||
{
|
||||
ptListener px = listenerChain;
|
||||
|
||||
while (px -> next != NULL && px -> next -> id != id) {
|
||||
while (px->next != NULL && px->next->id != id)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
if (px -> next != NULL && px -> next -> id == id) {
|
||||
if (px->next != NULL && px->next->id == id)
|
||||
{
|
||||
ptConfList py = px->next->confs->next;
|
||||
|
||||
while (py -> next != NULL) {
|
||||
while (py->next != NULL)
|
||||
{
|
||||
removeListenerFromListenerList(py->conf->listeners, px->next);
|
||||
py = py->next;
|
||||
}
|
||||
|
@ -144,10 +165,12 @@ void removeListener(ptListener listenerChain, int id) {
|
|||
}
|
||||
}
|
||||
|
||||
void addConfToConfList(ptConfList confList, ptConf conf, int grade) {
|
||||
void addConfToConfList(ptConfList confList, ptConf conf, int grade)
|
||||
{
|
||||
ptConfList px = confList;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
|
@ -157,35 +180,42 @@ void addConfToConfList(ptConfList confList, ptConf conf, int grade) {
|
|||
px->next->next = NULL;
|
||||
}
|
||||
|
||||
void removeConfFromConfList(ptConfList confList, ptConf conf) {
|
||||
void removeConfFromConfList(ptConfList confList, ptConf conf)
|
||||
{
|
||||
ptConfList px = confList;
|
||||
|
||||
while (px -> next != NULL && px -> next -> conf != conf) {
|
||||
while (px->next != NULL && px->next->conf != conf)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
if (px -> next != NULL && px -> next -> conf == conf) {
|
||||
if (px->next != NULL && px->next->conf == conf)
|
||||
{
|
||||
ptConfList tmp = px->next->next;
|
||||
free(px->next);
|
||||
px->next = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
void printConfList(ptConfList confList) {
|
||||
void printConfList(ptConfList confList)
|
||||
{
|
||||
ptConfList px = confList;
|
||||
|
||||
printf("Participation aux conferences : ");
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
printf("%s(%d) ", px->conf->title, px->grade);
|
||||
px = px->next;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void addListenerToListenerList(ptListenerList listenerList, ptListener listener, int grade) {
|
||||
void addListenerToListenerList(ptListenerList listenerList, ptListener listener, int grade)
|
||||
{
|
||||
ptListenerList px = listenerList;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
|
@ -195,33 +225,40 @@ void addListenerToListenerList(ptListenerList listenerList, ptListener listener,
|
|||
px->next->next = NULL;
|
||||
}
|
||||
|
||||
void removeListenerFromListenerList(ptListenerList listenerList, ptListener listener) {
|
||||
void removeListenerFromListenerList(ptListenerList listenerList, ptListener listener)
|
||||
{
|
||||
ptListenerList px = listenerList;
|
||||
|
||||
while (px -> next != NULL && px -> next -> listener != listener) {
|
||||
while (px->next != NULL && px->next->listener != listener)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
if (px -> next != NULL && px -> next -> listener == listener) {
|
||||
if (px->next != NULL && px->next->listener == listener)
|
||||
{
|
||||
ptListenerList tmp = px->next->next;
|
||||
free(px->next);
|
||||
px->next = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
void printListenerList(ptListenerList listenerList) {
|
||||
void printListenerList(ptListenerList listenerList)
|
||||
{
|
||||
ptListenerList px = listenerList;
|
||||
|
||||
printf("Participants : ");
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
printf("%s(%d) ", px->listener->name, px->grade);
|
||||
px = px->next;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
int participateToConf(ptConf confChain, ptListener listenerChain, int confId, int listenerId, int grade) {
|
||||
if (grade < 0 || grade > 5) {
|
||||
int participateToConf(ptConf confChain, ptListener listenerChain, int confId, int listenerId, int grade)
|
||||
{
|
||||
if (grade < 0 || grade > 5)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -229,23 +266,28 @@ int participateToConf(ptConf confChain, ptListener listenerChain, int confId, in
|
|||
ptListener py = listenerChain;
|
||||
ptListenerList pz;
|
||||
|
||||
while (px -> next != NULL && px -> id != confId) {
|
||||
while (px->next != NULL && px->id != confId)
|
||||
{
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
pz = px->listeners->next;
|
||||
while (pz -> next != NULL) {
|
||||
if (pz -> listener -> id == listenerId) {
|
||||
while (pz->next != NULL)
|
||||
{
|
||||
if (pz->listener->id == listenerId)
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
pz = pz->next;
|
||||
}
|
||||
|
||||
while (py -> next != NULL && py -> id != listenerId) {
|
||||
while (py->next != NULL && py->id != listenerId)
|
||||
{
|
||||
py = py->next;
|
||||
}
|
||||
|
||||
if (px -> id != confId || py -> id != listenerId) {
|
||||
if (px->id != confId || py->id != listenerId)
|
||||
{
|
||||
return -2;
|
||||
}
|
||||
|
||||
|
@ -255,29 +297,35 @@ int participateToConf(ptConf confChain, ptListener listenerChain, int confId, in
|
|||
return 0;
|
||||
}
|
||||
|
||||
int confGradeAvg(ptConf conf) {
|
||||
int confGradeAvg(ptConf conf)
|
||||
{
|
||||
ptListenerList px = conf->listeners->next;
|
||||
int total = 0, nb = 0;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
total += px->grade;
|
||||
nb++;
|
||||
px = px->next;
|
||||
}
|
||||
|
||||
if (nb != 0) {
|
||||
if (nb != 0)
|
||||
{
|
||||
return total / nb;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int confParticipations(ptConf conf) {
|
||||
int confParticipations(ptConf conf)
|
||||
{
|
||||
ptListenerList px = conf->listeners->next;
|
||||
int nb = 0;
|
||||
|
||||
while (px -> next != NULL) {
|
||||
while (px->next != NULL)
|
||||
{
|
||||
nb++;
|
||||
px = px->next;
|
||||
}
|
||||
|
|
12
conf.h
12
conf.h
|
@ -3,7 +3,8 @@
|
|||
|
||||
struct listenerList;
|
||||
|
||||
typedef struct conf {
|
||||
typedef struct conf
|
||||
{
|
||||
int id;
|
||||
char title[30];
|
||||
char speaker[20];
|
||||
|
@ -14,13 +15,15 @@ typedef struct conf {
|
|||
struct conf *next;
|
||||
} tConf;
|
||||
|
||||
typedef struct confList {
|
||||
typedef struct confList
|
||||
{
|
||||
struct conf *conf;
|
||||
int grade;
|
||||
struct confList *next;
|
||||
} tConfList;
|
||||
|
||||
typedef struct listener {
|
||||
typedef struct listener
|
||||
{
|
||||
int id;
|
||||
char name[20];
|
||||
int age;
|
||||
|
@ -30,7 +33,8 @@ typedef struct listener {
|
|||
struct listener *next;
|
||||
} tListener;
|
||||
|
||||
typedef struct listenerList {
|
||||
typedef struct listenerList
|
||||
{
|
||||
struct listener *listener;
|
||||
int grade;
|
||||
struct listenerList *next;
|
||||
|
|
|
@ -3,17 +3,20 @@
|
|||
#include <string.h>
|
||||
#include "conf.h"
|
||||
|
||||
void readConfs(ptConf confChain) {
|
||||
void readConfs(ptConf confChain)
|
||||
{
|
||||
FILE *file = fopen("./data/confs", "r");
|
||||
char line[100];
|
||||
char *token;
|
||||
|
||||
if (file == NULL) {
|
||||
if (file == NULL)
|
||||
{
|
||||
printf("ça marche pas.");
|
||||
return;
|
||||
}
|
||||
|
||||
while (fgets(line, sizeof(line), file)) {
|
||||
while (fgets(line, sizeof(line), file))
|
||||
{
|
||||
int id = atoi(strtok(line, ","));
|
||||
char *title = strtok(NULL, ",");
|
||||
char *speaker = strtok(NULL, ",");
|
||||
|
@ -27,17 +30,20 @@ void readConfs(ptConf confChain) {
|
|||
fclose(file);
|
||||
}
|
||||
|
||||
void readListeners(ptListener listenerChain) {
|
||||
void readListeners(ptListener listenerChain)
|
||||
{
|
||||
FILE *file = fopen("./data/listeners", "r");
|
||||
char line[100];
|
||||
char *token;
|
||||
|
||||
if (file == NULL) {
|
||||
if (file == NULL)
|
||||
{
|
||||
printf("ça marche pas.");
|
||||
return;
|
||||
}
|
||||
|
||||
while (fgets(line, sizeof(line), file)) {
|
||||
while (fgets(line, sizeof(line), file))
|
||||
{
|
||||
int id = atoi(strtok(line, ","));
|
||||
char *name = strtok(NULL, ",");
|
||||
int day = atoi(strtok(NULL, ","));
|
||||
|
@ -48,21 +54,25 @@ void readListeners(ptListener listenerChain) {
|
|||
fclose(file);
|
||||
}
|
||||
|
||||
void readRelations(ptConf confChain, ptListener listenerChain) {
|
||||
void readRelations(ptConf confChain, ptListener listenerChain)
|
||||
{
|
||||
FILE *file = fopen("./data/relations", "r");
|
||||
char line[100];
|
||||
char *token1;
|
||||
char *token2;
|
||||
|
||||
if (file == NULL) {
|
||||
if (file == NULL)
|
||||
{
|
||||
printf("ça marche pas.");
|
||||
return;
|
||||
}
|
||||
|
||||
while (fgets(line, sizeof(line), file)) {
|
||||
while (fgets(line, sizeof(line), file))
|
||||
{
|
||||
int confId = atoi(strtok(line, ":"));
|
||||
|
||||
while ((token1 = strtok(NULL, ";")) != NULL && (token2 = strtok(NULL, ",")) != NULL) {
|
||||
while ((token1 = strtok(NULL, ";")) != NULL && (token2 = strtok(NULL, ",")) != NULL)
|
||||
{
|
||||
participateToConf(confChain, listenerChain, confId, atoi(token1), atoi(token2));
|
||||
}
|
||||
}
|
||||
|
@ -70,44 +80,55 @@ void readRelations(ptConf confChain, ptListener listenerChain) {
|
|||
fclose(file);
|
||||
}
|
||||
|
||||
void saveConf(ptConf confChain) {
|
||||
void saveConf(ptConf confChain)
|
||||
{
|
||||
FILE *file = fopen("./data/confs", "w");
|
||||
ptConf px = confChain;
|
||||
while(px -> next != NULL){
|
||||
while (px->next != NULL)
|
||||
{
|
||||
fprintf(file, "%d,%s,%s,%d,%d,%d\n", px->id, px->title, px->speaker, px->day, px->month, px->year);
|
||||
px = px->next;
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
void saveListeners(ptListener listenerChain) {
|
||||
void saveListeners(ptListener listenerChain)
|
||||
{
|
||||
FILE *file = fopen("./data/listeners", "w");
|
||||
ptListener px = listenerChain;
|
||||
while(px -> next != NULL){
|
||||
while (px->next != NULL)
|
||||
{
|
||||
fprintf(file, "%d,%s,%d,%d\n", px->id, px->name, px->age, px->level);
|
||||
px = px->next;
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
void saveRelations(ptConf confChain) {
|
||||
void saveRelations(ptConf confChain)
|
||||
{
|
||||
FILE *file = fopen("./data/relations", "w");
|
||||
ptConf px = confChain;
|
||||
ptListenerList py;
|
||||
printf("test");
|
||||
while(px -> next != NULL){
|
||||
while (px->next != NULL)
|
||||
{
|
||||
printf("test");
|
||||
py = px->listeners->next;
|
||||
|
||||
if (py -> next != NULL) {
|
||||
if (py->next != NULL)
|
||||
{
|
||||
fprintf(file, "%d:", px->id);
|
||||
}
|
||||
|
||||
while (py -> next != NULL) {
|
||||
while (py->next != NULL)
|
||||
{
|
||||
fprintf(file, "%d;%d", py->listener->id, py->grade);
|
||||
if (py -> next -> next != NULL) {
|
||||
if (py->next->next != NULL)
|
||||
{
|
||||
fprintf(file, ",");
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(file, "\n");
|
||||
}
|
||||
py = py->next;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue