夜雨聆风学习资料网

ARTICLE · 1294122

族谱软件开发日志 (登录)11.11

族谱软件开发日志 (登录)11.11

老闫的族谱软件开发日志

先激活,再进谱:给族谱软件加一道门

第 16 篇 · 2026-11-01

◆软件可以离线,规矩不能离线。

预计阅读时间:10 分钟

01前言

上一篇写的是排版,给这份连载做了一套能长期用的模板,软件本身没有动。

停了几天,再回到代码,先做的不是新功能,而是一道“门”。

原因很简单:软件以前是自己用,打开就是族谱,谁都能改。现在准备分享给其他电脑、其他家族试用,就不能再这样了。族人信息是家里的东西,不能谁捡到电脑都能翻,更不能让试用的人一不留神把示例数据改成正式谱。

所以这一轮,我把三件事放在一起做:登录、激活、只读试用。做完之后,软件终于像一件“可以交到别人手里”的东西了。

02今日目标

● ✅ 登录窗口:手机号 + 密码 + 激活码,首次运行创建管理员

● ✅ 试用模式:独立示例库,李氏家族 255 人,只能看不能改

● ✅ 李氏示例 B6 宝塔图改为 4 幅;3D 第一世只剩李承宗和赵氏

● ✅ 修复招赘、外嫁后代的世代计算,B6 正文与 3D 口径统一

● ✅ 10 套测试全绿,版本 1.4.3 归档

● ⏳ 下一步:打包给其他电脑、更新正式版

03方案选型

登录这件事,听起来简单,真做起来先要回答几个问题:账号放哪、激活怎么算、试用给什么数据、试用能改到什么程度。

要解决的问题
考虑过的做法
最后的选择
账号怎么登录
微信登录 / 手机验证码 / 本地账号
本地手机号 + 密码,完全离线
激活怎么验证
联网服务器 / 本地授权文件 / 机器码激活码
机器码 + HMAC 离线激活码
试用给什么数据
真实族谱脱敏 / 几十人小示例 / 200+ 人完整示例
李氏家族 255 人合成数据
试用能不能改
随便改 / 改完可保存 / 只读
只读,只能浏览、搜索、看 3D 和 B6
密码记不记
每次输入 / 明文记住 / 注册后本次预填
注册成功当次预填,不落盘

老闫思考

这几个选择背后是同一个原则:软件可以离线,规矩不能离线。

族谱数据不上云,账号和激活也不该依赖网络。激活码用机器码算出来,管理员在另一台电脑生成,用户抄回来输入,一次激活,永久可用。虽然不如联网授权严密,但对一个给家里人用的离线软件来说,够了。

试用数据更不能用真的。我让程序生成了一套李氏家族:255 人、三大支、过继、多配偶、女儿、1~5 个儿子、双生、招赘、外嫁、迁居、失考都有。它看起来像一本真的谱,但没有一个真实族人。

04核心改动
一、登录这道门
二、激活码:显示一半,藏一半

图 1|登录页:激活码显示前 4 位和后 4 位,中间 8 个黑点;注册成功后密码框自动保留

三、试用模式:只能看,不能改
四、两本谱,各自清楚

图 2|李氏示例第 1~2 世总塔:李承宗与守仁、守义、守礼,第二世起分三支

05踩坑记录

▍坑 1:登录时数据库被锁

◆ 踩坑记录

这个是真正吓一跳的。试用模式生成世系 MD 时,原来的默认路径优先用 e:\ZP\族谱源文件。结果有一次生成李氏示例,直接把正式的 族人世系谱.generated.md 覆盖成了李氏内容。发现后先恢复了正式闫氏文件,然后改 genealogy_sync.default_out_path():只要处于试用模式,或者库里带着示例标记,就只写自己的数据目录。正式库才走原来的源文件目录。现在再跑十套测试,正式文件的时间戳都不动。

▍坑 2:3D 第一世多出 5 个人

▍坑 3:宝塔图从 15 幅变成 4 幅

▍坑 4:26 位的激活码,怎么显示成 16 个位置

06开发复盘

▍收获

01 离线软件也要有边界。登录、激活、只读,不是为了防高手,而是为了让普通用户不误操作,让家里人放心把谱交出来。

02 数据隔离要写进代码,不能靠“我记得”。试用库、正式库、生成文件,三条路径都要有自己的规则;一次写错,真实文件就可能被覆盖。

03 同一套数据,口径必须统一。B6、3D、世系文字以前各算各的世代,招赘一多就打架;抽出 lineage_graph 之后,三处终于说同一种话。

04 测试要写“用户能感知的结果”。不是只测函数返回 True,而是测“第一世只剩两个人”“保存按钮不见了”“正式文件没被改”。

▍不足与下一步

● 注册后的密码只在当前窗口保留,关掉软件不记忆;如果用户需要,可再做系统加密保存

● 二支、三支的宝塔图按实际男丁止于第 8、7 世,没有硬画到第 10 世;要补齐得先补示例成员

● 1.4.3 已归档,但还没有打包给其他电脑;正式版仍由我手动更新

● 分享包和正式 exe 的打包,下一轮再做

CLOSING

谱是给后人看的,软件是给自家人用的。

07写在最后

以前我觉得,族谱软件最重要的是“能记”。这一轮做完,才发现“能放心地交给别人看”同样重要。

谱是给后人看的,软件是给自家人用的。门要锁好,钥匙要留在自家人手里;试用的人可以进来看看,但不能把家里的谱改成他的。

这一版,算是把门装上了。

下一轮,把门后的东西打包好,送到另一台电脑上试试。

老闫思考

这一版没有加很多功能,但它让软件第一次有了“交给别人”的样子。

E N D

◆

我是老闫,用代码整理族谱,也用文字记录过程。

如果这篇对你有用,欢迎点赞、分享、在看、留言。

我们下篇见。

THANKS FOR READING

往期回顾

01第 15 篇|给开发日志,做一套排版模板
02第 14 篇|纸质谱书导入:照片 + 表格录入
03第 13 篇|B6 序言与宝塔图

点击上方蓝字 · 老闫开发笔记 · 关注我

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料