AP SEMESTRE 1
AP 3 site internet Nintendo en html :
apparence prévu :

résultat final :

AP 6 gestion du BDE :
namespace AP_6_BDE_Vivien_Lecouffe
{
internal class Program
{
static void Main(string[] args)
{
int S = 0;
int M = 0;
int P = 0;
int G = 0;
bool fin = false;
bool AP_fin = false;
bool VP_fin = false;
bool VSP_fin = false;
int quantite = 0;
int prix_unit = 0;
while (fin == false)
{
Console.WriteLine("Que voulez-vous faire ? ");
//La partie qui gère l'ajout de produit en stock:
if (Console.ReadLine() == "AP")
{
while (AP_fin == false)
{
Console.WriteLine("Quelle type de produit voulez-vous ajouté : ");
if ((Console.ReadLine()) == "S")
{
Console.WriteLine("Combien voulez-vous ajouté de Sweat : ");
S = S + int.Parse(Console.ReadLine());
Console.WriteLine("voulez-vous saisir un autre produit ? ");
if (Console.ReadLine() == "NON")
{
AP_fin = true;
}
}
else if ((Console.ReadLine()) == "M")
{
Console.WriteLine("Combien voulez-vous ajouté de Mug : ");
M = M + int.Parse(Console.ReadLine());
Console.WriteLine("voulez-vous saisir un autre produit ? ");
if (Console.ReadLine() == "NON")
{
AP_fin = true;
}
}
else if ((Console.ReadLine()) == "P")
{
Console.WriteLine("Combien voulez-vous ajouté de Polo : ");
P = P + int.Parse(Console.ReadLine());
Console.WriteLine("voulez-vous saisir un autre produit ? ");
if (Console.ReadLine() == "NON")
{
AP_fin = true;
}
}
else if ((Console.ReadLine()) == "G")
{
Console.WriteLine("Combien voulez-vous ajouté de Gourde : ");
G = G + int.Parse(Console.ReadLine());
Console.WriteLine("voulez-vous saisir un autre produit ? ");
if (Console.ReadLine() == "NON")
{
AP_fin = true;
}
}
else
{
Console.WriteLine("Je ne comprend pas la demande, rééssayer avec : S, M, P ou G");
}
}
Console.WriteLine("Voulez-vous effectué une autre demande ?");
if (Console.ReadLine() == "NON")
{
fin = true;
}
else
{
AP_fin = true;
}
}
//La partie qui gère la vente de produit:
else if (Console.ReadLine() == "VP")
{
Console.WriteLine("Que voulez-vous acheté ?");
if ((Console.ReadLine()) == "S")
{
Console.WriteLine("Combien voulez-vous acheté de Sweat?");
quantite = int.Parse(Console.ReadLine());
if (S > quantite)
{
S = S - quantite;
}
else
{
Console.WriteLine("Il n'y a pas assez de Sweat en stock.");
}
Console.WriteLine("Quel est le prix unitaire");
prix_unit = int.Parse(Console.ReadLine());
Console.WriteLine("vous avez acheté " + quantite + " sweat pour " + prix_unit + " unité");
}
else if ((Console.ReadLine()) == "M")
{
Console.WriteLine("Combien voulez-vous acheté de Mug?");
if (M > int.Parse(Console.ReadLine()))
{
quantite = int.Parse(Console.ReadLine());
M = M - quantite;
}
else
{
Console.WriteLine("Il n'y a pas assez de Mug en stock.");
}
Console.WriteLine("Quel est le prix unitaire");
prix_unit = int.Parse(Console.ReadLine());
Console.WriteLine("vous avez acheté " + quantite + " Mug pour " + prix_unit + " unité");
}
else if ((Console.ReadLine()) == "P")
{
Console.WriteLine("Combien voulez-vous acheté de Polo?");
if (P > int.Parse(Console.ReadLine()))
{
quantite = int.Parse(Console.ReadLine());
P = P - quantite;
}
else
{
Console.WriteLine("Il n'y a pas assez de Polo en stock.");
}
Console.WriteLine("Quel est le prix unitaire");
prix_unit = int.Parse(Console.ReadLine());
Console.WriteLine("vous avez acheté " + quantite + " Polo pour " + prix_unit + " unité");
}
else if ((Console.ReadLine()) == "G")
{
Console.WriteLine("Combien voulez-vous acheté de Gourde?");
if (G > int.Parse(Console.ReadLine()))
{
quantite = int.Parse(Console.ReadLine());
G = G - quantite;
}
else
{
Console.WriteLine("Il n'y a pas assez de Gourde en stock.");
}
Console.WriteLine("Quel est le prix unitaire");
prix_unit = int.Parse(Console.ReadLine());
Console.WriteLine("vous avez acheté " + quantite + " Gourde pour " + prix_unit + " de prix unité");
}
}
//La partie qui gère la visialisation du stock:
else if (Console.ReadLine() == "VSP")
{
{
Console.WriteLine("il y a " + S + " Sweat, " + M + " Mug, " + P + " Polo, " + G + " Gourde.");
}
Console.WriteLine("Voulez-vous effectué une autre demande ?");
if (Console.ReadLine() == "NON")
{
fin = true;
}
}
//La partie qui gère le msg d'erreur:
else
{
Console.WriteLine("Je ne comprend pas la demande, rééssayer avec : AP, VP ou VSP");
}
}
}
}
}
AP 8 calcule adresse IP et masque sous-réseaux :
page 1 :

code :
namespace AP_8_calcul_adresse_ip_et_masque_sous_réseaux
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string ip_bin = "plop";
int numBase = 2;
// conversion :
private void btn_conversion_Click(object sender, EventArgs e)
{
string ip_bin1 = Convert.ToString(Global.ip1, numBase).PadLeft(8,'0');
string ip_bin2 = Convert.ToString(Global.ip2, numBase).PadLeft(8,'0');
string ip_bin3 = Convert.ToString(Global.ip3, numBase).PadLeft(8,'0');
string ip_bin4 = Convert.ToString(Global.ip4, numBase).PadLeft(8,'0');
tb_ip_binaire.Text = ip_bin1 + "." + ip_bin2 + "." + ip_bin3 + "." + ip_bin4;
btn_suivant.Enabled = true;
}
// bouton pour passer a l'autre page :
private void btn_suivant_Click(object sender, EventArgs e)
{
etape2 e2 = new etape2();
e2.Show();
}
// bouton pour valider la saisi de l'adresse ip :
private void btn_valid_ip_Click(object sender, EventArgs e)
{
Global.ad_ip = tb_ip.Text.Trim();
string[] ip = Global.ad_ip.Split('.');
if (ip.Length != 4)
{
MessageBox.Show("Le format de l'adresse IP n'est pas bon (4 octets).");
}
if (!int.TryParse(ip[0], out Global.ip1) || Global.ip1 < 0 || Global.ip1 > 255 ||
!int.TryParse(ip[1], out Global.ip2) || Global.ip2 < 0 || Global.ip2 > 255 ||
!int.TryParse(ip[2], out Global.ip3) || Global.ip3 < 0 || Global.ip3 > 255 ||
!int.TryParse(ip[3], out Global.ip4) || Global.ip4 < 0 || Global.ip4 > 255)
{
MessageBox.Show("Chaque octet doit être entre 0 et 255.");
}
else
{
MessageBox.Show("Adresse IP valide !");
}
}
// bouton pour valider la saisi du cidr :
private void btn_valid_cidr_Click(object sender, EventArgs e)
{
Global.cidr = tb_cidr.Text.Trim();
if (!int.TryParse(Global.cidr, out int cidrValue))
{
MessageBox.Show("Le CIDR doit être un entier (ex: 24).");
}
if (cidrValue < 0 || cidrValue > 32)
{
MessageBox.Show("Le CIDR doit être compris entre 0 et 32 pour IPv4.");
}
else
{
MessageBox.Show("CIDR valide !");
}
}
}
}
page 2 :

code :
namespace AP_8_calcul_adresse_ip_et_masque_sous_réseaux
{
public partial class etape2 : Form
{
public etape2()
{
InitializeComponent();
}
// affiche les résultat de la 1er page :
private void etape2_Load(object sender, EventArgs e)
{
tb_ad_ip.Text = Global.ad_ip;
tb_cidr.Text = Global.cidr;
}
// bouton pour afficher le masque :
private void btn_masque_Click(object sender, EventArgs e)
{
string bits = new string('1', Global.int_cidr).PadRight(32, '0');
string b1 = bits.Substring(0, 8);
string b2 = bits.Substring(8, 8);
string b3 = bits.Substring(16, 8);
string b4 = bits.Substring(24, 8);
tb_mask_binaire.Text = b1 + "." + b2 + "." + b3 + "." + b4;
Global.d1 = Convert.ToInt32(b1, 2);
Global.d2 = Convert.ToInt32(b2, 2);
Global.d3 = Convert.ToInt32(b3, 2);
Global.d4 = Convert.ToInt32(b4, 2);
tb_mask_decimal.Text = Global.d1 + "." + Global.d2 + "." + Global.d3 + "." + Global.d4;
btn_adresse_reseau.Enabled = true;
}
// bouton pour afficher l'adresse réseau :
private void btn_adresse_reseau_Click(object sender, EventArgs e)
{
int r1 = Global.ip1 & Global.d1;
int r2 = Global.ip2 & Global.d2;
int r3 = Global.ip3 & Global.d3;
int r4 = Global.ip4 & Global.d4;
tb_adresse_reseau.Text = r1 + "." + r2 + "." + r3 + "." + r4;
btn_nb_hotes.Enabled = true;
}
// bouton pour afficher le nombre d'hotes :
private void btn_nb_hotes_Click(object sender, EventArgs e)
{
int hostBits = 32 - Global.int_cidr;
double nbHosts = Math.Pow(2, hostBits) - 2;
if (Global.int_cidr == 31 || Global.int_cidr == 32)
{
nbHosts = 0;
}
tb_nb_hotes.Text = nbHosts.ToString();
btn_classe.Enabled = true;
}
// bouton pour afficher la classe de l'adresse ip :
private void btn_classe_Click(object sender, EventArgs e)
{
string classe = "";
if (Global.ip1 >= 0 && Global.ip1 <= 127)
classe = "A";
else if (Global.ip1 >= 128 && Global.ip1 <= 191)
classe = "B";
else if (Global.ip1 >= 192 && Global.ip1 <= 223)
classe = "C";
else if (Global.ip1 >= 224 && Global.ip1 <= 239)
classe = "D (Multicast)";
else if (Global.ip1 >= 240 && Global.ip1 <= 255)
classe = "E (Réservée)";
tb_classe.Text = classe;
btn_nb_sousreseaux.Enabled = true;
}
// bouton pour afficher le nombre de sous réseaux :
private void btn_nb_sousreseaux_Click(object sender, EventArgs e)
{
int masqueClasse = 0;
if (Global.ip1 >= 0 && Global.ip1 <= 127)
masqueClasse = 8;
else if (Global.ip1 <= 191)
masqueClasse = 16;
else if (Global.ip1 <= 223)
masqueClasse = 24;
else
{
tb_nb_sousreseaux.Text = "N/A";
}
int nbSR = (int)Math.Pow(2, Global.int_cidr - masqueClasse);
tb_nb_sousreseaux.Text = nbSR.ToString();
}
}
}
global :
namespace AP_8_calcul_adresse_ip_et_masque_sous_réseaux
{
internal class Global
{
public static string ad_ip = "0.0.0.0";
public static string cidr = "1";
public static int ip1 = 0;
public static int ip2 = 0;
public static int ip3 = 0;
public static int ip4 = 0;
public static int d1 = 0;
public static int d2 = 0;
public static int d3 = 0;
public static int d4 = 0;
public static int int_cidr = int.Parse(cidr);
}
}
AP SEMESTRE 2
AP 1 digicode
interface de connexion :

code :
namespace interface_de_connexion
{
public partial class interface_conn : Form
{
public interface_conn()
{
InitializeComponent();
}
string matricule;
string mdp;
string perso = @"Copie de digicod_perso.csv";
string secure = @"Copie de digicod_secure.csv";
bool trouve_pr = false;
bool trouve_se = false;
//traitement du matricule
private void btn_valid_Matri_Click(object sender, EventArgs e)
{
matricule = tb_Matri.Text;
if (matricule.Length < 4)
{
MessageBox.Show("Matricule NON valide, réessayer avec 4 chiffre");
return;
}
string[] lignes = File.ReadAllLines(perso);
foreach (string ligne in lignes)
{
string[] colonnes = ligne.Split(';');
if (colonnes[0] == matricule && colonnes[3] == "T")
{
trouve_pr = true;
break;
}
}
if (trouve_pr)
{
MessageBox.Show("Matricule valide, rentrer votre mot de passe.");
tb_mdp.Enabled = true;
}
else
{
MessageBox.Show("Matricule NON valide");
matricule = "0";
}
}
//traitement du mot de passe
private void btn_valid_mdp_Click(object sender, EventArgs e)
{
mdp = tb_mdp.Text;
string[] lignes = File.ReadAllLines(secure);
if (mdp.Length < 6)
{
MessageBox.Show("Mot de passe NON valide, réessayer avec 6 lettre majuscules");
return;
}
foreach (string ligne in lignes)
{
string[] colonnes = ligne.Split(';');
if (colonnes[0] == "T" && colonnes[3] == mdp)
{
trouve_se = true;
break;
}
}
if (trouve_se)
{
MessageBox.Show("Mot de passe valide");
this.Hide();
générateur_mdp f2 = new générateur_mdp();
f2.Show();
}
else
{
MessageBox.Show("Mot de passe NON valide");
mdp = "0";
}
}
}
}
générateur de mot de passe :

code :
namespace interface_de_connexion
{
public partial class générateur_mdp : Form
{
string[] alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
string mdp_inf_crypt;
string mdp_etab_crypt;
//fonction pour crypté le mot de passe de l'établissement
string CrypteEts(string lettreE)
{
for (int e = 0; e < alphabet.Length;)
{
if (lettreE == alphabet[e])
{
int nouvelleIndiceE = (e + 10) % 26;
return alphabet[nouvelleIndiceE];
}
e = e + 1;
}
return null;
}
//fonction pour crypté le mot de passe de la salle info
string CrypteInf(string lettreI)
{
for (int i = 0; i < alphabet.Length;)
{
if (lettreI == alphabet[i])
{
int nouvelleIndiceI = (33 * i + 1) % 26;
return alphabet[nouvelleIndiceI];
}
i = i + 1;
}
return null;
}
public générateur_mdp()
{
InitializeComponent();
}
//génération du mot de passe de l'établissement
private void btn_gener_etab_Click(object sender, EventArgs e)
{
tb_mdp_etab_cry.Text = "";
if (tb_mdp_etab.Text.Length < 6)
{
MessageBox.Show("Mot de passe sans cryptage NON valide, réessayer avec 6 lettre");
tb_mdp_etab_cry.Text = "";
return;
}
foreach (char car in tb_mdp_etab.Text)
{
if (char.IsDigit(car) == true)
{
MessageBox.Show("Le mot de passe ne doit contenir que des lettre");
tb_mdp_etab_cry.Text = "";
break;
}
mdp_etab_crypt = tb_mdp_etab_cry.Text = tb_mdp_etab_cry.Text + CrypteEts(car.ToString());
}
}
//génération du mot de passe de la salle info
private void btn_gener_info_Click(object sender, EventArgs e)
{
tb_mdp_salinfo_cry.Text = "";
if (tb_mdp_info.Text.Length < 6)
{
MessageBox.Show("Mot de passe sans cryptage NON valide, réessayer avec 6 lettre");
tb_mdp_salinfo_cry.Text = "";
return;
}
foreach (char car in tb_mdp_info.Text)
{
if (char.IsDigit(car) == true)
{
MessageBox.Show("Le mot de passe ne doit contenir que des lettre");
tb_mdp_salinfo_cry.Text = "";
break;
}
mdp_inf_crypt = tb_mdp_salinfo_cry.Text = tb_mdp_salinfo_cry.Text + CrypteInf(car.ToString());
}
}
//alerte 3 jour avant la fin du mois
static DateTime aujourdHui = DateTime.Today;
static int dernierJour = DateTime.DaysInMonth(aujourdHui.Year, aujourdHui.Month);
static DateTime finDuMois = new DateTime(aujourdHui.Year, aujourdHui.Month, dernierJour - 3);
string dateSansHeure = DateTime.Today.ToShortDateString();
string dateSansH = new DateTime(aujourdHui.Year, aujourdHui.Month, dernierJour).ToShortDateString();
private void générateur_mdp_Load(object sender, EventArgs e)
{
if (aujourdHui == finDuMois)
{
MessageBox.Show("Il faut modifier les digicodes");
}
}
//enregistrer dans le csv
public static string secure = @"Copie de digicod_secure.csv";
private void btn_enregistrer_Click(object sender, EventArgs e)
{
File.AppendAllText(secure, "E" + ";" + dateSansHeure.ToString() + ";" + dateSansH.ToString() + ";" + mdp_etab_crypt + Environment.NewLine, Encoding.UTF8);
File.AppendAllText(secure, "I" + ";" + dateSansHeure.ToString() + ";" + dateSansH.ToString() + ";" + mdp_inf_crypt + Environment.NewLine, Encoding.UTF8);
}
}
}