This project is a graphical application developed in C, showcasing C's strengths in system-level development, abstract design, and modular programming.
1.This project uses the GTK+3 graphics library to call underlying system APIs, directly interacting with the operating system's windowing system. This design falls under the category of system-level application development, demonstrating C's advantages in low-level graphics rendering, event-driven mechanisms, and memory management.
During program execution, window creation, event handling, and memory allocation all rely on system resource management, which is precisely C's strength in system programming.
Written in C All core components of the project are written in standard C, including: Logic layer (finance.c): Implements data storage and computation; Interface layer (finance.h): Defines structures and function prototypes; User interface layer (gui_main.c): Constructs windows, buttons, and text components through the GTK interface.
Abstraction The project uses
struct Recordto abstract a financial record (including description and amount), and implements modular data operations through functions such asaddRecord()andshowSummary(). This combination of data structures and functions is a typical way of implementing abstraction in C, creating a clear layering between the logic layer and the user interface layer.
The separation of the graphical user interface (GUI) from business logic further embodies the programming concepts of abstraction and encapsulation.
- Modularization and Maintainability The project separates functionality into files:
finance.h — Declares interfaces and structures (abstraction layer)
finance.c — Implements business logic (logic layer)
gui_main.c — User interface (presentation layer)
This layered structure makes the program easy to extend and maintain, and also conforms to the modular design principles of system-level C programming.
This project was developed collaboratively by Zihan Zhao, Xinyan Li, Zikai Shen, and Junbo Zhao.
Log in or sign up for Devpost to join the conversation.