结对编程——paperOne基于java web的简易四则运算出题网站
需求分析:
1.要进行四则运算;
2.运算题目随机;
3.进行对错判断;
4.整数运算。
程序概要:
1.用JSP实现;
2.用户可选择题目数量;
3.答题页用表格列出;
4.包含用来填写答案的输入框;
5.答完后点击提交会直接显示相应题目的对错。
实现过程:
数据结构主要用到了数组
题目生成:
1 public String generateQuestion(int numOfOperand, int rangeMin, int rangMax, boolean isInt,
2 SupportedOperation[] operation, boolean bracket) {
3 String question = ""; //用来保存题目
4 int[] ioperands = null; //用来保存随机生成的操作数
5 double[] doperands = null;
6 SupportedOperation[] so = null; //用来保存操作符
7 if (numOfOperand < 2) {
8 System.out.println("操作数数量至少为2");
9 return "";
10 }
11 if (rangMax > 500) {
12 System.out.println("操作数数最大值不能超过500");
13 return "";
14 } //基础判断,看参数是否符合要求
15 if (isInt) {
16 ioperands = new int[numOfOperand];
17 for (int i = 0; i < numOfOperand; i++) {
18 ioperands[i] = (int) (Math.random() * rangMax / 2 +1);//生成随机数并保存到数组中
19
20 }
21 question += ioperands[0]; //录入第一位操作数
22 //int sub = ioperands[0];
23 so = new SupportedOperation[numOfOperand-1];//初始化操作符数组
24 for(int i = 0;i < operation.length;i++){
25 if(operation[i] == SupportedOperation.ALL){
26 operation = new SupportedOperation[4];
27 operation[0] = SupportedOperation.ADD;
28 operation[1] = SupportedOperation.MINUS;
29 operation[2] = SupportedOperation.MULTIPLY;
30 operation[3] = SupportedOperation.DIVIDE;
31
32 }
33 }
34 int value = 0; //避免出现连续的除法运算
35 for(int j = 0;j<numOfOperand-1;j++){
36
37 so[j] = operation[(int)(Math.random()*operation.length)];
38 switch(so[j]){ //匹配操作符并写入算式
39 case ADD:question = ioperands[j+1]+"+"+question;break;
40 case MINUS:question = ioperands[j+1]+"-"+question;break;
41 case MULTIPLY:question = ioperands[j+1]+"*"+question;break;
42 case DIVIDE:{ //保证数能够整除
43 if(value < 1){
44 ioperands[j+1] = ioperands[j+1]*ioperands[j];
45 question =ioperands[j+1]+"/"+question;
46
47 value++;
48 }
49 else{
50 j--;
51 }
52 }break;
53 default:System.out.println("操作符错误");break;
54 }
55 }
56 System.out.println(question); //以下部分主要用于测试
57 ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");
58
59 try {
60 Integer d = (Integer) se.eval(question);
61 System.out.println(d);
62 } catch (ScriptException e) {
63 e.printStackTrace();
64 }
65
66 } else {
67 doperands = new double[numOfOperand];
68 for (int i = 0; i < numOfOperand; i++) {
69 doperands[i] = Math.random() * rangMax / 2;
70 }
71 }
72
73 return question;
74
75 }
答案评定:
1 <script type="text/javascript">
2 function compute() {
3
4 for (var i = 1; i <= <%=num%>; i++) { //对每一道题进行对错判断
5 var a = "" + eval(document.getElementById("q" + i).innerHTML);
6 var auser = document.getElementById("a" + i).value;
7 if (a == auser) {
8 document.getElementById("r" + i).innerHTML = "正确";
9 } else {
10 document.getElementById("r" + i).innerHTML = "错误";
11 }
12 }
13
14 }
15 </script>
题目难度设计:
1 public String generateSimpleQuestion() {
2 SupportedOperation[] operation = { SupportedOperation.ADD, SupportedOperation.MINUS };
3 return generateQuestion(2, 0, 20, true, operation, false);
4 }
5
6 public String generateCommonQuestion() {
7 SupportedOperation[] operation = { SupportedOperation.ADD, SupportedOperation.MINUS,
8 SupportedOperation.MULTIPLY, SupportedOperation.DIVIDE };
9 return generateQuestion(3, 0, 30, true, operation, false);
10 }
11
12 public String generateMediumQuestion() {
13 SupportedOperation[] operation = { SupportedOperation.ADD, SupportedOperation.MINUS,
14 SupportedOperation.MULTIPLY, SupportedOperation.DIVIDE };
15 return generateQuestion(4, 0, 50, true, operation, true);
16 }
17
18 public String generateComplexQuestion() {
19 SupportedOperation[] operation = { SupportedOperation.ALL };
20 return generateQuestion(6, 0, 50, true, operation, true);
21 }
程序运行结果:
代码地址:https://coding.net/u/jx8zjs/p/paperOne/git
结对编程——paperOne基于java web的简易四则运算出题网站的更多相关文章
- paperOne基于java web的简易四则运算出题网站
项目成员:张金生 张政 需求概要 1.运算数均为正整数 2.包含的运算符有+,-,*,/ 3.除法运算结果为整除运算 4.批量生成题目并判题 核心功能分析 1.题目生成——java后端 题目生 ...
- 结对编程——paperOne基于java的四则运算 功能改进
项目成员:张金生 张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...
- 结对编程1 —— 基于GUI和Swing的四则运算题目生成器
合作伙伴 201421123102 王艳秋 201421123106 陈 雄 代码地址 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI( ...
- 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写
基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...
- 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书
一.选题报告 目录 团队名称 团队成员 项目名称 项目描述 创新与收益 用户场景分析 真实用户调研 未来市场与竞争 项目导图 比例权重 总结 1.团队名称--指南者团队 2.团队成员 孔潭活:2015 ...
- 网络编程:基于C语言的简易代理服务器实现(proxylab)
本文记录了一个基于c socket的简易代理服务器的实现.(CS:APP lab 10 proxy lab) 本代理服务器支持keep-alive连接,将访问记录保存在log文件. Github: h ...
- 【Java Web】简易商品信息管理系统——首个Web项目
正文之前 在学习了一段时间的Java Web的内容之后,当然需要有个项目来练练手,我相信大多数人的首选项目都是信息管理系统吧,所以我选择了商品信息管理系统 目前项目源码已全部上传至GitHub,欢迎大 ...
- 【原创】三分钟教你学会MVC框架——基于java web开发(2)
没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...
- 结对编程1----基于java的四则运算生成器
小组成员:王震(201421123054).王杰(201421123055) Coding地址:https://git.coding.net/a506504661/sssss.git 一.题目描述 我 ...
随机推荐
- Kettle-6.1安装部署及使用教程
一.Kettle概念 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需安装,数据抽取高效稳定. Kettle 中文名称叫水壶,该项目的主 ...
- 版本控制工具(下)——Git的远程仓库、分支管理与其它操作
预备知识: SSH协议参考资料:http://blog.csdn.net/vevenlcf/article/details/43273405 图解公钥和私钥:http://blog.csdn.net/ ...
- 在SQL SERVER中批量替换字符串的方法
UPDATE MainData SET Content = )) , 'XM00000137' , 'XM00000078') WHERE [Key] IN (SELECT md_key FROM i ...
- 【转载】DXUT进阶
原文:DXUT进阶 概要 这个指南涵盖了更多DXUT的高级应用. 这个指南里的大部分功能是可选的, 为了以最小的代价来增强你的应用程序. DXUT提供了一个简单的基于GUI系统的精灵和一个设备设置对话 ...
- 【BZOJ3144】[HNOI2013]切糕
[BZOJ3144][HNOI2013]切糕 题面 题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑 ...
- codevs 5429 多重背包
5429 多重背包 http://codevs.cn/problem/5429 分析: f[i]=g[j-k*siz[i]]+k*val[i]; 发现一个状态d只会更新,d+siz[i],d+2*si ...
- SaltStack入门篇(七)之架构部署实战
模块:https://docs.saltstack.com/en/2016.11/ref/states/all/index.html 实战架构图: 实验环境设置: 主机名 IP地址 角色 linux- ...
- ElasticSearch 聚合查询百分比
这里用的是es5.6.9 bucket_script :它执行一个脚本,该脚本可以对多桶聚合中的指定度量执行每桶计算,指定的度量标准必须为数字,并且脚本必须返回数值. 官方语法 https://www ...
- 【转】lvs、nginx、haproxy转发模式优缺点总结
原文地址: https://yq.aliyun.com/ziliao/78374 一.LVS转发模式 LVS是章文嵩博士写的一个工作于四层的高可能性软件.不像后两者支持七层转发,不过也正因为其简单,所 ...
- 洛谷【P1854】花店橱窗布置
https://www.luogu.org/problemnew/show/P1854 题目描述 某花店现有编号由 1 到 F 的 F 束花, 每一束花的品种都不一样. 编号由 1 到 V 的 V 个 ...