资源描述
个人收集整理 勿做商业用途
成绩:
存档资料
武汉大学东湖分校计算机科学学院
课 程 设 计 报 告
课程名称 网络综合课程设计
题 目 Book图书管理系统网页的设计与实现
专业班级 09计网(2)班
学 号 20090306202061
学生姓名 毛吉勇
指导教师 罗旋
2012 年 3 月 23 日
武汉大学东湖分校计算机科学学院
课程设计任务书
课程名称: 网络综合课程设计
设计题目: 头邮件服务器客户端的设计和实现
专 业: 09计网 班 级:(2)
完成时间: 2012-3-23 指导教师: 罗旋 专业负责人: 许先斌
主要内容
1.SMTP/ESMTP服务器2.POP3服务器3。群发功能4。转发功能5。使用telnet,outlook,foxmail,测试程序全部测试通过6。WebMail客户端原型界面7。利用JavaMail API收发邮件(包括附件的上传下载),引入HTML在线编辑器
基本要求
代码计规范,能完成简单邮件传输服务系统的邮件传发,收取邮件功能,能通过OUTLOOK收发邮件。
参考资料
《计算机网络课程设计》,王勇 代桂平 等,清华大学出版社,2009年6月第一版
武汉大学东湖分校计算机科学学院
课程设计成绩评价表
课程名称
网络综合课程设计
题 目
电子邮件客户端的设计和实现
学生姓名
毛吉勇
学号
20090306103152
指导教
师姓名
罗旋
职称
序 号
评价项目
指 标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值.
5
4
答辩
能正确回答指导教师所提出的问题.
30
总 分
评 语:
指导教师: 年 月 日
1. 需求分析
1.SMTP/ESMTP服务器,2.POP3服务器3.群发功能4。转发功能5.使用telnet,outlook,foxmail,测试程序全部测试通过6。WebMail客户端原型界面7.利用JavaMail API收发邮件(包括附件的上传下载),引入HTML在线编辑器
2。概要设计
3. 详细设计
〈%@ page language="java” import="java。util。*” pageEncoding=”UTF-8"%>
〈%@ taglib uri="http://java。 prefix=”c"%>
<%@page import=”com。wepull。javabean。model。BookDao"%>
〈%@page import="com.wepull。javabean。model.BookDto"%〉
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://"+request.getServerName()+":”+request。getServerPort()+path+”/”;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
〈head〉
〈base href="〈%=basePath%〉”>
<title〉图书列表〈/title>
〈meta http—equiv="pragma” content="no—cache”〉
〈meta http—equiv="cache-control" content=”no-cache"〉
<meta http-equiv="expires” content="0">
〈meta http-equiv="keywords" content="keyword1,keyword2,keyword3"〉
<meta http—equiv=”description" content="This is my page”〉
<link rel="stylesheet" type=”text/css" href="css/body.css">
〈script type="text/javascript">
//全选
function allCh(){
var ids =document.getElementsByName(”ids");
for(var i=0;i<ids。length;i++){
ids[i].checked=true;
}
}
//反选
function unCh(){
var ids =document。getElementsByName("ids");
for(var i=0;i〈ids.length;i++){
ids[i]。checked=!ids[i].checked;
}
}
//showPage()当页面加载完毕 需要将下拉列表分页显示可以选择的页数
//当页面加载完毕 需要将下拉列表分页显示可选择的页数
function showPage(pageNo,totalPage){
var page = document.getElementById("page");
for(var i=0;i〈totalPage;i++){
page。options[i] = new Option(i+1,i+1);
//让下拉列表默认选中当前页
if(pageNo==i+1){
page。options[i].selected = true;
}
}
}
//动态根据用户选择的页数进行跳转
function changePage(page){
window。location.href=”book?action=search&pageNo="+page;
}
</script〉
</head>
<body onload=”showPage(${pageNo },${totalPage })”〉
<h2 align="center">图书信息</h2〉
〈center>
<form action=”book?action=search” method=”post">
〈table〉
〈tr〉
<td>
<input type="text" name=”searchName” value=”${sessionScope.searchName}”〉
〈input type=”submit" value=”查询"〉
〈/td〉
</tr〉
〈/table>
〈/form>
</center>
〈center>
〈form action="book?action=delete" method=”post"〉
<table align=”center">
〈tr>
〈td>
<input type=”radio” name=”ch" onclick=”allCh()”>全选
〈input type="radio" name="ch" onclick=”unCh()”〉反选
〈/td〉
<td〉id〈/td〉
〈td>书名〈/td〉
<td>价格</td〉
〈td>作者〈/td〉
〈td>出版日期</td>
<td〉图书类型〈/td〉
<td>操作〈/td〉
〈/tr>
<c:forEach items="${bookList}” var="bookDto”〉
<tr>
<td><input type=”checkbox" name="ids” value="${ bookDto.id}”>
</td〉
〈td〉${bookDto.id}</td>
<td〉${bookDto。name}</td>
<td〉${bookDto。price}</td>
<td〉${bookDto。author}</td〉
〈td〉${bookDto.publishDate}</td〉
〈td〉
<c:forEach items=”${typeList}" var=”typeDto”>
<c:if test="${bookDto.typeId==typeDto.id}”〉${typeDto。name }
〈/c:if>
</c:forEach>
</td〉
<td>
〈a href="book?action=toEdit&id=${bookDto.id}”>修改</a〉
〈a href="book?action=delete&id=${bookDto.id}"〉删除</a>
</td〉
</tr〉
</c:forEach>
<tr〉
〈td colspan=”8”〉
<input type=”submit" value=”删除”〉
<input type="button"
value=”增加” onclick=”window。location.href='book?action=toAdd’”〉
&nbsp;
<a href="book?action=search">首页〈/a>
<a href="book?action=search&pageNo=${pageNo-1}" <c:if test=”${pageNo<=1}”>disables onclick=”return false;" 〈/c:if〉>上一页</a>
<a href=”book?action=search&pageNo=${pageNo+1}” <c:if test=”${pageNo>=totalPage}"〉disables onclick="return false;” 〈/c:if> 〉下一页〈/a>
〈a href="book?action=search&pageNo=${totalPage}">尾页</a〉
 ;转到
<select id=”page" onchange=”changePage(this。value)"〉
</select>
页
 ; ;第【${pageNo}/${totalPage}】页
&nbsp;  ; 〈input type="button” value="退出” onclick=”window.location。href='book?action=quit'">
〈/td〉
</tr>
</table>
</form>
〈/center>
〈/body>
〈/html>
〈%@ page language=”java” import=”java。util。*" pageEncoding="UTF—8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://"+request。getServerName()+”:"+request。getServerPort()+path+”/";
%〉
<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>
〈html>
〈head〉
<base href="〈%=basePath%〉">
〈title〉My JSP 'login。jsp' starting page〈/title>
〈meta http—equiv=”pragma” content="no—cache”>
〈meta http—equiv="cache-control” content=”no—cache”>
〈meta http-equiv=”expires" content="0”>
<meta http-equiv=”keywords" content="keyword1,keyword2,keyword3">
〈meta http-equiv="description” content="This is my page”〉
<link rel=”stylesheet” type="text/css" href="css/body.css”〉
〈/head>
<body>
<h2>登陆图书信息管理系统</h2〉
<form action="book?action=login” method="post”〉
用户名:<input type=”text" name="username"〉<br>
密 ; ; ;&nbsp;码:<input type=”text" name=”password"〉<br>
〈input type=”submit” value=”登陆">
〈/form〉
〈/body>
〈/html>
4.
具体代码见附件
4。使用说明、测试和分析结果
本系统是通过MyEcplise软件编写,这个程序是基于pop3和SMTP协议编写而成,所写成的系统可以通过Foxmail和OUTLOOK测试成功。
SMTP协议:协议交互过程:SMTP采用客户机/服务器通信模式,邮件服务器启动“smtp”进程,监听TCP端口25的请求,接到连接请求connect后,双方交换信息,客户端发送命令,服务器给予响应。
POP3协议:通信过程:
>〉telnet localhost 110
〉〉user wpj1011 //用户名
>>pass 123456 //密码
〉>stat //查询邮件总数和长度
〉〉uidl N //处理 server 返回用于该指定邮件的唯一标识, 如果没有指定,返回所有的
〉>list N //列出每封邮件的大小和长度 N表示邮件编号
>>retr N //请求服务器发送指定编号的邮件
>>dele N //对指定编号的邮件做删除标记,此时还没有真正的删除
>〉rset //复位操作,清除所有的删除标记
〉>noop //这个命令不影响任何参数,只是要求接收方回答OK, 不会影响缓冲区的数据,一般在用Foxmail中测试的时候要用到
>>quit //删除具有”删除"标记的邮件,关闭连接
5.课程设计总结
电子邮件是Internet中使用最为广泛的一项应用服务,以存储-转发的方式支持用户之间的电子邮件交换,具有比邮政快件更迅捷的特点.电子邮件传输服务系统分为服务器端和客户端,主要用到了多线程,io流,socket等一些JAVA的基础知识,在此次的邮件传输服务器的项目中,通过自己查阅资料,回顾以前学的基础知识,在这一周,我花了两天的时间写smtp协议,完成了简单的自己给自己发邮件,花了两天的时间写pop3协议,完成收邮件的各个操作。最后一天解决了在收发过程中出现的各种异常,找老师一起解决问题,在这个学习的过程中,了解到了当出现问题时,对自己不能灰心,不能放弃,在做项目的过程中讲究的是团队合作和团体交流,做项目可以积累我们的经验,为我们工作上手。
展开阅读全文