已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
成績 課程設(shè)計(jì)報(bào)告 題 目 文件備份管理系統(tǒng) 課 程 名 稱 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì) 院 部 名 稱 計(jì)算機(jī)工程學(xué)院 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級 14計(jì)算機(jī)科學(xué)與技術(shù)(單)(1) 學(xué) 生 姓 名 邵佳楠 學(xué) 號 1413201001 課程設(shè)計(jì)地點(diǎn) A101 課程設(shè)計(jì)學(xué)時(shí) 20學(xué)時(shí) 指 導(dǎo) 教 師 趙 金陵科技學(xué)院教務(wù)處制一、課程設(shè)計(jì)的目的和要求該課程設(shè)計(jì)的目的采用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,學(xué)會綜合運(yùn)用已學(xué)的C+知識,用面向?qū)ο蟮募夹g(shù)和文件打開,關(guān)閉,保存等實(shí)現(xiàn)一個(gè)小型的應(yīng)用程序.開發(fā)實(shí)現(xiàn)一個(gè)應(yīng)用程序,主要目的是使學(xué)生更好的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)語言及其開發(fā)工具,掌握如何使用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言設(shè)計(jì)一個(gè)小的軟件系統(tǒng)。通過該課程設(shè)計(jì)培養(yǎng)學(xué)生分析和解決實(shí)際問題的能力,培養(yǎng)學(xué)生綜合應(yīng)用基本概念,基本原理,和技術(shù)方法的能力,真正做到學(xué)以致用,使課本上抽象的理論,方法與具體的實(shí)踐應(yīng)用相結(jié)合。2、 系統(tǒng)需求分析(1) 設(shè)計(jì)瀏覽文件按鈕,點(diǎn)擊彈出選擇文件提示框(2) 選取文件后把文件地址保存到靜態(tài)變量(3) 設(shè)計(jì)備份按鈕,點(diǎn)擊彈出保存文件提示框(4) 選擇保存目錄后把目錄地址保存到靜態(tài)變量(5) 執(zhí)行文件保存函數(shù)傳入兩個(gè)地址達(dá)到文件備份的目的(6) 成功保存后將文件名,備份時(shí)間,備份地址保存到txt文檔中(7) 讀取txt文檔內(nèi)容在列表控件中顯示 (8) 還原功能系統(tǒng)界面如下:1. 瀏覽文件按鈕2. 源文件地址預(yù)覽3. 備份歷史記錄列表4. 備份文件按鈕5. 取消按鈕6. 備份按鈕三、總體設(shè)計(jì)文件備份顧名思義就是將一個(gè)文件復(fù)制到另一個(gè)文件夾中,但要實(shí)現(xiàn)復(fù)制最起碼要知道兩個(gè)參數(shù):1.源文件 2.目的目錄總體流程:開始選擇文件選擇備份目錄開始備份結(jié)束4、 詳細(xì)設(shè)計(jì)(1)此處是窗口初始化函數(shù)以及初始化列表信息BOOL CFileCopyDlg:OnInitDialog()CDialogEx:OnInitDialog();/ 將“關(guān)于.”菜單項(xiàng)添加到系統(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)用程序主窗口不是對話框時(shí),框架將自動(dò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, 備份時(shí)間, 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)此處是備份按鈕點(diǎn)擊事件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; /首先得到點(diǎn)擊的位置 POSITION pos=m_listAll.GetFirstSelectedItemPosition(); if(pos=NULL) MessageBox(請至少選擇一項(xiàng),提示,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上機(jī)過程中出現(xiàn)的問題及其解決方案(1)問題:剛開始不知道選擇文件對話框中是怎么出來的后來 解決方案:百度找了一下(2)問題:不知道如何給ListControl控件動(dòng)態(tài)綁定數(shù)據(jù) 解決方案:百度了一下2完成結(jié)果:(1)瀏覽文件按鈕功能(2)列表顯示詳細(xì)信息功能(3)備份按鈕功能(3)完成保存功能(4)還原功能6、 結(jié)論與體會 這次實(shí)驗(yàn)讓我對MFC編程加深了了解,讓我有了很好我鍛煉,在我以后遇到同樣問題的時(shí)候我就有了更多的經(jīng)驗(yàn)。雖然在編程過程中遇到了諸多的問題,但我都一一破解,也許這就是編程樂趣的所在。 兩個(gè)星期的課程設(shè)計(jì)雖然有些疲勞和困倦,但帶給我很多的收獲。隨著課程學(xué)習(xí)的深入,我感覺到了利用類和對象、繼承、封裝等一系列知識可以把我們程序中很多繁雜、重復(fù)的部分省略掉,還可以解決一些利用面向過程的設(shè)計(jì)思想無法解決的問題。在課程設(shè)計(jì)之前,因?yàn)橛辛司C合實(shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸入電腦,并用編譯器將其運(yùn)行,發(fā)現(xiàn)通過不了,再來檢查找出問題,這是一件非常辛苦的事情,也很浪費(fèi)時(shí)間。于是在課程設(shè)計(jì)的時(shí)候,我花了三天的時(shí)間來規(guī)劃與寫代碼,將要實(shí)現(xiàn)的內(nèi)容分析清楚,才把代碼輸入電腦。我覺得寫程序,應(yīng)該先找到該程序中的核心地方,用多種方法來實(shí)現(xiàn)該核心,這才可能避免等到發(fā)現(xiàn)邏輯上或者編譯器不支持上的錯(cuò)誤,才來想補(bǔ)救的措施,這樣花費(fèi)時(shí)間在想補(bǔ)救措施是很不值得的。七、參考文獻(xiàn) 1(美)戴特爾(Deitel,H.M.).C+大學(xué)基礎(chǔ)教程(第五版)M.北京:電子工業(yè)出版社,2007.62 譚浩強(qiáng).C+程序設(shè)計(jì)M. 北京:清華大學(xué)出版社,20063 百度附錄:源程序/ FileCopyDlg.cpp : 實(shí)現(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)于”菜單項(xiàng)的 CAboutDlg 對話框using namespace std;class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 對話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 實(shí)現(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)于.”菜單項(xiàng)添加到系統(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)用程序主窗口不是對話框時(shí),框架將自動(dò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, 備份時(shí)間, 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; / 除非將焦點(diǎn)設(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)用程序,/ 這將由框架自動(dò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)用戶拖動(dòng)最小化窗口時(shí)系統(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+點(diǎn)+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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版機(jī)床租賃與購買選擇合同范本3篇
- 2025年度城市街道綠化帶綠植花卉租賃養(yǎng)護(hù)協(xié)議4篇
- 二零二五版財(cái)務(wù)軟件定制開發(fā)及實(shí)施服務(wù)協(xié)議3篇
- 2025年度智能路燈遠(yuǎn)程監(jiān)控管理平臺開發(fā)合同范本4篇
- Module 2 Unit 2 Thats my family(說課稿)-2024-2025學(xué)年牛津上海版(試用本)英語二年級上冊
- 2024秋七年級英語上冊 Unit 2 This is my sister說課稿(新版)人教新目標(biāo)版
- 11《百年孤獨(dú)(節(jié)選)》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文選擇性必修上冊
- 8安全記心上 第一課時(shí) 說課稿-2024-2025學(xué)年道德與法治三年級上冊統(tǒng)編版
- 二零二五年度大健康產(chǎn)業(yè)合作合同范本4篇
- 二零二五年智能燈具產(chǎn)品區(qū)域代理銷售合作合同3篇
- 第1本書出體旅程journeys out of the body精教版2003版
- 臺資企業(yè)A股上市相關(guān)資料
- 電 梯 工 程 預(yù) 算 書
- 羅盤超高清圖
- 參會嘉賓簽到表
- 機(jī)械車間員工績效考核表
- 2.48低危胸痛患者后繼治療評估流程圖
- 人力資源管理之績效考核 一、什么是績效 所謂績效簡單的講就是對
- 山東省醫(yī)院目錄
- 云南地方本科高校部分基礎(chǔ)研究
- 廢品管理流程圖
評論
0/150
提交評論