tags:

views:

802

answers:

15

I need to create a simple windows app for my father's business that handles employee records that can be entered and retrieved though a search and output to excel or something similar. I was thinking of using C++ and using MySQL as the database. I want to make it as simple and seamless as possible, so I am completely open to suggestions for the programming language and the database choice. I don't have a lot of experience with databases so any help would be great. Thanks.

EDIT:

Ok well I got some more information from my dad, and he was mistaken about the excel side of things, that will not be necessary.

Other things I have learned:

  1. It needs to be able to read data from a file, parse it and enter it into a database.
  2. Needs to be a program accessed and edited by multiple users on a network.
  3. Eventually it needs to have to ability to be accessed over the internet.

I really appreciate the help. I know I'm going to need a database like MySQL, so what language talks the best with MySQL, I see a lot of info on PHP and MySQL but like I said I'm not very familiar with coding for databases.

+13  A: 

Heresy, but I say use Microsoft Access. A small, single-user app, and Access interchanges with Excel superbly. You can use VBA for your language (which will be required less extensively with Access), or go with the .NET Access API.

If you really want to use MySQL, Access will attach easily with several free SDK libraries for ADODB, ODBC, etc.; but I'd stick with the Access database to start.

le dorfier
I'm willing to bet you won't get any love for this answer, but there is nothing wrong with it. We develop lots of Access apps for small business that do exactly what the OP is looking for.
TheTXI
I don't know: as much as I hate access, it does work for single user apps. However, this smells of something that will grow to be used from multiple workstations.
Joel Coehoorn
It also has the nice feature of being 'usable' by non developers when they just need to view the data.
ccook
If it's done with Access with a good design, you can always up-size easily to SQL Server if it becomes multiuser.
Miles D
+1 for Access, especially if you'll need to present data in Excel.
Patrick Cuff
This is a great answer!
Danny G
Access, Kexi, or (maybe) OpenOffice DB. Good answer.
singpolyma
+3  A: 

You could do that in any language of your choice, through either ODBC or whatever bindings MySQL includes. You may find languages like Python to be much easier to work with than C++, or you may find that embedded VB in Excel will be good enough.

My advice is to use whichever language is most convenient for you. ODBC is widely-supported enough and MySQL has enough various bindings to make it a moot point.

greyfade
+3  A: 

I would consider using .NET, c#/VB, from the point that if you wanted to migrate to the web at some point you could share a lot of code. Visual Studio also turns out to be a great environment.

Have you also considered a professional software, such as Microsoft Office Accounting? I am a developer, but am in no way interested in developing software for my business with respect to accounting.

ccook
I second .NET, c#/VB If you're familiar with c++ as the tags imply, C# would be very easy to use. Visual studio has great tools to work directly with a database.
Perchik
A: 

i will suggest c# using a obdc i really hate microsoft database system and if one day your father business grows he wont have to pay a microsoft it guy for training instead a cheaper mysql it.

basically mysql cheaper at the long run than microsoft and c# would make it a lot easier to do a fancy gui on windows.

Annerajb
A: 

If I were just starting out, especially with a business application, I would choose Excel.

Excel has a nice built-in macro engine that runs VBScript and, in later versions, VB.NET. The engine has robust support for ADO objects and even has nice configuration options for creating database connections from the Excel UI.

Excel is easy to learn and there are tons of resources for doing just what you want. Here's an ancient one.

CLaRGe
Excel is a classic example of something where 1% of users ever see 95% of the power of the app. I have seen full blown applications within excel with dialogues, forms, etc.
ccook
Don't be using Excel when Access is what you are looking for.
epochwolf
+2  A: 

Why not develop a windows PHP front-end using something like winbinder for the GUI, and MySQL (would be my first choice) followed by Postgre followed by SQLLite.

That way, you could have your (almost) native front-end, and webify the application should the need arise quite easily, provided you follow some sort of modular approach (Utility classes, for instance) to make sure you can reuse data access & business methods.

There's a tutorial here on writing to excel from PHP.

This might seem a bit overkill, but I would do it just because (at least in theory) it seems really cool!

Hope it works out for you!

karim79
+2  A: 

For simple development the possibilities are endless. It truly depends upon your skill level and what languages you feel most comfortable with.

As I novice, and I were to do this, it would be as simple as using VBA against a Microsoft Access database. Keep everything in one single access file.

A more intermediate level you could use SQL Express with ASP.NET or ASP WinForms application.

A more advanced approach would be SQL with Dynamic Data, utilizing LINQ to SQL objects with some Business Logic added.

Danny G
+1  A: 

I suggest to use dotnet (mainly C#) as you are familiar with C++ you will see C# is flexible and has alot of good feature. For your storage you can use XML if the data is not very big simply you will use dataset class and save and load methods. even you can use mysql if you need it.

Ahmed Said
+1  A: 

I would go for .NET and SQLIte or SQL Server CE or SQL Express

After having worked in .NET, I would never go back to working with Access. The user controls in Access are a lot more limited. SQL in access sucks, because you have to nest joins.

You can't do something like (well, you can, but it will be much harder to read / debug using nested joins, and i never can remember where to put parens to nest joins.)

SELECT
  Employees.Name,
  Supervisors.Name,
  Vacations.BeginDate,
  Vacations.EndDate

FROM 

    Employees
    INNER JOIN Supervisors ON Employees.supervisorId = Supervisors.supervsorId
    INNER JOIN Vacations ON Employees.employeeId = Vacations.VacationId

ORDER BY
    Supervisors.Name

By using .NET and whatever SQL backend except Access, development will probably take a bit more time to develop, but you will end up with an application of greater quality.

The only drawback, using this method, is that the interop with excel, might be slightly more complex(mostly if you use C#, since vb.net has late binding), but the rest of the development should be simpler.

The development experience will also be a lot better with .NET than with access.

Martin
+3  A: 

What programming language do you know best? Unless you have a good reason to look elsewhere, it's the one that you should use.

If you're a relative newbie to database programming, you probably don't want to take on learning a new language at the same time that you're learning about databases. Especially when you're writing for a relative :-)

Dan Breslau
A: 

Ok well I got some more information from my dad, and he was mistaken about the excel side of things, that will not be necessary.

Other things I have learned:

  1. It needs to be able to read data from a file, parse it and enter it into a database.
  2. Needs to be a program accessed and edited by multiple users on a network.
  3. Eventually it needs to have to ability to be accessed over the internet.

I really appreciate the help. I know I'm going to need a database like MySQL, so what language talks the best with MySQL, I see a lot of info on PHP and MySQL but like I said I'm not very familiar with coding for databases.

TheGreekness
Have you thought of buying instead of building?
tuinstoel
You should edit the question, not post an answer that isn't an answer :)
singpolyma
A: 

PHP is installed on every other free webhosting, take it as advantage of easy deployment and risk of "being cracked" by some script kiddie.

Python and Ruby are two very comfortable and nice languages, ready-for-web (as in "there is lots of established web frameworks and tutorials"). Lots of nearly free hostings support them.

Don't choose C++. Those who choose it, don't ask which language to use.

temoto
+1  A: 

If you want to eventually access it over the network you should think about building a web application.

  • If you want a web application, I would try ASP.Net, Ruby On Rails or Django
  • If you want a desktop application, I would go with C# and Windows Forms.

For the database, if you use Ruby or Python as the language, think about MySQL.
If you use C# and .Net, I would use SQL Express.

Most of the time you can use any database engine with any language, but supports on the web is often easier to find if you pick the most common association.

total
+1  A: 

You've asked for programming language recommendations. You'll probably get everyone and their dog in here recommending their favourite language. Can you tell us some more about yourself – do you have any programming experience already?

Just about all modern languages have mature database interfaces. C++, Java, C#/.NET, Python, Ruby, PHP, Perl – the list goes on. Talking to MySQL with any of them will be easy. Throwing up a web interface will be likewise easy (with the possible exception of C++). If you've got prior experience in one of these, then a question like "How can I build this app in language xxx" might be easier to answer.

If you don't have any programming experience, then you might be better off trying a few tutorials to see if you can find a language you like.

John Fouhy
A: 

Given the extra information, I'd strongly suggest looking at applications available for purchase: there will be appropriate packages that can start small and scale with the business, be accessible over intra- and internet and have costs that scale with usage.

Several reasons:

  1. Employee records are sensitive - there's a world of security that you'll need to build and it's already been done and tested a thousand times by suppliers;
  2. Assuming the system will take responsibility for payroll (and if not, why not?) you'll have legal, tax and bank communication details to sort out. Again, tested thousands of times by suppliers;
  3. It will cost less
  4. A bought-in solution will work better - yours will work as well as theirs did when they started - they've had a lot of time to improve
  5. Your father will get his system sooner

As a general rule, you shouldn't build what you can buy - instead you should look for opportunities to develop something that you can't buy, something that gives your business a genuine competitive advantage.

Mike Woodhouse