编程语言
首页 > 编程语言> > 结对编程项目总结——带UI的小初高数学学习软件

结对编程项目总结——带UI的小初高数学学习软件

作者:互联网

一、简介

本博客为结对编程项目——带UI的小初高数学学习软件的经验总结,使用的编程语言为Python。结对人员:冯若轩(GUI设计)、陶俊(出卷逻辑)。

二、项目需求与实现思路

项目需求:

1、所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限);
2、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;
3、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;
4、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;
5、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;
6、最后一题提交后,界面显示分数,分数根据答对的百分比计算;
7、用户在分数界面可选择退出或继续做题;
8、小初高数学题目要求见个人项目。

针对需求1,由于我们此前的个人项目都是使用C++语言设计实现,因此我们初定继续使用C++,图形界面设计使用QT来完成(后放弃,改为python的tkinter)。
针对需求2,我们尝试寻找了提供C++接口的短信平台,但找了很多家都没有提供。最后才找到了一个比较小型的短信平台提供了c语言的接口,但调试时总无法成功编译,查阅资料才发现这是Linux平台使用的。遂最终放弃C++,改用python来完成(详见经验与教训),短信平台选择榛子云。
针对需求3-8,GUI的部分初定需要设计两个主要的窗口,分别是登录界面和主体做题界面,其余修改密码、注册等小界面作为弹出式子窗口来实现。并且需要添加大量的按钮和相关的事件逻辑。

三、代码复用

在经过语言更换和需求调整后,原先的代码并不能直接使用了,但有很多的小模块,以及整体的思想是可以继续沿用的。比如在个人项目中,我单独分出文件来定义了文件I/O的相关函数,同时设计了一个数据库类来读取、存储所有账户的信息,在本结对编程项目中依然使用了这样的方法。同时,出题的相关逻辑也可以保留,只是无需再出成整套卷子后再写入txt文件中,并且需要添加计算结果的逻辑,需要调整的部分并不多。
个人项目结构:
image

结对项目结构:
image
可以看到整体的结构都是相似的,相比个人项目新增的需求作为额外的模块添加,比较方便。

四、部分实现效果

登录界面:
image

注册界面:
image

选题界面:
image

做题界面:
image

分数界面:
image

五、经验与教训

1、项目开始动手实现前,一定一定要先确认一下技术栈是否熟悉、个别比较难的需求用现有方法是否能够实现,想清楚了再动手,不然就像课上讲的一样,代价是指数型上升的。这次发现C++的短信平台接口非常少,现有工程很难推进时,我实际已经学习完了QT的相关内容并开始实现了,但如果继续使用C++,可能还需要java来实现相关接口,并在C++程序中调用,工作量较大,权衡利弊了之后才更换了另一个比较熟悉的语言python。如果早些调查各个短信平台提供的接口服务和文档的话,这些时间、精力上的浪费完全是可以避免的。
2、python有很多比较“酷”的特性实际上不应该轻易地使用,这次由于临时更换语言造成的时间紧迫,我在两个GUI类的各组件定义时,没有都写到init方法或单独封装成一个类(如需要在后生成的页面中生成的Button),以后应注意封装的技巧。
3、结对或多人编程项目比较考验沟通和管理能力,沟通这方面我认为我们做的还不错,程序上有BUG、实现有困难都会及时交流,对项目的完成起到了积极的影响。不过直接按GUI和出题逻辑进行的分工,但从工作量上来说有些不太平衡,今后分工前应再详细地想一想实现需要的手段、工作等,缕清思路再分工开动。
4、今后可以多使用一些github、gitee之类的代码平台,更新迭代时显然要比QQ联系发送方便得多,尤其是团队人数比较多的时候。

六、总结

本次结对编程项目让我获益匪浅,深刻体会到了不做好准备工作就直接开始项目的编写,需要承受指数级增长的代价。项目的界面实际上也可以再美观一些。复用的过程不是直接照抄,而是沿用相关的架构、思想和方法,做到多语言生态通用。换用python编写后中途也遇到了一些困难,比如按钮的计时时间after和cancel_after的相关用法,学习的过程中我发现最有用的解决办法就是去看、学、调试别人写好的相关程序或项目,这样就能更有效率地理解具体的用法和技巧。结对编程最重要的还是技术的契合和交流,两个人意见统一、技术互补,另一个人写好的程序拿来就能直接用,这才是最好的合作方式。

标签:结对,界面,项目,用户,C++,密码,小初,UI
来源: https://www.cnblogs.com/fengruoxuan/p/15385426.html