Giter Club home page Giter Club logo

jonschumaker's Projects

pps_project icon pps_project

Consider the design of a database for a web site that allow people to buy and sell a cypto called PPS (see website testing.ppswap.org). Only registered users can buy and sell PPS. Each user is identified by a userid, which is an email, first name, last name, birthday, address (street number, street, city, state, and zip code), balance of PPS and balance of dollar. Initially, both PPS and dollar balances are zero. A user can withdraw and deposit dollars. A special user root (this is the only user whose id is root and not an email) initially will have the whole supply of PPS, which is 1T. A user will sell and buy PPS only with this special user root (in real life, this special root might be just a smart contract). The price of the PPS is set to 1M/$ initially. For the simplicity of this project, we assume each buy will increase the price by a little: each dollar can buy 1 less PPS after each buy. In the same way, each sell will decrease the price a little bit: each dollar can buy 1 more PPS after each sell. Moreover, A user can transfer PPS to another user voluntarily. A buy operation by Kathy will do the following: 1) Kathy will specify how many PPS she will buy; 2) the current price of PPS is shown, and the corresponding dollar will be calculated; 3) if there is enough balance of dollar for this user and enough balance of PPS for root, then the corresponding number of PPS will be transferred from root to Kathy, and dollars from Kathy to Root. A sell operation will do the opposite. The transfer operation by Kathy will be conducted as follows: 1) Kathy will specify the recipient by an email, say [email protected], 2) Kathy specifies how many PPS she likes to transfer to john; 3) If there is enough PPS balance, then this amount of PPS will be transferred from Kathy to John. All deposit, withdraw, transfer, buy, and sell records need to be maintained in the database: which operations have been performed, the amount involved, when, and by whom, etc for future querying. In particular, the following interfaces will be implemented: 1) Balance page:each user can easily check the balances of her PPS and dollar; 2) Activity page: each user can easily check all her activities anti-chronologically, including deposit, withdraw, transfer, buy, sell, etc. Users can also follow each other so that followers can navigate and see the information of followings easily. A user can change her preference to determine whether her followers can see her personal sensitive information or not (such as balances). By default, all information can be seen by followers and followers only. For all parts of this project, your system must be web-based. Some simple GUI interfaces are required for each functionality. All functionality must be performed via the interface of your system, direct SQL statement execution via any tools (MySQL workbench) can only be used for debugging purposes. Part 1Use Java and SQL, implement the following functionality:1. The website root user has a username “root” and password “pass1234” (Note this is a different root – it is for your website, not a user for the underlying MySQL database system). For the root user, implement a button called “Initialize Database”. This button will only be displayed after the root user signed in successfully. Each time the root user clicks the “Initialize Database” button, the following events will happen: 1) delete all existing tables (probably 5-10 tables) in the database automatically, 2) create all tables necessary for this project; and 3) each table will be inserted with at least 10 realistic tuples (which is hard-coded in your Java program). Make sure you initialize the balances of the root user and initial price of PPS properly. Each time we test your project, we will click this button first and then go from there. This button will need to be reimplemented each time you change the design of your database, for example, in part 2 and part 3 of the project. 2. Implement a user registration and login interface so that only a registered user can login into the system. Sign up for a new user with information such as: username (which is an email), password, password confirmed, first name, last name, age. Duplicate username should be detected and fail the signup. Unmatching passwords should be detected as well. How to submit:1. Only one submission is required, from either group member, but make sure the names and access IDs of both group members are included in the submission in the readme.txt file. 2. The source code package. All files (source codes, class files, bat, and txt) should be contained in a war file called cscxxxx_xx_part1.war for a student whose last name is xx. Please upload the file at canvas. One of the files should be called readme.txt which includes the information of the group members as well as any instructions to install, configure and run your project. In readme.txt, please clearly list the contributions made by each partner to this project, including the number of hours working together.3. A rumble video that are presented by both partners. You can use user a recorder: https://www.apowersoft.com/free-online-screen-recorder. and upload your video to Rumble. We only need you to record your screen and your voice for the project demo, not your face. You only need to send a URL to us. You can create slides for your presentation if that is helpful. Submit the URL on canvas for each part of project, and (optional) email the URL to the TA and the instructor with a short description.4. You need to come to the TA’s office hours or make an appointment with the TA immediately if you fail to complete part 1 by the due date. Please send an email to the TA with a CC to me to list all the challenges of your project and where exactly you need help. TA will help you through part 1 of the project. Otherwise, you might not be able to do the remaining parts of this project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.