Solved

program for learning words

Posted on 2004-08-04
9
275 Views
Last Modified: 2010-04-01
Hello,

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
0
Comment
Question by:xLeon
  • 4
  • 3
  • 2
9 Comments
 
LVL 1

Author Comment

by:xLeon
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

0
 
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.

0
 
LVL 1

Author Comment

by:xLeon
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.
0
 
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.
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 11

Accepted Solution

by:
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,
-bcl
0
 
LVL 1

Author Comment

by:xLeon
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
thanks
0
 
LVL 55

Expert Comment

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

Expert Comment

by:bcladd
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,
-bcl
0
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 11719160
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Introduction This article is the first in a series of articles about the C/C++ Visual Studio Express debugger.  It provides a quick start guide in using the debugger. Part 2 focuses on additional topics in breakpoints.  Lastly, Part 3 focuses on th…
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
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 be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

746 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

11 Experts available now in Live!

Get 1:1 Help Now