Create a dayplanner for unix. The dayplanner display will have a calendar, a daily schedule, a goal list, and an interaction line. The calendar will be in the upper right of the screen, the daily schedule will be on the left half, the goal list will be on the right half of the screen below the calendar, and the interaction line will be on the bottom of the screen.
The calendar will display a selected month so that it looks like a month in a normal calendar. The earliest month that can be displayed is January 1994. The last month that can be displayed is determined by the implementation but will not be less than Dec 2100. If the cursor is in the calendar then it will be on a date of the selected month. By moving the cursor with the arrow keys or "vi" keys (j = down, k = up, h = left, l = right) we can move to different dates in the calendar. Trying to move to a day in a previous month (e.g. trying to use the up key to move up to a previous week or being on the first day of a month and moving left) will result in displaying the previous month (even if in a previous year) and moving to the correct day. If the current month is January 1994 then nothing happens. Similar results should occur when moving to a date in the subsequent month. Means should be provided to select arbitrary dates on or after January 1, 1994.
When ever a date is selected (when the program is started the current date is automatically selected) the date on the calendar is highlighted, the daily schedule for that day is displayed, and the goals for that day are displayed. From the calendar a user can move to the daily schedule or the displayed goal list.
The daily schedule is divided into 15 minute time intervals for the entire 24 hours of the day. An appointment consists of a start time(on the quarter hour), an end time(on the quarter hour) and a description of the appointment. The start time must be <= end time. No two appointments may overlap. An appointment may not have a start time on a different day than the ending time. In some manner the appointment time must be blocked out on the display. An appointment description will be at most one line long. Movement within the daily schedule is with the up and down cursor keys. At any empty quarter hour the user can create an appointment (using the interaction line). If the cursor is at an existing appointment the user can edit or delete the appointment. Editing will take place in the interaction line. The daily schedule may require scrolling capabilities. From the daily schedule it is possible to move to the calendar or the goal list.
The goal list is a possibly empty list of goals numbered from 1 to the number of goals. Each goal is 1 line of text. There is a goal list associated with each day, week, month, year, and lifetime. While in the goal list display a user can change to the goal list for the current day (for the day shown in the calendar), for the current month (as shown in the calendar), for the current year (as shown in the calendar), and the list of life-long goals. Movement within the goal list is with the up and down cursor keys(the arrow or vi keys). At any goal a new goal can be created (using the interaction line) and inserted before or after the current goal. The current goal can also be edited or deleted. Editing will take place in the interaction line. The goal list may require scrolling capabilities.
The system must provide a storage and retrieval capability.
The system must run under Unix on an HP 700 series machine. It will be written in C++ using an object-oriented design. It will not use a graphical interface but a 2-D text interface. The system will be finished by December 7, 1994. The requirements document is due Sept. 7, 1994. The Specification document is due Sept 28, 1994. The design is due Nov. 2, 1994. The code is due Nov. 9, 1994. Testing is due Dec. 7, 1994. All submissions will be sent electronically to Patrick Williams. The system will be created by a team of not more than 6 and not less than 4 people.