从开始这就是一个新的坑,还好今天我们爬上了;

带着Ui界面的编程,最想感谢的是我的搭档乔美萱;此处我觉得需要掌声和尖叫,一路带我从走到飞;

一、结对编程项目:带UI的小初高数学学习软件

1、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;

2、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;

3、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;

4、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;

5、最后一题提交后,界面显示分数,分数根据答对的百分比计算;

6、用户在分数界面可选择退出或继续做题;

7、小初高数学题目要求见个人项目。

二、实验过程 +环境搭建

我们使用的是python语言;在做图形界面的时候使用软件pyqt5+eric6;当然这是一个从无到有的壮丽史诗级成就,别激动这是对我们而言;从一开始以为最难的是短信接口的调用,做完之后才发自己就是个傻;没错自己以为是最难的其实并没有;

环境配置,软件安装;啥都不说都是泪,生命的美好在于多参考链接。。。。。

[pyqt5+eric6+anacode]  https://blog.csdn.net/FenDouZuoQingChun/article/details/87934174

还有记得安装的版本设置,具体的我找不到链接的;

三、使用初体验

这个软件用起来就是爽歪歪,但是安装真的是血泪坑;pyqt5是qt的衍生产品,所以勒使用没有太大的差别,妥妥拽拽美滋滋

这是designer界面,在这里可以拖拽控件

这是eric6界面,在这里可以生成代码

四、骄傲的界面成就达成

同样不说话,上图(背景是我们自己设计的呢)

五、心路历程

1.开始的时候自己真的整个人不好了,还好队友的坚持不懈,这点我就很应该向她学习。自己真的是太颓丧,以后不论发生什么我要加油去试试;我相信自己会越来越棒

2.从开始之初,界面的跳转问题自己纠结了很久没有结果,后来才知道只需要一段函数的调用;

def on_pushButton_2_clicked(self):
        """
        点击按钮进行链接跳转
     Slot documentation goes here.
        """
        # TODO: not implemented yet
        #raise NotImplementedError
        import registerone
        self.next=registerone.Dialog1_5()#调用下一个界面
        self.close()
        self.next.show()

3.逻辑代码和界面代码分离,主要是eric6自动生成代码直接调用是错的,让我整个人都不好了;后来也是仔细了解整个函数懂得原因;

4.对于公式的生成我们采用队友的个人项目中的公式生成函数;

5.计算结果进行比较的时候,这里才是险象环生;我写的逻辑代码,调用函数eval()直接计算结果;这里一开始自己机子上试很多的结果都是正确的,但是在队友自动生成公式后猜错的离谱,没有一次是对的,然后我们真的调了一下午的bug;传递的公式包含不能自动计算的=好,去括号没有去完全;边界条件没有考虑,等等真的是无厘头的错误着;

6.插入短信接口的时候,才发现这里是最幸福的时刻;开始的时候自己申请阿里云账号,把短信需要的模板签名 密钥密匙一条龙服务全部搞定;所以我们只需要添加这些东东在从函数直接调用即可;

7.导出exe文件的时候自己依旧是错误的,后来发现只需要添加一段代码即可,(没有原因插入即可):

import sys, os
if hasattr(sys, 'frozen'):
os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import pyqtSlot

特别感谢:

https://blog.csdn.net/shangxiaqiusuo1/article/details/81035046

https://blog.csdn.net/ZhangWanyu_/article/details/84930159

https://blog.csdn.net/weixin_34146805/article/details/86075695

https://blog.csdn.net/u013419318/article/details/84657117

https://blog.csdn.net/j497205974/article/details/80799461

https://blog.csdn.net/zwyact/article/details/99778898

(记得还有一些当时没有保存,嘿嘿(●ˇ∀ˇ●))

程序猿——踩bug之路的更多相关文章

  1. 程序猿制造Bug的根本原因竟然是....

    传说中: 「杀一个程序猿不需要用枪,改三次需求就可以了.」 而且, 「这竟然也是程序猿制造Bug的根本原因....」 ↓↓↓↓↓↓↓ #/原始需求/#   你去饭店,坐下来. “服务员,给我来份宫保鸡 ...

  2. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

  3. 论 BUG调试与(程序猿)初学者

    作为一枚程序猿,BUG调试是最基本的技能,对于初学者更是重中之重.个人而言,要想为自己的程序猿生涯更上一层楼,就得知道什么是BUG调试,而且还必须知道怎么调好BUG.那么BUG究竟是什么呢?在我之前的 ...

  4. 漫谈程序猿系列:无BUG不生活

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  5. 关于程序猿怎样降低程序Bug的若干建议

    毫无疑问,程序猿是善于思考问题的一族. 一个程序的编写都是通过:思考.设计.编写.调试.測试以及执行这些主要的阶段. 但大部分程序猿都有一个问题就是不太愿意測试自己的代码. 他们草草的调式完毕以后就觉 ...

  6. 三分之一的程序猿之社交类app踩过的那些坑

    三分之一的程序猿之社交类app踩过的那些坑 万众创新,全民创业.哪怕去年陌生人社交不管融资与否都倒闭了不知道多少家,但是依然有很多陌生人社交应用层出不穷的冒出来.各种脑洞大开,让人拍案叫起. 下面我们 ...

  7. 从此走上一条iOS程序猿不归路。。。

    新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...

  8. 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路

    我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...

  9. 程序bug导致了天大的损失,要枪毙程序猿吗?[ZZ]

    来自猫扑:程序bug导致了天大的损失,要枪毙程序猿吗? 0 引言 年会上Review 源代码算什么? 法庭上 Review code 才带劲..... 2015年9月3日,随着东京最高法院驳回瑞穗证券 ...

随机推荐

  1. 以太坊智能合约[ERC20]发币记录

    以太坊被称为区块链2.0,就是因为以太坊在应用层提供了虚拟机,使得开发者可以基于它自定义逻辑,通常被称为智能合约,合约中的公共接口可以作为区块链中的普通交易执行.本文就智能合约发代币流程作一完整介绍( ...

  2. 解决ionic 上拉加载组件 ion-infinite-scroll自动调用多次的问题

    ionic 中一个上拉刷新的组件 ion-infinite-scroll,如果页面未填充满页面高度,会自动检测并无限调用多次加载更多的函数:当然,主要会导致首次调用的时候,会执行几次加载更多的函数: ...

  3. Java异常机制及异常处理建议

    1.Java异常机制 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通过API中Throwable类的众多子类 ...

  4. Linux shell 获得字符串所在行数及位置

    shell 获得字符串所在行数及位置 01 获取字符串所在的行数 方式一:用grep -n [root@root]# cat test apple bit create delect exe flow ...

  5. MySQL 5.7 的安装历程

    mysql5.7零基础入门级的安装教程: 安装环境:Windows 10, 64 位(联想拯救者R720) 安装版本:mysql-5.7.25-winx64 一.下载 1.进入官网 首先,下载MySQ ...

  6. JavaScript 运行机制以及Event Loop(事件循环)

    一.JavaScript单线程 众所周知JavaScript是一门单线程语言,也就是说,在同一时间内JS只能做一件事.为什么JavaScript不能有多个线程呢?这样不是能够提高效率吗? JavaSc ...

  7. 使用SVN钩子强制提交日志和限制提交文件类型

    Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能.所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有 ...

  8. 实参&形参

    实参VS形参 1.实参 argument 实际参数,在函数调用的时候,传递给函数的参数.实参-按值调用 实际参数可以是变量.常量.表达式以及函数 实际参数必须得有确定的值(赋值.输入等),在函数调用时 ...

  9. 迷宫问题 POJ - 3984 [kuangbin带你飞]专题一 简单搜索

    定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, ...

  10. Node基础-CommonJS模块化规范

    1.在本地项目中基于NPM/YARN安装第三方模块 第一步:在本地项目中创建一个"package.json"的文件 作用:把当前项目所有依赖的第三方模块信息(包含:模块名称以及版本 ...