毕业设计论文VC ++MFC电子邮件客户端发邮件_第1页
毕业设计论文VC ++MFC电子邮件客户端发邮件_第2页
毕业设计论文VC ++MFC电子邮件客户端发邮件_第3页
毕业设计论文VC ++MFC电子邮件客户端发邮件_第4页
毕业设计论文VC ++MFC电子邮件客户端发邮件_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科生毕业设计基于VC+的电子邮件客户端的设计与实现Design and implementation of VC+ Mail Client system学生姓名所在专业信息管理与信息系统所在班级申请学位工学学士指导教师职称高级工程师答辩时间2015年 5 月 30 日目 录目 录II设计总说明I1项目概述11.1开发背景11.2开发现状11.3意义12可行性分析32.1 技术可行性32.2 用户可行性32.3法律可行性32.4结论43 需求分析53.1 整体目标53.2 功能需求53.3 系统功能建模53.3.1业务流程图53.3.2数据流程图73.3.3数据字典93.4 概念模型设计104

2、 概要设计124.1 数据模型设计124.1.1关系模式设计124.1.2物理结构设计124.2 体系结构设计134.2.1 HIPO图134.2.2 IPO图144.3 输入输出设计164.3.1 输入设计164.3.2 输出设计175 详细设计205.1邮箱账户管理模块205.2联系人信息管理模块205.3邮件管理模块215.4系统管理模块215.5程序流程图216 系统实现236.1创建和连接数据库236.2系统主框架246.3账户管理模块296.4联系人管理模块326.5邮件功能模块337 测试427.1 测试的方法427.2 系统主要测试用例举例427.3 功能评定44鸣谢45参考文

3、献46设计总说明本文主要阐述了基于VC+电子邮件客户端的设计与实现,较为系统地介绍了电子邮件用户的登录、收发电子邮件、邮件目录操作、邮件群发、通讯录建立与维护等功能。邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收服务器)。发送邮件服务器使用邮件发送协议,现在常用的是SMTP,所以通常发送邮件服务器也称为SMTP服务器;接收邮件服务器使用接收邮件协议,常用的有POP3协议和IMAP协议,所以通常接收邮件服务器也称为POP3服务器或IMAP服务器。本系统使用了面向对象的软件开发方法,按照软件工程的基本步骤对系统进行分析、设计和实现。关键词: 电子邮

4、件,邮件服务,邮件客户端INTRODUCTIONThis paper mainly discusses VC+ E-mail system based on the design, realization and systematically introduces the email login, email, mail, E-mail group operating directory, contacts the establishment and the maintenance etc. Function. Mail server according to provide service

5、type, can be divided into the email server (referred to send and receive E-mail servers server) (hereinafter referred to as the receiving server). Send mail server use email to send agreement, now commonly used is so often send e-mails SMTP server is also called SMTP server, Receiving mail server us

6、e E-mail agreement, commonly have POP3 and IMAP protocol, so usually receive E-mail server also called POP3 server or IMAP server.The Mail System using the object-oriented software development method, in accordance with the basic steps of software engineering are system analysis, design and Implemen

7、tation Keywords: E-mail Mail Service Mail client 基于VC+的电子邮件客户端的设计与实现信息管理与信息系统,指导教师:xxx作者Q 2792310853,可帮调试此系统系统及演示 .视 .频毕业设计说明书1项目概述1.1开发背景随着互联网的不断发展,越来越多的企业单位通过电子邮件来协同工作,打破时间与地域的限制,大大提高了工作效率。电子邮件已地经成为人们生活中不可缺少的一部分。但是,当前流行的各大邮件客户端软件除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华

8、丽而不实用。所以这次的毕业设计,我选择了制作一个操作简单,又可以实现最基本的电子邮件的收发功能的工具。1.2开发现状电子邮件E-mail是Internet最基本的和最重要的服务之一。据统计,Internet上百分之三十以上的业务量是电子邮件。由于我国的通讯基础设施较差,网络速度较慢,因而,与Internet其它功能如WWW、FTP、NEWS等相比,电子邮件服务具有更大的实用性。CINNIC中国互联网络发展状况统计报告中指出。71.65%的中国用户最常使用的网络服务就是电子邮件,这个比例远远高于搜索引(50.40%)和软件上传或下载服务(44.16%)等其他服务。1.3意义 随着互联网的普及,国

9、内外的互联网用户数呈指数增长。为满足不断增长的信息交流需要,作为因特网第一应用的电子邮件系统变得越来越重要。随着网络环境的建设与完善,许多用户已经提出这样的要求:拥有自己的电子邮件系统。国外的电子邮件系统可真叫四通八达,这种手段已经成为他们通信最流行的几种方式之一了。相比较国内,电子邮件系统还不算太完善,电子邮件通信的方式还不算太流行,如何才能把这种方式大众化、流行化呢?这还需要我们去认识它、了解它、使用它。国外已经有了许许多多的电子邮件系统,国内也有一些这样的系统,我觉得这些还不够充实这个庞大的流行团体,所以我自己要开发一个简单的属于我自己的电子邮件系统,来满足我及其他用户的需要。2可行性分

10、析 可行性分析是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、操作、法律等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见,为项目决策提供依据的一种综合性的系统分析方法。可行性分析应具有预见性、公正性、可靠性、科学性的特点。2.1 技术可行性系统将采用以下技术:(1)采用OOP方法进行程序设计,选择Visual Studio 2013为开发工具。(2)采用 ACCESS作为数据库平台,并采用JDBC的连接技术使应用程序

11、与数据库连接,从使用性来说更加灵活。在大学本科四年的学习过程中对以上技术的使用我都已经得到了充分的锻炼,并且学校注重实践能力,组织进行多次课程设计来让我获得相关经验。因此利用我所掌握的技术,在系统实现方面技术是可行的。2.2 用户可行性 本系统是一个电子邮件客户端,操作简单且易用,用户使用时并不需要对整个邮件服务器的工作流程进行了解,只需按操作提示即可轻松完成收发邮件。2.3法律可行性此系统学生完全凭借自已的软件开发技术进行开发,系统开发所用软件为正版的Visual Studio和ACCESS。系统开发中坚决遵守自主开发的原则,绝不借用其他相关系统的代码,系统架构和完成符合双方协定,所有涉及操

12、作、使用软件均为正版,且该软件各项指标不违反相关法律法规,技术资料都由提出方保管,数据信息均可保证合法来源,故不会涉及到软件侵权等相关事宜。2.4结论综上所述,使用本系统将大大节省人力、物力和才力,客户得到更佳的使用体验,符合社会信息化发展的需要。因此开发电子邮件客户端系统是完全可行的。3 需求分析 软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效怀需求。需求分析阶段研究的对象是软件项目的用户要求。一方面,必须充分了解用户的各种要求,但又不能全盘接受全部的要求,另一方面,要准确地表达被接受的用户要求。只有经过确切描述的软件需求才

13、能打下坚实的软件设计的基础。3.1 整体目标本邮件程序可以同时管理多个邮箱账号,实时提醒,可以发送附件、图片。支持邮件群发,黑名单。而作为一个企业或学校,应该有一个自己的邮件服务器及邮件收发程序,防止信息泻密及广告骚扰。而且没有容量限制,告别网络免费邮因不稳定或网络故障带来的不能查看邮件的不便。3.2 功能需求使用本软件要求用户比较熟悉Windows 操作系统,并且具备一定的软件操作基础。 应用环境以Internet/Intranet技术为核心。软件采用B/S结构开发,主要包含邮件收发、账号管理、用户管理、邮箱管理功能。3.3 系统功能建模本系统采用结构化的分析方法,采用业务流程图来表达系统功

14、能的运行以及数据的流向和定义。3.3.1业务流程图业务流程图简称TFD,这是用来描述系统内各功能模块之间业务关系、作业顺序和管理信息流向的图表,利用它可以帮助分析业务流程中的不合理流向,为了使业务流程图所描述业务结构更加清晰,容易阅读。下面为该图符号作相关说明:业务流程图的符号说明见表3-1。表3-1业务流程图符号说明图形符号符号说明或表示输入输出的报表、计划、单据或报告,框内写明其名称。表示单位或个人,圈内写明单位或个人职务的名称。表示各种账目、规范、定额手册、报表积累等大量存档信息,符号内部写明其名称。表示业务处理,框内写明处理的名称。表示信息或处理的流向。电子邮件系统业务流程图如图3-1

15、所示。图3-1电子邮件系统业务流程图 用户写邮件收邮件联系人管理账户管理系统设置发件信息收件信息联系人信息账户信息系统信息系统信息账户信息系统设置联系人信息收件信息发件信息账户管理联系人管理 用户收邮件写邮件图3-1电子邮件系统业务流程图3.3.2数据流程图数据流程图简称DFD,它用来描述目标系统的逻辑结构,它是由实体部分、处理部分、数据存储部分和数据流部分四部分组成,为了使数据流图所描述逻辑结构更加清晰,容易阅读,对数据流图作如下说明:(1)每一细化过程的实体、处理、数据流都用汉字标识,并给出相应的标号。(2)数据流程图符号说明。数据流图的符号说明见表3-2。表3-2数据流程图符号说明图形符

16、号名称符号说明PMC实体记述系统之外的数据提供或数据获得组织机构或个人,框内为实体名称。处理记述某种业务的手工或计算机处理,其中,PM区记述处理标号,C区记述处理名称。DN S数据存储记述与处理有关的数据存储,DN区记述存储的标号,S区记述存储数据的名称FM数据流记述数据流的流动方向,FM记述数据流的名称。电子邮件系统数据流程图如图3-2至3-3所示。P用户操作结果用户操作信息用户用户电子邮件系统 图3-3用户子系统数据流图 图3-2 电子邮件系统顶级数据流程图 P1用户子系统F1发件信息D1 发件信息表D1 系统信息表D1 账户信息表F5系统信息F4账户信息D3 联系人信息表 F3联系人信息

17、F2收件信息D2 收件信息表3.3.3数据字典数据字典是系统中各类数据描述的集合,是进行详细的数据的收集和数据分析秘获得的主要成果。数据字典是对DFD中所有元素(数据流、数据存储、数据流及数据存储中的数据元素、数据处理)的定义和集合。它们的定义常常是以卡形式给出的,数据流定义用数据流卡,数据存储定义用数据存储卡,数据处理定义用数据处理卡,数据元素定义用数据元素卡。数据字典在数据库设计中占据了十分重要的地位。电子邮件系统数据字典如表3-3至3-8所示。表3-3 发件信息数据字典名字:发件信息别名:发件信息记录描述:记录已发邮件的编号,邮件主题、邮件正文、附件定义:发件信息=邮件编号+邮件主题+邮

18、件正文+附件表3-4 收信息数据字典名字:收件信息别名:收件信息记录描述:存放已接收邮件信息的数据表,以供用户查阅定义:收伯信息=邮件编号+邮件主题+邮件正文 表3-5 联系人数据字典名字:联系人信息别名:联系人描述:存放联系人信息的数据表,以供用户查询,并作相应操作定义:订单=订单编号+订单金额 表3-6 邮箱账户数据字典名字:邮件账户别名:账户信息描述:存放邮箱账户信息的数据表,以供用户查阅账户信息,并作相应操作定义:购物车=购物车编号+购物总额 表3-7 系统信息数据字典名字:系统详情别名:系统详情信息描述:存放系统信息的文件,以供用户查阅系统详情信息,并作相应设置定义:系统详情=系统详

19、情信息3.4 概念模型设计概念设计是一种面向对象的数据模型,是根据用户的观点来对数据和信息进行建模。它描述了从用户角度看到的数据,它反映了用户的实现环境,这种方法用ER图描述现实世界中的实体,而不涉及这些实体在系统中的方法。概念设计中最著名的方法之一就是实体联系方法(ER方法),建立ER模型,用ER图描述概念结构,得到数据库的概念模型。为了使ER图所描述逻辑结构更清晰,更易读,下面对ER图作进行说明:(1)ER图的符号说明见表3-3。表3-3ER图符号说明图形符号名称符号说明实体属性联系 用矩形表示,矩形框内写明实体名。用椭圆形表示,椭圆内写明属性名称,并用连线与实体连接起来。如果属性较多,为

20、使图形更加简明,有时也将实体与其相应的属性另外单独用列表表示。用菱形表示,菱形框内写明联系名,并用连线分别与有关实体连接起来,同时在连线旁标上联系的类型。ER模型中包含“实体”,“联系”和“属性”。在本系统中,多对多的关系用(m-n)表示。电子邮件系统总体ER图如图3-8所示。主题n1n1接收n1管理正文n1管理 密码发件人账号邮箱地址姓名管理n1邮箱账户 发送邮件联系人用户图3-8 电子邮件系统总体ER图 4 概要设计4.1 数据模型设计数据模型设计是软件开发的灵魂和根本,关系到整个系统成功与否,是开发高品质应用的前提,鉴于数据库设计的重要性,设计过程应按照概念模型设计关系模型设计物理数据库

21、设计的步骤进行。4.1.1关系模式设计关系模式设计是由系统的概念模型导出关系模式。将一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键。先确定该联系的类型,再确定相应的键。最后进行规范化处理,求出关系模式中的最小依赖集,并依据规范化理论,将关系模式规范到三范式。依据上述原则,得出本系统的关系模式:(1)邮箱账户表(邮箱账户,邮箱密码,备注名,POP3,SMTP,状态)(2)联系人信息表(联系人邮箱,姓名,电话,地址,备注,黑名单)(3)邮件信息表(邮件编号,接收人,发送人,邮件主题,邮件正文,修改时间,类型,已读,已删)4.1.2物理结构设计下面将主要介绍关键数据表的

22、数据库设计的详细说明,见表4-1至表4-3。1)t_account数据表存储了邮箱账户信息,表结构如表4-1所示:表4-1 t_account 数据表字段名称数据类型字段大小备注userjie文本50帐户名passwordjie文本50账户密码namejie文本50备注名POP3jie文本50POP3服务器SMTPjie文本50SMTP服务器statusjie文本50默认发件账户2)t_contact数据表存储了联系人信息,表结构如表4-2所示:表4-2 t_contact数据表字段名称数据类型字段大小备注mail文本50联系人邮箱、主键name文本5050联系人姓名Phone1文本50联系人

23、电话1Phone2文本50联系人电话2address文本50联系人地址remark备注65535备注blacklist文本50黑名单3)t_message数据表存储了收发邮件的相关信息,表结构如表4-3所示:表4-3 t_message数据表字段名称数据类型字段大小备注Id长整型11自动编号、主键receiver备注65535收件人列表sender文本50发件人theme备注6553邮件主题body备注65535邮件正文lastTime文本50修改时间type文本50邮件类型IsRead文本50已读IsDelete文本50已删4.2 体系结构设计4.2.1 HIPO图 根据对系统需求分析中的总

24、体目标和具体目标的分析,得到系统的功能树如图4-3所示。添加联系人删除联系人联系人管理快速查找系统设置恢复数据备份数据系统管理 修改账户删除账户邮件收发 添加账户邮件删除邮件管理账户管理模块电子邮件客户端图4-3 电子邮件系统结构图4.2.2 IPO图(1)邮箱账户管理功能:该功能是实现邮箱账户管理功能,其IPO图如下输入(input)输入邮箱账户用户名(varchar(50)输入邮箱账户密码(varchar(50) 输出(output)输出相应的信息提示处理(process)将所录入的信息存入数据库(1)(1)(2)(3)(2)联系人管理输入(input)输入联系人的邮箱地址、姓名等相关信息

25、该功能是将联系人的相关信息写入数据库保存起来以便用户查询和向相应联系人发送邮件,IPO图如下 输出(output)输出添加联系人后的相应信息提示处理(process)实现将联系人所有信息保存到数据库中(3)邮件管理该功能是将接收到或已发送的邮件信息写入数据库保存起来以便用户查阅,其IPO图如下输入(input)输入:邮件的收件人,主题,正文等相关信息接收:邮件发件人,主题,正文等相关信息处理(process)实现将接收或发送的邮件保存到数据库中去 输出(output)输出添加类别后结果的相应信息提示(4)系统管理通过该功能可备份还原数据库,避免本邮件系统数据的丢失,其IPO图如下:输入(inp

26、ut)输入:数据库备份路径 输出(output)输出备份处理的提示信息处理(process)关闭系统数据库连接并制作当前数据库的拷贝到输入的路径。4.3 输入输出设计4.3.1 输入设计输入设计担负着将系统外的数据以一定的格式送入计算机,输入设计的一条重要原则是确保系统输入的信息准确无误。如图4-4、4-5所示。图4-4新邮件信息输入图图4-5 邮箱账户信息输入图4.3.2 输出设计输出主要是指文字的输出和查询的输出,本系统输出设计如图4-6所示。图4-6 邮件列表输出图4.4 接口设计数据库这一概念提出后,先后出现了几种数据模型。其中基本的数据模型有三种:层次模型系统、网络模型系统、和关系模

27、型系统。六十年代末期提出的关系模型具有数据结构简单灵活、易学易懂且具有雄厚的数学基础等特点,从七十年代开始流行,发展到现在已成为数据库的标准。目前广泛使用的数据库软件都是基于关系模型的关系数据库管理系统。1.用户接口 本产品的用户一般需要通过终端进行操作,进入主界面后点击相应的窗口,分别进入相对应的界面(如:输入界面、输出界面)。用户对程序的维护,最好要有备份。2.软件接口 windows7/8操作系统,汉语编程系统。5 详细设计在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不必要的人力和物力。5.1邮箱账户管理模块(1)模块编号:P0101(2)模块名称

28、:账户管理(3)模块功能:增加、删除、查询账户,设置、修改账户密码。(4)输入项目:账户名、账户密码、标识、POP3、SMTP。(5)输出项目:账户名、标识、POP3、SMTP。(6)算法:insert into account(userjie,passwordjie,namejie,pop3jie,smtpjie) values('账户名','账户密码','标识','POP3','SMTP')Delete from tb_user where 条件update account set passwordjie=&#

29、39;新密码',namejie='新标识',pop3jie='新POP3',smtpjie='新SMTP' where userjie='账户名'select * from account where userjie='账户名'5.2联系人信息管理模块(1)模块编号:P0201(2)模块名称:联系人信息管理(3)模块功能:增加、删除、修改、查询联系人(4)输入项目:联系人姓名、邮箱、电话、地址。(5)输出项目:联系人信息列表。(6)算法:insert into contact(name,mail,phone

30、1,phone2,address,remark,blackList) values('姓名','邮箱','电话1','电话2','地址','备注','黑名单')delete from contact where mail='邮箱'select * from contact ORDER BY blackList,nameupdate contact set name='姓名',phone1='电话1',phone2='电话2

31、9;,address='地址',remark='备注',blackList='黑名单' where mail='邮箱'5.3邮件管理模块(1)模块编号:P0301(2)模块名称:邮件管理(3)模块功能:新建、保存、接收邮件信息(4)输入项目:收件人、邮件主题、邮件正文、附件。(5)输出项目:邮件信息列表。(6)算法:insert into message(receiver,sender,theme,body,lastTime,type) values('收件人','发件人','邮件主题

32、9;,'邮件正文','修改时间','已发送')5.4系统管理模块(1)模块编号:P0401(2)模块名称:系统管理(3)模块功能:备份或还原数据库(4)输入项目:数据库备份路径或要还原的数据库路径。(5)输出项目:数据库操作结果提示。5.5程序流程图本系统设计程序所采用的程序流程图如下。 联 系 人 管 理图5.1 邮件系统流程图 邮 件 管 理 账 户 管 理 系 统 管 理开始结束功能选择主界面6 系统实现本设计是基于VC+的电子邮件客户端系统。软件作为系统与用户直接交互的媒介,在实现完善的功能的同时,也考虑到了管用户操作的简单性和方便性。并

33、且对界面进行设计。6.1创建和连接数据库本次设计的基于VC+的电子邮件客户端系统分为两部分,前台软件和后台数据库。因此首先需要在JDBC中创建系统所用的数据库,数据库的表结构和关系已在上一章中介绍,不再重复对于任何数据库进行操作之前,都需要先进行连接,而连接过程中必须加载JDBC驱动程序。JDBC使用的驱动程序可以是一个本地模块。如JDBCODBC桥,也可以是一个动态链接库。本程序通过特定的协议在网络上与服务器进行通信。CAccessDB类主要是对数据的操作,如连接、关闭数据库及执行SQL语句操作数据库。每一种操作对应一个方法。(1)导入所需的动态链接库,代码如下:#import "

34、C:Program FilesCommon FilesSystemadoMSADO15.DLL" no_namespace rename ("EOF", "adoEOF") (2)创建获取数据库连接的方法,方法中使用_ConnectionPtr类的CreateInstance方法获取一个Connection类实例,即获取一个数据库连接。代码如下: CString strSQL;_ConnectionPtr pConn;/连接对象指针_bstr_t bstr;_RecordsetPtr pRst = NULL;pRst.CreateInstanc

35、e(_uuidof(Recordset);CoInitialize(NULL);/初始化系统环境pConn.CreateInstance(_uuidof(Connection);/创建连接tryprovider.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;persist security info=false;Jet OLEDB:Database Password=daf82sadfADSF65a=+d5", GetAccessRoute();pConn->Open(_bstr_t)provider

36、, "", "", adModeUnknown);/打开数据库连接bstr = (_bstr_t)strSQL;pRst = pConn->Execute(bstr, NULL, adCmdText);/执行SQL语句catch (_com_error e)AfxMessageBox(L"SQLExecute() Error!" + e.Description();Close();(3)创建对数据库进行关闭的close()方法,在该方法中主要是通过调用_RecordsetPtr类对象的Close()方法实现对数据库的关闭,代码如

37、下: public void Close() if (pConn)pConn->Close();if (pRst)pRst->Close();6.2系统主框架本系统采用B/S模式,后台使用Access作为后台的数据管理系统,而在前台使用MSADO15.DLL动态链接库组件来调用存储过程的。SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。它

38、具有简单,高效,功能强大等特点,一直是广大程序员喜爱的编程工具,并且运用C+作为编程语言。C+具有面向对象编程语言所应有的的一切特性,如封装,继承和多态。在 C+众多的优势中,它在数据库方面的特长显得尤为突出:适合于多种数据库结构,从客户/服务机模式到多层数据结构模式,而且C+编写的代码具有更好的可读性,而且减少了发生命名冲突的可能。本系统摒弃了传统的下拉式菜单,采用了Ribbon功能区。它是新的Microsoft Office Fluent用户界面(UI)的一部分。它是一人收藏了命令按钮和图示的面板。它把命令组成一组“标签”,每一组包含了相关的命令。每一个应用程序都有一个不同的标签组,展示了

39、程序所提供的功能,非常的华丽、直观。主框架运行效果如图6-2所示。图6-2 系统主框架本程序难度最大、开发耗时最长的就是主框架的开发以及邮件功能模块的开发。主框架开发时在切割功能区时遇到了很多问题,经过不懈的努力,终于将功能区一分为二,左边是分类按钮,右边是相应的经过筛选的邮件列表。核心代码如下:BOOL CMainFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)if (!m_wndSplitter.CreateStatic(this, 2, 1)return FALSE;if (!m_wndSplitter

40、.CreateView(0, 0, RUNTIME_CLASS(CToolView), CSize(0, 0), pContext)return FALSE;m_toolview = (CToolView*)m_wndSplitter.GetPane(0, 0);/注意先后顺序,不然绝对杯剧,轻则后期无法添加数据,重则崩溃if (!m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CMessageList), CSize(100, 100), pContext)return FALSE;m_messageList = (CMessageList*)m_w

41、ndSplitter.GetPane(1, 0);return CFrameWndEx:OnCreateClient(lpcs, pContext);程序功能区的邮件列表的显示及删除、删除等操作都是基CMessageList类来完成的。CMessageList类继承于CListView类,并在此基础上添加了全选、双击、多选操作及刷新邮件列表的响应方法。CMessageList类初始化操作如下:void CMessageList:OnInitialUpdate()CListView:OnInitialUpdate();LONG lStyle;lStyle = GetWindowLong(m_hW

42、nd, GWL_STYLE);/获取当前窗口风格 lStyle &= LVS_TYPEMASK; /清除显示方式位lStyle |= LVS_REPORT; /设置报表风格 SetWindowLong(m_hWnd, GWL_STYLE, lStyle); /设置窗口风格/m_list->SetExtendedStyle(m_list->GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES);DWORD styles = LVS_EX_FULLROWSELECT |

43、LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES;ListView_SetExtendedListViewStyleEx(m_hWnd, styles, styles);/m_list.SetBkColor(RGB(200, 200, 200); /设置背景颜色 /m_list.SetTextBkColor(RGB(200, 200, 200); /设置文本背景颜色 /m_list.SetTextColor(RGB(10, 10, 80); /设置文本颜色 /插入列的标题 GetListCtrl().InsertColumn(0, L"SEL", L

44、VCFMT_CENTER, 40);GetListCtrl().InsertColumn(1, L"ID", LVCFMT_CENTER, 50);GetListCtrl().InsertColumn(2, L"发件人", LVCFMT_CENTER, 130);GetListCtrl().InsertColumn(3, L"收件人", LVCFMT_CENTER, 130);GetListCtrl().InsertColumn(4, L"状态", LVCFMT_CENTER, 50);GetListCtrl().

45、InsertColumn(5, L"主题", LVCFMT_CENTER, 130);GetListCtrl().InsertColumn(6, L"正文", LVCFMT_CENTER, 130);GetListCtrl().InsertColumn(7, L"时间", LVCFMT_CENTER, 180);当双击功能区的邮件列表中的某一条记录时,打开邮件编辑器,可以对此条记录进行相应的修改及发送操作,函数代码如下:void CMessageList:OnLButtonDblClk(UINT nFlags, CPoint poin

46、t)/ TODO: 在此添加消息处理程序代码和/或调用默认值int nHitItem = m_list->HitTest(point, NULL);if (nHitItem >= 0)/CString ID, receiver, sender, theme, body, lastTime, type, IsRead, IsDelete;ID = m_list->GetItemText(nHitItem, 1);strSQL.Format(L"update message set IsRead='' where ID=%s", ID);db.

47、SQLExecute(strSQL, &boolresult);sender = m_list->GetItemText(nHitItem, 2);receiver = m_list->GetItemText(nHitItem, 3);/AfxMessageBox(receiver);/IsRead = m_list->GetItemText(nHitItem, 4);theme = m_list->GetItemText(nHitItem, 5);body = m_list->GetItemText(nHitItem, 6);/lastTime = m_

48、list->GetItemText(nHitItem, 7);/AfxMessageBox(body);CMailEditerDlg dlg;/dlg.ID = ID;dlg.sender = sender;dlg.receiver = receiver;/dlg.IsRead = ID;dlg.theme = theme;dlg.body = body;dlg.IsSave = true;/dlg.lastTime = IDlastTime;CMainFrame *pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;pMain->Upd

49、atePosition();dlg.DoModal();CListView:OnLButtonDblClk(nFlags, point);在对邮件列表的管理方面,集成了全选和自由选择的功能,可以对邮件进行自由删除和移动,方法代码如下:int CMessageList:OnDelTheSelected()UpdateData();/刷新窗口数据,否则取消打勾仍被程序视为打勾状态int selCount = 0;CString selID;for (int i = 0; i < m_list->GetItemCount(); i+)if (m_list->GetItemState

50、(i, LVIS_SELECTED) = LVIS_SELECTED | m_list->GetCheck(i)selCount+;selID = m_list->GetItemText(i, 1);strSQL.Format(L"delete * from message where ID=%s", selID);db.SQLExecute(strSQL, &boolresult);if (selCount = 0)AfxMessageBox(L"请在SEL一列中打勾");return selCount;6.3账户管理模块 本电子邮

51、件系统因为涉及到个人账户密码信息的管理等安全性需求较高的功能,因此对数据库进行加密。1)设计思路首先创建添加邮箱账户对话框并关联到类CUserDlg。其次,账户信息中的数据关系到用户的个人信息,必须保证其安全性。本系统不提供账户自主注册功能,用户的注册都需要在对应电子邮箱服务器中进行。最后,因为登录界面是整个系统的门面,所以程序界面稍作设计,使其看起来简洁美观。 2)技术分析(1)添加邮箱账户并保存时,会查询数据库中是否已有此邮箱账户,如果已有,则提示是否修改,如果没有,则自动创建。的方法如下:void CUserDlg:OnBnClickedSave2()SetDlgItemText(IDC

52、_INFO, L"");GetDlgItemText(IDC_MAIL, mail);GetDlgItemText(IDC_PASSWORD, password);if (!db.IsMailAddress(mail)|password.IsEmpty()AfxMessageBox(L"请输入密码和正确的邮箱地址!");elseGetDlgItemText(IDC_REMARK, remark);GetDlgItemText(IDC_POP3, pop3);GetDlgItemText(IDC_SMTP, smtp);strSQL.Format(L&qu

53、ot;select * from account where userjie='%s'", mail);if (db.IsRecordExist(strSQL)if (MessageBox(L"是否修改已有账号?", L"", MB_ICONWARNING | MB_YESNO) = IDYES)strSQL.Format(L"update account set passwordjie='%s',namejie='%s',pop3jie='%s',smtpjie=

54、9;%s' where userjie='%s'", password, remark, pop3, smtp,mail);db.SQLExecute(strSQL,&boolresult);if (boolresult)SetDlgItemText(IDC_INFO, L"修改账号成功!");elseSetDlgItemText(IDC_INFO, L"出错啦:>_<:n修改账号失败!");else/if (MessageBox(L"此账号不在数据库中,是否创建?", L"", MB_ICONQUESTION | MB_YESNO) = IDYES)strSQL.Format(L"insert into ac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论