C#电子邮箱客户端.docx
- 文档编号:27192281
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:17
- 大小:102.79KB
C#电子邮箱客户端.docx
《C#电子邮箱客户端.docx》由会员分享,可在线阅读,更多相关《C#电子邮箱客户端.docx(17页珍藏版)》请在冰豆网上搜索。
C#电子邮箱客户端
基于C/S程序设计课程设计(论文)
题目:
电子邮箱客户端
程序设计(报告)题目
电子邮箱客户端
程序设计(报告)任务
程序设计的任务与要求:
(1)掌握C#语言编程的基础知识。
(2)较熟练地编写C#语言应用程序。
(3)了解C#语言的常用类、网络编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
第1章课程设计的目的与要求1
1.1课程设计目的1
1.2课程设计的实验环境1
1.3课程设计的预备知识1
1.4课程设计要求1
第2章课程设计内容2
2.1系统功能2
2.2系统设计4
2.3系统实现6
2.4程序的运行和测试9
第3章课程设计总结10
参考资料11
第1章课程设计的目的与要求
1.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C#网络程序开发案例》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C#语言课程的基本知识的理解和掌握
2.掌握C#语言编程和程序调试的基本技能
3.利用C#语言进行基本的网络软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C#语言解决实际问题的能力
1.2课程设计的实验环境
硬件要求能运行Windows2000/XP操作系统的微机系统。
C#语言程序设计及相应的开发环境。
1.3课程设计的预备知识
熟悉C#语言及.NET开发工具。
1.4课程设计要求
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
第2章课程设计内容
2.1系统功能
在开发邮件客户端前,首先需要定义程序的功能。
根据实际需要,邮件客户端主要的功能应该有:
主界面,账户管理,账户属性设置,新建邮件,发送邮件/接收邮件、接收和发送进度显示等。
在服务、容量和功能等方面都有很大的进步,特别是在邮箱的附件功能方面。
这些附件功能主要包括Flash贺卡、垃圾邮件过滤、邮件提醒、邮件查毒、信息定制、相册功能、下载手机铃声等。
这些功能从多方面满足了用户的需求,相信这些附加功能也将是服务商吸引用户的必争之地,也预示着我国的邮件服务市场将朝着大容量、多功能的方向发展。
电子邮件地址的格式为user@hostname,其中hostname为邮件服务器的主机地址。
电子邮件地址的第一部分是用户名(相当于传统邮件中的收信人姓名),由用户自行决定或ISP指定,该名称在同一个主机地址中是唯一的,以便服务器能够正确地将邮件发送到每个收件人的手中。
最初免费电子邮箱大多要求用户使用浏览器打开相应站点,然后输入用户名、密码登录,最后直接在浏览器中在线从事收信、发信等操作(也就是所谓的Web收信方式)。
此方式的优点是操作比较简单,无需任何其它专用软件,只要能上网浏览,就能登录到相关邮件站点收发邮件。
不过该方式有一个突出的缺点,那就是非常浪费时间。
相比而言,使用客户端邮件软件就没有这个缺点。
所谓客户端软件方式是指用户在自己的计算机上安装一些支持电子邮件基本协议的电子邮件软件(如OutlookExpress、Foxmail等),然后由它们将用户的邮件从服务器下载到自己的硬盘中,在离线状态下撰写、阅读邮件。
2.2系统设计
电子邮件又称E-mail,Internet之上的最常用应用功能之一,使用户可以通过Internet交换邮件形式的信息文件。
通常电子邮件是纯文字(即纯文本)的,但是邮件附件却可以是任意信息形式的。
用户在ISP的邮件服务器上建立电子邮箱时取得用户专有的电子邮箱地址,网上其他用户则使用该地址向用户发送邮件。
用户利用E-mail可以实现在Internet上相互快速地传递文件形式的“邮件”信息,“邮件”中可包括数字化的文图音像信息。
电子邮件传输具有以下特点:
1、快速:
与传统的邮政信件相比,电子邮件的时效性非常突出,一个跨洲越洋的邮件,可能只需几秒钟就可以发到对方的“邮箱”中,并且不用麻烦任何人。
2、经济:
在线路畅通的情况下,发出一封电子邮件只需要几秒钟,费用肯定比信件要少;与电话传真相比,也属经济实用。
3、易处理:
电子邮件可以在计算机上修改或调试,易于处理。
4、可靠:
发送电子邮件时,如果遇到对方的计算机未开机,邮件暂时无法发送到达目的地时,Internet上的“邮局”会每隔一段时间自动重发邮件,直到收到对方计算机发来的“已接收邮件”的消息。
如果经过很长一段时间,接收端的计算机仍没有发回收到信息,电子邮件系统会自动通知邮件发送者度退还邮件。
以电子邮件系统为基础,又建立了更高级的应用系统,如称之为“新闻组”的专题论文交换系统,网上传真系统,电子期刊报纸订阅系统等。
其功能流程图如下:
图2.1系统功能流程图
2.3系统实现
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Threading;
usingSystem.Net.Sockets;
usingSystem.Net;
namespaceWindowsApplication1
{
publicpartialclassForm1:
Form
{
publicboolappRun=true;
privateListenerlis;
privateSendersen;
publicForm1()
{
InitializeComponent();
}
publicvoidAddMessage(objectsender,AddMessageEventArgse)
{
RecText.Text+=e.mess;
}
privatevoidstart_Click(objectsender,EventArgse)
{
try
{
lis.listenerRun=false;
lis.Stop();
}
catch(NullReferenceException){;}
finally
{
lis=newListener();
lis.OnAddMessage+=newEventHandler
lis.StartListen();
}
}
privatevoidstop_Click(objectsender,EventArgse)
{
try
{
lis.listenerRun=false;
lis.Stop();
}
catch(NullReferenceException){}
}
privatevoidsend_Click(objectsender,EventArgse)
{
if(ObjText.Text=="")
MessageBox.Show("请输入目标主机名");
elseif(SendText.Text=="")
MessageBox.Show("请输入要发送的内容");
else
{
sen=newSender(ObjText.Text);
sen.Send(SendText.Text);
}
}
privatevoidexit_Click(objectsender,EventArgse)
{
try
{
lis.listenerRun=false;
lis.Stop();
}
catch(NullReferenceException){;}
finally
{
appRun=false;
}
Application.Exit();
}
}
}
publicclassAddMessageEventArgs:
EventArgs
{
publicstringmess;
}
publicclassListener
{
privateThreadth;
privateTcpListenertcp1;
publicboollistenerRun=true;
publiceventEventHandler
publicListener()
{}
publicvoidStartListen()
{
th=newThread(newThreadStart(Listen));
th.Start();
}
publicvoidStop()
{
tcp1.Stop();
th.Abort();
}
privatevoidListen()
{
try
{
IPAddressaddr=newIPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address);
IPEndPointipLocalEndPoint=newIPEndPoint(addr,5656);
tcp1=newTcpListener(ipLocalEndPoint);
tcp1.Start();
while(listenerRun)
{
Sockets=tcp1.AcceptSocket();
stringremote=s.RemoteEndPoint.ToString();
Byte[]stream=newByte[512];
inti=s.Receive(stream);
stringmsg="<"+remote+">"+System.Text.Encoding.UTF8.GetString(stream);
AddMessageEventArgsarg=newAddMessageEventArgs();
arg.mess=msg;
OnAddMessage(this,arg);
}
}
catch(System.Security.SecurityException)
{
MessageBox.Show("防火墙禁止连接");
}
catch(Exception)
{
MessageBox.Show("监听已停止");
}
}
}
publicclassSender
{
privatestringobj;
publicSender(stringstr)
{
obj=str;
}
publicvoidSend(stringstr)
{
try
{
TcpClienttcpc=newTcpClient(obj,5656);
NetworkStreamtcpStream=tcpc.GetStream();
Byte[]data=System.Text.Encoding.ASCII.GetBytes(str);
tcpStream.Write(data,0,data.Length);
tcpStream.Close();
tcpc.Close();
}
catch(Exception)
{
MessageBox.Show("连接被目标主机拒绝");
}
}
}
2.4程序的运行和测试
电子邮箱业务是一种基于计算机和通信网的信息传递业务,是利用电信号传递和存储信息的方式为用户提供传送电子信函、文件数字传真、图象和数字化语音等各类型的信息。
电子邮件最大的特点是,人们可以在任何地方时间收、发信件,解决了时空的限制,大大提高了工作效率,为办公自动化,商业活动提供了很大便利。
我们所做的电子邮箱客户端主要分为四大部分:
一、主界面
邮箱客户端主界面,如图2.1所示。
在主界面中包含了主菜单和工具栏,以便于执行具体的命令。
左侧TreeView控件用于显示保存邮件的分类目录,选择不同的分类目录会在其右侧的ListView中显示该目录中保存的所有邮件,单击一个具体的邮件会在右侧下面显示该邮件的具体内容。
图2.2电子邮箱主界面
主界面中的“邮件”菜单包含如下几个命令:
1、“新建”命令:
用于新建一个邮箱。
2、“删除”命令:
用于删除选中的邮件。
如果没有在ListView中选中具体的邮件,则操作没有任何作用。
如果邮件在“垃圾箱”中,执行该命令后邮件将被彻底删除。
如果邮件在其他邮箱中,执行该命令后会把邮箱移动到“垃圾箱”中。
3“退出”命令:
退出程序。
二、账户管理
帐户管理功能可以添加和删除帐户、设置帐户的属性。
单击主窗口“设置”菜单中的“邮箱设置”命令会打开“设置邮箱”对话框,如图2.12所示。
图2.3账户管理的“设置邮箱”对话框
图2.4“邮件设置”选项卡
单击“新建”按钮可以添加新账户。
先中某个账户,单击“删除”按钮,可以删除该账户。
若设置账户属性,在“设置邮箱”对话框中选取中某个邮件账号后,单击“属性”按钮可以打开“设置属性”对话框以设置邮件的详细属性,如图2.12所示。
“设置属性”对话框有三个选项卡,其中“邮件设置”选项卡列出了电子邮件地址和电子邮箱的类型。
三、新建邮件
在发送邮件时,需要首先新建一个邮件。
选择“邮件”菜单中的“新建”命令后,打开“新建邮件”窗口,如图2.13所示。
在该对话框中可以输入发送邮箱地址、接收邮箱地址、抄送地址、邮件主题和邮件正文。
输入完成后,单击工具栏“保存”按钮会把邮件保存在“草稿箱”目录中;单击工具栏“发送”按钮,会把邮件保存在“发件箱”目录中等待发送。
图2.5“新建邮件”窗口
四、接收/发送邮件
从指定的邮箱中接收邮件后,接收的邮件保存在“收件箱”中。
在发送邮件时,会自动检查“发件箱”目录中是否有待发邮件,如果没有就退出操作,如果有就逐个发送邮件。
接收和发送邮件时,窗口会显示当前的发送进度。
当邮件成功发送后,会被自动移动到“已发送”目录中,无论是接收邮件还是发送邮件支委会显示当前操作的进度,接收和发送的信息一般都是由操作命令和服务器的响应组成的。
第3章课程设计总结
通过对数据结构的课程设计,我了解并发现了很多调试程序的方法,而且懂得了如何处理错误的方法。
对C语言的使用得到了进一步的提高。
针对数据结构的书本知识得到了进一步的巩固,具体化就是加深了我对线性表的结构的理解,栈和队链认识,二叉树的的应用,查找的方法,数的排序等。
对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个好的结构在运行中能够充分的发挥程序的功能。
结构设计的合理性决定了这个程序的价值。
在今后的学习中我要注意这方面,使得我的编程能力能有进一步的提高。
学写程序自己一定先要把框架打好,已经程序间的联系一定要想清楚,这次失败的主要原因就是没有先写明白具体的框架,具体某个类要实现的功能,某个类里面要的一些具体变量和这变量所起的作用一定要在开始就描述清楚,已经一些函数功能的实现也要开始想好,这样在编写代码的时候逻辑关系搞的会比较清楚,编写程序的时候不会因为程序庞大而把搞的太复杂,最后自己也搞乱了,搞不清楚变量和函数的关系,终于理解到编程的开始工作很重要,好的开始就成功了一大半。
其实写代码才是时间花的最少的。
在这几天的学习中,我体会到老师对我们实训的目的,以及实训对每个人综合能力的检验。
对自己平时积攒下来的知识那么少感到是多么的羞愧,通过实训我能充分的学习到一些平时书本上学不到的知识、与自己的动手操作能力。
并且结合此次实训我能够通过上网或者是在图书馆查询一些相关的资料。
通过这一过程,使我学会了很多,以前有好多时间都没有认真学习,此次实习,我深深体会到了积累知识的重要性。
经历了这次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。
我相信在未来的生活中不论遇到什么困难我都会向这次学习C程序一样,一步一步解决问题找出问题的实质,加以解决。
没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进。
参考资料
[1]张萌.VisualStdio.NET标准教程.北京希望电子出版社
[2]谭浩强.C#实用教程.电子工业出版社
[3]陆浩.VisualC#.NET应用技术教程.天津出版社
[4]鲁飞.C#应用技术.北京邮电出版社
[5]黄凯涛等.C#学习教程.北京大学出版社
[6]那荣华.VisualC#.NET管理教程.武汉大学出版社
[7]路云哲.C#应用技术教程.南京边城出版社
[8]高美.C#应用技术.北京教育出版社
[9]郭瑶.VisualStdio.NET学习教程.长春工业大学出版社
[10]邵云那.VisualStdio.NET应用教程.吉林大学出版社
[11]李玲,桂玮珍,刘莲英.C语言程序设计教程.人民邮电出版社
[12]卢鹏丽.C++语言上机指导实用教程.机械工程出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 电子邮箱 客户端