




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安建筑科技大学课程设计 论文 第 1 页 共 41 页 目目 录录 第 1 章 引 言 2 第 2 章 需求分析 3 2 1 产品可行性分析 3 2 2 产品功能需求分析 5 2 2 电子邮件系统收发邮件的过程 5 第 3 章 总体设计 7 3 1 本系统的总体架构模型 7 3 2 系统模块的划分 8 第 4 章 详细设计 9 4 1 接收邮件模块 9 4 2 发送和回复邮件模块 9 4 3 邮件处理模块 10 4 4 界面实现的流程图 10 4 5 邮件发送过程的流程图 11 4 6 邮件接收流程 13 4 7 用户鉴权和客户端配置信息流程 15 4 8 阅读邮件流程 16 第 5 章 系统功能测试 18 5 1 登陆界面及邮箱账户设置界面测试 18 5 2 主界面测试 18 5 3 发送界面与收件箱界面测试 18 5 4 阅读邮件界面测试 20 第 6 章 结论与展望 21 6 1 结论 21 6 2 展望 21 致 谢 22 参考文献 23 附录 24 西安建筑科技大学课程设计 论文 第 2 页 共 41 页 第第 1 1 章章 引引 言言 电子邮件 简称 E mai1 又称电子信箱 电子邮政 表示通过电子通讯系 统进行信件的书写 发送和接收 它是继电话 电报和传真之后最快捷 最方 便的通讯工具 是 20 世纪人类最伟大的发明 早在互联网流行很久以前 电 子邮件就已经存在 它是在主机 多终端的主从式体系中通过一台计算机终端向 另一台计算机终端传送文本信息的相对简单方法发展起来的 也就是人们常说 的 C S 架构 如今 电子邮件已经将人与人越来越紧密地联系在一起 成为人 们生活的一部分 通过电子邮件系统 人们可以用非常低廉的价格 以非常快 速的方式 与世界上任何一个网络用户联系 而电子邮件的形式也从原来的纯 文本方式变成现在的 HTML 页面并加载附件的多彩形式 同时 人们还可以得 到大量免费的新闻 专题邮件 并实现轻松的信息搜索 这是任何传统的方式 也无法相比的 电子邮件的使用简易 投递迅速 收费低廉 易于保存 全球 畅通无阻 使得它被广泛地应用 电子邮件收发系统基于 Client Server 模式 主要功能通过收发电子邮件客户端程序实现 收发电子邮件需要标准的会话协 议支持 SMTP SimpleMailTransferProtocol 用于发送电子邮件 POP3 协议 PostOfficeProtocol 用于接收电子邮件 电子邮件使人们的交流方式得到 了极大的改变 人们平时所发送或接收的电子邮件 并不是由本机来实现 SMTP 协议与 POP3 协议 电子邮件内容全是存储在相应服务商的 POP3 服务器上 用户必须要登录到相应的服务器上才能进行浏览 查询或者删除操作 但是 在网络繁忙或大家集中传输数据的时候 人们可能收不到消息或者打开很慢 为 了解决这一难题 我们开发了电子邮件收发系统 将邮件服务器上的内容保存 到本地机器上 这样即使在网络断开的情况下 也能查询已存在本地机器上的 邮件 西安建筑科技大学课程设计 论文 第 3 页 共 41 页 第第 2 2 章章 需求分析需求分析 2 12 1 产品可行性分析产品可行性分析 整个电子邮件系统由电子邮件服务器端和电子邮件客户端组成 其工作过 程及一些涉及到的协议如图 2 1 所示 图 2 1 电子邮件系统工作过程图 其中 SMTP 是因特网电子邮件系统重要的应用层协议 它使用由 TCP 提供的 可靠的数据传输服务把邮件消息从发信人邮箱所在邮件服务器传送到收信人邮 箱所在邮件服务器 SMTP 是客户 服务器应用模式 由发信人的邮件服务器执 行的客户端和收信人的邮件服务器执行的服务器端组成 SMTP 的客户端和服务 器端同时运行在每个邮件服务器上 当一个邮件服务器向其它邮件服务器发送 邮件消息时 它是作为 SMTP 客户端 当一个邮件服务器从其它邮件服务器接收 邮件消息时 它是作为 SMTP 服务器端 SMTP 规范定义在 RFC 821 中 它的作用是把邮件消息从发信人的邮件服务 器传送到收信人的邮件服务器 SMTP 限制所有邮件消息的信体必须是简单的 7 位 ASCII 字符格式 这个限制使得二进制多媒体数据在由 SMTP 传送之前必须编 码成 7 位 ASCII 文本 SMTP 传送完毕之后 再把相应的 7 位 ASCII 文本邮件消 息解码成二进制数据 POP3 是 RFC 1939 中定义的一个简单的邮件访问协议 其功能有限 POP3 开始于用户代理打开一个到 POP3 服务器端口号 110 的 TCP 连接 POP3 服务器 西安建筑科技大学课程设计 论文 第 4 页 共 41 页 与邮件服务器运行在相同的服务器主机上 前者从用户的邮箱中读取并可能删 除邮件消息 后者往用户的邮箱中写入邮件消息 TCP 连接建立好之后 POP3 依次经历授权认证 处理和更新 3 个阶段 在授权阶段 用户代理分别发出一 个用户名和一个口令以认证下载邮件消息的用户 在处理阶段 用户代理获取 邮件消息 并可以标记待删除的邮件消息或去掉这些标记 获取邮件统计信息 更新阶段发生在用户代理发出 quit 命令以结束当前 POP3 会话之后 期间 POP3 服务器删除己加过删除标记的邮件消息 在 POP3 会话期间 用户代理发出命令 POP3 服务器则对每个命令响应以一个应答 可能的应答有两个 指出刚才的命 令执行成功的 OK 有时后跟一个解释性消息 和指出刚才的命令执行有误的 ERR 一个邮件的收发就是通过 SMTP 传递消息到对端邮件服务器 对端客户使用 POP3 协议从服务器上获得邮件的过程 在本设计中 采用自己编写基于 socket 的方法 来解析协议 进行邮件收发 同时 在进行邮件收发 需要提供基于 BASE64 加密解密的鉴权信息 其中 Base64 是一种很简单的编码转换 对于待编码数据 以 3 个字节为单位 依次 取 6 位数据并在前面补上两个 0 形成新的 8 位编码 由于 3 8 4 6 这样 3 个字节的输入会变成 4 个字节的输出 长度上增加了 1 3 上面的处理还不能 保证得到的字符都是可见字符 为了达到此目的 Base64 制定了一个编码表 进行统一的转换 见表 2 1 码表的大小为 26 64 这也是 Base64 名称的由来 由于编码是以 3 个字节为单位 当剩下的字符数量不足 3 个字节时 则应使用 0 进行填充 相应地 输出字符则使用 占位 因此编码后输出的文本末尾 可能会出现 1 至 2 个 表 2 1 Base64 编码表 值编码值编码值编码值编码值编码值编码值编码值编码 0A8I16Q24Y32g40o48w564 1B9J17R25Z33h41p49x575 2C10K18S26a34i42q50y586 3D11L19T27b35j43r51z597 4E12M20U28c36k44s520608 5F13N21V29d37l45t531619 6G14O22W30e38m46u54262 7H15P23X31f39n47v55363 西安建筑科技大学课程设计 论文 第 5 页 共 41 页 BASE64 的加密解析 SUN 公司有自己内部专用的 API 该 API 位于 JRE LIB 下 但是该 API 并没有 javadoc 属于不推荐使用的方法 将在后续 JDK 版本 中被剔除 因为本设计根据 Base64 编码表 自行编写 Base64 加密解密方法 分析电子邮件传输过程中的协议和加密算法后 本设计进行自主开发是可 行的 2 22 2 产品功能需求分析产品功能需求分析 电子邮件系客 户端 发送邮件 阅读邮件 账户设置 保存邮件 登陆验证 接收邮件 图 2 2 系统总体功能图 其中本设计实现的是一个电子邮件客户端 类似于 Outlook 有用户邮箱 账户设置 登陆验证 接收邮件 阅读邮件 保存邮件 发送邮件等功能 发送邮件 根据用户设置的公网邮箱账户或者一个公网不存在的自己私人 域内的符合邮箱命名规范的邮箱账户 可实现对公网邮箱和本客户端 比如新 浪 QQ 163 的邮件收发 若邮箱账户是自己随机设置的账户 则不可以向除 本客户端以外的邮件服务器发送邮件 接收邮件 接收来自本客户端私人邮箱发来的邮件 在接收邮件的同时 将对邮件进行默认保存 接收完成后 点击即可实现对邮件的阅读 登陆验证 客户端在启动的时候 会对用户的账户信息与客户端内部保存 的信息 进行鉴权 防止旁人使用客户端乱发垃圾邮件 账号设置 这个功能主要是实现对邮件发送代理的选择 决定发送邮件功 能的能力 2 22 2 电子邮件系统收发邮件的过程电子邮件系统收发邮件的过程 西安建筑科技大学课程设计 论文 第 6 页 共 41 页 图2 3 收发邮件过程图 1 发信人调用用户代理来编辑要发送的邮件 用户代理用 SMTP 把邮 件传送给发送端邮件服务器 2 发送端邮件服务器将邮件放入邮件缓存队列中 等待发送 3 运行在发送端邮件服务器的 SMTP 客户进程 发现在邮件缓存中有 待发送的邮件 就向运行在接收端邮件服务器的 SMTP 服务器进程发起 TCP 连 接的建立 4 TCP 连接建立后 SMTP 客户进程开始向远程的 SMTP 服务器进程 发送邮件 当所有的待发送邮件发完了 SMTP 就关闭所建立的 TCP 连接 5 运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后 将邮 件放入收信人的用户邮箱中 等待收信人在方便时进行读取 收信人在打算收信时 调用用户代理 使用 POP3 或 IMAP 协议将自己 的邮件从接收端邮件服务器的用户邮箱中的取回 如果邮箱中有来信的 西安建筑科技大学课程设计 论文 第 7 页 共 41 页 第第 3 3 章章 总体设计总体设计 3 13 1 本系统的总体架构模型本系统的总体架构模型 主界面 用户鉴权和客户 端配置信息 主界面加载 时 被调用 登陆界面 账号界面 发送邮件界面 接收邮件界面 阅读邮件界面 登陆鉴权 发送邮 件 邮箱账号设置 发送邮件 线程 邮件接收 线程 用户信息模型 账号信息模型 启动SMTP模型 BASE64 加密 未读邮件模型 邮件接收 保存方法 邮件保存 到文件 图3 1 系统的总体模型图 图 3 1 是该客户端的系统架构图 图中包含了六个图形用户界面 两个邮 件接收和发送线程 以及一些相关的辅助方法和数据模型 其中 各个图形用户界面是为了方便用户使用该客户端而设计 用户鉴权和客户端配置信息 是主界面在加载时 针对每个特定的用户 加载其个人设置 用户信息模型和账户信息模型用来对用户进行登录验证 设置邮箱账户时 的信息进行封装 发送邮件线程等待来自客户的发送请求 收到请求后 首先根据 SMTP 模型 和用户输入信息 封装一个 SMTP 消息对象 接着对用户账户和密码进行 BASE64 加密 最后将封装好的信息对象 交由发送邮件方法进行发送 邮件接收线程是客户端加载成功后 就开始监听 25 端口 当有邮件信息发 西安建筑科技大学课程设计 论文 第 8 页 共 41 页 送到来时 将接收到的信息封装到一个未读邮件模型中去 然后将该模型传递 给邮件接收和保存方法 该方法将会对邮件在硬盘中进行保存 并更新客户端 配置信息中得未读邮件信息 3 23 2 系统模块的划分系统模块的划分 按照本系统的总体功能划分 可以将这个电子邮件客户端分成 5 大模块 首先是登录模块 作为验证需要 其次是接收邮件模块 该模块负责邮件的接 收 再次是发送模块 该模块负责该对方发送邮件 接着是邮件处理模块 该 模块负责邮件的阅读 保存等操作 然后是邮件账户的管理 该操作负责设置 客户端对公网的身份标识 图 3 2 给出了本系统的模块体系 电子邮件客户 端 登录模块 接收邮件模 块 发送邮件模 块 邮件账户管 理 邮件处理模 块 图3 2 系统模块体系图 西安建筑科技大学课程设计 论文 第 9 页 共 41 页 第第 4 4 章章 详细设计详细设计 4 14 1 接收邮件模块接收邮件模块 接收邮件模块主要由接收邮件线程监听端口完成对邮件的接收并对其进行 保存和刷新主界面 包括下图中的几个部分 1 接收邮件线程 一个邮件系统最基本的功能是能够接受发送的邮件 为了可以同时接收多个邮件 保持并发性 本设计使用 java 多线程的功能 设 计一个可以多线程的接收邮件线程 2 保存邮件 接收到对方的邮件以后 必须先对邮件进行保存备份 然后将邮件信息封装到未读邮件模型后 再显示出来 可以隐去一些不必要的 内容 只显示邮件关键信息给用户 3 刷新界面 当客户端收到一个邮件后 必须能够实时刷新主界面以 提醒用户 接收邮件和附件模块的图示 接收邮件模块 接收邮件 保存邮件 刷新界面 图4 1 接收邮件和附件模块图 4 24 2 发送和回复邮件模块发送和回复邮件模块 发送邮件模块主要由发送邮件线程文件完成 包括图中的几个部分 1 编写新邮件 该部分也是电子邮件系统中最基本的功能 2 发送新邮件 在编写完成新邮件后 电机该功能将邮件内容发送给 对方 发送邮件模块的图示 西安建筑科技大学课程设计 论文 第 10 页 共 41 页 发送邮件模块 编写新邮件 发送新邮件 图4 2 发送邮件模块图 4 34 3 邮件处理模块邮件处理模块 邮件处理模块主要对邮件进行阅读和保存功能 包括图中的几个部分 1 显示邮件内容 新建一个界面显示用户选择的邮件内容 2 保存邮件 在接收到邮件的同时 默认自动保存邮件 3 显示错误信息 在出现一些登录错误 删除错误 发送错误时 将 显示不同的错误信息提示用户 邮件处理模块的图示 邮件处理模块 显示邮件内容 显示错误信息 自动保存邮件 图4 3 邮件处理模块图 4 44 4 界面实现的流程图界面实现的流程图 如上所述 本设计的邮件客户端需要六个不同的界面 都采用 java swing 技术实现 java swing 提供丰富的图形组件和多样的布局方式 以及事件注册 处理机制 在本设计中使用 java swing 技术实现这些界面 其流程如图 4 4 所 示 西安建筑科技大学课程设计 论文 第 11 页 共 41 页 开始 结束 声明控件对象 声明面板容器对象 初始化面板容器对 象并设置布局方式 初始化控件对象并 注册事件 将控件添加到面板 对象中 图 4 4 界面实现流程图 其中的部分代码如下 buttonPanel add newButton buttonPanel add recButton buttonPanel add recboxButton buttonPanel add draftButton buttonPanel add setButton jFrame setBounds 0 0 SCREEN WIDTH 3 4 SCREEN HEIGHT 3 5 jFrame setBackground Color WHITE jFrame add buttonPanel new BorderLayout WEST jFrame add tab new BorderLayout CENTER jFrame setVisible true 4 54 5 邮件发送过程的流程图邮件发送过程的流程图 邮件发送过程需要使用 SMTP 协议 因此在本设计中 将 SMTP 协议的各 个字段封装到了一个对象中去 便于维护和管理 邮件发送的实现过程如图 4 5 所示 其部分实现代码如下 String destip getEmailNameInfo getusername username replace socket new Socket destip PORT BufferedReader br getReader socket PrintWriter pw getWriter socket sendAndReceive null br pw 西安建筑科技大学课程设计 论文 第 12 页 共 41 页 if sendResult equals FAILED JOptionPane showMessageDialog MainUI jFrame 连接邮件服 务器失败 null 0 return sendAndReceive smtp getMail br pw if sendResult equals FAILED return sendAndReceive smtp getRept br pw if sendResult equals FAILED return sendAndReceive smtp getData br pw if sendResult equals FAILED return sendAndReceive message getFrom r n message getTo r n me ssage getData br pw if sendResult equals FAILED JOptionPane showMessageDialog MainUI jFrame 邮件发送失 败 null 0 return sendAndReceive smtp getQuit br pw if sendResult equals FAILED JOptionPane showMessageDialog MainUI jFrame 邮件发送成 功 null 0 return 开始 结束 启动一个发送线程 填充SMTP对象 获得对方邮箱服务器地 址 对邮箱账号和密码进行 BASE64加密 新建Socket对象 连接 对方邮箱服务器的25端 口 是否成功 邮件发送过程 错误提示对话框 是 否 填充Message对象 图 4 5 邮件发送过程 其中邮件发送过程分为如下几步 1 发送 HELO 命令 并等到回复 若回复争取 则发送下一个命令 西安建筑科技大学课程设计 论文 第 13 页 共 41 页 若失败停止发送 下面步骤皆是如此处理 2 发送 EHLO 命令 3 发送 auth login 命令 进行用户名和密码的鉴权请求 4 发送 BASE64 加密后的用户名 5 发送 BASE6 加密后的密码 6 若鉴权成功发送 mail from 命令 7 发送 rcpt to 命令 告知服务器邮件的接收方 8 发送 data 命令 告知服务器接下来要发送邮件内容 9 在本设计中邮件内容被封装到一个 Message 模型中 在本步中 发 送的是该模型的一个对象 10 在收到成功响应后 发送 结束发送过程 4 64 6 邮件接收流程邮件接收流程 邮件接收流程是该设计的基本功能之一 其使用的仍是 SMTP 协议流程 在 本设计中 针对收到的邮件会将其封装到一个未读邮件的对象中去 具体流程 如图 4 6 所示 其部分代码如下所示 开始 结束 启动接收邮件线程 收到对方请求 发送收 到响应码 接收对方邮件信息 建立Socket连接 发送响应给对方 是否成功 保存邮件到本地磁盘 错误提示对话框 是 否 刷新主界面 图 4 6 邮件接收流程 西安建筑科技大学课程设计 论文 第 14 页 共 41 页 while request br readLine null if request contains mail from pw println 250 sender ok continue else if isMAILFROM pw println 500 command not recognized continue if request contains rcpt to pw println 250 recipient ok continue else if isRCPTTO pw println 500 command not recognized continue if request contains data isDATA true pw println 354 enter content continue else if isDATA pw println 500 command not recognized continue if isDATA stringBuffer append request stringBuffer append if stringBuffer toString endsWith isMessage true content stringBuffer toString substring 0 stringBuffer toString length 1 System out println content is content pw println 250 ok if request contains quit pw println 221 getEmailNameInfo getHostname e mailConfig getEmailCFG getEmailnam e return private PrintWriter getWriter Socket socket throws IOException TODO Auto generated method stub OutputStream out socket getOutputStream return new PrintWriter out true 西安建筑科技大学课程设计 论文 第 15 页 共 41 页 private BufferedReader getReader Socket socket InputStream is null try is socket getInputStream catch IOException e e printStackTrace BufferedReader br new BufferedReader new InputStreamReader is return br 4 74 7 用户鉴权和客户端配置信息流程用户鉴权和客户端配置信息流程 该模块是在主界面加载前 针对不同的用户 加载相应的设置 其包含保 存用户信息流程 更改用户信息流程 保存邮箱账户信息流程 更改邮箱账户 信息流程 获取收到的邮件信息流程 设置邮件是否已读流程 其中这三组流 程处理方式一致 获取和更改用户信息流程如图 4 7 4 8 所示 部分处理代码 如下 开始 结束 读取本地XML用户信息 文件 使用JDOM解析该文件 返回用户信息配置模型 对象 将解析到的信息填充到 用户信息配置模型中去 开始 结束 读取本地XML用户信息文件 使用JDOM解析该文件 保存更改到本地XML文件 使用传入的用户信息配置模 型对象相应字段设置解析到 的文件字段 4 7 获取用户信息流程 4 8 更改用户信息流程图 protected User getUserProfile User user new User SAXBuilder builder new SAXBuilder try Document doc builder build USERFILE Element rootElement doc getRootElement 西安建筑科技大学课程设计 论文 第 16 页 共 41 页 String username rootElement getChild USERNAME getText user setUsername username String password rootElement getChild PWD getText user setPassword password boolean login new Boolean rootElement getChild LOGIN getText user setLogin login catch Exception e e printStackTrace return user protected void setUserProfile User user SAXBuilder builder new SAXBuilder try Document doc builder build USERFILE Element rootElement doc getRootElement rootElement getChild USERNAME setText user getUsername rootElement getChild PWD setText user getPassword rootElement getChild LOGIN setText String valueOf user isLogin XMLOutputter fmt new XMLOutputter FileWriter writer new FileWriter USERFILE org jdom output Format f org jdom output Format getPrettyFormat fmt setFormat f fmt output doc writer writer close catch Exception e e printStackTrace 4 84 8 阅读邮件流程阅读邮件流程 邮件阅读是邮件系统的最基本功能之一 在本设计中 邮件阅读流程如图 4 9 所示 其代码如下 String isread String valueOf array get index 1 isRead String name array get index 1 getName int length name length int sindex name indexOf user name substring 0 sindex String rest name substring sindex 1 length int index2 rest indexOf topic rest substring 0 index2 File file new File name txt 西安建筑科技大学课程设计 论文 第 17 页 共 41 页 in new DataInputStream new BufferedInputStream new FileInputStream file StringBuffer sb new StringBuffer String string null while string in readLine null sb append string string sb toString BaseMain setUnReadMail user showcontent string 开始 结束 读取本地XML未读邮件信息 文件 使用JDOM遍历解析该文件 遍历列表获取模型数据 并 设置到相应控件显示 将解析到的结果保存到未读 邮件模型中 将邮件模型添加到一个列表 图 4 9 邮件阅读流程 西安建筑科技大学课程设计 论文 第 18 页 共 41 页 第第 5 5 章章 系统功能测试系统功能测试 5 15 1 登陆界面及邮箱账户设置界面测试登陆界面及邮箱账户设置界面测试 界面模块主要使用 java swing 技术完成 其中包括主界面 登陆界面 设 置账户界面 阅读邮件界面 发送邮件界面等几部分 登陆选择指定邮件用户和密码 在本系统中提供了一个用户名和密码均为 admin 的默认用户进行登录 使用默认用户登录后 用户可以更改登录账户 必须使用正确的用户名和密码才可以登录 不然无法进入客户端 登录界面的 效果图 图5 1 登录界面 设置账户界面用来标识对公网的客户端身份 只有设置正确存在的公网账 户才可以使用本客户端对外发送邮件 设置账户界面效果图 图5 2 邮箱账户设置界面 5 25 2 主界面测试主界面测试 主界面是客户端与用户交互的直接体现 它调用相应的界面和方法响应用 户的操作 主界面见图5 3 西安建筑科技大学课程设计 论文 第 19 页 共 41 页 图 5 3 主界面 5 35 3 发送界面与收件箱界面测试发送界面与收件箱界面测试 发送界面是发送邮件时的操作控制界面 主要有设置接收人 抄送 密送 邮件主题 邮件内容等5部分组成 发送界面见图5 4 图 5 4 发送邮件界面 西安建筑科技大学课程设计 论文 第 20 页 共 41 页 收件箱界面是登陆客户端时由邮箱配置方法将收到邮件信息设置在它下面 在主界面选择它后 即可查看客户端收到的邮件信息情况 收件箱界面见图 5 5 图 5 5 收件箱界面 5 45 4 阅读邮件界面测试阅读邮件界面测试 阅读邮件界面是根据在收件箱界面的列表 选择一条未读邮件后 进行未 读邮件内容的显示 阅读邮件界面见图5 6 图 5 6 阅读邮件界面 西安建筑科技大学课程设计 论文 第 21 页 共 41 页 第第 6 6 章章 结论与展望结论与展望 6 16 1 结论结论 系统主要实施对于邮件系统中邮件及邮件夹的管理 系统主要实现了对于邮件的发送 接收 删除 邮件夹的管理等功能 6 26 2 展望展望 系统开发是需要一个不断完善的过程 通过不断测试 检测出更多问题 并不断完善 然而由于时间的缘故 并不能进行逐步测试 因此仍然有很多地 方需要改进 现在归纳如下 有时候邮件太长 或者是表格 Word 文档 一正 文方式发送不太方便 这样可以引用一个附件功能 及那个这些表格或 Word 文 档以附件的形式上传 然后发送 在扩充一下 提供可以发送多个邮件的功能 但本系统未实现此功能 西安建筑科技大学课程设计 论文 第 22 页 共 41 页 致致 谢谢 感谢我的指导老师彭晓天老师 本次论文的每个细节和每个数据 都离不 开他的细心指导 无论在理论上还是在实践中 彭老师都给了我很大的帮助 使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助 另外 在系统开发过程中同学也给予我很大的帮助 帮助解决了不少的难 点 使得系统能及时开发完成 这里一并表示感谢 在论文即将完成之际 我的心情无法平静 从开始进入课题到论文的顺利 完成 有许多可敬的师长 同学 朋友给了我无私的帮助 在这里请接受我诚 挚的谢意 西安建筑科技大学课程设计 论文 第 23 页 共 41 页 参考文献参考文献 1 张尧学等编著 计算机网络与Internet教程 第三版 北京 清华大学出 版社 2001 2 Computer Networks Version Prentice Hall International Inc 1998 计算机网络 第四版 清华大学出版社影印版 2001 3 Internetworking with TCP IP Vol 1 Vol 2 Vol 3 Prentice Hall International Inc 1995 TCP IP网络互连技术 卷1 卷2 卷3 清华大学 出版社影印版 1998 4 谢希仁主编 计算机网络 第三版 北京 电子工业出版社 2000 西安建筑科技大学课程设计 论文 第 24 页 共 41 页 附附 录录 1 1 主界面主要代码 主界面主要代码 public class MainUI extends BaseMain SuppressWarnings unused private static String title private User user private boolean isFirstLogin false public static JFrame jFrame public static final String WELCOME WORD01 欢 迎 使 用 邮 件 客 户 端 WELCOME WORD02 作 者 党 西 娇 WELCOME WORD03 班 级 通 信 901 public static final String NEW 写 信 RECEIVED 收 信 RECBOX 收件箱 DRAFT 草 稿 SET 设 置 public static final int BUTTON NUMBER 20 BUTTON WIDTH 30 BUTTON HEIGHT 20 BUTTON START POINT 0 public static int DRAFT EMAIL 0 public static JButton newButton recButton recboxButton contactButton unreadButton raftButton sendButton deleteButton rabishboxButton setButton public static JTabbedPane tab public static JPanel buttonPanel sendPanel public Color colorStyle new Color Color BLACK Color BLUE Color CYAN Color DARK GRAY Color GRAY Color GREEN Color LIGHT GRAY Color MAGENTA Color ORANG E Color PINK Color YELLOW Color RED public JLabel start01 start02 start03 public JPanel labelPanel public static final String DEFAULT FONT 宋体 public static int UNREADNUMBER getUnreadCounter BaseMain getUnReadMailNumber public static int DELETEDNUMBER 1 private static boolean flag false private JPanel tempPanel public MainUI String title this title title public void start initButton initTable 西安建筑科技大学课程设计 论文 第 25 页 共 41 页 user getUserProfile isFirstLogin user isLogin show isFirstLogin public void initButton TODO Auto generated method stub newButton new JButton NEW newButton setContentAreaFilled false newButton setBackground Color WHITE newButton setForeground Color BLUE newButton addActionListener listener newButton setBounds BUTTON START POINT BUTTON START POINT BUTTON WIDTH BUTTON HEIGHT buttonPanel new JPanel buttonPanel setBackground Color WHITE buttonPanel setLayout new GridLayout BUTTON NUMBER 0 0 0 buttonPanel add newButton buttonPanel add recButton buttonPanel add recboxButton buttonPanel add draftButton buttonPanel add setButton public void initTable TODO Auto generated method stub tab new JTabbedPane JTabbedPane TOP tab setBackground Color WHITE tab addMouseListener mListener start01 new JLabel start01 setBackground Color WHITE start01 setText WELCOME WORD01 start01 setHorizontalAlignment SwingConstants CENTER labelPanel new JPanel labelPanel setBackground Color WHITE labelPanel setLayout new GridLayout 3 0 4 4 labelPanel add start01 labelPanel add start02 labelPanel add start03 tab add 主页 labelPanel new Thread new changeColor start SuppressWarnings static access 西安建筑科技大学课程设计 论文 第 26 页 共 41 页 public void show boolean isFirstLogin jFrame new JFrame jFrame setBounds 0 0 SCREEN WIDTH 3 4 SCREEN HEIGHT 3 5 jFrame setBackground Color WHITE jFrame add buttonPanel new BorderLayout WEST jFrame add tab new BorderLayout CENTER jFrame setVisible true if isFirstLogin jFrame setFocusable false jFrame setEnabled false new Login UI new MainUI jFrame setDefaultCloseOperation JFrame EXIT ON CLOSE ReceiveEmail isRunning false private ActionListener listener new ActionListener Override public void actionPerformed ActionEvent e TODO Auto generated method stub if e getActionCommand equals NEW SendUI sendUI new SendUI new MainUI sendPanel sendUI initSendUI tab add NEW sendPanel tab setSelectedComponent tempPanel else if e getActionCommand equals SET new SetUI new MainUI else if e getActionCommand contains RECBOX e getActionCommand equals RECEIVED if flag ReceivedUI receiveUI new ReceivedUI new MainUI tempPanel receiveUI initrecvUI tab add RECBOX tempPanel tab setSelectedComponent tempPanel flag true else tab setSelectedComponent tempPanel private MouseListener mListener new MouseListener public void mouseClicked MouseEvent e TODO Auto generated method stub if e getClickCount 2 if tab getSelectedComponent labelPanel if tab getSelectedComponent equals tempPanel flag false tab remove tab getSelectedComponent 西安建筑科技大学课程设计 论文 第 27 页 共 41 页 public static void main String args TODO Auto generated method stub new Thread new ReceiveEmail start new MainUI E main Client start class changeColor implements Runnable public void run int colorlength colorStyle length for int j 0 j colorlength j start01 setForeground colorStyle j try Thread sleep 1000 catch InterruptedException e TODO Auto generated catch block e printStackTrace if j colorlength 1 j 0 2 2 发送邮件界面 发送邮件界面 package com dangxijiao Email UI public class SendUI private static final int COLUMNS 70 private static final String SEND 发 送 DRAFT 存草稿 CANCEL 取 消 reciver 收件人 cc 抄 送 sc 密 送 topic 主 题 private JButton sendButton draftButton cancelButton private JLabel reciverLabel ccLabel scLabel topicLabel public static JTextField reciverField ccField scField topicField private JTextArea contentArea private JPanel returnPanel public SendUI MainUI mainUI protected JPanel initSendUI returnPanel new JPanel int width BaseMain SCREEN WIDTH int height BaseMain SCREEN HEIGHT returnPanel setBounds 30 10 width 30 height 10 returnPanel setBackground Color WHITE returnPanel setLayout new BorderLayout sendButton new JButton SEND sendButton setBackground Color WHIT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肿瘤的自然疗法研究与应用
- 关于沟通培训课件标题
- 摄影留学培训课件
- 残缺污损人民币兑换培训
- 中药学本科生毕业论文
- 高中化学创新实验案例
- 教育心理考研
- 计算机系统的毕业论文
- 中层管理培训结业总结报告
- 艾滋病的预防和护理宣传
- GB/T 24025-2009环境标志和声明Ⅲ型环境声明原则和程序
- GB/T 17251-1998声学水听器加速度灵敏度校准方法
- 《半导体及二极管》教学课件
- 病房床头卡模板
- 消杀记录台账
- 2022年西双版纳傣族自治州景洪教师进城考试笔试题库及答案解析
- 公路改建工程边施工边通车安全专项施工方案
- 施工总平面图布置图及说明
- 道路交通安全法律法规知识测试题
- 国际篮联记录表
- 煤矿培训:自救器课件
评论
0/150
提交评论