fname=out.readUTF();
out.readUTF();
fpassword=out.readUTF();
if(fname.equals(name)&&fpassword.equals(password))returntrue;
}
out.close();
}catch(IOExceptione){
e.printStackTrace();
}
returnfalse;
}
3.1.2用户注册界面
如图3.1.3所示
图3.1.3用户注册界面
此registerDialog函数的作用就是注册界面的创建及信息的填写;
部分代码:
privatevoidregisterDialog(finalJDialogregDialog){
Boxbox1=Box.createVerticalBox();
box1.add(newJLabel("用户名:
",JLabel.RIGHT));
box1.add(Box.createVerticalStrut(10));
box1.add(newJLabel("性别:
",JLabel.RIGHT));
box1.add(Box.createVerticalStrut(10));
box1.add(newJLabel("密码:
",JLabel.RIGHT),-1);
box1.add(Box.createVerticalStrut(10));
box1.add(newJLabel("确认密码:
",JLabel.RIGHT));
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);
box2.add(Box.createVerticalStrut(8));
finalJPasswordFieldpass1=newJPasswordField(10);
box2.add(pass1);
box2.add(Box.createVerticalStrut(8));
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(){
publicvoidactionPerformed(ActionEventarg0){
regDialog.setVisible(false);
}
});
}
3.1.3计算器主界面
图5.2计算器主界面
为了能够在同一页面中管理多个页面,本系统的主界面采用了框架技术。
3.2计算功能实现
通过ActionEvent事件的处理进行计算功能的实现;
部分代码:
publicvoidactionPerformed(ActionEvente){
Strings=e.getActionCommand();
………………………………(省略)
}elseif(s.equals("CE")){
//如果是CE则清除文本框
tResult.setText("0");
}elseif(s.equals("BackSpace")){
if(!
tResult.getText().trim().equals("0")){
//如果文本框中有内容
StringBuffertemp=newStringBuffer(tResult.getText().trim());
if(temp.length()>1){
tResult.setText(temp.delete(temp.length()-1,temp.length()).toString());
}else{
tResult.setText("0");
}
}
}elseif(s.equals("C")){
//如果是C删除当前计算
tResult.setText("0");
tf.setText("");
num1.replace(0,num1.length(),"0");
num2.replace(0,num2.length(),"0");
isExist=false;
operate='';
}elseif(s.equals("π")){
tResult.setText(""+Math.PI);
}elseif(s.equals("sin")){
Stringtemp=tResult.getText().trim();
doubledtemp=Math.PI/180.0*Double.parseDouble(temp);
tResult.setText(""+Math.sin(dtemp));
save("sin"+"("+temp+")="+Math.sin(dtemp));
}elseif(s.equals("cos")){
Stringtemp=tResult.getText().trim();
doubledtemp=Math.PI/180.0*Double.parseDouble(temp);
tResult.setText(""+Math.cos(dtemp));
save("cos"+"("+temp+")="+Math.cos(dtemp));
}elseif(s.equals("tan")){
Stringtemp=tResult.getText().trim();
doubledtemp=Math.PI/180.0*Double.parseDouble(temp);
tResult.setText(""+Math.tan(dtemp));
save("tan"+"("+temp+")="+Math.tan(dtemp));
}elseif(s.equals("log")){
Stringtemp=tResult.getText().trim();
doubledtemp=Double.parseDouble(temp);
tResult.setText(""+Math.log10(dtemp));
save("log"+"("+temp+")="+Math.log(dtemp));
}elseif(s.equals("MC")){
//如果是MC则清除缓冲区
Stringtemp="0";
memory.replace(0,memory.length(),temp);
bM.setText("");
}elseif(s.equals("MR")){
//如果按键为MR则恢复缓冲区的数到文本框
tResult.setText(memory.toString());
}elseif(s.equals("MS")){
//如果按键为MS则将文本框的数存入缓冲区
Strings1=tResult.getText().trim();
memory.replace(0,memory.length(),s1);
bM.setText("M");
}elseif(s.equals("M+")){
//如果按键为MS则将文本框值与缓冲区的数相加但不显示结果
Stringtemp1=tResult.getText().trim();
doubledtemp=Double.parseDouble(temp1);
Stringtemp2=memory.toString();
if(temp2.length()==0)temp2="0";
dtemp+=Double.parseDouble(temp2);
temp1=String.valueOf(dtemp);
memory.replace(0,memory.length(),temp1);
bM.setText("M");
}elseif(s.equals("1/x")){
//如果按键为1/x则将文本框中的数据为它的倒数
Stringtemp=tResult.getText().trim();
doubledtemp=Double.parseDouble(temp);
tResult.setText(""+1/dtemp);
}elseif(s.equals("sqrt")){
//如果按键为sqrt则将文本框中的内容求平方根
Stringtemp=tResult.getText().trim();
doubledtemp=Double.parseDouble(temp);
tResult.setText(""+Math.sqrt(dtemp));
save("sqrt"+"("+temp+")="+Math.sqrt(dtemp));
}elseif(s.equals("x^2")){
//如果按键为x^2则将文本框中的内容求平方
Stringtemp=tResult.getText().trim();
doubledtemp=Double.parseDouble(temp)*Double.parseDouble(temp);
tResult.setText(""+dtemp);
save(temp+"^2="+Math.sin(dtemp));
}elseif(s.equals("+/-")){
Stringtemp=tResult.getText().trim();
doubledtemp=-Double.parseDouble(temp);
if(dtemp!
=0)tResult.setText(""+dtemp);
}elseif(s.equals("+")||s.equals("-")||s.equals("*")||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;
case'-':
rlt=""+(a-b);break;
case'*':
rlt=""+(a*b);break;
case'/':
rlt=""+(a/b);break;
}
tResult.setText(rlt);
tf.setText(""+num1.toString()+operate+num2.toString());
num1.replace(0,num1.length(),rlt);
isClear=true;
}
operate=s.charAt(0);
}elseif(s.equals("=")){
//按键=显示结果
if(!
isExist)
num2=num2.replace(0,num2.length(),tResult.getText().trim());
isExist=true;
if(ope