前后端分离的计算器

本文详细描述了一个前后端分离的计算器项目的实现过程,涉及Flask后端、MySQL数据库、HTML/CSS/JS前端设计,以及数据库存储和前后端通信的关键代码。作者分享了从无到有开发的心路历程和学到的经验教训。
摘要由CSDN通过智能技术生成

前后端分离计算器

这个作业属于哪个课程https://bbs.csdn.net/forums/ssynkqtd-05?typeId=5171427
这个作业要求在那里https://bbs.csdn.net/topics/617377308
课程目标实现前后端分离计算器
其他参考文献https://kaifa.baidu.com/searchPage?wd=CSS%E5%AD%A6%E4%B9%A0%E6%95%99%E7%A8%8B&hmsr=aladdin

git仓库链接和代码规范链接

gitcode

PSP表格

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
•Planning•计划3040
• Estimate• 估计这个任务需要多少时间300400
Development开发7070
• Analysis• 需求分析 (包括学习新技术)100200
• Design Spec• 生成设计文档2020
• Design Review• 设计复审1010
• Coding Standard• 代码规范 (为目前的开发制定合适的规范)1010
• Design• 具体设计2030
• Coding• 具体编码100200
• Code Review• 代码复审105
• Test• 测试(自我测试,修改代码,提交修改)5060
Reporting报告6060
• Test Repor• 测试报告3020
• Size Measurement• 计算工作量1010
• Postmortem & Process Improvement Plan• 事后总结, 并提出过程改进计划2030
合计8401165

成品展示

基本运算

在这里插入图片描述

科学运算

在这里插入图片描述

清零回退

在这里插入图片描述

查看历史记录

在这里插入图片描述

数据库

在这里插入图片描述

利息计算

在这里插入图片描述

设计实现过程

设计思想

因为上次作业没怎么准备,没有任何基础,做的不怎么样,这次就重写了所有部分,参照百度计算器做的ui和功能,主要就是通过原型设计完成,先把ui完成,然后再一步一步的完成各个功能

前端

前端就是参照百度计算器ui,使用html+css+javascript做的,因为在数据采集课上用的框架就是flask和XMLHttpRequest通信,所以前端基本就是这么做的。

后端

使用flask搭起一个框架,主要实现了连接数据库,存储历史记录,查找历史记录

数据库存储

数据库存储是使用mysl存储,用navicate可视化数据库。与接口是pymysql进行增删改查。

关键代码

前后端通信处理处理

@app.route("/")
def ui():
    return flask.render_template("cal.html")

@app.route('/save_history', methods=['POST'])
def save_history():
    data = request.get_json()
    expression = data['expression']
    result = data['result']
    time= datetime.now()
    # 插入数据
    cursor.execute("INSERT INTO calculator (time,expression, result) VALUES (%s, %s, %s)",
                   (time,expression, result))
    mydb.commit()

    return 'success'


@app.route('/get_calculator_data')
def get_calculator_data():
    cursor.execute("SELECT expression,result FROM calculator")
    results = cursor.fetchall()
    calculations = []
    for row in results:
        calculations.append(list(row))
    return jsonify({'data': calculations})


@app.route('/clear_table', methods=['POST'])
def clear_table():
    cursor.execute("DELETE FROM calculator")
    mydb.commit()
    return 'success'

存储数据处理

app = Flask(__name__,template_folder=r"D:\python代码\pythonProject\spider\selenium\templates")
CORS(app, supports_credentials=True)
# 连接MySQL数据库
mydb = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="123456",
    database="crawl"
)
cursor = mydb.cursor()

cursor.execute('''CREATE TABLE IF NOT EXISTS calculator 
                 (time VARCHAR(255),
                  expression VARCHAR(255),
                  result VARCHAR(255),
                  created_at TIMESTAMP
                   )''')
mydb.commit()

数据存储指令

cursor.execute("INSERT INTO calculator (time,expression, result) VALUES (%s, %s, %s)",
                   (time,expression, result))
    mydb.commit()

前端几个比较好看的ui细节设计

格子对角灰暗对比

.calculator .op {
    background-image: linear-gradient(135deg, #D9DCE8, rgb(255 255 255 / 30%));
    box-shadow: inset 1px 1px 1px 0px rgba(255, 255, 255, 0.8),
    inset -1px -1px 1px 0px rgba(40, 49, 85, 0.3),
    1px 1px 3px 0px rgba(40, 49, 85, 0.1);
}

鼠标悬停时加个颜色

.buttons button:hover {
    background-color: grey;
}

按等于号后Ans上移动,input展示result

document.getElementById('result_show').value="Ans="+tempt_expr;
        document.getElementById('input_show').value = expr;

心路历程和收获

这次一个人完成前后端开发,学到了很多,知道了前后端通信接口一定要交流好,不然数据传输就可能出点问题,基本基础开始学习的,学到了很多前端html和css以及js。还需努力,继续学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值