solidity IDE下载地址 https://pan.baidu.com/s/1cY8VgDqB9Wt9VzK-Nocbyw

代码案例:

pragma solidity ^0.4.0;
//创建合约的时候,点的那个地址就是合约本身的地址
contract TollStation{ //构造器 存储车库车辆信息
struct CarInfo{
address _carAddr;//车主账户地址
string _lisencePlateNumber;//车牌号
uint _intime;//车辆进入时间
} //定义数组
CarInfo[] public car;
address addre;//合约地址 //合约的创建(构造器): payable(收钱)
function TollStation() public {
addre = msg.sender;
} //添加数据
function addData() payable{
car.push(CarInfo(msg.sender,"云A1123", now));
} //判断用户是否存在
modifier carExist{ bool contain;
for(uint i = 0;i<=car.length-1;i++)
{
if(msg.sender == car[i]._carAddr){
contain = true ;
} }
require(contain);//判断contain的值,如果不存在,则不继续执行
_;
} function account() public payable carExist returns (uint adr) { uint beforeTime; //取出当前账户的时间,然后用系统当前时间减去原来的时间 就可以计算需要扣除的金额
for(uint i = 0;i<=car.length-1;i++)
{
if(msg.sender == car[i]._carAddr){
beforeTime = car[i]._intime;
}
}
uint nowTime = now;
uint bal = nowTime - beforeTime;
if(bal<100000000){//小于1小时 扣除6wei
require(msg.value>0);
addre.transfer(6 ether);
emit Sent(msg.sender,"转账成功",msg.value);
}
else{
require(msg.value>0);
addre.transfer(10 ether);
emit Sent(msg.sender,"转账成功",msg.value);
}
return addre.balance;
} //事件 定义事件的作用就是可以在控制台输出和发送消息给客户端
event Sent(address addr,string msg,uint count); //查询数组
function queryCarData() returns(address addr,string str,uint time,uint size){
if(car.length<1){
return(0x323,"s",0,0);
}
else{
addr =car[car.length-1]._carAddr;
str = car[car.length-1]._lisencePlateNumber;
time = car[car.length-1]._intime;
size = car.length;
}
} function getLocalAddress() returns (address addr){
return this;
} function getTime() returns (uint now11){
now11 = now; return now11;//h获取系统时间 时间格式为12524208878 1524295087
}
}

(注意:require代码需要注释掉才可以)

下载了IDE后操作步骤如下:

1、解压后打开index.html,进入页面,复制代码,点击右侧的create,账户选择第一个。

2、切换账户,value值必须写,它主要是用于后面操作,就是车主进入车库多长时间,然后需要扣费多少,就是从value里面扣得,如果钱不够,交易失败。单位选择ether。

3、转账成功:

solidity 小案例 收费站的更多相关文章

  1. 机械表小案例之transform的应用

    这个小案例主要是对transform的应用. 时钟的3个表针分别是3个png图片,通过setInterval来让图片转动.时,分,秒的转动角度分别是30,6,6度. 首先,通过new Date函数获取 ...

  2. shell讲解-小案例

    shell讲解-小案例 一.文件拷贝输出检查 下面测试文件拷贝是否正常,如果cp命令并没有拷贝文件myfile到myfile.bak,则打印错误信息.注意错误信息中basename $0打印脚本名.如 ...

  3. [jQuery学习系列六]6-jQuery实际操作小案例

    前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> &l ...

  4. 02SpringMvc_springmvc快速入门小案例(XML版本)

    这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图:

  5. React.js入门小案例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  6. SqlDependency缓存数据库表小案例

    SqlDependency的简介: SqlDependency是outputcache网页缓存的一个参数,它的作用是指定缓存失效的数据库依赖项,可以具体到数据库和表. SqlDependency能解决 ...

  7. JavaScript apply函数小案例

    //回调函数1 function callback(a,b,c) { alert(a+b+c); } //回调函数2 function callback2(a,b) { alert(a+b); } / ...

  8. Session小案例------完成用户登录

    Session小案例------完成用户登录     在项目开发中,用户登陆功能再平常只是啦,当用户完毕username和password校验后.进入主界面,须要在主界面中显示用户的信息,此时用ses ...

  9. ch1-vuejs基础入门(hw v-bind v-if v-for v-on v-model 应用组件简介 小案例)

    1 hello world 引入vue.min.js 代码: ----2.0+版本 <div id="test"> {{str}} </div> <s ...

随机推荐

  1. [刷题] 237 Delete Nodes in a Linked List

    要求 给定链表中的一个节点,删除该节点 思路 通过改变节点的值实现  实现 1 struct ListNode { 2 int val; 3 ListNode *next; 4 ListNode(in ...

  2. python 运算及注释

    """ 上面的两行代码,在2.0的python中,若想执行含有汉字的代码,是必不可少的,且两行代码必写在单个py文件最上方,之间不可有任何字节.且该两行代码,可在pych ...

  3. 查询登录信息 w, who*, id, tty, last, finger

    查询登录信息 w, who*, id, tty, last, finger Wavky2016.12.14 16:19:37字数 813阅读 85w [options] [user...]显示所有已登 ...

  4. zabbix监控报警设置

    前提:已经安装好了zabbix server和zabbix agent 下面的方式不适合诸如用qq邮箱作为mail服务器,毫无疑问,zabbix支持自定义的邮件发送脚本,今天时间有限,改天在写!   ...

  5. cgic: CGI的C函数库-(转自COS)

    下载回源码包以后,就3个文件:cgic.c      函数库capture.c   一个很简单的CGI例子,仅仅输出两行提示文字cgictest.c  一个演示读取form表单数据的CGI例子 首先在 ...

  6. 微信小程序使用同声传译实现语音识别功能

    我使用同声传译语音识别功能是为了实现微信小程序首页的语音搜索功能,如果你也是那么恭喜你,你可以ctrl+c.ctrl+v再改一改,如果你不是那么你也不要着急的走可以看完我的文章会对你有所帮助! 首先是 ...

  7. thinkphp api接口 统一结果返回处理类

    20210602 修正 wqy的笔记:http://www.upwqy.com/details/216.html 返回结果处理,归根结底 主要是有两点 数据结构和返回的数据类型 1.数据类型 :一般情 ...

  8. 如何使用 IoC

    创建Maven工程,pom.xml添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  9. [leetcode] 44. 通配符匹配(Java)(动态规划)

    44. 通配符匹配 动态规划 做动态规划很简单,三步走: 第一步,判断可否用动态规划做,即判断是否满足两个条件:①最优子结构,②重叠子问题.显然该题求s与p是否match,可由其字串层层分解上来. 我 ...

  10. Jmeter- 笔记4 - 参数化 、函数

    参数化 调用变量的用法: ${变量名} 参数化第一 二种. 定义变量的两种方法: 配置元件(Config Element) -> 用户定义的变量(User Defined Variables) ...