当前位置:文档之家› 面向对象程序设计报告

面向对象程序设计报告

课程设计报告题 目 文件备份管理系统课 程 名 称 面向对象程序设计课程设计院 部 名 称 计算机工程学院专 业 计算机科学与技术班 级 14计算机科学与技术(单)(1)学 生 姓 名 邵佳楠学 号 ********** 课程设计地点 A101课程设计学时 20学时指 导 教 师 赵金陵科技学院教务处制 成绩一、课程设计的目的和要求该课程设计的目的采用面向对象的程序设计语言,学会综合运用已学的C++知识,用面向对象的技术和文件打开,关闭,保存等实现一个小型的应用程序.开发实现一个应用程序,主要目的是使学生更好的掌握面向对象程序设计语言及其开发工具,掌握如何使用面向对象的程序设计语言设计一个小的软件系统。

通过该课程设计培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。

二、系统需求分析(1)设计浏览文件按钮,点击弹出选择文件提示框(2)选取文件后把文件地址保存到静态变量(3)设计备份按钮,点击弹出保存文件提示框(4)选择保存目录后把目录地址保存到静态变量(5)执行文件保存函数传入两个地址达到文件备份的目的(6)成功保存后将文件名,备份时间,备份地址保存到txt文档中(7)读取txt文档内容在列表控件中显示(8)还原功能系统界面如下:1.浏览文件按钮2.源文件地址预览3.备份历史记录列表4.备份文件按钮5.取消按钮6.备份按钮三、总体设计文件备份顾名思义就是将一个文件复制到另一个文件夹中,但要实现复制最起码要知道两个参数:1.源文件 2.目的目录总体流程:四、详细设计(1)此处是窗口初始化函数以及初始化列表信息BOOL CFileCopyDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->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() <= 4)continue;else{char dst[10][80];char *pBuff = s.GetBuffer(0);split(dst, pBuff, ",");m_listAll.InsertItem(n, dst[0]);m_listAll.SetItemText(n, 1, dst[1]);m_listAll.SetItemText(n, 2, dst[2]);n++;}}setlocale(LC_CTYPE, old_locale);free(old_locale); //还原语言地区设置return TRUE; // 除非将焦点设置到控件,否则返回 TRUE}(2)此处是浏览文件按钮点击事件void CFileCopyDlg::OnBnClickedButton1(){CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "All Files (*.*)|*.*||");if (dlg.DoModal() == IDOK){GetDlgItem(IDC_STATIC)->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 << year;ssY >> strY;ssM << Month;ssM >> strM;ssD << Day;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;else{char dst[10][80];char *pBuff = s.GetBuffer(0);split(dst, pBuff, ",");m_listAll.InsertItem(n, dst[0]);m_listAll.SetItemText(n, 1, dst[1]);m_listAll.SetItemText(n, 2, dst[2]);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)还原功能六、结论与体会这次实验让我对MFC编程加深了了解,让我有了很好我锻炼,在我以后遇到同样问题的时候我就有了更多的经验。

相关主题