![面向?qū)ο蟪绦蛟O(shè)計報告.doc_第1頁](http://file.renrendoc.com/FileRoot1/2020-1/10/6889c239-bc39-4962-91d1-d535f11065b8/6889c239-bc39-4962-91d1-d535f11065b81.gif)
![面向?qū)ο蟪绦蛟O(shè)計報告.doc_第2頁](http://file.renrendoc.com/FileRoot1/2020-1/10/6889c239-bc39-4962-91d1-d535f11065b8/6889c239-bc39-4962-91d1-d535f11065b82.gif)
![面向?qū)ο蟪绦蛟O(shè)計報告.doc_第3頁](http://file.renrendoc.com/FileRoot1/2020-1/10/6889c239-bc39-4962-91d1-d535f11065b8/6889c239-bc39-4962-91d1-d535f11065b83.gif)
![面向?qū)ο蟪绦蛟O(shè)計報告.doc_第4頁](http://file.renrendoc.com/FileRoot1/2020-1/10/6889c239-bc39-4962-91d1-d535f11065b8/6889c239-bc39-4962-91d1-d535f11065b84.gif)
![面向?qū)ο蟪绦蛟O(shè)計報告.doc_第5頁](http://file.renrendoc.com/FileRoot1/2020-1/10/6889c239-bc39-4962-91d1-d535f11065b8/6889c239-bc39-4962-91d1-d535f11065b85.gif)
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
成績 課程設(shè)計報告 題 目 文件備份管理系統(tǒng) 課 程 名 稱 面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計 院 部 名 稱 計算機工程學(xué)院 專 業(yè) 計算機科學(xué)與技術(shù) 班 級 14計算機科學(xué)與技術(shù)(單)(1) 學(xué) 生 姓 名 邵佳楠 學(xué) 號 1413201001 課程設(shè)計地點 A101 課程設(shè)計學(xué)時 20學(xué)時 指 導(dǎo) 教 師 趙 金陵科技學(xué)院教務(wù)處制一、課程設(shè)計的目的和要求該課程設(shè)計的目的采用面向?qū)ο蟮某绦蛟O(shè)計語言,學(xué)會綜合運用已學(xué)的C+知識,用面向?qū)ο蟮募夹g(shù)和文件打開,關(guān)閉,保存等實現(xiàn)一個小型的應(yīng)用程序.開發(fā)實現(xiàn)一個應(yīng)用程序,主要目的是使學(xué)生更好的掌握面向?qū)ο蟪绦蛟O(shè)計語言及其開發(fā)工具,掌握如何使用面向?qū)ο蟮某绦蛟O(shè)計語言設(shè)計一個小的軟件系統(tǒng)。通過該課程設(shè)計培養(yǎng)學(xué)生分析和解決實際問題的能力,培養(yǎng)學(xué)生綜合應(yīng)用基本概念,基本原理,和技術(shù)方法的能力,真正做到學(xué)以致用,使課本上抽象的理論,方法與具體的實踐應(yīng)用相結(jié)合。2、 系統(tǒng)需求分析(1) 設(shè)計瀏覽文件按鈕,點擊彈出選擇文件提示框(2) 選取文件后把文件地址保存到靜態(tài)變量(3) 設(shè)計備份按鈕,點擊彈出保存文件提示框(4) 選擇保存目錄后把目錄地址保存到靜態(tài)變量(5) 執(zhí)行文件保存函數(shù)傳入兩個地址達(dá)到文件備份的目的(6) 成功保存后將文件名,備份時間,備份地址保存到txt文檔中(7) 讀取txt文檔內(nèi)容在列表控件中顯示 (8) 還原功能系統(tǒng)界面如下:1. 瀏覽文件按鈕2. 源文件地址預(yù)覽3. 備份歷史記錄列表4. 備份文件按鈕5. 取消按鈕6. 備份按鈕三、總體設(shè)計文件備份顧名思義就是將一個文件復(fù)制到另一個文件夾中,但要實現(xiàn)復(fù)制最起碼要知道兩個參數(shù):1.源文件 2.目的目錄總體流程:開始選擇文件選擇備份目錄開始備份結(jié)束4、 詳細(xì)設(shè)計(1)此處是窗口初始化函數(shù)以及初始化列表信息BOOL CFileCopyDlg:OnInitDialog()CDialogEx:OnInitDialog();/ 將“關(guān)于.”菜單項添加到系統(tǒng)菜單中。/ IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 設(shè)置此對話框的圖標(biāo)。 當(dāng)應(yīng)用程序主窗口不是對話框時,框架將自動/ 執(zhí)行此操作SetIcon(m_hIcon, TRUE);/ 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE);/ 設(shè)置小圖標(biāo)/ 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);/設(shè)置地區(qū)語言為中文CStdioFile file;file.Open(BatInfo.txt,CFile:modeRead);CString s;int n=0;/控制行數(shù),具體你自己定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);/設(shè)置地區(qū)語言為中文CStdioFile file; file.Open(BatInfo.txt, CFile:modeRead);CString s;int n = 0;/控制行數(shù),具體你自己定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); /還原語言地區(qū)設(shè)置/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轉(zhuǎn)化 nId=(int)m_listAll.GetNextSelectedItem(pos); /得到列中的內(nèi)容(0表示第一列,同理1,2,3.表示第二,三,四.列) SPath=m_listAll.GetItemText(nId,2); OPath=m_listAll.GetItemText(nId,3); Tranfile(SPath.GetBuffer(0), OPath.GetBuffer(0);MessageBox(還原成功);五、測試、調(diào)試過程1上機過程中出現(xiàn)的問題及其解決方案(1)問題:剛開始不知道選擇文件對話框中是怎么出來的后來 解決方案:百度找了一下(2)問題:不知道如何給ListControl控件動態(tài)綁定數(shù)據(jù) 解決方案:百度了一下2完成結(jié)果:(1)瀏覽文件按鈕功能(2)列表顯示詳細(xì)信息功能(3)備份按鈕功能(3)完成保存功能(4)還原功能6、 結(jié)論與體會 這次實驗讓我對MFC編程加深了了解,讓我有了很好我鍛煉,在我以后遇到同樣問題的時候我就有了更多的經(jīng)驗。雖然在編程過程中遇到了諸多的問題,但我都一一破解,也許這就是編程樂趣的所在。 兩個星期的課程設(shè)計雖然有些疲勞和困倦,但帶給我很多的收獲。隨著課程學(xué)習(xí)的深入,我感覺到了利用類和對象、繼承、封裝等一系列知識可以把我們程序中很多繁雜、重復(fù)的部分省略掉,還可以解決一些利用面向過程的設(shè)計思想無法解決的問題。在課程設(shè)計之前,因為有了綜合實驗的經(jīng)驗與教訓(xùn),明白了寫代碼這一步是非常重要的,因為當(dāng)你把代碼輸入電腦,并用編譯器將其運行,發(fā)現(xiàn)通過不了,再來檢查找出問題,這是一件非常辛苦的事情,也很浪費時間。于是在課程設(shè)計的時候,我花了三天的時間來規(guī)劃與寫代碼,將要實現(xiàn)的內(nèi)容分析清楚,才把代碼輸入電腦。我覺得寫程序,應(yīng)該先找到該程序中的核心地方,用多種方法來實現(xiàn)該核心,這才可能避免等到發(fā)現(xiàn)邏輯上或者編譯器不支持上的錯誤,才來想補救的措施,這樣花費時間在想補救措施是很不值得的。七、參考文獻(xiàn) 1(美)戴特爾(Deitel,H.M.).C+大學(xué)基礎(chǔ)教程(第五版)M.北京:電子工業(yè)出版社,2007.62 譚浩強.C+程序設(shè)計M. 北京:清華大學(xué)出版社,20063 百度附錄:源程序/ FileCopyDlg.cpp : 實現(xiàn)文件/#include stdafx.h#include FileCopy.h#include FileCopyDlg.h#include afxdialogex.h#include #include #include #include #ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于應(yīng)用程序“關(guān)于”菜單項的 CAboutDlg 對話框using namespace std;class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 對話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 實現(xiàn)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();/ 將“關(guān)于.”菜單項添加到系統(tǒng)菜單中。/ IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 設(shè)置此對話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對話框時,框架將自動/ 執(zhí)行此操作SetIcon(m_hIcon, TRUE);/ 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE);/ 設(shè)置小圖標(biāo)/ 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);/設(shè)置地區(qū)語言為中文CStdioFile file;file.Open(BatInfo.txt,CFile:modeRead);CString s;int n=0;/控制行數(shù),具體你自己定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); /還原語言地區(qū)設(shè)置return TRUE; / 除非將焦點設(shè)置到控件,否則返回 TRUEvoid CFileCopyDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialogEx:OnSysCommand(nID, lParam);/ 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼/ 來繪制該圖標(biāo)。對于使用文檔/視圖模型的 MFC 應(yīng)用程序,/ 這將由框架自動完成。void CFileCopyDlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用于繪制的設(shè)備上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使圖標(biāo)在工作區(qū)矩形中居中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;/ 繪制圖標(biāo)dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/當(dāng)用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)/顯示。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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北師大版道德與法治七年級下冊9.1《我們身邊的法律》聽課評課記錄
- 湘教版數(shù)學(xué)九年級下冊聽評課記錄:2.3 垂徑定理
- 小學(xué)二年級上冊數(shù)學(xué)口算練習(xí)題人教版新課標(biāo)
- 小學(xué)二年級人教版口算及豎式計算寒假練習(xí)A4排版
- 小學(xué)二年級加減乘法口算練習(xí)題
- 蘇教版小學(xué)二年級數(shù)學(xué)上冊口算題卡
- 超市連鎖加盟合同范本
- 儲藏室租賃合同范本
- 汽車二級經(jīng)銷商合作協(xié)議書范本
- 二零二五年度美容學(xué)員美容行業(yè)技能提升培訓(xùn)協(xié)議
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計(全)
- 宿舍、辦公樓消防應(yīng)急預(yù)案
- 細(xì)胞全能性的課件資料
- 職業(yè)安全健康工作總結(jié)(2篇)
- 14S501-1 球墨鑄鐵單層井蓋及踏步施工
- YB 4022-1991耐火泥漿荷重軟化溫度試驗方法(示差-升溫法)
- 水土保持方案中沉沙池的布設(shè)技術(shù)
- 安全生產(chǎn)技術(shù)規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進(jìn)本土項目化設(shè)計-讀《PBL項目化學(xué)習(xí)設(shè)計》有感
- 高中語文日積月累23
評論
0/150
提交評論