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.