Sonoma State University
Department of Computer Science
CS-370: Software Design and Development
Programming Assignment 4: Display Auctions

OBJECTIVE

  • Write a program that displays all unexpired auctions ordered by time ending soonest. Do not display expired (closed) auctions.

SPECIFICATIONS

User Interface:
  • If a user is currently logged-in to the auction website, display all listings with a button or link labeled "Bid" except for items owned by the user themself. Users cannot bid on their own items.
  • If a user is not currently logged-in to the auction website, display all listings without a "bid" button or "bid" link.
Implementation:
  • You may write your Common Gateway Interface (CGI) application in PHP, Python, Perl, Java, C, or C++ (please include a Makefile if writing in C or C++).
  • All form processing must be done on the server-side via CGI.
  • Third party authentication software such as Google, Meta, etc. may not be used.
  • Your application must use the MySQL Relational Database Management System (RDBMS).
  • Your program must generate HTML 5 compliant output. Before generating dynamically-generated web content, create static web pages that you can submit to the World Wide Web Consortium Markup Validation Service at https://validator.w3.org/

SUBMITTING YOUR WORK

  • Please upload your source code (including Makefile if applicable) as a zip or gzipped-tar file.

Programming Assignment 4 Rubric

CRITERIA RATINGS POINTS
Compilation:
Web-base application uses the Common Gateway Interface and runs on the Blue web server in the CS department at Sonoma State University.
Excellent
2 points

Application runs on the Blue web server at Sonoma State University via the Common Gateway Interface. No HTTP warnings or errors occur. The application is written in PHP, Python, Perl, Java, C, or C++.
Satisfactory
1.4 points

The application runs on the Blue web server at Sonoma State University via the Common Gateway Interface but some HTTP warnings occur. No HTTP errors occur. The application is written in PHP, Python, Perl, Java, C, or C++
Needs Improvement
1 point

The program relies solely on client-side Javascript applications for form processing.
Unsatisfactory
0 points

The Common Gateway Interface is not implemented; OR an HTTP error occurred.
2 points
Authentication:
Does the server-side application require user-authentication?
Excellent
4 points

Web-based application requires user-authentication. If a user is logged-in, the web-based application will time-out after five minutes of inactivity. In such cases, the server will prompt the user to authenticate again before continuing. To authenticate, the user must enter their email address and a password or register as a new user with an email address and a password. No third party authentication tools are utilized (e.g. Google, Meta, etc.). No HTTP errors or warnings occur.
Satisfactory
2.8 points

Web-based application requires user-authentication. The web-based application does not time-out after five minutes of inactivity. No third party authentication tools are utilized (e.g. Google, Meta, etc.). No HTTP errors or warnings occur.
Needs Improvement
1.5 points

Web-based application requires third-party authentication tools (e.g. Google, Meta, etc.).
Unsatisfactory
0 points

No user-authentication software was implemented.
4 points
MySQL implementation:
MySQL is accessed through a database interface on the server side.
Proficient
3 points

MySQL database is accessed via a server side application running on Blue. The server side is able to send read and write requests to update data managed by MySQL. All data is sanitized before reads or writes to the MySQL to ensure no SQL injections can occur.
Needs Improvement
1.5 points

MySQL database is accessed via a server side application running on Blue. The server side is able to send read and write requests to update data managed by MySQL. No SQL statements are sanitized before sending to the MySQL server. Therefore, an SQL injection can occur!
Unsatisfactory
0 points

MySQL is not accessed on the server-side.
3 points
HTML version 5 compliant output:
Does all dynamically-generated HTML output conform to HTML 5 standard?
Excellent
1 point

All dynamically-generated output is HTML version 5.0 compliant as verified by the HTML5 validator.
Satisfactory
0.7 points

One error occurs in the dynamically-generated HTML output when tested with the HTML5 validator.
Needs Improvement
0.2 points

Two or three errors occur when the dynamic web content is validated with the HTML5 validator.
Unsatisfactory
0 points

Four or more errors occur in the dynamic web-based output when validated in the HTML validator; OR no web content is output.
1 point
User Interface:
The server-side's application interface.
Excellent
4 points

The application displays all current auctions ordered by ending-soonest. The user does not need to authenticate to view existing listings. However, if the user is authenticated and has been active within the last five minutes, each auction listing displays an extra button (or link) allowing the user to either submit a bid on an item OR increase their bid on an item. The application will not allow users to bid on their own items they are selling.
Satisfactory
2.8 points

The application displays all current auctions ordered by ending-soonest. The user does not need to authenticate to view existing listings. However, if the user is authenticated but inactive for five minutes or more, each auction listing displays an extra button (or link) allowing the user to either submit a bid on an item OR increase their bid on an item. The application will not allow users to bid on their own items they are selling.
Needs Improvement
1.6 points

The application displays all auctions but the auctions may have expired; OR the application lists the auctions in a different order than ending-soonest.
Unsatisfactory
0 points

The user can NOT list items for sale by auction.
4 points
Total points: 14