1、Java 课 程 设 计 信 101 杨 赛 2010314116-1Java课程设计报告计 算 器 设 计 与 实 现班 级 : 信 101学 号 : 2010414116姓 名 : 杨 赛指 导 老 师 : 李 红 强Java 课 程 设 计 信 101 杨 赛 2010314116-2引言Java不 依 赖 平 台 的 特 点 使 它 受 到 广 泛 的 关 注 , Java已 成 为 网 络 时 代 最 重 要 的语 言 之 一 。 Java具 有 平 台 无 关 性 , 面 向 对 象 , 多 线 程 , 安 全 , 动 态 等 特 点 。 Java语 言 和 其 他 语 言 相 比
2、 , 最 大 的 优 势 在 于 能 够 在 所 有 的 计 算 机 上 运 行 , 这 也 是 Java风 靡 全 球 的 主 要 原 因 。 Java的 面 向 对 象 编 程 是 一 种 先 进 的 编 程 思 想 , 可 以 更 容 易的 解 决 复 杂 的 问 题 。 面 向 对 象 编 程 主 要 体 现 在 以 下 三 个 方 面 : 封 装 , 继 承 , 多 态 。因 此 Java不 仅 可 以 用 来 开 发 大 型 的 桌 面 应 用 程 序 , 而 且 特 别 适 用 于 Internet的应 用 开 发 。 目 前 , Java语 言 不 仅 是 一 门 被 广 泛
3、使 用 的 编 程 语 言 , 而 且 成 为 软 件 设计 开 发 者 应 当 掌 握 的 一 门 基 础 语 言 。 Java语 言 面 向 对 象 编 程 , 并 涉 及 网 络 , 多 线程 等 重 要 的 基 础 知 识 。 因 为 很 多 新 的 技 术 领 域 都 涉 及 到 Java语 言 , 国 内 外 许 多 大学 已 经 将 Java语 言 列 入 了 本 科 教 学 计 划 , 而 IT行 业 对 Java人 才 的 需 求 也 不 断 的增 长 。 在 IT 行 业 发 达 的 国 家 , 有 将 近 60%的 软 件 开 发 人 员 使 用 Java 的 基 础 培
4、 训工 作 。 一 些 软 件 公 司 对 其 开 发 人 员 周 期 性 的 进 行 Java的 基 础 培 训 工 作 。 因 此 , 学习 和 掌 握 Java已 经 成 为 共 识 。在 学 完 了 Java程 序 设 计 基 础 课 程 后 , 我 们 这 小 组 进 行 Java课 程 设 计 的 教 程 ,在 熟 练 运 用 Eclipse环 境 下 , 来 完 成 这 个 实 用 性 计 算 器 。1.2课程设计内容实 用 型 计 算 器 的 特 点 是 通 过 用 户 注 册 , 登 录 并 实 用 计 算 器 , 计 算 过 程 对 数 据有 自 动 保 存 。 通 过 集
5、 中 式 的 信 息 数 据 库 , 将 用 户 信 息 与 使 用 情 况 都 存 储 起 来 , 达到 数 据 共 享 , 降 低 成 本 , 提 高 效 率 , 改 进 服 务 的 目 的 , 进 而 实 现 该 计 算 器 实 用 性的 优 势 。 实 用 性 计 算 器 包 含 以 下 内 容 :( 1) 计 算 功 能该 功 能 用 于 计 算 各 种 四 则 运 算 、 三 角 函 数 、 进 制 转 换 、 求 余 数 、 求 对 数 等 日常 实 用 频 率 较 高 的 功 能 。( 2) 统 计 汇 总 的 功 能该 功 能 对 计 算 器 运 行 数 据 进 行 存 储
6、, 提 供 用 户 对 数 据 查 询 。( 3) 查 询 功 能该 计 算 器 的 存 储 功 能 提 供 给 用 户 对 历 史 信 息 的 查 询 , 可 以 按 照 时 间 查 询 。第2章实用型计算器的设计这 一 章 是 实 用 型 计 算 器 的 设 计 , 从 系 统 需 求 分 析 开 始 , 介 绍 开 发 环 境 和 用 到Java 课 程 设 计 信 101 杨 赛 2010314116-3的 开 发 工 具 , 系 统 主 要 的 功 能 设 计 , 系 统 的 数 据 流 程 图 。主要功能要求本 计 算 器 针 对 在 校 大 学 生 对 计 算 的 要 求 及 市
7、 场 上 计 算 器 现 状 , 做 出 更 实 用 便捷 的 计 算 器 。 本 计 算 器 主 要 实 现 如 下 功 能 : 系 统 采 用 人 机 对 话 方 式 , 界 面 美 观 友 好 , 信 息 查 询 灵 活 、 方 便 、快 捷 、 准 确 , 数 据 存 储 安 全 可 靠 。 通 过 注 册 账 号 并 登 录 实 现 用 户 个 人 实 用 信 息 的 存 储 并 查 询 。 系 统 操 作 简 单 , 界 面 简 洁 明 了 。 数 据 计 算 自 动 完 成 , 提 高 计 算 效 率 。 用 户 信 息 存 储 清 晰 明 了 , 便 于 查 询 。 以 时 间
8、 为 数 据 存 储 开 头 , 存 储 用 户 计 算 的 数 据 。 系 统 最 大 限 度 地 实 现 了 易 维 护 性 和 易 操 作 性 。 系 统 运 行 稳 定 、 安 全 可 靠 。系统模块化分析计算器主界面布局计 算 器 主 界 面 主 要 用 了 Flowlayout布 局 和 Gridlayout布 局 的 结 合 , 更 加 简洁 明 了 。1) 注 册 模 块 流 程 图Java 课 程 设 计 信 101 杨 赛 2010314116-4添 加 注 册面 板用 户 在 登 陆 界 面 中 注册 账 号单 击 注 册 按 钮 填 写 个 人 信 息判 断 两 次 密
9、 码输 入 是 否 一 直输 出 错 误 信 息 完 成 注 册 ,返 回 登 入 界否 是图 1 : 用 户 注 册 模 块 图2) 查 询 模 块 流 程 图用 户 在 主 窗 口左 边 的 菜 单 上点 查 看 显 示 参 看 选 项选 择 查 询 选 项 显 示 查 询 数 据关 闭 查 询 界面 , 显 示 计 算图 2: 查 询 模 块 图3) 计 算 模 块 流 程 图Java 课 程 设 计 信 101 杨 赛 2010314116-5输 入 计 算 数 字 输 入 计 算 符 号进 行 计 算在 计 算 器 文 本框 中 显 示 计 算 将 计 算 结 果 存 到 历史 记
10、录 文 件 中图 3: 计 算 模 块 图实用型计算器各模块介绍各 功 能 模 块 实 现 的 功 能 为 :登 录 模 块 :对 登 录 用 户 进 行 判 断 是 否 合 法 , 方 便 对 用 户 查 询 计 算 历 史 记 录 查 询的 管 理 。 合 法 情 况 下 , 用 户 才 能 进 入 并 实 用 计 算 器 。注 册 模 块 :对 新 用 户 进 行 简 单 的 注 册 , 方 便 使 用 计 算 器 和 历 史 记 录 查 询 。计 算 模 块 :对 数 据 进 行 相 应 的 计 算 处 理 , 得 出 计 算 结 果 并 将 计 算 结 果 以 系 统 时间 为 数
11、据 开 头 存 储 到 历 史 记 录 文 件 中 。信 息 查 询 模 块 : 对 用 户 使 用 计 算 器 计 算 的 历 史 记 录 保 存 , 方 便 用 户 查 询 。表3-1各模块名称功能汇总表序 号 模 块 名 基 本 功 能1 登 录 模 块 登 录 用 户2 注 册 模 块 提 供 新 用 户 注 册 服 务2 计 算 模 块 对 数 据 进 行 计 算 , 并 将 结 果 保 存 到 历 史 记 录 文 件 中3 信 息 查 询 对 用 户 使 用 计 算 器 计 算 的 历 史 记 录 进 行 查 询 和 用 户 信 息查 询Java 课 程 设 计 信 101 杨 赛
12、 2010314116-6计算器的具体实现界 面 是 系 统 之 间 最 直 接 的 交 互 界 面 ,界 面 的 友 好 性 体 现 了 软 件 设 计 的 质 量 ,并 在 很 大 程 度 上 决 定 了 软 件 是 否 成 功 。界面设计用户登陆界面图如 图 4所 示图 4 用 户 登 录 模 块 框 图此 JavaScript函 数 的 作 用 是 检 测 用 户 登 陆 的 合 法 性 , 并 确 认 用 户 输 入 了 合 法 的 登Java 课 程 设 计 信 101 杨 赛 2010314116-7录 名 和 口 令 。注册用户界面图5注册用户界面简 单 的 用 户 信 息 注
13、 册 , 为 用 户 节 约 不 必 要 的 时 间 。系统主界面图 6 系 统 主 界 面为 了 操 作 的 简 单 明 了 , 我 们 采 用 了 Flowlayout布 局 和 Gridlayout布 局 , 简 洁 明 了 。以 系 统 时 间 为 数 据 头 存 储 , 方 便 查 询 。Java 课 程 设 计 信 101 杨 赛 2010314116-83.2程序设计及调试运行利 用 JSP“ 一 次 编 写 , 各 处 运 行 ” 的 编 程 优 点 ,按 功 能 模 块 结 构 设 计 菜 单 ,布 置各 明 细 模 块 工 作 界 面 , 编 写 各 个 模 块 的 程 序
14、 代 码 , 进 行 编 译 连 接 运 行 , 经 过 反 复调 试 修 改 , 以 达 到 系 统 功 能 要 求 。 这 个 过 程 具 有 大 量 的 工 作 量 , 应 仔 细 对 每 个 程序 细 节 进 行 分 析 思 考 、 编 写 程 序 并 调 试 , 做 到 程 序 简 洁 清 楚 , 尽 量 避 免 可 能 潜 在的 程 序 错 误 , 并 在 必 要 的 地 方 加 以 注 释 , 以 便 于 程 序 阅 读 和 修 改 。运 行 结 果 演 示 :将 文 件 A保 存 到 同 一 个 文 件 夹 中 。 利 用 javac命 令 对 文 件 进 行 编 译 , 使
15、用 命令 如 下 :Javac Calculator.java之 后 , 利 用 java命 令 执 行 程 序 , 使 用 命 令 如 下 :Java Calculator初 始 登 入 界 面登 入 界 面 用 于 可 以 用 来 登 入 , 或 进 行 进 入 注 册 界 面注 册 界 面 , 用 来 实 现 新 用 户 的 注 册 功 能登 入 以 后 的 计 算 界 面Java 课 程 设 计 信 101 杨 赛 2010314116-9第4章结束语针 对 大 学 生 学 习 生 活 中 对 数 据 的 计 算 需 求 的 特 点 , 及 结 合 市 场 上 现 有 计 算 器的 不
16、 足 之 处 , 我 们 小 组 结 合 现 状 研 究 出 了 更 实 用 的 计 算 器 , 为 了 方 便 日 常 生 活 。经 过 两 个 礼 拜 的 奋 斗 , 我 们 小 组 终 于 将 这 个 实 用 型 计 算 器 做 了 出 来 , 但 是 由于 能 力 有 限 及 时 间 非 常 短 暂 , 我 们 的 产 品 还 有 以 下 不 足 之 处 :1) 界 面 过 于 朴 素 , 美 观 程 度 不 够2) 在 一 些 较 复 杂 计 算 按 钮 不 能 生 动 地 在 文 件 域 内 显 示3) 有 些 复 杂 的 计 算 方 式 没 有 加 进 去4) 计 算 器 过 于
17、 普 通 , 不 够 生 动附录源代码importjava.awt.*;importjava.util.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;importjava.io.*;importjava.text.*;publicclassCalculatorimplementsActionListenerstaticJTextFieldtxt;/声明文本框对象staticJFramef;staticJDialoglogin,addUser;/登入和注册对话框
18、staticdoubleyi,jieg,temp;/声明中间变量和结果变量staticintfh=5;/选择计算模式,用于选择双目运算staticStrings;publicCalculator()tryUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exceptione)Java 课 程 设 计 信 101 杨 赛 2010314116-10System.out.println(“无法设置界面风格“);f=newJFrame(“计算器“);/创建一个标题名为计算器的窗口f.setSize(420
19、,350);/设置窗口的大小(宽度和高度)f.setLocation(300,300);/设置在屏幕出现的默认位置/*Java计算器菜单的创建*/JMenuBarmBar=newJMenuBar();/创建菜单条对象JMenumView=newJMenu(“查看(V)“);/创建查看菜单JMenuItemmRecord=newJMenuItem(“历史纪录(H)“);/创建历史记录菜单项JMenuItemuInform=newJMenuItem(“用户信息(U)“);/创建用户信息菜单项JPanelp=newJPanel();/创建JPanel面板(中间容器)JPanelp1=newJPane
20、l();JPanelp2=newJPanel();JPanelp3=newJPanel();JPanelp4=newJPanel();JPanelp5=newJPanel();JPanelp6=newJPanel();JPanelp7=newJPanel();txt=newJTextField(30);/创建文本框txt.setHorizontalAlignment(JTextField.RIGHT);/设置文本框的属性为右对齐JButtonbt00=newJButton(“Sin“);/创建标题名为Sin的按钮组件,进行sin函数计算JButtonbt=newJButton(“Cos“);J
21、Buttonbt1=newJButton(“Tan“);JButtonbt2=newJButton(“Log“);/创建标题名为LogJava 课 程 设 计 信 101 杨 赛 2010314116-11的按钮组件,进行底为10的对数计算函数计算JButtonbt3=newJButton(“Len“);/创建标题名为Len的按钮组件,进行底为e的对数计算函数计算JButtonbt4=newJButton(“二进制“);JButtonbt5=newJButton(“Back“);/创建标题名为Back的按钮,对于输出的数字进行退格JButtonbt6=newJButton(“C“);/初始化计
22、算器按钮,进行复位功能JButtonbt7=newJButton(“7“);JButtonbt8=newJButton(“8“);JButtonbt9=newJButton(“9“);JButtonbt0=newJButton(“/“);JButtonbt11=newJButton(“Sqrt“);/求数字的平方根按钮JButtonbt12=newJButton(“4“);JButtonbt13=newJButton(“5“);JButtonbt14=newJButton(“6“);JButtonbt15=newJButton(“*“);JButtonbt16=newJButton(“Mod“
23、);/求余数计算按钮JButtonbt17=newJButton(“1“);JButtonbt18=newJButton(“2“);JButtonbt19=newJButton(“3“);JButtonbt10=newJButton(“-“);JButtonbt21=newJButton(“1/x“);/求倒数计算按钮JButtonbt22=newJButton(“0“);JButtonbt23=newJButton(“+/-“);JButtonbt24=newJButton(“.“);JButtonbt25=newJButton(“+“);JButtonbt26=newJButton(“=“
24、);mRecord.addActionListener(this);Java 课 程 设 计 信 101 杨 赛 2010314116-12uInform.addActionListener(this);bt00.addActionListener(this);/为各个按钮添加监视器bt.addActionListener(this);bt1.addActionListener(this);bt2.addActionListener(this);bt3.addActionListener(this);bt4.addActionListener(this);bt5.addActionListen
25、er(this);bt6.addActionListener(this);bt7.addActionListener(this);bt8.addActionListener(this);bt9.addActionListener(this);bt0.addActionListener(this);bt11.addActionListener(this);bt12.addActionListener(this);bt13.addActionListener(this);bt14.addActionListener(this);bt15.addActionListener(this);bt16.a
26、ddActionListener(this);bt17.addActionListener(this);bt18.addActionListener(this);bt19.addActionListener(this);bt10.addActionListener(this);bt21.addActionListener(this);bt22.addActionListener(this);bt23.addActionListener(this);bt24.addActionListener(this);bt25.addActionListener(this);bt26.addActionLi
27、stener(this);/*计算器界面布局*/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);/在菜单条上添加查看菜单Java 课 程 设 计 信 101 杨 赛 2010314116-13f.setJMenuBar(mBar);/在窗体上添加菜单条p.set
28、Layout(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);p
29、4.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.ad
30、d(bt25);Java 课 程 设 计 信 101 杨 赛 2010314116-14p7.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);loginDialog();/启动登入界面publicvoidactionPerformed(ActionEventarg0)if(arg0.getActionCommand().equals(“历史纪录(H)“)showRecord();if(arg0.getAct
31、ionCommand().equals(“用户信息(U)“)showUseInform();if(arg0.getActionCommand().equals(“1“)if(txt.getText().equals(“0“)txt.setText(“1“);elsetxt.setText(txt.getText()+“1“);if(arg0.getActionCommand().equals(“2“)if(txt.getText().equals(“0“)txt.setText(“2“);elsetxt.setText(txt.getText()+“2“);if(arg0.getActionC
32、ommand().equals(“3“)if(txt.getText().equals(“0“)txt.setText(“3“);elsetxt.setText(txt.getText()+“3“);if(arg0.getActionCommand().equals(“4“)if(txt.getText().equals(“0“)Java 课 程 设 计 信 101 杨 赛 2010314116-15txt.setText(“4“);elsetxt.setText(txt.getText()+“4“);if(arg0.getActionCommand().equals(“5“)if(txt.g
33、etText().equals(“0“)txt.setText(“5“);elsetxt.setText(txt.getText()+“5“);if(arg0.getActionCommand().equals(“6“)if(txt.getText().equals(“0“)txt.setText(“6“);elsetxt.setText(txt.getText()+“6“);if(arg0.getActionCommand().equals(“7“)if(txt.getText().equals(“0“)txt.setText(“7“);elsetxt.setText(txt.getText
34、()+“7“);if(arg0.getActionCommand().equals(“8“)if(txt.getText().equals(“0“)txt.setText(“8“);elsetxt.setText(txt.getText()+“8“);if(arg0.getActionCommand().equals(“9“)if(txt.getText().equals(“0“)txt.setText(“9“);elsetxt.setText(txt.getText()+“9“);if(arg0.getActionCommand().equals(“0“)if(txt.getText().e
35、quals(“0“)txt.setText(“0“);elsetxt.setText(txt.getText()+“0“);if(arg0.getActionCommand().equals(“.“)if(txt.getText().indexOf(“.“)!=-1)txt.setText(txt.getText();elseJava 课 程 设 计 信 101 杨 赛 2010314116-16txt.setText(txt.getText()+“.“);if(arg0.getActionCommand().equals(“Sin“)/先输入数字后按三角函数键yi=Double.valueO
36、f(txt.getText();temp=yi;doublejie=Math.sin(yi/180*Math.PI);txt.setText(String.valueOf(jie);s=“sin(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equals(“Cos“)yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.cos(yi/180*Math.PI);txt.setText(String.value
37、Of(jie);s=“cos(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equals(“Tan“)yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.tan(yi/180*Math.PI);txt.setText(String.valueOf(jie);s=“tan(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(ar
38、g0.getActionCommand().equals(“Log“)/求10为底数对数yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.log(yi)/Math.log(10.0);txt.setText(String.valueOf(jie);s=“log(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);Java 课 程 设 计 信 101 杨 赛 2010314116-17s=null;if(arg0.getActionCommand().equals(“Len“)
39、/求e为底数的对数yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.log(yi);txt.setText(String.valueOf(jie);s=“cos(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equals(“+/-“)/正负转换if(!(txt.getText().equals(“0“)yi=Double.valueOf(txt.getText();yi=-yi;txt.setText(
40、String.valueOf(yi);if(arg0.getActionCommand().equals(“Back“)/退格inti=txt.getText().length();txt.setText(txt.getText().substring(0,i-1);if(arg0.getActionCommand().equals(“二进制“)/去二进制数yi=Double.valueOf(txt.getText();longa=(long)(yi);txt.setText(String.valueOf(Long.toBinaryString(a);s=“二进制转化(“+String.val
41、ueOf(yi)+“)=“+String.valueOf(Long.toBinaryString(a);save(s);s=null;Java 课 程 设 计 信 101 杨 赛 2010314116-18if(arg0.getActionCommand().equals(“C“)/清空txt.setText(“);yi=0;fh=5;if(arg0.getActionCommand().equals(“/“)/除法yi=Double.valueOf(txt.getText();fh=3;txt.setText(“);if(arg0.getActionCommand().equals(“*“)
42、/乘法yi=Double.valueOf(txt.getText();fh=2;txt.setText(“);if(arg0.getActionCommand().equals(“+“)/加法yi=Double.valueOf(txt.getText();fh=0;txt.setText(“);if(arg0.getActionCommand().equals(“-“)/減法yi=Double.valueOf(txt.getText();fh=1;txt.setText(“);if(arg0.getActionCommand().equals(“Mod“)/取余yi=Double.valueO
43、f(txt.getText();fh=4;txt.setText(“);Java 课 程 设 计 信 101 杨 赛 2010314116-19if(arg0.getActionCommand().equals(“Sqrt“)/平方根yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.sqrt(yi);txt.setText(String.valueOf(jie);s=“Sqrt(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActio
44、nCommand().equals(“1/x“)/求倒数doubledou=Double.valueOf(txt.getText();txt.setText(String.valueOf(1.0/dou);if(arg0.getActionCommand().equals(“=“)/等号doubleer=Double.valueOf(txt.getText();switch(fh)case0:jieg=(yi+er);s=String.valueOf(yi)+“+“+String.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break
45、;case1:jieg=(yi-er);s=String.valueOf(yi)+“-“+String.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break;case2:jieg=(yi*er);s=String.valueOf(yi)+“*“+String.valueOf(er)+“=“+String.vJava 课 程 设 计 信 101 杨 赛 2010314116-20alueOf(jieg);save(s);s=null;break;case3:jieg=(yi/er);s=String.valueOf(yi)+“/“+S
46、tring.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break;case4:jieg=(yi%er);s=String.valueOf(yi)+“%“+String.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break;fh=5;txt.setText(String.valueOf(jieg);/*登陆注册界面*/voidloginDialog()login=newJDialog();login.setTitle(“登录“);login.setLayout(newFlo
47、wLayout();ImageIconimage=newImageIcon(“logo.jpg“);/设置显示图片的绝对路径login.add(newJLabel(image);/添加图片标签login.add(newJLabel(“用户名:“);finalJTextFieldname=newJTextField(15);login.add(name);login.add(newJLabel(“密码:“);Java 课 程 设 计 信 101 杨 赛 2010314116-21finalJPasswordFieldpassword=newJPasswordField(15);password.
48、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);elseJOptionPane.showMessageDialog(login,“用户名或密码错误!“,“错误提示“,JOptionPane.ERROR_MESSAGE););login.add(confirm);/添加登入按钮finalJDialogregDialog=newJDialog(login,“注册“,true);registerDialog(regDialog);JButtonregister=newJButton(“注册“);register.addActionListene