views:

278

answers:

12

Hi, my parents asked me what if I could do a simple program for accounting.

The thing is, I can not decide which programming language to choose. I know Java quite well but don't like messing with GUI, so I'm leaning towards C#/C++/Delphi because there you can make the gui in no time. The only problem I have I don't know how I would print documents. Also eventualy I would release the code under the GNU license.

What I will need:

  1. Printing generated documents
  2. Easy to create gui
  3. Windows only support (for now)
+2  A: 

Stick with java. You'll figure out how to use swing or SWT faster than learning a new language.

pstanton
+3  A: 

In time you spend learning C#/C++/delphi (and stumbling on all the new gotchas in those various languages), you could have instead created a decent GUI in Java.

If you want a learn a new language for your own personal development, then do so. But if you want to get a project completed, go with what you know.

Craig Walker
i'm not learning a new language, i just can not decide what to use because i can find equal pros and cons for every language
Gabriel
@Gabriel: Which means that *it makes no difference*. When faced with a number of options that don't make a scrap of difference, just pick one, rather than agonizing over decisions that *don't matter*.
jalf
A: 

CBuilder is the fastest way my opinion. You don't need to learn Pascal syntax and GUI is drag-n-drop style

Dan
What's pascal got to do with anything+ The OP doesn't need to learn ML, Lisp, Prolog or Cobol syntax either.
jalf
+1  A: 

You wrote you know Java so it seems to be a natural choice. Swing isn't the best for creating GUI but it is not so bad... You may try for example NetBeans IDE to create GUI using drag'n'drop interface.

Crozin
+1  A: 

If you're leaning toward C# what about VB.NET? I've found it to be a little quicker with the GUI development than C++ for sure. If you don't like it, the effort won't be wasted because you can fall back on C# with the .NET constructs.

Crystal Reports doesn't do a bad job with documents, and has built-in PDF support. It integrates pretty well with the Visual Studio IDE and .NET.

But then again, Java is also perfectly fine, too.

I guess another question is why your parents want you to write one from scratch? There are fantastic accounting programs already available for free or at least under $100.

My 2 cents.

John at CashCommons
+5  A: 

C# and the .NET Framework satisfies all your listed requirements. Printing is quite easy. If you're up for (and willing to invest the time in) learning a new language and framework(s), go with .NET. If you want to get something done quickly, then go with what you know.

It's a judgment call.

Michael Petrotta
ok i will go with C# and .NET ... and i'm not learning from scratch, i made several projects in C# so i know how to do most of the stuff i need, i just didn't do document printing ever so i can not decide if it's easier in other languages.
Gabriel
perhaps have a look at crystal reports
Matt Joslin
+2  A: 

Considering you know Java and its a simple program, I would choose Java and quickly make a simple GUI.

Sun's tutorials can easily walk you through a layout that seems fit for account. A few JTextBox's to enter values and a submit button. Nothing that would take too long.

Also, Sun offers a Printing tutorial containing either single or multiple page documents, depending on what you are actually printing.

Hope this helps.

Anthony Forloney
+13  A: 

Depending on what your parents intend to use this for, I'd advise them to buy an accounting package and not rely on anything you'll write. Quick Books would be a fine choice.

As their son, I would not want my parents to jeopardize my financial future by using software that I'd write. Especially if I lacked background in both software development AND accounting.

If you're doing this just for the fun of working on a nice problem and learning accounting, Java will be a fine choice. I'd advise that you forget about UI and printing and start with understanding the accounting problem domain. Write some objects that model it well.

Take a look at Martin Fowler's "Analysis Patterns". It's a little dated now, but it has a nice chapter on double entry accounting and ledgers that you might find useful.

UPDATE: Yes the word "accounting" is unfortunate (and misleading). Your accountant parents should be smart enough to fill out a form and print it on their own.

But even that characterization is off-base, because "prefill" implies a source of persistent data that will have to be maintained. Will you do that? How will the data store be populated?

You don't understand the problem at all.

If they insist on asking for your help, I'd say that any language will do. You claim both Java and C#, but this question and others that you've been asking today suggest to me that you lack facility with either language. I'd suggest that you understand more serious study to master the necessary skills than just trolling for answers here. When you have a specific, answerable question bring it here. Otherwise, you need to upgrade your skills first.

duffymo
maybe the word "accounting" was a bad choice... they need just a application that would create a form autofill it and print it (those documents are only for them, not goverment forms of any kind).And they are accountants, so they know how it works and they would like to have their own custom made software, and what's on the market is not good for them (they are very picky) and they were satified with programs i made earlier.
Gabriel
@Gabriel - they may be accountants, but they clearly don't understand the risks of relying on software written "on the cheap". And by the sounds of it, neither do you.
Stephen C
+2  A: 

Since you know Java, and you are doing something for family and not a real product to put in the market, I advice you to use Java and only Java and nothing else except Java, I will guide you for the technologies you will need:

  1. Netbeans IDE, although eclipse is way better than NetBeans in my opinion, use netbeans for GUI development of swing, you will have a graphical interface, and drag and drop the same as visual studio, so creating the GUI will not be a difficult task.

  2. Database: you may need a database to store data in it, I advice you to go with something similar to Oracle but free and I thing Postgress is the best choice its free, and it has a graphical client too, its named PGAdmin. everything is free and easy to use.

  3. To connect to the database check for JDBC and you will be able to write simple SQL selects to read/write to the database, if you want something more advanced go with Hibernate.

  4. Reporting: best solution would be Jasper reports and its graphical tool iText you will be able to design professional looking reports with it, and you can generate .pdf files too.

  5. Finally if you want to generate excel or word files from your application or read them, may be to import data or export data you can go with a framework named Apache POI its very easy to use and you will find everything you need in it.

I think this list will help you to develop your application, and if you learn all of them be quite sure that you will find a Job as java developer everywhere.

Good luck with the development, and have fun ;-)

Regards.

Omar Al Kababji
@Omar Al Kababji: Netbeans comes bundled with JavaDB - would you recommend that?
Bandi-T
@Bandi-T I highly recommend using a more mature database solution, this will make your program more robust and flexible, so I recommend using Postgress or MySQL and best would be Oracle 10g or 11g if possible, this will also give you new skills that for sure will help you in the future. No body needs a Java DB expert, but if you are an Oracle expert then they will really need you.Don't get me wrong, if you are trying to learn something and you are just trying things out then go with JavaDB, but if you want real world DB's then avoid JavaDB.
Omar Al Kababji
@Omar: I agree that Oracle is still the optimum DB for job opportunities. PostGres (with just one final S!) is also a fine DB and very standards compliant. MySQL's star is sinking a little due to recent political/personnel problems. But I think you're not giving JavaDB enough credit: JavaDB is Derby, which was an IBM project in which they mixed Cloudscape with *lots* of DB2. IBM's DB2 remains a powerhouse of banking/corporate data processing, and IBM pursued a strong interest in making a compatible Java engine. I would guess it's quite solid, as a result.
Carl Smotricz
I am sorry guys, I didn't add: would you recommend JavaDB **for the OP for this project**. But I see the question is closed now.
Bandi-T
+1  A: 

I would definitely recommend wxWidgets with CodeBlocks. wxWidgets is an easy to use cross-platform C++ library and CodeBlocks is an easy to use cross platform IDE.

George Edison
A: 

You might want to consider Microsoft Access for simple to medium complexity database work.

Isn't nearly as sophisticated or flexible or extendable as Java, but just might be enough for what you are trying to do.

Bandi-T
+2  A: 

My first instinct would be to go for C# as it is great for GUI development (and an interesting learning exercise as you're already familiar with Java) however when you say, "Windows only support (for now)", hey, I know .net is meant to be cross platform but it isn't really (MS have released 4 .nets in what 7 years? no one can keep up with all the new features). If that "for now" is meant seriously then stick to Java.

Patrick