Question: Project 3: Student Class List Problem create an application which stores the courses taken by a student and prints out a report. Data will be
Project 3: Student Class List
Problem
create an application which stores the courses taken by a student and prints out a report. Data will be read from a data.txt file. Once all data has been read from the data.txt file, your program should print a report as shown in the Program Output section below. After the list of courses has been printed, you should then calculate and display the cumulative GPA of all courses in the list.
Important Constraints
1. You must implement a linked list as the underlying data structure.
2. Course entries will be stored in the linked list structure.
3. This must be done using classes and objects in OOP style. Each class will be in a separate module (see below) and the application code that reads the data from the data.txt file will be in file main.py.
Course ADT (course.py)
You will implement a Course ADT which implements the following methods:
constructor: must have default values for all parameters and must validate all parameters.
number(): retrieve Course Number as an integer
name(): retrieve Course Name as a string
credit_hr(): retrieve Credits as a floating-point number
grade() : retrieve Grade as a numeric value in range 4.0 - 0.0
__str__ (): returns a string representing a single Course as shown in the Program Output section
The courses taken by the student will be provided in a data file. You will have to parse the data from that file and store it in a Linked List of courses.
CourseList ADT (courselist.py)
Your CourseList ADT must use a Linked List implementation. The course list must be able to hold an unlimited number of Courses. The CourseList ADT implements the following methods:
constructor to initialize all needed data for an empty list
insert(Course): insert the specified Course in Course Number ascending order
remove(number): remove the first occurrence of the specified Course
remove_all(number): removes ALL occurrences of the specified Course
find(number): find the first occurrance of the specified course in the list or return -1
size(): return the number of items in the list
calculate_gpa(): return the GPA using all courses in the list
is_sorted(): return True if the list is sorted by Course Number, False otherwise
__str__(): returns a string with each Course's data on a separate line (as shown in the Program Output)
__iter__() and __next__(): the linked list must be iterable
Grading (100 points)
pylint will be run on corse.py and courselist.py. Expected minimum score for each file is 8.5.
Score is the sum of:
Percentage of test cases passed x 80 points
min(Coding style score/8.5, 1) x 20 points
Possible adjustment due to physical inspection of the code, to make sure you actually implemented things.
What to Submit in Canvas
main.py (driver file)
course.py
courselist.py
A link to a short video showing results of your code running, 1 minute max. Post the video on Youtube, for example, with a unlisted link, and submit the link in comments to your submission.
Q: This project has me confused overall. I'm not sure if I would be able to use Course inside CourseList to make the linked list or if they have to be used in main. Overall I'm just not sure how to get this to work with a linked list. I can post my current code if needs be. I really just need an idea as to how I might implement Course and CourseList together to make the linked list.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
