类Score.java:各课程的成绩及平均成绩
类Student.java:学生姓名、学号及Score类
类ScoreAction.java:将Student类存在一个List对象中, execute()方法根据用户输入的成绩计算每个学生的平均成绩。
页面scores.jsp:完成录入学生信息及考试成绩
页面showScores.jsp:显示已录入的学生成绩及平均成绩
效果如下:
代码如下:
1 package javaBean; 2 3 public class Score { 4 private int javaScore; 5 private int j2eeScore; 6 private int ccScore; 7 private double aveScore; 8 public int getJavaScore() { 9 return javaScore; 10 } 11 public void setJavaScore(int javaScore) { 12 this.javaScore = javaScore; 13 } 14 public int getJ2eeScore() { 15 return j2eeScore; 16 } 17 public void setJ2eeScore(int j2eeScore) { 18 this.j2eeScore = j2eeScore; 19 } 20 public int getCcScore() { 21 return ccScore; 22 } 23 public void setCcScore(int ccScore) { 24 this.ccScore = ccScore; 25 } 26 public double getAveScore() { 27 return aveScore; 28 } 29 public void setAveScore(double aveScore) { 30 this.aveScore = aveScore; 31 } 32 }
1 package javaBean; 2 3 4 public class Student { 5 private String name; 6 private long number; 7 private Score score; 8 public String getName() { 9 return name; 10 } 11 public void setName(String name) { 12 this.name = name; 13 } 14 public long getNumber() { 15 return number; 16 } 17 public void setNumber(long number) { 18 this.number = number; 19 } 20 public Score getScore() { 21 return score; 22 } 23 public void setScore(Score score) { 24 this.score = score; 25 } 26 }
1 package actions; 2 3 import java.math.BigDecimal; 4 import java.util.List; 5 6 import com.opensymphony.xwork2.ActionSupport; 7 8 import javaBean.Score; 9 import javaBean.Student; 10 11 public class ScoreAction extends ActionSupport{ 12 private static final long serialVersionUID = 1L; 13 private List<Student> students; 14 15 public List<Student> getStudents() { 16 return students; 17 } 18 19 public void setStudents(List<Student> students) { 20 this.students = students; 21 } 22 public String execute() throws Exception{ 23 int size = students.size(); 24 for(int i=0; i<size; i++){ 25 Student st = students.get(i); 26 Score score = st.getScore(); 27 double aveScore = (score.getJavaScore() + score.getCcScore() + 28 score.getJ2eeScore()) / 3.0; 29 BigDecimal b = new BigDecimal(aveScore); 30 aveScore = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); 31 score.setAveScore(aveScore); 32 } 33 return super.SUCCESS; 34 } 35 }
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="s" uri="/struts-tags"%> 3 <% 4 String path = request.getContextPath(); 5 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() 6 + path + "/"; 7 %> 8 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 10 <html> 11 <head> 12 <base href="<%=basePath%>"> 13 14 <title>输入学生成绩</title> 15 16 <s:head theme="xhtml" /> 17 <style type="text/css"> 18 table { 19 border-collapse: collapse; 20 border: 1px solid #000; 21 } 22 23 th, td { 24 border: 1px solid #000; 25 } 26 </style> 27 </head> 28 <body> 29 <s:form theme="simple" action="showscores" namespace="/" > 30 <table> 31 <thead> 32 <tr> 33 <th align="center">姓名</th> 34 <th align="center">学号</th> 35 <th align="center">Java成绩</th> 36 <th align="center">C语言成绩</th> 37 <th align="center">J2EE成绩</th> 38 </tr> 39 </thead> 40 <tbody> 41 <s:iterator value="new int[4]" status="st"> 42 <tr> 43 <td><s:textfield name="%{'students['+#st.index+'].name'}"></s:textfield> 44 </td> 45 <td><s:textfield name="%{'students['+#st.index+'].number'}"></s:textfield> 46 </td> 47 <td><s:textfield 48 name="%{'students['+#st.index+'].score.javaScore'}"></s:textfield> 49 </td> 50 <td><s:textfield 51 name="%{'students['+#st.index+'].score.ccScore'}"></s:textfield></td> 52 <td><s:textfield 53 name="%{'students['+#st.index+'].score.j2eeScore'}"></s:textfield> 54 </td> 55 </tr> 56 </s:iterator> 57 </tbody> 58 </table> 59 <s:submit value="提交"></s:submit> 60 </s:form> 61 </body> 62 </html>
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="s" uri="/struts-tags"%> 3 <% 4 String path = request.getContextPath(); 5 String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() 6 + path + "/"; 7 %> 8 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 10 <html> 11 <head> 12 <base href="<%=basePath%>"> 13 14 <title>显示学生信息</title> 15 <s:head theme="xhtml" /> 16 <style type="text/css"> 17 table { 18 border-collapse: collapse; 19 border: 1px solid #000; 20 } 21 22 th, td { 23 border: 1px solid #000; 24 } 25 </style> 26 </head> 27 28 <body> 29 <table> 30 <thead> 31 <tr> 32 <th align="center">姓名</th> 33 <th align="center">学号</th> 34 <th align="center">Java成绩</th> 35 <th align="center">C语言成绩</th> 36 <th align="center">J2EE成绩</th> 37 <th align="center">平均成绩</th> 38 </tr> 39 </thead> 40 <tbody> 41 <s:iterator value="students" status="st"> 42 <tr> 43 <td align="center"><s:property value="name" /></td> 44 <td align="center"><s:property value="number" /></td> 45 <td align="center"><s:property value="score.javaScore" /></td> 46 <td align="center"><s:property value="score.ccScore" /></td> 47 <td align="center"><s:property value="score.j2eeScore" /></td> 48 <td align="center"><s:property value="score.aveScore" /></td> 49 </tr> 50 </s:iterator> 51 52 </tbody> 53 </table> 54 </body> 55 </html>
1 <action name="scores"> 2 <result>/scores.jsp</result> 3 </action> 4 <action name="showscores" class="actions.ScoreAction"> 5 <result name="success">/showScores.jsp</result> 6 </action>