Wikimonnaie, une monnaie libre

Description

Une monnaie libre consiste en un ensemble de règles et processus qui définissent l'émission, l'évolution, la circulation et la consumation d'une monnaie ouverte, suffisante, décentralisée, poste-à-poste (P2P) et démocratique. Elle appartient au domaine public tout comme les logiciels ou les productions intellectuelles du logiciel libre. Elle est conçue, développée, testée, documentée et mise en circulation de manière collaborative, chacune de ses parties pouvant être transformée et améliorée par quiconque. Les monnaies libres sont désignées sous le terme d'Open Money en anglais, suivant les travaux de Michael Linton et Ernie Yacub à l'origine de cette vision. source : http://fr.ekopedia.org/Monnaie_libre_ou_open_money

Source / Exemple :


/*

  • Created by SharpDevelop.
  • User: Gya
  • Mail : yanngeffrotin@gmail.com
  • [ je l'utilise, je le soutiens avec paypal ]
  • La wikimonnaie est un système de crédit mutuel utilisé par les Wikipédiens anglophones. Son principe est de créer une économie où les personnes peuvent proposer un travail sur Wikipédia contre de la wikimonnaie ou remplir une tâche proposée pour en gagner.
Tout contributeur régulier (actif depuis un mois et ayant au moins 200 éditions à son actif) peut ouvrir un compte sur cette page et se voit offrir 20 unités de wikimonnaie (?) indivisibles. Cette monnaie virtuelle pourra alors servir à s'échanger des services. Les comptes de chacun sont publics et maintenus dans la section WikiBanque de cette page. Pour transférer la wikimonnaie d'un compte à un autre, il suffit d'éditer les montants des comptes. Seul le débiteur transfère les ? de son compte vers celui qui a répondu à son offre. Pourquoi essayer de récolter de la wikimonnaie ? Tout simplement, cela vous permettra d'investir dans des domaines qui vous tiennent à c?ur. Le temps que vous investissez pour d'autres vous permettra aussi de demander du temps à d'autres. Rien ne vous empêche de vous regrouper pour proposer une offre alléchante ! Souvenez vous que la WikiMonnaie n'est qu'une monnaie virtuelle et ne doit pas être prise trop au sérieux ! *
  • /
using System; using System.Text; using System.IO; namespace WikiMonnaie { class MainClass { public static void Main(string[] args) { Console.WriteLine(" "); Console.WriteLine("WikiMonnaie"); Console.WriteLine("'Créer une économie libre'"); Console.WriteLine("GNU General Public License"); //Licence publique générale GNU //déclarations string choix, choix2, email, email2, motdepasse, motdepasse2 ; int nblettres, cpt, cpt2 ; int montant = 20 ; // int : la wikimonnaie n'est pas fractionnable int PlusTab = 1 ; int MaxTab = 100 ; // Taille maximal du tableau //Il faudrait créer des fichiers textes à part string [] Temail = new string [MaxTab]; string [] Tmotdepasse = new string [MaxTab]; int [] Tmontant = new int [MaxTab]; // Utilisation de variables non assignées email = email2 = motdepasse = "nobody" ; cpt = cpt2 = 0 ; // Es ce qu'il existe des utilisateur ? lecture_fichier_texte_listeuser (ref Temail); while(Temail[cpt] != null) { //pour chaque utilisateur StreamReader sr = new StreamReader("C:/TEMP/WikiMonnaie/bin/Debug/Wikipédiens/" + Temail[cpt] + ".txt"); //mettre les valeurs dans le tableau Temail[cpt] = sr.ReadLine() ; Tmotdepasse[cpt] = sr.ReadLine() ; Tmontant[cpt] = Int32.Parse(sr.ReadLine()) ; sr.Close() ; cpt = cpt + 1; } //DEBUT PROGRAMME PRINCIPAL do { Console.WriteLine(" "); Console.WriteLine("1 - Connexion"); Console.WriteLine("2 - S'inscrire"); Console.WriteLine("0 - Sortie"); Console.WriteLine(" "); choix=Console.ReadLine(); switch (choix) { case "0": break; case "1": // Connexion à compte existant saisie_mail(ref email); recherche_email (ref cpt, email, Temail, MaxTab); if (email==Temail[cpt]) // Si l'adresse email existe { saisie_motdepasse (ref motdepasse) ; if(motdepasse==Tmotdepasse[cpt]) //Si le mot de passe est correct { Console.WriteLine(" "); Console.WriteLine("Vous êtes connecté."); do { Console.WriteLine(" "); Console.WriteLine("Vous avez "+ Tmontant[cpt] + " WikiEuros sur votre compte."); Console.WriteLine(" "); Console.WriteLine("1 - Virement"); Console.WriteLine("0 - Déconnexion"); Console.WriteLine(" "); choix2=Console.ReadLine(); //Or Int32.Parse(Console.ReadLine()); switch (choix2) { case "0": //Déconnexion Console.WriteLine(" "); Console.WriteLine("Vous êtes déconnecté."); break; case "1": // Procédure de virement bancaire if(Tmontant[cpt]==0)// Si le compte est vide alors { Console.WriteLine(" "); Console.WriteLine("Vous ne pouvez pas effectuer cette transaction."); } else //sinon (montant du compte différent de zéro) { saisie_mail(ref email2); if(email==email2) //si email de l'envoyeur égal de l'email du destinataire alors { Console.WriteLine(" "); Console.WriteLine("Vous ne pouvez pas vous envoyer de l'argent."); } recherche_email (ref cpt2, email2, Temail, MaxTab); if(email2!=Temail[cpt2]) //si l'email du destinataire n'existe pas alors { Console.WriteLine(" "); Console.WriteLine("Destinataire inconnu."); } //Si le mail du destinataire est trouvé et que le mail de l'envoyeur soit différent de ce que l'on a trouvé if(email2==Temail[cpt2] && email!=Temail[cpt2]) { do { if(montant>Tmontant[cpt]) // montant saisie inférieur au montant sur le compte { Console.WriteLine(" "); Console.WriteLine("Vous ne disposez pas d'une telle somme sur votre compte. "); } Console.WriteLine(" "); Console.WriteLine("Montant à verser : "); montant = Int32.Parse(Console.ReadLine()); }while(montant>Tmontant[cpt]); //Mise à jour des fichiers textes et des tableaux Tmontant[cpt] = Tmontant[cpt] - montant ; convert_Tinfo (Temail, Tmotdepasse, Tmontant, cpt ); Tmontant[cpt2] = Tmontant[cpt2] + montant ; convert_Tinfo (Temail, Tmotdepasse, Tmontant, cpt2 ); } }break; } }while(choix2!="0"); } else // Si le mot de passe est faux { Console.WriteLine(" "); Console.WriteLine("Ce mot de passe est erronée."); } } else // Si l'adresse email n'existe pas { Console.WriteLine(" "); Console.WriteLine("Cet email n'est pas valide."); } break; case "2": // S'inscrire (creation d'un nouveau compte bancaire) do { do { saisie_mail(ref email); recherche_email (ref cpt, email, Temail, MaxTab); if(email==Temail[cpt]) { Console.WriteLine("Cette adresse email est déja prise. Veuillez en saisir une autre."); } }while(cpt!=MaxTab-1 ); }while(email==Temail[cpt]); saisie_motdepasse (ref motdepasse) ; do { Console.WriteLine(" "); Console.WriteLine("Vérification : "); motdepasse2 = Console.ReadLine(); nblettres = motdepasse2.Length ; }while(motdepasse!=motdepasse2) ; //Enregistre les valeurs temporairement Temail[PlusTab] = email ; Tmotdepasse[PlusTab] = motdepasse ; Tmontant[PlusTab] = 20 ; PlusTab = PlusTab + 1 ; creation_fichier_texte (email, motdepasse, montant) ; enregistrement_liste_user (email); break; } }while(choix!="0"); //FIN PROGRAMME PRINCIPAL } // LES SOUS PROGRAMMES static void saisie_mail (ref string email) { // Vérifie la validité d'une adresse email Console.WriteLine(" "); Console.WriteLine("Adresse email : "); email = Console.ReadLine(); string chercheCela = "@"; int positionCar = email.IndexOf(chercheCela); //Retourne la position du caractère while (positionCar < 0) { Console.WriteLine(" "); Console.WriteLine("Une adresse email doit comporter le symbole @."); Console.WriteLine(" "); Console.WriteLine("Adresse email : "); email = Console.ReadLine(); chercheCela = "@"; positionCar = email.IndexOf(chercheCela); //La position du caractère doit être positive } } static void recherche_email (ref int cpt, string email, string []Temail, int MaxTab) { // Recherche de l'email dans le tableau Temail cpt=-1; do{cpt=cpt+1; }while(email!=Temail[cpt] && cpt!=MaxTab-1 ); } static void saisie_motdepasse (ref string motdepasse) { //Vérifie la validité du mot de passe Console.WriteLine(" "); Console.WriteLine("Mot de passe : "); motdepasse = Console.ReadLine(); int nblettres = motdepasse.Length ; while(nblettres<6) { Console.WriteLine(" "); Console.WriteLine("Mot de passe : (6 caractères minimum)"); motdepasse = Console.ReadLine(); nblettres = motdepasse.Length ; } } static void convert_Tinfo (string [] Temail, string [] Tmotdepasse, int [] Tmontant, int personne ) { //Convertir le tableau Temail en email, le Tmotdepasse en motdepasse et Tmontant en montant string email = Temail[personne] ; string motdepasse = Tmotdepasse[personne] ; int montant = Tmontant[personne] ; creation_fichier_texte (email, motdepasse, montant); } static void creation_fichier_texte (string email, string motdepasse, int montant) { //création d'un fichier texte StreamWriter sw = new StreamWriter("C:/TEMP/WikiMonnaie/bin/Debug/Wikipédiens/" + email + ".txt"); sw.WriteLine (email); sw.WriteLine (motdepasse); sw.WriteLine (montant); sw.Close(); } static void enregistrement_liste_user (string email) { // Ce texte est ajouté au fichier Listuser.txt en express StreamWriter sw = new StreamWriter("C:/TEMP/WikiMonnaie/bin/Debug/Listuser.txt",true); //Changer le répertoire si autre compilation sw.WriteLine (email); sw.Close(); } static void lecture_fichier_texte_listeuser (ref string [] Temail) { int cpt = 0; //Console.WriteLine(" "); //Console.WriteLine("WikiBanque : "); //Console.WriteLine(" "); StreamReader sw = new StreamReader("C:/TEMP/WikiMonnaie/bin/Debug/Listuser.txt"); string ligne = sw.ReadLine(); while(ligne != null) { //Console.WriteLine(ligne); Temail[cpt] = ligne ; ligne = sw.ReadLine(); cpt = cpt + 1; } sw.Close(); } } }

Conclusion :


Si quelqu'un veut reprendre le projet, voici quelques pistes de travail :
  • envoi de mails à reception de nouvelles sommes (MailMessage)
  • edition sous support html / php pour avoir un serveur et une interface graphique
  • sécurisation des fichiers textes par le cryptage


Bonne Prog ;-)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.