Go Premium for a chance to win a PS4. Enter to Win


program for learning words

Posted on 2004-08-04
Medium Priority
Last Modified: 2010-04-01

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
Question by:xLeon
  • 4
  • 3
  • 2

Author Comment

ID: 11718061
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

LVL 55

Expert Comment

by:Jaime Olivares
ID: 11718192
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.


Author Comment

ID: 11718506
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.
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 300 total points
ID: 11718638
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.
LVL 11

Accepted Solution

bcladd earned 300 total points
ID: 11718711
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,

Author Comment

ID: 11719029
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
LVL 55

Expert Comment

by:Jaime Olivares
ID: 11719127
www.codeproject.com is a nice place to review lots of examples of MFC programming.
LVL 11

Expert Comment

ID: 11719149
Take a look at
  http://www.functionx.com/visualc/ - Control-centric tutorials for MFC items - in particular, look at the Picture control (to display the picture for the word).
  http://www.codeguru.com/Cpp/ - CodeGuru has a lot of small articles on specific topics that might be what you need

  http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html - 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).

  http://www.acceleratedcpp.com - 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,
LVL 55

Expert Comment

by:Jaime Olivares
ID: 11719160

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
  Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question