program for learning words

Posted on 2004-08-04
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.
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 100 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 100 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 is a nice place to review lots of examples of MFC programming.
LVL 11

Expert Comment

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

Expert Comment

by:Jaime Olivares
ID: 11719160

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

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

Suggested Solutions

Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

813 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now