The Capstone Experience for the BSU Computer Science BS First (solo) Project



Project 1 Sprint 4


Summary: In this final sprint in your first project, you will allow a professor to claim a CUBES project


Tools:

We will continue to use the same version control, continuous integration tools and programming language requirements that we put together for parts one - three.


Sprint 4: A GUI with data visualization:

You have come a fair ways in creating a project that is useful and built in parts. This last sprint will finish it up and add lots of useful features. You continue to be self directed and choose a lot of the 'how' yourself as long as you accomplish the what (on my machine of course), This sprint takes more time and will be worth a lot of  credit just like sprint3


Due: Sunday March 5th  at 11:59pm (officially Spring break starts on Monday the 6th) I'm happy to take assignments early.

New Code

Summary: Now add to your GUI to allow the user to select a CUBES project to claim.


Production Code

The steps below are numbered only to make it easier to read. If you find it easier to work on the deliverables in a different order please do so.


  1. When your program first starts up, with the GUI, allow the user to choose to either
    1. update the data in the database (undergrads only since the grads are already doing this)
    2. run the data visualization
  2. When updating the data:
    1. get all of the data from wufoo - otherwise don't use the wufoo api if not updating the data.
  3. The data visualization (begun in sprint 3)
    1. Display the data in the list and let a user select any item to see the complete data as in sprint3
    2. let the user select a CUBES project to claim. Dr. Jacobson suggested using a button to do this, but use any approach that makes sense and is easy to use.
      1. undergrads only:
        1. make sure this claim is reflected in your database (foreign key the records for the CUBEs project and the faculty claiming it together - possibly with a third table)
        2. once a project is selected, change its appearance in the list some how so it is easy to see which projects have been claimed
        3. when selecting a claimed project in the list, display both the full CUBEs project data and the information about the faculty/user who claimed it.
      2. Grads only:
        1. somewhere in your program create a 'constant' (python doesn't really have constants, but the other languages we are using do) that will contain the CUBEs administrator's email. address
        2. when a user claims a project, send email to the CUBE's administrator's email address. (use a test address that you set up when testing so you don't flood someone's email)
          1. If you haven't done this sort of thing before, have a look at a couple of ideas (you will of course have to make adjustments to make it work for you)
          2. Python
            1. https://www.courier.com/blog/three-ways-to-send-emails-using-python-with-code-tutorials/
            1. https://realpython.com/python-send-email/
          3. Java
            1. https://netcorecloud.com/tutorials/send-email-in-java-using-gmail-smtp/
            2. https://www.geeksforgeeks.org/send-email-using-java-program/
          4. Javascript
            1. https://stackoverflow.com/questions/13231125/automatically-open-default-email-client-and-pre-populate-content
            2. https://www.geeksforgeeks.org/how-to-send-an-email-from-javascript/
  4. User records
    1. allow the user to fill in their own data including
      1. first name
      2. last name
      3. title
      4. bsu email  (use this as the primary key)
      5. department
    2. store the above information in a table
      1. undergrads only: in your local database that has the wufoo data in another table
      2. grads only: this can either be on your server or a local database
    3.  When a user is filling in their data, prompt them to enter their email first, if their record is already in the table, then fill in the rest of the data for them

NOTE: I've been very careful not to tell you how to display it, only what to display. use your creativity to show all of this information in a useful format.

Tests:

Add additional tests to your test suite. You should include tests to make sure your user creation works  and that your population of the user data works when entering an email address of an already existing user. Add one more test of your own.

make sure all of the previous tests still work.


For the GUI, either use a tool like selenium (which you will have to learn on your own), or write a detailed manual test plan (with pictures)  to explain what should happen when your graphical elements are invoked. There is a lot of disagreement in the industry about whether automated GUI tests are worthless or vitally important.



DevOps:

as before, update any github actions with dependency management and anything else you need to make the Continuous Integration continue to function.