I dusted off one of my college books. This is a major programming project and I
- Definition of the goals/Analysis of the problem
- Design of the algorithm
- Validation of the algorithm
- Coding
- Debug
- (optional) Documentation
Source: Introduction à la programmation - Algorithmes et ANSI/ISO C++
Michel Michaud
Let's get step 1 completed.
Goals: A PHP calendar generator linked to a database for date-related information (scheduler).
Two "views" will be developped. "Single-month view" and "year view". Single-month view is redundant to the Year-view but essential for prototyping the final view (Year-view)
Single-month view will accept a month and year from the user (dropdown, textbox, or both - undefined at this point). The page (PHP) will then dynamically generate a one-month calendar with the input. All the calculations (first day of month, days per month, etc.) will be handled by code to allow greater flexibility and easier portability (from PHP to another language).
Once the prototype is complete, design and development on Year-view can begin. Year-view will accept a year from the user (like the prototype, the entry type is undefined at this point). With this input, the page will dynamically generate a 3 by 4 grid of 12 monthly calendars.
(optional) If 3 by 4 is big on screen, a 2 by 6 grid may be chosen instead. Per-user selection based on the user's screen resolution may be added.
Once the calendar is working, a database will be designed and implemented to the system. The database will store date-specific information. By clicking on a date on the calendar, the user will be taken to a screen (page) where the user can view, add, edit, or delete entries (appointements).
There you have it, I have defined what I want this project to be.