CS2 Project
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
CS2 Project
Objective:
You will add, modify or extend a class such as University Member, Student or Course. You can have multiple classes in the same program, or create multiple programs.
The number of elements you build from this list (or any you define with my approval) will determine your grade:
1: C (70)
2: B (82)
3: A- (92)
4+: A (100)
For each object (each count as +1 for each class )
· I/O parsing a new file for new class with new functionality (e.g. including time)
· Inheritance
· Friend function
· Overloading (Any, including: +, << or >>)
· New Dynamic objects
· Templates
· New, object related to current UM & Student with accessors and mutators.
o Example: Course
· Others you clear with me -
Counts as +2: New application functionality
Counts as +1: your code in github account
Show your code in the github account.
a) See instructions written by Oscar
b) Share your repository with me (you can use my Fordham email).
2) Inside the Blackboard Exam upload:
a) A readme.doc (Word file) file that includes:
· A list of the main functionality of the program
Include a list of features you believe you’ve demonstrated (and points you believe you’ve earned).
Example:
Extended Student to:
+1 Overload >> // demonstrated by reading from student.txt
+1 Inherit from UM
+1 Copied files to github, under ID xxx and shared with me
b) A zip file with all files required, including any input (data) files and any output files you might include that show your sample output
How to Zip:
1) Be sure all of your files, are in one directory, which might include a subdirectory, example :
finalProj
On Mac
Open the terminal and navigate to the parent folder of your finalProj folder:
zip -r finalProj.zip finalProj
general description is: zip -r archive_name.zip folder_to_compress
On Linux (storm)
Navigate to the parent folder of your finalProj folder:
zip -r finalProj.zip finalProj
general description is: zip -r archive_name.zip folder
On Windows
Navigate to the parent folder of your finalProj folder, and right click.
Select Compress to ZIP file
c) If you have multiple projects, please zip each code package separately, including: .cpp .h input and sample output files. I should be able to build and run your code. It is also wise to show sample output (or interaction) for each of your programs.
There should be ONE readme.doc describing the points for each project.
d) Upload all files to BB FinalProject – submit here, (yes, this may be redundant with github), but this ensures your submission is received.
e) Be sure to comment each file with your username, be sure to comment properly, and use proper syntax and style.
Examples & ideas:
You may choose any number of these or define your own.
1) Derive Student and/or Profs from UniversityMember.
a. Read from a file, reading and writing the resulting Student into a new output file from a vector of Students
b. Overload << to write the Student object (and demonstrate it) +1
c. Overload >> to read the Student object (and demonstrate it) +1
2) Read Courses (tab delimited, or you can generate your own from the Courses2023.xlsx file)
a. Generate professor list along with IDs. Save to a file +1
b. Show all courses for a given professor or student +1
i. Create a useful schedule showing a grid of M-F and time blocks with Course# and section +2
c. Read in: a student file with list of course CRNs
i. Show all courses for a given student +2
ii. Determine if a student has courses that overlap in time, and output this error to an error file. +2
iii. A function that adds a student to a course. Consider adding by ID +2
iv. Give the roster of students for a particular course, not allowing over 30 students +2
d. Read in: course listing
i. Produce a list of courses that overlap based on their timeslot +1
· Consider an overload for == indicating time overlap +1
3) IDs Read prof and student names.
a. Extract Prof names from CoursesFall2023 and generate IDs.
i. Save a file of Profs with their IDs +1
b. Generate IDs for Prof and Student and store them into a file that could be subsequently read. +1
c. Read the Prof & Student IDs, determining the largest value to set as the next available FID. +1
d. Add new students, generating FIDs and appending to the existing student file. +1
4) Email username:
Generate unique usernames based on first initial and last name. If a username is already taken, then add an increasing numeral to it.
a. Output the student name, username and ID to a second file +2
Example input file:
Smith, Mary
and later on there is
Smith, Michelle
Output to a file, maybe ‘existingStudents.txt’
Consider overloading the <<
It might look like:
Mary Smith,A0000001,msmith
Michelle Smith,A0000002,msmith2
(or msmith1 if you want - just as long as they are different. )
b. Create a way to read in the file above and set Student values. +2
Here, each student might be read in and the ID would be set explicitly.
Consider overloading the >> operator
Data
You may use any past data sets or create new ones.
I’ve generated some Data Files for you, available on Blackboard.
Currently:
CoursesFall2023.xlsx
StudentsWithCRNs.xlsx
And derived text files in tab delimited format.
This list may expand over time.
You may adapt the data for your use, such as removing unneeded columns or other reformatting. You may also generate your own data but be sure to include it in your project submission.
Discuss any needs or different ideas with me.
2023-05-06