二柱子四则运算3

可怜的二柱子……又一次被坑了……

老师又在上次的“二柱子四则运算2”的基础上增添了要求,如下:

1、学生写的程序必须能判定用户的输入答案是否正确。直到题目结束,告诉用户做对了几道题。

2、程序必须能处理四种运算的混合模式。

注意:连续的减法和除法,应该遵守左结合的规定。

        连续除法要打括号,否则会引起歧义。


一、实验思路

      这次的实验是结对开发的项目第一次,我的合作小伙伴是孔宇航孔同学,说实话这是我俩第一次合作,因此各方面都还需要磨合和适应,不过总体来说分工合作明确,效果还算可以~鉴于我们编程能力和逻辑思维方式的差异,最后决定由我来执行编写程序,她来把握总体流程、分析并设计算法并适当的查阅相关的资料。   

      关于这次实验,由于上次实验我的思维有点混乱,写出的代码老师说重复率太高,而她的代码也是很多功能没有实现,所以我们决定重新静下心来编写代码。这次我们延续上次的思想,将很多内容封装到函数里,包括:“选择打印方式”、“判断输入的01菜单是否正确”、“生成某一个范围内的随机数”、“生成随机的分数”、“生成一个运算符”、“判断整数的正负并取相反数”、“把int类型装换为string类型”、以及“含有括号的运算”、“含有真分数的运算”和“不含真分数的运算”等等。运行程序时用户先选择相关的参数定制:题目个数、数值范围、是否打印到文件里、是否含有括号、加减或者四则运算等等。

部分函数的思路和功能:

1、  生成一个随机运算符:

      根据从主函数读取到的用户的选择:是否包含乘除运算来随机生成0-3四个数字分别代表+-*/四则运算,并将其作为函数的返回值。单独列出这个函数的目的是防止出现像上次的程序一样分析switch语句的四种情况时代码冗余而导致思维混乱。

2、  把int类型转换为string:

      经过我们查阅资料,决定使用:#include<stdio.h>类库中的str=itoa(shu, zhuan, 10)函数来将生成的随机整数保存成string字符串的形式。

编写此函数是因为,所有的算式都是用string字符串存的,方便输出和查重,因此每一个操作符都要转换成string才能直接插到算式中。

3、  生成某一个范围内的真分数:

      通过判断分子小于分母(真分数)、分子分母没有公约数(最简分式)产生那个数:分子和分母的值,再通过随机生成正负号来决定分数值的正负,最后将符号、分子、分数线和分母写到一个string类型里,并将分数形式和分数的值返回。

4、  查重:

      查重的函数上次的实验中有一些问题,因为是使用int类型的二维数组存的因此不能查关于真分数的重复,而这次采用string类型数组的方法,将所有的算式依次存到string类型的数组中,然后逐个比较新生成的算式与其是否相等。如果相等就舍掉相应的式子,并且计数的值-1。

5、  关于含有真分数和不含有真分数的计算:

      就是调用以上各个函数,再根据用户选择的是否含有负数、除法有无余数等等进行选择和判断,但是要将结果保存下来,便于判断是否回答正确。

6、  含有括号的计算:

      这个我们讨论了很久……也阅读了很多资料和同学们的代码,有了基本的思路,但是在我编写代码实现的过程中发现思路还存在漏洞,根本进行不下去了。今天的时间有限,对于两个星期还是没有研究出这个算法的我也是十分懊恼的……我发誓,下周有时间我一定要把含有括号的式子写出来,一定!!!!!!!

      但是我们编写的含有括号的函数我没有删掉,附在了实验源码里。思路如下:

      我们打算用“递归”的思想先随机生成一个二元运算的式子,当然这里的操作数和运算符都是随机生成的,然后用double类型变量记录算式的值,然后随机生成加不加括号、并且下一个运算符是加在前面还是后面。然后将生成的式子再作为二元运算的操作数,直到随机生成的是不加括号,则输出式子。

7、  主函数:

      本次实验最大的差异就是要用户计算结果、系统判断是否回答正确并记录正确的题目数。一次我们的函数中只是返回一个算式和算式的值,在主函数中循环N次,每一次输出就让用户输入,并判断是否正确。算式是用string类型存放,算式的值用double类型存放,如果答案是整数,直接让用户输入一个整数;如果答案是小数,先输入int型分子,再输入分母,并强制转换double计算结果。判断对错时,设定一个精度(10的负7次方),如果用户的输入在此范围内则认定正确。

    (PS.在这里我不得不说,我们本来打算接收用户输入的string类型的值(可以直接输入分数),这就要用ASC码分离出分子分母和分数线。最后我们还是输给了时间……┑( ̄Д  ̄)┍唉……)

二、实验源代码

 实验的源代码如下:

  1 //二柱子四则运算3,2016/3/14,赵子茵&孔宇航
  2 
  3 #include<iostream>
  4 #include<time.h>
  5 #include<stdlib.h>
  6 #include<stdio.h>
  7 #include<string>
  8 #include<fstream>
  9 #include<iomanip>
 10 #include<cmath> 
 11 #define random(x) (rand()%x)
 12 using namespace std;
 13 
 14 /*选择打印方式*/
 15 void Output(int sf)
 16 {
 17     if (sf == 1)//保存文档
 18     {
 19         ofstream outfile("formula.txt", ios::out);
 20         if (!outfile)
 21         {
 22             cout << "Open error!!" << endl;
 23             exit(1);
 24         }
 25         outfile << "----------------欢迎!小学生四则运算答题系统:-D----------------" << endl;
 26         outfile.close();
 27     }
 28 }
 29 
 30 /*判断输入0.1的是否输入正确*/
 31 int Istrue_input(int mnu01)
 32 {
 33     while (1)
 34     {
 35         if (mnu01 != 0 && mnu01 != 1)
 36         {
 37             cout << "输入有误,请重新输入(请输入0或1):" << endl;
 38             cin >> mnu01;
 39         }
 40         else
 41             break;
 42     }
 43     return mnu01;
 44 }
 45 
 46 /*生成一个某范围内的随机数(正负都有)*/
 47 int Creat_random(int r1, int r2)
 48 {
 49     int r, shu;
 50     /*srand((int)time(0));*/
 51     r = r2 - r1;
 52     shu = r1 + rand() % r;
 53     return shu;
 54 }
 55 
 56 /*生成一个随机运算符*/
 57 string Create_oper(int lai)
 58 {
 59     srand((int)time(0));
 60     string sign;
 61     int Num_sym, Sign_num;
 62     if (lai == 0)//加减
 63         Num_sym = 2;
 64     else if (lai == 1)//加减乘除
 65         Num_sym = 4;
 66     Sign_num = rand() % Num_sym;//生成随机的数字代表运算符
 67     switch (Sign_num)
 68     {
 69     case(0) : sign = '+'; break;
 70     case(1) : sign = '-'; break;
 71     case(2) : sign = '*'; break;
 72     case(3) : sign = '/'; break;
 73     }
 74     return sign;
 75 }
 76 
 77 /*判断整数正负并取相反数*/
 78 int Opp_zf(int a)
 79 {
 80     if (a < 0)
 81         a = -a;
 82     return a;
 83 }
 84 
 85 /*把int类型转换为string类型*/
 86 string Int_str(int shu)
 87 {
 88     char zhuan[100];
 89     string str,zuo="(",you=")";
 90     str=itoa(shu, zhuan, 10);
 91     if (shu < 0)
 92         str = zuo + str + you;
 93     return str;
 94 }
 95 
 96 /*生成一个(某范围)真分数*/
 97 void Creat_fen(int r1, int r2, string &fenshu, double &zhi)
 98 {
 99     /*srand((int)time(0));*/
100     int i, r = r2 - r1, up, down, s;
101     bool flag;
102     string xian = "/", fu = "-", zuo = "(", you = ")";
103     /*char zhuan1[10], zhuan2[10];*/
104     string zhuan1, zhuan2;
105 loop:do
106     {
107          flag = false;//不能定义全局变量!!
108          up = r1 + rand() % r;
109          up = Opp_zf(up);
110          down = r1 + rand() % r;
111          down = Opp_zf(down);
112     } while ((up >= down) || (down == 0) || (up == 0));//分子≥分母 or 分母=0 or 分子=0 重新生成
113     
114     for (i = 2; i <= up; i++)
115     {
116         /*if ((i == -1)|| (i == 0))
117         continue;*/
118         if (up%i == 0 && down%i == 0)
119         {
120             flag = true;//有公约数    
121             break;
122         }
123     }
124     if (flag == true)
125     {
126         goto loop;
127     }
128     else
129     {
130         zhi = (double)up / (double)down;
131         //itoa(up, zhuan1, 10);//分子转换成string类型
132         //itoa(down, zhuan2, 10);//分母转换成string类型
133         zhuan1 = Int_str(up);//up/down都是正数不会再加一层括号
134         zhuan2 = Int_str(down);
135         s = rand() % 2;
136         switch (s)
137         {
138             //正分数
139             case(0) : 
140                 fenshu = zuo + zhuan1 + xian + zhuan2 + you; 
141                 break;
142             //负分数
143             case(1) : 
144                 fenshu = zuo + fu + zhuan1 + xian + zhuan2 + you;
145                 zhi = -zhi;
146                 break;
147         }
148     }
149     //return fenshu;
150 }
151 
152 ///*查重*/
153 //bool Is_rept(string str1, string str2)
154 //{
155 //    if (str1 == str2)
156 //        return true;//重复
157 //    return false;//不重复
158 //}
159 
160 /*含有括号*/
161 void Have_kuohao(int r1, int r2, string &formula,double &zhi)
162 {
163     srand((int)time(0));
164     int op,op1, op2;
165     int yn, qh;//代表“是否加括号”和“运算符在前后”的数字
166     string symbol1,symbol2;
167     string zhuan,zhuan1, zhuan2;
168     string jia = "+", jian = "-", cheng = "*", chu = "/",zuo="(",you=")";
169 
170     zhi = (double)Creat_random(r1, r2);
171     op1 = Creat_random(r1, r2);
172     op2 = Creat_random(r1, r2);
173     op = Creat_random(r1, r2);//假设op2做分母不能为0
174     while (1)
175     {
176         if (op == 0)
177             op = Creat_random(r1, r2);
178         else
179             break;
180     }
181     zhuan1 = Int_str(zhi);
182     zhuan2 = Int_str(op);
183     symbol1 = Create_oper(1);
184 
185     if (symbol1 == "+")
186     {
187         zhi = (double)op1 + (double)op2;
188         formula = zhuan1 + jia + zhuan2;
189         yn = rand() % 2;
190         switch (yn)
191         {
192             //外面不加括号
193             case(0) : break;
194             //外面加括号
195             case(1) :
196             {
197                         formula = zuo + formula + you;
198                         qh = rand() % 2;
199                         symbol2 = Create_oper(1);
200                         switch (qh)
201                         {
202                             //加到前面
203                             case(0) :
204                            {
205                                     formula = symbol2 + formula;
206                                     op = Creat_random(r1, r2);
207                                     zhuan = Int_str(op);
208                                     if (symbol2 == "+")
209                                     {
210                                         zhi = (double)op + zhi;
211                                         formula = zhuan + jia + formula;
212                                     }
213                                     else if (symbol2 == "-")
214                                     {
215                                         zhi = (double)op - zhi;
216                                         formula = zhuan + jian + formula;
217                                     }
218                                     else if (symbol2 == "*")
219                                     {
220                                         zhi = (double)op * zhi;
221                                         formula = zhuan + cheng + formula;
222                                     }
223                                     else if (symbol2 == "/")
224                                     {
225                                         if (zhi == 0)//防止出现随机生成的除号后面的值为0;
226                                             break;
227                                         else
228                                         {
229                                             zhi = (double)op / zhi;
230                                             formula = zhuan + chu + formula;
231                                         }    
232                                     }
233                                     break;
234 
235                              }
236                              //加到后面
237                             case(1) :
238                             {
239                                     formula = formula + symbol2;
240                                     op = Creat_random(r1, r2);//防止后面随机产生除号,分母为0
241                                     while (1)
242                                     {
243                                         if (op == 0)
244                                             op = Creat_random(r1, r2);
245                                         else
246                                             break;
247                                     }
248                                     zhuan = Int_str(op);
249                                     if (symbol2 == "+")
250                                     {
251                                         zhi = zhi + (double)op;
252                                         formula = formula + jia + zhuan;
253                                     }
254                                     else if (symbol2 == "-")
255                                     {
256                                         zhi = zhi - (double)op;
257                                         formula = formula + jian + zhuan;
258                                     }
259                                     else if (symbol2 == "*")
260                                     {
261                                         zhi = zhi * (double)op;
262                                         formula = formula + cheng + zhuan;
263                                     }
264                                     else if (symbol2 == "/")
265                                     {
266                                         zhi = zhi / (double)op;
267                                         formula = formula + chu + zhuan;
268                                     }
269                                     break;
270                               }
271 
272                         }
273                         break;
274             }
275                 
276                 
277         }
278         
279         
280     }
281     else if (symbol1 == "-")
282     {
283         zhi = (double)op1 - (double)op2;
284         formula = zhuan1 + jian + zhuan2;
285     }
286     else if (symbol1 == "*")
287     {
288         zhi = (double)op1 * (double)op2;
289         formula = zhuan1 + cheng + zhuan2;
290     }
291     else if (symbol1 == "/")
292     {
293         zhi = (double)op1 / (double)op2;
294         formula = zhuan1 + chu + zhuan2;
295     }
296 
297         
298     
299     
300 
301 }
302 
303 /*含有真分数*/
304 void Have_fenshu(int LL, int r1, int r2, string &formula, double &zhi, int jj)
305 {
306     srand((int)time(0));
307     string F1, F2, symbol, zhuan;
308     double Z1, Z2;//
309     int inter, type;
310     inter = Creat_random(r1, r2);//整数
311     zhuan = Int_str(inter);
312     Creat_fen(r1, r2, F1, Z1);//分数1
313     Creat_fen(r1, r2, F2, Z2);//分数2
314     symbol = Create_oper(LL);//符号
315     type = rand() % 3;//类型
316 
317     if (jj == 0)//加减没有负数
318     {
319         inter = Opp_zf(inter);
320         zhuan = Int_str(inter);
321         while (1)
322         {
323             if (Z1 <0)
324                 Creat_fen(r1, r2, F1, Z1);
325             else
326                 break;
327         }
328         while (1)
329         {
330             if (Z2 <0)
331                 Creat_fen(r1, r2, F2, Z2);
332             else
333                 break;
334         }
335     }
336 
337     switch (type)
338     {
339         //op1分数
340     case(0) :
341         formula = F1 + symbol + zhuan;
342         if (symbol == "+")
343             zhi = Z1 + (double)inter;
344         else if (symbol == "-")
345         {
346             if (jj == 0)
347                 break;
348             else
349                 zhi = Z1 - (double)inter;
350         }
351         else if (symbol == "*")
352             zhi = Z1 * (double)inter;
353         else if (symbol == "/")
354         {
355             if (inter != 0)
356                 break;
357             else
358                 zhi = Z1 / (double)inter;
359         }
360         break;
361         //op2分数
362     case(1) :
363         formula = zhuan + symbol + F1;
364         if (symbol == "+")
365             zhi = (double)inter + Z1;
366         else if (symbol == "-")
367             zhi = (double)inter - Z1;
368         else if (symbol == "*")
369             zhi = (double)inter * Z1;
370         else if (symbol == "/")
371         {
372             if (Z1 != 0)
373                 zhi = (double)inter / Z1;
374             else
375                 break;
376         }
377         break;
378         //全分数  
379     case(2) :
380         formula = F1 + symbol + F2;
381         if (symbol == "+")
382             zhi = Z1 + Z2;
383         else if (symbol == "-")
384         {
385             if ((jj == 0) && (Z1 < Z2))
386                 break;
387             else
388                 zhi = Z1 - Z2;
389         }
390         else if (symbol == "*")
391             zhi = Z1 * Z2;
392         else if (symbol == "/")
393         {
394             if (Z1 != 0)
395                 zhi = Z1 / Z2;
396             else
397                 break;
398         }
399         break;
400     }
401 
402 }
403 
404 /*不含有真分数*/
405 void Only_integer(int LL, int r1, int r2, string &formula, double &zhi,int jj,int cc)
406 {
407     srand((int)time(0));
408     int op1, op2;
409     string symbol,zhuan1,zhuan2;
410     op1 = Creat_random(r1, r2);//整数1
411     op2 = Creat_random(r1, r2);//整数2
412     symbol = Create_oper(LL);//符号
413 
414     if (jj == 0)//加减不含负号
415     {
416         op1 = Opp_zf(op1);
417         op2 = Opp_zf(op2);
418         if ((symbol == "-") && (op1 < op2))
419         {
420             int temp;
421             temp = op1;
422             op1 = op2;
423             op2 = temp;
424         }
425     }
426 
427     if ((cc == 0) && (symbol == "/"))//除法不含余数(去除负号计算的情况)
428     {
429         while (1)
430         {
431             op1 = Opp_zf(op1);
432             op2 = Opp_zf(op2);
433             if (op1 % op2 != 0)//有余数,重新生成
434             {
435                 op1 = Creat_random(r1, r2);
436                 op2 = Creat_random(r1, r2);
437             }
438             else
439                 break;
440         }
441     }
442 
443     zhuan1 = Int_str(op1);
444     zhuan2 = Int_str(op2);
445     formula = zhuan1 + symbol + zhuan2;
446     if (symbol == "+")
447         zhi = op1 + op2;
448     else if (symbol == "-")
449         zhi = op1 - op2;
450     else if (symbol == "*")
451         zhi = op1*op2;
452     else if (symbol == "/")
453         zhi = op1 / op2;
454 }
455 
456 void main()
457 {
458     ofstream outfile("formula.txt", ios::out);
459     if (!outfile)
460     {
461         cout << "open error!" << endl;
462         exit(1);
463     }
464     outfile << "----------------欢迎!小学生四则运算答题系统:-D----------------" << endl;
465 
466     int i,j,N, R1, R2;
467     int SF, KH, FS, Lei,JJ,CC,count=0;
468     string question="";//生成的问题
469     double Zhi, answer;
470     int fenzi, fenmu;
471     bool repeat = false;
472     
473     cout << "----------------欢迎!小学生四则运算答题系统:-D----------------"<<endl;
474     /*选择题目范围和数量*/
475     cout << "您想为孩子定制什么范围的题目呢?(可含有负数 && 上限≥下限):" << endl;
476     cout << "下限:";
477     cin >> R1;
478     cout << "上限:";
479     cin >> R2;
480     while (1)//是否输入合法
481     {
482         if (R2 < R1)
483         {
484             cout << "输入的范围不合理,请重新输入(上限≥下限):" << endl;
485             cout << "下限:";
486             cin >> R1;
487             cout << "上限:";
488             cin >> R2;
489         }
490         else
491             break;
492     }
493 
494     cout << "订制多少道题呢?请输入个数:" << endl;
495     cout << "(友情提示:您不要为孩子出太多的题目(最多1000道)!谢谢合作!)" << endl;
496     cin >> N;
497     while (1)//是否输入合法
498     {
499         if (N<=0||N>1000)
500         {
501             cout << "输入的题目数量不合理,请重新输入:" << endl;
502             cin >> N;
503         }
504         else
505             break;
506     }
507 
508     /*选择打印方式*/
509     cout << "您是否需要保存文档?(0、不需要 1、需要)" << endl;
510     cin >> SF;
511     SF=Istrue_input(SF);//是否输入合法
512     Output(SF);
513 
514     cout << "*********下面请按照孩子的学习程度选择题目的难度!!*********"<<endl;
515     /*是否含有括号*/
516     cout << "是否练习带有括号的难度运算?(0、不需要 1、需要)";
517     cin >> KH;
518     KH=Istrue_input(KH);//是否输入合法
519     if (KH == 1)//含括号
520     {
521         for (i = 1; i <= N; i++)
522         {
523             string Formula = "";
524             double Zhi;
525             Have_kuohao(R1, R2,Formula,Zhi);  
526         }
527         
528 
529     }
530 
531     //不含括号
532     else if (KH == 0)
533     {
534         /*加减运算或者四则运算*/
535         cout << "请选择:0、只进行加减运算? 1、进行四则运算?";
536         cin >> Lei;
537         Lei=Istrue_input(Lei);//是否输入合法
538 
539         cout << "加减运算中是否有负数?(0、没有 1、有)";
540         cin >> JJ;
541         JJ = Istrue_input(JJ);
542     
543         if (Lei == 1)//乘除
544         {
545             cout << "除法中是否出现余数?(0、没有 1、有)";
546             cin >> CC;
547             CC = Istrue_input(CC);
548         }
549 
550         /*是否含有真分数*/
551         cout << "题目中是否含有真分数?(0、不需要 1、需要)";
552         cin >> FS;
553         Istrue_input(FS);//是否输入合法
554 
555         cout << N << "道题目如下:" << endl;
556         if (SF == 1)//文件输出
557         {
558             outfile << N << "道题目如下:" << endl;
559         }
560         string ku[10000] = {};
561         
562         for (i = 1; i <= N; i++)
563         {
564             if (FS == 0)//全整数
565                 Only_integer(Lei, R1, R2, question, Zhi, JJ, CC);
566             else if (FS == 1)//含真分数
567                 Have_fenshu(Lei, R1, R2, question, Zhi, JJ);
568 
569             ku[i] = question;
570             /*repeat = false;*/
571             for (j = 0; j <i; j++)
572             {
573                 if (ku[j] == ku[i])
574                 {
575                     i = i - 1;
576                     repeat = true;//重复
577                     break;
578                 }
579             }
580             /*if (repeat) ku[i+1] = "";*/
581             if (!repeat)//不重复
582             {
583                 /*Is_rept(i,str);*/
584                 cout << i << "" << question << " = " << endl;
585                 if (SF == 1)//文件输出
586                 {
587                     outfile << i << "" << question << " = " << Zhi << endl;
588                 }
589 
590                 if ((Zhi - (int)Zhi)< 1E-7 && (Zhi - (int)Zhi)> -(1E-7))//可认为它是整数
591                 {
592                     cin >> answer;
593                 }
594                 else
595                 {
596                     cout << "    分子:";
597                     cin >> fenzi;
598                     cout << "    分母:";
599                     cin >> fenmu;
600                     answer = (double)fenzi / (double)fenmu;
601                 }
602                 
603                 if ((answer - Zhi) < 1E-7 && (answer - Zhi) > -(1E-7))
604                 {
605                     cout << "" << endl;
606                     count++;
607                 }
608                 else
609                 {
610                     cout << "                        ×" << endl;
611                     cout << "答案是:" << Zhi << endl;
612                 }
613             }
614         }
615         
616         cout << "您的孩子一共答对了" << count << "道题目!! 恭喜!!" << endl;
617         if (SF == 1)//文件输出
618         {
619             outfile << "您的孩子一共答对了" << count << "道题目!! 恭喜!!" << endl;
620         }
621         cout << "答错的" << N - count << "道题目请分析原因并改正~~  加油!!" << endl;
622         if (SF == 1)//文件输出
623         {
624             outfile << "答错的" << N - count << "道题目请分析原因并改正~~  加油!!" << endl;
625         }
626     }
627     outfile.close();
628 
629 }

下面是代码的部分功能截图:

测试一:

       

选择了保存到文件中,下面我们来看文件中:文件中可以保存系统出的题目以及孩子答对的题目数!!!<( ̄ˇ ̄)/

 

测试二:

      

同样也可以保存到文件里:

 

三、实验总结和反思

      通过这次实验的合作我了解到在软件工程的实际开发中团队合作的力量,从前编写代码都是一个人“孤军奋战”,现在起码有一个小伙伴能够在旁边提供一些思路和鼓励。但是我觉得能够让合作更加完美我们要做的还是尽自己最大的努力提高自己的能力,让自己不要成为团队中的短板。 第一次合作我们的用时比较长,因为花费了一个晚上来确定编程的代码规范、了解彼此的编程特点、设计函数和思路等等。希望下次能够在完成任务的基础上提高效率。

 

最后,附上我和我的小伙伴的工作照……没有正脸。老师们不要介意啦啦啦~~~~

小伙伴博客内容页:http://www.cnblogs.com/kongyuhang/p/5295894.html

四、PSP和缺陷日志

 

项目计划日志

 

项目计划总结

周活动总结表

姓名:赵子茵                                              日期:2016/3/19

任务

日期

听课

编写

程序

阅读

课本

准备

考试

 

 

日总计

(分钟)

周日

 

 

 

 

 

 

 

周一

100

120

60

 

 

 

280

周二

 

120

30

 

 

 

150

周三

 

300

60

 

 

 

360

周四

100

120

90

 

 

 

310

周五

 

300

30

 

 

 

330

周六

 

720

 

 

 

 

720

 

阶段时间和效率

周数:1

总计

200

1680

270

 

 

 

2160

平均

30

240

40

 

 

 

310

最大

100

720

90

 

 

 

910

最小

100

120

30

 

 

 

250

 

 

2,时间记录日志:

学生:赵子茵                                   日期:2016/3/19

老师:王建民                                    课程:PSP

日期

开始时间

结束时间

中断时间

净时间

活动

备注

3/14

14:00

16:00

20

100

上课

 

17:00

19:00

 

60

编程

 

20:00

21:00

 

60

读课本

 

3/15

14:00

16:00

 

120

编程

 

18:00

19:00

 

60

查资料

 

21:00

21:30

 

30

读课本

 

3/16

10:00

12:00

20

100

查资料

 

15:00

20:00

 

300

编程

 

20:30

21:30

 

60

读课本

 

3/17

14:00

16:00

20

100

上课

 

16:00

18:00

 

120

编程

 

21:00

21:30

30

30

读课本

 

3/18

 

 

08:00

13:30

15:00

9:00

15:00

20:00

 

60

90

300

查资料

休息

编程

 

3/18

 

 

08:00

13:30

19:00

12:00

18:30

21:00

 

240

300

180

编程

编程

编程

 

 

 

 

 

 

3,缺陷记录日志:

学生:赵子茵                                       日期:2016/3/19

老师:王建民 

 

日期

编号

类型

引入阶段

排除阶段

修复阶段

修复缺陷

3/16

1

 

设计

编码

15min

 知识漏洞

描述:设计函数的结构和变量时有知识点掌握的不牢固,比如地址传递参数的使用等等。

3/18

 

 

 

 

2

 

编码

编译

20min

 知识漏洞

描述:想要随机生成两个或多个不同的随机数作为运算的操作数,但是使用种子的代码有误导致每次生成的不随机或者比率不合理。

3

 

编码

编译

15min

 逻辑错误

描述:do…while循环语句的循环条件和结束条件写错了,导致程序一直是朝着相反的方向去。

3/19

4

 

编码

编译

30min

知识漏洞

描述:计算结果会出现小数因此要以double形式存放,就要将操作数的int类型进项转换,以及后面涉及到的int类型转换为string编写时都出现了知识掌握不全面的问题。

5

 

编码

编译

30min

逻辑错误

描述:编写查重函数时候因为内层循环和外层循环的i,j问题,导致程序不能有效的查重。

posted on 2016-03-19 21:23  波棱盖儿卡秃噜皮  阅读(1083)  评论(4编辑  收藏  举报