Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx

上传人:b****1 文档编号:427020 上传时间:2023-04-28 格式:DOCX 页数:48 大小:92.07KB
下载 相关 举报
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第1页
第1页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第2页
第2页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第3页
第3页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第4页
第4页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第5页
第5页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第6页
第6页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第7页
第7页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第8页
第8页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第9页
第9页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第10页
第10页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第11页
第11页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第12页
第12页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第13页
第13页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第14页
第14页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第15页
第15页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第16页
第16页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第17页
第17页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第18页
第18页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第19页
第19页 / 共48页
Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx

《Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx》由会员分享,可在线阅读,更多相关《Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx(48页珍藏版)》请在冰点文库上搜索。

Java程序课程设计报告基于Java的计算器的设计与开发文档格式.docx

1.12月28日—12月29日:

搜集资料、查阅文献,确定选题

2.12月30日--12月31日:

需求分析,系统设计,系统功能模块完善

3.1月1日--1月3日:

编程实现系统、系统测试与修改

4.1月4日--1月6日:

课程设计报告撰写

5.1月7日--1月8日:

课程设计报告答辩

四、主要参考文献

[1]

学生(签字)

2010年12月28日

指导教师2010年12月28日

第1章引言

1.1课程设计内容

这是我组设计的计算器会有一些独特的功能,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个功能:

(1)数据计算处理功能

点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除四则运算及三角函数,开方,乘方运算;

如果输入有误时可以按C撤销后重新输入新数据,有储存修改键;

(2)查询功能

查询功能可以迅速方便地查找到相应时段的执行的操作及结果。

(3)计算器使用权限功能

对个人的操作实现口令。

用户在使用计算器前需通过登录界面登录,以保护计算器的数据安全。

未有登录资料的先进行注册。

(4)时间显示功能

在计算器上显示现在的时间,便于把握时间;

1.3任务分工

职位组长,总监整个计算器设计制作过程,制定相应计划与分布任务,负责撰写任务书,报告书,登陆注册界面的设计,整体编码框架的设定;

负责报告书的排版,创建计算器主界面的编码,计算器;

负责数据计算功能的编码,实现,计算器主界面的设计;

负责注册登录界面的功能的编码,储存与查看功能的编码,计算器整体功能的编码的完善与调试;

第2章计算器定义

计算器登陆注册界面概述

这是对计算器使用权限功能的添加,这是以后软件开发的一个重点发展方向。

用户在使用计算器前需通过登录界面登录,以保护计算器的数据安全和使用权限的设定。

未有登录资料的必须先进行注册;

计算器功能概述

一个计算器如果只有数据计算处理功能,或者是点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除四则运算是远远不够的,这太普通了,因此加入三角函数,开方,乘方运算,并且如果输入有误时可以按C撤销后重新输入新数据,有储存修改键;

最主要是加入了查询功能:

查询功能可以迅速方便地查找到相应时段的执行的操作及结果。

还有就是计算器使用权限的设定,即登陆注册界面,用户在使用计算器前需通过登录界面登录,以保护计算器的数据安全。

计算结果的储存与查看功能概述

计算结果有了,但是一般的计算器不能查询之前进行的操作和结果,不得不重新计算,这就带来了不少麻烦,我组设计制作的计算器拥有直接查看历史记录的功能,还附有各个操作的时间,便于确认;

2.2本章小结

这一章介绍了当前进销存管理系统应该具备的功能模块,并提供了市面上比较流行的进销存管理系统作为参考。

在这一章中,我们可以了解什么是进销存管理系统,当前进销存管理系统的市场需求,还有一个进销存管理系统应该的开发目标。

第3章计算器的具体实现

界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大程度上决定了软件是否成功。

3.1界面设计

1.界面设计

界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式。

3用户登陆界面图

如图3.1.1所示

图3.1.1用户登录模块框图

图3.1.2用户登录界面

loginDialog与compareUserData函数的作用是用户登录界面创建和检测用户登的合法性,并确认用户输入了合法的登录名和口令。

部分代码:

privatevoidloginDialog(){

login=newJDialog();

login.setTitle("

登录"

);

login.setLayout(newFlowLayout());

login.add(newJLabel("

用户名:

"

));

finalJTextFieldname=newJTextField(10);

login.add(name);

密码:

finalJPasswordFieldpassword=newJPasswordField(10);

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(){

regDialog.setVisible(true);

login.add(register);

login.setSize(200,130);

login.setResizable(false);

login.setLocationRelativeTo(null);

login.setVisible(true);

}

privatebooleancompareUserData(Stringname,Stringpassword){

try{

RandomAccessFileout=newRandomAccessFile("

user.dat"

rw"

Stringfname,fpassword=null;

while(out.getFilePointer()<

out.length()){

fname=out.readUTF();

out.readUTF();

fpassword=out.readUTF();

if(fname.equals(name)&

&

fpassword.equals(password))returntrue;

out.close();

}catch(IOExceptione){

e.printStackTrace();

returnfalse;

}

.2用户注册界面

图3.1.3用户注册界面

此registerDialog函数的作用就是注册界面的创建及信息的填写;

privatevoidregisterDialog(finalJDialogregDialog){

Boxbox1=Box.createVerticalBox();

box1.add(newJLabel("

JLabel.RIGHT));

box1.add(Box.createVerticalStrut(10));

性别:

密码:

JLabel.RIGHT),-1);

确认密码:

Boxbox2=Box.createVerticalBox();

finalJTextFieldnameTextField=newJTextField(10);

box2.add(nameTextField);

box2.add(Box.createVerticalStrut(8));

finalCheckboxGroupcbg=newCheckboxGroup();

Boxbox21=Box.createHorizontalBox();

finalCheckboxcb1=newCheckbox("

男"

cbg,true);

box21.add(cb1);

box21.add(newCheckbox("

女"

cbg,false));

box2.add(box21);

finalJPasswordFieldpass1=newJPasswordField(10);

box2.add(pass1);

finalJPasswordFieldpass2=newJPasswordField(10);

box2.add(pass2);

BoxbaseBox=Box.createHorizontalBox();

baseBox.add(box1);

baseBox.add(box2);

regDialog.setLayout(newFlowLayout());

regDialog.add(baseBox);

JButtonconfirm=newJButton("

确定"

JButtoncancel=newJButton("

取消"

regDialog.add(confirm);

regDialog.add(cancel);

regDialog.setSize(200,200);

regDialog.setResizable(false);

regDialog.setLocationRelativeTo(null);

confirm.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventarg0){

Stringsex=null;

if(cbg.getSelectedCheckbox()==cb1)sex="

;

elsesex="

if(saveUserData(nameTextField.getText().trim(),sex,

newString(pass1.getPassword()),newString(pass2.getPassword())))

regDialog.setVisible(false);

else

JOptionPane.showMessageDialog(regDialog,"

输入有误,请检查"

JOptionPane.ERROR_MESSAGE);

});

cancel.addActionListener(newActionListener(){

regDialog.setVisible(false);

3.1.3计算器主界面

图5.2计算器主界面

为了能够在同一页面中管理多个页面,本系统的主界面采用了框架技术。

计算功能实现

通过ActionEvent事件的处理进行计算功能的实现;

Strings=e.getActionCommand();

………………………………(省略)

}elseif(s.equals("

CE"

)){

//如果是CE则清除文本框

tResult.setText("

0"

BackSpace"

if(!

tResult.getText().trim().equals("

//如果文本框中有内容

StringBuffertemp=newStringBuffer(tResult.getText().trim());

if(temp.length()>

1){

tResult.setText(temp.delete(temp.length()-1,temp.length()).toString());

}else{

C"

//如果是C删除当前计算

tf.setText("

num1.replace(0,num1.length(),"

num2.replace(0,num2.length(),"

isExist=false;

operate='

'

π"

+Math.PI);

sin"

Stringtemp=tResult.getText().trim();

doubledtemp=Math.PI/180.0*Double.parseDouble(temp);

+Math.sin(dtemp));

save("

+"

("

+temp+"

)="

+Math.sin(dtemp));

cos"

+Math.cos(dtemp));

+Math.cos(dtemp));

tan"

+Math.tan(dtemp));

+Math.tan(dtemp));

log"

doubledtemp=Double.parseDouble(temp);

+Math.log10(dtemp));

+Math.log(dtemp));

MC"

//如果是MC则清除缓冲区

Stringtemp="

memory.replace(0,memory.length(),temp);

bM.setText("

"

MR"

//如果按键为MR则恢复缓冲区的数到文本框

tResult.setText(memory.toString());

MS"

//如果按键为MS则将文本框的数存入缓冲区

Strings1=tResult.getText().trim();

memory.replace(0,memory.length(),s1);

M"

M+"

//如果按键为MS则将文本框值与缓冲区的数相加但不显示结果

Stringtemp1=tResult.getText().trim();

doubledtemp=Double.parseDouble(temp1);

Stringtemp2=memory.toString();

if(temp2.length()==0)temp2="

dtemp+=Double.parseDouble(temp2);

temp1=String.valueOf(dtemp);

memory.replace(0,memory.length(),temp1);

1/x"

//如果按键为1/x则将文本框中的数据为它的倒数

+1/dtemp);

sqrt"

//如果按键为sqrt则将文本框中的内容求平方根

+Math.sqrt(dtemp));

+Math.sqrt(dtemp));

x^2"

)){

//如果按键为x^2则将文本框中的内容求平方

doubledtemp=Double.parseDouble(temp)*Double.parseDouble(temp);

+dtemp);

save(temp+"

^2="

+/-"

doubledtemp=-Double.parseDouble(temp);

if(dtemp!

=0)tResult.setText("

+"

)||s.equals("

-"

*"

/"

//加减乘除按键求结果

if(operate=='

){

num1=num1.replace(0,num1.length(),tResult.getText().trim());

isClear=true;

tf.setText(num1.toString()+s);

}elseif(!

isExist){

num2=num2.replace(0,num2.length(),tResult.getText().trim());

Stringrlt=null;

doublea=Double.parseDouble(num1.toString().trim());

doubleb=Double.parseDouble(num2.toString().trim());

switch(operate){

case'

+'

:

rlt="

+(a+b);

break;

-'

+(a-b);

+(a*b);

/'

+(a/b);

}

tResult.setT

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2