Ebauche de logiciel comptable avec utilisation de Swing (JFrame, JTabbedPaned, JTable, Java2DGraphics...) avec lecture/écriture de fichers/dossiers avec DataInput/OuputStream... . La finalisation est en cours, je suis ouvert à toutes propositions de programmation.Un fichier .jar executable est joint au fichier .zip. Il est déjà possible de créer des comptes de les enregistrer, puis de les ouvrir ainsi que la balance. J'attends les critiques et suggestions.
Source / Exemple :
EXTRAIT!!
/*
*
- Created on 24 mars 2010, 23:14
*
- To change this template, choose Tools | Template Manager
- and open the template in the editor.
- /
package Comptability;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
/**
*
public class Compte {
class Enregistrement {
private final Calendar date;
private final String libelle;
private final double debit, credit;
public Enregistrement(final Calendar date, final String libelle, final double debit, final double credit){
this.date = date;
this.libelle = libelle;
this.debit = debit;
this.credit = credit;
}
public Calendar getDate() {
return date;
}
public String getLibelle() {
return libelle;
}
public double getDebit() {
return debit;
}
public double getCredit() {
return credit;
}
}
private String nomEntreprise, nomCompte, secondNomCompte, numeroCompte;
private Enregistrement[] enregistrements = new Enregistrement[0];
private double solde = 0, totalDebit = 0, totalCredit = 0;
/**
- boolean operation is a variable which when it's false means débit otherwise means crédit
- /
public void addEnregistrement(Calendar date, String libelle, double debit, double credit){
Enregistrement[] e = new Enregistrement[getEnregistrements().length + 1];
for(int i = 0; i < getEnregistrements().length;i++){
e[i] = getEnregistrements()[i];
}
e[getEnregistrements().length] = new Enregistrement(date, libelle, debit, credit);
enregistrements = e;
totalDebit += e[e.length - 1].getDebit();
totalCredit += e[e.length - 1].getCredit();
solde = totalDebit - totalCredit;
}
public void addEnregistrement(Enregistrement nouveauEnregistrement){
Enregistrement[] e = new Enregistrement[getEnregistrements().length + 1];
for(int i = 0; i < getEnregistrements().length;i++){
e[i] = getEnregistrements()[i];
}
e[getEnregistrements().length] = nouveauEnregistrement;
enregistrements = e;
totalDebit += e[e.length - 1].getDebit();
totalCredit += e[e.length - 1].getCredit();
solde = totalDebit - totalCredit;
}
/** Creates a new instance of Compte */
public Compte(File f) {
open(f);
}
public Compte(final String numeroCompte, final String nomEntreprise, final String secondNomCompte) {
this.numeroCompte = numeroCompte;
this.nomEntreprise = nomEntreprise;
this.secondNomCompte = secondNomCompte;
this.nomCompte = PlanComptable.getNomCompte(numeroCompte);
}
public Calendar jjmmaaaaStringToDate(String s){
Calendar d = Calendar.getInstance();
d.set(Integer.parseInt(s.substring(6)), Integer.parseInt(s.substring(3,5)), Integer.parseInt(s.substring(0,2)));
return d;
}
public String getNumeroCompte() {
return numeroCompte;
}
public String getNomEntreprise() {
return nomEntreprise;
}
public String getNomCompte() {
return nomCompte;
}
public Enregistrement[] getEnregistrements() {
return enregistrements;
}
public double getSolde() {
return solde;
}
public double getTotalDebit() {
return totalDebit;
}
public double getTotalCredit() {
return totalCredit;
}
public String dateToStringJJMMAAAA(Calendar c){
return ((c.get(c.DAY_OF_MONTH) < 10)?"0" + c.get(c.DAY_OF_MONTH):c.get(c.DAY_OF_MONTH)) + "/" + ((c.get(c.MONTH) < 10)?"0" + c.get(c.MONTH):c.get(c.MONTH)) + "/" + c.get(c.YEAR);
}
public Object[][] getArray() {
Object[][] o = new Object[enregistrements.length][5];
for(int i=0;i<o.length;i++){
o[i][0] = dateToStringJJMMAAAA(enregistrements[i].getDate());
o[i][1] = enregistrements[i].getLibelle();
o[i][2] = enregistrements[i].getDebit();
o[i][3] = enregistrements[i].getCredit();
if(i != 0){
o[i][4] = ((Number)o[i-1][4]).doubleValue() - ((Number)o[i][3]).doubleValue() + ((Number)o[i][2]).doubleValue();
} else {
o[i][4] = ((Number)o[i][2]).doubleValue() - ((Number)o[i][3]).doubleValue();
}
}
return o;
}
public void save(){
File save;
DataOutputStream dataOutputStream = null;
save = new File("Data" + File.separator + getNomEntreprise() + File.separator + "Compte"+
File.separator + "Compte " + getNumeroCompte() + " " + getNomCompte() +
" - " + secondNomCompte +".nac");
if(save.exists()){
save.delete();
}
try {
save.getParentFile().mkdirs();
dataOutputStream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(save)));
dataOutputStream.writeLong(enregistrements.length);
dataOutputStream.writeChars(numeroCompte);
for(int j = 0;j<(10 - numeroCompte.length());j++)
dataOutputStream.writeChar('^');
dataOutputStream.writeChars(nomEntreprise);
for(int j = 0;j<(96 - nomEntreprise.length());j++)
dataOutputStream.writeChar('^');
dataOutputStream.writeChars(secondNomCompte);
for(int j = 0;j<(96 - secondNomCompte.length());j++)
dataOutputStream.writeChar('^');
dataOutputStream.writeChars(nomCompte);
for(int j = 0;j<(96 - nomCompte.length());j++)
dataOutputStream.writeChar('^');
for(int i = 0;i < enregistrements.length;i++){
dataOutputStream.writeChars(dateToStringJJMMAAAA(enregistrements[i].getDate()));
dataOutputStream.writeChars(enregistrements[i].getLibelle());
for(int j = 0;j<(96 - enregistrements[i].getLibelle().length());j++)
dataOutputStream.writeChar('^');
dataOutputStream.writeDouble(enregistrements[i].getDebit());
dataOutputStream.writeDouble(enregistrements[i].getCredit());
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if(dataOutputStream != null) {
dataOutputStream.flush();
dataOutputStream.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
dataOutputStream = null;
}
}
public void open(File open){
DataInputStream dataInputStream = null;
try {
dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream(open)));
long l = dataInputStream.readLong();
String s = "";
char c;
for(int j = 0;j<10;j++){
if ((c = dataInputStream.readChar()) != '^')
s += String.valueOf(c);
}
numeroCompte = s;
s = "";
for(int j = 0;j<96;j++){
if ((c = dataInputStream.readChar()) != '^')
s += String.valueOf(c);
}
nomEntreprise = s;
s = "";
for(int j = 0;j<96;j++){
if ((c = dataInputStream.readChar()) != '^')
s += String.valueOf(c);
}
secondNomCompte = s;
s = "";
for(int j = 0;j<96;j++){
if ((c = dataInputStream.readChar()) != '^')
s += String.valueOf(c);
}
nomCompte = s;
String date, libelle;
double debit, credit;
for(long i = 0;i < l;i++){
date = "";
libelle = "";
for(int j = 0;j<10;j++){
if ((c = dataInputStream.readChar()) != '^')
date += String.valueOf(c);
}
for(int j = 0;j<96;j++){
if ((c = dataInputStream.readChar()) != '^')
libelle += String.valueOf(c);
}
addEnregistrement(jjmmaaaaStringToDate(date),
libelle,
dataInputStream.readDouble(),
dataInputStream.readDouble());
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if(dataInputStream != null) {
dataInputStream.close();
dataInputStream = null;
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
Conclusion :
Je travaille le bilan, le compte de résultat et l'impression (et quelques améliorations).Merci d'avance pour tout commentaire!
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.