• [软件工程]结对项目四则运算 “软件”之升级版


    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232

    团队git代码:https://github.com/Hongnnn/ruanjiangongcheng


    一、需求分析

         基本要求:

    • 生成题目,单个题目最多不能超过4个运算符,操作数小于100。
    • 用户可以输入答案
    • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

         扩展方向: 

          1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3

          2.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8

          3.用户答题结束以后,程序可以显示用户答题所用的时间

          4.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数

          5.用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 

          6.程序可以出单个整数阶乘的题目:如:4!=24

          7.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

          8.程序可以设置皮肤功能,可以改变界面的颜色即可。


     二、开发环境

    开发工具:Android Studio 2.3.3

    开发语言:java

    开发时间:2018.10.25-2018.10.29


    三、详细设计

    团队所实现的拓展方向为:

        1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3

          3.用户答题结束以后,程序可以显示用户答题所用的时间

          4.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数

          5.用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 

          6.程序可以出单个整数阶乘的题目:如:4!=24

          7.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

    设计流程:

        用户进行答题界面,点击进入答题即需要输入用户名,成功则可以进入答题,进入答题时会可以选择要答多少道题,数字和运算符都是随机生成的,答案需要点击确定按钮之后会用Toast告诉说答错还是答对~同时在结束后会统计答对多少,答错多少,用时多久~


     四、主要代码

     1.首页布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:background="@mipmap/one">
    />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="四则运算"
            android:textColor="@color/pink_pressed"
            android:textSize="@dimen/dp_35"/>
        <Button
            android:id="@+id/jinru"
            android:layout_marginTop="15dp"
            android:layout_width="@dimen/dp_200"
            android:layout_height="wrap_content"
            android:text="进入答题"
            android:textSize="@dimen/dp_20"
            android:background="@drawable/border"
     />
        <Button
            android:id="@+id/guize"
            android:layout_width="@dimen/dp_200"
            android:layout_marginTop="@dimen/dp_30"
            android:layout_height="wrap_content"
            android:text="答题规则"
            android:background="@drawable/border"
            android:textSize="@dimen/dp_20"/>
     <Button
         android:id="@+id/tuic"
         android:layout_width="@dimen/dp_200"
         android:layout_marginTop="@dimen/dp_30"
         android:layout_height="wrap_content"
         android:text="退出"
         android:background="@drawable/border"
         android:textSize="@dimen/dp_20"/>
    </LinearLayout>

     2.答题界面布局

      android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/two">
          <TextView
            android:id="@+id/timee"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30dp"
              android:textColor="@color/ti"
              android:layout_alignParentTop="true"
              android:layout_centerHorizontal="true"
              android:layout_marginTop="100dp" />
        <TextView
            android:id="@+id/question"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="25dp"
            android:layout_marginBottom="46dp"
            android:layout_above="@+id/editText"
            android:layout_centerHorizontal="true"
    />
        
        <EditText
            android:id="@+id/editText"
            android:layout_width="280dp"
            android:layout_height="50dp"
            android:layout_above="@+id/button"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="36dp"
            android:gravity="bottom"
            android:hint="请输入答案"
            android:inputType="number"/>
        
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="确定"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="95dp"/>
        
    </RelativeLayout>

     3.随机数的生成,其中包括生成数字的多少个,比如生成2个的话那就相当于 a+运算符+b=

       final Random random = new Random();
            int count = random.nextInt(3) + 2;  /*指定生成数字的多少个
            int signal1 = random.nextInt(4);
            int signal2 = random.nextInt(4);   //运算符的随机生成
            int signal3 = random.nextInt(4);
    
    
            float result = 0;
            final int num1 = random.nextInt(100) + 1;
            final int num2 = random.nextInt(100) + 1;   //数字的随机生成
            final int num3 = random.nextInt(100) + 1;
            final int num4 = random.nextInt(100) + 1;

    4.题目的自动生成

     char fh[] = {'+', '-', '×', '÷'};
            if (count == 2) {
                question.setText(num1 + " " + fh[signal1] + " " + num2 + "=");
            } else if (count == 3) {
                question.setText(num1 + " " + fh[signal1] + " " + num2 + " " + fh[signal2] + "" + num3 + "=");
            } else {
                question.setText(num1 + " " + fh[signal1] + " " + num2 + " " + fh[signal2] + "" + num3 + "" + fh[signal2] + "" + num4 + "=");
            }

     5.Toast输出

      button.setOnClickListener(new View.OnClickListener() {
                                       @Override
                                       public void onClick(View view) {
                                           float answer = Float.parseFloat(editText.getText().toString());
                                           if (answer == result) {
                                               Toast.makeText(one.this, "你答对了", Toast.LENGTH_SHORT).show();
                                           } else {                               
                                               Toast.makeText(one.this, "你答错了", Toast.LENGTH_LONG).show();
                                           }

    更多在github啦~


     五、程序展示

    1.首页 

    2.出题页面

     3.答题界面

     


    六、结对同伴

    姓名:陈碧环

    分工:

    陈碧环:登录注册界面,阶乘;

    我:运算结果,倒计时,答题统计


    七、结对软件过程耗时估计与统计表

    PSP2.1 Personal Software Process Stages Time Senior Student(h) Time(h)
    Planning 计划 1 10
    · Estimate 估计这个任务需要多少时间 10 20
    Development 开发 10 15
    · Analysis 需求分析 (包括学习新技术) 1 1
    · Design Spec 生成设计文档 1 1
    · Design Review 设计复审 1 1
    · Coding Standard 代码规范 1 1.5
    · Design 具体设计 4 4.5
    · Coding 具体编码 8 16
    · Code Review 代码复审 1 1.5
    · Test 测试(自我测试,修改代码,提交修改) 1 1
    Reporting 报告 1 3
    · 测试报告 0 0
    · 计算工作量 1 1
    · 并提出过程改进计划 0 1




    八、个人总结

        在本次的结队项目中,发现了自己有很多知识点都忘了,好比如字符串的转换之类的,参数的传输,总结了一下就是JAVA语言学的是真的不怎么样,就是那种想做什么就找下关键的函数方法,重新看了一下一些方法的使用,数学一直不是很好,对数字的转换一直觉得很难,逻辑转换找不到错误,最后通过请师兄帮忙解决~通过这次的学习让我补了一些知识,是感觉挺不错的啦~

  • 相关阅读:
    Spark SQL saveMode 方式
    Spark SQL 读取json 里面的数据 ,jason 是 结构的数据
    SPark SQL 从 DB 读取数据方法和方式 scala
    SPark SQL 从 DB 读取数据方法和方式
    spark parquet 从hdfs 上读 和写 scala 版本
    spark parquet 从hdfs 上读 和写
    Spark streaming 采用直接读kafka 方法获取数据
    Topbeat --Metricbeat 在Windows上设置 centos kafka 打数据 成功
    php代码加入frameset后框架不显示
    【TP5笔记】TinkPHP5中引入资源文件
  • 原文地址:https://www.cnblogs.com/hongna/p/9869892.html
Copyright © 2020-2023  润新知