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

The Pharmacy Management System (PMS) is a desktop-based software application developed to automate the daily operations of a retail pharmacy, including medicine inventory management, sales processing, and expiry-date monitoring. Traditional, manual approaches to pharmacy management, which rely on paper registers and spreadsheets, are prone to significant limitations such as inaccurate stock records, delayed detection of expired medicines, inconsistent billing, and the absence of centralized, searchable records. These shortcomings can lead to financial losses, stock-outs of essential medicines, and, in more serious cases, the dispensing of expired or near-expired products. This project addresses these issues by designing and implementing a computerized system built using Python 3.11+, the PyQt6 graphical user interface framework, and the SQLite3 relational database engine. The system follows a three-tier architecture that separates the presentation layer, business logic layer, and database layer, allowing for a maintainable and extensible codebase. The core functionalities implemented include medicine registration and categorization, supplier and customer record management, real-time inventory tracking with automatic stock deduction upon sale, expiry-date monitoring with visual alerts, low-stock notifications based on configurable reorder levels, and a point- of-sale (POS) module that calculates itemized bills and generates transaction receipts. All data is persisted in a normalized SQLite3 database that enforces referential integrity through primary key and foreign key constraints, as well as data validation rules such as NOT NULL, UNIQUE, and CHECK constraints. The system was evaluated through a structured testing process covering database initialization, CRUD operations, sales transactions, stock deduction accuracy, expiry detection, low-stock alerts, and input validation. Test results confirm that the system performs its intended functions reliably and produces accurate calculations. The developed Pharmacy Management System demonstrates how a combination of an event-driven GUI framework and a lightweight relational database can be used to build a practical, functional application that reduces manual effort, improves data accuracy, and supports better decision- making in a small to medium-sized pharmacy setting.

Yat Jason 0 325
personal
មេរៀនទី ៧៖ ការរក្សាទុក Blockchain Data ដោយប្រើ CSV File

មេរៀនទី ៧ នេះផ្ដោតលើការរក្សាទុក Blockchain Data ទៅក្នុង CSV File។ នៅមេរៀនទី ៦ និស្សិតបានបង្កើត Blockchain សាមញ្ញដោយប្រើ Python List ដែលមាន Genesis Block និង Blocks ថ្មីៗ។ ប៉ុន្តែ Blockchain ដែលរក្សាទុកក្នុង Memory នឹងបាត់បង់នៅពេលកម្មវិធីបិទ។ ដូច្នេះ មេរៀននេះណែនាំពីរបៀប Save Blocks ទៅក្នុង blocks.csv, Load Blocks ត្រឡប់មកក្នុង Python, Save Transactions ទៅក្នុង transactions.csv, និង Convert List/Dictionary Data ទៅជា JSON String មុនដាក់ក្នុង CSV។ Python csv module គាំទ្រ reader, writer, DictReader, និង DictWriter សម្រាប់អាន និងសរសេរទិន្នន័យជា row ឬ dictionary form ។ ព្រោះ Block មាន transactions ជា List of Dictionaries យើងត្រូវប្រើ json.dumps() ដើម្បី serialize ទិន្នន័យនេះទៅជា JSON formatted string ហើយ json.loads() ដើម្បី convert ត្រឡប់មក Python object នៅពេល Load ពី CSV; Python documentation ក៏បញ្ជាក់ថា sort_keys=True អាចធ្វើឱ្យ dictionary keys ត្រូវបាន sort ដើម្បីជួយឱ្យ serialization មានលំដាប់ថេរ ។ មេរៀននេះជាជំហានសំខាន់សម្រាប់ Final Project ព្រោះវាធ្វើឱ្យ Blockchain Prototype អាចរក្សាទុក Records បានជាក់ស្តែង មុនបន្តទៅមេរៀនទី៨ ស្តីពី Blockchain Validation និង Tamper Detection។

SEK Socheat 0 46
personal
មេរៀនទី ៦៖ ការបង្កើត Blockchain សាមញ្ញក្នុង Python Console

មេរៀនទី ៦ នេះផ្ដោតលើការបង្កើត Blockchain សាមញ្ញក្នុង Python Console ដោយយកចំណេះដឹងពីមេរៀនមុនៗមកភ្ជាប់ជាប្រព័ន្ធតែមួយ។ នៅមេរៀនទី ៥ និស្សិតបានរៀនពី Transaction Structure និង Block Structure។ ក្នុងមេរៀននេះ និស្សិតនឹងរៀនបង្កើត Genesis Block, បន្ថែម Block ថ្មី, ភ្ជាប់ Block ដោយប្រើ previous_hash, បង្កើត current hash, រក្សាទុក Blocks ក្នុង Python List និងបង្ហាញ Blockchain នៅក្នុង Console។ Blockchain ត្រូវបានពន្យល់ដោយ NIST ថាជា Ledger ដែលមាន Blocks ភ្ជាប់គ្នាតាម Cryptographic Hashes និងអាចជួយឱ្យការកែប្រែទិន្នន័យត្រូវបានរកឃើញ [1]។ ក្នុងមេរៀននេះ និស្សិតនឹងប្រើ Python modules ដូចជា hashlib, json និង datetime ដើម្បីបង្កើត Hash និង Timestamp សម្រាប់ Block។ Python hashlib ផ្ដល់ interface សម្រាប់ secure hashes ដូចជា SHA-256 [2] ហើយ json.dumps(..., sort_keys=True) ជួយ serialize dictionary ដោយមានលំដាប់ key ថេរ មុនធ្វើ hashing [3]។ មេរៀននេះជាជំហានសំខាន់មុនទៅកាន់មេរៀនទី ៧ ដែលនឹងបន្តទៅ CSV-Based Blockchain Storage។

SEK Socheat 0 25
personal
មេរៀនទី ៥៖ ការរចនា Transaction និង Block សម្រាប់ Blockchain Console Application

មេរៀនទី ៥ នេះផ្ដោតលើការរចនា Transaction និង Block ដែលជារចនាសម្ព័ន្ធស្នូលរបស់ Blockchain។ នៅមេរៀនមុនៗ និស្សិតបានរៀនពី Python Console Application, Functions, Lists, Dictionaries, CSV File Handling និង SHA-256 Hashing។ មេរៀននេះនឹងភ្ជាប់ចំណេះដឹងទាំងនោះ ដើម្បីបង្កើត Certificate Transaction និង Blockchain Block ដោយប្រើ Python Dictionary។ ក្នុង Project នេះ Transaction មួយតំណាងឱ្យ Certificate Record មួយ ហើយ Block មួយជាក្រុមនៃ Transactions ដែលមាន fields សំខាន់ៗដូចជា index, timestamp, transactions, previous_hash, nonce និង hash។ NIST ពន្យល់ថា Blockchain អាចឱ្យអ្នកប្រើកត់ត្រា Transactions ក្នុង Shared Ledger ហើយ Blocks ត្រូវបានភ្ជាប់គ្នាតាម Cryptographic Hashes ដើម្បីធ្វើឱ្យប្រព័ន្ធមានលក្ខណៈ Tamper-Evident [1]។ Python time module ត្រូវបានប្រើសម្រាប់បង្កើត Timestamp ហើយ Python json module អាចប្រើសម្រាប់បម្លែង Dictionary ទៅជា JSON String មុនធ្វើ Hash [2], [3]។ មេរៀននេះជាមូលដ្ឋានសំខាន់សម្រាប់មេរៀនទី ៦ ដែលនឹងបង្កើត Simple Blockchain ពេញលេញក្នុង Console។

SEK Socheat 0 21
personal
មេរៀនទី ៤៖ ការប្រើ SHA-256 Hashing និងការពិនិត្យភាពត្រឹមត្រូវនៃទិន្នន័យ

មេរៀនទី ៤ នេះណែនាំនិស្សិតអំពីគោលគំនិតសំខាន់មួយរបស់ Blockchain គឺ Hashing។ បន្ទាប់ពីមេរៀនទី៣ ដែលនិស្សិតបានរៀនពី Console Menu និង CSV File Handling មេរៀននេះបន្តទៅការប្រើ Hash ដើម្បីពិនិត្យភាពត្រឹមត្រូវនៃទិន្នន័យ។ Hash អាចយល់បានថាជា “ស្នាមម្រាមដៃឌីជីថល” របស់ទិន្នន័យ។ ទិន្នន័យដូចគ្នានឹងបង្កើត Hash ដូចគ្នា ប៉ុន្តែបើកែតែអក្សរមួយ Hash នឹងផ្លាស់ប្តូរខ្លាំង។ ក្នុងមេរៀននេះ និស្សិតនឹងប្រើ Python hashlib ដើម្បីបង្កើត SHA-256 hash សម្រាប់អត្ថបទធម្មតា Certificate Record និង CSV Data។ Python Documentation បង្ហាញថា hashlib ផ្ដល់ interface សម្រាប់ secure hash និង message digest algorithms រួមទាំង SHA-256 [1]។ NIST Secure Hash Standard កំណត់លក្ខណៈស្តង់ដាររបស់ SHA-256 ដែលមាន message digest size 256 bits [2]។ មេរៀននេះជាមូលដ្ឋានសំខាន់មុនទៅកាន់ Block Hash, Previous Hash, Blockchain Validation និង Tamper Detection។

SEK Socheat 0 20