Question

In: Computer Science

C++ Write a program that asks a teacher to input a student’s first name, last name,...

C++

Write a program that asks a teacher to input a student’s first name, last name, and four test scores. The program should find the average of the four test scores and should then write the following information to a file named “students.txt”

last_name

first_name

average

A student's first name of “XX” should be used as a sentinel value and no numeric grades less than 0 or greater than 100 should be accepted.  The program should then read the information in for the file “students.txt”, and for each student display the following on the monitor:

first_name last_name    average

first_name last_name    average

Number of students        n

Overall average:               nn.n

Note: all averages should be displayed with one decimal position

Solutions

Expert Solution

Below is the source code. Please comment if any queries or issues. Thanks.

#include <iostream>
#include<bits/stdc++.h> 
#include <fstream>
using namespace std;


class Student{
    public:
    string firstName;
    string lastName;
    float marks[4];
    float average;
};
int main()
{
    char cont = 'N';
        float exam1[100], total = 0 , total_average = 0;
    int count=0;
    ifstream infile; 
    string line;
        
    do {
        
        Student s;
        cout<<"Enter Student's first name"<<endl;
        cin>>s.firstName;
        cout<<"Enter Student's Last Name" <<endl;
        cin>>s.lastName;
        cout<<"Enter Marks"<<endl;
        float marks;
        for (int i = 0; i < 4 ; i++){
            cin>>marks;
            if (marks <0 || marks > 100){
                cout<<"Marks cannot be less than 0 or greater than 100, please enter again"<<endl;
                i = i-1;
                continue;
            }
            else
                s.marks[i] = marks;
        }
        
        
        float sum = 0;
        for (int i = 0; i < 4; i++){
            sum = sum + s.marks[i];
        }
        s.average = sum/4;

        char filename[ ] = "students.txt";

        ofstream outputfile;


        // creating, opening and writing/appending data to a file
        
        outputfile.open(filename, ios::out|ios::app);

        // simple error handling for file creating/opening for writing, test if fail to open the file
        
        if(outputfile.fail())
        {
            cout<<"The "<<filename<<" file could not be created/opened!\n";
            exit(1); // just exit
        }
        else
        {
            cout<<"The "<<filename<<" file was created and opened successfully!\n";
           // outputfile<<"Writing some data to this file\n";
            //outputfile<<"------------------------------\n";
            cout<<"Check the "<<filename<<" file contents :-)"<<endl;
            cout<<"If the file already have had data, the new data will be appended\n";
            
            outputfile<<s.firstName<<" "<<s.lastName<< " " << fixed << setprecision(1) << s.average;
            
            outputfile<<endl;
            
            outputfile.close();
        
            if(outputfile.fail())
            
            {
                cout<<"The "<<filename<<" file could not be closed!\n";
                exit(1);
            }
            // test if successful to close the file, do the following...
            else
                cout<<"\nThe "<<filename<<" file was closed successfully!\n";
        }
        cout<<"Enter Y/y if there is another student"<<endl;
        
        cin>>cont;
    }while(cont == 'Y' || cont == 'y');

  ifstream myfile ("students.txt");
  if (myfile.is_open())
  {
    
    while ( getline (myfile,line) )
    {
      cout << line << '\n';
    }
    myfile.close();
  }

  else cout << "Unable to open file";
  
  
  //To calcualte the average 
     cout<< "Displaying the Student Data\n";
     infile.open("students.txt");// file containing numbers in 3 columns 
     if(infile.fail()) // checks to see if file opended 
     { 
      cout << "error" << endl; 
      return 1; // no point continuing if the file didn't open...
     } 
     while(getline(infile, line)) // reads file to end of *file*, not line
     { 
         
         stringstream ss(line);
         char a[50], b[50]; 
         float c;
        if (ss >> a >> b >> c)
        {
            exam1[count] = c;
            count++;
        }
      } 
    infile.close(); 
    cout << "Number of students " << count <<"\n";
   for (int i=0; i<count;i++){
       total = total + exam1[i];
   }
   total_average = total/count;
   cout << "Overall average: "  << fixed << setprecision(1) << total_average; 

  return 0;

}


Below is the execution screenshot


Related Solutions

C++ Change the program to take user input for first name and last name for five...
C++ Change the program to take user input for first name and last name for five employees. Add a loop to read the first name and last name. // EmployeeStatic.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <string> #include <iostream> #include <string> using namespace std; class Employee { public:    Employee(const std::string&, const std::string&); // constructor    ~Employee(); // destructor    std::string getFirstName() const; // return first name    std::string getLastName() const; // return...
Write a C++ Program to print the first letter of your first and last name using...
Write a C++ Program to print the first letter of your first and last name using stars. Note: 1) Using nested For Loop 2) The number of lines is given by user. 3) Using one Outer loop to print your letters. 4) Print the letters beside each other.
Write a C++ Program to print the first letter of your first and last name using...
Write a C++ Program to print the first letter of your first and last name using stars. Note: 1) Using nested For Loop 2) The number of lines is given by user. 3) Using one Outer loop to print your letters. 4) Print the letters beside each other
Tail of a File, C++ Program. write a program that asks the user for the name...
Tail of a File, C++ Program. write a program that asks the user for the name of a text file. The program should display the last 10 lines, or all lines if less than 10. The program should do this using seekg Here is what I have so far. #include<iostream> #include<fstream> #include<string> using namespace std; class File { private:    fstream file;    string name; public:    int countlines();    void printlines(); }; int File::countlines() {    int total =...
Write a C++ program that asks for the name and age of three people.   The program...
Write a C++ program that asks for the name and age of three people.   The program should then print out the name and age of each person on a separate line from youngest to oldest. Hint: Start with a program that just asks for the names and ages then prints them out in the same order they are entered. Then modify the program so it prints out the list of names in every possible order.    Note that one of...
Write a program that: a. Asks the user for their first name using a JOptionPane. b....
Write a program that: a. Asks the user for their first name using a JOptionPane. b. Asks the user for their age using a JOptionPane. C. Asks the user for their last name using a JOptionPane. d. Pops up a dialog with the following information: i. Number of characters in the first & last name combined ii. The full name all-in upper-case letters iii. The full name all-in lower-case letters iv. The first letter of the name v. The age...
• Write a C++ program that asks the user to input two integer values, then calls...
• Write a C++ program that asks the user to input two integer values, then calls a void function "swap" to swap the values for the first and second variable. • As we mentioned before, in order to swap the valors of two variables, one can use the following: temp= variable1; variable1 = variable2; variable2 = temp; • Display the two variables before you call swap and after you call that function. Comment in code would be greatly appreciated to...
Write a program that prompts the user to input their first name from the keyboard and...
Write a program that prompts the user to input their first name from the keyboard and stores them in the variable "firstName". It does the same for last name and stores it in the variable "lastName". It then uses strcat to merge the two names, separates them by a space and stores the full name into a string variable called "fullName". In the end, the program must print out the string stored within fullName. ANSWER IN C LANGUAGE ! You...
Email username generator Write an application that asks the user to enter first name and last...
Email username generator Write an application that asks the user to enter first name and last name. Generate the username from the first five letters of the last name, followed by the first two letters of the first name. Use the .toLowerCase() method to insure all strings are lower case. String aString = “Abcd” aString.toLowerCase(); aString = abcd Use aString.substring(start position, end position + 1) aString.substring(0, 3) yields the first 3 letters of a string If the last name is...
1. Write a Java program that asks the user to input a positive integer n first,...
1. Write a Java program that asks the user to input a positive integer n first, then create an array of size n. Fill n random integers between 5 and 555, inclusively, into the created array. Output the sum of all the integers in the array and the average of all the integers in the array. 2 .Find the output of the following Java program and explain your answer
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT