លំហសិក្សាកម្ពុជា លំហសិក្សាកម្ពុជា V1.0
ចូល ចុះឈ្មោះ

មេរៀនទី ៣៖ ការបង្កើតម៉ឺនុយ Console និងការរក្សាទុកទិន្នន័យជាមួយ CSV

មូលសង្ខេប / Abstract

មេរៀនទី ៣ នេះបន្តពីមេរៀនទី ១ និងទី ២ ដោយផ្ដោតលើការបង្កើតកម្មវិធី Python Console ដែលមានម៉ឺនុយប្រើប្រាស់ច្បាស់លាស់ និងការរក្សាទុកទិន្នន័យវិញ្ញាបនបត្រទៅក្នុង CSV File។ នៅមេរៀនទី២ និស្សិតបានរៀនអំពី Functions, Lists, Dictionaries និង Certificate Transactions។ ប៉ុន្តែទិន្នន័យដែលរក្សាទុកក្នុង List នឹងបាត់បង់នៅពេលកម្មវិធីបិទ។ ដូច្នេះ មេរៀនទី៣ណែនាំពី File Storage ដោយប្រើ Python csv module ដើម្បីអាន សរសេរ បន្ថែម និងស្វែងរកទិន្នន័យក្នុង CSV File។ Python Documentation ពន្យល់ថា csv module ផ្ដល់ reader, writer, DictReader និង DictWriter សម្រាប់អាន និងសរសេរទិន្នន័យជា rows ឬ dictionary form [1]។ មេរៀននេះសំខាន់សម្រាប់ Final Project ព្រោះ CSV នឹងត្រូវប្រើសម្រាប់រក្សាទុក certificates, transactions, blocks, verification logs និង audit logs មុនពេលបន្តទៅ Hashing និង Blockchain Structure នៅមេរៀនបន្ទាប់ៗ។

ពាក្យគន្លឹះ

១. ព័ត៌មានទូទៅអំពីមេរៀន

ចំណុចព័ត៌មាន
មុខវិជ្ជាBlockchain Technology Using Python Console and CSV
មេរៀនមេរៀនទី ៣
ចំណងជើងPython Console Menu and CSV File Handling
ប្រធានបទសំខាន់Console Menu, CSV Writing, CSV Reading, CSV Searching
កម្រិតនិស្សិតBeginner to Intermediate
ភាសាសរសេរកម្មវិធីPython
ប្រភេទកម្មវិធីConsole Application
ឧបករណ៍ប្រើប្រាស់Python, VS Code, Terminal / Command Prompt, CSV file
លទ្ធផលរំពឹងទុកនិស្សិតអាចបង្កើត Certificate Manager ដែលរក្សាទុកទិន្នន័យក្នុង CSV
ទិសដៅ ProjectConsole-Based Blockchain Student Certificate Verification System

២. គោលបំណងសិក្សា

បន្ទាប់ពីបញ្ចប់មេរៀននេះ និស្សិតគួរអាច៖

  1. ពន្យល់បានថា Console Menu មានសារៈសំខាន់យ៉ាងដូចម្តេចក្នុងកម្មវិធី Python។
  2. បង្កើត Menu ដែលមានជម្រើស Add, Show, Search និង Exit។
  3. ពន្យល់បានថា CSV File គឺជាអ្វី។
  4. ប្រើ Python csv module ដើម្បីសរសេរទិន្នន័យទៅ CSV។
  5. ប្រើ csv.DictWriter ដើម្បីសរសេរ Certificate Records ជា dictionary rows។
  6. ប្រើ csv.DictReader ដើម្បីអានទិន្នន័យពី CSV។
  7. ស្វែងរក Certificate Record តាម Certificate ID ពី CSV File។
  8. រៀបចំ CSV Data Structure សម្រាប់ Final Blockchain Project។
  9. បង្កើត Console-Based Certificate CSV Manager ជាជំហានបន្ទាប់ពី Transaction Manager។

៣. ទំនាក់ទំនងមេរៀនទី ៣ ជាមួយ Final Project

នៅមេរៀនទី ២ និស្សិតបានបង្កើត transactions = [] ដើម្បីរក្សាទុក Certificate Transactions ក្នុង Memory។ ប៉ុន្តែបញ្ហាគឺ៖

ទិន្នន័យក្នុង List នឹងបាត់បង់នៅពេលកម្មវិធីបិទ។

ដើម្បីដោះស្រាយបញ្ហានេះ យើងត្រូវប្រើ File Storage។ ក្នុង Course នេះ យើងចាប់ផ្ដើមពី CSV ព្រោះ CSV ងាយស្រួលសម្រាប់អ្នកចាប់ផ្ដើម អាចបើកមើលក្នុង Excel បាន និងមិនទាមទារ Database Server។

Flow របស់មេរៀនទី៣គឺ៖

Console Menu
      ↓
User Enters Certificate Data
      ↓
Python Dictionary
      ↓
Save to CSV File
      ↓
Read CSV File
      ↓
Search Certificate by ID

Figure 1. From Console Input to CSV Storage

រូបភាពនេះគួរបង្ហាញលំហូរពីអ្នកប្រើប្រាស់បញ្ចូល Certificate Data នៅក្នុង Console ទៅកាន់ Python Dictionary ហើយបន្ទាប់មករក្សាទុកទៅក្នុង CSV File។ វាជួយឱ្យនិស្សិតយល់ថា CSV Storage គឺជាជំហានសំខាន់សម្រាប់រក្សាទុកទិន្នន័យឱ្យនៅស្ថិតស្ថេរ ទោះបីកម្មវិធីបិទក៏ដោយ។


៤. Console Menu ក្នុង Python

៤.១ Console Menu គឺជាអ្វី?

Console Menu គឺជាម៉ឺនុយអក្សរដែលបង្ហាញជម្រើសឱ្យអ្នកប្រើប្រាស់ជ្រើស។ វាជួយឱ្យកម្មវិធីមានរចនាសម្ព័ន្ធ និងងាយប្រើ។ ក្នុង Project របស់យើង Console Menu អាចមានជម្រើសដូចជា៖

1. Add Certificate
2. Show All Certificates
3. Search Certificate
4. Exit

Menu ធ្វើឱ្យអ្នកប្រើប្រាស់មិនចាំបាច់ដឹងកូដខាងក្នុង។ ពួកគេគ្រាន់តែជ្រើសលេខជម្រើស ហើយកម្មវិធីដំណើរការតាមមុខងារដែលបានកំណត់។


៤.២ ហេតុអ្វីត្រូវប្រើ Console Menu?

មូលហេតុការពន្យល់
ងាយប្រើអ្នកប្រើប្រាស់អាចជ្រើសមុខងារតាមលេខ
មានរចនាសម្ព័ន្ធកម្មវិធីត្រូវបានបែងចែកជាមុខងារច្បាស់
អាចពង្រីកបានអាចបន្ថែម Save CSV, Generate Hash, Create Block នៅពេលក្រោយ
ងាយសាកល្បងគ្រូអាចសាកល្បងមុខងារនីមួយៗបាន
សមស្របសម្រាប់ Final ProjectConsole Menu ជាមូលដ្ឋានរបស់ប្រព័ន្ធ Certificate Verification

Figure 2. Console Menu Structure

រូបភាពនេះគួរបង្ហាញម៉ឺនុយ Console ដែលមានជម្រើស Add Certificate, Show Certificates, Search Certificate និង Exit។ វាជួយឱ្យនិស្សិតយល់ថា Console Menu គឺជាមធ្យោបាយសម្រាប់ភ្ជាប់អ្នកប្រើប្រាស់ទៅមុខងារផ្សេងៗក្នុងកម្មវិធី។


៤.៣ កូដគំរូ Console Menu

def show_menu():
    print("\n=== Certificate CSV Manager ===")
    print("1. Add Certificate")
    print("2. Show All Certificates")
    print("3. Search Certificate")
    print("4. Exit")

while True:
    show_menu()
    choice = input("Choose option: ")

    if choice == "1":
        print("Add Certificate selected.")
    elif choice == "2":
        print("Show All Certificates selected.")
    elif choice == "3":
        print("Search Certificate selected.")
    elif choice == "4":
        print("Goodbye!")
        break
    else:
        print("Invalid choice. Please try again.")

៤.៤ ការពន្យល់កូដ

  • show_menu() ជា Function សម្រាប់បង្ហាញម៉ឺនុយ។
  • while True ធ្វើឱ្យកម្មវិធីដំណើរការជាបន្តបន្ទាប់។
  • choice = input(...) ទទួលជម្រើសពីអ្នកប្រើប្រាស់។
  • if / elif / else ប្រើសម្រាប់ពិនិត្យជម្រើស។
  • break ប្រើសម្រាប់បញ្ចប់ Loop និងចាកចេញពីកម្មវិធី។

៥. តើ CSV File គឺជាអ្វី?

៥.១ និយមន័យ CSV

CSV មានន័យថា Comma-Separated Values។ វាជា File Text មួយដែលរក្សាទុកទិន្នន័យជា rows និង columns។ CSV អាចបើកមើលបានក្នុងកម្មវិធីដូចជា Microsoft Excel, Google Sheets ឬ Text Editor។

ឧទាហរណ៍ CSV៖

certificate_id,student_name,program,certificate_title,issue_date,status
CERT-FDE-001,Sok Dara,Digital Economy,Blockchain Technology Completion,2026-08-25,Valid
CERT-FDE-002,Chan Vicheka,Digital Economy,Python Programming Completion,2026-08-26,Valid

Python csv module ត្រូវបានរចនាឡើងសម្រាប់អាន និងសរសេរទិន្នន័យ CSV។ Documentation បញ្ជាក់ថា reader និង writer អាចអាន/សរសេរទិន្នន័យជាលំដាប់ ហើយ DictReader និង DictWriter អាចអាន/សរសេរទិន្នន័យជា dictionary form [1]។


៥.២ ហេតុអ្វីប្រើ CSV មុន Database?

ហេតុផលការពន្យល់
ងាយស្រួលសម្រាប់អ្នកចាប់ផ្ដើមមិនចាំបាច់ដំឡើង Database
អាចបើកមើលក្នុង Excelនិស្សិតអាចមើលទិន្នន័យជាតារាង
សមស្របសម្រាប់ Console Appអាចអាន/សរសេរទិន្នន័យដោយ Python
ជាមូលដ្ឋានសម្រាប់ Databaseជួយយល់ពី rows, columns, fields
ល្អសម្រាប់ Project ដំបូងគ្រប់គ្រាន់សម្រាប់ Prototype

Figure 3. CSV File as Table Storage

រូបភាពនេះគួរបង្ហាញ CSV File ជាតារាង ដែលមាន Columns ដូចជា Certificate ID, Student Name, Program, Certificate Title, Issue Date និង Status។ វាជួយឱ្យនិស្សិតយល់ថា CSV អាចរក្សាទុកទិន្នន័យមានរចនាសម្ព័ន្ធស្រដៀងនឹងតារាង Database តូចមួយ។


៦. ការរៀបចំ CSV Fields សម្រាប់ Certificate Records

មុនសរសេរទិន្នន័យទៅ CSV យើងត្រូវកំណត់ Fields ឱ្យបានច្បាស់។ ក្នុង Project នេះ យើងប្រើ Fields ខាងក្រោម៖

Fieldការពន្យល់
certificate_idលេខសម្គាល់វិញ្ញាបនបត្រ
student_nameឈ្មោះនិស្សិត
programកម្មវិធីសិក្សា
certificate_titleចំណងជើងវិញ្ញាបនបត្រ
issue_dateថ្ងៃចេញវិញ្ញាបនបត្រ
statusស្ថានភាព Valid, Invalid ឬ Revoked

Fields ទាំងនេះនឹងត្រូវប្រើឡើងវិញនៅមេរៀនបន្ទាប់ៗសម្រាប់ Hashing និង Transaction Creation។ ប្រសិនបើ Field names មិនស្ថិតស្ថេរ ឬសរសេរខុស Hash និង Search Function អាចមានបញ្ហា។


៧. Practical Lab 1: Create CSV File with Header

គោលបំណង

បង្កើត certificates.csv ដែលមាន Header Row សម្រាប់រក្សាទុក Certificate Records។

Source Code

import csv
import os

CSV_FILE = "certificates.csv"

def create_csv_file():
    if not os.path.exists(CSV_FILE):
        with open(CSV_FILE, "w", newline="", encoding="utf-8") as file:
            fieldnames = [
                "certificate_id",
                "student_name",
                "program",
                "certificate_title",
                "issue_date",
                "status"
            ]

            writer = csv.DictWriter(file, fieldnames=fieldnames)
            writer.writeheader()

        print("CSV file created successfully.")
    else:
        print("CSV file already exists.")

create_csv_file()

ការពន្យល់

  • import csv នាំចូល Module សម្រាប់ CSV។
  • import os ប្រើសម្រាប់ពិនិត្យថា File មានឬអត់។
  • CSV_FILE = "certificates.csv" កំណត់ឈ្មោះ File។
  • os.path.exists(CSV_FILE) ពិនិត្យថា File មានរួចឬអត់។
  • csv.DictWriter() សរសេរ Dictionary ទៅ CSV។
  • writer.writeheader() សរសេរ Header Row។

Figure 4. Creating Certificates CSV File with Header Row

រូបភាពនេះគួរបង្ហាញថា Python Program បង្កើត certificates.csv និងសរសេរ Header Row ដែលមាន Field Names។ Header Row ជួយឱ្យទិន្នន័យក្នុង CSV មានរចនាសម្ព័ន្ធច្បាស់ និងងាយអានដោយ DictReader នៅពេលក្រោយ។


៨. Practical Lab 2: Save Certificate to CSV

គោលបំណង

សរសេរ Function សម្រាប់បញ្ចូល Certificate Record ពី Console ហើយរក្សាទុកទៅ CSV។

Source Code

import csv
import os

CSV_FILE = "certificates.csv"

fieldnames = [
    "certificate_id",
    "student_name",
    "program",
    "certificate_title",
    "issue_date",
    "status"
]

def create_csv_file():
    if not os.path.exists(CSV_FILE):
        with open(CSV_FILE, "w", newline="", encoding="utf-8") as file:
            writer = csv.DictWriter(file, fieldnames=fieldnames)
            writer.writeheader()

def add_certificate():
    create_csv_file()

    certificate = {
        "certificate_id": input("Certificate ID: "),
        "student_name": input("Student Name: "),
        "program": input("Program: "),
        "certificate_title": input("Certificate Title: "),
        "issue_date": input("Issue Date: "),
        "status": input("Status Valid/Invalid/Revoked: ")
    }

    with open(CSV_FILE, "a", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writerow(certificate)

    print("Certificate saved to CSV successfully.")

add_certificate()

ការពន្យល់

Function add_certificate() ធ្វើការងារ ៣៖

  1. បង្កើត CSV File ប្រសិនបើមិនទាន់មាន។
  2. ទទួល Certificate Data ពីអ្នកប្រើប្រាស់។
  3. សរសេរ Dictionary ទៅ CSV ដោយប្រើ writer.writerow()។

ការប្រើ newline="" ជួយកាត់បន្ថយបញ្ហាបន្ទាត់ទទេនៅពេលសរសេរ CSV លើប្រព័ន្ធខ្លះ។ ការប្រើ encoding="utf-8" ជួយឱ្យអក្សរអាចរក្សាទុកបានសមស្រប។


៩. Practical Lab 3: Show All Certificates from CSV

គោលបំណង

អាន Certificate Records ទាំងអស់ពី CSV ហើយបង្ហាញក្នុង Console។

Source Code

def show_all_certificates():
    create_csv_file()

    with open(CSV_FILE, "r", encoding="utf-8") as file:
        reader = csv.DictReader(file)

        print("\n=== All Certificates ===")

        found = False

        for row in reader:
            found = True
            print("-----------------------------")
            print("Certificate ID:", row["certificate_id"])
            print("Student Name:", row["student_name"])
            print("Program:", row["program"])
            print("Certificate Title:", row["certificate_title"])
            print("Issue Date:", row["issue_date"])
            print("Status:", row["status"])

        if not found:
            print("No certificate records found.")

ការពន្យល់

  • csv.DictReader(file) អាន CSV Row ជា Dictionary។
  • for row in reader: អាន Record ម្តងមួយ។
  • found = False ប្រើដើម្បីពិនិត្យថាមានទិន្នន័យឬអត់។
  • ប្រសិនបើមិនមាន Records វាបង្ហាញសារ No certificate records found.

Figure 5. Reading Certificate Records from CSV

រូបភាពនេះគួរបង្ហាញពី Python Program អានទិន្នន័យពី certificates.csv ហើយបង្ហាញលទ្ធផលនៅក្នុង Console។ វាជួយឱ្យនិស្សិតយល់ថា CSV មិនត្រឹមតែរក្សាទុកទិន្នន័យទេ ប៉ុន្តែអាចត្រូវបានអានត្រឡប់មកប្រើវិញក្នុងកម្មវិធី។


១០. Practical Lab 4: Search Certificate by ID from CSV

គោលបំណង

បង្កើត Function សម្រាប់ស្វែងរក Certificate Record តាម Certificate ID ពី CSV File។

Source Code

def search_certificate():
    create_csv_file()

    search_id = input("Enter Certificate ID to search: ")

    with open(CSV_FILE, "r", encoding="utf-8") as file:
        reader = csv.DictReader(file)

        for row in reader:
            if row["certificate_id"] == search_id:
                print("\nCertificate Found:")
                print("Certificate ID:", row["certificate_id"])
                print("Student Name:", row["student_name"])
                print("Program:", row["program"])
                print("Certificate Title:", row["certificate_title"])
                print("Issue Date:", row["issue_date"])
                print("Status:", row["status"])
                return

    print("Certificate not found.")

ការពន្យល់

Function នេះធ្វើការស្វែងរកក្នុង CSV ដោយប្រើ Certificate ID។ បើរកឃើញ វាបង្ហាញព័ត៌មានវិញ្ញាបនបត្រ ហើយចេញពី Function ដោយ return។ បើ Loop ចប់ហើយមិនឃើញ Record វាបង្ហាញថា Certificate not found.

Figure 6. Search Certificate from CSV by Certificate ID

រូបភាពនេះគួរបង្ហាញអ្នកប្រើប្រាស់បញ្ចូល Certificate ID នៅ Console បន្ទាប់មកកម្មវិធីស្វែងរកក្នុង CSV File។ ប្រសិនបើ Certificate ID មានក្នុង File វាបង្ហាញ Record។ ប្រសិនបើមិនមាន វាបង្ហាញ Not Found។ មុខងារនេះជាមូលដ្ឋានសម្រាប់ Certificate Verification ក្នុង Final Project។


១១. Practical Lab 5: Complete CSV Certificate Manager

គោលបំណង

បង្កើតកម្មវិធី Console ពេញលេញសម្រាប់ Add, Show, Search និង Exit ដោយប្រើ CSV Storage។

Full Source Code

import csv
import os

CSV_FILE = "certificates.csv"

fieldnames = [
    "certificate_id",
    "student_name",
    "program",
    "certificate_title",
    "issue_date",
    "status"
]

def create_csv_file():
    if not os.path.exists(CSV_FILE):
        with open(CSV_FILE, "w", newline="", encoding="utf-8") as file:
            writer = csv.DictWriter(file, fieldnames=fieldnames)
            writer.writeheader()

def show_menu():
    print("\n=== Certificate CSV Manager ===")
    print("1. Add Certificate")
    print("2. Show All Certificates")
    print("3. Search Certificate")
    print("4. Exit")

def add_certificate():
    create_csv_file()

    certificate = {
        "certificate_id": input("Certificate ID: "),
        "student_name": input("Student Name: "),
        "program": input("Program: "),
        "certificate_title": input("Certificate Title: "),
        "issue_date": input("Issue Date: "),
        "status": input("Status Valid/Invalid/Revoked: ")
    }

    with open(CSV_FILE, "a", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writerow(certificate)

    print("Certificate saved to CSV successfully.")

def show_all_certificates():
    create_csv_file()

    with open(CSV_FILE, "r", encoding="utf-8") as file:
        reader = csv.DictReader(file)

        print("\n=== All Certificates ===")
        found = False

        for row in reader:
            found = True
            print("-----------------------------")
            print("Certificate ID:", row["certificate_id"])
            print("Student Name:", row["student_name"])
            print("Program:", row["program"])
            print("Certificate Title:", row["certificate_title"])
            print("Issue Date:", row["issue_date"])
            print("Status:", row["status"])

        if not found:
            print("No certificate records found.")

def search_certificate():
    create_csv_file()

    search_id = input("Enter Certificate ID to search: ")

    with open(CSV_FILE, "r", encoding="utf-8") as file:
        reader = csv.DictReader(file)

        for row in reader:
            if row["certificate_id"] == search_id:
                print("\nCertificate Found:")
                print("Certificate ID:", row["certificate_id"])
                print("Student Name:", row["student_name"])
                print("Program:", row["program"])
                print("Certificate Title:", row["certificate_title"])
                print("Issue Date:", row["issue_date"])
                print("Status:", row["status"])
                return

    print("Certificate not found.")

while True:
    show_menu()
    choice = input("Choose option: ")

    if choice == "1":
        add_certificate()
    elif choice == "2":
        show_all_certificates()
    elif choice == "3":
        search_certificate()
    elif choice == "4":
        print("Goodbye!")
        break
    else:
        print("Invalid choice. Please try again.")

ការពន្យល់សំខាន់

កម្មវិធីនេះជាជំហានសំខាន់ក្នុង Final Project ព្រោះវាមាន Console Menu និង CSV Storage។ វាអាចរក្សាទុក Certificate Records ទោះបីបិទកម្មវិធីក៏ដោយ។ នៅមេរៀនបន្ទាប់ យើងនឹងយក Certificate Record ពី CSV ទៅ Generate Hash ដើម្បីពិនិត្យ Data Integrity។

Figure 7. Complete CSV Certificate Manager Menu

រូបភាពនេះគួរបង្ហាញ Console Menu ពេញលេញដែលភ្ជាប់ជាមួយ CSV Storage។ Menu មាន Add Certificate, Show All Certificates, Search Certificate និង Exit។ វាបង្ហាញថាកម្មវិធី Console អាចក្លាយជាប្រព័ន្ធគ្រប់គ្រងទិន្នន័យតូចមួយបាន មុនបន្តទៅ Hashing និង Blockchain។


១២. ការគ្រប់គ្រងកំហុសជាមូលដ្ឋាន

នៅពេលធ្វើការជាមួយ File អាចមានកំហុសដូចជា៖

  • File មិនមាន។
  • Header ខុស។
  • CSV ទទេ។
  • User បញ្ចូលទិន្នន័យមិនគ្រប់។
  • Certificate ID ស្ទួន។

Python Documentation ពន្យល់ថា exception អាចបណ្តាលឱ្យកម្មវិធីបញ្ឈប់ ប្រសិនបើគ្មាន handler ត្រឹមត្រូវ ដូច្នេះការប្រើ try / except អាចជួយគ្រប់គ្រងកំហុសបាន [3]។

ឧទាហរណ៍ try / except

try:
    with open("certificates.csv", "r", encoding="utf-8") as file:
        print("File opened successfully.")
except FileNotFoundError:
    print("CSV file not found. Please create the file first.")

ការពន្យល់

  • try គឺជាកន្លែងសាកល្បងដំណើរការកូដ។
  • except FileNotFoundError ចាប់កំហុសនៅពេល File មិនមាន។
  • វាជួយឱ្យកម្មវិធីមិនបិទភ្លាមៗដោយសារកំហុស។

១៣. Data Quality សម្រាប់ CSV

ទិន្នន័យល្អមានសារៈសំខាន់ណាស់ ព្រោះនៅមេរៀនបន្ទាប់ យើងនឹងប្រើ Hashing។ ប្រសិនបើទិន្នន័យមាន space ឬ spelling ខុស Hash អាចខុសគ្នា។

ចំណុចត្រូវពិនិត្យ

ចំណុចការពន្យល់
Certificate ID មិនស្ទួនRecord នីមួយៗត្រូវមាន ID តែមួយ
Date format ត្រូវតែមួយឧទាហរណ៍ 2026-08-25
Status ច្បាស់Valid, Invalid ឬ Revoked
Field names មិនប្ដូរបើប្ដូរ Field Name កូដអាច Error
Encoding UTF-8ជួយរក្សាទុកអក្សរបានត្រឹមត្រូវ
មិនទុក Field សំខាន់ឱ្យទទេCertificate ID និង Student Name មិនគួរទទេ

១៤. ការពិភាក្សាក្នុងថ្នាក់

គ្រូអាចប្រើសំណួរខាងក្រោម៖

  1. ហេតុអ្វីទិន្នន័យក្នុង List បាត់បង់នៅពេលកម្មវិធីបិទ?
  2. ហេតុអ្វី CSV សមស្របសម្រាប់ Project ដំបូង?
  3. តើ Header Row មានសារៈសំខាន់យ៉ាងដូចម្តេច?
  4. តើ Certificate ID មានតួនាទីអ្វីក្នុងការស្វែងរក Record?
  5. តើការរក្សាទុកទិន្នន័យទៅ CSV អាចជួយ Final Blockchain Project បានយ៉ាងដូចម្តេច?

១៥. Reflection Exercise

សរសេរចម្លើយខ្លី ៥–៧ បន្ទាត់៖

ហេតុអ្វី CSV File Storage ជាជំហានសំខាន់មុនពេលបន្តទៅ Hashing និង Blockchain?

ចម្លើយគួររួមបញ្ចូលគំនិត៖

  • Data persistence
  • Certificate records
  • Search by certificate ID
  • Structured fields
  • Prepare data for hashing
  • Foundation for blockchain transactions

១៦. លំហាត់អនុវត្ត

លំហាត់ទី១៖ បង្កើត CSV File

សរសេរកម្មវិធី Python ដើម្បីបង្កើត certificates.csv ដែលមាន Header ខាងក្រោម៖

certificate_id,student_name,program,certificate_title,issue_date,status

លំហាត់ទី២៖ បញ្ចូល Certificate Record ទៅ CSV

សរសេរ Function add_certificate() ដែលទទួលទិន្នន័យពីអ្នកប្រើប្រាស់ ហើយ Save ទៅ CSV។


លំហាត់ទី៣៖ បង្ហាញ Certificate Records ទាំងអស់

សរសេរ Function show_all_certificates() ដើម្បីអាន និងបង្ហាញ Records ទាំងអស់ពី CSV។


លំហាត់ទី៤៖ ស្វែងរក Certificate តាម ID

សរសេរ Function search_certificate() ដើម្បីស្វែងរក Certificate តាម certificate_id។


លំហាត់ទី៥៖ បង្កើត Menu ពេញលេញ

បង្កើត Menu ដែលមានជម្រើស៖

1. Add Certificate
2. Show All Certificates
3. Search Certificate
4. Exit

លំហាត់ទី៦៖ បន្ថែម Status Validation

នៅពេលបញ្ចូល Status អនុញ្ញាតតែតម្លៃ៖

Valid
Invalid
Revoked

បើអ្នកប្រើប្រាស់បញ្ចូលតម្លៃផ្សេង ត្រូវបង្ហាញសារ៖

Invalid status. Please enter Valid, Invalid, or Revoked.

លំហាត់ទី៧៖ បង្កើត Sample Data

បង្កើត Certificate Records ចំនួន ១០ ក្នុង CSV File ដោយប្រើទិន្នន័យសាកល្បង។


១៧. កិច្ចការផ្ទះ

បង្កើតកម្មវិធី Python Console មួយឈ្មោះ៖

certificate_csv_manager.py

កម្មវិធីត្រូវមាន៖

  1. create_csv_file()
  2. show_menu()
  3. add_certificate()
  4. show_all_certificates()
  5. search_certificate()
  6. exit
  7. CSV File ឈ្មោះ certificates.csv
  8. Header Row ត្រឹមត្រូវ
  9. Status Validation
  10. Comment ក្នុង Code សម្រាប់ពន្យល់ Function សំខាន់ៗ

១៨. លទ្ធផលដែលនិស្សិតគួរទទួលបាន

បន្ទាប់ពីបញ្ចប់មេរៀនទី៣ និស្សិតគួរមាន៖

  1. ការយល់ដឹងពី Console Menu។
  2. ការយល់ដឹងពី CSV File Storage។
  3. ការប្រើ csv.DictWriter ដើម្បីសរសេរទិន្នន័យ។
  4. ការប្រើ csv.DictReader ដើម្បីអានទិន្នន័យ។
  5. ការស្វែងរក Certificate Record តាម Certificate ID។
  6. កម្មវិធី Certificate CSV Manager មួយ។
  7. មូលដ្ឋានសម្រាប់បន្តទៅមេរៀនទី៤៖ Hashing and Data Integrity។

១៩. Notes

មេរៀននេះជាជំហានប្ដូរពី Memory Storage ទៅ File Storage។ នៅមេរៀនទី២ ទិន្នន័យនៅក្នុង List បាត់បង់នៅពេលកម្មវិធីបិទ។ នៅមេរៀនទី៣ CSV ជួយរក្សាទុកទិន្នន័យឱ្យនៅតែមាន។

គ្សូមពិនិត្យមើល certificates.csv ក្នុង Excel ឬ Text Editor ដើម្បីឱ្យពួកគេយល់ថា Python កំពុងសរសេរទិន្នន័យទៅក្នុង File ពិតប្រាកដ។ គ្រូក៏គួរបញ្ជាក់ថា CSV មិនមែនជាប្រព័ន្ធ Database ពេញលេញទេ ប៉ុន្តែវាល្អសម្រាប់អ្នកចាប់ផ្ដើម និង Prototype។


២០. ការណែនាំសម្រាប់បញ្ចូលរូបភាពក្នុងមេរៀនទី ៣

Figureកន្លែងបញ្ចូលគោលបំណង
Figure 1ផ្នែក ៣បង្ហាញលំហូរពី Console Input ទៅ CSV Storage
Figure 2ផ្នែក ៤.២បង្ហាញ Console Menu Structure
Figure 3ផ្នែក ៥.២បង្ហាញ CSV ជាតារាងរក្សាទុកទិន្នន័យ
Figure 4ផ្នែក ៧បង្ហាញការបង្កើត CSV File និង Header Row
Figure 5ផ្នែក ៩បង្ហាញការអាន Certificates ពី CSV
Figure 6ផ្នែក ១០បង្ហាញការស្វែងរក Certificate តាម ID ពី CSV
Figure 7ផ្នែក ១១បង្ហាញ Complete CSV Certificate Manager Menu

២១. IEEE-Style References

[1] Python Software Foundation, “csv — CSV File Reading and Writing,” Python 3 Documentation, 2026.

[2] D. Yaga, P. Mell, N. Roby, and K. Scarfone, “Blockchain Technology Overview,” National Institute of Standards and Technology, NISTIR 8202, 2018, doi: 10.6028/NIST.IR.8202.

[3] Python Software Foundation, “8. Errors and Exceptions — Python 3 Documentation,” Python Documentation, 2026.

ចែករំលែក
រក្សាទុក
ការផ្សព្វផ្សាយ
ការផ្សព្វផ្សាយ
មតិយោបល់ 0
ចូលគណនី ដើម្បីបញ្ចេញមតិ