




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩 课程设计报告 题 目 文件备份管理系统 课 程 名 称 面向对象程序设计课程设计 院 部 名 称 计算机工程学院 专 业 计算机科学与技术 班 级 14计算机科学与技术(单)(1) 学 生 姓 名 邵佳楠 学 号 1413201001 课程设计地点 A101 课程设计学时 20学时 指 导 教 师 赵 金陵科技学院教务处制一、课程设计的目的和要求该课程设计的目的采用面向对象的程序设计语言,学会综合运用已学的C+知识,用面向对象的技术和文件打开,关闭,保存等实现一个小型的应用程序.开发实现一个应用程序,主要目的是使学生更好的掌握面向对象程序设计语言及其开发工具,掌握如何使用面向对象的程序设计语言设计一个小的软件系统。通过该课程设计培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。2、 系统需求分析(1) 设计浏览文件按钮,点击弹出选择文件提示框(2) 选取文件后把文件地址保存到静态变量(3) 设计备份按钮,点击弹出保存文件提示框(4) 选择保存目录后把目录地址保存到静态变量(5) 执行文件保存函数传入两个地址达到文件备份的目的(6) 成功保存后将文件名,备份时间,备份地址保存到txt文档中(7) 读取txt文档内容在列表控件中显示 (8) 还原功能系统界面如下:1. 浏览文件按钮2. 源文件地址预览3. 备份历史记录列表4. 备份文件按钮5. 取消按钮6. 备份按钮三、总体设计文件备份顾名思义就是将一个文件复制到另一个文件夹中,但要实现复制最起码要知道两个参数:1.源文件 2.目的目录总体流程:开始选择文件选择备份目录开始备份结束4、 详细设计(1)此处是窗口初始化函数以及初始化列表信息BOOL CFileCopyDlg:OnInitDialog()CDialogEx:OnInitDialog();/ 将“关于.”菜单项添加到系统菜单中。/ IDM_ABOUTBOX 必须在系统命令范围内。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE);/ 设置小图标/ TODO: 在此添加额外的初始化代码m_listAll.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);m_listAll.InsertColumn(0, 文件名, LVCFMT_CENTER);m_listAll.InsertColumn(1, 备份时间, LVCFMT_CENTER);m_listAll.InsertColumn(2, 备份目录, LVCFMT_CENTER);m_listAll.SetColumnWidth(0, 200);m_listAll.SetColumnWidth(1, 120);m_listAll.SetColumnWidth(2, 250);char* old_locale = _strdup(setlocale(LC_CTYPE, NULL); setlocale(LC_CTYPE, chs);/设置地区语言为中文CStdioFile file;file.Open(BatInfo.txt,CFile:modeRead);CString s;int n=0;/控制行数,具体你自己定while (TRUE = file.ReadString(s)if (s.Find(;) = -1 & s.GetLength() SetWindowTextA(dlg.GetPathName();SFilePath = dlg.GetPathName();FileName = dlg.GetFileName();(3)此处是备份按钮点击事件void CFileCopyDlg:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码CFileDialog FileDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);FileDlg.m_ofn.lpstrInitialDir = c:;if (FileDlg.DoModal() = IDOK)CTime t = CTime:GetCurrentTime();string time = ;stringstream ssY;stringstream ssM;stringstream ssD;int year = t.GetYear();int Month = t.GetMonth();int Day = t.GetDay();string strY=;string strM=;string strD=;CString CSFilePath = ;CString COFilePath = ;ssY strY;ssM strM;ssD strD;time = strY + 年 + strM + 月;time += strD + 日;OFilePath = FileDlg.GetPathName();CSFilePath = SFilePath.c_str();COFilePath = OFilePath.c_str();Tranfile(CSFilePath.GetBuffer(0), COFilePath.GetBuffer(0);ofstream outfile;outfile.open(BatInfo.txt,ios:app);outfile FileName + , + time + , + OFilePath endl;outfile.close();m_listAll.DeleteAllItems();char* old_locale = _strdup(setlocale(LC_CTYPE, NULL);setlocale(LC_CTYPE, chs);/设置地区语言为中文CStdioFile file; file.Open(BatInfo.txt, CFile:modeRead);CString s;int n = 0;/控制行数,具体你自己定while (TRUE = file.ReadString(s)if (s.Find(;) = -1 & s.GetLength() = 4)continue;elsechar dst1080;char *pBuff = s.GetBuffer(0);split(dst, pBuff, ,);m_listAll.InsertItem(n, dst0);m_listAll.SetItemText(n, 1, dst1);m_listAll.SetItemText(n, 2, dst2);n+;setlocale(LC_CTYPE, old_locale);free(old_locale); /还原语言地区设置/CDialogEx:OnOK();(4)备份功能void CFileCopyDlg:OnBnClickedButton2()/ TODO: 在此添加控件通知处理程序代码CString SPath; CString OPath; int nId; /首先得到点击的位置 POSITION pos=m_listAll.GetFirstSelectedItemPosition(); if(pos=NULL) MessageBox(请至少选择一项,提示,MB_ICONEXCLAMATION); return; /得到行号,通过POSITION转化 nId=(int)m_listAll.GetNextSelectedItem(pos); /得到列中的内容(0表示第一列,同理1,2,3.表示第二,三,四.列) SPath=m_listAll.GetItemText(nId,2); OPath=m_listAll.GetItemText(nId,3); Tranfile(SPath.GetBuffer(0), OPath.GetBuffer(0);MessageBox(还原成功);五、测试、调试过程1上机过程中出现的问题及其解决方案(1)问题:刚开始不知道选择文件对话框中是怎么出来的后来 解决方案:百度找了一下(2)问题:不知道如何给ListControl控件动态绑定数据 解决方案:百度了一下2完成结果:(1)浏览文件按钮功能(2)列表显示详细信息功能(3)备份按钮功能(3)完成保存功能(4)还原功能6、 结论与体会 这次实验让我对MFC编程加深了了解,让我有了很好我锻炼,在我以后遇到同样问题的时候我就有了更多的经验。虽然在编程过程中遇到了诸多的问题,但我都一一破解,也许这就是编程乐趣的所在。 两个星期的课程设计虽然有些疲劳和困倦,但带给我很多的收获。随着课程学习的深入,我感觉到了利用类和对象、继承、封装等一系列知识可以把我们程序中很多繁杂、重复的部分省略掉,还可以解决一些利用面向过程的设计思想无法解决的问题。在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。于是在课程设计的时候,我花了三天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。七、参考文献 1(美)戴特尔(Deitel,H.M.).C+大学基础教程(第五版)M.北京:电子工业出版社,2007.62 谭浩强.C+程序设计M. 北京:清华大学出版社,20063 百度附录:源程序/ FileCopyDlg.cpp : 实现文件/#include stdafx.h#include FileCopy.h#include FileCopyDlg.h#include afxdialogex.h#include #include #include #include #ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于应用程序“关于”菜单项的 CAboutDlg 对话框using namespace std;class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 对话框数据enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 实现protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialogEx(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()/ CFileCopyDlg 对话框CFileCopyDlg:CFileCopyDlg(CWnd* pParent /*=NULL*/): CDialogEx(CFileCopyDlg:IDD, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CFileCopyDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);DDX_Control(pDX, IDC_LIST1, m_listAll);BEGIN_MESSAGE_MAP(CFileCopyDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, &CFileCopyDlg:OnBnClickedButton1)ON_BN_CLICKED(IDOK, &CFileCopyDlg:OnBnClickedOk)ON_BN_CLICKED(IDC_BUTTON2, &CFileCopyDlg:OnBnClickedButton2)END_MESSAGE_MAP()int split(char dst80, char* str, const char* spl)int n = 0;char *result = NULL;result = strtok(str, spl);while (result != NULL)strcpy(dstn+, result);result = strtok(NULL, spl);return n;/ CFileCopyDlg 消息处理程序BOOL CFileCopyDlg:OnInitDialog()CDialogEx:OnInitDialog();/ 将“关于.”菜单项添加到系统菜单中。/ IDM_ABOUTBOX 必须在系统命令范围内。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE);/ 设置小图标/ TODO: 在此添加额外的初始化代码m_listAll.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);m_listAll.InsertColumn(0, 文件名, LVCFMT_CENTER);m_listAll.InsertColumn(1, 备份时间, LVCFMT_CENTER);m_listAll.InsertColumn(2, 备份目录, LVCFMT_CENTER);m_listAll.InsertColumn(3, 源目录, LVCFMT_CENTER);m_listAll.SetColumnWidth(0, 200);m_listAll.SetColumnWidth(1, 120);m_listAll.SetColumnWidth(2, 250);m_listAll.SetColumnWidth(3, 250);char* old_locale = _strdup(setlocale(LC_CTYPE, NULL); setlocale(LC_CTYPE, chs);/设置地区语言为中文CStdioFile file;file.Open(BatInfo.txt,CFile:modeRead);CString s;int n=0;/控制行数,具体你自己定while (TRUE = file.ReadString(s)if (s.Find(;) = -1 & s.GetLength() = 4) continue; else char dst1080;char *pBuff = s.GetBuffer(0);split(dst, pBuff, ,);m_listAll.InsertItem(n, dst0);m_listAll.SetItemText(n, 1, dst1);m_listAll.SetItemText(n, 2, dst2);m_listAll.SetItemText(n, 3, dst3);n+; setlocale(LC_CTYPE, old_locale); free(old_locale); /还原语言地区设置return TRUE; / 除非将焦点设置到控件,否则返回 TRUEvoid CFileCopyDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialogEx:OnSysCommand(nID, lParam);/ 如果向对话框添加最小化按钮,则需要下面的代码/ 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,/ 这将由框架自动完成。void CFileCopyDlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/当用户拖动最小化窗口时系统调用此函数取得光标/显示。HCURSOR CFileCopyDlg:OnQueryDragIcon()return static_cast(m_hIcon);void Tranfile(char* pszFileCopee, char* pszFileCoper)fstream fsCopee(pszFileCopee, ios:binary | ios:in);fstream fsCoper(pszFileCoper, ios:binary | ios:out);fsCoper SetWindowTextA(dlg.GetPathName();SFilePath = dlg.GetPathName();FileName = dlg.GetFileName();void CFileCopyDlg:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码CFileDialog FileDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);FileDlg.m_ofn.lpstrInitialDir = c:;if (FileDlg.DoModal() = IDOK)CTime t = CTime:GetCurrentTime();string time = ;stringstream ssY;stringstream ssM;stringstream ssD;stringstream ssMin;stringstream ssH;int year = t.GetYear();int Month = t.GetMonth();int Day = t.GetDay();int Hour = t.GetHour();int Min = t.GetMinute();string strY=;string strM=;string strD=;string strH=;string strMin=;CString CSFilePath = ;CString COFilePath = ;ssY strY;ssM strM;ssD strD;ssH strH;ssMin strMin;time = strY + 年 + strM + 月;time += strD + 日 +strH+点+strMin+分;OFilePath = FileDlg.GetPathName();CSFilePath = SFilePath.c_str();COFilePath = OFilePath.c_str();Tranfile(CSFilePath.GetBuffer(0), COFilePath.GetBuffer(0);ofstream outfile;outfile.open(BatInfo.txt,ios:app);outfile FileName + , + time + , + OFilePath+,+SFilePath endl;outfile.close();m_listAll.DeleteAllItems();char* old_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 洗手间装修出租合同范本
- 黑龙江省第三方协议合同
- 游泳机构合作合同协议书
- 粘土配方设备转让协议书
- 肋骨骨折工伤补偿协议书
- 汽车保险拍卖协议书模板
- 生意中介服务费合同范本
- 门面出租电子档合同范本
- 股份回购如何写合同协议
- 泰州学院食堂承包协议书
- GB 30980-2014海洋倾倒物质评价规范疏浚物
- GA/T 1393-2017信息安全技术主机安全加固系统安全技术要求
- 尼可地尔临床应用优势课件
- 老年肌肉衰减综合征(肌少症)课件
- 超星尔雅《诗经》导读检测题答案
- 冷却系统橡胶软管设计基础规范
- 地源热泵埋管冬夏季换热平衡计算
- 湖北省职称评审专业目录表(工程系列)
- 中考《红星照耀中国》各篇章练习题及答案(1-12)
- 华中师范大学辅导员队伍建设实施办法
- 微生物的代谢调节 ppt课件
评论
0/150
提交评论