博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程结对作业01
阅读量:6344 次
发布时间:2019-06-22

本文共 6592 字,大约阅读时间需要 21 分钟。

程序设计思想:

  首先,由于之前的四则运算已经基本上把需要实现的功能都实现了,所以这次任务的重心在于怎么把一个Java程序变成网页版的。

第一步我的想到需要哪几个网页,每个网页都实现什么功能。那么,主页是必不可少的,用户需要在主页上选择一些出题的基本参数,比如说自然数的范围、

除法有无余数,减法有无负数等,当用于选择好之后,由后台开始出题,于另一个页面显示后台出的题目,用户于此页面进行答题,做完之后,

提交到另一个页面,对用户输入的答案与出题同时写进数据库的答案进行比较,同时告诉用户做对的题目是哪些,做错的题目是哪些。

  以上是这个在线答题系统的整体框架,接下来就是对上述描述进行实现,代码如下:

首先是主页的代码:

index

Online答题系统

View Code

接下来是答题页面的代码:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,java.util.*,javabean01.*,javax.sql.*,javax.naming.*" errorPage="" %>
无标题文档
<%int number=Integer.parseInt(request.getParameter("text1"));int i; //用于循环Random ran=new Random(); //专门用于产生随机数int ranNumber;//存随机产生的数//建一个Ways类的对象,用于方法的调用Ways ways=new Ways();//用于存储用户的选择char choice[]=new char[4];choice[0]=request.getParameter("radio1").charAt(0);choice[1]=request.getParameter("radio2").charAt(0);choice[2]=request.getParameter("radio3").charAt(0);choice[3]=request.getParameter("radio4").charAt(0);int range1=Integer.parseInt(request.getParameter("text2"));int range2=Integer.parseInt(request.getParameter("text3"));int range3=Integer.parseInt(request.getParameter("text4"));%>
<%//清空数据库中原来的东西Connection conn=null;Statement stmt=null;try{Context ctx=new InitialContext();DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/calculation");conn=ds.getConnection();stmt=conn.createStatement();String sql="truncate table biaodashi";stmt.execute(sql);sql="truncate table anwsy";stmt.execute(sql);}catch(SQLException se){ se.printStackTrace();}finally{ if(stmt!=null){ try{ stmt.close(); } catch(SQLException se) { se.printStackTrace(); } stmt=null; } if(conn!=null){ try { conn.close(); } catch(SQLException se) { se.printStackTrace(); } conn=null; }}for(i=1;i<=number;i++){ //开始出题 int ran1=ran.nextInt(8)+1; switch(ran1){ case 1: String result1=ways.addInt(range1); if(result1!=null){ out.println(result1);%>
<% } else i--; break; case 2: String result2=ways.mimusInt(range1, choice[2]); if(result2!=null){ out.println(result2);%>
<% } else i--; break; case 3: String result3=ways.multiplyInt(range1, choice[0]); if(result3!=null){ out.println(result3);%>
<% } else i--; break; case 4: String result4=ways.divideInt(range1, choice[0],choice[3]); if(result4!=null){ out.println(result4); %>
<% } else i--; break; case 5: String result5=ways.add(range1); if(result5!=null){ out.println(result5);%>
<% } else i--; break; case 6: String result6=ways.minus(range1,choice[2]); if(result6!=null){ out.println(result6);%>
<% } else i--; break; case 7: String result7=ways.multiply(range1,choice[0]); if(result7!=null){ out.println(result7);%>
<% } else i--; break; case 8: String result8=ways.divide(range1,choice[0]); if(result8!=null){ out.println(result8);%>
<% } else i--; break; }}%>
View Code

最后是判断结果页面的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8" import="java.sql.*,javax.sql.*,javax.naming.*"%>    
Insert title here
<% int number=Integer.parseInt(request.getParameter("number"));//获取题目的数量 String tjdaan[]=new String[number]; for(int i=1;i<=number;i++) { tjdaan[i-1]=request.getParameter("text"+i); } Connection conn=null; Statement stmt=null; ResultSet rs=null; try { Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/calculation"); conn=ds.getConnection(); stmt=conn.createStatement(); String sql="select daan from anwsy"; rs=stmt.executeQuery(sql); String daan[]=new String [number]; int i=0; while(rs.next()) { daan[i]=new String(rs.getString(1)); i++; } //用来存正确或错误题目的编号 int right[]=new int[number]; int rightnumber=0; int error[]=new int[number]; int errornumber=0; for(int j=0;j
<% out.print("做错的题目有:"); for(int j=0;j
View Code

以上部分是前端的实现,接下来的代码是以前实现的功能代码(也就是后台程序):

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8" import="java.sql.*,javax.sql.*,javax.naming.*"%>    
Insert title here
<% int number=Integer.parseInt(request.getParameter("number"));//获取题目的数量 String tjdaan[]=new String[number]; for(int i=1;i<=number;i++) { tjdaan[i-1]=request.getParameter("text"+i); } Connection conn=null; Statement stmt=null; ResultSet rs=null; try { Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/calculation"); conn=ds.getConnection(); stmt=conn.createStatement(); String sql="select daan from anwsy"; rs=stmt.executeQuery(sql); String daan[]=new String [number]; int i=0; while(rs.next()) { daan[i]=new String(rs.getString(1)); i++; } //用来存正确或错误题目的编号 int right[]=new int[number]; int rightnumber=0; int error[]=new int[number]; int errornumber=0; for(int j=0;j
<% out.print("做错的题目有:"); for(int j=0;j
View Code

运行结果截图:

(主页部分)

(答题部分)

(判断结果部分)

(数据库的表结构)

 

编程体会与总结:

  每一次的任务都能让人学到很多东西,现在我开始认识到,任务的结果对我们来说可能不是最重要的,最重要的应该是做任务的这个过程,

每一个挫折都代表着一次成长,可能说的有点夸张了,但是从每个挫折中,我们都能学到一些意料之外的东西。由于是在解决实际问题中学到的东西,

所有才能记得更加深刻,被动学习与主动学习是截然不同的。

  在这次实验中,我感觉自己对于数据库的了解又加深了很多,并且学会了JDBC数据源与连接池的使用方法,懂得了如何运用css+div对页面进行

精美的设计。当然对于运用后台解决问题的逻辑思路更加的清晰了。

  以上就是通过这次实验我所学到的东西。

转载于:https://www.cnblogs.com/haojun/p/6679448.html

你可能感兴趣的文章
Windows下配置安装Git(二)
查看>>
一个最简单的基于Android SearchView的搜索框
查看>>
铁路开通WiFi“钱景”不明
查看>>
打造智能城市 要先撑起一张智能接入的全覆盖大网
查看>>
成本不足15美元的设备把取款机掏空
查看>>
Nutanix领衔的超融合能带来新存储黄金时代吗?
查看>>
Facebook申请专利 或让好友及陌生人相互拼车
查看>>
电力“十三五”规划:地面光伏与分布式的分水岭
查看>>
美联社再告FBI:要求公开请黑客解锁iPhone花费
查看>>
三星电子出售希捷和夏普等四家公司股份
查看>>
任志远:当云计算遇上混合云
查看>>
思科联手发那科 用物联网技术打造无人工厂
查看>>
智慧城市首要在政府利用大数据的智慧
查看>>
2015年物联网行业:巨头展开专利大战
查看>>
以自动化测试撬动遗留系统
查看>>
网络安全初创公司存活之道
查看>>
《图解CSS3:核心技术与案例实战》——1.2节浏览器对CSS3的支持状况
查看>>
《Android应用开发》——2.4节应用类
查看>>
继 One Step 后,锤子科技 Big Bang 正式开源
查看>>
《淘宝店铺经营管理一册通》一一1.4 商品发布
查看>>