全国职业院校技能大赛“区块链技术应用”赛项赛卷—“航班延误险案例”

本文描述了一个航班延误险的场景,乘客在购票后可购买保险,保险公司需预存赔偿金。系统使用Solidity编写智能合约,前端采用Vue3构建界面,后端基于SpringBoot和MySQL处理数据,同时涉及nginx部署和Druid监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.案例分析

1.1 需求描述

在航班延误险场景中,乘机人A在机票销售平台S中向航空公司V购买了一张机票后,在0.5小时内可以在S中上购买保险公司C的航班延误险,在S中预存10元保费。如果未预存保费,交易失败;如果在0.5小时内预存了10元保费,交易成功。C需要2小时内在S上预存相应的赔偿金1000元;默认C会预存1000元赔偿金,不考虑其他情况。如果C没有在2小时内预存赔偿金,S就直接将保费退还给用户;如果C预存了赔偿金,C为A在S中生成电子保单。默认V会在S中上传航班信息,不考虑其他情况,S会进行延误时间的判断,若航班没有延误或者延误时间少于4小时,无需理赔,S自动将A预存的保费转账给C,并退还C预存的赔偿金,保险交易结束。如果航班延误超过4小时,S也会将保费转账给C,但是会将C预存的赔偿金赔偿给A,理赔结束。本案例默认账户金额足够,不考虑其他情况。

1.2 用例分析

表1 购买机票用例表
用例名称购买机票
用例描述该用例是该成绩人向航空公司购买机票的情况下,为乘机人提供后续服务
前置条件在开始此用例之前,航班延误系统正常运行,此用例开始执行
后置条件如果该用例执行成功,进入购买保险流程
事件流描述 主事件流:1.乘机人成功购买机票; 2.如果未购买机票,本用例结束
异常事件流:未发生交易,用例结束

购买机票用例图

购买机票用例图

表2 购买保险用例表
用例名称购买保险
用例描述乘机人在系统中购买了保险
前置条件在开始此用例之前,乘机人已经购买了机票,此用例开始执行
后置条件如果成功执行,则进入预存赔偿金用例流程
事件流描述 主事件流:1.乘机人在0.5小时内在平台购买了航班延误险; 2.如果乘机人未在0.5小时内购买航班延误险,则进入异常事件流; 3.乘机人在平台中预存10元保费,用例结束。
异常事件流:1.未发生交易,用例结束; 2.交易失败,用例结束

购买机票用例图
在这里插入图片描述

2.使用Solidity语言进行智能合约开发

见代码文件

3.使用vue3开发可视化界面

环境版本准备

nodejsv15.14.0
npm7.7.6
vuejs@vue/cli 5.0.8

3.1 使用vite快速创建vue项目

npm init vite

Need to install the following packages:
  create-vite
Ok to proceed? (y) y
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'create-vite@4.4.1',
npm WARN EBADENGINE   required: { node: '^14.18.0 || >=16.0.0' },
npm WARN EBADENGINE   current: { node: 'v15.14.0', npm: '7.7.6' }
npm WARN EBADENGINE }
√ Project name: ... avition-project
√ Select a framework: » Vue
√ Select a variant: » JavaScript

Scaffolding project in E:\school\区块链\code\vue\avition-project...

Done. Now run:
 cd avition-project
 npm install
 npm run dev

3.2 创建vue项目方式二

在命令窗口输入指令
  vue create 项目名称  

3.3 打包部署vue项目

在项目中执行命令进行打包

npm run build

3.3.1 在Ubuntu中安装nginx服务

 apt install nginx   #安装
 nginx -v  #查看安装版本
service nginx start  #启动nginx

3.3.2 nginx文件安装完成之后的文件位置

在这里插入图片描述

3.3.3 打包vue项目

npm run build:prod
#将生成的dist文件夹压缩上传到nginx web服务器中/usr/share/nginx/html中
unzip dist.zip #解压

3.3.4 更改nginx配置文件

在这里插入图片描述

3.3.5 重启nginx

nginx -s reload

3.2 在服务器中安装mysql

4.使用Java开发后端

在idea中创建springboot项目,并在pom.xml中引入以下依赖

 <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- JDBC连接池、监控组件 Druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!-- JDBC连接池、监控组件 Druid -->

        <!-- 添加 log4j 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.43</version>
        </dependency>

        <dependency>
            <groupId>org.web3j</groupId>
            <artifactId>core</artifactId>
            <version>4.3.0</version>
        </dependency>
    </dependencies>

后端代码见群文件
后端开发完成后打包部署到服务器
在这里插入图片描述
先clean再package或直接install
然后把jar包上传到服务器

nohup java -jar educhainx_flight_dapp-0.0.1-SNAPSHOT.jar  > ./log.file 2>&1 &

nohup可以使项目持续运行

### 区块链技术在航空延误中的应用 区块链作为一种分布式账本技术,提供了被信任交互与不可变审计跟踪的可能性[^1]。这种特性使得区块链特别适合应用于保行业,尤其是航空延误这类依赖于透明、可靠数据交换的场景。 #### 数据的真实性和安全性保障 通过利用区块链的技术特点,在处理航空延误时可以确保所有涉及的数据记录都是真实可靠的。每一次航班的状态更新都会作为一个新的区块加入到链条之中,并且这些信息一旦写入便无法篡改。因此,保公司能够基于准确无误的信息来进行理赔判断,减少了欺诈行为的发生概率。 #### 自动化流程优化 对于航空公司而言,借助智能合约功能可以在满足预设条件的情况下自动触发赔付机制。例如当某个航班确实发生了长时间延迟之后,无需人工干预即可迅速完成赔偿款项支付给受影响乘客的操作过程。这种方式不仅提高了效率还增强了用户体验感。 #### 提升透明度和可追溯性 每一个参与方都可以查看整个交易历史记录,从而增加了业务操作上的公开透明程度;同时也方便监管机构随时审查相关情况以确保合规合法经营。此外,由于每笔交易都被永久保存下来并带有时间戳记号,所以即使出现问题也容易追踪责任归属。 ```java // 航班信息实体类设计示例 (部分代码片段) public class FlightInfo { private String flightNumber; private Date departureTime; private boolean isDelayed; public void setDelayStatus(boolean status){ this.isDelayed = status; // 更新至区块链网络... } } ``` 上述Java代码展示了如何定义一个简单的`FlightInfo`对象用于表示单次飞行的基本属性之一——是否发生过延误事件。每当检测到实际起飞时刻晚于计划时间,则会调用方法改变状态并将此变更同步到对应的区块链节点上[^2]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源码方舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值