博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我❤️文末获取源码联系❤️ ⚠️一定要先收藏⚠️
4 系统设计
4.1 总体设计
邮件分类系统使用Django框架进行设计,这种框架采用了分层模式,基于MVC思想,具体包括视图层、业务逻辑层和持久层。分层模式的主要思想是高内聚,低耦合,方便系统的维护扩展,便于理解代码,适合团队的开发。在企业级开发中受到了广泛的欢迎,分层的逻辑代码量较大,不利于单一功能的修改。如果增加某一功能的字段,需要从持久层开始直到页面层,都需要进行维护,也正是因为此,增加了数据传输的安全性以及相对完整性。
其中邮件分类系统的架构如4.1所示。
图4.1 系统架构图
Controller层的数据主要是通过调用Service层进行处理,并得到结果,然后对结果进行保存,可以分析结果数据,判断结果是否符合预期,最终将信息返回到View层中。在接口层也需要先定义功能实现的类,并定义接口的参数和返回值,比如数据库的增删改查,数据统计,数据分类处理。在接口实现类中对接口方法进行具体的实现,在方法实现中调用Dao层的方法,并传入对应的参数,得到结果后返回信息到Controller层中。
4.2 系统设计目标
本系统按照软件开发的思路进行设计,体现了以下几个目标。
(1)高可靠性
可靠性强调系统安全、连续工作和服务质量。这主要体现在两个方面:第一,系统不容易出现问题,这要求在系统测试中严格监控系统的性能要求;其次,系统在出现问题时可以快速修复,这要求系统架构设计同时考虑信息系统的可靠性和容错性。
(2)实用性
即系统需要处理在当前基于python的邮件分类系统管理流程中出现的问题,能够便于有关人员的管理。这对系统工作框架设计的合理化、针对性等提供了很大条件。其实,信息系统的实用价值在很大意义上决定了信息系统所需要分析的信息质量。
(3)先进性
它强调系统建设过程中应用到的方法、原则和手段等必须与时并进,努力采用创新的建设思想。当然,技术也必须以成本的可控为约束条件,绝对不要脱离成本谈技术。
(4)高安全性
安全原则重点突出了两方面,即既要保证体系数据、内容安全,又要保障系统运行安全。操作系统的安全应该从几个层面予以考量,常用的改善安全的方法包括设置权限制度、设置保护装置(如防火墙等)和使用数据加密算法等。
(5)易扩展性
即要求系统从建设之初就必须充分考虑其后期优化和提高的需求,并采用预留端口等方式保障系统的可扩展性,以便系统的未来发展和提高需求,这也是保障系统有效性的最主要方式。
4.3 系统详细设计
本次毕业设计主要基于python开发技术以及MySQL实现邮件分类系统的整体开发,同时结合了python编程的性能性与开发的便捷性,最大程度为用户提供完善的邮件收发与分类管理系统。本研究首先以通过文献资料查阅,了解目前一般邮件分类系统的设计要点与原型参考,制定合理的开发技术路线与功能要点。具体包括:
第一、实现邮箱的登录、注册功能。
第二、发送邮件的功能,其中包括能够发送的邮件能够添加附件,一份邮件可添加多个收信地址,完成多人发送。完成抄送和密送。
第三、通讯录功能,可添加邮箱地址保存至通讯录,可对通讯录里的邮箱地址进行昵称的设置。
第四、收信箱功能,收信箱中邮件默认按照时间排列,拥有未读提示,可检索未读邮件。可对收信箱中的邮件进行检索和删除。
第五、发信箱功能。该信箱记录已发送的邮件。可对发信箱中的邮件进行删除功能。
第六、草稿箱功能。可对当前发送内容进行编辑,保存至草稿箱,记录下未完成发送的邮件。可对草稿箱中的邮件进行删除功能。
第七、垃圾箱功能。在收信箱中删除的邮件会被添加至垃圾箱并且不会出现在收信箱,垃圾箱中可对其中的邮件进行删除,删除后将不能复原。也可以将垃圾箱中的邮件进行复原,复原的邮件将重新回到收信箱。
第八、标记箱功能。可对收信箱中的邮件进行标记,标记后的邮件将同时添加到标记箱。可对标记箱中的邮件进行删除功能。
第九、邮箱的黑名单功能。可对某一邮箱地址拉入黑名单,当收到该地址后将自动删除该地址邮件。
本邮件分类系统的基本结构如图4-1所示:
图4-1 邮件分类系统结构图
修改密码:登录系统的用户可以根据需要修改自己的密码。
用户可以直接浏览邮件信息,点击邮件信息,在邮件信息的列表中,点击邮件标题,信息加载到邮件信息的详细信息界面中。管理员可以对邮件信息进行管理,修改删除和查询。
图4-2 邮件管理流程图
用户可以通过管理员注册信息后登录网站,管理员对用户信息进行删除操作,用户登录后可以进行接收邮件,管理员对用户信息进行管理。
用户管理流程图如4-3所示:
图4-3 用户管理流程图
4.4 E-R图
本系统关键的E-R如下:
图4-4 邮件管理系统E-R图
4.5 数据库设计
本邮件分类系统的公告信息表存储公告信息,下面对表的数据库字段名称、字段的备注信息、PK/FK进行说明。
表: config数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_name | nvarchar(200) | No | 配置参数名称 | |
3 | col_value | nvarchar(200) | Yes | 配置参数值 |
表: shoujianxiang数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_biaoti | nvarchar(400) | Yes | 标题 | |
4 | col_fajianren | nvarchar(400) | Yes | 发件人 | |
5 | col_youjianfujian | text(16) | Yes | 邮件附件 | |
6 | col_riqi | datetime(8) | Yes | 日期 | |
7 | col_neirong | text(16) | Yes | 内容 | |
8 | col_yonghuzhanghao | nvarchar(400) | Yes | 用户账号 | |
9 | col_yonghuxingming | nvarchar(400) | Yes | 用户姓名 |
表: users数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_username | nvarchar(200) | No | 用户名 | |
3 | col_password | nvarchar(200) | No | 密码 | |
4 | col_role | nvarchar(200) | Yes | 角色 | |
5 | col_addtime | timestamp(8) | No | 新增时间 |
表: heimingdan数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_xingming | nvarchar(400) | Yes | 姓名 | |
4 | col_youxiang | nvarchar(400) | Yes | 邮箱 | |
5 | col_xingbie | nvarchar(400) | Yes | 性别 | |
6 | col_shouji | nvarchar(400) | Yes | 手机 | |
7 | col_tianjiashijian | datetime(8) | Yes | 添加时间 | |
8 | col_yonghuzhanghao | nvarchar(400) | Yes | 用户账号 | |
9 | col_beizhu | text(16) | Yes | 备注 |
表: biaojixiang数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_biaoti | nvarchar(400) | Yes | 标题 | |
4 | col_fajianren | nvarchar(400) | Yes | 发件人 | |
5 | col_youjianfujian | text(16) | Yes | 邮件附件 | |
6 | col_biaojiriqi | datetime(8) | Yes | 标记日期 | |
7 | col_neirong | text(16) | Yes | 内容 | |
8 | col_yonghuzhanghao | nvarchar(400) | Yes | 用户账号 | |
9 | col_yonghuxingming | nvarchar(400) | Yes | 用户姓名 |
表: tongxunlu数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_xingming | nvarchar(400) | Yes | 姓名 | |
4 | col_xingbie | nvarchar(400) | Yes | 性别 | |
5 | col_zhaopian | text(16) | Yes | 照片 | |
6 | col_shouji | nvarchar(400) | Yes | 手机 | |
7 | col_dizhi | nvarchar(400) | Yes | 地址 | |
8 | col_youxiang | nvarchar(400) | Yes | 邮箱 | |
9 | col_shenfenzheng | nvarchar(400) | Yes | 身份证 | |
10 | col_yonghuzhanghao | nvarchar(400) | Yes | 用户账号 |
表: caogaoxiang数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_youjianmingcheng | nvarchar(400) | Yes | 邮件名称 | |
4 | col_xingming | nvarchar(400) | Yes | 姓名 | |
5 | col_youxiang | nvarchar(400) | Yes | 邮箱 | |
6 | col_fujian | text(16) | Yes | 附件 | |
7 | col_dengjishijian | datetime(8) | Yes | 登记时间 | |
8 | col_youxiangneirong | text(16) | Yes | 邮箱内容 | |
9 | col_yonghuzhanghao | nvarchar(400) | Yes | 用户账号 | |
10 | col_yonghuxingming | nvarchar(400) | Yes | 用户姓名 |
表: lajixiang数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_biaoti | nvarchar(400) | Yes | 标题 | |
4 | col_fajianren | nvarchar(400) | Yes | 发件人 | |
5 | col_youjianfujian | text(16) | Yes | 邮件附件 | |
6 | col_dengjiriqi | datetime(8) | Yes | 登记日期 | |
7 | col_neirong | text(16) | Yes | 内容 | |
8 | col_yonghuzhanghao | nvarchar(400) | Yes | 用户账号 | |
9 | col_yonghuxingming | nvarchar(400) | Yes | 用户姓名 |
表: yonghu数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_yonghuzhanghao | nvarchar(400) | No | 用户账号 | |
4 | col_mima | nvarchar(400) | No | 密码 | |
5 | col_yonghuxingming | nvarchar(400) | No | 用户姓名 | |
6 | col_xingbie | nvarchar(400) | Yes | 性别 | |
7 | col_yonghudianhua | nvarchar(400) | Yes | 用户电话 | |
8 | col_touxiang | text(16) | Yes | 头像 |
表: fajianxiang数据表
字段 | 列名 | 类型 | 是否主键 | 是否空 | 说明 |
1 | col_id | bigint(8) | 主键 | No | 主键 |
2 | col_addtime | timestamp(8) | No | 创建时间 | |
3 | col_youjianmingcheng | nvarchar(400) | Yes | 邮件名称 | |
4 | col_xingming | nvarchar(400) | Yes | 姓名 | |
5 | col_youxiang | nvarchar(400) | Yes | 邮箱 | |
6 | col_fujian | text(16) | Yes | 附件 | |
7 | col_fasongshijian | datetime(8) | Yes | 发送时间 | |
8 | col_youjianneirong | text(16) | Yes | 邮件内容 | |
9 | col_yonghuzhanghao | nvarchar(400) | Yes | 用户账号 | |
10 | col_yonghuxingming | nvarchar(400) | Yes | 用户姓名 |
本章节对基于python的邮件分类系统的系统进行设计,包括体系结构设计、功能结构设计、数据库设计。
5 系统实现
5.1 登陆模块的实现
系统运行后,需要先进行登录,然后进行登录验证,通过登录后,进行系统管理。
用户登录的流程图如图5-1所示。
图5-1 用户登录流程图
其中登陆界面如5-2所示:
图5-2 用户登录
通过form表单的文本控件收集用户账号和密码,登录按钮是button控件,用户填写账号和密码后。点击登录到业务逻辑层中进行处理,先把账号信息保存在用户实体方法中。然后通过数据库的查询方法,查询该用户实体账号密码是否正确,并返回查询结果和实体到登录页面,在登录页面验证结果,如果通过登录验证,那么将用户实体保存在session中,以便操作该用户对象的值。
5.2 通讯录管理的实现
基本信息的维护是为邮件管理提供基础数据的。包括,通讯录管理、用户管理等。通讯录信息录入管理界面如5-3所示:
图5-3 通讯录录入信息维护
添加通讯录组别后,可以管理具体的通讯录信息。通讯录管理的界面如5-4所示:
图5-4 通讯录信息维护
通讯录模块中,需要先验证用户权限。通过变量获取Session中的登录数据,如果存在数据。那么将可以进行查看,如果不存在,那提示用户需要先进行登录。
通讯录列表查询中先通过公共类,建立通讯录查询的SQL语句,和通讯录查询接口建立映射。当界面调用通讯录查询方法时,业务逻辑层将结果集封装成列表对象,返回到通讯录集合列表页面,再通过控件绑定,循环建立起字段数据,并查询出来。
5.3 发件箱管理的实现
邮件管理是系统重要的部分。邮件管理包括发送邮件,发件箱,草稿箱模块。
发送邮件信息管理界面如5-5所示:
图5-5 发送管理
发送邮件信息后,可以在发件箱查询刚才发送成功的邮件信息。发件箱管理界面如5-6所示:
图5-6 发件箱管理
初始状态,发件箱信息表中没有数据,需要录入发件箱信息。在发件箱信息添加界面,填写信息后,通过客户端验证后,提交数据到数据库。后台对发件箱信息进行保存操作,保存数据就,在数据库中可以查看到刚才录入的数据。
源码获取
大家点赞、收藏、关注 ,让更多需要的同学看到
不同开发语言专栏推荐订阅:
👇下方有我的微信名片👇