program for learning words


I'd like to create a program for learning english words with the following properties

- the program should have possibility of creating new lessons
  1) every lesson consists of certain number of items
  2) every item is quadruple I = (EW, FW, S, P), where EW is english word, FW is word in foreing language, S is pronunciation of the word (e.g. in mp3) and P is picture representing the word

- the program should be able to test our knowledge
    - testing should be intelligent, that means program will remember our current knowledge of item, and items with bad knowledge will be stored in some database. Database with bad items will be changing every hour. Special function F will compute time at which particular item could be forgotten and at that time item will be stored in the database of bad words.
    - words from BadWords-database will be every day offered to user to remind
    - I have lots of other specifications which are not important at this time
Who is Participating?

Improve company productivity with a Business Account.Sign Up

bcladdConnect With a Mentor Commented:
How much C++ do you know? I only ask because if you are comfortable with things like reading and writing files you can do most of the work with a flat database file.
You could store the S and P fields as file paths so that you only have to load the media and pass it to a player/display component.

You might actually want to extend the tuple to include a unique ID for each word (it might not be enough to use the EW or FW as there are words with more than one meaning and you might want to test on all of them). Then your database of "missed words" is a list of IDs. Given your "forgetting" threshold, you might want to keep a "last time it was right" field, too, indicating the last time the word was tested and passed. Then you can use a threshold value to search for words that are "older" than the "memory" . Missed words can have this field set to a flag value to avoid the search. Also might want a flag value for newly added words.

Advantage to using a text-based flat file: You can add words outside your system which can be useful until you have an editing mode in place.

This seems to be a situation where the extreme programming mantra of "Do the simplest thing that can work" is good to keep in mind. Write a simple program that does something; then enhance it.

What to study:
Since you're using VC++, find tutorials on GUI applications using your version of VC++. Make a dialog that has a picture in it.
If you need C++ help, look at documentation of the language.

I am assuming English is not your first language; I can post some pointers to resources as I have suggested but they will be in English as that is what I read.

Hope this helps,
xLeonAuthor Commented:
I know that lots of similar programs already exist, but I have special requests and that's why I want to implement my own program.
Could you advise me how to begin? I'd like to do it in C++. What libraries should I study? What material to study, if I want effectively manage the database (SQL?)? I'd like to see some links with source codes with similar programs.
other problem: how to program the function F? I have heard something about Ebinghausen curve of forgetting (?), do you know something about it?

I will appreciate most the answers which will contribute most for me to do that program myself. Answers that tell me HOW TO will be most valued

Thanks for help

Jaime OlivaresSoftware ArchitectCommented:
Some previous issues to consider:
- What Operating System will your app work on? This will influence in the GUI. If you work in Windows only, then I recommend you to start studying Visual C++ with MFC.
- Is your app standalone or is Internet-based. If the first, I don't recommend you learn about SQL, you will need a local database. If the second, SQL will be almost mandatory.

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

xLeonAuthor Commented:
Hi jaime,

I will do my program first for Windows 98se, because I'm using it now. (Later I'd like to implement it in Linux).
I already began to study Visual C++, but I'd rather see some similar programs, to start quickly. GUI is one thing. The other thing is, how to work with items, how to store them, etc.
Sorry, I don't know what means standalone. I guess, its opposite to network application. I plan to do that program for my own purposes without connecting to internet.
Jaime OlivaresConnect With a Mentor Software ArchitectCommented:
Ok, windows based, standalone.
About storing, you can use any local database with ADO or DAO but, as you are a begginer I don't recommend you, this will take you much time. Just store your bitmaps in separate files in a directory (after that you can store it in a resource file later), about the rest of information, just store it as text files (later you can crypt it, store it as binary or store it in the same resource file as images!)
Start creating an application in Visual C++:
File -> New -> Project -> MFC AppWizzard (.exe)
Select proper options:
SDI Application, Doc/View support.

Now you have to implement 2 objects: the document (where you retrieve information from your files), and the view (where you interact with the user).

So, a Visual C++ with MFC book will be enough to do what you want.
xLeonAuthor Commented:
Thank you both, so I will continue in studing VC++. If you know some internet pages, that are very good and has moreover something common with my issues, please write me that links
Jaime OlivaresSoftware ArchitectCommented: is a nice place to review lots of examples of MFC programming.
Take a look at - Control-centric tutorials for MFC items - in particular, look at the Picture control (to display the picture for the word). - CodeGuru has a lot of small articles on specific topics that might be what you need - Electronic copies of Thinking in C++ volumes 1 and 2; v1 is considered one of the best books for learning C++ (I am not sure I agree but it is pretty good and it is free). - the Web site for _Accelerated C++_, what I consider the best book for learning C++. Full text is not on-line but the book is very, very cool.

Hope this helps,
Jaime OlivaresSoftware ArchitectCommented:
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.