1、WEB应用与开发基于WEB的简易计算器课程设计报告HUNAN CITY UNIVERSITY WEB应用与开发课程设计报 告设计题目: 基于WEB的简易计算器 专 业: 信息管理与信息系统 学生姓名: XXXXX 班级学号: XXXXXXXXXXXXXXX 分组成员: XXXXXXXXXXXXXXXXXXXXXXXX 指导教师: XXXXXXXXXXXXXXXXXXXX 2012 年 6 月 8 日WEB应用与开发课程设计报告XXXXXXXXXXXXXXXXXXXXXXX一、设计时间 2012年6月 04日-6月08日总的设计时间为1周, 第17周。具体安排如下:1、分析设计准备阶段(第17周
2、周一至周二) 2、编程调试阶段(第17周周三至第17周周四) 3、书写设计报告和书写说明书阶段(第17周周五) 4、考核阶段(第17周周五) 二、设计地点 信息科学与工程学院机房(新校区510机房)三、设计目的通过对一些实际问题的软件设计,巩固学习java基础知识方面的基本算法,进一步熟悉基本概念。使学生能将课本的理论知识应用于实践,运用所用学的JSP语言知识编制出较为实用的小系统,培养学生查阅资料的习惯,提高学生独立思考和解决问题的能力。四、设计小组成员 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX五、指导老师 XXXXXXXXXXXXXXXXXXXXXX六、设计课题 基于W
3、EB的简易计算器 七、基本思路及关键问题的解决方法 基本思路:对于简易的计算器可以进行简单的加减乘除运算。用JavaScript实现基本的计算器界面,因基础有限界面做的不够美观。用servlet接收主界面的数据对其进行运算并把结果返回给主界面显示。 问题解决方法:对于实验过程中产生的相关问题,我们小组成员先进行讨论,对于不能解决的问题,通过网络查找,对于查找不到的向老师询问。八、算法及流程图算法:1、通过jsp页面接收按钮输入的运算字符,利用js技术处理。2、servlet接收一数学表达式,对表达式进行递归解析,分解出其中的数字和运算符。3、然后调用不同的函数进行运算后返回结果。4、输出到到计
4、算器显示框内。流程图:(附录一)九、调试过程中出现的问题及相应解决办法 在计算过程中,对于错误的运算不能提示信息,这个问题对于计算器而言,这个问题是比较严重的。出现了这个问题,我们小组首先是自己讨论,试了很多方法都不能实现。心理比较着急,但感觉无从入手,由于基础薄弱不能自己解决,所以查找了很多资料 ,从网上找到了答案,最后利用eval函数得到了解决。十、课程设计心得体会这次课程设计我们小组选做的是基于WEB的简易计算器,主要是用于动态网页实现简易的加减乘除计算功能。系统分为用JavaScript实现基本的计算器界面和用servlet接收页面的数据对其进行运算并把结果返回给主界面显示两部分,每一
5、部分又各分若干专题。系统中采用的技术主要有:servlet技术、JavaScript脚本技术和利用MyEclipse集成开发环境。通过这次课程设计,我发现要学习好一门课程,一定要理论与实践相结合。要通过大量的实验才能对知识得心入手。由于平时上机并没有完成的十分好,所以在这次课程设计中很多时候总是感觉捉襟见肘,才发现书到用时方恨晚啊。所以这次学到的不仅仅是书本上的知识,更重要的是学到了一种学习的态度。(本人有完整的项目需要的话发邮件给我491990141)十一、源程序() JavaScript实现基本的计算器界面.jsp: 简易计算器/使用js servlet接收主界面的数据对其进行运算并把结果
6、返回给主界面显示MyCalculator.java:package calculator.web;import java.io.IOException;import java.io.PrintWriter;import java.math.BigDecimal;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;im
7、port calculator.exception.MyException;public class MyCalculator extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String str = request.getParameter(textId); try String result = sumStr(str); request.setAttribute(result
8、, result); request.getRequestDispatcher(/3.jsp).forward(request, response); catch(MyException e) request.setAttribute(error, e); request.getRequestDispatcher( /servlet/ErrorServlet).forward(request, response); public void doPost(HttpServletRequest request, HttpServletResponse response) throws Servle
9、tException, IOException doGet(request, response); public String sumStr(String str) if(str.startsWith(+) | str.startsWith(-) | str.startsWith(/) | str.startsWith(*) throw new MyException(表达式不正确); /判读加号 if(str.indexOf(+)=0) String str1= str.substring(0,str.lastIndexOf(+); String str2= str.substring(st
10、r.lastIndexOf(+)+1); if(str1.indexOf(+)0 |str1.indexOf(-)0 |str1.indexOf(*)0 |str1.indexOf(/)0) str1=sumStr(str1); if(str2.indexOf(+)0 |str2.indexOf(-)0 |str2.indexOf(*)0 |str2.indexOf(/)0) str2=sumStr(str2); return +(parseBigDecimal(str1).add(parseBigDecimal(str2); /判读减号 if(str.indexOf(-)=0) String
11、 str1= str.substring(0,str.lastIndexOf(-); String str2= str.substring(str.lastIndexOf(-)+1); if(str1.indexOf(+)0 |str1.indexOf(-)0 |str1.indexOf(*)0 |str1.indexOf(/)0) str1=sumStr(str1); if(str2.indexOf(+)0 |str2.indexOf(-)0 |str2.indexOf(*)0 |str2.indexOf(/)0) str2=sumStr(str2); return +(parseBigDe
12、cimal(str1).subtract(parseBigDecimal(str2); /判读乘号 if(str.indexOf(*)=0) String str1= str.substring(0,str.lastIndexOf(*); String str2= str.substring(str.lastIndexOf(*)+1); if(str1.indexOf(+)0 |str1.indexOf(-)0 |str1.indexOf(*)0 |str1.indexOf(/)0) str1=sumStr(str1); if(str2.indexOf(+)0 |str2.indexOf(-)
13、0 |str2.indexOf(*)0 |str2.indexOf(/)0) str2=sumStr(str2); return +(parseBigDecimal(str1).multiply(parseBigDecimal(str2); /判断除号 if(str.indexOf(/)=0) String str1= str.substring(0,str.lastIndexOf(/); String str2= str.substring(str.lastIndexOf(/)+1); if(str1.indexOf(+)0 |str1.indexOf(-)0 |str1.indexOf(*
14、)0 |str1.indexOf(/)0) str1=sumStr(str1); if(str2.indexOf(+)0 |str2.indexOf(-)0 |str2.indexOf(*)0 |str2.indexOf(/)0) str2=sumStr(str2); if(parseBigDecimal(str2).intValue() = 0) throw new MyException(被除数不能为0); return +(parseBigDecimal(str1).divide(parseBigDecimal(str2),5,BigDecimal.ROUND_HALF_UP); /最后
15、把结果返回 return str; private BigDecimal parseBigDecimal(String str1) BigDecimal big = new BigDecimal(str1); return big; 十二、参考文献1夏士兵,钱江.构建基于COM+的分布式Web应用J.微型机与应用,2001(6):8-9.2美Richard Anderson, Chris Blexrud著,刘福太,张立民,金慧琴,梁发麦等译.ASP3高级编程M.北京:机械工业出版社,2000.408-458.3耿祥义,张跃平.JSP实用教程. 清华大学出版社,2003年5月1日:1-354.4BruceEckel.JSP编程思想. 机械工业出版社,2003年10月:1-378.5FLANAGAN.JSP技术手册. 中国电力出版社,2002年6月:1-465.6孙一林,彭波.JSP数据库编程实例. 清华大学出版社,2002年8月:30-210.7LEE ANNE PHILLIPS.巧学活用HTML4.电子工业出版社,2004年8月:1-319.8飞思科技产品研发中心.JSP应用开发详解.电子工业出版社,2003年9月:32-300.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1