~ Mini Project #1 - Create a Dating Program in Python




Dating Program - Sample Project

*Teachers with subscriptions will have access to all solution code (python files)

Introduction

This tutorial/set of challenges assumes you have worked through Solve and Learn Series 1 to 3 (up to File Handling), and that you are ready to tackle a full blown challenge! Note: this implementation does not use classes.

The Task (brief overview)

Love is the in air! It's time to create a simple but sophisticated dating system that will allow users to register, login and search for a potential soul mate. Did you know that there is a secret to knowing what any given individual's greatest weakness is....and you can know it by asking one simple question which anyone would be more than willing to share. Any idea what it is? The answer lies within the program we will create and will be revealed at the end!. Remember to Analyse and Design first! (see next tab). Break the problem down and produce flowcharts and pseudo code (or either) for each sub task wherever possible.

Summary of task:

You are going to create a prototype for a dating system in Python. It will be simple, but will cover all the of the necessary features and constructs that you have been learning about (e.g. sequence, selection, iteration, lists, string manipulation, file handling and more). When users register they do so with their personal details such as:

● a unique username

● First and Last Name

● Password

●Gender

●Email Address

●Date of Birth

●Beliefs

●Greatest Strengths

You will create the system with some sample data of at least three male and three female users.

On startup, the program presents users with a MAIN MENU, allowing them the option to

1. Register --2.Login --3.Search --4.Matchmake --5.Quit: Note: each user must login using their username and password that is stored to file

The search algorithm would take you to an additional menu that allows clever searching e.g.:

1. Searching by Name

2. Searching by Gender (e.g. returning a list of all the males or females)

3. Searching by key word (e.g. returning a list of all users that have used a certain word)

The matchmaking algorithm is going to make you millions!
It is to be based on the idea that people with the same strengths should not be matched together. You have to devise this algorithm, and on selecting this option, produce a list of suggested matches based on the criteria specified above

All the best!

Analyse

Write your own summary of the problem. What are your objectives? List the success criteria

Remember Decomposition? Breaking the problem down?

Well, hopefully you've done that for the entire problem - have a read of the introduction and task again, if not. We have broken it down ourselves, but you may have a different method. Once you have broken the whole problem down into its composite parts, for the design section, try to write a flowchart or pseudo code (or both, if possible!) for each sub task. Simply plan (in plain english or using symbols) how you will actually attempt to solve each task. You can then refer to your designs as you start to implement your code.

There is no one perfect way to solve a problem, but we're going to take you through a possible solution, and try it yourself to see if you can do better, for each step! 

The problem could be broken down into the following sub-problems. We are going to solve (or try to) each one:

1. Create a Main Menu and define all the functions needed in the program

2. Create the registration screen (need to save this to a file)

3. Create the login feature - the user must login using their username and password (which has been stored)

4. Search Menu with a sub menu for Search by Name, Gender, Keyword

5. Create a "Matchmake" function, that contains your clever algorithm. This will produce a list / dictionary or any other suitable data structure of all your potential matches

10. Final Solution - reflect! How could you improve it? Test it! Make sure that validation has been built in? An example of validation, in this project, would be to ensure that the username entered is unique, or that the email entered is valid. It is sometimes useful to make the whole program and add validation at a later stage.

Design Tools

Systems Life Cycle (in a nutshell): Analyse - Design - Create - Test - Evaluate. Designing something or writing out some pseudocode before you actually write code is always a good idea! Get in to the habit of doing so! You can draw your flowchart here and screenshot it.

Try it yourself

Testing Table

You may want to read a little about Testing first. A teacher may go through some examples with you. Feel free to fill in the test table here, and screenshot it in to your powerpoint. Testing is absolutely essential once you have created a program!
Test No. Description Test Data(input) Expected Outcome Actual Outcome Further Action?
1
2
3
4
5
Coming soon!