• 第五次作业:结对项目-四则运算 “软件”之升级版


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

    项目的github地址:https://github.com/ShumeiHe/FourArithmetic_android

    结对同伴的学号:201606120102

    结对同伴的姓名:万玙

    结对同伴的博客地址:https://www.cnblogs.com/wan-y/p/9869394.html 

    一、需求分析

    基本要求:

      (1)   生成题目,单个题目最多不能超过4个运算符,操作数小于100;

      (2)   用户可以输入答案;

      (3)   若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少;

    四个扩展方向:

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

      (5)   用户答题结束以后,程序可以显示用户答题所用的时间;

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

      (7)   程序可以出单个整数阶乘的题目:如:4!=24。

     

    二、同伴与我

      考虑到第四次作业中的需求已满足该作业需求的(1)(2)无需进行大量修改。

      同伴需要完成的需求:(4)(5)

      我需要完成的需求:(3)(6)(7)

     

    三、开发环境

      工具:Android Stdio

      语言:JAVA

     

    四、功能设计

    (1)   页面布局:

      主页面布局:输入题目题数、是否存在阶乘的选择、是否存在负数的选择;

      做题页面布局:题目文本框(1个)、答案输入框(5个)、改错文本框(5个)、答案文本框(1个)、提交按钮、答案按钮。

    (2)   题目数目的限制:只能输入不超过五道题的题数,如果输出大于5与小于1则提示输入错误;

    (3)   题目输出:根据输入的题目个数输出相应数目的题目;

    (4)   是否存在阶乘:是,则在最后一道题目中输出一道阶乘(随机产生一个1~10的整数);否,则只输入加减乘除四则运算;

    (5)   答案的输入与改错:如果输入的答案与正确答案相符,则在提交的时候,在相应题目后面输出“√”,否则输出“X”

    (6)   正确答案的输出:当提交时,答案按钮会显示,点击答案按钮,在底部输出正确答案。

    五、详细设计

    (1)   用户题目个数的输入:如果用户输入的题目个数小于则提示“您输入的题数小于1道请重新输入!”,如果用户输入的额题目个数大于5则提示“您输入的题数大于5道请重新输入!”:  

    //传输数据、题目个数、是否存在阶乘。
        public void transferData(Intent intent){
            topicNum=et_topicnum.getText().toString().trim();
            if(0>=Integer.parseInt(topicNum)){
                Toast.makeText(TopicActivity.this,"您输入的题数小于1道请重新输入!",Toast.LENGTH_SHORT).show();
            }else if(Integer.parseInt(topicNum)>5){
                Toast.makeText(TopicActivity.this,"您输入的题数大于5道请重新输入!",Toast.LENGTH_SHORT).show();
            }else{
                intent.putExtra("topicNum",topicNum);
                intent.putExtra("factorial",factorial);
                startActivity(intent);
            }
    
        }
    

    (2)   答案输入框与改错文本框个数的显示:如果输入题目个数为n,那么答案输入框与改错线束框的显示个数为n个,其余则隐藏:

    <!--在布局中隐藏编辑文本框-->
    <android:visibility="gone"/>
    
    //编辑文本框的显示。
    et_input_answer1.setVisibility(View.VISIBLE);  

    (3)   提交按钮的隐藏:点击一次提交按钮后,提交按钮不能再次点击:  

    (4)   答案按妞的显示:点击提交按钮后,在提交按钮左边显示答案按钮

    /提交按钮事件。
    btn_submit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    btn_answer.setVisibility(View.VISIBLE); //答案按钮的显示。
                    Makking();
                    int error=Integer.parseInt(topicNum)-score;
                    Toast.makeText(DotopicActivity.this,"您答对"+score+"道题,答错"+error+"道题",Toast.LENGTH_SHORT).show();
                    Et_enable();
                    btn_submit.setEnabled(false); //提交按钮不可点击
                }
            });

    (5)   答案文本框的显示:点击答案按钮,正确答案在底部输出:

    (6)   答题结束,分别显示正确与错误的题目个数:每答对一道题则加一,否则不加:

    (7)   阶乘运算:

     //阶乘运算。
        public static long getNFactorial(int n){
            if(n==0){
                return 1;
            }
            return n*getNFactorial(n-1);
        }
    

    六、运行结果

     (1)用户名登录:

        

     (2)大于五道题:

        

     (3)小于1道题:

        

     (4)输入四道题目,有阶乘:

        

     (5)做题页面(四道题目,有阶乘):

        

        

     (6)输出答案:

        

     (7)输入五道题,无阶乘:

        

    七、问题及解决办法

      由于我选择输出最多不超过五道题的需求,所以当时的想法限制了我:即一次性显示题目个数,并非显示一道题做一道题然后再显示一道题做一道题的想法。

      我完成了所有布局与一些需求的实现,所以修改布局是比较困难、繁杂的。

      我面临的问题是:一次性显示所有题目,那么如何完成3)需求里的若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

      我的理解是输入一道但则提示一道题目的正确答案。

      我的解决方法是只能等待用户输入所有的答案,提交后则输出以“√”“X”的形式提示用户哪道题正确,哪道题错误。同时添加一个提交后显示答案的按钮,点击答案按钮则在底部显示全部题目的正确答案。

      归根结底,我的问题在于在需求分析的时候不够明确清晰。整个软件开发流程,我认为最重要的时需求分析,但是,当时我对需求不够明确的时候,着急着手布局与编码的行为上犯了一个大忌。

      一次性显示题目仅限于该项目6)需求,即输入不超过5道题的题目。如果输入超过5道题,那么该功能的扩展对于本项目来说比较棘手。

    该项目的布局大致如下:

        

      我的想法:如果超过5道题目,那么该页面上显示超过5道题的题目吗?不是,可以在另外一个页面显示剩余的题目或者动态刷新页面。该想法同时适用于显示一道题做一道题的功能。

      

       将经常修改的部分转换为动态视图: 

        

    八、过程耗时估计统计表

    PSP2.1

    Personal Software Process Stages

    Time Senior Studenh

    Timeh

    Planning

    计划

    2

    1.5

    Estimate

    估计这个任务需要多少时间

    20

    25

    Development

    开发

    6

    7

    Analysis

    需求分析

    1

    1

    Design Spec

    生成设计文档

    1

    1

    Design Review

    设计复审

    0.5

    1.5

    Coding Standard

    代码规范

    1

    1.5

    Design

    具体设计

    2

    3

    Coding

    具体编码

    13

    15

    Code Review

    代码复审

    1

    1

    Test

    测试(自我测试,修改代码,提交修改)

    1

    2.5

    Reporting

    报告

    1

    1

    测试报告

    0

    0

    计算工作量

    0

    0

    并提出过程修改计划

    0

    0

    九、结对照片

            

  • 相关阅读:
    codeforces.com/problemset/problem/213/C
    资源Createwindow,对应标识符,绑定窗口
    字符编码地址空间
    该来的还是要来,数据挖掘
    深信服准备
    K-Sum
    2017.3.20下午
    2017.3.20上午
    2017.3.17下午
    2017.3.17上午
  • 原文地址:https://www.cnblogs.com/bufengdianbuchengmo/p/9867075.html
Copyright © 2020-2023  润新知