邮箱管理系统 -- 【课程设计】 idea; MVC; mysql;jsp
课程设计报告
目录
1 摘要
2 需求分析
2.1功能模块需求分析
2.2 整体需求分析
3 数据库结构设计
4 程序结构框图
5 程序功能说明
6 系统实现界面
6.1登录管理模块
6.1.1登录模块设计实现
6.1.2管理员模块设计实现
6.2邮箱管理模块
6.2.1用户撰写和发送邮件设计实现
6.2.2用户邮箱管理设计实现
6.3.2邮件群发设计实现
6.3.3通讯录人员删除实现
6.4主要实现代码
7 总结
1 摘要
在现代世界,随着计算机和互联网的普及,电子邮件已成为仅次于语音的第二大常用通信渠道。在企业内部,员工之间交流的邮件内容包括市场分析、项目管理、采购信息、客户投诉、内部备忘录甚至协议等重要信息。
目前,由于电子邮件仍然是一种点对点的传输方式,大量有用的信息,即知识,无法被企业中的其他人有效利用。知识管理是指创造、获取和使用知识以提高组织绩效的过程。为解决企业邮件管理问题,本文构建了一个基于邮件的管理系统。系统分为六个模块:用户模块、收件模块、发件模块、删除模块、敏感字符过滤模块、回收模块。系统实现的功能主要包括:用户以及管理员的登陆注册,邮件的收发、回收和记录。系统提供系统管理员、普通用户二种主要角色,是一个功能齐全、操作简单、使用方便的基于电子邮件的管理系统。
此邮件管理系统主要使用到MVC架构、Mysql数据库、java、jsp等技术,并使用idea提供的环境进行灵活的搭建,极大地减小了开发难度。
关键词:邮件管理系统; idea; MVC; mysql;jsp
2 需求分析
2.1功能模块需求分析
2.1.1 登录注册模块。
用户登录:主要功能是用户点击登录按钮后输入用户名和密码与数据库中的信息进行验证。登 录成功后可以修改个人密码以及个人资料,管理员还可以对其进行修改访问。
用户注册:主要功能是用户点击注册按钮之后,进入用户注册信息页面,填写个人信息后写入数据库中,以便下次登录使用。
2.1.2 邮件收发:包括写邮件、收邮件、发送邮件。
写邮件:对要发的邮件进行编辑,包括主题,内容等,可以添加附件等。
发送邮件:邮件编辑好之后有保存按钮和发送按钮,之后进行发送。
收邮件:接收邮件并进行垃圾邮件的过滤。
2.1.3 邮箱管理:包括收件箱,草稿箱,发件箱和垃圾箱。
收件箱:里面可以查看到所有接收到的邮件,并可以点击进去进行查看,删除等操作
草稿箱:用户在编辑完邮件之后,可以点击保存在草稿箱以便后续操作。
发件箱:用户对之前发送出去的邮件进行查看和修改,以及再次发送和删除。
垃圾箱:这里包括了用户删除的所有邮件,可以还原或者彻底的删除。
2.1.4 通讯录模块:包括建立通讯录、查看通讯录和删除通讯录。
新建通讯录:用户通过新建通讯录可以对联系人进行分类等操作
查看通讯录:可以查看通讯录中的所有联系人,并进行移动,删除等操作。
2.2 整体需求分析
邮箱管理系统在实现上述的功能需求之外,还要有良好的可扩展性和高可靠性,可扩展性是衡量系统是否成功的一个重要标志,本方案从硬件平台可扩展性和软件功能模块的可扩展性俩个方面来满足需求。高可靠是邮件系统最基本也是最重要的一个需求。
3 数据库结构设计
3.1 数据描述与实体关系模型
3.1.1 邮件系统有关实体及属性为:
(1). 用户:用户 ID、用户名、账号密码;
(2). 邮件:已读标记、删除标记、邮件编号、邮件主题、收件人 ID、收件人用
户名、发件人 ID、发件人用户名、邮件内容、发送时间、附件编号;
(3). 附件:附件名、附件编号、所属邮件编号、附件内容;
(4). 草稿:草稿编号、草稿主题、草稿内容、编辑时间、编写人 ID、编写人用
户名;
- . 通讯录:联系人 ID、联系人用户名、联系人备注。
3.1.2 E-R图
3.2 数据库整体图览
3.3数据库表设计
- user表(用户信息表):
字段名称 |
数据类型 |
长度 |
可否为空 |
说明 |
User_id |
Int |
(11) |
主键 |
用户编号 |
User_name |
varchar |
(50) |
NOT NULL |
用户名 |
User_pw |
varchar |
(50) |
NOT NULL |
密码 |
User_realname |
varchar |
(50) |
NOT NULL |
真实姓名 |
User_address |
varchar |
(50) |
NULL |
住址 |
User_sex |
varchar |
(50) |
NOT NULL |
性别 |
User_tel |
varchar |
(50) |
NULL |
联系电话 |
- admin表(管理员信息表):
字段名称 |
数据类型 |
长度 |
可否为空 |
说明 |
userId |
Int |
(11) |
主键 |
管理员编号 |
userName |
varchar |
(50) |
NOT NULL |
管理员用户名 |
userPw |
varchar |
(50) |
NOT NULL |
登录密码 |
- shoujianxiang表(收件箱表):
字段名称 |
数据类型 |
长度 |
可否为空 |
说明 |
Email_id |
int |
(11) |
主键 |
邮件编号 |
Email_title |
varchar |
(50) |
NOT NULL |
邮件标题 |
Email_content |
varchar |
(50) |
NOT NULL |
邮件内容 |
Email_fujian |
varchar |
(50) |
NULL |
附件路径 |
Email_fujianyuanshiming |
varchar |
(50) |
NULL |
附件文件名 |
Email_date |
varchar |
(50) |
NOT NULL |
邮件时间 |
From_user_name |
varchar |
(255) |
NOT NULL |
发邮件用户名 |
To_user_Name |
varchar |
(255) |
NOT NULL |
收邮件用户名 |
- fajianxiang表(发件箱表):
字段名称 |
数据类型 |
长度 |
可否为空 |
说明 |
Email_id |
int |
(11) |
主键 |
邮件编号 |
Email_title |
varchar |
(50) |
NOT NULL |
邮件标题 |
Email_content |
varchar |
(50) |
NOT NULL |
邮件内容 |
Email_fujian |
varchar |
(50) |
NULL |
附件路径 |
Email_fujianyuanshiming |
varchar |
(50) |
NULL |
附件文件名 |
Email_date |
varchar |
(50) |
NOT NULL |
邮件时间 |
From_user_name |
varchar |
(50) |
NOT NULL |
发邮件用户名 |
To_user_Name |
varchar |
(50) |
NOT NULL |
收邮件用户名 |
- caogaoxiang表(草稿箱表):
字段名称 |
数据类型 |
长度 |
可否为空 |
说明 |
Email_id |
int |
(11) |
主键 |
邮件编号 |
Email_title |
varchar |
(50) |
NOT NULL |
邮件标题 |
Email_content |
varchar |
(50) |
NOT NULL |
邮件内容 |
Email_fujian |
varchar |
(50) |
NULL |
附件路径 |
Email_fujianyuanshiming |
varchar |
(50) |
NULL |
附件文件名 |
Email_date |
varchar |
(50) |
NOT NULL |
邮件时间 |
From_user_name |
varchar |
(50) |
NOT NULL |
发邮件用户名 |
To_user_Name |
varchar |
(50) |
NOT NULL |
收邮件用户名 |
- lajixiang表(垃圾箱表):
字段名称 |
数据类型 |
长度 |
可否为空 |
说明 |
Email_id |
int |
(11) |
主键 |
邮件编号 |
Email_title |
varchar |
(50) |
NOT NULL |
邮件标题 |
Email_content |
varchar |
(50) |
NOT NULL |
邮件内容 |
Email_fujian |
varchar |
(50) |
NULL |
附件路径 |
Email_fujianyuanshiming |
varchar |
(50) |
NULL |
附件文件名 |
Email_date |
varchar |
(50) |
NOT NULL |
邮件时间 |
From_user_name |
varchar |
(50) |
NOT NULL |
发邮件用户名 |
To_user_Name |
varchar |
(50) |
NOT NULL |
收邮件用户名 |
- tongxunlu表(通讯录信息表):
字段名称 |
数据类型 |
长度 |
可否为空 |
说明 |
id |
int |
(11) |
主键 |
编号 |
name |
varchar |
(50) |
NULL |
联系人姓名 |
sex |
varchar |
(50) |
NOT NULL |
联系人性别 |
age |
varchar |
(50) |
NULL |
联系人年龄 |
tel |
varchar |
(50) |
NULL |
联系人电话 |
address |
varchar |
(50) |
NULL |
联系人地址 |
gongsi |
varchar |
(50) |
NULL |
联系人公司 |
emaiadd |
varchar |
(50) |
NOT NULL |
联系人邮箱地址 |
User_Id |
int |
(11) |
NOT NULL |
使用通讯录的用户ID |
4 程序结构框图
本系统所设计用户权限分为两类:管理员,用户。普通用户可以在系统中收发邮件以及管理邮箱的操作。管理员除了可以收发邮件的功能操作外,还可以进行对用户信息进行管理功能。
管理员的具体操作如下图:
图1 管理员使用系统功能模块图
用户的具体操作如下图:
图2 普通用户使用系统功能模块图
5 程序功能说明
- 登录管理模块:
对用户身份进行验证以及权限的设置等。本模块分二个子模块,用户登录模块的功能是使用本系统上用户名和密码登录;修改密码模块的功能是通过先验证用户原密码然后修改成新密码。
- 邮件收发模块:
对用户的邮件收发进行详细的管理。本模块分为三个子模块,写邮件模块的功能是用来录入邮件的内容;收邮件模块的功能是用来接收、过滤并分类邮件信息;发送邮件模块的功能包括操作方式(发送和保存到草稿箱)和存储邮件。
- 邮箱管理模块:
是对邮箱中的邮件信息进行详细的管理。本模块分为四个子模块,收件箱的功能是用来查看和删除邮件;发件箱模块的功能是用来存储用户发送过的邮件信息;草稿箱模块的功能是实现对保存的邮件进行编辑和删除;垃圾箱模块的功能是用来存放垃圾邮件和用户删除的邮件。
- 通讯录管理模块:
是对所有联系人的信息管理。本模块分为三个子模块,新建通讯录模块的功能是联系人信息;查看通讯录模块的功能是列出所有联系人的信息进行查看和删除;删除通讯录模块的功能是删除单个联系人的操作;邮件群发是在通讯录列表中选择指定 联系人群发邮件。
6 系统实现界面
6.1登录管理模块
6.1.1登录模块设计实现
管理员、用户登录的界面中,包括用户名和密码得输入文本框,以及提交登录按钮和重写按钮。管理员登录界面如图6-1所示。
在执行登录时,页面supermail_1_2_war_exploded/index.jsp调UserLoginServlet.java文件中的方法对所填写的信息进行接收,并通过select语句查询user表或admin表,对管理员或用户的登录信息进行验证。
6.1.2管理员模块设计实现
用户的信息需要由系统管理员来进行管理和维护。注册用户列表页面设计如图所示。
6.2邮箱管理模块
6.2.1用户撰写和发送邮件设计实现
用户登录后,主要的工作就是对邮件的管理,界面设计的结果如图6-2所示。
图6-2 用户撰写邮件界面
用户登录系统之后,就可以使用邮件管理的功能,首先是撰写邮件,然后是发送邮件。发送邮件的代码所做的工作主要如下:
(1)检验所填数据或者信息的合法性,如必须填写的信息是否填写、所填写的信息是否按照要求填写等。
(2)检查收件人在系统中是否存在,即检验收件人的合法性。
(3)根据是保存还是发送,对数据库进行操作。如果是保存,则把所编写的邮件保存在发件箱中;如果是发送,则可在已发邮件找到所发送的邮件。
6.2.2用户邮箱管理设计实现
用户在撰写邮件特别是撰写到一半时,可以先单击“保存”按钮保存到草稿箱中等待以后处理,在草稿箱中可以查看没有发送的邮件。这个页面的源代码文件为caogaoxiang.jsp
6.3通讯录管理模块
6.3.1联系人设计实现
图6-4 查看通讯录界面
6.3.2邮件群发设计实现
邮件群发功能的设计和普通发送邮件一样,只是可以多个选择联系人,选择多个联系人之后,点击写邮件,在邮件编写完成后点击提交按钮,群发邮件便可发送成功。群发的页面如图6-5所示。
图6-5群发邮件编辑界面
6.3.3通讯录人员删除实现
邮件联系人的删除功能在点击删除按钮后会出现一个弹框,提示是否要删除,点击确定便可删除,若想要一次删除多个联系人,点击复选框,多选即可。
图6-5联系人删除界面
6.4主要实现代码
6.4.1 数据库连接代码(主要实现对MySQL数据库连接--jdbc)
package com.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class ConnUtil {public static Connection getConn() {Connection conn = null;try {//1.加载驱动Class.forName("com.mysql.jdbc.Driver");//2.连接数据库conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mail?useUnicode=true&characterEncoding=utf-8","root", "123456");} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}}
6.4.2 数据库操作代码(主要实现对MySQL数据库的增删改查)
package com.util;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class BaseDao {//增删改//SQL语句public int modifyData(String sql,Object [] obj) {Connection conn = ConnUtil.getConn();int result = 0;try {PreparedStatement ps = conn.prepareStatement(sql);for (int i = 0; i < obj.length; i++) {ps.setObject(i+1,obj[i]);}//执行result = ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return result;}//查询public ResultSet getDataByANY(String sql,Object [] obj) {Connection conn = ConnUtil.getConn();ResultSet rs=null;try {PreparedStatement ps = conn.prepareStatement(sql);for (int i = 0; i < obj.length; i++) {ps.setObject(i+1,obj[i]);}rs = ps.executeQuery();} catch (SQLException e) {e.printStackTrace();}return rs;}}
6.4.3主页代码(index.jsp)
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%--<!DOCTYPE html>--%><%//这里定义一个用于获取本项目根路径的一个地址String path = request.getContextPath();%><html><head><link rel="stylesheet" type="text/css" href="css/reset.css" /><link rel="stylesheet" type="text/css" href="css/index.css" /><title>supermail</title></head><%--注册点击事件--%><script type="text/javascript">function gotoReg(){location.href="modify.jsp"}</script><body id="bigBox"><h1>Welcome to SUPERMAIL</h1><br/><div class="inputBox" style="align-content: center"><form action="<%=path%>/UserLoginServlet"><div class="inputText">用户名:<input type="text" name="User_name"><br/>密 码:<input type="password" name="User_pw"><br/></div><input class="inputButton" type="submit" value="登录"><input class="inputButton" type="button" value="注册" onclick="gotoReg()"></form></div></body></html>
6.4.4 修改页面代码(modify.jsp)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%String path = request.getContextPath();%><%--Created by IntelliJ IDEA.User: AdministratorDate: 2022/5/20Time: 15:48To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java"%><html><head><link rel="stylesheet" type="text/css" href="css/reset.css" /><link rel="stylesheet" type="text/css" href="css/modify.css" /><title>修改页面</title></head><body id="bigBox"><form action="<%=path%>/DoUpdateOrAddUserServlet"><input type="hidden" name="User_id" value="${requestScope.user111.user_id}"><br/><label>用户名: <input type="text" name="User_name" value="${requestScope.user111.user_name}"></label><br/><label>登录密码:<input type="text" name="User_pw" value="${requestScope.user111.user_pw}"></label><br/><label>真实姓名:<input type="text" name="User_realname" value="${requestScope.user111.user_realname}"></label><br/><label>家庭住址:<input type="text" name="User_address" value="${requestScope.user111.user_address}"></label><br/><label>性别: <input type="text" name="User_sex" value="${requestScope.user111.user_sex}"></label><br/><label>电话: <input type="text" name="User_tel" value="${requestScope.user111.user_tel}"></label><br/><input type="submit" value="确认"><input type="reset" value="重置"><input type="button" value="返回" onclick="history.back()"></form></body></html><%--readonly="readonly" 只读属性--%>
6.4.5 修改页面代码(DoUpdateOrAddUserServlet.java)
package com.servlet;import com.entity.User;import com.service.UserService;impimport javax.servlet.*;import javax.servlet.http.*;import javax.servlet.annotation.*;import java.io.IOException;@WebServlet("/DoUpdateOrAddUserServlet")public class DoUpdateOrAddUserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String StrUserid = request.getParameter("User_id");String User_name = request.getParameter("User_name");String User_pw = request.getParameter("User_pw");String User_realname = request.getParameter("User_realname");String User_address = request.getParameter("User_address");String User_sex = request.getParameter("User_sex");String User_tel = request.getParameter("User_tel");//当前的控制器实现俩个操作,一个是添加一个是修改数据//添加数据(注册) 是没有User_id这个参数的值的//而修改的必须要有pid的值,所以我们可以以此属性的值是否为空来判断,具体是什么操作//还可以查看当前的请求是从什么路径来的UserService us = new UserServiceImpl();if (StrUserid != null&&!(StrUserid.equals(""))) {int User_id = Integer.parseInt(StrUserid);if(us.updateUserById(newUser(User_id,User_name,User_pw,User_realname,User_address,User_sex,User_tel))==1){response.sendRedirect("/supermail_1_2_war_exploded/GetAllUserServlet");}}else {if (us.addUser(new User(User_name,User_pw,User_realname,User_address,User_sex,User_tel))==1){response.sendRedirect("/supermail_1_2_war_exploded/GetAllUserServlet");}}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}}
7 总结
Web 的mail 邮件开发是学习 web体系结构后收获颇多的一个项目,在着手开始之 前,查阅了许多资料。有时觉得编程这件事情,很多时候就是听起来一个功能的实现好像很难,但当你着手去实现,去研究他的实现过程的时候就会发现其实也没有想象中那么难。在编程的过程中,主要用到了MVC架构,jsp和MySQL数据库等等,了解到MVC这种模式用于应用程序的分层开发,极大的降低了开发难度,有很好的层次感。在开发的过程中,可以又把上学期的数据库知识和Html 的知识进行回顾,对这些技术的认识有了很多新的进步,对jsp的运用也有了一定的进步。
在开发的过程中,遇到很多的问题,由于自身能力不足,比如遇到了,无法从数据库中准确地获取到用户名,明明在index.jsp页面可以,到了其他页面就不行了,还有就是明明第一次打开的时候能用,再打开之后就出现了问题,幸好最后找到了问题的根源所在,是对el表达式域的概念掌握的不是很好,导致了jsp页面中的一些数据访问不到正确的servlet页面从而是用户信息获取不到,在开发的过程中此类的问题还有很多,比如对一些jar包的不熟悉不了解,没进行项目开发的时候,没有一个整体的概念和认知。
总的来说,这次的课程设计学到很多东西,java中不同类的使用及方法, 提高了编程思维能力,同时学会思考问题,提出解决代码问题方案。
邮箱管理系统 -- 【课程设计】 idea; MVC; mysql;jsp相关推荐
- MySQL药店管理系统设计,JSP药店药品管理系统的设计(含录像)(MySQL)
JSP药店药品管理系统的设计(含录像)(MySQL)(毕业论文12000字,程序代码,数据库) 摘要 药店对药品信息和数据管理纷乱复杂,整理统计费力费时.要做好对企业的管理,企业就必须快速准确地获取自 ...
- 基于java校园新闻管理系统数据库模块的论文_基于JSP的校园新闻管理系统的设计与实现(MySQL)...
基于JSP的校园新闻管理系统的设计与实现(MySQL)(包含任务书,开题报告,中期报告,毕业论文,28000字,程序代码,数据库) 摘 要 本人从校园网建设的实际情况出发,经过对相关校园新闻资讯网站 ...
- java仓库管理设计报告_仓库管理系统(课程设计JSPJAVA大学设计).doc
仓库管理系统(课程设计JSPJAVA大学设计) 摘 要 随着经济的不断繁荣以及加入WTO后市场环境的变化,对企业的生产经营提出了更高的要求,企业必须综合利用各种先进制造技术,在网络与信息技术的支持下, ...
- java公寓管理系统设计与实现,学生公寓管理系统的设计与实现(MySQL)
学生公寓管理系统的设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文10000字,程序代码,MySQL数据库) 学生公寓是每一位在校学生生活.学习.相互交流的主要场所 ...
- 基于PHP+MSQL的在线邮箱管理系统的设计与实现【开题报告、源码】
本科毕业论文(设计)开题报告 学 院 指导老师 职 称 专业班级 学生姓名 学 号 题 目 基于PHP+MSQL的在线邮箱管理系统的设计与实现 系统视频见:[PHP邮件管理系统] bilibili视频 ...
- mysql餐饮管理系统设计_酒店餐饮管理系统的设计与实现(MySQL)(含录像)
酒店餐饮管理系统的设计与实现(MySQL)(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文11900字,程序代码,MySQL数据库,答辩PPT,答辩视频录像) 摘 要 随着计算机产业的高速 ...
- mysql 餐饮管理系统_餐饮管理系统的设计与实现(MySQL)
餐饮管理系统的设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文16000字,程序代码,MySQL数据库) 传统餐饮企业的日常运作是靠人工管理,从原材料入库到客人点单 ...
- mysql餐饮管理系统设计_餐饮管理系统的设计与实现(MySQL)
餐饮管理系统的设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文16000字,程序代码,MySQL数据库) 传统餐饮企业的日常运作是靠人工管理,从原材料入库到客人点单 ...
- 拾光·印记婚纱摄影管理系统的设计与实现mysql
原文链接:请点这里 项目描述 本系统实现了拾光·印记婚纱摄影管理系统的设计与实现mysql的基本功能,主要功能如下. 技术支持 eclipse.SSH.Jdk1.8.jsp. mysql 系统提供的具 ...
- 大一java图书馆管理系统课程设计
大一java图书馆管理系统课程设计 代码仅供参考!!!仅供参考!!! 效果图如下 管理员用户名:123 密码123 密码错误的话进入项目resources文件夹有个LMS数据库,使用数据库客户端打开 ...
最新文章
- php析构函数的用法
- VarGFaceNet:地平线提出轻量级、有效可变组卷积的人脸识别网络
- 通过ApplicationContextAware加载Spring上下文环境
- yolov5 mobile 剪枝
- 如何学习——为什么不想听课
- html5 postMessage解决跨域、跨窗口消息传递
- Android Zip文件解压缩代码
- 2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法
- gitlable iphone_iPhone 12首批用户成“小白鼠”,“信号故障”躺枪者无数
- Go学习笔记(只有链接)
- Java基础学习总结(123)——Java异常处理原则
- Windows Server 2012 禁止使用Ctrl+Alt+Del 以及禁止开机启动服务器管理器
- php取汉字拼音首字母,php获取汉字拼音首字母的函数(真正可以使用的)
- PPT:华为数字化转型实践分享(附下载)
- 京东支付SDK重构设计与实现
- avr单片机教程 csdn_从古老的attiny85升级到新的AVR 1系列attiny412教程
- 整理任正非思想:要树立服务意识、品牌意识、群体意识-1996
- 发展恐怖故事–邮件炸弹
- 数据库原理与应用第三版何玉洁第二章课后题答案
- PV、UV、IP是什么意思?你懂了吗?