A collection of 10 C-based projects demonstrating networking, encryption, system programming, simulations, and console-based applications. All projects are consolidated under one folder for easy access and learning.
- Simple Chat Application
- Encryption and Decryption Tool
- Mini Shell
- File Compression Tool
- Weather Data Analysis System
- Traffic Lights Simulator System
- CPU Scheduling Simulator
- Restaurant Billing Management System
- Maze Solver in C
- Contact Management Application
Description:
A basic client-server chat application implemented in C using TCP sockets.
Features:
- Single client-server communication
- Real-time messaging
- Command-line interface
- Cross-platform (Unix-based)
Prerequisites:
- GCC Compiler
- POSIX-compliant OS
Project Structure:
Simple Chat Application/
├── src/
│ ├── server.c
│ └── client.c
├── Makefile
└── README.md
Installation & Usage:
cd "Simple Chat Application"
make all # or compile manually: gcc -o server src/server.c; gcc -o client src/client.c
./server # start server
./client # start client in separate terminalNotes: Supports only single client. Future improvements: multi-client, encryption, GUI, persistent chat history.
Description:
Encrypt/decrypt text using multiple ciphers: Caesar, Vigenère, XOR.
Features:
- Caesar Cipher (shift 3)
- Vigenère Cipher (random key)
- XOR Encryption (random key)
Prerequisites:
- GCC Compiler
- Standard C libraries
Project Structure:
Encryption And Decryption Tool/
├── src/
│ ├── main.c
│ └── Makefile
└── README.md
Installation & Usage:
cd "Encryption And Decryption Tool"
gcc src/main.c -o encryption
./encryptionMenu Example:
1: Caesar Cipher
2: Vigenère Cipher
3: XOR Encryption
Notes: Educational purposes. Keys are session-based, no persistent storage.
Description:
Lightweight shell program for Linux/Unix environments demonstrating command execution and process management.
Features:
- Execute commands (
ls,pwd, etc.) - Input parsing and tokenization
- Graceful error handling
exitcommand
Project Structure:
Mini Shell/
├── src/
│ ├── code.c
│ └── Makefile
└── README.md
Installation & Usage:
cd "Mini Shell"
gcc src/code.c -o mini-shell
./mini-shellExample Commands:
mini-shell> ls
mini-shell> pwd
mini-shell> exit
Description:
Command-line tool for compressing/decompressing files using zlib.
Features:
- Compress/decompress with zlib (
deflate/inflate) - Handles large files in chunks
Prerequisites:
- GCC Compiler
- zlib library
Project Structure:
File Compression Tool/
├── src/
│ ├── main.c
│ └── Makefile
└── README.md
Installation & Usage:
# Install zlib library
sudo apt-get install zlib1g-dev # Debian/Ubuntu
cd "File Compression Tool"
gcc src/main.c -o file_compression_tool -lz
./file_compression_tool compress input.txt compressed.zlib
./file_compression_tool decompress compressed.zlib output.txtDescription:
Analyze weather data, generate reports, and identify trends.
Features:
- Parse CSV weather data
- Calculate statistics (avg, min, max)
- Generate reports and trends
Project Structure:
Weather Data Analysis System/
├── src/
│ ├── main.c
│ └── Makefile
└── README.md
Installation & Usage:
git clone https://github.com/yourusername/weather-analysis.git
cd weather-analysis
make
make sample-data
make run
./bin/weather_analyzer input_file.csv
Data Format: CSV with Date, Temperature, Humidity, Pressure, WindSpeed, Rainfall
Description:
Multi-threaded traffic light simulation with multiple intersections.
Features:
- Thread-safe operations using mutexes
- Real-time traffic density simulation
- Configurable timing for light states
Project Structure:
Traffic Lights Simulator/
├── src/
│ └── main.c
├── Makefile
└── README.md (or Readme.md)
Installation & Usage:
git clone https://github.com/stephenombuya/Traffic-Lights-Simulator
cd traffic-lights-simulator
gcc -o traffic_sim main.c -pthread
./traffic_sim
Notes: Each intersection runs in its own thread with independent traffic updates.
Description:
Simulates CPU scheduling algorithms: FCFS, SJF, and Round Robin.
Features:
- User input for processes, burst, arrival times
- Calculates waiting/turnaround/completion times
- Optional Gantt chart
Project Structure:
CPU Scheduling Simulator/
├── src/
│ ├── code.c
│ └── Makefile
└── README.md
Installation & Usage:
git clone https://github.com/stephenombuya/CPU-Scheduling-Simulator
cd cpu-scheduling-simulator
gcc cpu_scheduling.c -o cpu_scheduling
./cpu_scheduling
Notes: Extendable to Priority Scheduling or Multilevel Queue.
Description:
Manage orders, generate bills, and maintain transaction records for restaurants.
Features:
- Order creation and management
- Billing receipts
- Menu tracking
- Transaction history
- Daily/monthly reports
Project Structure:
Restaurant Billing Software/
├── src/
│ ├── main.c
│ ├── billing_functions.c
│ ├── menu_management.c
│ ├── data_structures.h
│ └── Makefile
└── README.md
Installation & Usage:
gcc -o restaurant_billing main.c billing_functions.c menu_management.c
./restaurant_billing
Description:
Solves 2D mazes using recursive backtracking.
Features:
- Recursive pathfinding
- Prints solution path
- Supports customizable 2D mazes
Project Structure:
Maze Solver/
├── src/
│ └── maze_solver.c
└── README.md
Installation & Usage:
cd maze-solver-c
gcc maze_solver.c -o maze_solver
./maze_solver
Description:
Console-based application for managing contacts.
Features:
- Add, view, delete contacts
- Simple file-based storage
- Command-line interface
Project Structure:
git clone https://github.com/stephenombuya/Contact-Management-System cd contact-manager
gcc -o Contact-Management-System main.c `pkg-config --cflags --libs gtk+-3.0` -lsqlite3
./Contact-Management-System
Each project maintains its original license (MIT, GNU, or Apache 2.0). Contributions are welcome through GitHub pull requests following each project’s contribution guidelines.