Requirements Overview of types: Seller Buyer Location / Map Garage Sale Garage Sale Rank Product Product Type Executable: UWOGarage Must accept an '-admin' option indicating admin mode. When the program is opened: Ability to quit anytime/where Start screen Allows user to log into seller/buyer mode Admin Mode: Create Users Unique user-id chosen by admin /[0-9a-z]{4}/i, case insensitive Password /[a-zA-Z]{3}/, case sensitive, default: 'aaa' First Name /[a-zA-Z]{1, 20}/i Last Name /[a-zA-Z-]{1, 20}/i Phone Number /[0-9]{10}/ Default start latitude /-?([0-9]{1,3})\.([0-9]{3,6})/ Default start longitude /-?([0-9]{1,3})\.([0-9]{3,6})/ Default zoom level, 1 <= zoom-level <= 23, default highest = 18 Edit users Ability to reset password to default Can Change first name last name phone number default latitude default longitude default zoom level Can't change: user id List Users Sorted by: user id first name last name Delete users Remove all associated posted garage sales Remove all garage sale rankings Add Product Category Unique Category Name /[a-zA-Z0-9 ]{1, 50}/ Delete Category Seller Mode: First log in / When the password has been reset to default: Supply default 'aaa' password Supply a new password /[a-zA-Z]{3}/ Update password After first log in: Three log in attempts, upon failure the program will stop Add/Edit Garage Sale Latitude /-?([0-9]{1,3})\.([0-9]{3,6})/ Longitude /-?([0-9]{1,3})\.([0-9]{3,6})/ Address corresponding to latitude/longitude: Street /.{1, 50}/ City or Closest Town /.{1, 20}/ Province Date of the sale Time of the sale Categories of products offered (cardinality: zero or more) Note (optional input), /.{0, 200}/ Bulk Add/Load Garage Sale Option to Remove all existing garage sales and start anew with the bulk load file Add bulk load sales to existing sales File Format (assume one large regexp, order is important): /area: -?([0-9]{1,3})\.([0-9]{3,6}) -?([0-9]{1,3})\.([0-9]{3,6})/ /stre: .{1, 50}/ (truncate if too long) /city: .{1, 20}/ (truncate if too long) /prov: (AB|BC|MB|NB|NL|NS|ON|PE|QC|SK)/ /date: ((0?[1-9])|[12][0-9]|3[01])\/((0?[1-9])|10|11|12)\/([12][0-9]{3})/ (day / month / year) /time: ((0?[1-9])|1[0-9]|2[0-4]):((0[1-9])|[1-5][1-9]) Formatting error messages (include line number): If lat/long are incorrect / out-of-bounds If the province is incorrectly formatted If the date is incorrectly formatted, in the past If time is incorrectly formatted If there are any blank lines Notes Order is important On finding an incorrectly formatted file: Print error message Line, file Allow bulk undo (optional add-in feature, makes sense) Delete Garage Sale Total Rank The average of all rankings of a given seller's garage sales Buyer Mode: First log in / When the password has been reset to default: Supply default 'aaa' password Supply a new password /[a-zA-Z]{3}/ Update password After first log in: Three log in attempts, upon failure the program will stop Rank Garage Sale Ranking bad(1) <= rank <= excellent(5) Max one ranking per sale Ranks can be changed/updated View Garage Sale Search (allows composition) Criteria Find sales within a given radius, in kilometers, of a given lat/long User id Date, sales on that date Date Range, sales within the range Category, one or more Ranking Seller ranking (overall average of sales) <= = >= Sale ranking <= = >= Results Map showing way-points of all sales Uses default latitude and longitude for the given user Clicking a way-point shows sale info Sales info includes: seller first/last name, phone number Info can be printed Export to HTML and open up IE, if not, the default browser Themes Three available themes