40 lines
1.2 KiB
Solidity
40 lines
1.2 KiB
Solidity
// 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!");
|
|
}
|
|
}
|