web實驗報告 雯docx
實 驗 報 告課程名稱: Web系統(tǒng)與技術(shù) 實驗項目: Web系統(tǒng)與技術(shù)實驗 實驗地點: 行知樓B113教室 專業(yè)班級: 軟件1334班 學號: 2013005227 學生姓名: 張 雯 指導教師: 王莉 2015年 12 月 30日 太原理工大學實驗報告一學院名稱軟件學院專業(yè)班級軟件1334班實驗成績學生姓名張雯學號2013005227實驗日期2015.12.7課程名稱Web系統(tǒng)與技術(shù) 實驗題目實驗一 JSP內(nèi)置對象一、 實驗目的和要求:1、掌握Application對象。2、掌握Session對象。二、實驗內(nèi)容:1、課本P158網(wǎng)頁計數(shù)器。2、課本P152 session對象示例。3、課本P165 5.8,5.9三、主要儀器設備裝有Win7 32位操作系統(tǒng)的筆記本電腦及MyEclipse四、主要操作方法與實驗步驟:1、打開MyEclipse,創(chuàng)建名為test的Java Web工程2、創(chuàng)建appCounter.jsp。<% page contentType="text/html; charset=gb2312"%><% int count=0; String Ncounter= request.getParameter("Ncounter"); count=Integer.parseInt(Ncounter); try count=Integer.parseInt(application.getAttribute("Ncounter1").toString(); catch(Exception e) out.println("自從服務器啟動后,此頁面已經(jīng)訪問了"+count+"次"); count+; application.setAttribute("Ncounter1",count);%> 3、創(chuàng)建testApplication.jsp。<% page language="java" contentType="text/html; charset=gb2312"%><HTML> <HEAD> <TITLE>使用application計數(shù)的例子</TITLE> </HEAD> <BODY> <br>測試appCounter的頁面。下劃線以下的內(nèi)容是appCounter頁面的:<BR><HR> <jsp:include page="appCounter.jsp"> <jsp:param name="Ncounter" value="20"/> </jsp:include> </BODY></HTML> 4、部署TomCat6.0,成功部署后啟動TomCat,打開瀏覽器 5、輸入路徑查看結(jié)果五、 實驗結(jié)果與分析 實驗結(jié)果:運行一次得出如下結(jié)果:刷新幾次后顯示結(jié)果如下:關(guān)閉瀏覽器重新打開結(jié)果如下:關(guān)閉服務器重新打開服務器運行結(jié)果如下:實驗分析: 可以看出application對象的生命周期是從服務器啟動到關(guān)閉服務器的時間。六、 討論、心得 服務器啟動后,就會自動創(chuàng)建對象,這個對象一直會保持到服務器關(guān)閉為止,并掌握了JSP的內(nèi)置對象的功能和用法。Application對象的生命周期是從服務器啟動到關(guān)閉服務器的時間。七. 輔導教師點評:教師簽字:太原理工大學實驗報告二學院名稱軟件學院專業(yè)班級軟件1334班實驗成績學生姓名張雯學號2013005227實驗日期2015.12.11課程名稱Web系統(tǒng)與技術(shù) 實驗題目實驗2 使用JDBC連接數(shù)據(jù)庫一、實驗目的和要求1掌握JSP與數(shù)據(jù)庫的連接技術(shù)JDBC2掌握JSP數(shù)據(jù)庫編程技術(shù)。 3獨立完成實驗4書寫實驗報告書二、實驗內(nèi)容利用數(shù)據(jù)庫建立一個職工數(shù)據(jù)表,然后通過JDBC編寫一系列基于Web方式的JSP程序,來對職工數(shù)據(jù)表的數(shù)據(jù)庫進行添加、查詢等功能,要求在網(wǎng)頁上顯示出來。三、主要儀器設備裝有Win7 32位操作系統(tǒng)的筆記本電腦及MyEclipse四、 主要操作方法與實驗步驟:1、 創(chuàng)建數(shù)據(jù)庫并添加記錄。2、 加載MySQL驅(qū)動jar包。3、 編寫JSP程序。 <% page contentType="text/html; charset=GBK" language="java" import="java.sql.*" %><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>MySQL數(shù)據(jù)庫</title> </head> <body> 從MySQL數(shù)據(jù)庫讀取表數(shù)據(jù):<hr> <table border=1> <tr> <td>職工號</td><td>姓名</td><td>性別</td> <td>工資</td><td>職稱</td></tr><% String driverName="com.mysql.jdbc.Driver"String userName="root"/數(shù)據(jù)庫用戶名String userPasswd=""/數(shù)據(jù)庫存取密碼String dbName="employdb"/數(shù)據(jù)庫名String tableName="employinfo"/數(shù)據(jù)庫中的表名String conURL="jdbc:mysql:/localhost:3306/"+dbName;/連接數(shù)據(jù)庫的URL String sql="SELECT * FROM "+tableName; /定義SQL語言對象 Class.forName(driverName).newInstance(); /加載JDBC-ODBC驅(qū)動程序 Connection con=DriverManager.getConnection(conURL,userName,userPasswd);/連接數(shù)據(jù)庫 Statement s=con.createStatement(); /定義查詢數(shù)據(jù)庫的對象 ResultSet rs=s.executeQuery(sql); /得到student表查詢的結(jié)果集 while(rs.next() out.println("<tr>"); out.println("<td>"+rs.getString("employeeID")+"</td>"); out.println("<td>"+rs.getString("name")+"</td>"); out.println("<td>"+rs.getString("sex")+"</td>"); out.println("<td>"+rs.getInt("salary")+"</td>"); out.println("<td>"+rs.getString("title")+"</td>"); out.println("</tr>"); rs.close();%> </table><%/修改每個人的工資String up="update employinfo set salary=salary+50"PreparedStatement ps1=con.prepareStatement(up);ps1.executeUpdate();ps1.close();%><H3>修改后的數(shù)據(jù)庫記錄</H3><hr><table border=1><tr><td>職工號</td><td>姓名</td><td>性別</td><td>工資</td><td>職稱</td></tr><%Statement s2=con.createStatement(); /定義查詢數(shù)據(jù)庫的對象 ResultSet rs2=s.executeQuery(sql);while(rs2.next() out.println("<tr>"); out.println("<td>"+rs2.getString("employeeID")+"</td>"); out.println("<td>"+rs2.getString("name")+"</td>"); out.println("<td>"+rs2.getString("sex")+"</td>"); out.println("<td>"+rs2.getInt("salary")+"</td>"); out.println("<td>"+rs2.getString("title")+"</td>"); out.println("</tr>"); rs2.close(); s2.close(); /釋放Statement所連接的數(shù)據(jù)庫及JDBC資源 con.close(); /關(guān)閉與數(shù)據(jù)庫的連線 %> </table></body></html>五、實驗結(jié)果與分析 實驗結(jié)果: 實驗分析: 賈寶玉 賈:即加載JDBC驅(qū)動程序。 寶:即連接數(shù)據(jù)庫。 玉:即語句,包括創(chuàng)建語句對象和執(zhí)行語句六、 討論、心得 通過此次試驗了解并掌握了JSP連接數(shù)據(jù)庫的技術(shù)JDBC。了解了JSP查詢修改數(shù)據(jù)庫的步驟,并可以將java程序和數(shù)據(jù)庫連接起來。七.輔導教師點評:教師簽字:太原理工大學實驗報告三學院名稱軟件學院專業(yè)班級軟件1334班實驗成績學生姓名張雯學號2013005227實驗日期2015.12.25課程名稱Web系統(tǒng)與技術(shù) 實驗題目實驗3 JSP與JavaBean一、實驗目的和要求 1、了解JavaBean的工作原理,學會使用和配置JavaBean程序。 2、獨立完成實驗 3、書寫實驗報告書二、 實驗內(nèi)容 1、課本P244習題8.10。2、課本P245習題8.12。 3、課本P245習題8.13。三、主要儀器設備裝有Win7 32位操作系統(tǒng)的筆記本電腦及MyEclipse四、主要操作方法與實驗步驟:1、在MyEclipse建立名為TestBean的Package包2、編寫連接數(shù)據(jù)庫的javaBean程序如下:3、編寫jsp程序:TestMyBean.java程序:package TestBean;import java.sql.*;public class TestMyBean private Connection con = null;private Statement stmt = null;private ResultSet rst = null;public TestMyBean()String driverName = "com.mysql.jdbc.Driver"String userName = "root"String userPasswd = ""String dbName = "employdb"String url = "jdbc:mysql:/localhost:3306/"+dbName;tryClass.forName(driverName);catch(ClassNotFoundException e)System.out.println("不能加載驅(qū)動程序n");trythis.con=DriverManager.getConnection(url, userName, userPasswd); catch(SQLException er) System.out.println("不能連接數(shù)據(jù)庫n"); public void executeUpdate(String sql)try stmt = con.createStatement(); stmt.executeUpdate(sql);catch(SQLException ex)System.out.println(ex.getMessage();public ResultSet executeQuery(String sql) throws SQLExceptionstmt = con.createStatement();rst = stmt.executeQuery(sql);return rst;public void close() throws SQLExceptionstmt.close();con.close();MyJsp.jsp程序如下:<% page contentType="text/html; charset=GBK" %><% page language="java" import="java.sql.*" import="TestBean.*" %><html> <head><title>JSP+JavaBean表的查詢和更改</title></head> <body> <jsp:useBean id="myBean" scope="page" class="TestBean.TestMyBean"/> <h3> 利用JSP+JavaBean模式在數(shù)據(jù)庫中更改和刪除表記錄的例子</h3><hr> <h4> 顯示原始employdb表的內(nèi)容</h4> <table Border=1> <tr> <td>職工號</td><td>姓名</td><td>性別</td> <td>工資</td><td>職稱</td> </tr> <% String sql="select * from employinfo" ResultSet rst=myBean.executeQuery(sql); while(rst.next() out.print("<tr><td>"+rst.getString("employeeID")+"</td>"); out.print("<td>"+rst.getString("name")+"</td>"); out.print("<td>"+rst.getString("sex")+"</td>"); out.print("<td>"+rst.getString("salary")+"</td>"); out.print("<td>"+rst.getString("title")+"</td></tr>"); rst.close(); %> </table> <% / 使用SQL 命令修改表中的記錄,將每人工資增加50元 String sql1="update employinfo set salary=salary+50" myBean.executeUpdate(sql1); /執(zhí)行更改操作 %> <h4>顯示更改后的employdb表的內(nèi)容</h4><p> <table Border=1> <tr> <td>職工號</td><td>姓名</td><td>性別</td> <td>工資</td><td>職稱</td> </tr> <% sql1="select * from employinfo" ResultSet rs=myBean.executeQuery(sql1); while(rs.next() out.print("<tr><td>"+rs.getString("employeeID")+"</td>"); out.print("<td>"+rs.getString("name")+"</td>"); out.print("<td>"+rs.getString("sex")+"</td>"); out.print("<td>"+rs.getString("salary")+"</td>"); out.print("<td>"+rs.getString("title")+"</td></tr>"); rs.close(); myBean.close(); %> </table> </body></html>五、實驗結(jié)果與分析 實驗結(jié)果:實驗分析: 從這個實驗中可以看出,通過JavaBean訪問數(shù)據(jù)庫的過程與通過JSP頁面訪問數(shù)據(jù)庫的過程相同。不同的是,這里將訪問數(shù)據(jù)庫的操作與頁面的顯示功能分離開,更好的體現(xiàn)了各司其職的目的。六、討論、心得 通過本次實驗,我了解JavaBean的工作原理,學會了使用和配置JavaBean程序。實驗中出現(xiàn)了很多錯誤,經(jīng)過檢查,與同學共同討論及百度搜索終于解決。七.輔導教師點評:教師簽字: 太原理工大學實驗報告四學院名稱軟件學院專業(yè)班級軟件1334班實驗成績學生姓名張雯學號2013005227實驗日期2015.12.28課程名稱Web系統(tǒng)與技術(shù) 實驗題目實驗4 Servlet一、實驗目的和要求1了解Servlet的工作原理,學會使用和配置Servlet程序。 2獨立完成實驗3書寫實驗報告書二、實驗內(nèi)容1:課本P265第9章第5節(jié)Servlet模式的留言板案例。 2:課本P281習題9.9。 3:課本P281習題9.10。三、主要儀器設備裝有Win7 32位操作系統(tǒng)的筆記本電腦及MyEclipse四、主要操作方法與實驗步驟:1、 創(chuàng)建填寫留言的界面Messages.html<HTML> <HEAD><TITLE>留言板</TITLE> </HEAD><BODY> <CENTER>留言板</CENTER> <FORM ACTION= "AddMessageServlet" Method="post"><TABLE border=1 ALIGN="CENTER"> <TR><TD>姓名:</TD> <TD><INPUT TYPE="text" name="name" size=25></TD> </TR> <TR><TD>E-mail:</TD> <TD><INPUT TYPE="text" name="email" size=25></TD> </TR> <TR><TD>主題:</TD> <TD><INPUT TYPE="text" name="title" size=25></TD> </TR> <TR><TD>留言:</TD> <TD><textarea name="content" rows=7 cols=25></textarea></TD> </TR> <TR><TD colspan=3> <TABLE ALIGN="CENTER" width="100%" cellspacing="0" cellpadding="0" ></TD> <TR><TD ALIGN="CENTER"> <INPUT TYPE="submit" VALUE="提交留言"></TD> <TD ALIGN="CENTER"><A HREF="ViewMessageServlet"> <FONT size=2>查看留言</FONT></A></TD> <TD ALIGN="CENTER"><INPUT TYPE="reset" VALUE="重新填寫"></TD> </TR></TABLE></TD> </TR></TABLE> </FORM> </BODY> </HTML>2、 接受請求保存留言的AddMessageServlet.javapackage message;import javax.servlet.*;import javax.servlet.http.*;import java.sql.*;import java.io.*;public class AddMessageServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet private Connection con;/定義成員變量private static final long serialVersionUID=1L;/建立數(shù)據(jù)庫的連接,下面為構(gòu)造函數(shù)public AddMessageServlet() String JDriver = "com.mysql.jdbc.Driver" /JDBC驅(qū)動程序?qū)ο骃tring userName="root"/數(shù)據(jù)庫用戶名String userPasswd=""/數(shù)據(jù)庫存取密碼String dbName="message"/數(shù)據(jù)庫名String conURL="jdbc:mysql:/localhost:3306/"+dbName;/連接數(shù)據(jù)庫的URLtry Class.forName(JDriver).newInstance();con=DriverManager.getConnection(conURL,userName,userPasswd);/連接數(shù)據(jù)庫URL catch(Exception e)System.err.println(e.getMessage(); /AddMessageServlet()結(jié)束/* 接收GET請求 */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doPost(request,response); /* 接收Post請求 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException byte b1=request.getParameter("name").getBytes ("ISO-8859-1");String na=new String(b1);byte b2=request.getParameter("email").getBytes ("ISO-8859-1");String em=new String(b2);byte b3=request.getParameter("title"). getBytes ("ISO-8859-1");String ti=new String(b3);byte b4=request.getParameter("content"). getBytes("ISO-8859-1");String co=new String(b4);if(na=null) na=""if(ti=null) ti=""if(co=null) co=""if(em=null) em=""try /將獲得的留言信息裝入數(shù)據(jù)庫PreparedStatement stm= con.prepareStatement("insert into messagetable values(?,?,?,?)");stm.setString(1,ti);stm.setString(2,na);if(em.length()=0)stm.setString(3,null);else stm.setString(3,em);stm.setString(4,co);try stm.execute();catch(Exception e) /對于留言板中“查看留言”的請求, 服務器端重定向給另一個Servlet來控制RequestDispatcher requestDispatcher= request.getRequestDispatcher("ViewMessageServlet");requestDispatcher.forward(request,response);catch(Exception e)e.printStackTrace(); /doPost()結(jié)束 /類AddMessageServlet結(jié)束3、 查看留言的ViewMessageServlet.javapackage message;import javax.servlet.*;import javax.servlet.http.*;import java.sql.*;import java.util.ArrayList;import java.util.Collection;import java.io.*;public class ViewMessageServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servletprivate Connection con;/連接數(shù)據(jù)庫private static final long serialVersionUID=19587198658L;public ViewMessageServlet() /構(gòu)造函數(shù)String JDriver = "com.mysql.jdbc.Driver" String userName="root"/數(shù)據(jù)庫用戶名String userPasswd=""/數(shù)據(jù)庫存取密碼String dbName="message"/數(shù)據(jù)庫名String conURL= "jdbc:mysql:/localhost:3306/"+dbName;/連接數(shù)據(jù)庫的URLtry Class.forName(JDriver); con=DriverManager.getConnection(conURL,userName,userPasswd);catch(Exception e) System.err.println(e.getMessage();public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletExceptiondoPost(request,response); public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException Collection<MessageDataBean> ret=new ArrayList<MessageDataBean>(); try Statement stm=con.createStatement(); ResultSet result=stm.executeQuery("select count(*) from messagetable"); int message_count=0; if(result.next() message_count=result.getInt(1); result.close(); if(message_count>0) result=stm.executeQuery("select * from messagetable"); while(result.next() String title=result.getString("title"); String name=result.getString("name"); String email=result.getString("email"); String content=result.getString("content");/將數(shù)據(jù)保存到MessageDataBean中 MessageDataBean message=new MessageDataBean(); message.setTitle(title); message.setName(name); message.setEmail(email); message.setContent(content); ret.add(message); result.close(); stm.close(); request.setAttribute("messages",ret);/訪問顯示留言的JSP RequestDispatcher requestDispatcher = request.getRequestDispatcher("viewMessages.jsp"); requestDispatcher.forward(request,response); catch(Exception e) e.printStackTrace(); 4、 表示留言數(shù)據(jù)的MessageDataBean.javapackage message;public class MessageDataBean private String name,email,title,content;public void setName(String name) this.name=name; public void setEmail(String email)this.email=email;public void setTitle(String title)this.title=title;public void setContent(String content)this.content=content;public String getName()return this.name;public String getContent()return this.content;public String getTitle()return this.title;public String getEmail()return this.email;5、 顯示留言消息的viewMessages.jsp<% page contentType="text/html; charset=GBK" import="message.MessageDataBean" %><% page import="java.util.*"%><HTML> <HEAD> <TITLE>顯示留言</TITLE> </HEAD> <BODY> <P ALIGN="CENTER">所有留言</P> <TABLE ALIGN="CENTER" width="80%" border=1 > <!-解釋:width=“80%”表示表格占瀏覽器寬度的80%-> <% int message_count=0; Collection<MessageDataBean> messages1= (Collection<MessageDataBean>)request.getAttribute("messages"); Iterator<MessageDataBean> it=messages1.iterator(); while(it.hasNext() MessageDataBean mg=(MessageDataBean)it.next(); %> <TR><TD>留言人:</TD> <TD><%=mg.getName()%></TD> <TD ALIGN="CENTER">Email</td> <td colspan="2"> <% out.println("<A HREF=mailto:"+mg.getEmail()+">" +mg.getEmail()+"</A>");%></td> </TR> <TR><TD width="20%">主題:</TD> <TD colspan="4"><%=mg.getTitle()%></TD> </TR> <TR><TD>內(nèi)容:</TD> <TD colspan="4"><Textarea rows=4 cols=70> <%=mg.getContent()%></Textarea></TD> </TR> <% message_count+; %> </Table> <P ALIGN="CENTER"><A HREF= "Messages.html">我要留言</A></P> </BODY></HTML>五、實驗結(jié)果與分析 實驗結(jié)果:實驗分析: 用戶通過Messages.html提供的界面輸入數(shù)據(jù)并點擊“提交留言”按鈕時,控制權(quán)就交給了AddMessageServlet.java,將留言寫入數(shù)據(jù)庫后將控制權(quán)交給ViewMessageServlet.java,從數(shù)據(jù)庫中查出數(shù)據(jù)后賦給MessageDataBean類的對象message,再將其添加到Collection的對象ret中。最后調(diào)用viewMessage.jsp實現(xiàn)數(shù)據(jù)顯示。六、討論、心得(1)通過本次實驗,了解了Servlet的工作原理,可以熟練地使用和配置Servlet程序。(2)學會了編寫留言本程序,并且了解到WEB應用技術(shù)的兩種模式,以及兩種模式之間的區(qū)別。七. 輔導教師點評:教師簽字: 太原理工大學實驗報告五學院名稱軟件學院專業(yè)班級軟件1334班實驗成績學生姓名張雯學號2013005227實驗日期2015.12.30課程名稱Web系統(tǒng)與技術(shù) 實驗題目實驗5 JSP中的文件操作一、實驗目的和要求1了解JSP文件操作的工作原理,學會文件操作。 2獨立完成實驗3書寫實驗報告書二、實驗內(nèi)容程序:課本P306習題10.11。提示:在D盤建立一個名為score.txt的文本文件,內(nèi)容為:1,78,82,742,82,88,983,98,89,904,68,78,775,70,86,88共4列,分別表示5個學生的學號以及數(shù)學,英語,計算機的成績,要求求出5個學生數(shù)學、英語、計算機的最小值,最大值及平均值。部分程序如下:File fl=new File("d:/score.txt");RandomAccessFile frw=new RandomAccessFile(fl,"rw");Srting info=null;String rec=nullwhile (info=frw.readLine()!=null) System.out.println(info); rec=info.split(",");以上程序解釋:讀入一行后,以”,”為分隔符,把1行切割為4個部分,存入數(shù)組中.三、主要儀器設備裝有Win7 32位操作系統(tǒng)的筆記本電腦及MyEclipse四、主要操作方法與實驗步驟:1、在F:/盤建立一個名為score3.txt的文本文件,輸入5個學生的學號以及數(shù)學,英語,計算機的成績。2、編寫jsp3.jsp程序<% page contentType="text/html; charset=GBK" %><HTML><HEAD><TITLE>輸出每門課的成績的最大值等</TITLE></HEAD><BODY> <CENTER>輸出每門課的成績的最大值,最小值和平均值</CENTER><HR> <FORM METHOD="post" ACTION="Servlet" > <P><INPUT TYPE="submit" VALUE="輸出成績"> <INPUT TYPE="reset" value="清除"></P> </FORM></BODY></HTML>3、編寫Servlet.javaimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class Servlet extends HttpServlet/ 響應POST請求public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException long fp;String s1,s2,s3,s4,s5,minstr,maxstr,avestr,temp;int i3,i4,i5,min,max,tempint;float ave;response.setContentType("text/html;charset=GB2312"); /設置響應的MIME類型PrintWriter out = response.getWriter(); /獲得向客戶發(fā)送數(shù)據(jù)的輸出流out.println("<% page contentType='text/html;charset=GB2312'%");out.println("<HTML><BODY>");String info=null;String rec=null;int amaths=new int5;int aenglish=new int5;int acomputer=new int5;File filePath=new File("F:/");File fl=new File(filePath,"score3.txt"); try RandomAccessFile frw=new RandomAccessFile(fl,"rw"); int i=0; while (info=frw.readLine()!=null) System.out.println(info); rec=info.split(","); amathsi=Integer.parseInt(rec1); aenglishi=Integer.parseInt(rec2); acomputeri=Integer.parseInt(rec3); i+; /out.println("</table>"); frw.close(); catch(Exception e)System.out.println("error"+e.getMessage(); int mathmin,mathmax,englishmin,englishmax,computermin,computermax; float mathave,englishave,computerave; mathmin=mathmax=amaths0; englishmin=englishmax=aenglish0; computermin=computermax=acomputer0; for (int j=1;j<5;j+) if (amathsj<mathmin) mathmin=amathsj; if (aenglishj<englishmin) englishmin=aenglishj; if (acomputerj<computermin) computermin=acomputerj; for (int k=1;k<5;k+) if (amathsk>mathmax) mathmax=amathsk; if (aenglishk>englishmax) englishmax=aenglishk; if (acomputerk>computermax) computermax=acomputerk; String mathminstr=String.valueOf(mathmin); String mathmaxstr=String.valueOf(mathmax); String englishminstr=String.valueOf(englishmin); String englishmaxstr=String.valueOf(englishmax); String computerminstr=String.valueOf(computermin); String computermaxstr=String.valueOf(computermax); mathave=(amaths0+amaths1+amaths2+amaths3+amaths4)/5; englishave=(aenglish0+aenglish1+aenglish2+aenglish3+aenglish4)/5; computerave=