Data Structures and Algorithms, CS146, Fall 2018 Programming Assignment 4 – Bonus credit
(No extension and no excuse for late submission!)
This programming assignment is for individual work only. You are not allowed to use someone's codes or copy from internet, except for Web Crawler codes. Code plagiarism checker tools (Jplag, MOSS, etc.) will be used to check the similarity of codes. Please check on the University Policies in the syllabus.
Read this instruction carefully before your design and implementation of your work.
In this programming assignment, you will use Hashing with Chaining (page 258 in textbook) to implement a micro-version of Facebook.
Specifically, your program must provide options (or GUI) for users to choose the following operations:
Create a person record of the specified name. (You may assume that no two people have the same name.)
Record a person as a new friend. (Make a friend.)
Remove a person from the friend list. (Unfriend)
List friends of a person. (Assume that you are the owner of a Facebook account. Make a list of your friends.)
Search a person’s name to list his/her friend list. (he/she may or may not be your friend.)
Enter two person’s names to check whether the two people are friends. (Print “Yes” or “No”)
The program MUST be written in Java. (Any other codes will be treated as failing requirements and will receive 0 points.)
Hashing with Chaining method is required for the PA4. Therefore, you must:
Define a “Person” class which has one field for the name and another field for the linked list of friends.
Store the friends of each person in a linked list. A linked list class must be created by yourself.
Create a global hash table that indexes each Person object under the name.
Each java file/class/subroutine/function call must contain a header comment in the beginning of it. (You will lose 20 points for not putting comments in your program.)
You MUST write a professional MS Word or pdf report with the following items included in the report:
Explain/Illustrate your design and implementation details. (in terms of Data Structure, user interface, etc. -20% if not provide or no detailed explanations.)
A list of classes/subroutines/function calls and explanations of each purpose. (-20% if
Provide a lot of self-testing screen shots of each functional requirements including inputs and outputs for each of functional item listed in Functional Requirements.
(You will receive 0 point for your PA4, if no self-testing screenshots provided.)
The procedure (step by step) of how to unzip your files, install your application, and run/test your codes. (-30% if not provided)
Problems encountered during the implementation. (-10% if not provide or too simple)
Lessons Learned (-10% if not provided or too simple)
The deadline to submit/upload your report and source codes to Canvas is 11:59pm on Saturday, 12/15/2018. (No Late submission! Please do not wait until the last minute to upload and submit. If fail to submit, no excuse!)
Zip all your files including your report, all *.java files, and a Java executable file (a jar file,
so that I can run your codes) into one zipped file with file name: Your_First_Name_Last_Name-PA4.zip, Any file with incorrect file name will not be accepted and 0 point will be given.
Jar file MUST be runnable (To save my time to run your program and do grading, -
50% if not runnable.) Runnable: at least, allow to run your jar file at command line or console.
Grading is based on Full functioning, completeness of requirements, clarity of your codes, and professional report. (No Report submission -100%)