Bài viết này ra đời một phần là vì tác giả muốn chia sẻ cho mọi người những kiến thức mà tác giả đã học, tìm hiểu được; một phần là tác giả nghĩ rằng viết blog rất có x.
Những kiến thức trong bài viết này đều là cơ bản, đây cũng là giới hạn kiến thức của tác giả. Mong các bạn đọc thông cảm nếu có sai sót gì trong bài viết này nhé!

Giới Thiệu về App được nhắc trong bài viết này

App mà mình sẽ giới thiệu với các bạn là Quản Lý Môn Học (Dành cho học sinh, sinh viên). App có các chức năng như nhập một môn học mới, chỉnh sửa môn học đã nhập, hiển thị dữ liệu của các môn học, hiển thị các môn học, xóa hết tất cả các dữ liệu hiện có và có thể lưu lại dữ liệu khi thoát chương trình (Tất nhiên các bạn cũng có thể viết thêm chức năng nếu muốn).
Demo cho các bạn
Demo cho các bạn

Những thứ mình dùng để tạo nên App này:

TextEditor Neovim để code.
C++ là ngôn ngữ lập trình duy nhất.
Makefile để tự động compile các file C++, Header và linking các file object.
data.txt là file dữ liệu.
Vì không thể nói hết toàn bộ các hàm, các biến... ở trong một bài viết nên mình sẽ để link src ở đây và giải thích những thứ mấu chốt.

Cấu Trúc Của Project

Ở đây mình sẽ chia Project thành 2 phần:
- Phần đầu là các folder src, obj, data nằm chung folder với Makefile.
- Phần tiếp sẽ là Makefile ở ngoài cùng, nhằm để compiling các file C++ ở trong folder src thành các object file ở trong folder obj và linking các file obj ấy thành file exe (Chính là App nói trên) để ngang hàng với Makefile.
Cấu trúc của folder src gồm các 3 file:
- main.cpp: Mình sẽ code các chức năng chính của Project trong file main.
- Subject.h: Mình khai báo class Subject ở trong này.
- Subject.cpp: Viết các hàm của đối tượng Subject trong này.
Đối tượng Subject gồm các biến private: ..., point4 (Điểm trên thang 4), cre (Credits: Tín chỉ của môn học), sem (Semester: Học kì của môn học), point (Điểm thang 10); các hàm public: ...

Cơ sở dữ liệu

Nói cho oách thế thôi chứ ý tưởng chính của mình về quản lý dữ liệu cho app này là đọc file mỗi khi app chạy và viết đè lên file mỗi khi tắt app.
- Đọc file thì mình sẽ đọc theo cấu trúc được định sẵn, cứ đọc mỗi đối tượng và mỗi đối tượng thì sẽ có 5 thông tin tương ứng với 5 thứ tự và nếu dòng nào rỗng thì có nghĩa là thông tin đó chưa được cập nhât.
- Viết đè lên file thì cũng tương tự, mình sẽ viết đè lên file mà mình đã đọc trước đó lên, rồi mình viết theo từng đối tượng, mỗi đối tượng thì mình viết ra 5 thông tin tương tứng, những thông tin nào chưa được cập nhật thì mình chỉ in ra '\n' ở dòng đó.

Makefile

File này là dùng để compile các file *.cpp trong src thành các file *.obj tương ứng (Mình cũng không biết nói gì nhiều về phần này).
Bài viết đến đây là kết thúc, cảm ơn các bạn đã dành thời gian đọc bài viết của mình. Và nếu thấy mình sai sót ở đâu thì nhờ các bạn góp ý với ạ.
p/s: Vì mình bữa mở code trên CLion xong rồi nó suggest mình mấy cái thay đổi như là [[nodiscard]], explicit,.. trước tên biến, nên là các bạn thông cảm cho mình:V