NAME Circle your lab section Section 8, Thurs 6:30PM.
  Section 3, Thurs 8:30AM. Section 9, Fri 2:00PM.
EMAIL ID Section 4, Thurs10:30AM Section 10, Thurs 8:30PM.
  Section 5, Thurs 12:30PM. Section 11, Fri at Noon.
STUDENT ID Section 6, Thurs 2:30PM. Section 12, Fri 4:00PM.
  Section 7, Thurs 4:30PM. Section 13, Fri 10:AM

FINAL GRADING CRITERIA

POINTS

SCORE

Initial program comments identify, student ID, email, lab section number (no partial credit allowed)

20

 
Program submitted electronically under mydate.cpp (no partial credit allowed)

20

 
Program compiles without serious warning messages, e.g., ones that indicate program incorrectness. (no partial credit allowed)

50

 
All member functions only use member inspectors to access day, month, year attributes (no partial credit allowed) 50  
All member functions only use member mutators to set day, month, year attributes (no partial credit allowed) 50  
Member function setDay() correctly reacts to day value less than 1 10  
Member function setDay() correctly reacts to day value of 31 or greater for months with 30 days. 10  
Member function setDay() correctly reacts to day value of 32 or greater for months with 31 days. 10  
Member function setDay correctly reacts to day value of 29 or greater for February when the year is not a leap year. 10  
Member function setDay correctly reacts to day value of 30 or greater for February when the year is a leap year. 10  
Member function setMonth() detects illegal months 10  
Member function setMonth() reacts correctly when existing day value is legal 20  
Member function setMonth() reacts correctly when existing day value is now illegal 20  
Member function setYear()  reacts correctly when year value is less than 1 10  
Member function setYear()  reacts correctly when year value is a leap year 10  
Member function setYear()  reacts correctly when year value is a leap year and existing day value is now illegal 10  
Member function extract()  does not falsely report transient illegal values in updating object (e.g, update from 11/29/2000) 20  
Member function extract() sets date to 1/1/2000 when user does not type '/' to separate day/month/year in the input 10  
Global function isLeapYear() reacts correctly when year value is a multiple of 400 5  
Global function isLeapYear() reacts correctly when year is a multiple of 100 but not 400 5  
Global function isLeapYear() reacts correctly when year value is a multiple of 4 but not 100 5  
Global function isLeapYear() reacts correctly when year value is not a multiple of 4 5  
Member operator == reacts correctly when the two dates match 10  
Member operator == reacts correctly when the two dates mismatch 10  
Member operator ++  reacts correctly when current day value is in the middle of the month 10  
Member operator ++ reacts correctly when current day value is end of month and month value is middle of the year 10  
Member operator ++ react correctly for New Year's Eve 10  
Extra credit
Member operator + reacts correctly to number of days less than 0 10  
Member operator + reacts correctly to number of days greater than 0 10  
Member operator + reacts correctly to number of days greater than 0 and does not use recursion or loops either directly or indirectly

20

 
Total

420