661 words
3 minutes
前后端分离计算器 Calculator
一个前后端分离的计算器系统:Android 客户端 + Flask 后端 + SQLite。部署在 pythonanywhere,前端只负责界面与交互,表达式计算、校验与历史持久化全部由后端完成,两端通过 HTTP API + JSON 通信。
项目缘由
这个项目源于软件工程课程的一次前后端分离架构实践。很好地让电子专业的学生快速掌握前后端分离架构,体验前后端代码架构。 感兴趣的朋友也可以来社区看看,这里有更多很棒的作品:https://bbs.csdn.net/forums/2601_MU_SE_FZU?spm=1001.2014.3001.6685
功能特性
- 基础运算:加减乘除,支持小数
- 复合表达式:运算符优先级、括号、负数(
-5、3*-2) - 科学计算:
√开方、x²平方、x^y幂、%百分比 - 安全解析:手写递归下降解析器,未使用
eval,非法输入与除零均有友好提示 - 计算历史:云端 SQLite 持久化,支持单条删除、清空全部(带二次确认)
- 日夜主题:一键切换,选择自动保存
- 前后端分离:停掉本地后端,App 依然可通过云端 API 正常计算
技术栈
Android (Java) · Python Flask · SQLite · 递归下降解析器
界面展示

主界面:iOS 风格四列键盘,运算符竖排在右,顶部为日夜切换与历史入口。

复合表达式:1+2×3 = 7,优先级由后端解析器保证。

错误处理:除零显示 “Division by zero”,所有错误由后端返回。

计算历史:从云端数据库加载,每条可单独删除,也可一键清空。
系统架构
Android App ──JSON HTTP──> Flask API ──> 递归下降解析器 └──────> SQLite 历史记录在线体验
后端已部署于 PythonAnywhere(免费版):
- 网页演示版(浏览器点开即测,界面与 App 一致):https://nomkr.pythonanywhere.com
- 健康检查:https://nomkr.pythonanywhere.com/api/health
考虑到没有安卓手机也能快速体验,我加了这个网页演示版:它本身不含任何计算逻辑,每次按键都把表达式发给后端 API 计算,所以前后端分离的架构没有变。

网页演示版:浏览器打开根地址即可测试,无需安装 App。

部署验证:访问 /api/health 返回 HTTP 200 和 {"status":"ok"},说明 PythonAnywhere 上的 Flask 服务已经正常运行。
下载与代码仓库
前后端分离计算器 Calculator
https://hangchen.pages.dev/posts/calculator/ COMMENTS