CPS 3525 project 3 - team project
Project 3 is a team project based on the following requirements.
Using a C++ program to do the followings
- Front-end (web page), a web interface using POST method for users to
- select a text file to upload to the server
- select a US state file to upload to the server
- A submit button to upload the two selected files at one time.
- Back-end (must implmented in C++ programs)
- Process and extract information from the upload file, simulate SQL inner join and aggregate functions (SUM, COUNT, AVG), and display the results on the browser.
Team work:
- Each team should have 4-5 people
- Each person will need to write one C++ program.
- Need to compile each C++ program into an object file, *.o.
- Need to intergrate and link these object files into a binary executable file which will be the cgi program called by the Apache server to handle your front-end input.
- The results generated by the C++ programs should be displayed back to the browser.
- Each team should work on a different data file from the followings, in addition to process the upload state text file.
- Process US Census text file 1 (columns: married,divorced,never_married). Download the Dataset 1.
- Process US Census text file 2 (columns: income_household_median,home_ownership,hom
e_value). Download the Dataset 2.
- Process US Census text file 3 (columns: self_employed,unemployment_rate,education_
stem_degree). Download the Dataset 3.
- Process US Census text file 4 (columns: disabled,commute_time,poverty). Download the Dataset 4.
- Process US Census text file 5 (columns: hispanic,veteran,health_uninsured). Download the Dataset 5.
- Process US Census text file 6 (columns: income_individual_median,family_size,famil
y_dual_income). Download the Dataset 6.
- Every team must use the state CSV file. Download the state text csv file.
- (70%) The project should be consist at least 5 C++ programs, modules, or objects based on the following requirements:
- C++ csv praser. Download the C++ source code.
- (10%) One component recieve the two uploaded files, processes and validate the data are correct.
- (10%) One component processes and selects the needed fields (state, dcol1, dcol2, ...) from the upload data text file.
- (10%) One component processes and selects the needed columns (state, scol1, scol2, ...) from the upload state text file.
- (10%) One component joins and merges the two text files (data and state) based on the state abbreviation (e.g. 'NJ') into one data set (state, scol1, scol2, dcol1, dcol2, ...)
- (10%) One component aggregates every data column (dcol1, dcol2, ...) for each state. The aggregate function should be: SUM, AVG, COUNT.
- (10%) The results should be in HTML < TABLE border=1 > tag. Each state should have only row in the output. So, only 52 rows (title + 50 state + DC) in the output TABLE.
- (10%) The results should highlight the states in red that has maximum and minimum values of the SUM, AVG and COUNT of the data columns. The cell with the maximum value should be filled with yellow color, and the cell with the minimum value should be filled with green color. There could be more than one states and values for the maximum or minimum.
- A main program is required to define the objects or data, integrate/call the components, pass the data to components, and receive the results returned from the components.
- It is recommended to have Object Oriented Program Degin for the tasks.
- (30%) Each team will make a presenation at the end of the semester. The presentation should demonstrate the followings in live:
- Explain the author of each code and how the tasks were splited and assigned.
- (5%) Compile the C++ programs into objects and link the *.o files to a binary executive file, show the timestamp, and put it at the correcct cgi-bin location.
- (5%) Open the front-end browser, select the data file and the State file, upload both files at one submit button.
- (5%) Show the results on the browser.
- (10%) Each author should explain their own C++ source codes.
- (5%) Explain how the C++ programs were intergrated.