EECS 183 Labs

EECS 183 Lab 7: Classes

Lab due on your scheduled lab day (March 11-15)

Lab accepted for full credit until Tuesday, March 19, 2024, 11:59 pm

In this lab, you are writing code to master the use of classes. You will also use your solutions for Project 4.

Starter Files

You can download the starter files using this link.

After downloading and unzipping, you will find the following files in the starter-files folder:

IMPORTANT: For this lab, you must include all files in a single project in Xcode or Visual Studio.

IMPORTANT: Do not change any part of the header file Point.h.

Lab Assignment

Tasks to Complete

  1. Start a new project with your IDE using the starter files according.
  2. Write your test cases in test.cpp to test the functions you will implement in Point.cpp.
  3. Write the implementations for the functions in Point.cpp:
  4. Test your functions using the test cases you have written.
  5. Submit your Point.cpp, test.cpp, data1.txt, and data2.txt to the autograder.
    • NOTE: data1.txt and data2.txt are optional to submit to the autograder. They may help you with your test cases for the lab.

Point.cpp

IMPORTANT: This is the same file you will use for Project 4. Once you complete the lab you may use your lab solutions for Project 4, even if you worked with people other than your project partner on the lab.

test.cpp

NOTE: The first text file data1.txt serves as an example of points to read from a file. You should use this file to test your Point::read() function. The other text file, grid2.txt is empty. You can use this file to test your Point::write() function.

File I/O

File Locations - Xcode

There are a few things that must be done for Xcode. First, ensure that Derived Data is stored relative to your project folder. Select Xcode > Preferences in the menu bar, click on the Locations icon at the top of the window, and choose Relative next to Derived Data. This will ensure that executables are saved in your Project folder.

Then, tell Xcode to look for files in the folder where all other project files are stored. From the menu bar, choose Product > Scheme > Edit Scheme.

Select Run on the left, Options on top, and then select the checkbox Use custom working directory and navigate to your Project folder where you will store input files.

Now you can place input txt files right with your .h and .cpp files.

NOTE: If you move your project folder, you’ll have to reset the project’s working directory.

File Locations - Visual Studio

Fortunately, Visual Studio’s working directory is the project folder itself. So head to the project folder that is named the same as the project. There should be another folder with that same name. Place the input files in that second folder.

Note: follow the instructions for Setting Up Project 1 in the Getting Started with Visual Studio document will put the starter files in the correct folder.

Verifying File IO and Project Setup

It is imperative that your Xcode/Visual studio project is set up correctly to read and write text files. Be sure to edit the scheme for Xcode and that the files are in the correct directory in Visual Studio.

Here is a test case that you can add to your test.cpp to check if your text files, like data1.txt and data2.txt, are in the correct directory. Be sure to call file_check in your start_tests function!

void file_check() {

    // open one of the text files that are part of the starter code
    ifstream ins;
    ins.open("data1.txt");

    // if the file was not in the correct directory, the stream state is fail
    if (ins.fail()) {
        cout << "Could not open data1.txt" << endl;
    }
    else {
        cout << "Success! Text files are in the right directory." << endl;
    }
    ins.close();
    
    return;
}

If you get the message "Could not open data1.txt" try editing the scheme again (Mac) or checking that you have the project files in the correct directory (Windows).

If you cannot get the text files in the correct directory, then try adding the following to your file_check test.

// if the file is not in the right directory, try this:
ofstream outs;
outs.open("crazyfilename");
outs << "find the file named crazyfilename in windows explorer or finder";
outs.close();

Then open Windows Explorer (Windows) or Finder (Mac) and search for the file named crazyfilename. Once you find the folder with that file name, copy all of the .txt files from the project starter files to that directory. Then try the file_check test again.

How to Submit

IMPORTANT: For all labs in EECS 183, to receive a grade, every student must individually submit the Lab Submission. Late submissions for Labs will not be accepted for credit.