Database代写:CMPSC431WLionAuction


Project Kickoff & Progress Review
Database Population
Functionality Implementation
Reflections and Group Representation
Final Deliverables

Project Description

In Phase II, you will be provided with the following materials: i) a database
schema design and ii) CSV files which contain the raw data (released on Canvas
under /Modules/Project/). You are supposed to populate the data in accordance
with the schema into the database. In addition to this, you will implement the
web application for LionAuction and demonstrate the functionality of
LionAuction as detailed in Task 3 below.

Task 1: Project Kickstart and Progress Review

We will kickstart the implementation phase of the LionAuction project soon and
have a project review to serve as the checkpoint of your progress. You are
expected to complete and showcase to the teaching team at least the following
tasks:

  • Database population (Users table)
  • UserLogIn (Basic Authentication)
    You will be given 5 minutes to demonstrate the above. We will post the
    schedule for the progress review and signup sheet for your respective project
    demos. Please note that all files of your code have to be submitted on CANVAS
    in a zip file. You have to include a ReadMe file to describe your code
    functionality and control flow. Your code has to be properly documented.

Task 2: Database Population

The first task is to create and populate the database. You will be provided
with large data files where the columns contain values for various fields.
However, please note that those are RAW data. In other words, they may not
comply to the integrity constraints. You are supposed to organize the raw
values in the files based on the schema provided to create all of the
necessary tables, define primary keys, foreign keys, and specify any integrity
constraints as appropriate. In addition, define any views of the schema as you
see appropriate. Again, please inspect all the columns and the corresponding
data types in the CSV files before you proceed to populate the database. To
support additional functionality you wish to add, you are encouraged to
augment the schema and add your own data. You can use Python libraries like
Pandas or other database facilities/tools to parse the CSV files and insert
values to the table. You should provide and maintain the scripts (or
documentation of steps) used in your data population, so that you can easily
regenerate the database or restore the database states. There were some rare
cases of data loss or tables being corrupted during implementation. Data
loss/corruption cannot be used as an excuse for project incompletion or
deadline extension. You need to be prepared for such events.

Task 3: Functionality Implementation

You need to prototype (i.e., implement) the system functionality as specified
below and demonstrate how they operate on your final system prototype. The
following is a description of the expected functionality.

  1. UserLogIn (Complete): This is for a user (seller, bidder or helpdesk) to log in. Note that the log-in information of users is stored inside the LionAuction system (after data population). The system recognizes the user by his/her email and password. Please be sure that the user’s password is hashed when you store it and it is not displayed while being entered. Note that a user may have multiple roles (i.e., seller, bidder or helpdesk). Extending the basic version of the UserLogIn, the LionAuction system should facilitate its users to specify their roles in the login process and allow them to switch roles after login. Based on the specific role, a user will enter a welcome webpage, where allowable operations can be performed by the user. As part of UserLogIn, personal information of the user (e.g., a bidder has name, email ID, age, gender, major, billing address, which includes street, city, state and zipcode, last four digits of credit card number and so on, while a seller and a helpdesk staff have other information) can be displayed/checked based on your design. This welcome page should also provide entry points for other operations, e.g., a bidder may browse the categories to find an auction listing of interest; showing the status of those auctions the bidder has participated in so the bidder may continue to bid; and so on. Please consider possible scenarios in your design to provide a good user experience (UX).
  2. CategoryBrowsing: The auction listings available at LionAuction are categorized based on a predefined category hierarchy in the categories table. Each node (i.e., a category with a descriptive name) is associated with a set of auction listings which belong to the category and a number of subcategories, each of which includes its own auction listings. The root of the hierarchy, labeled as ‘All’, do not have any auction listing associated but a number of top-level subcategories. When a user clicks an auction listing, the auction details, such as auction title, product information, seller information, a product photo (optional), quantity, remaining number of bids, and so on, are displayed, along with a button to facilitate bidding. A user can traverse the category hierarchy by clicking on a subcategory to see the product items under this specific category. In each traversing step, you are required to dynamically query that database to find the next-level subcategories for display Note that the category hierarchy exists in the database logically. Retrieving the whole set of categories all together to build (hardcode) a category hierarchy in the application space is not preferred and will receive only a partial credit.
  3. AuctionListing: This is for a seller to publish/take off an auction listing in LionAuction. For publishing, detailed information of an auction listing (e.g., title, product details, category, and so on) should be entered before the listing is published. The published auction listing should be immediately available for display in its category when users browsing the category hierarchy. The seller can also make changes on an auction listing (active or inactive, but not sold listings). The seller may also take a published auction listing off the market, but useful information about this auction listing, including the remaining number of bids and reasons to take it off the market, should be maintained. Note that the provided schemas and datasets do not have information about remaining number of bids and reasons to take it off the LionAuction market, so you need to extend the database to support it for new auction listings. As part of this functionality, the auction listings of a seller should be properly grouped (as active, inactive and sold) and displayed to the seller for further actions, i.e., take off market and make changes.
  4. AuctionBidding: This is for a bidder to place a bid on an auction. As described previously, a new bid must be at least $1 higher than all previous bids and must be placed before the auction ends (controlled by Max_bids instead of an auction stop time, for ease of demonstration). After a bid is placed, the auction details (also see that in CategoryBrowsing), along with updated number of remaining bids, should be displayed. A bidder cannot bid again until another bid is placed by a competitor. Please consider the scenarios of bidding to provide a good user experience. Once the auction ends, all bidders should be notified with the bidding result. The notification of the winning bid (i.e., the final bid with a price greater than the reserve price) should lead the bidder enter the payment process, i.e., a new page where credit card information can be entered by or retrieved for the buyer. When the payment is submitted, the payment transaction is recorded in the database. Meanwhile, the status of the auction is changed to “Sold”, i.e., it is still maintained in the database instead of being deleted. However, this auction listing should not be available/found/displayed in LionAuction anymore.
    In addition to the functionality listed above, you may choose to implement one
    or more of the functionalities below for extra credits.

Optional functionality to implement:

  1. HelpDeskSupport: To support this functionality, sellers and bidders should have interfaces (i.e., webpages) to send their requests to the team of helpdesk staffs, initially assigned to a pseudo staff [email protected] . The types of requests, including change user ID, add a new category, and performing a market analysis. At the welcome page to a HelpDesk staff, information of unassigned requests and requests have been assigned to the staff should be displayed, so the staff can claim an unassigned request and perform an assigned requests. Due to limited time in the final review, you only need to implement the request for “adding a new category”. After the request is completed, the request status becomes “completed”, which should be reflected properly in the system.
  2. AccountRegisterUpdate: This allows a new user to create a new account and update personal information in the account, except user id which can only be changed by a
    HelpDesk staff.
  3. AuctionPromotion: This is for a bidder to quickly see/find an auction in promotion. A seller can promote an auction list by paying a promotion fee (i.e., 5% of the reserve price) in order to display it on the top of the category hierarchy, i.e., the All node/page. Note that a promoted auction will also be displayed when its associated category node is visited.
  4. Searching: A user can search the auction lists by entering some keywords. The search result is displayed to the user.
  5. Rating: After a bidder wins an auction and competes the payment, the bidder can rate the seller. The rating on the seller is recorded and used to calculate a new average rating of the seller. The new rating should be reflected as part of seller information when it is displayed in the system.
    Please note that while the correctness of functionality above is critical, the
    design of a userfriendly web interface and user experience is also very
    important to the success of the prototype. As we expect this system to impress
    Mr. Dude and potential investors, and provide excellent user experiences to
    its users, i.e., the students of Lion State University, please pay attention
    and effort to the web design of the prototype.
    Finally, risk management is critical to your project. To protect your
    implementation effort and product from disasters, please backup all the data,
    codes, scripts, and documentation in safe external storage.

Task 4: Group Representation - Reflection

At the end of project, the course members of CMPSC431W will form teams to
revisit the (different) decisions made by team members throughout different
stages of their projects. It’s beneficial for course members to flash back
what were expected at the beginning of the project and reflect on whether the
goals set back then have been met. Make a comparison between what was
expected, and what has been achieved. Discuss the lessons learned - for
example, why some parts of the required functionality were not completed (if
any), how you added some new features (and why, if any), how you would proceed
with the project the same or differently in the way you do in the course, and
your thoughts about the project and suggestions to Mr. Dude, etc. Have a team
to make a group presentation will allow the group members to share thoughts
and exchange experiences learned from the project. The group members will
obtain in-depth insights to enrich the presentation through brainstorming,
discussion and collaboration and pave their roads toward bright futures.
Please plan and include the reflections as part of the group video
presentation (see more details of the video presentation in the Deliverables
section below).

Final Deliverables

The final deliverables in Phase 2 include a video presentation and a
demonstration of the LionAuction system.
In group video presentation (no more than 6 minutes), please discuss/review
different tasks you performed at different stages of the project, i.e., not
only the prototype implementation in Phase 2 but also the database design in
Phase 1 to make a reflection. Note that the video presentation is not a
recording of your project demonstration. Please exploit the opportunity
provided by the group work to revisit/compare various important design and
implementation decisions you considered to share thoughts, suggestions and
ideas for future. More information and guidance regarding the group work will
be discussed in classes and announced on Canvas. Your group video presentation
should be submitted via Canvas.
In the project demonstration, you are expected to show your prototype
implementation of the LionAuction system to the teaching team. We will test
the prototyped website and check some/all of the compulsory tasks with data
from the CSV files provided to you. You may also show the optional
functionality for extra credits. Please be well-versed with your code as we
may ask you to explain the web/application server code and the queries you
wrote. Please note that all files of your codes, scripts, databases and
documents, organized in a project directory ready for execution in PyCharm
Prof. or the IDE of your choice, have to be submitted on CANVAS as a zip file.
You have to include a ReadMe file as requested previously in Web Programming
Exercise. It should provide i) context of your code (i.e., background
information such as what they are used for); ii) features (i.e.,
functions/operations of the codes); iii) organization (i.e., how the files are
organized); iv) instructions (i.e., how to run the code, including how and
where to load the files into PyCharm Professional). Your codes have to be
properly documented for full credits.
As stated in classes and the syllabus, academic integrity is the most
important – there will be no tolerance and exceptions towards violation! An
incomplete but attempted submission is always far better than committing an
academic integrity violation.
Your extra efforts will be rewarded with extra credits!


文章作者: SafePoker
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 SafePoker !
  目录