准死证网上便民系统设计

简介: 人有生必有死,有准生证必然就有准死证,随着老龄化程度加剧,死亡管制势在必行,一起来通过准死证系统了解scala的新特性吧

众所周知,现在全国都提倡生育,凡符合享受国家规定90天以上产假的生育女职工可享受生育营养补贴300元、围产保健补贴700元,高达几百元的生育津贴促进了大量妇女同志的生育意愿。此外,各地出台了很多补贴政策,像在深圳,现在只要父母一方有深圳户籍,生育第一个子女的,办理出生入户后发放一次性生育补贴3000元,另外每年发放1500元育儿补贴,直至该子女满3周岁。三年合计可以领到7500元巨款,这样丰厚的生育补贴,让我们这些即便是居住在深圳这样花销巨大的城市,也完全有能力生育并抚养子女了!

尽管生育的资金已经没有任何的问题,唯一稍有不足的地方就是准生证的办理还是有些麻烦,如果双方都没有深圳户籍,虽然可以在深圳办理准生证,但仍然需要先准备材料并前往户籍所在地的公安分局出入境管理处办理预审,然后领取预审表,缴纳50元的申请费,再到深圳户政局来办理准生证,然后只需要15个工作日,就能办理下来了。

这个准生证的流程如此的不可动摇,想必有非常深层的考虑,应该是一套极其复杂的系统,堪比CAEEDABIM等类型的工业设计软件产品,我们的普通的开发人员想复现这样复杂的系统几乎是不可能的,不过我发现了一个蓝海赛道,就是准死证的系统设计。

可以想一想一个基本的问题,人有生就有死,有准生证必然就有准死证,随着老龄化程度加剧,死亡管制势在必行,应当提倡晚退休、晚死,少死、优死等具体内容。可能有人会说死亡不是有死亡证明么?不不,死亡证明是相当于出生证呀,一个是事前,一个是事后,这个完全是两套系统,不可混淆,那么准死证应当如何设计呢?参考一些类似的系统流程,我大约设计了如下几个步骤流程:

  1. 网上填写死亡预审申请表,进行预约。
  2. 在预约期间可以先购买死亡保险,如果最终死亡审批没有通过,也可以有个保障,能安稳度过到下次死亡审批期。
  3. 预约通过后,回到户籍地办理死亡预审摇号许可。
  4. 下载“死亡办”APP,进行死亡许可摇号。
  5. 摇号可以全家参与,比喻说一家九口人,4个老人,一对父母,3个孩子。这是标准的3胎家庭,就可以9个人集体参与死亡摇号,也体现了多生育的好处,因为如果是独生子女家庭,只能7个人摇号了。
  6. 如果成功摇到号码,就可以开始先缴纳死亡增值税,拿到正副税本。
  7. 最后进行财产清查,完成财产继承手续,就可以合法死亡并让子女继承财产了。

这样一算下来系统确实有够复杂的,那么流程有了,那么具体需要怎么设计呢,因为这个系统很复杂,所以设计起来是高度抽象的,所以要先选好语言,简单的封装继承多态不足以描述这样的系统,应该用scala试一试。

为什么用scala呢?其实看过我文章的朋友可能知道,我多年前就尝试过scalascalatra框架,感觉这个语言本身还是相当可以的,虽然你能搜到JetBrains早在2011年就推出了kotlin,但真正走进大众视野已经是2016年,到那时候才有1.0这个稳定版,而scala则是个实打实的老语言,早在2001年就启动项目了,现在大部分人用的2.x版本早在2006年就推出了,可以说是个稳定了十几年没什么大问题。不过呢,虽然敲定了语言,但设计系统是没有那么快的,因为scala3出来了,自然不肯再去用scala2做新东西了,虽然已经出来一年多了,但相信很多人还没有尝试,毕竟这样的大版本总需要一年的稳定时间吧,如今一年之期已到,可以开始学习一下scala3了,所以这篇文章主要是先用scala进行简单的语法试练,先新建一个scala项目:
image.png

没错我们选3.3.0这个版本,它不同于老套的2.xx,可以说已经达到了抽象的巅峰水平。紧接着新建一个类,类名为Sys,然后是main(),看看它的写法:

@main def hello() = println("Hello, World")

是的,曾经的2版本它还需要这样写:

object hello {
  def main(args: Array[String]) = {
    println("Hello, World!")
  }
}
object Hello extends App {
  println("Hello, world")
}

虽然上面写的都是object,不过众所周知,写class也是可以的,但如今它还不能写进class里面了,比如说这样:

class Sys:
  @main def hello() = println("Hello, World")

这就会报错,运行不了的,但如果是

object Sys:  
  @main def hello() = println("Hello, World")

就没有关系,这里请注意,其实不但classobject不需要{}了,方法也是可以写:的,而match这样的关键字则可以直接省去,:都不需要,请看例子:

import java.util.UUID

object Sys:  
  @main def hello() = println(get("办事"))

  private def get(input: String): String =
    input match
      case "摇号" => UUID.randomUUID().toString
      case "有诉求" => "请找相关部门"
      case "办事" => Thread.sleep(0xfffff); "请等待"
      case "丑闻" => "已辟谣"
      case "出现问题" => "一刀切"
      case "恶性事件" => "临时工干的"
      case "老鼠" => "鸭子"
      case _ => throw UnsupportedOperationException()

其实scala3并非只有这种语法上的精简了,他还有个新鲜玩意,交叉类型(近似于于scala2中的复合类型with关键字):

trait Defendant:
  def defend(): Unit

trait Judge:
  def ruling(): String

class Traitor extends Defendant, Judge:
  override def defend(): Unit = null
  override def ruling(): String = "无罪"

object Sys:
  @main def hello() = println(prosecute(Traitor()))

  private def prosecute(unit: Defendant & Judge): String =
    unit.defend()
    unit.ruling()

可以看到prosecute()是交叉了两个类型的,并非使用Traitor来做参数类型。说到这个类型,你可能发现了我没有写new关键字,这不会和kotlin搞混了吧?其实这正是scala3很重要的一个新特性,不过他们对这个特性名的称呼有些普通,叫creator applications

回到交叉类型这个话题,当然这个交叉类型并非只能由两个类型构成,也并不一定要与参数完全对应,看我多加几个类型试一下:

trait Defendant:
  def defend(): Unit

trait Judge:
  def ruling(): String

trait Murderer:
  def murder() = null

trait Parasite:
  def vampire() = null

class Traitor extends Defendant, Judge, Murderer, Parasite:
  override def defend(): Unit = null
  override def ruling(): String = "无罪"

object Sys:
  @main def hello() = println(prosecute(Traitor()))

  private def prosecute(unit: Defendant & Judge & Murderer): String =
    unit.defend()
    unit.ruling()

这样看就能看出它的方便之处了,可以不必定义一些只有一个方法用的接口了。当然啦,这些其实都符合我们的直觉,也只是更方便了一些,下面再来看一个新玩具,扩展方法:

class House:
  def dwell(): Unit = null

object Sys:
  @main def hello() = println(live())

  extension (house: House)
    private def future() = Long.MaxValue

  private def live(): Long =
    val house = House()
    house.future()

这也算是个很有趣的特性,这个扩展当然也不止可以加一个方法了,之前的版本要么新做一个class去继承,要么做个object再把需要扩展的对象当参数传过去,现在能直接扩展自然是好看很多。

最后可以留意一下,不但scala 3项目可以用之前的scala 2的库,而且老scala 2项目不用升级也能用scala 3的库,这是非常有趣的,因为他有一个中间表示形式的东西,详细可以参考官网的文档A new compatibility era

那么后续会继续进行这个系统的设计,如何进行这样一个大系统的模块拆分和基本架构搭建呢?敬请期待。

参考

目录
相关文章
|
6月前
|
数据库 数据安全/隐私保护
【课程设计】招聘系统的设计与实现
【课程设计】招聘系统的设计与实现
|
2天前
|
存储 供应链 数据挖掘
软考之管理信息系统的功能
软考之管理信息系统的功能
14 1
|
2天前
|
存储 监控 安全
【亮剑】指导初学者如何搭建和使用网络视频监控系统。
【4月更文挑战第30天】本文指导初学者如何搭建和使用网络视频监控系统。核心设备包括摄像头(如固定、PTZ、多目、夜视)、存储选项(NVR、DVR、云存储)及网络交换机等。安装配置步骤涉及规划布局、安装摄像头、设置存储设备和软件配置。实时监控包括实时查看、接收警报和录像回放。理解设备功能、合理布局并细心操作,就能建立稳定监控体系。随着技术进步,未来监控系统将更智能、高效,保障安全。
|
2天前
|
开发框架 前端开发 Java
毕业设计选题:养老院服务系统的设计与实现
毕业设计选题:养老院服务系统的设计与实现
|
2天前
|
人工智能 前端开发 JavaScript
计算机毕业论文|校园资料分享系统的设计与实现
计算机毕业论文|校园资料分享系统的设计与实现
|
8月前
|
Web App开发 存储 缓存
5款精挑细选的软件,助你事半功倍
在工作的时候,大家都喜欢通过一些好用有效率的工具,来让工作更加快速地完成,今天给大家带来的这5款软件,更是一款比一款还要惊喜!
52 0
|
9月前
|
编解码 文字识别 监控
推荐5款实用软件,提高工作效率,丰富生活乐趣
分享软件会让我感到开心和满足,因为我知道这些软件可以提高工作效率,丰富生活乐趣。今天再次将几款非常实用的软件推荐给大家。
71 0
|
10月前
|
存储 前端开发 区块链
区块链农场养成种植种树游戏系统开发方案介绍/功能详情/项目源码
区块链技术的兴起,为游戏开发带来了新的思路和玩法。其中,区块链农场养成种植种树游戏系统是一种利用区块链技术实现虚拟农场种植的游戏。玩家可以通过购买种子、种植、收获、交易等方式,体验虚拟农场的乐趣,同时也可以参与到环境保护和可持续发展的过程中。下面,我们将详细介绍区块链农场养成种植种树游戏系统开发方案、功能详情以及项目源码。
151 0
|
11月前
|
区块链 数据库
DAPP农场养成种植种树游戏系统开发(案例开发)丨区块链农场养成种植种树游戏系统开发方案介绍/功能详情/项目源码
 The blockchain system verifies all data generated during the period every 10 minutes(such as transaction records and records of when the block was edited or created),并将这些数据储存在一个新的区块上,这个区块会与前一个区块连接,从而形成一根链条。每个区块都必须包含前一区块的相关信息才能生效。
|
SQL 人工智能 文字识别
居家办公更要高效-自动化办公完美提升摸鱼时间
不管是线下办公,还是居家办公,摸鱼必不可少(当然不提倡摸鱼),可是摸鱼归摸鱼,工作总得完成,KPI得好看,才能走向人生巅峰。不然月月3.25,年年得吃土,你有多痛苦,老板不清楚,让你加入毕业队伍,你只会大骂人心不古。押韵吧,KPI要好看,活得干的好,干的有效率,平时还想摸摸鱼,那摸鱼神器不得备一套,额。。。不,是高效办公神器必须得攒一套。这不,自动化办公的神器双手奉上,废话不多说,上才艺。 说到办公,每天都少不了要和各种文档打交道,csv,excel,word,ppt,pdf甚至txt文本文件,需要对这些文档做各种操作,有很多还是比较机械化的重复工作,枯燥且无味,花时间勉强能够处理,就是有点废
269 1