Java程序设计计算器含代码.docx
《Java程序设计计算器含代码.docx》由会员分享,可在线阅读,更多相关《Java程序设计计算器含代码.docx(60页珍藏版)》请在冰豆网上搜索。
Java程序设计计算器含代码
Java程序课程设计任务书
实用性计算器的设计与开发
1、主要内容:
开发一个实用型的计算器程序,实现基本的计算功能同时并进行相应的功能拓展,使其具更加人性化的功能。
我们可以用其进行相应的计算功能来方便我们的学习,代替我们进行一些简单的脑力劳动。
2、具体要求(包括技术要求等):
系统的功能要求:
1.可以使用计算器进行简单的四则运算:
用界面上的按钮输入数字和相应的运算符,即可算出相应的式子的答案,并且确保答案符合一定的精度要求;
2.可以使用计算器进行一定的科学运算,比如在输入数字后,计算器可以将相应的数字进行进制转化,实现功能的同时确保一定的精度要求;
3.可以进行简单的函数运算,比如求一个数的三角函数等;
4.具有一定的错误提示功能,比如输入一个数除以0,我们将输出错误的信息。
学习并掌握以下技术:
Javax.swing,AWT,事件处理等
熟练使用以下开发工具:
Eclipse
实现系统上述的功能。
3、进度安排:
12月28日~12月29日:
课程设计选题,查找参考资料
12月30日~12月31日:
完成需求分析
1月1日~1月5日:
完成系统设计,完成程序代码的编写
1月6日~1月6日:
系统测试与完善
1月7日~1月8日:
完成课程设计报告,准备答辩
四、主要参考文献
[1]耿祥义.JAVA课程设计[M].北京:
清华大学出版社,2008年11月.
[2]张广彬,孟红蕊,张永宝.Java课程设计案例精编[M].北京:
清华大学出版社,2007年.
[3]杨树林,胡洁萍.JAVA语言最新实用案例教程[M].北京:
清华大学出版社,2006年1月.45-170
[4]刘新Java开发技术大全北京[M].清华大学出版社2009年11月.
[5]黄明,梁旭,周绍斌编著.Java课程设计[M]北京:
电子工业出版社,2006年
第1章引言
1.1背景
Java不依赖平台的特点使它受到广泛的关注,Java已成为网络时代最重要的语言之一。
Java具有平台无关性,面向对象,多线程,安全,动态等特点。
Java语言和其他语言相比,最大的优势在于能够在所有的计算机上运行,这也是Java风靡全球的主要原因。
Java的面向对象编程是一种先进的编程思想,可以更容易的解决复杂的问题。
面向对象编程主要体现在以下三个方面:
封装,继承,多态。
因此Java不仅可以用来开发大型的桌面应用程序,而且特别适用于Internet的应用开发。
目前,Java语言不仅是一门被广泛使用的编程语言,而且成为软件设计开发者应当掌握的一门基础语言。
Java语言面向对象编程,并涉及网络,多线程等重要的基础知识。
因为很多新的技术领域都涉及到Java语言,国内外许多大学已经将Java语言列入了本科教学计划,而IT行业对Java人才的需求也不断的增长。
在IT行业发达的国家,有将近60%的软件开发人员使用Java的基础培训工作。
一些软件公司对其开发人员周期性的进行Java的基础培训工作。
因此,学习和掌握Java已经成为共识。
在学完了Java程序设计基础课程后,我们这小组进行Java课程设计的教程,在熟练运用Eclipse环境下,来完成这个实用性计算器。
1.2课程设计内容
实用型计算器的特点是通过用户注册,登录并实用计算器,计算过程对数据有自动保存。
通过集中式的信息数据库,将用户信息与使用情况都存储起来,达到数据共享,降低成本,提高效率,改进服务的目的,进而实现该计算器实用性的优势。
实用性计算器包含以下内容:
(1)计算功能
该功能用于计算各种四则运算、三角函数、进制转换、求余数、求对数等日常实用频率较高的功能。
(2)统计汇总的功能
该功能对计算器运行数据进行存储,提供用户对数据查询。
(3)查询功能
该计算器的存储功能提供给用户对历史信息的查询,可以按照时间查询。
1.3任务分工
第2章实用型计算器的设计
这一章是实用型计算器的设计,从系统需求分析开始,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。
2.1需求分析
任务阐述:
如今社会中,各行各业都需要一些数据的计算并存储,计算器的普及速度可想而知。
但是,现阶段市场上有的计算器要么是价格昂贵,计算能力强,按键多,操作繁琐的型号,要么是价格便宜,计算功能过于简单,按键少,操作十分简单的计算器。
而对于我们在校大学生,平时用于学习生活方面的计算,这两种都不太适合。
因此,我们开发了这个实用型计算器,它能更加便捷的服务于大众。
我们的计算器需求分析如下:
1)本计算器提供快捷运算功能,具有计算,查询等功能。
2)本计算器通过注册用户并登录后才能使用。
3)用户使用的每次运算都给予存储,便于查询历史记录。
记录运算时间,运算式,运算结果。
基于上述需求分析,概括出系统需求具备的基本功能如下:
Ø用户登入
Ø注册
Ø计算
Ø查询历史记录
Ø查询个人信息
2.2开发及运行环境
硬件平台:
❑CPU:
P41.8GHz。
❑内存:
256MB以上。
软件平台:
❑操作系统:
WindowsXP。
❑开发工具包:
JDKVersion1.6.2。
❑开发平台:
eclipse
2.3主要功能要求
本计算器针对在校大学生对计算的要求及市场上计算器现状,做出更实用便捷的计算器。
本计算器主要实现如下功能:
❑系统采用人机对话方式,界面美观友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠。
❑通过注册账号并登录实现用户个人实用信息的存储并查询。
❑系统操作简单,界面简洁明了。
❑数据计算自动完成,提高计算效率。
❑用户信息存储清晰明了,便于查询。
❑以时间为数据存储开头,存储用户计算的数据。
❑系统最大限度地实现了易维护性和易操作性。
❑系统运行稳定、安全可靠。
2.4系统模块化分析
2.4.1计算器主界面布局
计算器主界面主要用了Flowlayout布局和Gridlayout布局的结合,更加简洁明了。
1)界面布局模块
2-1-1界面布局
2)注册模块流程图
2-1-2用户注册模块图
3)查询模块流程图
2-1-3查询模块图
4)计算模块流程图
2-1-4计算模块图
2.4.2实用型计算器各模块介绍
各功能模块实现的功能为:
登录模块:
对登录用户进行判断是否合法,方便对用户查询计算历史记录查询的管理。
合法情况下,用户才能进入并实用计算器。
注册模块:
对新用户进行简单的注册,方便使用计算器和历史记录查询。
计算模块:
对数据进行相应的计算处理,得出计算结果并将计算结果以系统时间为数据开头存储到历史记录文件中。
信息查询模块:
对用户使用计算器计算的历史记录保存,方便用户查询。
表3-1各模块名称功能汇总表
序号
模块名
基本功能
1
登录模块
登录用户
2
注册模块
提供新用户注册服务
2
计算模块
对数据进行计算,并将结果保存到历史记录文件中
3
信息查询
对用户使用计算器计算的历史记录进行查询和用户信息查询
2.5本章小结
本章是实用型计算器的具体设计过程,有具体的需求分析、系统功能模块。
这里我们开始接触实用型计算器开发的最初步骤,也是很重要的一步。
第3章计算器的具体实现
界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大程度上决定了软件是否成功。
3.1界面设计
3.1.1用户登陆界面图
如图5.1.1和图5.1.2所示
图5.1.1用户登录模块框图
图5.1用户登陆界面
此JavaScript函数的作用是检测用户登陆的合法性,并确认用户输入了合法的登录名和口令。
部分代码:
voidloginDialog(){
login=newJDialog();
login.setTitle("登录");
login.setLayout(newFlowLayout());
ImageIconimage=newImageIcon("logo.jpg");//设置显示图片的绝对路径
login.add(newJLabel(image));//添加图片标签
login.add(newJLabel("用户名:
"));
finalJTextFieldname=newJTextField(15);
login.add(name);
login.add(newJLabel("密码:
"));
finalJPasswordFieldpassword=newJPasswordField(15);
password.setEchoChar('*');
login.add(password);
JButtonconfirm=newJButton("登录");
confirm.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(compareUserData(name.getText().trim(),newString(password.getPassword()))){
login.setVisible(false);
f.setVisible(true);
}
else{
JOptionPane.showMessageDialog(login,"用户名或密码错误!
","错误提示",JOptionPane.ERROR_MESSAGE);
}
}
});
login.add(confirm);//添加登入按钮
finalJDialogregDialog=newJDialog(login,"注册",true);
registerDialog(regDialog);
JButtonregister=newJButton("注册");
register.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
{
login.setVisible(false);
regDialog.setVisible(true);
}
}
});
login.add(register);
login.setSize(350,150);
login.setResizable(false);
login.setLocationRelativeTo(null);
login.setVisible(true);
}
3.1.2注册用户界面
简单的用户信息注册,为用户节约不必要的时间。
部分代码:
voidloginDialog(){
login=newJDialog();
login.setTitle("登录");
login.setLayout(newFlowLayout());
ImageIconimage=newImageIcon("logo.jpg");//设置显示图片的绝对路径
login.add(newJLabel(image));//添加图片标签
login.add(newJLabel("用户名:
"));
finalJTextFieldname=newJTextField(15);
login.add(name);
login.add(newJLabel("密码:
"));
finalJPasswordFieldpassword=newJPasswordField(15);
password.setEchoChar('*');
login.add(password);
JButtonconfirm=newJButton("登录");
confirm.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(compareUserData(name.getText().trim(),newString(password.getPassword()))){
login.setVisible(false);
f.setVisible(true);
}
else{
JOptionPane.showMessageDialog(login,"用户名或密码错误!
","错误提示",JOptionPane.ERROR_MESSAGE);
}
}
});
login.add(confirm);//添加登入按钮
finalJDialogregDialog=newJDialog(login,"注册",true);
registerDialog(regDialog);
JButtonregister=newJButton("注册");
register.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
{
login.setVisible(false);
regDialog.setVisible(true);
}
}
});
login.add(register);
login.setSize(350,150);
login.setResizable(false);
login.setLocationRelativeTo(null);
login.setVisible(true);
}
3.1.3系统主界面
图5.2系统主界面
为了操作的简单明了,我们采用了Flowlayout布局和Gridlayout布局,简洁明了。
关键代码:
f.setLayout(newBorderLayout(12,2));//边界布局
f.add(p,BorderLayout.NORTH);
f.add(p1,BorderLayout.WEST);
f.add(p2);
mView.add(mRecord);//在查看菜单里面添加历史记录菜单项
mView.add(uInform);//在查看菜单里面添加用户信息菜单项
mBar.add(mView);//在菜单条上添加查看菜单
f.setJMenuBar(mBar);//在窗体上添加菜单条
p.setLayout(newFlowLayout());
p2.setLayout(newGridLayout(5,1,10,10));//网格布局参数依次为(行数,列数,宽度,高度)
p2.add(p3);
p2.add(p4);
p2.add(p5);
p2.add(p6);
p2.add(p7);
p3.setLayout(newGridLayout(1,3,10,10));
p3.add(bt4);
p3.add(bt5);
p3.add(bt6);
p4.setLayout(newGridLayout(1,5,10,10));
p4.add(bt7);
p4.add(bt8);
p4.add(bt9);
p4.add(bt0);
p4.add(bt11);
p5.setLayout(newGridLayout(1,5,10,10));
p5.add(bt12);
p5.add(bt13);
p5.add(bt14);
p5.add(bt15);
p5.add(bt16);
p6.setLayout(newGridLayout(1,5,10,10));
p6.add(bt17);
p6.add(bt18);
p6.add(bt19);
p6.add(bt10);
p6.add(bt21);
p7.setLayout(newGridLayout(1,5,10,10));
p7.add(bt22);
p7.add(bt23);
p7.add(bt24);
p7.add(bt25);
p7.add(bt26);
p.add(txt);
p1.setLayout(newGridLayout(5,1,10,10));
p1.add(bt00);
p1.add(bt);
p1.add(bt1);
p1.add(bt2);
p1.add(bt3);
3.1.4历史记录界面
图5.3.1历史记录界面
以系统时间为数据头存储,方便查询。
3.1.5用户信息界面
3.2程序设计及调试运行
利用JSP“一次编写,各处运行”的编程优点,按功能模块结构设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以达到系统功能要求。
这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,做到程序简洁清楚,尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。
运行结果演示:
初始登入界面
登入界面用于可以用来登入,或进行进入注册界面
注册界面,用来实现新用户的注册功能
登入以后的计算界面
Back是退回键,相当于把输入数的尾数去掉
C键是清空键,按下C键之后把数返回到空值
输入一个数字,然后按下二进制就把数自动转化为二进制数
使用三角函数转换角度,输入一个角度,按下所需的三角函数
1)使用sin转换,按下sin键
2)使用cos转换,按下cos键
3)使用tan转换,按下tan键
使用以10为底数的对数函数转换,输入一个数,按下log键
注:
不能输入一个负数,不然出现无结果显示
使用以e为底数的对数函数转换,输入一个数,按下len键
注:
不能输入一个负数,不然出现无结果显示
使用开方计算,输入一个数,按下sqrt键
注:
不能输入一个负数,不然出现无结果显示
使用倒数转换,输入一个数,按下1/x键
注:
不能输入0值转换倒数,不然无法显示出结果
使用求余数转换,输入一个数,然后按下mod键,再输入一个除数,最后按“=”
历史记录查询界面:
用户信息查看界面:
3.3本章小结
本章介绍了系统的具体实现和部分关键代码,界面的设计,文件的存储,各个按钮的功能实现。
第4章结束语
针对大学生学习生活中对数据的计算需求的特点,及结合市场上现有计算器的不足之处,我们小组结合现状研究出了更实用的计算器,为了方便日常生活。
经过两个礼拜的奋斗,我们小组终于将这个实用型计算器做了出来,但是由于能力有限及时间非常短暂,我们的产品还有以下不足之处:
1)界面过于朴素,美观程度不够
2)在一些较复杂计算按钮不能生动地在文件域内显示
3)有些复杂的计算方式没有加进去
4)计算器过于普通,不够生动
致谢
参考文献
[1]耿祥义.JAVA课程设计[M].北京:
清华大学出版社,2008年11月.
[2]张广彬,孟红蕊,张永宝.Java课程设计案例精编[M].北京:
清华大学出版社,2007年.
[3]杨树林,胡洁萍.JAVA语言最新实用案例教程[M].北京:
清华大学出版社,2006年1月.45-170
[4]刘新Java开发技术大全北京[M].清华大学出版社2009年11月.
[5]黄明,梁旭,周绍斌编著.Java课程设计[M]北京:
电子工业出版社,2006年
附录源代码
importjava.awt.*;
importjava.util.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.*;
importjava.io.*;
importjava.text.*;
publicclassCalculatorimplementsActionListener{
staticJTextFieldtxt;//声明文本框对象
staticJFramef;
staticJDialoglogin,addUser;//登入和注册对话框
staticdoubleyi,jieg,temp;//声明中间变量和结果变量
staticintfh=5;//选择计算模式,用于选择双目运算
staticStrings;
publicCalculator(){
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exceptione){
System.out.println("无法设置界面风格");
}
f=newJFrame("计算器");//创建一个标题名为计算器的窗口
f.setSize(420,350);//设置窗口的大小(宽度和高度)
f.setLocation(300,300);//设置在屏幕出现的默认位置
/**************************Java计算器菜单的创建*****************************/
JMenuBarmBar=newJMenuBar();//创建菜单条对象
JMenumView=newJMenu("查看(V)");//创建查看菜单
JMenuItemmRecord=newJMenuItem("历史纪录(H)");//创建历史记录菜单项
JMenuItemuInform=newJMenuItem("用户信息(U)");//创建用户信息菜单项
JPanelp=newJPanel();//创建JPanel面板(中间容器)
JPanelp1=newJPanel();
JPanelp2=newJPanel();
JPanelp3=newJPanel();
JPanelp4=newJPanel();
JPanelp5=newJPanel();