在经历了六周的时间,经历了需求分析,系统设计,编码调试以及测试,我们共同完成了小学生四则运算系统,实现了基本功能。在这个过程中我们真正走过了一遍软件开发的流程。现在对项目做一个总结,讲解项目的功能实现过程,并谈谈大家对这个课程和项目的感受~

      ①小组分工

      这次我们的小组开发团队属于小团队,软件设计、开发的过程中需要频繁的交流,最开始的时候大家做了大致的小组分工,后期根据个人的不同情况和项目开发状态,还经历了多次调整。其实在过程中,多数的设计开发过程,大家都是在一起进行的,属于功能团队模型,但每个人都有自己的侧重点,这样能最好的发挥各自的优势,并能很好的合作。晓丽同学主要负责前期的调查问卷的设计,发放和调查问卷结果的分析,让项目的功能和UI设计方向大致确定。雪莹同学负责后台的代码与前后台的接口部分,基本实现了系统的功能。功功同学负责前端的设计,依据自己绝佳的审美和设计让系统有了比较美观的界面。旭莹同学负责后期的代码测试,文档整理,使项目更加完整。     

小学生四则运算系统项目总结

      图1 github上commit图

小学生四则运算系统项目总结

图2 network图

      这次我们的项目托管在github上,所有文档及代码都上传到github中,一开始我们制定的上传方式是每个人一个branch,在自己的branch上工作,当工作都完成时,合并并删除分支。但在项目进行中,发现这种方法的弊端是,当我需要另一个分支的文件的时候,查看不方便,于是我们修改了上传的规则。每push一次文件,就要提出一个pull request ,并通知其他组员,comment这个pull request。这样再合并分支。这样大家都知道了项目的进度,查找文件也更方便了。这时其中一次pull request的截图。     

小学生四则运算系统项目总结

 

图3 pull request

       ②项目设计

      在项目设计的时候我们对项目的功能和UI设计做了详细的调查,对用户的需求分析做了详细的调查。我们主要分成了两部分,一个部分是在线上利用微信平台对认识的亲戚朋友进行采访。另一个部分是利用网上调查问卷的形式对软件的功能、设计进行了调查,最后对143份问卷进行了分析。具体细节在之前的博客已经展示了,需要查看的点下面的链接~

          http://www.cnblogs.com/hahalovejava20160905/p/5941030.html

         ③项目实现

        系统采用网站的形式,开发工具为Visual Studio 2013和SQL server 2008。使用的是C#.net作为后台,前台使用的是HTML+CSS+JavaScript。具体实现了登录,注册,随机测试,错题再测,查看测试记录的功能。下面就具体功能详细说一下项目的实现。

      1.用户管理功能      

小学生四则运算系统项目总结

图4 登录界面

      登录界面是系统的起始页,不登录就没法进入系统,运用前台JavaScript的代码,保证了登录的窗口的自适应,就是不论窗口多大,输入用户名,密码的模块始终在窗口中展示。下图就是窗口缩小后的状态。

小学生四则运算系统项目总结

 图5 窗口自适应

      注册功能分为三步,输入信息,确认信息,注册成功,其中输入信息的时候,系统可以自主判断用户名是否重复,保证用户的用户名是不能重复的。

小学生四则运算系统项目总结

图6 注册界面

       如果在登录界面忘记了密码,可以进入找回密码的部分,利用之前注册填写的找回密码的问题和答案来重置密码。小学生四则运算系统项目总结

图7 找回密码

小学生四则运算系统项目总结

图8 重置密码

        在进入系统后任意一个个人中心的按钮,可以进入个人中心的部分查看自己的信息,可以选择退出系统或者修改自己的个人信息。小学生四则运算系统项目总结

图9 个人中心

       2.测试功能 

       登录系统后进入到系统的主页面,在主页面我们一开始设计的有四种测试的功能。现在由于时间的问题,只做了前两种测试,后两种测试还有待完善。

小学生四则运算系统项目总结

图10 系统主页面

        首先说一下随机测试,随机测试可以自己设置随机测试的相关参数。

小学生四则运算系统项目总结

图11 选择参数

        对于分数的显示使用了MathJax。

        在<head>标签里加上以下代码就可以实现分数表示,但注意一定要联网。        

1 <script type="text/x-mathjax-config">
2   MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
3 </script>
4 <script type="text/javascript"
5   src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
6 </script>
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

      随机出题并结题的步骤主要有以下三个步骤,第一是利用程序的随机函数生成算式,并存到List<string>中,其中,有检查算式是否重复的函数。具体代码如下:     

  1  public static int ran(int down, int up) //随机生成1至n的整数
  2         {
  3             //RandomNumbers.Seed();
  4 
  5             int result = r.Next(down, up+1);//(RandomNumbers.NextNumber() % (up - down + 1) + 1);
  6             return result;
  7         }
  8 
  9  public static bool is_unique(string str, List<string> s) //判断生成的算式是否独特
 10         {
 11             int count = 0;
 12             for (int i = 0; i < s.Count; i++)
 13             {
 14                 if (str != s[i])
 15                 {
 16                     count++;
 17                 }
 18                 else
 19                     break;
 20             }
 21             if (count == s.Count)
 22             {
 23                 return true; //生成的算式是独特的
 24             }
 25             else
 26             {
 27                 return false;
 28             }
 29         }
 30 
 31 public List<string> generate(int low, int high, int muldiv, int frac, int par)
 32         {
 33             int integer1;
 34             int integer2;
 35             List<string> str = new List<string>(); //str用来保存生成的题目
 36             int ch1; //switch语句的选项
 37             int ch2;
 38 
 39             int ch4;
 40             char sign = ' '; //运算符号
 41             //int right1 = 0;
 42             //int wrong = 0;
 43             for (int i = 1; i <= 20; )
 44             {
 45                 int start = 1; //start用来标记算式是否是刚开始生成
 46                 string first = null; //四则运算的第一个运算数,第二个运算数
 47                 string second = null;
 48                 string cal = null;
 49                 int num = ran(1, 6) + 1; //num为参与运算的参数个数
 50                 for (int j = 1; j < num; )
 51                 {
 52                     //-------------------------------------------------------
 53                     if (muldiv == 1) //允许乘除
 54                     {
 55                         ch1 = ran(1, 3); //随机生成运算符号
 56                         switch (ch1)
 57                         {
 58                             case 1:
 59                                 sign = '+';
 60                                 break;
 61                             case 2:
 62                                 sign = '-';
 63                                 break;
 64                             case 3:
 65                                 sign = '*';
 66                                 break;
 67                             case 4:
 68                                 sign = '/';
 69                                 break;
 70                             default:
 71                                 Console.Write("Have bug!");
 72                                 Console.Write("\n");
 73                                 break;
 74                         }
 75                     }
 76                     else //不允许乘除
 77                     {
 78                         ch1 = ran(1, 2);
 79                         switch (ch1)
 80                         {
 81                             case 1:
 82                                 sign = '+';
 83                                 break;
 84                             case 2:
 85                                 sign = '-';
 86                                 break;
 87                             default:
 88                                 Console.Write("Have bug!");
 89                                 Console.Write("\n");
 90                                 break;
 91                         }
 92                     }
 93                     //-------------------------------------------------------
 94                     if (frac == 1) //算式中有分数
 95                     {
 96                         ch2 = ran(1, 3); //四则运算题目的三种情况
 97                         switch (ch2)
 98                         {
 99                             case 1: //整数和整数
100                                 {
101 
102                                     integer1 = ran(low, high);
103                                     integer2 = ran(low, high);
104 
105                                     first = Convert.ToString(integer1);
106                                     second = Convert.ToString(integer2);
107                                 }
108                                 break;
109                             case 2: //整数和分数
110                                 {
111 
112                                     integer1 = ran(low, high);
113 
114                                     first = Convert.ToString(integer1);
115                                     Fraction f = reduction(reafra(low, high));
116                                     second = '[' + f.high + "\\" + f.low + ']';
117                                 }
118                                 break;
119                             case 3: //分数和分数
120                                 {
121                                     Fraction f1 = reduction(reafra(low, high));
122                                     Fraction f2 = reduction(reafra(low, high));
123                                     first = "[" + f1.high + "\\" + f1.low + "]";
124                                     second = "[" + f2.high + "\\" + f2.low + "]";
125                                 }
126                                 break;
127                             default:
128                                 Console.Write("有错误!");
129                                 Console.Write("\n");
130                                 break;
131                         }
132                     }
133                     else //不允许真分数参与运算
134                     {
135 
136                         integer1 = ran(low, high);
137 
138                         first = Convert.ToString(integer1);
139                         integer2 = ran(low, high);
140 
141                         second = Convert.ToString(integer2);
142                     }
143                     //-------------------------------------------------------
144                     if (par == 1) //允许带括号
145                     {
146                         ch2 = ran(1, 4);
147                         switch (ch2)
148                         {
149                             case 1:
150                                 {
151                                     if (start == 1) //start为1表示算式还未生成前两个运算数
152                                     {
153                                         cal = first + sign + second;
154                                         start = 0;
155                                     }
156                                     else
157                                     {
158                                         cal = cal + sign + first; //将已经生成的算式和新生成的运算数相连
159                                     }
160                                 }
161                                 break;
162                             case 2:
163                                 {
164                                     if (start == 1)
165                                     {
166                                         cal = second + sign + first;
167                                         start = 0;
168                                     }
169                                     else
170                                     {
171                                         cal = second + sign + cal;
172                                     }
173                                 }
174                                 break;
175                             case 3:
176                                 {
177                                     if (start == 1)
178                                     {
179                                         cal = '(' + first + sign + second + ')'; //添加括号的情况
180                                         start = 0;
181                                     }
182                                     else
183                                     {
184                                         cal = '(' + cal + sign + first + ')';
185                                     }
186                                 }
187                                 break;
188                             case 4:
189                                 {
190                                     if (start == 1)
191                                     {
192                                         cal = '(' + second + sign + first + ')';
193                                         start = 0;
194                                     }
195                                     else
196                                     {
197                                         cal = '(' + second + sign + cal + ')';
198                                     }
199                                 }
200                                 break;
201                             default:
202                                 Console.Write("Have bug!");
203                                 Console.Write("\n");
204                                 break;
205                         }
206                     }
207                     else //不允许括号参与运算
208                     {
209                         ch4 = ran(1, 2); //输出的两种情况
210                         switch (ch4)
211                         {
212                             case 1:
213                                 {
214                                     if (start == 1)
215                                     {
216                                         cal = first + sign + second;
217                                         start = 0;
218                                     }
219                                     else
220                                     {
221                                         cal = cal + sign + first;
222                                     }
223                                 }
224                                 break;
225                             case 2:
226                                 {
227                                     if (start == 1)
228                                     {
229                                         cal = second + sign + first;
230                                         start = 0;
231                                     }
232                                     else
233                                     {
234                                         cal = second + sign + cal;
235                                     }
236                                 }
237                                 break;
238                             default:
239                                 Console.Write("有错误!");
240                                 Console.Write("\n");
241                                 break;
242                         }
243                     }
244                     j++;
245                 }
246                 if (str.Count == 0) //vector str,若str为空,添加第一个运算式到vector中
247                 {
248                     str.Add(cal);
249                     i++;
250                 }
251                 if (is_unique(cal, str)) //判断生成的算式和之前已经生成的运算式是否重复
252                 {
253                     str.Add(cal); //将生成的运算式添加到str中
254                     i++;
255                 }
256             }
257             return str;
258         
generate

相关文章:

  • 2022-01-30
  • 2021-07-12
  • 2021-06-26
  • 2021-10-25
  • 2021-10-16
  • 2021-06-25
猜你喜欢
  • 2021-10-31
  • 2021-11-17
  • 2021-07-21
  • 2022-02-03
  • 2021-10-04
  • 2022-02-14
相关资源
相似解决方案