HNU_中小学数学卷子自动生成程序(个人项目)简要分析
一、前言
首先,在这里特别感谢我的结对编程伙伴HnuLyx,他在算法上和设计思路上都与我有很大的不同,个人项目互评中,为我的项目提出了很多很好的建议,让我在认清自己不足的同时,了解到很多以前没有注意的地方。此处附上链接,便于以后翻阅。
其次,我来对HnuLyx的个人项目稍作评论,在发现内在不足的同时,学习长处,取长补短。
二、测试与评价
1. 黑盒测试
在拿到项目文件后,我先进行了黑盒测试,从运行上体会程序的编写。
(1) 优点1:界面设计较好(是我要学习的地方),用户体验感会得到适度的提升,操作简单易懂,便于操作,题目正确;
缺点1:平方的“^2”换成“²”(Alt+0178就可以用键盘打出);


(2) 将已建立的文件夹删除后,显示报错;
缺点2:但是建议制作创建文件夹的操作,mkdir()函数可以解决这个问题,可以为大批量用户使用时,节省很多不必要的创建文件夹的操作;
(3) 缺点3:与描述不符,建议修改,明明是退出当前用户,却返回上一界面,需要优化。
(虽然已经实现了需求的退出功能,但是使用上的合理性也是要考虑的呢,可不要功亏一篑咯~)
(4)优点2:数据容错性较高,错误输入会提示并可供重新输入。
以上,为黑盒测试的全部内容,功能正常,界面舒适。
2. 白盒测试
为了进行白盒测试,HnuLyx与我用了一个下午来交流双方的代码,并且进行讨论。
经过他的讲解,我对系统内部的结构和工作原理有一个清楚的了解,明白盒子内部的东西以及里面是如何运作的,从而考虑测试用例,发现内部的长处与不足。
(1)优点3:整体上,先大致浏览代码,我会清晰的感觉到,HnuLyx的代码模块化设计良好,一个函数实现一个功能,极大的增强了代码的逻辑性,可读性;
(虽然我也有写一些函数,但是在功能的架构上,可能略逊与他,不是特别清晰)
(2)优点4:登录数据保存在文件中;
(其实,通过了解代码后才发现,HnuLyx为了提高程序的可拓展性,将用户登录数据存储在txt文件中,每次登录时进行查询。
如果在以后拓展程序,这将会带来极大的便利。)
(3)缺点4:在了解了该程序算式生成的算法后,经过多次测试,我发现了一个问题,虽然题目达到需求的要求,但是无法将题目完全随机,如:
每个操作数只能有一个左括号,举个例子:7*(8+(9+1))+5 而不能生成如7*((8+9)+1)+5。
(右括号受左括号限制,需求中最多五个操作数,则右括号最多3个:A + ( B + ( C + ( D +E)))。)此处数据过多,不便截图展示,抱歉。
(4)优点5:HnuLyx在编程时,他除了考虑了架构的合理性,还考虑到了程序的性能问题,有所针对的优化部分代码,提高程序性能。
如,通过getchar(),cin,scanf三者性能的比较,得到getchar()的效率最高,并且加以调用,以便未来在查重时大量数据的输入效率问题。
以上,为白盒测试的全部内容。再次感谢HnuLyx同学的耐心讲解。
三、简单几句
HNU_中小学数学卷子自动生成程序(个人项目)简要分析的更多相关文章
- 中小学数学卷子自动生成程序--对G同学的代码分析
前几天,在课程要求下完成了个人项目的项目工程编写,即一个中小学数学卷子自动生成程序. 程序主要功能是用户预设账户登录后可以选择等级进行对应的小中高的数学卷子对应出题生成txt文本. 本文针对partn ...
- ExtJS6的中sencha cmd中自动创建案例项目代码分析
在之前的博文中,我们按照sencha cmd的指点,在自己win7虚拟机上创建了一个案例项目,相当于创建了一个固定格式的文档目录结构,然后里面自动创建了一系列js代码.这是使用sencha cmd自动 ...
- 中小学生试卷自动生成程序--jialin大佬代码分析
结对编程代码评价 有幸和小jialin结对编程.拿到jialin的代码后. 我先是尝试用idea运行.结果报了如下错误. 无法加载主类,再尝试用eclipse运行. 好的,可以运行,那为什么用idea ...
- Jenkins自动部署Tomcat项目
Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:
- Yeoman自动构建js项目
Aug 19, 2013 Tags: bowergruntJavascriptjsnodejsyeomanyo Comments: 10 Comments Yeoman自动构建js项目 从零开始nod ...
- Windows下配置Jenkins 实现自动发布maven项目至tomcat(svn+maven+tomcat)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放tomcat的8080端口 Linux(CentOS):firewall-cmd --zone=public ...
- 解放双手 | Jenkins + gitlab + maven 自动打包部署项目
前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...
- Demo005 小学四则运算自动生成程序
目录 小学四则运算自动生成程序 0.传送门 1.题目要求 2.功能实现 2.1 总体设计 2.2 用户欢迎界面 2.3 用户功能界面 2.4 屏幕输出 2.5 文本输出 2.6 获取时间 2.7 用户 ...
- Linux下Jenkins与GitHub自动构建Node项目(Vue)
根据上篇文章<Linux下Jenkins与GitHub自动构建NetCore与部署>,我们知道了Jenkins的强大功能,自动构建,部署了一个NetCore的Web,让开发人员专注于开发, ...
随机推荐
- C笔记_C语言环境、编译、预处理
1.环境 gcc -v //查看环境变量 gcc 同 g++ gcc main.c -o main.exe gcc main.c //默认生成a.exe 2.编译 预处理: gcc -E main ...
- MySQL之主从同步
一.主从同步概念 1.1 什么是主从同步? MySQL 主从同步是指将数据从一个 MySQL 数据库服务器主节点复制到一个或多个从节点.MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器 ...
- HTTP head请求
GET: 请求指定的页面信息,并返回实体主体. HEAD: 只请求页面的首部. POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体. PUT: 从客户端向服务器传送的数据取代指定 ...
- unity_UGUI养成之路02
1.技能的冷确效果 2.背包的分页效果 1创建背包的总面板,并添加ToggleGroup组件 2.物品面板的实现 3.背包分页的实现 注意:添加了Toggle组件的游戏对象不能再添加button组件. ...
- 关于python的特殊方法
最近在阅读<流畅的python>这本书,在第一章中作者就提到了几个python中的特殊方法,代码入下: class FrenchDuck: ranks = [str(n) for n in ...
- 堆、栈、内存分配、==、equals、hashcode详解(转载)
问题的引入: 问题一:String str1 = "abc";String str2 = "abc";System.out.println(str1==str2 ...
- tabBar的内部控件
大体来说tabBar的内部其实除了UITabBarButton还有两个UIImageView 1.两个UIImageView是我们访问不到的,_UITabBarBackgroundView继承自UII ...
- SCRUM的四大支柱
转自:http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-9 迭代开发 在Scrum的开发模式下,我们将开发周 ...
- UVA - 10462-Is There A Second Way Left? Kruskal求次小生成树
UVA - 10462 题意: 求次小生成树的模板题,这道题因为有重边的存在,所以用kruskal求比较好. #include <iostream> #include <cstdio ...
- codeforces 798 C. Mike and gcd problem(贪心+思维+数论)
题目链接:http://codeforces.com/contest/798/problem/C 题意:给出一串数字,问如果这串数字的gcd大于1,如果不是那么有这样的操作,删除ai, ai + 1 ...