首页 > 编程语言 >结对编程博客

结对编程博客

时间:2023-09-21 13:55:21浏览次数:45  
标签:结对 编程 操作数 博客 生成 运算符 括号 添加 方法

结对编程队友:软件2103黄晖凯

项目结构如下图

通过项目结构可以清晰的看出每个JAVA类的实现功能,便于查阅和修改代码,这是优点。

 为了满足个人项目要求建立的抽象类,过于简单抽象,

 在主方法后面加上throws IOException,确保在出现异常的情况下不会崩溃,无法处理,使得代码更加健康。

方法体中就是新建menu类对象,实现菜单的功能

 对异常的处理情况就是打印“请输入数字”,这里是个瑕疵,应该打印异常的相关信息

 Menu类包含了当前用户、用户水平(小学、初中、高中),以及vector容器类的用户组、题目组,并且有两个方法能进行用户的初始化和获取用户的水平。

logIn方法是实现用户的登录和登录后的提示语

 changeLevel方法是实现切换功能,与个人项目的要求基本一致。

newPrimaryPaper是实现生成小学试卷功能,但在文件命名上面有小问题,calendar.get(Calendar.MONTH)返回的是对应月份的下标,要完全精准需要+1,此处是错误项。

 checkPrimary是检查生成的题目是否与该用户已生成的题目相同,如果相同则不添加,不相同则添加到试卷中,并且新生成的题目之间也互相查重,相同则不添加

 newMiddlePaper方法和生成小学试卷的思路相同

 checkMiddle与小学的查重功能也是相同的

 newHighPaper同上

 checkHigh同上

 Question类里实现了生成小初高三种类型题目的方法

 生成小学试题的方法中,写着先用随机数固定好试题的长度,小学题目中第一个元素只能是操作数(暂时不考虑括号的问题),然后是运算符、操作数以此类推,这样只要下标是偶数就要插入操作数。确定好要插入操作数时考虑左括号,首先在最后一个操作数的前一位加左括号是无效的,且只有两个操作数时加括号无效,在这两种情况都满足时有1/2的概率加入左括号,此时同步让左括号相对数量+1,括号内长度置0,然后添加操作数,如果左括号数量等效大于0那么括号长度+1,然后调用插入右括号的方法,当不插入操作数时就是随机添加运算符,最后在末尾处添加“=”,返回题目

 生成初中试题的方法中,运算符多了平方和根号,在添加操作数及之前的代码都相同,然后有1/3的概率添加^2运算符,如果添加成功square++,然后是括号长度的计算以及右括号的添加,最后是运算符的添加,此处调用了insertOperator方法,后3个参数的意思是总共6个运算符,有2个是基本运算符之外的,并且必须得运算符有2个,调用这个方法后,会先根据当前位置分类,如果是在最后一个数的前方插入运算符且必须的运算符个数为0,那么强制令要插入的运算符在必须的运算符中随机生成,否则就是随机生成运算符,且当随机的运算符是^2时,强制转为根号,在生成特殊符号之前,会强制添加普通运算符,然后再生成特殊运算符

 生成高中题目的方法中,运算符又多了3个三角函数,基本思路和初中题目相同,在生成运算符时后3个参数变为9,5,3.

 insertOperator方法是插入运算符的方法,具体分析在分析初中、高中试题生成的方法中,此方法是为了满足初中、高中必须生成的运算符。

 insertRight是插入右括号的方法,在传好了参数之后调用该方法,会在左括号相对剩余数量>0且括号内操作数个数>1的情况下有1/2的概率下添加右括号,最后会在结尾处检查如果有多余的左括号会一直添加右括号,直至多余的左括号被补齐。

 Reading类中实现了读取用户和读取试卷的方法,但是文件的路径采用了绝对路径的方法,与项目要求冲突,此处要扣分是缺点。

 读取试卷的方法和读取用户相同,都采用了绝对路径的办法,扣分项

 用户类继承抽象用户类,类中的用户名、密码、level都设置为private属性,符合安全性要求,对应的set和get方法可以设置并获得用户类的属性,类中还有login的静态方法,该方法是登录功能的具体实现,在Menu类的login方法里被调用

 

综上分析:笔者认为队友的个人项目除了细微的瑕疵和错误之外,优点很多

1.项目结构清晰易懂,便于他人查阅理解

2.方法名通俗易懂,见名知意

3.在写生成初中、高中题目方法时思路清晰,先划分好生成操作数和运算符两种情况,然后具体书写,并保证必要的运算符不会缺失

4.在许多方法的后面加入了throws抛出异常的方法,使得代码更为健康,不会因为遇到异常就崩溃

优点很多,但是缺点同样需要注意

1.文件的访问和保存均采用绝对路径,不符合要求

2.生成题目的命名错误,月份对不上

3.代码的具体注释很少,理解起来较为困难

标签:结对,编程,操作数,博客,生成,运算符,括号,添加,方法
From: https://www.cnblogs.com/patsy1/p/17718250.html

相关文章

  • 如何将typora的文件上传到博客园
    参考:https://www.cnblogs.com/HeroZhang/p/17534095.htmlhttps://www.cnblogs.com/HeroZhang/p/17534095.html......
  • 并发编程系列-AQS
    AbstractQueuedSynchronizer(AQS)是一个抽象队列同步器,它用于构建依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器的框架。该类的目的在于提供基本功能的封装,适用于大多数需要使用单个原子int值表示同步状态的同步器。举例来说,ReentrantLock、Semaphore以及FutureTask等都是基于AQS......
  • Win32编程之函数转发注入DLL(十五)
    一、创建目标DLL文件DLL名称:targetdll.dll头文件(targetdll.h):#pragmaonce__declspec(dllexport)void__stdcallhello();__declspec(dllexport)int__stdcalladd(inta,intb);源文件(targetdll.cpp)#include<stdio.h>#include"targetdll.h"void_......
  • HNU 结对编程 对队友代码的分析 中小学数学卷子自动生成程序
    基本功能实现一、主要内容认真学习和阅读同伴的代码,分析优劣。二、题目要求个人项目:中小学数学卷子自动生成程序用户:小学、初中和高中数学老师。功能:1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根......
  • 并发编程系列 - ReadWriteLock
    实际工作中,为了优化性能,我们经常会使用缓存,例如缓存元数据、缓存基础数据等,这就是一种典型的读多写少应用场景。缓存之所以能提升性能,一个重要的条件就是缓存的数据一定是读多写少的,例如元数据和基础数据基本上不会发生变化(写少),但是使用它们的地方却很多(读多)。针对读多写少这种并......
  • 【赠书活动 -第01期】-〖Java编程思想(第四版)〗
    【赠书活动-第01期】-〖Java编程思想(第四版)〗活动时间:2023年9月21日~2023年9月30日参与方式:https://m.hlcode.cn/?id=NK1fWUR......
  • 【简洁】【皮肤美化】博客园页面美化 主文章加宽
    选择:Bluesky皮肤再加入的css:#home{background-color:#e6e6e6;}#top_nav{background-color:#e6e6e6;}#navigator,#under_post_card1,#ad_t2,#nav_right,#nav_left,#cnblogs_c1,#under_post_card2,#HistoryToday,#green_channel,.author_avatar{display......
  • SHELL编程开发:如何轻松一键部署Nginx脚本
    实现思路下载Nginx源码包解压源码包进入解压后的目录配置编译选项编译并安装Nginx启动Nginx服务代码实现以下是脚本内容及注释:#!/bin/bash#一键部署Nginx脚本#下载Nginx源码包wgethttp://nginx.org/download/nginx-1.20.1.tar.gz#解压源码包tar-zxvfnginx-1.20.1.tar.......
  • 软件工程导论——对结对伙伴袁永杰的个人项目评价
    一前言   很感谢老师安排的这次互评,我从伙伴的代码中得到了一些收获,也对Java编程有了更多的理解,思维也变得更加清晰。同伴选择的也是Java,基于面向对象的思想,在进行评价的同时我也会学习他的优点,不断努力进步。二项目需求与评分标准用户:小学、初中和高中数学老师。功......
  • 与结对队友的个人项目互评
    与我结对的队友是木拉迪力.艾海提同学,接下来我来分析一下他的个人项目:#include<iostream>#include<string>#include<fstream>#include<ctime>#include<cstdlib>usingnamespacestd;classTeacher{public:Teacher();Teacher(stringusername,stringpwd,str......