Solved

program for learning words

Posted on 2004-08-04
9
286 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Independent Software Vendors: 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!

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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
This article will show you some of the more useful Standard Template Library (STL) algorithms through the use of working examples.  You will learn about how these algorithms fit into the STL architecture, how they work with STL containers, and why t…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

751 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