Introduction

A personal diary is a great way to keep track of your thoughts, memories, and experiences.
This simple C++ diary application allows you to write, save, and view daily journal entries.
The program lets you create multiple entries, stores them in a text file, and ensures your diary remains safe and easy to access.

Objective: The goal of this program is to provide users with a simple, efficient way to maintain a digital diary. It allows users to write daily entries, save them with a timestamp, and retrieve them as needed, all through a console-based C++ program.

Code

#include 
#include 
#include 
#include 

using namespace std;

void writeEntry() {
    ofstream diaryFile;
    string entry;
    
    // Open diary file in append mode
    diaryFile.open("diary.txt", ios::app);
    
    if (!diaryFile) {
        cout << "Error opening diary file!" << endl;
        return;
    }

    // Get current date and time
    time_t now = time(0);
    char* dt = ctime(&now);
    
    // Write date and entry to file
    diaryFile << "Date: " << dt;
    cout << "Enter your diary entry (type 'EXIT' to stop writing):" << endl;

    // Get user input for diary entry
    while (true) {
        getline(cin, entry);
        if (entry == "EXIT") break;
        diaryFile << entry << endl;
    }

    diaryFile << "------------------------------------\n\n"; // Separation between entries
    diaryFile.close();
    cout << "Your entry has been saved!" << endl;
}

void readEntries() {
    ifstream diaryFile;
    string line;
    
    diaryFile.open("diary.txt");

    if (!diaryFile) {
        cout << "Diary is empty or file not found!" << endl;
        return;
    }

    cout << "\nDiary Entries:\n";
    while (getline(diaryFile, line)) {
        cout << line << endl;
    }

    diaryFile.close();
}

int main() {
    int choice;

    while (true) {
        cout << "\nC++ Diary Application" << endl;
        cout << "1. Write a new entry" << endl;
        cout << "2. Read previous entries" << endl;
        cout << "3. Exit" << endl;
        cout << "Enter your choice: "; cin >> choice;
        cin.ignore(); // To clear the newline character from input buffer
        
        if (choice == 1) {
            writeEntry();
        } else if (choice == 2) {
            readEntries();
        } else if (choice == 3) {
            cout << "Exiting the program. Have a nice day!" << endl;
            break;
        } else {
            cout << "Invalid choice. Please try again." << endl;
        }
    }

    return 0;
}

Program Structure and Explanation

This diary application is a simple console-based C++ program that offers two main functionalities: writing new diary entries and reading previous ones.

  • writeEntry(): This function opens the “diary.txt” file in append mode, allowing the user to add new entries. It adds a timestamp with the current date and time before each entry and stores it in the file.
  • readEntries(): This function opens the “diary.txt” file in read mode and displays all the saved entries line by line.
  • main(): The main function provides a simple menu with three options: to write a new entry, read previous entries, or exit the program. The user input determines which function is called.

How to Run the Program

  1. Ensure you have a C++ compiler installed (e.g., GCC or Visual Studio).
  2. Copy the code provided above into a file named diary.cpp.
  3. Open your terminal or command prompt, navigate to the directory where the file is located, and compile the program using the command: g++ diary.cpp -o diary.
  4. Run the program using the command: ./diary on Linux/Mac or diary.exe on Windows.
  5. Follow the on-screen menu to write or read diary entries.
© 2025 Learn Programming

 

By Aditya Bhuyan

I work as a cloud specialist. In addition to being an architect and SRE specialist, I work as a cloud engineer and developer. I have assisted my clients in converting their antiquated programmes into contemporary microservices that operate on various cloud computing platforms such as AWS, GCP, Azure, or VMware Tanzu, as well as orchestration systems such as Docker Swarm or Kubernetes. For over twenty years, I have been employed in the IT sector as a Java developer, J2EE architect, scrum master, and instructor. I write about Cloud Native and Cloud often. Bangalore, India is where my family and I call home. I maintain my physical and mental fitness by doing a lot of yoga and meditation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)