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

在结对项目开始前,就已经和队友互相阐述并了解对方的代码逻辑和思维,在讨论后,一致认为使用首先生成题库然后再从题库中抽题的形式好,既保证了题目不会重复,又较运行时再生成题目的形式反应更快。而这份代码是用C++写的,因而一致决定继续使用C++作为编程语言去实现结对编程项目需求。天真的认为只需要编写一个UI然后套用个人项目的代码就可以了

【win32/windows api尝试】

秉着java能用swing写UI,C++也肯定能用windows api去写UI的,于是入了一个大坑,使用win32去写界面,但是繁杂多样的api写一个窗口都需要不短的代码,在了解了HWND句柄、WinMain函数后,发现我们压根没有那么多的时间去学习那么多的基层的东西,就不得不放弃,然后在考虑是否需要换java去完成该项目。

【QT库带来的快捷UI入门】

在考虑了MFC和一些其他的C++编写窗口的工具后,决定选择了较易上手的QT库。然后发现真的容易上手,就和做ppt一样,就简单的做出了项目需求中的UI界面,把各个窗口之间的逻辑写好后,粗糙的UI基本就有了。账号密码的存储、题库的读写、出题的查重以及出题的卷子生成对应的时间戳txt,均直接套用个人项目的代码即可。

【题库答案选项的编写】

起初认为题库答案生成只是一个小问题,但当开始着手做时,发现并不是那么简单的,尤其是括号的处理,使得计算答案变得不易。partner G机智的使用了栈先进后出的特性,将操作数和操作符分别用两个栈储存,考虑优先级,让优先级高的操作符先出栈,然后该方式定义计算的时候,由于是先进后出,对于操作数来说是逆着计算的,因而除号优先级级高于乘号,减号优先级高于加号。经过一层层测试修改,小初高均生成了1000题的题库给QT使用。同时也和partner G一块将粗糙的UI界面做了美工,主要是依靠partner的审美,使得UI变得精致起来。

【验证码短信的艰难】

验证码短信,因为身边的同学用java编写的时候都说不难,所以自己也没觉得这功能实现是多大点事儿,直到真正开始做的时候……

那天中午一口气注册了五六个短信平台,包括腾讯云、阿里云等大公司,结果发现都没有对应C++的SDK或者api接口,然后也就一个个去询问个平台的客服,但他们基本没有提供什么有用的信息,之后在秒赛平台上找到了C++代码的demo,但是苦于libcurl库的安装不成功,仍旧无法实现。最后是询问陆老师确认没有接口是行不通的情况下,大胆一试,决定使用java实现短信功能,然后再用C++去调用。当然,从结果来看,我们当然是成功了。但本质上来说原理并不复杂,只是简单的利用cmd去调用打包好的发短信的jar程序,不需要java与c++直接的沟通,因为java程序只起到一个代替c++发送验证码的作用罢了。

【将QT库程序打包且能在无QT环境下的设备运行】

这是成功前的最后一座大山,看着那个生成的活泼可爱的exe程序,却无法运行,只会“应用程序缺少xxx.dll”“应用程序无法正常启动0xc000007b”。中间百度谷歌试过各种办法,问过上一届学长,均找不到解决办法,最后的问题的根源是在32位和64位的QT控制台上。解决方式见CSDN(原创) https://blog.csdn.net/qq_40685445/article/details/101573311

至此。项目小初高数学学习软件完工。

一点点经验:

  1. 有问题别退缩,迎难而上,但也要适当的另辟蹊径,就像简单的用c++调用java程序而避开了不提供c++接口无法发送短信的问题。
  2. 谷歌百度多多益善。不管做什么,问题肯定是有的,多多使用百度,百度不到用谷歌,将大问题细化为几个小问题再逐个击破。
  3. 多精一门语言。别怀里抱着c++当宝贝,热度排前的python、java为何不好好学学呢?

带UI的小初高数学学习软件—艰难地用C++(QT库)实现的过程的更多相关文章

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

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

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

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

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

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

  4. 带UI 的小初高数学学习系统 —结对编程项目总结

    一. 项目综述 本系统是基于QT Creator 4.3.0开发环境,开发语言C++,能够实现用户注册,发送短信验证码,用户登陆,用户选择题目类型和数量,显示用户本次答题基本功能.支持对用户账号查重, ...

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

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

  6. HNU_小中初数学学习软件(可视化编程)_结对项目总结与体会

    前言 经过将近一周的共同努力,HnuLyx和我终于完成了项目,期间心酸苦辣,受益良多,请允许我一一道来. 问题(需求要求的

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

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

  8. JAVA小项目实例源码—学习娱乐小助手

    代码地址如下:http://www.demodashi.com/demo/11456.html 一.程序实现 项目目录: MyJFrame:实现项目界面样式: AppProcess:实现调用api或爬 ...

  9. 微信小程序开发:学习笔记[4]——样式布局

    微信小程序开发:学习笔记[4]——样式布局 Flex布局 新的布局方式 在小程序开发中,我们需要考虑各种尺寸终端设备上的适配.在传统网页开发,我们用的是盒模型,通过display:inline | b ...

随机推荐

  1. 借助DBHelper实现学生管理案例分析

    一.案例功能的实现 数据: --专业 create table ProfessionInfo ( ProfessionID int primary key identity(1,1), --专业编号 ...

  2. Yaconf-配置管理扩展

    1.下载yaconf安装包git clone https://github.com/laruence/yaconf.git2.目录切换至yaconf,编译生成so 文件(找到你的phpize位置) / ...

  3. NTFS权限概述

    NTFS权限概述 NTFS是我常见的一种磁盘格式,在Windows系统中使用广泛,它打破了FAT的局限性.在我使用ntfs格式分区的时候经常会涉及到ntfs权限设置问题,来帮助我们对文件的处理.那么什 ...

  4. 【UML】统一建模语言及工具

    共四个 Chapter,持续输出中. 参考资料: UML软件建模技术-基于IBM RSA工具(清华大学出版社) UML2.0基础与RSA建模实例教程(人民邮电) 面向对象葵花宝典(李运华)(电子工业出 ...

  5. LGP5071题解

    我给这道题提供了314次提交qwq 题目大意 给定一个长为 \(n\) 的序列,每次询问给定一个 \(L\) 和 \(R\),求 \([L,R]\) 中所有数乘起来的质因数个数,答案对 \(19260 ...

  6. java 实现装饰器设计模式

    package com.gylhaut.base; /** * 装饰器 * 类与类之间的关系 * 1.依赖:形参(局部变量) * 2.关联:属性 * 聚合 属性 整体和部分 不一致的生命周期 人和手 ...

  7. sqlserver 中,如何将getdate()时间的时分秒固定为00:00:00或者忽略不要

    在使用getdate()时,时间会实时刷新,那么我们就要再查询的时候就需要精确到毫秒后三位,非常难受,那么为了解决这个问题我们可以通过以下几种方法进行固定或者去掉毫秒 1.将毫秒固定为00:00:00 ...

  8. Linux-Centos7学习笔记

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 下载.安装与配置 下载 下载Centos镜像,网站见参考 点击大的版本,例如7,再选择isos进行下载 安装 这里使用的VMware 12 Pro, ...

  9. 遇到REMOTE HOST IDENTIFICATION HAS CHANGED怎么办?

    今日遇到如下问题: 警告的大概意思就是,主机密钥发生变更,并提示安全风险(可能存在中间人攻击) 但是事实是,这是因为我重装系统之后遇到的问题.重装系统后,指纹当然会发生变化了...在Xshell实验中 ...

  10. DDOS攻击应用

    0x01 环境 包含3台主机 attact 作为攻击方,使用Centos7.2,安装slowhttptest server 作为被攻击服务器,安装有apached windows,用于访问 serve ...