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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!