当前位置:Gxlcms > PHP教程 > 软件工程结对作业02软件工程的发展软件工程的概念软件工程的定义

软件工程结对作业02软件工程的发展软件工程的概念软件工程的定义

时间:2021-07-01 10:21:17 帮助过:6人阅读

1.设计思想:

  本次任务我用php实现的主要功能,默认必须有加减法。

  首先,创建index.php文件,在HTML语句里创建表单,表单内容包括,出题数目,最大最小值,及其他的一些选项。

  然后,创建rubric.php文件,将表单信息提交到此文件下,四则运算方法实现时调用传递过来的值。实现四则运算的方法和前几次用Java时的方法差不多,将代码做了修改和优化。将题目和答案分别放入question.txtanswer.txt文件里,以备后用。

  第三,创建submitAnswer.phpacceptAnswer.phpdeleteAnswer.phpjudgeAnswer.php文件,分别用于在线提交答案,接收答案,删除答案和判断答案。提交的答案放在answer1.txt文件里,判断答案时通过比较answer.txtanswer1.txt文件里的内容即可。

2.源程序代码

软件工程专业,软件工程论文,软件工程硕士,软件工程培训,软件工程导论,软件工程考研,软件工程试题,软件工程排名,软件工程课程,软件工程吧,软件工程答案,软件工程ppt,软件工程的发展,软件工程的概念,软件工程的定义软件工程专业,软件工程论文,软件工程硕士,软件工程培训,软件工程导论,软件工程考研,软件工程试题,软件工程排名,软件工程课程,软件工程吧,软件工程答案,软件工程ppt,软件工程的发展,软件工程的概念,软件工程的定义

  1 index.php
  2 
  3 
  9 
 10     
 11         
 12         四则运算出题系统
 13         
 37     
 38     
 39            
 40         

41
42 欢迎来到小学四则运算出题系统


43 44 72
73 74 75 76 rubric.php 77 78 79 80 81 出题界面 82 83 84 85 php 86if(is_numeric($_POST["max"])) 87 { 88$max=$_POST["max"]; //最大值 89 } 90if(is_numeric($_POST["min"])) 91 { 92$min=$_POST["min"]; //最小值 93 } 94if(is_numeric($_POST["num"])) 95 { 96$num=$_POST["num"]; //出题数目 97 } 98if(is_numeric($_POST["num1"])) 99 { 100$num1=$_POST["num1"]; //参与运算的个数101 } 102if(is_string($_POST["mul"])) 103 { 104$mul=$_POST["mul"]; //选择是否加入乘法 是t否f105 } 106if(is_string($_POST["div"])) 107 { 108$div=$_POST["div"]; //选择是否加入除法 是t否f109 } 110111/* 定义数组 */112$a=array(); //方法中使用,存储随机数字和运算符113$amd=array(); //方法中使用,将算好乘/除法后的算式存入此数组114$b=array(); //调用方法时使用115$d=array(); //存储题目116$e=array(); //存储答案117118/* Result 类用于封装结果 */119class Result 120 { 121public$r1; //$r1存储计算结果122 } 123124/* 运算符只有加减的方法 */125function addSub($min,$max,$num1,$result) 126 { 127$str=mt_rand($min,$max); 128$re=$str; 129for($i=1;$i<$num1;$i++) 130 { 131$a[$i]= mt_rand($min,$max); 132$c=mt_rand(0,1); 133if($c==0) 134 { 135$str=$str." + ".$a[$i]; 136$re=$re+$a[$i]; 137 } 138if($c==1) 139 { 140$str=$str." - ".$a[$i]; 141$re=$re-$a[$i]; 142 } 143 } 144$result->r1=$re; 145$str=$str." = "; 146return$str; 147 } 148149/* 运算符为加减乘的方法 */150function addSubMul($min,$max,$num1,$result) 151 { 152$a[0]= mt_rand($min, $max); 153/* 将算式中的数和运算符存入数组$a */154/*如果此循环中在运算符左右两侧加入空格,则在后面while循环中的if条件语句中的运算符也应加空格,否则会出错*/155for($i=1;$i<(2*$num1-1);$i=$i+2) //(2*$num1-1) 为算式中参与运算的数和运算符个数之和156 { 157$c= mt_rand(0, 2); 158if($c==0) 159 { 160$a[$i]=' + '; 161$a[$i+1]= mt_rand($min, $max); 162 } 163if($c==1) 164 { 165$a[$i]=' - '; 166$a[$i+1]= mt_rand($min, $max); 167 } 168if($c==2) 169 { 170$a[$i]=' x '; 171$a[$i+1]= mt_rand($min, $max); 172 } 173 } 174/* 将算式中的乘法算完后的算式存入数组$amd */175$i=0; 176$j=0; 177while($i<(2*$num1-1)) //运算符左右是否有空格应和上面的for循环保持一致178 { 179if($a[$i]==' x ') 180 { 181$amd[$j-1]=$amd[$j-1]*$a[$i+1]; 182$i=$i+2; 183 } 184else185 { 186$amd[$j]=$a[$i]; 187$j++; 188$i++; 189 } 190 } 191/* 算出算式的答案$re */192$re=$amd[0]; 193$k=1; 194while($k<$j) //运算符左右是否有空格应和上面的for循环保持一致195 { 196if($amd[$k]==' + ') 197 { 198$re=$re+$amd[$k+1]; 199$k=$k+2; 200continue; 201 } 202if($amd[$k]==' - ') 203 { 204$re=$re-$amd[$k+1]; 205$k=$k+2; 206 } 207 } 208/* 将数组中的值连接为字符串算式$str */209$str=$a[0]; 210for($i=1;$i<(2*$num1-1);$i++) 211 { 212$str.=$a[$i]; 213 } 214$result->r1=$re; 215$str=$str." = "; 216return$str; 217 } 218219/* 运算符为加减除的方法 */220function addSubDiv($min,$max,$num1,$result) 221 { 222$a[0]= mt_rand($min, $max); 223/* 将算式中的数和运算符存入数组$a */224for($i=1;$i<(2*$num1-1);$i=$i+2) 225 { 226$c= mt_rand(0, 2); 227if($c==0) 228 { 229$a[$i]=' + '; 230$a[$i+1]= mt_rand($min, $max); 231 } 232if($c==1) 233 { 234$a[$i]=' - '; 235$a[$i+1]= mt_rand($min, $max); 236 } 237if($c==2) 238 { 239$a[$i]=' ÷ '; 240$a[$i+1]= mt_rand($min, $max); 241 } 242 } 243/* 将算式中的除法算完后的算式存入数组$amd */244$i=0; 245$j=0; 246while($i<(2*$num1-1)) 247 { 248if($a[$i]==' ÷ ') 249 { 250while(($amd[$j-1] % $a[$i+1]!=0) || $a[$i+1]==0 ) //避免除法有余数251 { 252$a[$i+1]= mt_rand($min,$max); 253 } 254$amd[$j-1]=$amd[$j-1]/$a[$i+1]; 255$i=$i+2; 256 } 257else258 { 259$amd[$j]=$a[$i]; 260$j++; 261$i++; 262 } 263 } 264/* 算出算式的答案$re */265$re=$amd[0]; 266$k=1; 267while($k<$j) 268 { 269if($amd[$k]==' + ') 270 { 271$re=$re+$amd[$k+1]; 272$k=$k+2; 273continue; 274 } 275if($amd[$k]==' - ') 276 { 277$re=$re-$amd[$k+1]; 278$k=$k+2; 279 } 280 } 281282/* 将算式放入字符串$str */283$str=$a[0]; 284for($i=1;$i<(2*$num1-1);$i++) 285 { 286$str.=$a[$i]; 287 } 288$result->r1=$re; 289$str=$str." = "; 290return$str; 291 } 292293/* 运算符为加减乘除的方法 */294function addSubMulDiv($min,$max,$num1,$result) 295 { 296$a[0]= mt_rand($min, $max); 297/* 将算式中的数和运算符存入数组$a */298for($i=1;$i<(2*$num1-1);$i=$i+2) 299 { 300$c= mt_rand(0, 3); 301if($c==0) 302 { 303$a[$i]=' + '; 304$a[$i+1]= mt_rand($min, $max); 305 } 306if($c==1) 307 { 308$a[$i]=' - '; 309$a[$i+1]= mt_rand($min, $max); 310 } 311if($c==2) 312 { 313$a[$i]=' x '; 314$a[$i+1]= mt_rand($min, $max); 315 } 316if($c==3) 317 { 318$a[$i]=' ÷ '; 319$a[$i+1]= mt_rand($min, $max); 320 } 321 } 322/* 将算式中的除法算完后的算式存入数组$amd */323$i=0; 324$j=0; 325while($i<(2*$num1-1)) 326 { 327if($a[$i]==' x ') 328 { 329$amd[$j-1]=$amd[$j-1]*$a[$i+1]; 330$i=$i+2; 331 } 332elseif($a[$i]==' ÷ ') 333 { 334while(($amd[$j-1] % $a[$i+1]!=0) || $a[$i+1]==0 ) //避免除法有余数335 { 336$a[$i+1]= mt_rand($min,$max); 337 } 338$amd[$j-1]=$amd[$j-1]/$a[$i+1]; 339$i=$i+2; 340 } 341else342 { 343$amd[$j]=$a[$i]; 344$j++; 345$i++; 346 } 347 } 348/* 算出算式的答案$re */349$re=$amd[0]; 350$k=1; 351while($k<$j) 352 { 353if($amd[$k]==' + ') 354 { 355$re=$re+$amd[$k+1]; 356$k=$k+2; 357continue; 358 } 359if($amd[$k]==' - ') 360 { 361$re=$re-$amd[$k+1]; 362$k=$k+2; 363 } 364 } 365/* 将算式放入字符串$str */366$str=$a[0]; 367for($i=1;$i<(2*$num1-1);$i++) 368 { 369$str.=$a[$i]; 370 } 371$result->r1=$re; 372$str=$str." = "; 373return$str; 374 } 375376$r= new Result(); 377378/* 两个数的加减法 */379if(($num1==2) && ($mul=='f') && ($div=='f')) 380 { 381$question = fopen("question.txt", "w"); 382$answer= fopen("answer.txt", "w"); 383for($i=0;$i<$num;$i++) 384 { 385$j=0; 386$bool=true; 387$b[$i]= addSub($min, $max, $num1, $r); 388while(($r->r1)<0) //
结果为负时,重新随机389 { 390$b[$i]= addSub($min, $max, $num1, $r); 391 } 392while(($bool) && ($i!=0))//避免重复393 { 394while($b[$i]==$b[$j]) 395 { 396$b[$i]= addSub($min, $max, $num1, $r); 397while(($r->r1)<0)//结果为负,重新出题398 { 399$b[$i]= addSub($min, $max, $num1, $r); 400 } 401$j=0; 402 } 403$j++; 404if($j==$i) 405 { 406$bool=false; 407 } 408 } 409echo "( ".($i+1)." ) ".$b[$i]."

"; 410$d[$i]=$b[$i]."\n"; 411$e[$i]=$r->r1."\n"; 412fwrite($question,$d[$i]); 413fwrite($answer,$e[$i]); 414 } 415fclose($question); 416fclose($answer); 417 } 418419/* 两个数的加减乘法 */420if(($num1==2) && ($mul=='t') && ($div=='f')) 421 { 422$question = fopen("question.txt", "w"); 423$answer= fopen("answer.txt", "w"); 424for($i=0;$i<$num;$i++) 425 { 426$j=0; 427$bool=true; 428$b[$i]= addSubMul($min, $max, $num1, $r); 429while(($r->r1)<0) //当结果为负时,重新随机430 { 431$b[$i]= addSubMul($min, $max, $num1, $r); 432 } 433while(($bool) && ($i!=0))//避免重复434 { 435while($b[$i]==$b[$j]) 436 { 437$b[$i]= addSubMul($min, $max, $num1, $r); 438while(($r->r1)<0)//结果为负,重新出题439 { 440$b[$i]= addSubMul($min, $max, $num1, $r); 441 } 442$j=0; 443 } 444$j++; 445if($j==$i) 446 { 447$bool=false; 448 } 449 } 450echo "( ".($i+1)." ) ".$b[$i]."

"; 451$d[$i]=$b[$i]."\n"; 452$e[$i]=$r->r1."\n"; 453fwrite($question,$d[$i]); 454fwrite($answer,$e[$i]); 455 } 456fclose($question); 457fclose($answer); 458 } 459460/* 两个数的加减除法 */461if(($num1==2) && ($mul=='f') && ($div=='t')) 462 { 463$question = fopen("question.txt", "w"); 464$answer= fopen("answer.txt", "w"); 465for($i=0;$i<$num;$i++) 466 { 467$j=0; 468$bool=true; 469$b[$i]= addSubDiv($min, $max, $num1, $r); 470while(($r->r1)<0) //当结果为负时,重新随机471 { 472$b[$i]= addSubDiv($min, $max, $num1, $r); 473 } 474while(($bool) && ($i!=0))//避免重复475 { 476while($b[$i]==$b[$j]) 477 { 478$b[$i]= addSubDiv($min, $max, $num1, $r); 479while(($r->r1)<0)//结果为负,重新出题480 { 481$b[$i]= addSubDiv($min, $max, $num1, $r); 482 } 483$j=0; 484 } 485$j++; 486if($j==$i) 487 { 488$bool=false; 489 } 490 } 491echo "( ".($i+1)." ) ".$b[$i]."

"; 492$d[$i]=$b[$i]."\n"; 493$e[$i]=$r->r1."\n"; 494fwrite($question,$d[$i]); 495fwrite($answer,$e[$i]); 496 } 497fclose($question); 498fclose($answer); 499 } 500501/* 两个数的加减乘除法 */502if(($num1==2) && ($mul=='t') && ($div=='t')) 503 { 504$question = fopen("question.txt", "w"); 505$answer= fopen("answer.txt", "w"); 506for($i=0;$i<$num;$i++) 507 { 508$j=0; 509$bool=true; 510$b[$i]= addSubMulDiv($min, $max, $num1, $r); 511while(($r->r1)<0)//结果为负,重新出题512 { 513$b[$i]= addSubMulDiv($min, $max, $num1, $r); 514 } 515while(($bool) && ($i!=0))//判断重复516 { 517while($b[$i]==$b[$j]) 518 { 519$b[$i]= addSubMulDiv($min, $max, $num1, $r); 520while(($r->r1)<0)//结果为负,重新出题521 { 522$b[$i]= addSubMulDiv($min, $max, $num1, $r); 523 } 524$j=0; 525 } 526$j++; 527if($j==$i) 528 { 529$bool=false; 530 } 531 } 532echo "( ".($i+1)." ) ".$b[$i]."

"; 533$d[$i]=$b[$i]."\n"; 534$e[$i]=$r->r1."\n"; 535fwrite($question,$d[$i]); 536fwrite($answer,$e[$i]); 537 } 538fclose($question); 539fclose($answer); 540 } 541542/* 三个数的加减法 */543if(($num1==3) && ($mul=='f') && ($div=='f')) 544 { 545$question = fopen("question.txt", "w"); 546$answer= fopen("answer.txt", "w"); 547for($i=0;$i<$num;$i++) 548 { 549$j=0; 550$bool=true; 551$b[$i]= addSub($min, $max, $num1, $r); 552while(($r->r1)<0)//结果为负,重新出题553 { 554$b[$i]= addSub($min, $max, $num1, $r); 555 } 556while(($bool) && ($i!=0))//判断重复557 { 558while($b[$i]==$b[$j]) 559 { 560$b[$i]= addSub($min, $max, $num1, $r); 561while(($r->r1)<0)//结果为负,重新出题562 { 563$b[$i]= addSub($min, $max, $num1, $r); 564 } 565$j=0; 566 } 567$j++; 568if($j==$i) 569 { 570$bool=false; 571 } 572 } 573echo "( ".($i+1)." ) ".$b[$i]."

"; 574$d[$i]=$b[$i]."\n"; 575$e[$i]=$r->r1."\n"; 576fwrite($question,$d[$i]); 577fwrite($answer,$e[$i]); 578 } 579fclose($question); 580fclose($answer); 581 } 582583/* 三个数的加减乘法 */584if(($num1==3) && ($mul=='t') && ($div=='f')) 585 { 586$question = fopen("question.txt", "w"); 587$answer= fopen("answer.txt", "w"); 588for($i=0;$i<$num;$i++) 589 { 590$j=0; 591$bool=true; 592$b[$i]= addSubMul($min, $max, $num1, $r); 593while(($r->r1)<0)//结果为负,重新出题594 { 595$b[$i]= addSubMul($min, $max, $num1, $r); 596 } 597while(($bool) && ($i!=0))//判断重复598 { 599while($b[$i]==$b[$j]) 600 { 601$b[$i]= addSubMul($min, $max, $num1, $r); 602while(($r->r1)<0)//结果为负,重新出题603 { 604$b[$i]= addSubMul($min, $max, $num1, $r); 605 } 606$j=0; 607 } 608$j++; 609if($j==$i) 610 { 611$bool=false; 612 } 613 } 614echo "( ".($i+1)." ) ".$b[$i]."

"; 615$d[$i]=$b[$i]."\n"; 616$e[$i]=$r->r1."\n"; 617fwrite($question,$d[$i]); 618fwrite($answer,$e[$i]); 619 } 620fclose($question); 621fclose($answer); 622 } 623624/* 三个数的加减除法 */625if(($num1==3) && ($mul=='f') && ($div=='t')) 626 { 627$question = fopen("question.txt", "w"); 628$answer= fopen("answer.txt", "w"); 629for($i=0;$i<$num;$i++) 630 { 631$j=0; 632$bool=true; 633$b[$i]= addSubDiv($min, $max, $num1, $r); 634while(($r->r1)<0)//结果为负,重新出题635 { 636$b[$i]= addSubDiv($min, $max, $num1, $r); 637 } 638while(($bool) && ($i!=0))//判断重复639 { 640while($b[$i]==$b[$j]) 641 { 642$b[$i]= addSubDiv($min, $max, $num1, $r); 643while(($r->r1)<0)//结果为负,重新出题644 { 645$b[$i]= addSubDiv($min, $max, $num1, $r); 646 } 647$j=0; 648 } 649$j++; 650if($j==$i) 651 { 652$bool=false; 653 } 654 } 655echo "( ".($i+1)." ) ".$b[$i]."

"; 656$d[$i]=$b[$i]."\n"; 657$e[$i]=$r->r1."\n"; 658fwrite($question,$d[$i]); 659fwrite($answer,$e[$i]); 660 } 661fclose($question); 662fclose($answer); 663 } 664665/* 三个数的加减乘除法 */666if(($num1==3) && ($mul=='t') && ($div=='t')) 667 { 668$question = fopen("question.txt", "w"); 669$answer= fopen("answer.txt", "w"); 670for($i=0;$i<$num;$i++) 671 { 672$j=0; 673$bool=true; 674$b[$i]= addSubMulDiv($min, $max, $num1, $r); 675while(($r->r1)<0)//结果为负,重新出题676 { 677$b[$i]= addSubMulDiv($min, $max, $num1, $r); 678 } 679while(($bool) && ($i!=0))//判断重复680 { 681while($b[$i]==$b[$j]) 682 { 683$b[$i]= addSubMulDiv($min, $max, $num1, $r); 684while(($r->r1)<0)//结果为负,重新出题685 { 686$b[$i]= addSubMulDiv($min, $max, $num1, $r); 687 } 688$j=0; 689 } 690$j++; 691if($j==$i) 692 { 693$bool=false; 694 } 695 } 696echo "( ".($i+1)." ) ".$b[$i]."

"; 697$d[$i]=$b[$i]."\n"; 698$e[$i]=$r->r1."\n"; 699fwrite($question,$d[$i]); 700fwrite($answer,$e[$i]); 701 } 702fclose($question); 703fclose($answer); 704 } 705706/* 四个数的加减法 */707if(($num1==4) && ($mul=='f') && ($div=='f')) 708 { 709$question = fopen("question.txt", "w"); 710$answer= fopen("answer.txt", "w"); 711for($i=0;$i<$num;$i++) 712 { 713$j=0; 714$bool=true; 715$b[$i]= addSub($min, $max, $num1, $r); 716while(($r->r1)<0)//结果为负,重新出题717 { 718$b[$i]= addSub($min, $max, $num1, $r); 719 } 720while(($bool) && ($i!=0))//判断重复721 { 722while($b[$i]==$b[$j]) 723 { 724$b[$i]= addSub($min, $max, $num1, $r); 725while(($r->r1)<0)//结果为负,重新出题726 { 727$b[$i]= addSub($min, $max, $num1, $r); 728 } 729$j=0; 730 } 731$j++; 732if($j==$i) 733 { 734$bool=false; 735 } 736 } 737echo "( ".($i+1)." ) ".$b[$i]."

"; 738$d[$i]=$b[$i]."\n"; 739$e[$i]=$r->r1."\n"; 740fwrite($question,$d[$i]); 741fwrite($answer,$e[$i]); 742 } 743fclose($question); 744fclose($answer); 745 } 746747/* 四个数的加减乘法 */748if(($num1==4) && ($mul=='t') && ($div=='f')) 749 { 750$question = fopen("question.txt", "w"); 751$answer= fopen("answer.txt", "w"); 752for($i=0;$i<$num;$i++) 753 { 754$j=0; 755$bool=true; 756$b[$i]= addSubMul($min, $max, $num1, $r); 757while(($r->r1)<0)//结果为负,重新出题758 { 759$b[$i]= addSubMul($min, $max, $num1, $r); 760 } 761while(($bool) && ($i!=0))//判断重复762 { 763while($b[$i]==$b[$j]) 764 { 765$b[$i]= addSubMul($min, $max, $num1, $r); 766while(($r->r1)<0)//结果为负,重新出题767 { 768$b[$i]= addSubMul($min, $max, $num1, $r); 769 } 770$j=0; 771 } 772$j++; 773if($j==$i) 774 { 775$bool=false; 776 } 777 } 778echo "( ".($i+1)." ) ".$b[$i]."

"; 779$d[$i]=$b[$i]."\n"; 780$e[$i]=$r->r1."\n"; 781fwrite($question,$d[$i]); 782fwrite($answer,$e[$i]); 783 } 784fclose($question); 785fclose($answer); 786 } 787788/* 四个数的加减除法 */789if(($num1==4) && ($mul=='f') && ($div=='t')) 790 { 791$question = fopen("question.txt", "w"); 792$answer= fopen("answer.txt", "w"); 793for($i=0;$i<$num;$i++) 794 { 795$j=0; 796$bool=true; 797$b[$i]= addSubDiv($min, $max, $num1, $r); 798while(($r->r1)<0)//结果为负,重新出题799 { 800$b[$i]= addSubDiv($min, $max, $num1, $r); 801 } 802while(($bool) && ($i!=0))//判断重复803 { 804while($b[$i]==$b[$j]) 805 { 806$b[$i]= addSubDiv($min, $max, $num1, $r); 807while(($r->r1)<0)//结果为负,重新出题808 { 809$b[$i]= addSubDiv($min, $max, $num1, $r); 810 } 811$j=0; 812 } 813$j++; 814if($j==$i) 815 { 816$bool=false; 817

人气教程排行