一、 项目综述

本系统是基于QT Creator 4.3.0开发环境,开发语言C++,能够实现用户注册,发送短信验证码,用户登陆,用户选择题目类型和数量,显示用户本次答题基本功能。支持对用户账号查重,账号密码以及验证码的准确性检测。

二、 项目实现

项目主要分成了7个模块,每个模块都有对应的ui以及cpp代码实现

0x01 系统登陆页面

file LoginUser.cpp  &  LoginUser.h  &   LoginUser.ui

  点击 "登录",成功时跳转至主菜单页面,失败时提示 “账户或密码错误” (此时需要注册新用户,或检查一下是否输入错误)

   点击 "注册",跳转至注册界面

0x02 系统注册页面

file RegWindow.cpp  &  RegWindow.h  &  RegWindow.ui、

  点击 "获取短信验证码",成功时会弹出提示框"正在发送验证码",等待手机接收得验证码,填入框内

  点击 "注册",成功时会弹框提示"注册成功,点击跳转至登陆界面",

  点击 "注册",失败时如果弹出"该手机号已被注册",则需要更改手机号注册,如果提示"验证码错误",需要检查验证码输入是否正确

0x03 设置密码界面(注册后)

file SetPassword.cpp  &  SetPassword.h  &  SetPassword.ui 

  输入密码两次,点击“确认”

  成功会显示“跳转至主界面”

  失败会显示“请重新输入”

0x04 主菜单页面(选择界面)

file MainWindow.cpp  &  MainWindow.h  &  MainWindow.ui 

  点击 "小学"或"初中","高中"  跳转到生成题目的界面,生成对应类型题目

  点击“修改密码”跳转至改密码界面

0x05改密码界面

file ChangePassword.cpp & ChangePassword.h  &  ChangePassword.ui

  输入账号、旧密码、两次新密码,点击“确认”

0x06 生成题目页面

file CreatProblems.cpp  &  CreatProblems.h  &  CreatProblems.ui

  点击选项旁边按钮会记录用户选择的答案,首次四个按钮是没有被选,之后的题目,每次进入选项会和上次选的一样,用户需要重新点击要选的答案

  点击"下一题" 继续生成题目,当全部题目数量超过输入时,跳转至分数页面

0x07 分数页面

file CheckGrade.cpp  &  CheckGrade.h  &  CheckGrade.ui

  点击 "查看分数" 显示用户所得分数

  点击 "退出" 退出本系统

  点击“跳转至主界面”跳转至主界面(选择界面)

三、 项目经验及教训

  由于结对两人的都是C++语言,虽然要带ui,也决定用C++开发。于是选择了从未接触过的QT。经过这次项目,也算是边学边入门了QT,从而得出要快速掌握一个工具,通过边写实例项目,边查找QT文档是比较快的,能够快速满足自己对工具功能的需求。不过一周下来,虽然用QT实现了项目,但是系统化的对QT认识依旧不够深入。如果需要熟悉,还是需要学习QT的基本功能文档这些。其次通过这次项目,真正体会到了类的模块化编程的优点,通过分模块编程,不仅可以让自己开发是思路逻辑清晰,还会减少bug的产生。

在开发过程中,也因为一些开发规范,导致了很多bug,比如类之间得互相包含,导致类型错误,发送post请求不成功等等。耗费了大量的时间

不过总体开发下来,和队友的合作,以及在开发过程中不断的查询资料,学习到了很多东西,包括短信验证码实现,QT的C++语法,以及对面向对象编程的理解深刻了。

带UI 的小初高数学学习系统 —结对编程项目总结的更多相关文章

  1. 结对编程——带UI的小初高数学学习软件

    一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...

  2. 带UI的小初高数学学习软件—艰难地用C++(QT库)实现的过程

    从互相了解对方的代码思路然后确定用C++编写,到用win32写界面时变得摇摆不定的考虑着要不要改变语言,再到用QT写完界面后发现短信接口一般都不提供C++,最后到QT打包出来的可执行文件在别的设备上无 ...

  3. 带UI的小初高数学学习软件

    结对编程项目总结   一.项目需求分析与功能总结 (1)用户注册功能 用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册. (2)设置密码功能 密码6-10位,必须含大小写字母和数 ...

  4. 结对编程项目复盘:带UI的小初高数学学习软件

    实现个人项目时,由于我当时的Java GUI编程基础还比较薄弱,所以我选择通过命令行实现,并将编程开发的重点放到了算法效率上去.没能设计出用户体验更佳的UI成为了我在个人项目阶段最大的遗憾. 在这次结 ...

  5. HNU_小初高数学学习软件_功能说明

    结对编程项目主要功能: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-1 ...

  6. ASP.NET MVC4 学习系统一(项目模板)

    项目模板 1.空模板      空模板用于创建ASP.NETMVC 4网站的架构,包含基本的文件夹结构,以及需要引用的asp.netmvc程序集,也包含可能要使用的javaScript 库.模板同样包 ...

  7. C#【结对编程作业】小学数学习题助手

    一.软件成品展示 软件本体下载(包括程序及其更新日志,源码工程包,UML图,API接口文档,算法介绍文档,算式计算excel实例,浅查重程序) 链接: http://pan.baidu.com/s/1 ...

  8. 使用Java带你打造一款简单的英语学习系统

    [一.项目背景] 随着移动互联网的发展,英语学习系统能结构化的组织海量资料.针对用户个性需求,有的放矢地呈现给用户,从而为英语学习者提供便利,提升他们的学习效率. [二.项目目标] 1. 实现美观的界 ...

  9. 小C的数学问题 【单调栈】

    问题 J: 小C的数学问题 时间限制: 1 Sec  内存限制: 128 MB 提交: 565  解决: 141 [提交] [状态] [命题人:外部导入] 题目描述 小C是个云南中医学院的大一新生,在 ...

随机推荐

  1. 基于模板特化的Lua自动绑定系统

    LuaBind http://www.rasterbar.com/products/luabind.html http://blog.sina.com.cn/s/blog_646817c00100gk ...

  2. 【jmespath】—4. 进阶 Flatten Projections

    这里要怎么翻呢?扁平投影? 一.Flatten Projections 1. 核心1 这个可以暂时忽略,一个重要的核心是:对于列表/对象投影,在投影中创建投影时,原始文档的结构将保留. 说人话就是,比 ...

  3. Linux服务器关联Git,通过执行更新脚本实现代码同步

    1.在Linux服务器安装Git yum install git -y   tips: 卸载Git :  yum remove git   2.在Linux生成ssh key   1)创建用户 git ...

  4. ORA-01033错误解决方案-九五小庞

    Microsoft Windows [版本 6.3.9600](c) 2013 Microsoft Corporation.保留所有权利. C:\Users\Administrator>sqlp ...

  5. 【Maven】maven脚本中的maven.test.skip和skipTests的区别

    命令 两种方式跳过编译 test mvn clean install -DskipTests mvn clean install -Dmaven.test.skip=true -DskipTests, ...

  6. basicInterpreter1.02 增加对for循环的支持

    源码下载:https://files.cnblogs.com/files/heyang78/basicInterpreter102-20200531-2.rar 输入: for x= to print ...

  7. ansible中定义变量的若干方法

    Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...

  8. Java反序列漏洞

    序列化:WriteObject 反序列化:readObject() Jd-gui.exe 最简单的打开java文件方式 Intellij idea 编辑工具 演示案例: WebGoat_Javaweb ...

  9. Python3 学习笔记之 运算符

  10. hystrix(5) 延时检测

    hystrix在执行命令的同事,会对执行延时进行检测,如果超过设置的延时时间,那么将停止执行,并返回fallback执行结果. if (properties.executionTimeoutEnabl ...