Java教程

结对编程--个人项目评价

本文主要是介绍结对编程--个人项目评价,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一.整体结构分析

高梓文同学的个人项目代码分为三个文件:main.py,papercreater.py,login.py

1.main.py

定义了获取当前时间,新建目录,题目查重函数。主函数部分调用了login模块和papercreater模块实现用户的登录和出题,另外还有细节操作例如对题目字符串增加题号。

2.papercreater.py

此代码块的主要功能是实现对于小学初中高中的出题操作。此文件中定义了随机数组产生函数,运算符添加函数以及三种难度的题目(即字符串)产生函数。

3.login.py

此文件的主要功能是创建登录页面,增加用户的体验,同时捕获外部输入的用户名和密码进行登录判断,除此之外还有对于切换难度的输入判断以及题目数量的输入值获取。

二.关键代码分析

1.创建目录

image
python中的创建目录相对于其他语言来讲还是较为简单方便的,进行目录是否存在判断后直接创建即可。

2.获取时间

image
这个获取时间函数是针对于txt文档命名格式需求而设计的,调用format和datetime进行时间设置。

3.查重

image
因为在个人项目需求中有题目不可重复这一项,所以针对性设计查重函数。
查重的基本逻辑就是将本文件夹下所有文件中的字符串按照行读取出来,读取到该代码的history_questions中去,然后对于目标字符串进行逐个匹配比较,可以看到python的功能是十分强大的,其他语言例如C++或者java大多需要利用类似for循环以及额外boolean的方式进行逐一读取和变量值更改,但python只需要:if...in...就能实现查重(使用Java的我破防了,破大防了)。

4.随机数组

image
同样是迎合个人项目的需求,要求各个题目的操作数数量不超过五个,操作数值不超过100,因此创建一个随机数组,起到保存操作数的作用,数组中所有操作数皆通过random得来。

5.乘方开方运算符添加

image
该函数用于题目字符串中的乘方或者开方添加,是迎合初中题目的设计需求。
image
上图是定义的运算符集合,直接使用其中的operator[4]或者operator[5]即可。

6.三角函数运算符添加

image
传入一个字符串或整型参数,随机对该参数添加三种三角函数的运算符。

7.小学问题产生

image
首先使用random产生随机数数量,然后使用random定位左括号的位置,接着判断括号是否有效(即判断左右括号的相对位置是否合理),然后需要打乱操作数顺序即可实现题目的产生,总之出题的总体思路就是在操作数打乱的基础上插入括号。

8.初中问题产生

image
初中题目相较于小学题目多添加了开方和平方运算,除此之外还有一元运算的情况。首先对于一元运算给出特殊解答。其他部分与小学问题解答基本相同。

9.高中问题产生

image
image
高中方法与初中基本相同,不再多做赘述。只是在最后加入小学之外所有运算符的排列组合功能。(妙哉,妙哉,妙甚于妙蛙种子)

10.登录设计

image
image
这部分实际上就是对于用户使用需求的一个设计,一个简易的登录界面能够在一定程度上提高用户的体验。除此之外,这个函数模块起到了捕获外界输入的作用,是用户和内部逻辑的桥梁。

11.主函数逻辑

image
主函数的逻辑是较为简单明了的,首先调用登录界面,然后根据给到的name创建文件,然后根据login给到的attr参数来判断生成哪张试卷。

三.运行结果展示

登陆界面

image

登陆后可修改年级

image

切换年级成功

image

切换登录成功

image

小学题目

image

初中题目

image

高中题目

image

四.优点缺点解析

优点

我认为高梓文同学个人项目的优点主要有四点
1.对于python语言的运用炉火纯青,善于自定义函数解决对应需求,善于运用python库函数来解决相应的问题。
2.善于使用模块化方式解决问题,代码整体设计结构一目了然,逻辑清晰,注释清楚,他人阅读代码体验良好。
3.出题模块设计的尤为出彩,采用层次化处理方式,优先处理操作数,在操作数的基础上插入括号和操作符,使人拍案叫绝。
4.相较于我的设计来讲,高梓文同学的设计代码效率更高,使用了近乎我代码量的1/3就完成了我的所有功能。

缺点

我认为高梓文同学个人项目的主要缺点是对于用户体验的考虑还是不够周全,用户在出完一次题目后就自动退出了系统。我们使用过的各种系统都是必须能够让用户自动选择登出的而不是强制登出。所以我认为需要在代码中加入循环机制,让用户出完题目后可以进行再次选择,切换难度or继续出题or退出登录。

这篇关于结对编程--个人项目评价的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!