School Project

Linked-List Car Rental Management System

A C++11 command-line management system that uses no standard library containers: vehicles, customers and rental records are all organised as singly linked lists, data is persisted to binary files, and the program ships with statistical summaries, ASCII bar charts and an operation log.

Project Overview

The system is built around seven modules — vehicle information, rental customers, renting and returning, information queries, statistics, and system settings. Every data structure is a hand-written singly linked list; no vector or map is involved. Data is written to disk in a custom binary format that restores completely after a restart.

About This Project

What it sets out to do

Put the linked lists, file handling and modular design from coursework into a realistic business scenario, and check whether those fundamentals can genuinely carry a complete system.

How it is organised

The program revolves around car_rent.cpp, which gathers all constants, structs, list operations and business logic, while seven menu modules provide the individual entry points. Submodules are pulled in with #include, so the build only handles main.cpp as a translation unit.

What it uses

C++11 with constexpr and nullptr, depending only on cstdio, cstdlib, cstring and ctime; Make and CMake builds are both supported; the interface and comments are in Chinese with UTF-8 encoding.

Scope and limits

This is a course design project with a command-line interface, and data lives in local files rather than a database. Concurrent access and multi-user scenarios sit outside its design scope.

Seven functional modules

From data maintenance to business transactions, statistics and system administration, the modules are tied together by shared linked-list data.

Vehicle records

Create, edit, delete and view vehicle records, maintaining the base data for rentable cars.

Rental customers

Maintain renter information that later rental and return transactions refer back to.

Renting and returning

Handle rental and return transactions, validating vehicle status and updating both sides of the record.

Information queries

Categorical queries and fuzzy search locate records quickly by vehicle, customer or transaction criteria.

Statistics

Group and summarise by dimension, rendered as ASCII bar charts so the distribution of the data is visible at a glance.

System settings

Password and login handling, report export, the operation log and data clearing round out administration.

Two deliberate implementation choices

The project makes conscious trade-offs around data structures and persistence.

Singly linked lists throughout

Every node is allocated with new and released with delete; insertion, removal and traversal are all written by hand as a complete exercise in list and pointer work.

Binary file persistence

Data is written to file in a custom binary layout and restored in the same layout on read, sidestepping the cost and ambiguity of text parsing.

Input validation and fault tolerance

Dates, identifiers and duplicate records are checked so that invalid input cannot corrupt the list structure or the statistics.

Single translation unit

The core logic sits in one cpp file with submodules pulled in through #include, making it easy to read line by line during coursework review.

ASCII visualisation

Bar charts are drawn with plain characters rather than a graphics library, so statistics still render in a pure command-line environment.

Operation log

Key actions leave a trail, making data changes easy to trace.

Back to projects