From c736aa00e304f9ef848d87f3fd79386d906d6425 Mon Sep 17 00:00:00 2001 From: bhakti-thakur Date: Wed, 5 Nov 2025 17:09:16 +0530 Subject: [PATCH] BCT 3 n 4 added --- BCT/BankAccount.sol | 29 +++++++++++++++++++++++++++++ BCT/StudentData.sol | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 BCT/BankAccount.sol create mode 100644 BCT/StudentData.sol diff --git a/BCT/BankAccount.sol b/BCT/BankAccount.sol new file mode 100644 index 0000000..adcea21 --- /dev/null +++ b/BCT/BankAccount.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +contract BankAccount { + mapping(address => uint256) private balances; + + event Deposit(address indexed account, uint256 amount); + event Withdraw(address indexed account, uint256 amount); + + function deposit() public payable { + require(msg.value > 0, "Deposit amount must be greater than 0"); + balances[msg.sender] += msg.value; + emit Deposit(msg.sender, msg.value); + } + + function withdraw(uint256 amount) public { + require(amount > 0, "Withdraw amount must be greater than 0"); + require(balances[msg.sender] >= amount, "Insufficient balance"); + + balances[msg.sender] -= amount; + payable(msg.sender).transfer(amount); + + emit Withdraw(msg.sender, amount); + } + + function getBalance() public view returns (uint256) { + return balances[msg.sender]; + } +} diff --git a/BCT/StudentData.sol b/BCT/StudentData.sol new file mode 100644 index 0000000..5276212 --- /dev/null +++ b/BCT/StudentData.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +contract StudentData { + struct Student { + uint256 id; + string name; + uint8 age; + string course; + } + + Student[] private students; + + event StudentAdded(uint256 id, string name, string course); + event FallbackCalled(address sender, uint value, string message); + + function addStudent(uint256 _id, string memory _name, uint8 _age, string memory _course) public { + students.push(Student(_id, _name, _age, _course)); + emit StudentAdded(_id, _name, _course); + } + + function getStudent(uint256 index) public view returns (uint256, string memory, uint8, string memory) { + require(index < students.length, "Invalid index"); + Student memory s = students[index]; + return (s.id, s.name, s.age, s.course); + } + + function getTotalStudents() public view returns (uint256) { + return students.length; + } + + fallback() external payable { + emit FallbackCalled(msg.sender, msg.value, "Fallback function triggered!"); + } + + receive() external payable { + emit FallbackCalled(msg.sender, msg.value, "Receive function triggered!"); + } +}