课程设计电子邮件管理系统.docx
- 文档编号:25990995
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:13
- 大小:560.33KB
课程设计电子邮件管理系统.docx
《课程设计电子邮件管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计电子邮件管理系统.docx(13页珍藏版)》请在冰豆网上搜索。
课程设计电子邮件管理系统
电子邮件管理系统
一目的
将电子邮件管理系统作为课程设计,目的在于学习数据结构理论知识的基础上,将其应用到实践中去,以提高学习的质量和知识的运用能力。
而本次的课程设计的重点是要加深对数据这一抽象名词的理解,对数据的结构有更深层次的看法,巩固对线性表、字符串、图、查找、排序等理论知识的理解,以及要求通过课程设计达到熟练掌握对链表的建立和初始化、对链表进行删除和插入等操作。
此外,还要掌握对现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等),提高利用计算机分析解决综合性实际问题的基本能力。
二需求分析
1、系统需求
随着科技的发展,我们渐渐脱离了通过寄送纸质邮件来交流的方式,现在,我们有了更为便捷的交流渠道——电子邮件。
可是,这样的电子邮件我们不能真真看到实物,只能从中获取我们需要的信息,因此,我们需要有一个可以对电子邮件进行管理的系统来帮助我们处理这一事物。
邮件管理系统,是对邮件进行管理的系统,以求用尽可能少的操作、尽可能快的速度、尽可能友好的界面去管理邮件,从而达到节约人力物力的同时又节约时间的目的。
2、功能需求
电子邮件管理系统除了必要的列出并查看邮件之外,还需要能够删除、修改邮件等等,这样的系统才能叫做邮件管理系统。
通过对电子邮件的分析,邮件信息包括:
邮件的主题、发送人、接收人、邮件内容、邮件的发送时间。
那么,我们可以将电子邮件管理系统的功能分为下面几个方面:
→添加、保存邮件;
→删除、修改邮件;
→查看、搜索邮件;
三概要设计
1、添加邮件
首先我们需要了解邮件的组成,再根据其组成定义一个邮件类型的结构体,添加新的邮件时定义一个指向该结构体的指针,并给该指针分配空间,初始化该空间,之后再按照提示信息对这个空间进行其他操作,这样就成功添加了一封新的电子邮件。
2、对邮件的操作
完成邮件的添加之后,我们的系统还需要对邮件进行操作,有以下功能:
1编辑邮件:
用户能自己编写邮件。
2删除邮件:
管理员能够删除邮件。
3查看邮件:
管理员可以浏览已保存邮件。
4搜索邮件:
管理员能够搜索邮件。
5按时间搜索邮件:
管理员能够在邮件库中查找某个时间段内的邮件。
6保存:
管理员能够将邮件记录保存到文件。
7加载:
管理员能够从文件中加载邮件信息。
3、储存邮件
邮件总于写好了,但这是一封电子邮件,而且,我们事先并不知道邮件的大小与长度,那么,这种情况,我们将采用链表的方式将所有的邮件都链接在一起,再存储,因为这样的顺序结构便于经常的添加与删除。
四详细设计
1、流程图:
2、结构体
鉴于邮件系统经常对邮件进行插入和删除操作,因此我们选择用链式存储结构来设计程序,所以,定义邮件结构体时,我们需要加入一个指向后驱的指针,同时,我们需要对邮件进行排序,因而我们又加入了一个前驱指针。
3、主菜单界面
1.用printf语句显示菜单界面,并对每个功能编号。
2.从键盘获取用户选择的编号,用switch-case语句进入与之对应的子模块。
4、子模块
4.1、编辑邮件—Add()
1.显示提示信息。
2.新建一个链表,并分配空间,用以储存接下来获取的信息。
3.从键盘获取对应的邮件信息,如:
发件人、接收人、主题、内容、发送时间等。
4.为了预防用户编辑完邮件之后忘记在主菜单界面选择将邮件保存到文件中,在添加邮件时,程序自动调用后面的保存函数。
4.2、删除邮件—Delete(&start,&last)
1.提示用户输入欲删除的邮件主题。
2.获取主题后,定义一个指针,指向头结点,遍历整个链表,用strcmp函数寻找该主题的节点,其结果有两种:
1未找到:
则提示未找到该邮件。
2已找到:
则提示正在删除。
a)若为头结点则将头结点的Next做为头结点;
b)若为尾结点,则将前一个结点的Next指针指向NULL;
c)若为中间的结点,则正常删除,如下图。
3.最后用free函数释放要删除的结点的空间。
4.3、查看邮件—List()
1.进入该子程序,立即显示此时所有邮件的基本信息:
发件人、接收人、主题、发送时间,若此时链表为空则提示“暂无邮件!
”。
2.浏览完基本信息后,可以选择输入主题以查看邮件内容,也可以直接按回车返回主菜单。
4.4、搜索邮件—Search()
1.显示提示信息。
2.从键盘获取用户名后,调用Find()函数在链表内寻找第一个匹配项,并显示邮件基本信息。
3.用while循环继续向后寻找,如果存在匹配项则显示信息并继续循环,若不存在则跳出循环。
4.提示键入邮件主题则调用函数以查看邮件内容,回车则返回主菜单。
4.5、分段搜索—Time_Search()
1.显示提示信息,让用户输入起止时间。
2.从键盘获取起止时间。
3.键入错误则提示重新输入,正确则提示键入发送时间段。
4.获取时间后,在链表中进行比较,找到起止结点后,依次显示邮件信息。
4.6、加载邮件—Load()
该步骤不需要与用户进行很多交互,直接进行程序即可。
首先用fopen打开保存邮件的文件,并将地址赋给指针fp,如果fp为空则提示文件打开失败,不为空则进行加载:
和新建文件一样,定义一个新的头结点,并给头结点分配空间,然后用for循环进行加载文件内容。
首先判断fp指针是否为EOF(EndofFile,就是文件结尾标志),若是,则说明加载完成返回主函数,反之则继续加载。
4.3、保存邮件—Save()
定义一个文件类型的指针fp,再用fopen语句新建一个文件用以保存,并将返回的文件指针赋给fp,然后在while循环中用fwrite语句进行对链表结点中的数据进行保存,每保存完一个结点的数据,就将结点指针移动到下一个节点,直到指针指向空为止,这样就完成来了将一个链表输出到文件的操作,最后用fclose(fp)语句结束对数据的保存。
五调试分析
编辑程序的过程中,遇到以下几大问题:
1.参数传递
在调用一个函数的时候,经常忘记指针的符号,使后面调用时,总是提示指针类型的字符与函数定义的形参类型不同。
另外数组的表示也算是一个小问题吧,数组的编辑时,他本就是一个指针,而我还加取地址符或者指针符号。
2.文件读写
在调用fwrite()函数时,采用了wb格式将数据写入文件,b是按位进行储存,因此,从资源管理器直接打开保存的文件查看邮件时,始终是乱码。
3.结构体中的结构体
在结构体中调用其他结构体时,始终出现不能访问的情况,经过多次试验后,发现是没有给调用的结构体分配空间,导致程序出错。
六测试结果
主菜单界面
1.添加邮件
2.删除邮件
3.查看所有邮件
4.搜索邮件
5.按时间段搜索邮件
5.保存与加载
七用户使用说明
1.在主菜单界面直接按回车会立即退出程序。
2.为防止用户编辑完邮件忘记选择保存邮件,所以程序中直接调用了保存函数,自动保存新添加的邮件。
3.编辑两个相同的邮件,程序不会提示重复,请自行在程序中查看邮件信息,或者通过用户名进行搜索该用户名的所有邮件进行查看。
4.按时间段搜索邮件这个功能还不是很完善,只能输入邮件中已有的时间段才能正常显示,超出邮件已有的时间段则会意外退出,所以,该功能能不用就尽量不用。
八课程设计总结
首先,感谢来自各位老师和同学的帮助,在你们的帮助下,基本完成了本次课程设计。
这次课程设计算得上是我的第一个程序设计,通过这次这个课程设计,我真切体会到C语言确实是一门有着严格标准的语言,即便是错一个符号,程序也运行不了对应的功能,同时也想到一个真正完美的程序基本上是不存在的,一定有可以改进的地方,我相信即便是当今世界的那些大企业也绝不能保证他们的程序就一定没有错误。
一个优秀的软件必定是通过多次试用,不断改进再发布,并在后期的使用过程中不断发现错误,不断修改最终趋向于完美。
虽然直到最后程序还是有一点瑕疵,而且老师给的额外任务也没有完成,心情有点小低落,但说实话,内心还是有点兴奋,毕竟这是我编写的第一个比较正规的程序。
恩,下面总结下通过本次课程设计自身的收获:
1对链表的定义和使用有了更深刻的体会,对链表的初始化、插入、删除和排序等操作可以熟练的运用。
2对数组地址的使用有了极大的提高,既可以用指针进行访问也可以直接用数组名,还可以用数组的下标来进行改变其中的数据。
3对于文件操作也有了基本的了解,首先是定义一个文件类型的指针fp,再用fopen语句新建或者打开文件,用fwrite语句对文件进行写入,读写完成之后用fclose语句关闭文件,这样就完成了对一个文件的基本操作。
4一个好的C语言程序,不仅对算法有要求,还要求编程人员的编程风格良好,写的程序需要必要的注释,这样便于以后的修改和阅读,除此之外,一个友好的交互界面也是非常重要的,我在给其他同学调试程序时,其实内心是拒绝的。
总之,通过这段时间的废寝忘食,能感觉到自己的对C语言的知识又有更深的理解,希望以后能继续加强对C语言的学习,不断努力,不断进步,成为C语言的高手,那些无穷无尽的函数真的是有非常强大的功能啊啊,哈哈!
最后再次感谢我的老师和同学!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 电子邮件 管理 系统