You haven't asked for help, you asked for a full solution. If you want help, then you first need to do as much as possible by yourself, up to the point where you don't know how to proceed. Then tell us why you can't proceed and what, precisely, it is that you don't understand or don't know how to solve. There's no point for us to provide a full fledged answer if we don't know what you already know - we might just be wasting our time telling you what you already know! You may be unsure on how to start, maybe you believe if your design isn't perfect right from the start then you will ultimately fail. But that is not how software development works: software development never starts with a perfect design! Instead you start with what you think works best, and go on until you realize that you can't go on, or some detalis of your design are impractical. Then, based on what you've just learned, you correct your design. If all else fails, start new from scratch.
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)