Course Project InformationProject OverviewAs a team of five to six programmers, you will assist in the implementation of a data processing system. Each member of the team is to code one or more functional areas of the project. When complete, the individual components will be integrated into one program, which will be finalized in a project demonstration held the last week of the quarter. While the final result is one integrated program, each team member’s work is to be maintained as separate file(s). If this is not possible, clearly document each portion of the project including the name of the developer. Project GoalThe purpose of this project is to create an interactive social media program, connecting users. The program will maintain user profiles (non-graphic is fine), storing information about their names, locations, interests and a list of their friends, as well as a user name and password for each member. Members should be able to log in to their profiles, add new friends, search for friends, and also get friend recommendations from the program. Menu RequirementsAfter logging in, the program should display the user profile and also present a menu of options to the user. Your project must offer the following options to the user: - View My Friends -View All Friends -View a Friend's Profile -Remove a Friend - Search for a New Friend - Search by Name - Search by Interest - Get Friend Recommendations - Quit The Search for a Friend and Get Friend Recommendations options should also allow the user to add the friend to their network of friends. At the end of the program, when the user selects the Quit option, the data should all be written to a file to allow for modifications to the data to be read in the next time the program is executed. image source Data and Topic RequirementsData from a file must be preloaded into your program upon start up. An initial file containing at least 15 user profiles is required for the purposes of this project. Your team must select a unique group of famous persons as the initial input to your program. These persons should all come from one specific area of U.S. culture. Some possible examples:
Note that no other team in the class should have your same data set. Therefore, the instructor may require you to select a different data set if your first choice is already selected by another team (or if deemed inappropriate for a professional setting) Once you have gathered your collection of data, you will be required to create a class whose fields are the attributes of this data set. For example: public class User { private String firstName; private String lastName; private String userName; private String password; private BST<User> friends; private List<String> interests; } Each record within your data set should be an instance of this class. Note that you should store at least 2 interests per user. Required Data Structures and Additional SpecificationsThe system’s data structures must include: 1. A Binary Search Tree, sorted according to friend name, to maintain the list of friends for each user. This can also be used to search your friend list via name. 2. Two hash tables - one using interest as the key and one using name as the key. The two hash table will allow users to search for friends by name or by interest. Once a person is located, the user should have the option to add this person to his or her friend list. 3. A graph to store the network of relationships among the users. Since the graph will be storing data about Users. Unlike your lab assignment where each vertex is an integer, here each vertex will be a String or User Object. Therefore, you will need to assign each user an integer id. You can keep track of which user was assigned which id by storing an id field in your User class (look up the id for a parcticular User), and also keeping a vector where id numbers are the index and the vector stores User objects (look up by index which User was assigned that index). 4. Optional: A linked list to store a list of interests in the User class. Part of the project will require you to draw a UML class diagram to show the Hash Tables, the BST and the Graph, and other classes, as well as how they interrelate within the program. Friend Recommendations and the Friend Graph
Expectations for Team MembersYour grade for the project will be a factor of the team score weighted by a peer evaluation. In addition to writing and debugging code, each member of the team will:
Suggested Team AssignmentsEach member of the team must write at least one unit of code. If the team is small, team members may have to write multiple units. Team Member 1: Pro Team Coordinator: Data structure design coordination, main(), Integration, Testing, Project presentation coordination, making sure reports submitted on time, setting up meetings, keeping everyone on track, interfacing with the instructor about any issues that arise. Team Member 2: BST Algorithms Specialist: Implement BST Insert, Delete, Display. Write User class. Team Member 3: Hash Table Whiz: Implement two hash tables (name and interests as primary keys) Team Member 4: Graph Expert: Implement the Graph Class, including BFS. Code Friend Recommendation system. Team Member 5: File I/O and User Interface Ace: Create user interface. Connect menu of options to the data structures. Read and write data from/to a file Project Reports The following reports are required. The due dates will be announced in class, as well as written on the course schedule. These are as follows: Peer EvaluationEach member of the team is to rate the contribution of the other team members using the Peer Evaluation Form. These evaluation forms are to be turned in individually. There will be two (2) peer evaluations in total. The peer evaluations are an opportunity for any team member who is not pulling his or her weight to make improvements. Therefore, the score for the first peer evaluation will count towards one quarter (1/4) of each team member's score, while the second peer evaluation will count towards three quarters (3/4) of each team member's score. Any member who does not complete a peer evaluation will receive a five (5) points deduction from his/her score for the project, two and a half (2.5) for each missing evaluation. Note that you are not to rate yourself. These evaluations will be used to determine a tentative score for each individual on the project. You will receive an average of the scores assigned by your team mates. The instructor, however, is responsible for marking the final determination of each person’s grade on the project and will use the teams’ score only as one input in the grading process. See the Project Score section below for more information. Here is a link to the peer evaluation form that will be used for both peer evaluations: What to Do If Someone on Your Team is Not Doing His or Her PartIf
someone on the team is not doing his or her part, it is the
responsibility of the team leader to talk to that person and encourage
him/her to take the project more seriously. If this teammate is
unresponsive, the next step is to meet with the instructor to explain
the situation. The instructor will intervene and talk to the student.
Ultimately, however, if your teammate refuses to work, his/her portion
of the project should be reassigned to another member(s) so that the
team doesn't fall behind or fail. In this case, the other members of the
team should give a score of 0 to this teammate on the peer evaluation. Do not be afraid to give a low peer evaluation score to a teammate who is not meeting his or her responsibilities! Do not be afraid to reassign this person's portion of the project to someone else as early as you sense a problem! Project ScoreA team score will be calculated as shown below.
-The project runs without errors -All portions of the project are complete and functional -The User class including BST sorted by primary key and the Interface are each worth 25% of the project. The two hash tables are worth 25% of the project, and the graph is worth 25% of the project. If any of these components is missing, a deduction of 25% will be made.
An individual grade will be determined: by multiplying the project score by a score factor as shown below, which is determined using the average peer evaluation score (25% for the first peer evaluation and 75% for the second peer evaluation):
Personal Score = Project Score x Score Factor 1. Report 1: Project Proposal and Team Member Document Report 1 due on Friday, October 12 at 11:59pm on Canvas Note: One document per team required. 2. Report 2: Requirements Analysis and High-level Design Report 2 due on Friday, October 26 at 11:59pm on Canvas Note: One Requirements Analysis Document per team required. 3. Report 3: Low-Level Design + Peer Evaluation 1 Report 3 due on Friday, November 9 at 11:59pm on Canvas Peer Evaluation 1 due on Friday, November 9at 11:59pm on Canvas Note: One Low-Level Design Document per team required, one peer evaluation per team member required. 4. Report 4: Test Plan Report 4 due on Friday, November 30 at 11:59pm on Canvas Note: One Test Plan Document per team required 5. Report 5: Walk-through and Test Results + Peer Evaluation 2 Report 5 due on Friday, December 7 at 11:59pm on Canvas Peer Evaluation 2 due on Friday, December 14 at 12:00pm on Canvas Note: One Walk-through and Test Results Document per team required + one peer evaluation per team member required.
|