solidity智能合约开发实例
2023-09-27 14:22:01 时间
pragma solidity ^0.4.20;
contract FacePlat {
string[] keys;
struct Person {
string outid; // 学号
string name; // 姓名
string face; // 人脸特征值
}
// 存储人员信息
mapping(string => Person) Persons;
// 增加
function create(string outid, string name, string face) public returns(bool) {
Persons[outid].outid = outid;
Persons[outid].name = name;
Persons[outid].face = face;
keys.push(outid);
return false;
}
// 删除
function del(string outid) public returns(bool) {
delete Persons[outid];
bool b = false;
int index = -1;
// 查找元素
for (uint i = 0; i < keys.length; i++) {
if (bytes(outid).length == bytes(keys[i]).length) {
if(keccak256(outid) == keccak256(keys[i])) {
b = true;
}
}
}
if(!b) {
return false;
}
for (uint j = 0; j < keys.length-1; j++) {
keys[j] = keys[j+1];
}
delete keys[keys.length-1];
keys.length--;
return false;
}
// 更新
function update(string outid, string name, string face) public returns(bool) {
Persons[outid].outid = outid;
Persons[outid].name = name;
Persons[outid].face = face;
return true;
}
// 读取
function read(string outid) public returns(bool, string,string,string) {
bool b = false;
// 查找元素
for (uint i = 0; i < keys.length; i++) {
if (bytes(outid).length == bytes(keys[i]).length) {
if(keccak256(outid) == keccak256(keys[i])) {
b = true;
}
}
}
if(!b) {
return (false, "", "", "");
}
return (true, Persons[outid].outid,Persons[outid].name, Persons[outid].face);
}
// 总数量
function total() public returns(uint256) {
return keys.length;
}
// 总数量
function findAllKeys() public returns(string) {
string memory s;
for (uint i = 0; i < keys.length; i++) {
s = strcat(s, keys[i]);
s = strcat(s, "|");
}
return s;
}
function strcat(string _a, string _b) internal returns (string){
bytes memory _ba = bytes(_a);
bytes memory _bb = bytes(_b);
string memory ret = new string(_ba.length + _bb.length);
bytes memory bret = bytes(ret);
uint k = 0;
for (uint i = 0; i < _ba.length; i++)
bret[k++] = _ba[i];
for (i = 0; i < _bb.length; i++)
bret[k++] = _bb[i];
return string(ret);
}
}
相关文章
- 【JAVA】封装:实例和阶段性理解(不断学习,不断更新...)
- elasticsearch集群搭建实例
- 《正则表达式经典实例(第2版)》——2.7 Unicode码位、类别、区块和字母表
- 《JavaScript面向对象精要》——1.4 内建类型实例化
- 《Objective-C函数速查实例手册》——1.1节Objective-C基础
- Adaboost算法原理分析和实例+代码(简明易懂)
- Java经典实例:使用DateFormatter来格式化日期时间
- Android应用Design Support Library完全使用实例
- 窥探 Swift 之 函数与闭包的应用实例
- Python实例 复制文件
- JMeter学习-030-JMeter性能测试常用之事务控制器实例
- Java实例---flappy-bird实例[最终版]
- Vue 实例实战之 Vue webpack 仿去哪儿网App页面开发(应用中的几个页面简单实现)
- Java新手入门200例125之用C3P0连接Mysql实例
- 使用jQuery中ajax实例