前后端分离计算器

该项目是一个前后端分离的计算器,前端使用JavaScript实现页面切换和数据传输,后端采用Python Flask框架和pymysql处理请求并存储数据。计算器具备基础运算、回退清零、错误处理、历史记录等功能,并新增了利率计算器。在数据库中创建了多个表存储不同类型的利率。通过这次作业,作者掌握了Flask、数据库操作和前后端交互,对开发有了更深入的理解。
摘要由CSDN通过智能技术生成
这个作业属于哪个课程 https://bbs.csdn.net/forums/ssynkqtd-05
这个作业要求在哪里 https://bbs.csdn.net/topics/617377308
这个作业的目标 继续实现更完善的计算器功能,但是要体现前后端分离来实现以下功能。
其他参考文献 https://blog.csdn.net/WdbM_?type=blog

项目链接

gitcode
github

PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 40
• Estimate • 估计这个任务需要多少时间 25 15
Development 开发 1130 1170
• Analysis • 需求分析 (包括学习新技术) 120 180
• Design Spec • 生成设计文档 60 30
• Design Review • 设计复审 20 20
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 30
• Design • 具体设计 60 30
• Coding • 具体编码 600 700
• Code Review • Code Review 60 60
• Test • 测试(自我测试,修改代码,提交修改) 180 120
Reporting 报告 180 185
• Test Repor • 测试报告 120 60
• Size Measurement • 计算工作量 10 10
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 50 45
合计 1340 1395

成品展示

基础运算

请添加图片描述

回退清零

请添加图片描述

错误处理

请添加图片描述

读取历史记录

请添加图片描述

科学计算器

请添加图片描述

存入数据库

请添加图片描述

清除历史记录

请添加图片描述

切换页面

请添加图片描述

利率计算器

请添加图片描述

修改税率

请添加图片描述

功能结构图

请添加图片描述

原型设计

原型设计

请添加图片描述

设计实现过程

  • 本次作业要求实现前后端分离的计算器,由于我在上一次作业中使用js+html+css 实现计算器,所以本次我直接在上次的内容上进行修改。
  • 前端在上一次作业里面加了入了新的页面(利率计算器)并实现页面切换,然后使用XMLHttpRequest来进行网络传输,将前端的数据传输给后端。
  • 后端使用Python 的 flask框架和 pymysql 来实现网络传输和数据存储
  • 在数据库里面创建4个表分别来存储历史值,活期利率,定期利率和贷款利率。

代码说明

前端

JavaScript

  • 在按下=或者 Enter后,调用calculateResult(),
  • 创建一个新的XMLHttpRequest对象xhr,用于向服务器发送POST请求。
  • 打开POST请求,指定URL为’http://localhost:5000/post_history’,并设置请求为异步。
  • 设置请求头部的Content-Type为’application/json’,指示发送JSON数据。
  • 定义一个回调函数onreadystatechange,在请求状态变为4(完成)且状态码为200时执行。在这种情况下,它将打印响应的内容。
  • 创建一个包含表达式和结果的数据对象。
  • 通过xhr.send(JSON.stringify(data))将数据对象转换为JSON字符串并发送到指定的URL,即表达式和运算结果
function calculateResult() {
   
    check();
    try {
   
        expr = expr.replace(/lg/g, 'Math.log10').replace(/ln/g, 'Math.log').replace(/sqrt/g, 'Math.sqrt').replace(/sin/g, 'Math.sin').replace(/\^/g, '**').replace(/cos/g, 'Math.cos').replace(/tan/g, 'Math.tan').replace(/e/g, 'Math.E').replace(/pi/g, 'Math.PI').replace(/abs/g, 'Math.abs').replace(/(\d+)!/g, 'factorial($1)');
        expr = eval(expr);
        expr = formatNumber(expr);
        if (!/[0-9\.]/.test(String(expr))) expr = 'error';
        document.getElementById('display2').value = expr;
        check();

        expression = expr;
        result = document.<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值