昨天填完原本打算写有关“学生考试部门”的总结,但是因为时间来不及,所以推迟到今天来写。
至于最后的:“老师登录”部门就没什么好说的了,只要会了“管理员部分”和“学生考试部分”的书写,剩下就只是耐心的一点一点把代码码出来,写代码是一个考验耐性的活,我本身不是很有耐心,但是我慢慢地我努力改变着自己,其实稍微努力一下,我也可以蛮有耐心的嘛,哈哈!老规矩,我上图分析分析:
第一点问题:
图一
图一中我想说说的是sessionScope。,意思如下图二所示:
图二
第二点问题:struts2标签
图三
2.1如图三所示#request.selects是OGLN语句,他跟EL语句是由区别的!分别是用法区别和页面取值的区别:如下图四和图五所示:
图四
图五
2.2继续看图三中的Iterator便签中var=”select“和status="sta",但要用到索引的时候就要用${sta.index+1},也就是status,切记是sta而不是select;这里涉及到一个问题:就是当index+1的时候。就会自动从1开始,如果是${sta.index+11}则是从11开始.....
,但是在遍历的是时候用到的是select。也就是var,如下图所示:
图五
2.3这个问题就是一开始谈到的那个问题,这里跳过
图六
第三点问题说说arrayList和LinkList;如图七图八所示:
图七
图八
4.产生随机数字的算法:这里比较巧的是for(){number[j-1]==nuber[i]},如果产生的随机数重复了,就要重新产生数据,因为在考试过程中出现的题目不可以一模一样,这就要求选择数据库的题号的时候不可以重复
图九
5这段代码我想给出详细解说,如下所示:
1 //从题库中随机生成填空题,返回保存num个填空题的链表 2 public List<FillQuestion>selectFillQuestion(int num) 3 { 4 Connection conn=JDBCConnectionFactory.getConnection();//连接数据池 5 FillQuestion fill=null;//javabean 6 List<FillQuestion>list=new LinkedList<FillQuestion>(); //List<> 7 //查询该选择题 8 try{ 9 Statement stmt= conn.createStatement(); //执行数据库语句 10 //生成num个随机数作为需选择题的题号 11 ResultSet rsl=stmt.executeQuery("select MAX(f_id) FROM fillquestion");//返回一个结果集,数据库语句的意思是寻找并返回最大的f_id 12 int maxfid=30; //这个是随便取值的 13 if(rsl.next())// 14 { 15 maxfid=rsl.getInt(1);//取出结果集中第一个数值。 16 } 17 //生成选题编号数组 18 int[] number=random_number(maxfid,num); 19 //查询所有选择题并选出num道题 20 String sql="select * from FillQuestion"; 21 ResultSet rs=stmt.executeQuery(sql); 22 while(rs.next()) 23 { 24 for(int i=0;i<num;i++) 25 { 26 if(rs.getInt(1)==number[i])//如果是相同的话,取值第二个和第三个! 27 { 28 fill=new FillQuestion(rs.getString(2),rs.getString(3)); 29 list.add(fill);//List表就是这样子添加一个 javabean成为链表格式 30 } 31 } 32 } 33 }catch(SQLException ee){ 34 ee.printStackTrace(); 35 36 }finally{} 37 return list; 38 }
6 s:if 便签
图十
图十一
根据图十和图十一,s:if text=#li其实就是s:if text=#request.cz。
备注:①
②整型的记得转一下: