这次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

我的github远端库地址:https://github.com/yuxuan111/zyx

 

第一部分:要求

从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

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

 

第二部分:设计

扩展方向

  1. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。(王勇泰)
  2. 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 。(曾宇轩)
  3. 程序可以出单个整数阶乘的题目:如:4!=24。(曾宇轩)
  4. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。(曾宇轩)
  5. 程序可以设置皮肤功能,可以改变界面的颜色即可。(王勇泰)

开发环境与调试:Myeclipse 9

在浏览器中输入网址测试:

首页页面:http://desktop-n6cbhnt:8080/aa/input.jsp

题目页面:http://desktop-n6cbhnt:8080/aa/index.jsp

结果页面:http://desktop-n6cbhnt:8080/aa/Result.jsp

三、个人软件过程耗时估计与统计表

四、主要代码:

1.用cookie方法保存第一次登录的用户名,在input.jsp中,setCookie为保存用户名,getCokkie为得到用户名,removeCookie为删除用户名。

<script type="text/javascript">
function setCookie(key,value,t){
    var  myDate=new Date();
    myDate.setDate(myDate.getDate()+t);
    document.cookie=key+"="+value+ ";expires="+myDate.toGMTString();
}

function getCookie(key){
    var arr1 = document.cookie.split('; ');
    for (var i=0; i<arr1.length; i++) {
        var arr2 = arr1[i].split('=');
        if ( arr2[0] == key ) {
            return decodeURI(arr2[1]);
        }
    }
}

function removeCookie(key) {
    setCookie(key, '', -1);
}
 </script>

 <script>
window.onload = function() {

    var oUsername = document.getElementById('username');
    var oLogin = document.getElementById('login');
    var oDel = document.getElementById('del');

    if ( getCookie('username') ) {
        oUsername.value = getCookie('username');
    }

    oLogin.onclick = function() {
        alert('登录成功');
        setCookie('username', oUsername.value, 5);
    };

    oDel.onclick = function() {
        removeCookie('username');
        oUsername.value = '';
    };
};

2.阶乘最大为10的阶乘,结果为answer1[i],在index.jsp中。

else{
              int []sum=new int[10];;int [] a=new int[10];
              a[1]=(int)(Math.random()*10+1);
              sum[1]=a[1];int shu;
             
             str[i]+=a[1]+"!";
            if(a[1]==1)
           { 
             answer1[i]=""+a[1];
           }
           else{
              for(shu=1;shu<a[1];shu++)
           {
           sum[1]=sum[1]*(a[1]-shu);
            }
           answer1[i]=""+sum[1];
          }
          out.print(a[1]+"!");   
}  

3.考试时间为120秒,当考试结束弹出时间已到,不能答题的文本框,setInterval为定时器让showTime函数每秒执行一次,在index.jsp中。

<script type="text/javascript">
 var second =120; 
// 剩余秒数 
function showTime(){

 document.getElementById("myTime").innerText=second.toString()-1;
 second--;
 if((second==0))
 alert("时间已到,不能答题。");
 }
  //然后写一个定时器 
  setInterval("showTime()",1000);     
  </script>
  </head>
  <body>
  <center>答题时间为120秒,剩余时间为<span id="myTime"></span></center> 

五、运行结果截图:

1.记录用户名

2.阶乘题目

3.提示时间到

 

六、结对过程

1、结对成员

2、扩展方向

王勇泰)

  1. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
  2. 程序可以设置皮肤功能,可以改变界面的颜色即可。

曾宇轩)

  1. 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 。
  2. 程序可以出单个整数阶乘的题目:如:4!=24。
  3. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

3、结对照片

七、总结

我们并不是第一次结对,通过前几次的组队已经有了一些默契,在解决问题时通过上网查找资料并与同学讨论,最后产生了升级版的四则运算,还有很多需要很多完善的地方,比如容错性和界面的设计,等等,这些是我们以后需要努力的方向。遇到的问题是session.getAttributet得到空值,测试了很多次获取答题时间都无法成功,送给自己一句话:万水千山总是情,聚散也有天注定。