11CMFC课程设计之文件传输局域网FTP

上传人:仙*** 文档编号:37461237 上传时间:2021-11-03 格式:DOC 页数:30 大小:3.07MB
返回 下载 相关 举报
11CMFC课程设计之文件传输局域网FTP_第1页
第1页 / 共30页
11CMFC课程设计之文件传输局域网FTP_第2页
第2页 / 共30页
11CMFC课程设计之文件传输局域网FTP_第3页
第3页 / 共30页
点击查看更多>>
资源描述
#大学C+面向对象课程设计报告此工程源代码下载地址:院(系): 计算机工程学院 专业: 软件工程 学生姓名: 班级: 学号: 题目: FTP 起迄日期: 2011.7.1-7.14设计地点: 指 导 教 师: 完成日期: 2010 年七月十三日一、 课程设计目的C+课程设计是学习计算机专业学生必须经历的一个过程。每学期学校既然都不遗余力的拿出两周的时间专门安排我们做课程设计,专门留出机房供大家编写程序,可见学校对课程设计的重视。其实根据课堂讲授内容,在课下学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。然而平时的练习是不够的。学生通过课后老师布置的实验课题的编写积累了相当多的经验。在期末,课程设计一般都是稍微超出我们平常学习的范畴。这样可以是学生在自主学习的基础上完成各自的实验课题,提高了学生的自我学习的能力。进行C+面向对象程序设计课程设计主要是在学习C+这门面向对象语言的基础上,在完成C+面向对象程序设计各部分实验的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践加深对可视化编程与C+面向对象程序设计语言特点的认识与理解。同时,可以提高运用C+编程语言解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。二、 课程设计内容与实现的功能 本次我的C+课程设计的题目是:FTP。 FTP即文件传输协议(File Transfer Protocol)它是目前Internet上使用最广泛的文件传输协议。本程序是一个在局域网内实现的小型FTP文件传输。主要实现的是FTP服务器端功能,包括:客户端文件上传、下载、删除等,并给出相应的提示。三、 系统分析与设计1、系统分析Ftp服务的设计与实现主要分为两部分来为客户实现Ftp服务:一是服务器端的配置(windows xp IIS 部件演示),二是客户端(由本人设计开发)这也是本次设计的重点;系统流程为客户实现并解析服务器的配置,以及客户端软件的开发及应用,主要在多个用户间提供资源共享服务! (1)Ftp客户端设计思想: 在本次FTP的设计中主要使用WinInet API编程,无需考虑基本的通信协议和底层的数据传输工作,MFC提供的WinInet类是对WinInet API函数封装而来的,它为用户提供了更加方便的编程接口。而在该设计中,使用的类包括 CInternetSession类、CFtpConnection类和CFtpFileFind类,其中,CInternetSession用于创建一个Internet会话; CftpConnection完成文件操作; CftpFileFind负责检索某一个目录下的所有文件和子目录。程序的功能:1. 登陆到FTP服务器。2. 检索FTP服务器上的目录和文件。3. 根据FTP服务器给的权限,会相应地提供:文件的上传、下载、等功能。 (2)开发工具: 在WINDOWS环境下,使用VC+开发工具实现一个FTP客户端软件。 1.代码分析工具:VC+ 6.0 2.流程图分析工具:Microsoft word 2010 3.测试工具:FTP服务器(个人FTP服务器) (3)FTP服务端口配置及界面: FTP的端口数统一为:21 界面:包括编辑框 文本框 选项按钮等2、 系统设计: FTP(File Transfer Protocol)是文件传输协议的简称。FTP客户端系统的实现只要式基于Visual C +开发平台的WinInet 类库来实现的。系统连接实现方式如下:目的方法结果开始一个FTP会话,建立一个FTP连接创建一个CInternetSession对象,调用CInternetSession:GetFtpConnection初始化WinInet并联接服务器连接到一个FTP Server用CInternetSession:GetFtpConnection返回一个CFtpConnection对象CD到 FTP 服务器的一个新目录用CFtpConnection:SetCurrentDirectoryCD到FTP服务器的一个新目录Find 第一个FTP目录中的文件创建一个CFtpFileFind对象,调用CFtpFileFind:FindFile,OpenURL函数返回一个只读资源对象;调用CFtpFileFind:FindFileFind第一个文件,如果文件每找到返回FALSE枚举所有可获得的资源,Find下一目录中的文件Find下一个资源,调用CFtpFileFind:FindNextFile直到返回FALSE。Find下一个文件,如果文件没找到返回FALSE打开FindFile或indNextFile找到的文件(用于读写)调用CFtpConnection:OpenFile,参数为FindFile或FindNextFile返回的文件名 ,创建并打开一个CInternetFile对象打开FindFile或FindNextFile找到的文件(用于读写),返回一个CInternetFile对象读写文件以读方式打开FTP文件,用CInternetFile:Read使用你指定的缓冲读指定的字节数写FTP文件以写方式打开FTP文件,调用CInternetFile:Write,重写CInternetSession:OnStatusCallback使用你指定的缓冲写指定的字节数改变客户端在服务器上的目录调用CFtpConnection:SetCurrentDirectory进入新的目录获取客户端在服务器上的当前目录调用CFtpConnection:GetCurrentDirectory获取目录信息异常处理用CInternetException类处理所有Internet异常结束FTP会话处理CInternetSession对象自动清除打开的句柄连接2.1、模块设计:本软件只要包括3大个模块:连接模块,远程操作模块,本地操作模块。1.连接模块:实现功能的连接;建立一个Internet会话;2.远程操作模块:实现对远程服务器的操作;3.本地操作模块:实现对本地客户端的操作;2.2、数据结构说明struct parepath int a; /路径级别 CString b100; /用于本地路径保存父亲路径 ; class CFtpCilentDlg : public Cdialog / CFtpCilentDlg类: public:CFtpCilentDlg(CWnd* pParent = NULL); /用于创建一个CFtpCilentDlg对话框,进行操作控制CInternetSession* m_pInetSession; /通过CConnectDlg 设置,得到一个Internet会话CFtpConnection* m_pFtpConnection; /通过m_pSession来实现一个FTP连接CFtpFileFind* m_pRemoteFinder; / CFtpFileFind指针,用于查找文件CBrowseDir m_BrowseDir; / 当前目录void Remotedir(CListCtrl &z_RemoteFile); /远程目录的遍历函数CString LPFilePath10004; /本地文件路径字符串CString LocFile10004; /本地文件名字符串 parepath pare; /本地路径的保存void DownLoad(int nIten); /文件下载(文件路径验证)void Putup(int nIten); /本地上传文件CListCtrlm_LocFile; / 用于显示目录和文件信息CStringm_strServer; /服务器站点,用于输入服务器的站点名称或IP地址CStringm_strUser; /登陆服务器的用户名称CStringm_strPassword; /登陆服务器的密码protected:virtual BOOL OnInitDialog(); /初始化对话窗口afx_msg void OnBConnetion(); /“连接”按钮afx_msg void OnBDownLoad(); /“文件下载”按钮afx_msg void OnBPutup(); /“本地上传”按钮afx_msg void OnBDelFile(); /“删除文件”按钮afx_msg void OnOK(); /“退出”按钮afx_msg void OnBShowdir(); /“显示内容”按钮Private: afx_msg void LoadListOfFiles(); /“检索文件”按钮 CInternetSession m_internetSession; /“会话对象”CFtpConnection * m_ftpConnection; /“连接对象”;2.3、算法流程图:以下是本程序主要算法的流程图: 下载函数的流程图如下:为了下载列表中的某一个文件,首先需要判断是否选中了想要下载的项目,否则提示没有选择文件,然后得到选择的项目的类型是否是文件,如果是文件,则得到下载的文件名,下载文件如果选中的是目录,则弹出对话框,不支持下载目录。流程图如下: 上传函数的流程图如下:上传函数首先需要判断是否已经选择了文件,如果已经选择了要上传的对象,那么再获得想要上传的本地文件的路径名和文件名,然后使用 Putup函数上传文件(调用CMyFtpConnect类中的Putup函数),等文件上传完后提示是否上传成功。流程图如下: 四、系统测试与调试分析1、系统测试l 测试方法:黑盒(在黑盒测试中,软件测试员只要知道软件要做什么而无法看到盒子里的软件是如何运行的。只要进行一些输入,就能得到某种输出结果。他不知道软件如何运行,为什么会这样,只知道程序做了什么)l 测试技术:单元测试l 测试数据:输入正确的域名用户名口令,显示FTP服务器的目录。输入错误的域名用户名和口令,显示无法连接l 测试报告:输入正确的域名显示正确的登录界面:测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户登录功能测试步骤输入正确用户名与密码输入正确用户名与错误密码输入错误用户名与密码测试数据Admin,正确密码Admin,错误密码错误用户名,密码预期结果正常进入系统显示密码错误显示用户不存在测试结果与预期相符与预期相符与预期相符测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户下载功能测试步骤输入正确用户名与密码输入用户名与密码下载目录输入错误用户名与密码测试数据Admin,正确密码Admin,正确密码错误用户名,密码预期结果正常进入系统可以下载显示无法下载目录显示用户不存在测试结果与预期相符与预期相符与预期相符测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户上传功能测试步骤输入正确用户名与密码输入用户名与错误密码输入错误用户名与密码测试数据Admin,正确密码Admin,错误密码错误用户名,密码预期结果正常进入系统可以上传显示无法上传显示用户不存在测试结果与预期相符与预期相符与预期相符测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户删除功能测试步骤输入正确用户名与密码输入用户名与错误密码输入错误用户名与密码测试数据Admin,正确密码Admin,错误密码错误用户名,密码预期结果正常进入系统可以删除显示无法删除显示用户不存在测试结果与预期相符与预期相符与预期相符2、调试分析:1.调试中的问题及解决: 经过几次的软件测试发现系统存在着一些不足之处。具体为:1.开始在写程序时,在运行程序时总是有错误,仔细检查后发现各个部分的功能都可实现,并没有错误,但程序就是无法运行。后来通过上网查询资料发现少了一个重要的头文件定义。在 CFTPCilentDlg类的FtpCilentDlg.cpp文件中添加对于Afxinet.h的包含命令,来获得对于MFC WinInet类的支持。这是必须添加的,否则程序无法运行。这是重要的一点,开始并没有注意到。2. 当客户端与服务器建立连接时,有时连接较慢。这个可能是由于编写的程序部分地方没有使用较简单的方法编写导致程序过于复杂,运行时系统读取缓慢,时间较长。3. 当用户向服务器上传文件和删除文件时受到FTP服务器的限制,无法正常的实现该功能。只要知道该FTP服务器的口令,输入用户名就可以实现以上的功能了。2. 设计与实现的回顾讨论和分析: 由于这次程序设计必须用MFC编写,而MFC我们还没有学过,所以我首先在网上下载孙鑫关于MFC的视频,自学关于MFC的知识。通过模仿视频上编写一些对话框的内容,我编写出了FTP可视化的对话框,并依次定义了一些可视化控件的属性和成员变量。接下来就是为对话框的控件对象添加事件响应函数。本程序主要是创建一个Internet会话,即创建CInternetSession对象,然后建立与FTP服务器的连接,即创建CFtpConnection对象。最后就是添加一些事件函数和成员函数代码了。如下载函数 上传函数 删除函数 检索函数等。此程序的显示内容、下载和上传功能基本是独立的。每次都要创建会话,建立连接,执行操作,然后清除对象。这时为了简单清楚起见而这样做的。五、用户手册1. 所用的操作平台是Visual C+6.0 MFC2、本程序不需要安装3、 程序运行界面 输入所要连接的FTP服务器域名,点击连接,则在目录列表就会显示该FTP中所包含的所有的文件列表。若该FTP服务器需要输入口令,则输入相应的用户名和口令才能进入,否则不需要填写。 当需要下载文件时,点击你需要下载的文件名,然后点击下载文件,则会显示下载文件存储地址,选择合适地址即可下载。上传文件时,点击上传文件,就会显示一个表框,选择你要上传的文件,点击上传到FTP服务器里。删除文件则是选择删除FTP中的一些文件。六、程序清单 1.建立与FTP服务器的连接: void CFTPCilentDlg:OnBconnect() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(!m_ftpConnection)/是否已经存在一个连接if(m_sServer!=)if(m_ftpConnection=m_internetSession.GetFtpConnection(m_sServer,m_sUser,m_sPassword)m_ftpConnection-GetCurrentDirectory(m_sDirectory);m_ctrlConnect.SetWindowText(&断开连接); /动态设置按钮LoadListOfFiles();UpdateData(FALSE);elsem_ftpConnection-Close();delete m_ftpConnection;m_ftpConnection=NULL;m_ctrlConnect.SetWindowText(&连接FTP);m_sDirectory=;m_lbFiles.ResetContent();UpdateData(FALSE); 2.显示内容所在位置: void CFTPCilentDlg:OnBshowdir() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(m_sDirectory!=)m_ftpConnection-SetCurrentDirectory(LPCTSTR)m_sDirectory);m_ftpConnection-GetCurrentDirectory(m_sDirectory);LoadListOfFiles();UpdateData(FALSE);3.显示文件列表: void CFTPCilentDlg:OnDblclkLfiles() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(m_sFile!=)if(m_sFile.Right(5)=)/选中目录CString temp;/if so ,change the directorym_ftpConnection-GetCurrentDirectory(m_sDirectory);if(m_sDirectory.Right(1)!=/)m_sDirectory+=CString(/);temp=m_sFile.Left(m_sFile.GetLength()-5);temp.TrimRight();m_sDirectory+=temp;UpdateData(FALSE);OnBshowdir();else/选中文件CFileDialog dlFile(FALSE,NULL,(LPCTSTR)m_sFile);if(dlFile.DoModal()=IDOK)if(!m_ftpConnection-GetFile(LPCTSTR)m_sFile,(LPCTSTR)dlFile.GetFileName()MessageBox(下载文件失败); 4.检索文件列表: void CFTPCilentDlg:LoadListOfFiles()m_lbFiles.ResetContent();/重置CFtpFileFind fFiles(m_ftpConnection);CString sFileName;BOOL bMoreFiles;bMoreFiles=fFiles.FindFile(NULL);/查找第一个文件while(bMoreFiles)bMoreFiles=fFiles.FindNextFile();sFileName=fFiles.GetFileName(); if(fFiles.IsDirectory()/如果是文件夹,真sFileName+= ;m_lbFiles.AddString(LPCTSTR)sFileName);/添加文件名到列表中fFiles.Close(); 5.上传文件: void CFTPCilentDlg:OnBputup() / TODO: Add your control notification handler code hereUpdateData(TRUE);CFileDialog openFile(TRUE,NULL);if(openFile.DoModal()=IDOK)if(m_ftpConnection-PutFile(LPCTSTR)openFile.GetFileName(),(LPCTSTR)(m_sDirectory+/+(CString)openFile.GetFileName()MessageBox(上传成功); else MessageBox(上传失败);OnBshowdir();UpdateData(FALSE); 6.下载文件: void CFTPCilentDlg:OnBdownload()/ TODO: Add your control notification handler code hereUpdateData(TRUE);if(m_sFile!=)/选中文件if(m_sFile.Right(5)=)MessageBox(不能下载目录);else/下载文件CFileDialog dlFile(FALSE,NULL,(LPCTSTR)m_sFile);if(dlFile.DoModal()=IDOK)if(!m_ftpConnection-GetFile(LPCTSTR)m_sFile,(LPCTSTR)dlFile.GetFileName()MessageBox(下载错误); 7.删除文件: void CFTPCilentDlg:OnBdelfile() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_ftpConnection-Remove(m_sFile);OnBshowdir();/刷新内容UpdateData(FALSE); 8.退出程序: void CFTPCilentDlg:OnOK() / TODO: Add extra validation hereif(m_ftpConnection)m_ftpConnection-Close();delete m_ftpConnection;m_ftpConnection=NULL;CDialog:OnOK();七、体会与自我评价C+课程设计是本学期末一次非常难得的理论与实际相结合的机会,通过这次比较简单的小型FTP系统计,我摆脱了单纯的理论知识学习状态,而实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高我查阅文献资料、设计手册、设计规范以及电脑能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,这是我们都希望看到的也正是我们进行课程设计的目的所在。虽然课程设计内容繁多,过程繁琐但我的收获却更加丰富。以前我对VC+了解不会很明确,但是现在我了解了VC+的运行环境,使用方法,以及一些命令的使用。就拿MFC说吧,以前真的是不懂,不过现在通过看一些孙鑫的视频教程,再加上这次的C+课程设计主要是利用了MFC,使我对MFC了解的更加深刻了。以往编程时,不注意编程规范,致使程序运行不出来,现在在编写程序时很注意编写规范,以前一些控件不会使用,现在也都可以熟练使用了,在设计过程中一些功能的实现让我很头痛,原因是由于本身设计受到编程语言的限制,而又必须考虑本专业的一些要求规范,从而形成了一些矛盾点,这些矛盾在处理上让人很难斟酌,正是基于这种考虑我意识到,要想更完美的进行一次设计,与他人的交流沟通是很有必要的。课程设计是每一个大学生在大学生涯中都不可或缺的,它不仅使我们在实践中巩固了所有的只是、在实践中锻炼了自己的动手能力,而且也是一种我们所学专业知识的一种扩展手段,它让我们学到了很多在课堂上根本就学不到的知识,不仅开阔了自己的视野,增长了自己的见识,也为我们以后进一步走向社会打下了坚实的基础。说实话,这次的C+课程设计所运用的知识超出了我的能力范围,开始我觉得难度很大,不过后来通过上网查询资料和到处咨询,我感觉至少懂了一些。总的来说提高是有限的但提高也是全面的,正是这一次设计让我积累了无数实际经验,使我的头脑更好的被知识武装了起来,也必然会让我在未来的工作学习中表现出更高的应变能力,更强的沟通力和理解力。八、参考文献1 谭浩强著.C程序设计(第三版).北京:清华大学出版社,20052 李兰著.C+面向对象程序设计(第一版)西安:西安电子科技大学出版社,20103 李春葆著.C+面向对象程序设计.北京:清华大学出版社,20084黄维通著.VC+面向对象与可视化程序设计.北京:清华大学出版社,20005马石安,魏文平.面向对象程序设计教程.北京:清华大学出版社,2007 6 杨富国,Visual C+程序开发案例解析M,北京: 清华大学出版社,2006九、课程设计评价课程设计评价 成绩: 教师: 年 月 日青岛理工大学C+面向对象课程设计报告院(系): 计算机工程学院 专业: 软件工程 学生姓名: 李宏鑫 班级:软件091学号: 200907106 题目: FTP 起迄日期: 2011.7.1-7.14设计地点: 青岛理工大学实验楼 指 导 教 师: 熊晓云 完成日期: 2010 年七月十三日四、 课程设计目的C+课程设计是学习计算机专业学生必须经历的一个过程。每学期学校既然都不遗余力的拿出两周的时间专门安排我们做课程设计,专门留出机房供大家编写程序,可见学校对课程设计的重视。其实根据课堂讲授内容,在课下学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。然而平时的练习是不够的。学生通过课后老师布置的实验课题的编写积累了相当多的经验。在期末,课程设计一般都是稍微超出我们平常学习的范畴。这样可以是学生在自主学习的基础上完成各自的实验课题,提高了学生的自我学习的能力。进行C+面向对象程序设计课程设计主要是在学习C+这门面向对象语言的基础上,在完成C+面向对象程序设计各部分实验的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践加深对可视化编程与C+面向对象程序设计语言特点的认识与理解。同时,可以提高运用C+编程语言解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。五、 课程设计内容与实现的功能 本次我的C+课程设计的题目是:FTP。 FTP即文件传输协议(File Transfer Protocol)它是目前Internet上使用最广泛的文件传输协议。本程序是一个在局域网内实现的小型FTP文件传输。主要实现的是FTP服务器端功能,包括:客户端文件上传、下载、删除等,并给出相应的提示。六、 系统分析与设计1、系统分析Ftp服务的设计与实现主要分为两部分来为客户实现Ftp服务:一是服务器端的配置(windows xp IIS 部件演示),二是客户端(由本人设计开发)这也是本次设计的重点;系统流程为客户实现并解析服务器的配置,以及客户端软件的开发及应用,主要在多个用户间提供资源共享服务! (1)Ftp客户端设计思想: 在本次FTP的设计中主要使用WinInet API编程,无需考虑基本的通信协议和底层的数据传输工作,MFC提供的WinInet类是对WinInet API函数封装而来的,它为用户提供了更加方便的编程接口。而在该设计中,使用的类包括 CInternetSession类、CFtpConnection类和CFtpFileFind类,其中,CInternetSession用于创建一个Internet会话; CftpConnection完成文件操作; CftpFileFind负责检索某一个目录下的所有文件和子目录。程序的功能:4. 登陆到FTP服务器。5. 检索FTP服务器上的目录和文件。6. 根据FTP服务器给的权限,会相应地提供:文件的上传、下载、等功能。 (2)开发工具: 在WINDOWS环境下,使用VC+开发工具实现一个FTP客户端软件。 1.代码分析工具:VC+ 6.0 2.流程图分析工具:Microsoft word 2010 3.测试工具:FTP服务器(个人FTP服务器) (3)FTP服务端口配置及界面: FTP的端口数统一为:21 界面:包括编辑框 文本框 选项按钮等3、 系统设计: FTP(File Transfer Protocol)是文件传输协议的简称。FTP客户端系统的实现只要式基于Visual C +开发平台的WinInet 类库来实现的。系统连接实现方式如下:目的方法结果开始一个FTP会话,建立一个FTP连接创建一个CInternetSession对象,调用CInternetSession:GetFtpConnection初始化WinInet并联接服务器连接到一个FTP Server用CInternetSession:GetFtpConnection返回一个CFtpConnection对象CD到 FTP 服务器的一个新目录用CFtpConnection:SetCurrentDirectoryCD到FTP服务器的一个新目录Find 第一个FTP目录中的文件创建一个CFtpFileFind对象,调用CFtpFileFind:FindFile,OpenURL函数返回一个只读资源对象;调用CFtpFileFind:FindFileFind第一个文件,如果文件每找到返回FALSE枚举所有可获得的资源,Find下一目录中的文件Find下一个资源,调用CFtpFileFind:FindNextFile直到返回FALSE。Find下一个文件,如果文件没找到返回FALSE打开FindFile或indNextFile找到的文件(用于读写)调用CFtpConnection:OpenFile,参数为FindFile或FindNextFile返回的文件名 ,创建并打开一个CInternetFile对象打开FindFile或FindNextFile找到的文件(用于读写),返回一个CInternetFile对象读写文件以读方式打开FTP文件,用CInternetFile:Read使用你指定的缓冲读指定的字节数写FTP文件以写方式打开FTP文件,调用CInternetFile:Write,重写CInternetSession:OnStatusCallback使用你指定的缓冲写指定的字节数改变客户端在服务器上的目录调用CFtpConnection:SetCurrentDirectory进入新的目录获取客户端在服务器上的当前目录调用CFtpConnection:GetCurrentDirectory获取目录信息异常处理用CInternetException类处理所有Internet异常结束FTP会话处理CInternetSession对象自动清除打开的句柄连接2.1、模块设计:本软件只要包括3大个模块:连接模块,远程操作模块,本地操作模块。1.连接模块:实现功能的连接;建立一个Internet会话;2.远程操作模块:实现对远程服务器的操作;3.本地操作模块:实现对本地客户端的操作;2.2、数据结构说明struct parepath int a; /路径级别 CString b100; /用于本地路径保存父亲路径 ; class CFtpCilentDlg : public Cdialog / CFtpCilentDlg类: public:CFtpCilentDlg(CWnd* pParent = NULL); /用于创建一个CFtpCilentDlg对话框,进行操作控制CInternetSession* m_pInetSession; /通过CConnectDlg 设置,得到一个Internet会话CFtpConnection* m_pFtpConnection; /通过m_pSession来实现一个FTP连接CFtpFileFind* m_pRemoteFinder; / CFtpFileFind指针,用于查找文件CBrowseDir m_BrowseDir; / 当前目录void Remotedir(CListCtrl &z_RemoteFile); /远程目录的遍历函数CString LPFilePath10004; /本地文件路径字符串CString LocFile10004; /本地文件名字符串 parepath pare; /本地路径的保存void DownLoad(int nIten); /文件下载(文件路径验证)void Putup(int nIten); /本地上传文件CListCtrlm_LocFile; / 用于显示目录和文件信息CStringm_strServer; /服务器站点,用于输入服务器的站点名称或IP地址CStringm_strUser; /登陆服务器的用户名称CStringm_strPassword; /登陆服务器的密码protected:virtual BOOL OnInitDialog(); /初始化对话窗口afx_msg void OnBConnetion(); /“连接”按钮afx_msg void OnBDownLoad(); /“文件下载”按钮afx_msg void OnBPutup(); /“本地上传”按钮afx_msg void OnBDelFile(); /“删除文件”按钮afx_msg void OnOK(); /“退出”按钮afx_msg void OnBShowdir(); /“显示内容”按钮Private: afx_msg void LoadListOfFiles(); /“检索文件”按钮 CInternetSession m_internetSession; /“会话对象”CFtpConnection * m_ftpConnection; /“连接对象”;2.3、算法流程图:以下是本程序主要算法的流程图: 下载函数的流程图如下:为了下载列表中的某一个文件,首先需要判断是否选中了想要下载的项目,否则提示没有选择文件,然后得到选择的项目的类型是否是文件,如果是文件,则得到下载的文件名,下载文件如果选中的是目录,则弹出对话框,不支持下载目录。流程图如下: 上传函数的流程图如下:上传函数首先需要判断是否已经选择了文件,如果已经选择了要上传的对象,那么再获得想要上传的本地文件的路径名和文件名,然后使用 Putup函数上传文件(调用CMyFtpConnect类中的Putup函数),等文件上传完后提示是否上传成功。流程图如下: 四、系统测试与调试分析1、系统测试l 测试方法:黑盒(在黑盒测试中,软件测试员只要知道软件要做什么而无法看到盒子里的软件是如何运行的。只要进行一些输入,就能得到某种输出结果。他不知道软件如何运行,为什么会这样,只知道程序做了什么)l 测试技术:单元测试l 测试数据:输入正确的域名用户名口令,显示FTP服务器的目录。输入错误的域名用户名和口令,显示无法连接l 测试报告:输入正确的域名显示正确的登录界面:测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户登录功能测试步骤输入正确用户名与密码输入正确用户名与错误密码输入错误用户名与密码测试数据Admin,正确密码Admin,错误密码错误用户名,密码预期结果正常进入系统显示密码错误显示用户不存在测试结果与预期相符与预期相符与预期相符测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户下载功能测试步骤输入正确用户名与密码输入用户名与密码下载目录输入错误用户名与密码测试数据Admin,正确密码Admin,正确密码错误用户名,密码预期结果正常进入系统可以下载显示无法下载目录显示用户不存在测试结果与预期相符与预期相符与预期相符测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户上传功能测试步骤输入正确用户名与密码输入用户名与错误密码输入错误用户名与密码测试数据Admin,正确密码Admin,错误密码错误用户名,密码预期结果正常进入系统可以上传显示无法上传显示用户不存在测试结果与预期相符与预期相符与预期相符测试说明测试名称 FTP测试目的验证系统对于系统登录的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容用户删除功能测试步骤输入正确用户名与密码输入用户名与错误密码输入错误用户名与密码测试数据Admin,正确密码Admin,错误密码错误用户名,密码预期结果正常进入系统可以删除显示无法删除显示用户不存在测试结果与预期相符与预期相符与预期相符2、调试分析:1.调试中的问题及解决: 经过几次的软件测试发现系统存在着一些不足之处。具体为:1.开始在写程序时,在运行程序时总是有错误,仔细检查后发现各个部分的功能都可实现,并没有错误,但程序就是无法运行。后来通过上网查询资料发现少了一个重要的头文件定义。在 CFTPCilentDlg类的FtpCilentDlg.cpp文件中添加对于Afxinet.h的包含命令,来获得对于MFC WinInet类的支持。这是必须添加的,否则程序无法运行。这是重要的一点,开始并没有注意到。2. 当客户端与服务器建立连接时,有时连接较慢。这个可能是由于编写的程序部分地方没有使用较简单的方法编写导致程序过于复杂,运行时系统读取缓慢,时间较长。3. 当用户向服务器上传文件和删除文件时受到FTP服务器的限制,无法正常的实现该功能。只要知道该FTP服务器的口令,输入用户名就可以实现以上的功能了。3. 设计与实现的回顾讨论和分析: 由于这次程序设计必须用MFC编写,而MFC我们还没有学过,所以我首先在网上下载孙鑫关于MFC的视频,自学关于MFC的知识。通过模仿视频上编写一些对话框的内容,我编写出了FTP可视化的对话框,并依次定义了一些可视化控件的属性和成员变量。接下来就是为对话框的控件对象添加事件响应函数。本程序主要是创建一个Internet会话,即创建CInternetSession对象,然后建立与FTP服务器的连接,即创建CFtpConnection对象。最后就是添加一些事件函数和成员函数代码了。如下载函数 上传函数 删除函数 检索函数等。此程序的显示内容、下载和上传功能基本是独立的。每次都要创建会话,建立连接,执行操作,然后清除对象。这时为了简单清楚起见而这样做的。五、用户手册1. 所用的操作平台是Visual C+6.0 MFC2、本程序不需要安装3、 程序运行界面 输入所要连接的FTP服务器域名,点击连接,则在目录列表就会显示该FTP中所包含的所有的文件列表。若该FTP服务器需要输入口令,则输入相应的用户名和口令才能进入,否则不需要填写。 当需要下载文件时,点击你需要下载的文件名,然后点击下载文件,则会显示下载文件存储地址,选择合适地址即可下载。上传文件时,点击上传文件,就会显示一个表框,选择你要上传的文件,点击上传到FTP服务器里。删除文件则是选择删除FTP中的一些文件。六、程序清单 1.建立与FTP服务器的连接: void CFTPCilentDlg:OnBconnect() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(!m_ftpConnection)/是否已经存在一个连接if(m_sServer!=)if(m_ftpConnection=m_internetSession.GetFtpConnection(m_sServer,m_sUser,m_sPassword)m_ftpConnection-GetCurrentDirectory(m_sDirectory);m_ctrlConnect.SetWindowText(&断开连接); /动态设置按钮LoadListOfFiles();UpdateData(FALSE);elsem_ftpConnection-Close();delete m_ftpConnection;m_ftpConnection=NULL;m_ctrlConnect.SetWindowText(&连接FTP);m_sDirectory=;m_lbFiles.ResetContent();UpdateData(FALSE); 2.显示内容所在位置: void
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!