当前位置: 首页 > article >正文

用 Deepseek 写的uniapp血型遗传查询工具

 

引言

在现代社会中,了解血型遗传规律对于优生优育、医疗健康等方面都有重要意义。本文将介绍如何使用Uniapp开发一个跨平台的血型遗传查询工具,帮助用户预测孩子可能的血型。

一、血型遗传基础知识

人类的ABO血型系统由三个等位基因决定:IA、IB和i。其中IA和IB对i是显性关系:

  • A型血基因型:IAIA或IAi

  • B型血基因型:IBIB或IBi

  • AB型血基因型:IAIB

  • O型血基因型:ii

根据孟德尔遗传定律,孩子的血型由父母双方各提供一个等位基因组合而成。

二、Uniapp开发优势

选择Uniapp开发这款工具主要基于以下优势:

  1. 跨平台能力:一次开发,可发布到iOS、Android、H5及各种小程序平台

  2. 开发效率高:基于Vue.js框架,学习成本低,开发速度快

  3. 性能优良:接近原生应用的体验

  4. 生态丰富:拥有完善的插件市场和社区支持

三、核心代码解析

1. 血型遗传算法实现

getPossibleGenotypes(parent1, parent2) {// 血型对应的可能基因型const typeToGenotypes = {'A': ['AA', 'AO'],'B': ['BB', 'BO'],'AB': ['AB'],'O': ['OO']}const parent1Genotypes = typeToGenotypes[parent1]const parent2Genotypes = typeToGenotypes[parent2]const possibleGenotypes = []// 生成所有可能的基因组合for (const g1 of parent1Genotypes) {for (const g2 of parent2Genotypes) {// 每个父母贡献一个等位基因for (let i = 0; i < 2; i++) {for (let j = 0; j < 2; j++) {const childGenotype = g1[i] + g2[j]possibleGenotypes.push(childGenotype)}}}}return possibleGenotypes
}

这段代码实现了血型遗传的核心算法,通过遍历父母可能的基因型组合,计算出孩子所有可能的基因型。

2. 概率计算

calculateProbabilities(genotypes) {const bloodTypeCounts = {'A': 0,'B': 0,'AB': 0,'O': 0}// 基因型到血型的映射const genotypeToType = {'AA': 'A','AO': 'A','BB': 'B','BO': 'B','AB': 'AB','OO': 'O'}// 统计每种血型的出现次数for (const genotype of genotypes) {const type = genotypeToType[genotype]bloodTypeCounts[type]++}const total = genotypes.lengthconst probabilities = {}// 计算概率for (const type in bloodTypeCounts) {const count = bloodTypeCounts[type]if (count > 0) {probabilities[type] = (count / total * 100).toFixed(1)}}return probabilities
}

这部分代码统计各种血型出现的频率,并计算出每种血型出现的概率百分比。

3. 界面交互实现

<view class="form-item"><text class="label">父亲血型:</text><picker @change="bindParent1Change" :value="parent1Index" :range="bloodTypes" range-key="name"><view class="picker">{{bloodTypes[parent1Index].name}}</view></picker>
</view><button class="calculate-btn" @click="calculateBloodType">计算孩子可能的血型</button>

使用Uniapp的picker组件实现血型选择,通过按钮触发计算逻辑,界面简洁友好。

四、项目亮点

  1. 科学准确性:严格遵循遗传学原理,计算结果准确可靠

  2. 用户体验优化

    • 结果自动滚动到可视区域

    • 概率可视化展示

    • 遗传知识科普

  3. 代码结构清晰

    • 业务逻辑与UI分离

    • 复用性高的工具函数

    • 良好的代码注释

完整代码

<template><view class="container"><view class="header"><text class="title">血型遗传查询工具</text></view><view class="card"><text class="subtitle">选择父母血型</text><view class="form-item"><text class="label">父亲血型:</text><picker @change="bindParent1Change" :value="parent1Index" :range="bloodTypes" range-key="name"><view class="picker">{{bloodTypes[parent1Index].name}}</view></picker></view><view class="form-item"><text class="label">母亲血型:</text><picker @change="bindParent2Change" :value="parent2Index" :range="bloodTypes" range-key="name"><view class="picker">{{bloodTypes[parent2Index].name}}</view></picker></view><button class="calculate-btn" @click="calculateBloodType">计算孩子可能的血型</button></view><view class="card result-card" v-if="showResult"><text class="subtitle">结果</text><text class="result-text">父母血型: {{parent1Name}} + {{parent2Name}}</text><text class="result-text">孩子可能的血型:<text class="blood-type">{{resultText}}</text></text><text class="probability" v-if="probabilityText">{{probabilityText}}</text></view><view class="card note-card"><text class="note-title">血型遗传规律说明:</text><text class="note-text">• 血型由ABO基因决定,A和B是显性基因,O是隐性基因。</text><text class="note-text">• A型血基因型可能是AA或AO,B型血基因型可能是BB或BO。</text><text class="note-text">• AB型血基因型是AB,O型血基因型是OO。</text></view></view>
</template><script>export default {data() {return {bloodTypes: [{name: 'A型',value: 'A'},{name: 'B型',value: 'B'},{name: 'AB型',value: 'AB'},{name: 'O型',value: 'O'}],parent1Index: 0,parent2Index: 0,parent1Name: 'A型',parent2Name: 'A型',parent1Value: 'A',parent2Value: 'A',showResult: false,resultText: '',probabilityText: ''}},methods: {bindParent1Change(e) {this.parent1Index = e.detail.valuethis.parent1Name = this.bloodTypes[this.parent1Index].namethis.parent1Value = this.bloodTypes[this.parent1Index].value},bindParent2Change(e) {this.parent2Index = e.detail.valuethis.parent2Name = this.bloodTypes[this.parent2Index].namethis.parent2Value = this.bloodTypes[this.parent2Index].value},calculateBloodType() {// 计算可能的基因组合const possibleGenotypes = this.getPossibleGenotypes(this.parent1Value, this.parent2Value)// 计算可能的血型及其概率const bloodTypeProbabilities = this.calculateProbabilities(possibleGenotypes)// 生成结果文本let resultText = ''let probabilityText = '概率: 'let first = truefor (const type in bloodTypeProbabilities) {if (!first) {resultText += '、'probabilityText += ','}resultText += this.getBloodTypeName(type)probabilityText += `${this.getBloodTypeName(type)} ${bloodTypeProbabilities[type]}%`first = false}this.resultText = resultTextthis.probabilityText = probabilityTextthis.showResult = true// 滚动到结果位置uni.pageScrollTo({scrollTop: 300,duration: 300})},getBloodTypeName(type) {const names = {'A': 'A型','B': 'B型','AB': 'AB型','O': 'O型'}return names[type]},getPossibleGenotypes(parent1, parent2) {// 血型对应的可能基因型const typeToGenotypes = {'A': ['AA', 'AO'],'B': ['BB', 'BO'],'AB': ['AB'],'O': ['OO']}const parent1Genotypes = typeToGenotypes[parent1]const parent2Genotypes = typeToGenotypes[parent2]const possibleGenotypes = []// 生成所有可能的基因组合for (const g1 of parent1Genotypes) {for (const g2 of parent2Genotypes) {// 每个父母贡献一个等位基因for (let i = 0; i < 2; i++) {for (let j = 0; j < 2; j++) {const childGenotype = g1[i] + g2[j]possibleGenotypes.push(childGenotype)}}}}return possibleGenotypes},calculateProbabilities(genotypes) {const bloodTypeCounts = {'A': 0,'B': 0,'AB': 0,'O': 0}// 基因型到血型的映射const genotypeToType = {'AA': 'A','AO': 'A','BB': 'B','BO': 'B','AB': 'AB','OO': 'O'}// 统计每种血型的出现次数for (const genotype of genotypes) {const type = genotypeToType[genotype]bloodTypeCounts[type]++}const total = genotypes.lengthconst probabilities = {}// 计算概率for (const type in bloodTypeCounts) {const count = bloodTypeCounts[type]if (count > 0) {probabilities[type] = (count / total * 100).toFixed(1)}}return probabilities}}}
</script><style>.container {padding: 20rpx;}.header {margin: 30rpx 0;text-align: center;}.title {font-size: 40rpx;font-weight: bold;color: #333;}.card {background-color: #fff;border-radius: 16rpx;padding: 30rpx;margin-bottom: 30rpx;box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);}.subtitle {font-size: 32rpx;font-weight: bold;margin-bottom: 30rpx;display: block;color: #333;}.form-item {margin-bottom: 30rpx;}.label {font-size: 28rpx;color: #666;margin-bottom: 10rpx;display: block;}.picker {height: 80rpx;line-height: 80rpx;padding: 0 20rpx;border: 1rpx solid #eee;border-radius: 8rpx;font-size: 28rpx;}.calculate-btn {background-color: #4CAF50;color: white;margin-top: 40rpx;border-radius: 8rpx;font-size: 30rpx;height: 90rpx;line-height: 90rpx;}.result-card {background-color: #e9f7ef;}.result-text {font-size: 28rpx;margin-bottom: 20rpx;display: block;}.blood-type {color: #e74c3c;font-weight: bold;}.probability {font-size: 26rpx;color: #666;display: block;margin-top: 10rpx;}.note-title {font-weight: bold;font-size: 28rpx;margin-bottom: 15rpx;display: block;color: #333;}.note-text {font-size: 26rpx;color: #666;display: block;margin-bottom: 10rpx;line-height: 1.6;}
</style>

相关文章:

用 Deepseek 写的uniapp血型遗传查询工具

引言 在现代社会中&#xff0c;了解血型遗传规律对于优生优育、医疗健康等方面都有重要意义。本文将介绍如何使用Uniapp开发一个跨平台的血型遗传查询工具&#xff0c;帮助用户预测孩子可能的血型。 一、血型遗传基础知识 人类的ABO血型系统由三个等位基因决定&#xff1a;I…...

程序化广告行业(84/89):4A广告代理公司与行业资质解读

程序化广告行业&#xff08;84/89&#xff09;&#xff1a;4A广告代理公司与行业资质解读 大家好&#xff01;在探索程序化广告行业的道路上&#xff0c;每一次知识的分享都是我们共同进步的阶梯。一直以来&#xff0c;我都希望能和大家携手前行&#xff0c;深入了解这个充满机…...

go语言gRPC使用流程

1. 安装工具和依赖 安装 Protocol Buffers 编译器 (protoc) 下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 使用说明&#xff1a;https://protobuf.dev/ 【centos环境】yum方式安装&#xff1a;protoc[rootlocalhost demo-first]# yum install …...

【眼底辅助诊断开放平台】项目笔记

这是一个标题 任务一前端页面开发&#xff1a;后端接口配置&#xff1a; 任务二自行部署接入服务 日志修改样式和解析MD文档接入服务 Note前端登陆不进去/更改后端api接口304 Not Modifiedlogin.cache.jsonERR_CONNECTION_TIMED_OUT跨域一般提交格式proxy.ts src/coponents 目录…...

Java笔记5——面向对象(下)

目录 一、抽象类和接口 1-1、抽象类&#xff08;包含抽象方法的类&#xff09; 1-2、接口 ​编辑​编辑 二、多态 ​编辑 1. 自动类型转换&#xff08;向上转型&#xff09; 示例&#xff1a; 注意&#xff1a; 2. 强制类型转换&#xff08;向下转型&#xff09; 示…...

NI的LABVIEW工具安装及卸载步骤说明

一.介绍 最近接到个转交的项目&#xff0c;项目主要作为上位机工具开发&#xff0c;在对接下位机时&#xff0c;有用到NI的labview工具。labview软件是由美国国家仪器&#xff08;NI&#xff09;公司研制开发的一种程序开发环境&#xff0c;主要用于汽车测试、数据采集、芯片测…...

[reinforcement learning] 是什么 | 应用场景 | Andrew Barto and Richard Sutton

目录 什么是强化学习&#xff1f; 强化学习的应用场景 广告和推荐 对话系统 强化学习的主流算法 纽约时报&#xff1a;Turing Award Goes to 2 Pioneers of Artificial Intelligence wiki 资料混合&#xff1a;youtube, wiki, github 今天下午上课刷到了不少&#xff0…...

css一些注意事项

css一些注意事项 .bg_ {background-image: url(/static/photo/activity_bg.png);background-size: 100% auto;background-repeat: no-repeat;background: linear-gradient(to bottom, #CADCEA, #E8F3F6);min-height: 100vh; } 背景图片路径正确但是并没有显示 // 方案1&…...

[从零开始学数据库] 基本SQL

注意我们的主机就是我们的Mysql数据库服务器 这里我们可以用多个库 SQL分类(核心是字段的CRUD)![](https://i-blog.csdnimg.cn/img_convert/0432d8db050082a49258ba8a606056c7.png) ![](https://i-blog.csdnimg.cn/img_convert/bdf5421c2b83e22beca12da8ca89b654.png) 重点是我…...

react/vue中前端多图片展示页面优化图片加载速度的五种方案

需求背景 在多项目中 例如官网项目中 会出现很多大图片显示的情况 这个时候就会出现图片过大 公司带宽不够之类导致页面加载速度过慢及页面出现后图片仍然占位但并未加载出来 或者因为网络问题导致图片区域黑块等等场景 这个时候我们就要对图片和当前场景进行优化 方案定…...

qt中的正则表达式

问题&#xff1a; 1.在文本中把dog替换成cat&#xff0c;但可能会把dog1替换成cat1&#xff0c;如果原本不想替换dog1&#xff0c;就会出现问题 2文本中想获取某种以.txt为结尾的多有文本&#xff0c;普通的不能使用 3如果需要找到在不同的系统中寻找换行符&#xff0c;可以…...

AT_abc400_e [ABC400E] Ringo‘s Favorite Numbers 3 题解

题目传送门 题目大意 题目描述 对于正整数 N N N&#xff0c;当且仅当满足以下两个条件时&#xff0c; N N N 被称为 400 number&#xff1a; N N N 恰好有 2 2 2 种不同的素因数。对于 N N N 的每个素因数 p p p&#xff0c; N N N 被 p p p 整除的次数为偶数次。更严…...

git 提交标签

Git 提交标签 提交消息格式&#xff1a; <type>: <description> &#xff08;示例&#xff1a;git commit -m "feat: add user login API"&#xff09; 标签适用场景feat新增功能&#xff08;Feature&#xff09;。fix修复 Bug&#xff08;Bug fix&…...

关于 Spring Batch 的详细解析及其同类框架的对比分析,以及如何自己设计一个java批处理框架(类似spring batch)的步骤

以下是关于 Spring Batch 的详细解析及其同类框架的对比分析&#xff1a; 一、Spring Batch 核心详解 1. 核心概念 作业&#xff08;Job&#xff09;&#xff1a;批处理任务的顶层容器&#xff0c;由多个步骤&#xff08;Step&#xff09;组成。 步骤&#xff08;Step&#…...

【Java面试系列】Spring Cloud微服务架构中的分布式事务实现与性能优化详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Cloud微服务架构中的分布式事务实现与性能优化详解 - 3-5年Java开发必备知识 引言 在微服务架构中&#xff0c;分布式事务是一个不可避免的挑战。随着业务复杂度的提升&#xff0c;如何保证跨服务的数据一致性成为面试中的高频问题。本文将从基础到进…...

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【论文篇+改进】A题解题全流程(持续更新)

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【论文篇改进】A题解题全流程&#xff08;持续更新&#xff09; 写在前面&#xff1a; 我是一个人&#xff0c;没有团队&#xff0c;所以出的比较慢&#xff0c;每年只做一次赛题&#xff0c;泰迪杯&#xff0c;我会认真对…...

Linux系统常见磁盘扩容操作(Common Disk Expansion Operations in Linux Systems)

Linux系统常见磁盘扩容操作 目录说明 一、准备工作&#xff1a;获取目标磁盘信息 &#xff08;1&#xff09;确认分区表格式和文件系统 二、扩容已有MBR分区 &#xff08;1&#xff09;分区后扩容 ext为例 xfs为例 三、扩容已有GPT分区 &#xff08;1&#xff09;分区…...

数据结构——哈希详解

数据结构——哈希详解 目录 一、哈希的定义 二、六种哈希函数的构造方法 2.1 除留取余法 2.2 平方取中法 2.3 随机数法 2.4 折叠法 2.5 数字分析法 2.6 直接定值法 三、四种解决哈希冲突的方法 3.1 开放地址法 3.1.1 线性探测法 3.1.2 二次探测法 3.2 链地址法 3…...

Spark-SQL核心编程

简介 Hadoop与Spark-SQL的对比 Hadoop在处理结构化数据方面存在局限性&#xff0c;无法有效处理某些类型的数据。 Spark应运而生&#xff0c;特别设计了处理结构化数据的模块&#xff0c;称为Spark SQL&#xff08;原称Shark&#xff09;。 SparkSQL的发展历程&#xff1a; Sp…...

pywebview 常用问题分享

文章目录 前言问题描述与方案(待补充)1、动态设置本地调试目录和打包目录2、构建后运行程序白屏 前言 最近做一个pywebview项目&#xff0c;遇到了一些问题&#xff0c;记录一下&#xff0c;分享给大家&#xff0c;希望能帮助有遇到相似问题的人事。 问题描述与方案(待补充) …...

系统设计模块之安全架构设计(身份认证与授权(OAuth2.0、JWT、RBAC/ABAC))

一、OAuth 2.0&#xff1a;开放授权框架 OAuth 2.0 是一种标准化的授权协议&#xff0c;允许第三方应用在用户授权下访问其资源&#xff0c;而无需直接暴露用户密码。其核心目标是 分离身份验证与授权&#xff0c;提升安全性与灵活性。 1. 核心概念与流程 角色划分&#xff…...

Docker 与 Podman常用知识汇总

一、常用命令的对比汇总 1、基础说明 Docker&#xff1a;传统的容器引擎&#xff0c;使用 dockerd 守护进程。 Podman&#xff1a;无守护进程、无root容器引擎&#xff0c;兼容 Docker CLI。 Podman 命令几乎完全兼容 Docker 命令&#xff0c;只需将 docker 替换为 podman。…...

如何通过自动化解决方案提升企业运营效率?

引言 在现代企业中&#xff0c;运营效率直接影响着企业的成本、速度与竞争力。尤其是随着科技的不断发展&#xff0c;传统手工操作和低效的流程逐渐无法满足企业的需求。自动化解决方案正成为企业提升运营效率、降低成本和提高生产力的关键。无论是大型跨国公司&#xff0c;还…...

unity100天学习计划

以下是一个为期100天的Unity学习大纲,涵盖从零基础到独立开发完整游戏的全流程,结合理论、实践和项目实战,每天学习2-3小时: 第一阶段:基础奠基(Day 1-20) 目标:掌握Unity引擎基础与C#编程 Day 1-5:引擎入门 安装Unity Hub和Unity Editor(LTS版本)熟悉Unity界面:S…...

多坐标系变换全解析:从相机到WGS-84的空间坐标系详解

多坐标系变换全解析:从相机到WGS-84的空间坐标系详解 一、常见坐标系简介二、各坐标系的功能和使用场景1. WGS-84 大地坐标系(经纬高)2. 地心直角坐标系(ECEF)3. 本地 ENU / NED 坐标系4. 平台坐标系(Body)5. 相机坐标系三、坐标变换流程图四、如何选用合适的坐标系?五…...

SpringCloud Alibaba 之分布式全局事务 Seata 原理分析

1. 什么是 Seata&#xff1f;为什么需要它&#xff1f; 想象一下&#xff0c;你去银行转账&#xff1a; 操作1&#xff1a;从你的账户扣款 1000 元操作2&#xff1a;向对方账户增加 1000 元 如果 操作1 成功&#xff0c;但 操作2 失败了&#xff0c;你的钱就凭空消失了&…...

作业帮前端面试题及参考答案 (100道面试题-上)

HTML5 的优势是什么? HTML5 作为 HTML 语言的新一代标准,具有众多显著优势,为现代网页开发带来了诸多便利与革新。 在语义化方面,HTML5 引入了大量具有明确语义的标签,如<header>、<nav>、<article>、<section>、<aside>、<footer>等…...

Large Language Model(LLM)的训练和微调

之前一个偏工程向的论文中了&#xff0c;但是当时对工程理论其实不算很了解&#xff0c;就来了解一下 工程流程 横轴叫智能追寻 竖轴上下文优化 Prompt不行的情况下加shot(提示)&#xff0c;如果每次都要加提示&#xff0c;就可以试试知识库增强检索来给提示。 如果希望增强…...

统计销量前十的订单

传入参数&#xff1a; 传入begin和end两个时间 返回参数 返回nameList和numberList两个String类型的列表 controller层 GetMapping("/top10")public Result<SalesTop10ReportVO> top10(DateTimeFormat(pattern "yyyy-MM-dd") LocalDate begin,Dat…...

AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理

AI大模型原理可视化工具&#xff1a;深入浅出理解大语言模型的工作原理 在人工智能快速发展的今天&#xff0c;大语言模型&#xff08;如GPT、BERT等&#xff09;已经成为改变世界的重要技术。但对于很多人来说&#xff0c;理解这些模型的工作原理仍然是一个挑战。为了帮助更多…...