软工五:四则运算

题目要求

本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。

题目一:

我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:

(1)能够自动生成四则运算练习题

(2)可以定制题目数量

(3)用户可以选择运算符

(4)用户设置最大数(如十以内、百以内等)

(5)用户选择是否有括号、是否有小数

(6)用户选择输出方式(如输出到文件、打印机等)

(7)最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

题目二:

现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示,其使用规定如下:

(1)楼层号为0~20,其中0号为地下一层

(2)有楼层限制的电梯不在相应楼层停靠,如单双层

(3)所有电梯采用统一按钮控制

(4)请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了。

1348221-20180415122452845-1881441339.png

这次组队作业我和我的队友选择的是题目一:小学四则运算自动生成。我担任的角色是导航员,队友徐善泽是驾驶员

具体过程

我们使用的软件是eclipse,语言是java,在实现功能的过程中,可以实现随机生成带小数的四则运算,可以设置生成题目数等功能。

具体代码请点这里

部分代码:

1348221-20180417155515519-997518273.png

1348221-20180417160145697-1576217565.png

不带小数的乘法运算:

1348221-20180417155835590-1806365505.png

带小数的除法运算:

1348221-20180417160527327-1324056354.png

测试成功:

1348221-20180417161724607-1591685345.png

代码审查表

java代码审查检查表

重要性

激活

级别

检查项

总计

命名

重要

Y

20

命名规则是否与所采用的规范保持一致?

Y

20

是否遵循了最小长度最多信息原则?

重要

N

50

has/can/is前缀的函数是否返回布尔型?

注释

重要

Y

10

注释是否较清晰且必要?

重要

Y

10

复杂的分支流程是否已经被注释?

N

10

距离较远的}是否已经被注释?

N

10

非通用变量是否全部被注释?

重要

Y

50

函数是否已经有文档注释?(功能、输入、返回及其他可选)

Y

10

特殊用法是否被注释?

声明、空白、缩进

Y

20

每行是否只声明了一个变量?(特别是那些可能出错的类型)

重要

Y

40

变量是否已经在定义的同时初始化?

重要

Y

40

类属性是否都执行了初始化?

N

20

代码段落是否被合适地以空行分隔?

Y

20

是否合理地使用了空格使程序更清晰?

Y

20

代码行长度是否在要求之内?

Y

20

折行是否恰当?

语句/功能分布/规模

Y

20

包含复合语句的{}是否成对出现并符合规范?

Y

20

是否给单个的循环、条件语句也加了{}

Y

20

if/if-else/if-else if-else/do-while/switch-case语句的格式是否符合规范?

Y

40

单个变量是否只做单个用途?

重要

Y

20

单行是否只有单个功能?(不要使用;进行多行合并)

重要

Y

40

单个函数是否执行了单个功能并与其命名相符?

Y

20

操作符++和 操作符的应用是否复合规范?

规模

重要

Y

20

单个函数不超过规定行数?

重要

Y

100

缩进层数是否不超过规定?

重要

N

100

是否已经消除了所有警告?

重要

Y

40

常数变量是否声明为final

重要

Y

80

对象使用前是否进行了检查?

重要

N

80

局部对象变量使用后是否被复位为NULL

重要

N

70

对数组的访问是否是安全的?(合法的index取值为[0, MAX_SIZE-1])。

重要

Y

20

是否确认没有同名变量局部重复定义问题?

Y

20

程序中是否只使用了简单的表达式?

重要

Y

20

是否已经用()使操作符优先级明确化?

重要

Y

20

所有判断是否都使用了(常量==变量)的形式?

Y

80

是否消除了流程悬挂?

重要

N

80

是否每个if-else if-else语句都有最后一个else以确保处理了全集?

重要

N

80

是否每个switch-case语句都有最后一个default以确保处理了全集?

N

80

for循环是否都使用了包含下限不包含上限的形式?(k=0; k<MAX

重要

Y

40

XML标记书写是否完整,字符串的拼写是否正确?

N

40

对于流操作代码的异常捕获是否有finally操作以关闭流对象?

N

20

退出代码段时是否对临时对象做了释放处理?

重要

N

40

对浮点数值的相等判断是否是恰当的?(严禁使用==直接判断)

可靠性(函数)

重要

Y

60

入口对象是否都被进行了判断不为空?

重要

Y

60

入口数据的合法范围是否都被进行了判断?(尤其是数组)

重要

Y

20

是否对有异常抛出的方法都执行了try...catch保护?

重要

Y

80

是否函数的所有分支都有返回值?

重要

Y

50

int的返回值是否合理?(负值为失败,非负值成功)

N

20

对于反复进行了int返回值判断是否定义了函数来处理?

N

60

关键代码是否做了捕获异常处理?

重要

N

60

是否确保函数返回CORBA对象的任何一个属性都不能为null?

重要

N

60

是否对方法返回值对象做了null检查,该返回值定义时是否被初始化?

重要

N

60

是否对同步对象的遍历访问做了代码同步?

重要

N

80

是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作?

重要

N

60

线程处理函数循环内部是否有异常捕获处理,防止线程抛出异常而退出?

N

20

原子操作代码异常中断,使用的相关外部变量是否恢复先前状态?

重要

Y

100

函数对错误的处理是恰当的?

可维护性

重要

N

100

实现代码中是否消除了直接常量?(用于计数起点的简单常数例外)

Y

20

是否消除了导致结构模糊的连续赋值?(如a= (b=d+c )

N

20

是否每个return前都要有日志记录?

N

20

是否有冗余判断语句?(如:if (b) return true; else return false;

N

20

是否把方法中的重复代码抽象成私有函数?

总结和评价

这次作业我非常感谢我的队友徐善泽,他作为驾驶员完成了大部分的代码量,实现了小学四则运算程序的生成,这次程序可以实现带小数的加减乘除算法,可以自由选择题目数目,可以判断答案对错,若答案错误可以给出正确答案以及正确率等功能,遗憾的是并没有实现让用户选择实现输出方式以及图形界面的功能。在二人合作的过程中,我对队友的代码风格更加了解,也一起找到了一些错误,改正以后,程序更加完整,实现的功能也逐渐增加,虽然有部分功能还未实现,但我们会继续努力的。

能明显地感觉得到这次作业比以前的作业难度要大,原因就是我们的代码能力还是比较弱的,代码量不够。每次的软件工程作业我都能发现自己很多的缺点,每次也都能通过作业意识到原来自己所掌握的东西还是远远不够的,因此在完成作业的过程中,总能学到很多接触到很多以前不会的东西,也对eclipse的使用更加熟练,对JAVA这门不是很熟悉的语言也更加了解,这是很开心的一件事。相对于枯燥的理论学习,实践更能激发我的学习兴趣,动手能力得到了大大的进步,至此,结对编程已经结束,期待下次的团队作业。

最后,工作照:

1348221-20180417165031922-716123767.png

转载于:https://www.cnblogs.com/chenlu7/p/8846622.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat 配置Https

https://www.cnblogs.com/wanghaoyuhappy/p/5267702.html JDK1.8 keytool 生存证书 C:\keys\tomcat.keystore 1:证书生成 命令如下: keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -keystore C:/keys/tomcat.keytore -storepass 123456 keytool 使…

koa --- 使用koa-multer和element-ui组件上传头像

文件上传 前端代码 <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src"https://unpkg.com/element-ui/lib/index.js"></script> <linkrel"stylesheet"href"https://unpkg.co…

koa --- nunjucks在Koa中的使用、中间件的配置

Nunjucks在Koa中的应用 app.js const koa require(koa); const app new koa(); const router require(./router) const nunjucks require(koa-nunjuncks-2); app.use(nunjucks({ext: html, // 指定视图文件默认后缀path: path.join(__dirname, views), // 指定视图目录…

2018福大软工实践第六次作业

目录 NABCD分析引用N(Need&#xff0c;需求)&#xff1a;A(Approach&#xff0c;做法)&#xff1a;B(Benefit&#xff0c;好处)&#xff1a;C(Competitors&#xff0c;竞争)&#xff1a;D(Delivery&#xff0c;交付)&#xff1a;初期中期个人贡献分评定原则评定细则本组现场答辩…

day32—CSS多列布局学习

转行学开发&#xff0c;代码100天——2018-04-17 关于多列布局&#xff0c;前期已经梳理过&#xff0c;今天的培训课程学习中再次提及&#xff0c;趁此也做个总结和检验。 多列布局的介绍参考&#xff1a; day08—css布局解决方案之多列布局关于多列布局的类型和方法&#xff1…

JDBC 事物处理

JDBC 事物处理 •事务&#xff1a;指构成单个逻辑工作单元的操作集合 •事务处理&#xff1a;保证所有事务都作为一个工作单元来执行&#xff0c;即使出现了故障&#xff0c;都不能改变这种执行方式。当在一个事务中执行多个操作时&#xff0c;要么所有的事务都被提交(commit…

centos6上安装mysql8.0版本

本博客是采用yum源的方式安装&#xff0c;非常的方便和快捷。(redhat 与centos7 等操作系统都可以采用此方法&#xff0c;步骤大体一致) mysql官网地址: https://dev.mysql.com 开始安装&#xff1a; 1.清理环境&#xff0c;查看有没有之前安装过的mysql记录&#xff0c;清理…

koa --- 使用koa-multer上传文件+elementUI

核心代码 const upload require(koa-multer) ({dest: ./public/images}); router.post(/upload, upload.single(file), ctx>{console.log(file, ctx.req.file);console.log(body, ctx.req.body);ctx.body 上传成功; })目录结构如下 基本思路 1.通过浏览器访问url: http:…

第二篇 python基础知识总结:数据、运算符

引子 我们跟任何人交流&#xff0c;说的每一句都是都一些文字组成&#xff0c;包含名词、动词、语句、标点符号等&#xff0c;组成我们说普通话构成的基本要素。同理我们学习python语言也要明白这些基本要素&#xff0c;也就是我们常说的基本语法&#xff0c;这是我们必须掌握的…

koa --- 使用Sequelize连接mysql

Sequelize介绍 为了快捷开发,社区出现了一系列的ORM(Object Relational Mapping)类库ORM的字面意思为对象关系映射,它提供了概念性的、易于理解的模型化数据的方法。通过ORM,可以降低操作数据库的成本。开发者不需要通过编写SQL脚本来操作数据库,直接通过访问对象的方式来查询…

Android gravity和layout_gravity的区别

一、gravity和layout_gravity相同处 两者都是设置对齐方式的属性。内部的属性值相同。 根据英文意思也能理解其中的意思。如center_horizontal表示在水平方向上的位置为中间。 二、gravity和layout_gravity的不同处 gravity是设置自身内部元素的对齐方式。比如一个TextView&…

koa --- mongoose连接mongoDB

使用Mongoose对MongoDB进行操作 const mongoose require(mongoose); mongoose.connect(mongodb://localhost/test,{ })Mongoose中的Schema 定义Schema categorySchema const categorySchema new mongoose.Schema({name:String,description: String,createdAt:{type: Date,…

Java Web 请求转发与请求重定向

Java Web 请求转发与请求重定向 请求转发 服务器行为&#xff0c;即用户向服务器发送了一次http请求&#xff0c;该请求可能会经过多个信息资源处理以后菜返回给用户&#xff0c;各个信息资源使用请求转发机制互相转发请求&#xff0c;但是用户是感觉不到请求转发的。通过req…

05.RDD详解

05.Spark--RDD详解 RDD详解--groupByKey--reduceByKey [MapPartitionRDD单词统计] 单词统计 import org.apache.spark.{SparkConf,SparkContext} object WordCountScala{def main(args:Array[String]):Unit{//创建spark配置对象val confnew SparkConf()conf.setAppName("W…

Mininet

首先&#xff0c;我折腾了两周多的东西终于弄出一点眉目了。 有以下几个内容需要学习记忆一下。 1.虚拟机&#xff0c;弄不出来共享文件夹&#xff0c;就用U盘吧&#xff0c;贼快还不用安装配置各种东西&#xff0c;virtualbox和VMware都支持。 2.ubantu安装软件中途失败&#…

docker --- 使用docker-compose.yml生成redis,并连接redis-cli

docker.compose.yml 配置 version: 3.1 services:redis:image: redisports:- 6379:6379命令行:docker-compose up 查看: docker ps 进入redis-cli,输入以下 docker exec -it 7dc0a redis-cli -h localhost -p 6379 操作Redis数据 设置 namemarron set name marron 获取nam…

浅谈javaweb三大框架和MVC设计模式

浅谈javaweb三大框架和MVC设计模式转载自&#xff1a;http://blog.csdn.net/sunpeng19960715/article/details/50890705 小序&#xff1a;博主以前在学javaweb的时候开始总不理解javaweb三大框架和MVC框架模式&#xff0c;虽然没有把两者混为一谈&#xff0c;但是也是很晕菜。…

win下配置nginx

1.下载:http://nginx.org/en/download.html 2.在安装目录cmd: start nginx.exe 启动nginx 3.修改默认运行端口80(nginx.conf): HTTP 数据分发 修改配置文件nginx.conf相应节点: 修改完后重启服务: nginx -s reload TCP 数据分发: nginx 1.9以上版本支持tcp转发 配置文件中增加:…

koa --- koa-bouncer验证

使用 koa-bouncer中间件对传入的数据进行验证 const bouncer require(koa-bouncer); app.use(bouncer.middleware());const val async (ctx, next) > {ctx.validateBody(name).required(要求提供用户名).isLength(6, 16, 用户名长度应该为6~16).isString().trim()next();…

fiddler2抓包数据工具使用教程

一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据&#xff0c;可以用其检测网页和服务器的交互情况&#xff0c;能够记录所有客户端和服务器间的http请求&#xff0c;支持监视、设置断点、甚至修改输入输出数据等功能。fiddler包含了一个强大的基于…