The system will serve as a group time management system providing personal schedules for all employees and a meeting scheduler that employees can use to schedule meetings which will then appear on the schedules of invited employees.
Time Tracker will be divided conceptually into two sub-systems; the Meeting Scheduler and the Personal Daytimer. The Meeting Scheduler will use employee availability data and existing meeting times to determine optimal time for a meeting and then inform those involved of the meeting. The personal daytimer will provide each employee with an `at a glance` view of their personal schedules.
Time Tracker will satisfy the need to schedule meetings with multiple co-workers in a fast, reliable, and efficient manner. An employee will be able to schedule meetings with other employees without having to make direct contact with each employee involved in the meeting or know the schedule of the employee. Time Tracker will enhance communication between employees enabling them to work together more efficiently and spend less time in non-productive activites such as 'phone tag'. An easy to use mouse driven interface will empower the customer to get maximum use of this application very quickly after it's deployment.
The following is a sample of the screen interface:

The screen will be divided into two side-by-side halves. On the left, a calendar will be shown, displaying a month or a day. By clicking on individual days or weeks from the monthly display, users will be able to 'zoom in' on their schedules, and quickly 'zoom out' by pressing a button. On the right will be four pages stacked on top of each other like index cards with large, labeled tabs on top of them to quickly switch between the four other parts of the program. The different views on the left will show this information:
MONTH VIEW: A window showing a calendar-style display of all days
in the current month
WEEK VIEW: The month view will satisfy this need.
DAY VIEW: A window showing the hours of a day, in the style of a
regular daytimer (ruled lines divide 1/2 hour increments)
The right side of the screen will have four subscreens overlaid on top of
each other. These pages may be easily switched back and forth by pushing
labelled tabs on top of them with the mouse. The four subscreens will be
`RSVP', `Availability`, `Employees` and `Meeting Manager`.The `RSVP` tab will have a list of meetings the user has been invited to. By clicking on an invitation they can get more information about the meeting, and accept or decline the invitation.
The `Availability' tab will show a worksheet with checkboxes and fields for users to set up their availability for meetings. In general, the user will be able to set up their usual availability over a period of time and exceptions.
The `Employees' tab will display a list of employees and their contact information such as phone number and email address. It will also show all currently defined aliases. From this screen new employees are entered into the employee database and new aliases may be defined.
The 'Meeting Manager` tab allows the user to access information about meetings they are attending or have scheduled for a selected time period. For example, if you had the day March 5, 1996 selected on the calendar the Meeting Manager would display your schedule for that day. If the user clicks on a specific meeting all information about that meeting would be diplayed as a meeting information form . If it was a meeting they had convened, they could edit this form including canceling or rescheduling the meeting. They could also get a blank version of this form to use for scheduling a meeting.
To simplify data entry by reducing typing and memory load, some input fields will be dynamically linked to the database in two ways. To begin with, double clicking an icon at the end of a field will pull up either an icon so input can be entered by mouse clicking (e.g., to select days of the week 7 boxes labeled Sunday - Saturday would be displayed clicking a box would select it), or a pull down menu from which input could be selected (e.g., names of people or group aliases currently scheduled by the system). In addition for some fields on the meeting information form the user can instruct the system to search for a match and if a unique one is found, fill in the rest of the information form (For example if a user wants to cancel a meeting but cannot remember the date and time they can enter the title to call it up and cancel it).
FUNCTION: Login To System
INPUTS:
-login name
-password
OUTPUTS:
-welcome message or
-warning messages
DESCRIPTION OF OPERATION:
- system requests the login name
- enter the login name
- verify the login name
- if the login is valid then go to next step;
otherwise show warning message 1 and request
the login again
- requests the password
- enter the password (the characters won't be
shown on the screen for security reason)
- verify the password
- if the password is valid then show welcome
message and access is granted; otherwise
show warning message 2 and request the login
again
FUNCTION: Select DAY VIEW from MONTH VIEW
INPUTS:
User left double-clicks on a day in monthly calendar
OUTPUTS:
MONTH VIEW calendar is replaced by DAY VIEW display.
DESCRIPTION OF OPERATION:
Move mouse to desired day - left double-click
FUNCTION: Select WEEK VIEW from WEEK VIEW
INPUTS:
User left double-clicks on WEEK button at left edge of desired
week.
OUTPUTS:
MONTH VIEW display is replaced by WEEK VIEW display.
DESCRIPTION OF OPERATION:
Move mouse to left edge of week in calendar ->. left double-click
FUNCTION: Change to previous month
INPUTS:
User left clicks on PREVIOUS MONTH icon at upper left corner of MONTH
VIEW display.
OUTPUTS:
Current MONTH VIEW is replaced with previous MONTH VIEW.
DESCRIPTION OF OPERATION:
Move mouse to PREVIOUS MONTH icon -> left click
FUNCTION: Change to next month
INPUTS:
User left clicks on NEXT MONTH icon at upper left corner of MONTH
VIEW display.
OUTPUTS:
Current MONTH VIEW is replaced with next MONTH VIEW.
DESCRIPTION OF OPERATION:
Move mouse to NEXT MONTH icon -> left click
FUNCTION: Select MONTH VIEW from WEEK VIEW
INPUTS:
User left clicks on MONTH icon at upper left corner of WEEK VIEW
display.
OUTPUTS:
WEEK VIEW display is replaced by MONTH VIEW; month is the one
containing the current week.
DESCRIPTION OF OPERATION:
Move mouse to MONTH VIEW icon -> left click
FUNCTION: Select DAY VIEW from WEEK VIEW
INPUTS:
User left double-clicks on desired day in WEEK VIEW display.
OUTPUTS:
WEEK VIEW display is replaced by DAY VIEW.
DESCRIPTION OF OPERATION:
Move mouse pointer to desired day -> left double-click
FUNCTION: Select MONTH VIEW from DAY VIEW
INPUTS:
User left clicks on MONTH VIEW icon at upper left corner of display.
OUTPUTS:
DAY VIEW display is replaced by MONTH VIEW display; month displayed is
the one containing the current day.
DESCRIPTION OF OPERATION:
Move mouse pointer to MONTH VIEW icon -> left click
FUNCTION: Select WEEK VIEW from DAY VIEW
INPUTS:
User left clicks on WEEK VIEW icon at upper left corner of display.
OUTPUTS:
DAY VIEW is replaced by WEEK VIEW display; week displayed is the one
containing the current day.
DESCRIPTION OF OPERATION:
Move mouse pointer to WEEK VIEW icon -> left click
FUNCTION: Print Out Currently Displayed Schedule
INPUTS: From the Month, Week or Day view, the user clicks the large and obvious
'print' button on the bottom left of the screen.
After entering her password to log into the application the main application screen appears, with a calendar view of January. Mary wants to see what went on last month, so she moves the mouse to the PREVIOUS MONTH button and clicks on it. The calendar view redraws, to display December.
Mary sees that Dec. 15,16, and 18 all have meetings. She doesn't remember what the meeting on the 18th was about, so she double-clicks the left mouse button on the 18th to bring up the DAY VIEW. The monthly calender for December is replaced by a notepad-style display of the hourly activities for Dec. 18th. Mary sees that there were two meetings on the 18th that she supposedly attended, because there are two short entries entitled "Sales Meeting" and "Project Wrapup". "Project Wrapup" is displayed in red, meaning it was high priority; Mary is pretty sure this was the final status meeting she remembers, but to make sure she clicks on the meeting title to bring up more information. To the right of the DAY VIEW window, the detailed information for the meeting is displayed.
FUNCTION: Accept or Decline Meetings INPUT: User clicks on a meeting then clicks ACCEPT or DECLINE OUTPUT: Message stating 'meeting accepted' or `meeting declined`.
o weekly (Mon - Fri) o Every Mon To Wed === === o Every Mon === o From dd/mm/yy to dd/mm/yy o Every Mon to Fri === === o Everyday o Except dd/mm/yy From HH:MM to HH:MM o Available o Not Available
FUNCTION: Set hours of availability - allow user to set up his/her availability for the appointment/meeting. INPUTS: - weekly - days range - date range - hour:minutes range - availabilty OUTPUTS: - confirmation message DESCRIPTION OF OPERATION: - User uses the mouse pointer to check the appropiate choice of the date/day range:
All functions in this subsection use the meeting information form accessed by clicking the Meeting Manager tab then clicking on a meeting listed on the tab or clicking the Schedule Meeting button to get a blank meeting information form. The Meeting information form has the following fields that can be edited as described:
FUNCTION: Display Meeting Information
INPUTS:
1) Meeting manager file icon
2) Weekly mode icon
3) Daily mode icon
OUTPUTS:
1) TOPIC - the topic of the meeting in a dialogue box
2) DATE - in the form of month/day/year
3) TIME - in hours and minutes
4) LENGTH - displayed in 30 minute intervals
5) ATTENDEES - includes the people who will attend the meeting
6) AGENDA - an outline of what will be discussed in the meeting
7) PRIORITY - a color code to indicate the importance of the meeting
FUNCTION: Schedule meeting
INPUT:
Enter information into new meeting information form as described above.
OUTPUT:
System message that meeting is scheduled successfully or if unsuccessful best
time and list of those who cannot attend (Can choose to schedule now or browse
through alternative times.) Form will display information about the meeting
once it is officially scheduled.
Function Description:TITLE: DATES (MM/DD/YY): TIME (HH:MM): optional LENGTH (30 MINUTES TIME SLOTS): ATTENDEES: AGENDA: PRIORITY:As this is a new meeting, user are required to input a meeting title, there is no limit on length of title or format of title input. DATE is the next item to be input by user. Users can click on the calendar itself or simply type in the specific date they want the meeting on. The default on the system would be to schedule meetings automatically. However, if the user plan to schedule a meeting at a specific time, the user can fill in the TIME option.
The user then inputs the ATTENDEES (people and/or group/s) invited to the meeting. Selection of people or group is provided by clicking on the list of employees icon. Additional people (not in employees list) who are required to attend the meetings can be typed in via the guest option. An AGENDA with no limits on the number of lines can then be typed in by the user. The PRIORITY follows after this. User can specify the priority of the meeting by clicking on the color code provided.
After the information is entered, the system will search for a time slot that will fit the requirements of this schedule. When the system finds an available time slot that does not have conflict with anyone, the system will proceed to inform the user as well as the people or group scheduled to the meeting of the change in their schedules. If system is unable to find a time slot that will fit everyone's schedule, system will attempt to find the time slot that fit the user's schedule and the schedules of more than half of the people invited to attend this meeting. People who are unavailable at the chosen time slot will be listed for the user, and user can decide whether to accept this schedule or reject it. If user decides to accept it, the people who are unavailable to attend the scheduled meeting are informed about it so that they can try to change their own schedules to attend the meeting if possible. System will also inform the rest of the people who are able to make it about the change in their own schedules too.
Note: Places to hold meeting are always available to hold any number of people. Places are selected by the system.
FUNCTION: Cancel Meeting
- cancel a meeting scheduled by the user
INPUT:
- enough information into form that system can locate it or click on meeting
to pull it up.
- reason for cancelation (When prompted)
OUTPUT:
-confirmation the meeting(s) has (have) been canceled giving Title(s) and list
of invitees.
Function Description:
Once the user has displayed the meetings information form (In Meeting scheduler tab)
they enter enough information to bring up the meeting scheduler form for the required
meeting (or meeting series.) When information about a meeting series but not a
particular meeting is displayed pressing the cancel button will begin the cancellation
process. When information about a specific meeting is displayed pressing the cancel
button will begin the process of cancelling the meeting. Next the system will prompt for
a reason for canceling the meeting. After the user enters this, system will ask for
final confirmation of the cancelation. If the cancellation is confirmed, all attendees
will be informed of this.
FUNCTION: Change a Meeting
INPUT:
- get meeting information form for the meeting(s)
OUTPUT:
- edited form
- changes meeting in database and informs invitees
FUNCTION DESCRIPTION:
To edit a scheduled meeting,
type over existing field text.
To save the changes,
click on SAVE button
To cancel / abort changes,
click on the CANCEL button
To add new aliases,
click on the ALIASE button (see Add Aliases)
FUNCTION: Add Employee INPUT: User CLicks on 'New Employee Button' and then types name and information of new employee into a text box OUTPUT: List of employees is changed FUNCTION: Add/Delete/Change Aliases: INPUT: If existing alias is to be modified it is double-clicked names of group members name of alias OUTPUT: Displays changed alias and/or alias list. FUNCTION DESCRIPTION: Using the available list of employees, new aliases can be created or old ones added to by entering their names or dragging them in with the mouse.
TERMS FORMAT VALUE
-----------------------------------------------------------------------------
AGENDA Characters Agenda of the meeting - unrestricted
format
ATTENDEES Characters Names of individual(s) invited to
attend the meeting.
AVAILABILITY Hours that user is available or
unavailable
CONFIRMATION
DAY VIEW Current view of
selected day
DATE MM/DD/YY date of meeting to be scheduled.
date may be entered by
* clicking on the date on the
calendar
* typing in the value
- Possible typos
* invalid format
* illogical date
LENGTH 1/2 hour frame Duration of Meeting ??
System detects for logical errors
if duration is more than **** hours
LOGIN NAME characters User's account name
MEETING SERIES: A dialogue box for user to input the
title of a series of meetings it can
be any length or left blank if the
meeting is not part of a series.
Users can click the field to display
a pull-down menu listing all meeting
series they have scheduled. They can
select the meeting series from the
pull-down menu.
MEETING SERIES DAY(S): Day or days when meeting can be
scheduled
MEETING SERIES FREQUENCY: Radio buttons for selecting daily,
weekly or monthly
MEETING SERIES TIME: Time or range of times
(Attached to MEETING SERIES DAY(S))
PASSWORD 6 - 8 length digits / & characters
MONTH VIEW Current view of
calendar month
PRIORITY Buttons Labelled HIGH / NORMAL
rank of meeting : HIGH - important
NORMAL - usual
REGULAR ATTENDEES: Employees List of people who will
normally attend meetings
TIME HH:MM Numeric
HH - hours, range 00-23
MM - minutes, range 00-59
system assigned value, if not entered
TITLE: Characters topic of meeting
- typo errors, not detected by system
WARNING MESSAGE1 Invalid login name!
WARNING MESSAGE 2 Invalid password!
WEEK VIEW Current view of
selected week
WELCOME MESSAGE Access is granted.
The following plan outlines some of the prelimary work done on this project. We will discuss:
Since this is the most complicated algorithm, and least dependent on implementation and language, our company has provided some pseudo-code. However, if we decide to implement the SQL structure for our database, we will not use this function.
The system will go through each day specified to check, and search from the start_time to the end_time for the best possible time when the most people can attend. When it gets to a new day, it calls the following function:
function GET_BEST_TIME_IN_DAY
parameters:
( date, // date to search
start_time, // beginning of time to check
end_time, // end of time to check
duration, // in .5 hours
num_people_invited,
employee_ids[1 to num_people_invited],
// person 1 is the convenor
min_people_busy // for return purposes
)
variables:
i
j
k
people_busy
timetable[people_invited+1][48] // position 0 in this array is
// for the overall availability
best time
algorithm:
min_people_busy = num_people_invited + 1
best_time = -1
for i = 1 to people_invited
{
// fills the timetable array with the schedules of people
// invited to the meeting. A 1 in a position indicates
// that the person is busy for that 1/2 hr of the day.
// A 0 indicates they are free.
GET_EMPLOYEE_DAY_SCHEDULE (date, employee_id[i],
timetable[i])
}
for j = start_time to (end_time + 1 - duration)
{
for i = 1 to num_people_invited
{
for k = 1 to duration
{
if timetable[i][j] = 1 then
{
if i = 1 then
people_busy = people_busy + num_people_invited
// if the convenor can't make it, nobody can
else
people_busy = people_busy + 1
end if
exit for // exit the for loop and check the
// next person. This one is
// already unable to attend.
}
} // end for k = 1 to duration
} // end for i = 1 to num_people_invited
if people_busy = 0 then
// this is a time when everyone is free.
best_time = j
min_people_busy = 0
return best_time
else if people_busy < min_people_busy then
// at least one person is busy. Check next
// time slot, just in case
best_time = j
min_people_busy = people_busy
} // end for j = start_time ...
return best_time
The functions are described in the Functional Specification area of this document. However, the following should highlight the relationships:
Login
|
|
-------------------------------------------------
| | | |
Availability Calendar RSVP Meeting Manager
| (message system) |
| -------------------------------------
\ | | |
------------------- Daily Schedule Convened Mtgs
|
|
Arrange Meetings
The implementations depend on what kind of platform and language we are going to use.
We will build the databases in Paradox, and use SQL for the maintaining of the database (adding, updating, deleting).
The minimal system (Phase 1, slated for mid-February) will include all the features outlines in the functional specifications with the following exceptions:
Project Overseer:
Software Design and Implementation:
User Documentation:
Quality Control and Testing:
This system is meant as a tool to assist a company in planning meetings, but as such, it is also designed to be useful for the employee as a daily planner.
The employee is considered available at all times for a meeting, unless he/she has made themsleves unavailable. This is as an added incentive for the employee to keep their planner up-to-date, and thus make the system as reliable and effective as possible.
What we have given you is a proposal for a daily planner system. Consider this our interpretation of your requirements for the system. If this interpretation does not correlate with your idea of a employee scheduling system, please understand that Axiom Enterprises is dedicated to the customer and what the customer demands.
If you find our proposal acceptable, make any changes you deem necessary, and if possible, email your amendments to me on or before January 30th, 1996.