use case diagram
This commit is contained in:
		@ -2,7 +2,10 @@
 | 
			
		||||
CC = gcc
 | 
			
		||||
CFLAGS = -g -Wall
 | 
			
		||||
 | 
			
		||||
all: ex1 ex2 ex3 ex4 ex5
 | 
			
		||||
all: ex1 ex2 ex3 ex4 ex5 ex6 ex7 group
 | 
			
		||||
 | 
			
		||||
group: group.o mergeSort.o
 | 
			
		||||
	$(CC) $(CFLAGS) -o $@ $+
 | 
			
		||||
 | 
			
		||||
%.o: %.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -o $@ $<
 | 
			
		||||
@ -16,7 +19,7 @@ clean:
 | 
			
		||||
mrproper: clean
 | 
			
		||||
	rm -f ex1
 | 
			
		||||
 | 
			
		||||
run: ex6
 | 
			
		||||
run: group
 | 
			
		||||
	./$<
 | 
			
		||||
 | 
			
		||||
graph: run
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								bac2/os/chap3/ex7.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								bac2/os/chap3/ex7.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
	printf("Hello World!\n");
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								bac2/os/chap3/group.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								bac2/os/chap3/group.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
#include "mergeSort.h"
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define printlist(s, x) printf("%s = [", #x); for (int i = 0; i < s; ++i) { printf("%d, ", x[i]); } printf("\b\b]\n");
 | 
			
		||||
 | 
			
		||||
#define listSize 10000000
 | 
			
		||||
int list[listSize];
 | 
			
		||||
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
	srand(time(NULL));
 | 
			
		||||
	for (int i = 0; i < listSize; ++i) {
 | 
			
		||||
		list[i] = rand();
 | 
			
		||||
	}
 | 
			
		||||
	/* printlist(listSize, list); */
 | 
			
		||||
 | 
			
		||||
	margs_t args = {list, 0, 9};
 | 
			
		||||
	merge_sort(&args);
 | 
			
		||||
	printlist(listSize, list);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										58
									
								
								bac2/os/chap3/mergeSort.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								bac2/os/chap3/mergeSort.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
			
		||||
#include "mergeSort.h"
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <pthread.h>
 | 
			
		||||
 | 
			
		||||
#define THREADS
 | 
			
		||||
 | 
			
		||||
pthread_t threads[THREADS];
 | 
			
		||||
 | 
			
		||||
void* merge_sort(void* args) {
 | 
			
		||||
	margs_t* f = (margs_t*) args;
 | 
			
		||||
	if(f->start < f->final) {
 | 
			
		||||
		pthread_t t1, t2;
 | 
			
		||||
		index middle = (f->start + f->final) / 2;
 | 
			
		||||
 | 
			
		||||
		margs_t args1 = {f->array, f->start, middle};
 | 
			
		||||
		assert(!pthread_create(&t1, NULL, merge_sort,  (void*) &args1));
 | 
			
		||||
		margs_t args2 = {f->array, middle+1, f->final};
 | 
			
		||||
		assert(!pthread_create(&t2, NULL, merge_sort,  (void*) &args2));
 | 
			
		||||
 | 
			
		||||
		assert(pthread_join(t1, NULL));
 | 
			
		||||
		assert(pthread_join(t2, NULL));
 | 
			
		||||
		merge(f->array, f->start, middle, f->final);
 | 
			
		||||
	}
 | 
			
		||||
	int *ret = 0;
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void merge(int array[], index start, index middle, index final) {
 | 
			
		||||
 | 
			
		||||
	length countL = middle - start + 1;
 | 
			
		||||
	int *arrayL = malloc(countL * sizeof(int));
 | 
			
		||||
	for(index currentL = 0; currentL < countL; currentL ++)
 | 
			
		||||
		arrayL[currentL] = array[start + currentL ];
 | 
			
		||||
 | 
			
		||||
	length countR = final - middle;
 | 
			
		||||
	int* arrayR = malloc(countR * sizeof(int));
 | 
			
		||||
	for(index currentR = 0; currentR < countR; currentR ++)
 | 
			
		||||
		arrayR[currentR] = array[middle + 1 + currentR ];
 | 
			
		||||
 | 
			
		||||
	index currentL, currentR, current;
 | 
			
		||||
	for(currentL = 0, currentR = 0, current = start;
 | 
			
		||||
		 	current <= final && currentL < countL && currentR < countR;
 | 
			
		||||
		   	current ++) 
 | 
			
		||||
		if(arrayL[currentL] <= arrayR[currentR])
 | 
			
		||||
			array[current] = arrayL[currentL++];
 | 
			
		||||
		else
 | 
			
		||||
			array[current] = arrayR[currentR++];
 | 
			
		||||
 | 
			
		||||
	while(currentR < countR)
 | 
			
		||||
		array[current++] = arrayR[currentR++];
 | 
			
		||||
	while(currentL < countL)
 | 
			
		||||
		array[current++] = arrayL[currentL++];
 | 
			
		||||
 | 
			
		||||
	free(arrayL);
 | 
			
		||||
	free(arrayR);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								bac2/os/chap3/mergeSort.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								bac2/os/chap3/mergeSort.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
typedef unsigned int index;
 | 
			
		||||
typedef unsigned int length;
 | 
			
		||||
 | 
			
		||||
typedef struct merge_args{
 | 
			
		||||
	int* array;
 | 
			
		||||
	index start;
 | 
			
		||||
	index final;
 | 
			
		||||
} margs_t;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void merge(int array[], index start, index middle, index final);
 | 
			
		||||
/* void merge_sort(int array [], index start , index final ); */
 | 
			
		||||
void* merge_sort(void*);
 | 
			
		||||
							
								
								
									
										32
									
								
								bac2/pgl/usecase/extension_messagerie.tex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								bac2/pgl/usecase/extension_messagerie.tex
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
\documentclass{article}
 | 
			
		||||
 | 
			
		||||
\usepackage[utf8]{inputenc}
 | 
			
		||||
\usepackage[T1]{fontenc}
 | 
			
		||||
\usepackage{amsmath, amsfonts, amssymb, amsthm}
 | 
			
		||||
\usepackage{tikz}
 | 
			
		||||
 | 
			
		||||
\author{Debucquoy Anthony}
 | 
			
		||||
\title{Extension messagerie}
 | 
			
		||||
 | 
			
		||||
\begin{document}
 | 
			
		||||
 | 
			
		||||
\section{Use case diagram}
 | 
			
		||||
 | 
			
		||||
\begin{center}
 | 
			
		||||
\resizebox{390pt}{!}{
 | 
			
		||||
	\input{./use_case_messagerie.tex}
 | 
			
		||||
}
 | 
			
		||||
\end{center}
 | 
			
		||||
 | 
			
		||||
\subsection{Answer topic}
 | 
			
		||||
\subsection{Create discutions}
 | 
			
		||||
\subsubsection{Send messages}
 | 
			
		||||
\subsection{Ask apointment}
 | 
			
		||||
\subsubsection{Export to calendar}
 | 
			
		||||
\subsection{Manage apointment}
 | 
			
		||||
\subsubsection{Propose new apointment}
 | 
			
		||||
\subsection{Create forum}
 | 
			
		||||
\subsubsection{Post topics}
 | 
			
		||||
\subsubsection{Post poll}
 | 
			
		||||
 | 
			
		||||
\end{document}
 | 
			
		||||
							
								
								
									
										39
									
								
								bac2/pgl/usecase/use_case_messagerie.uml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								bac2/pgl/usecase/use_case_messagerie.uml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
left to right direction
 | 
			
		||||
 | 
			
		||||
:Student: as s
 | 
			
		||||
:Teacher: as t
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package "Messagerie"{
 | 
			
		||||
 | 
			
		||||
(Answer topics) as at
 | 
			
		||||
(Ask apointement) as aa
 | 
			
		||||
(Create Discution) as cd
 | 
			
		||||
(Create Forum) as cf
 | 
			
		||||
(Manage apointement) as ma
 | 
			
		||||
 | 
			
		||||
s -- at
 | 
			
		||||
s -- aa
 | 
			
		||||
s -- cd
 | 
			
		||||
 | 
			
		||||
t -- cd
 | 
			
		||||
t -- cf
 | 
			
		||||
t -- ma
 | 
			
		||||
 | 
			
		||||
(Export to calendar) as etc
 | 
			
		||||
 | 
			
		||||
aa <-- etc : << extend >>
 | 
			
		||||
ma <-- etc : << extend >>
 | 
			
		||||
 | 
			
		||||
(Post topics) as pt
 | 
			
		||||
cf <-- pt : << include >>
 | 
			
		||||
pt <|-- (Post poll)
 | 
			
		||||
cd <-- (Send messages) : << include >>
 | 
			
		||||
 | 
			
		||||
ma <-- (Propose new appointment) : << exlude>> \n [refuse]
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
		Reference in New Issue
	
	Block a user