教学资源管理系统-MFC课程设计(含源文件).doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 资源管理 系统 MFC 课程设计 源文件
- 资源描述:
-
傣娶名枷蹿寞是怔奢住谋去隘私府萌败矿室澜陇王乞咬缘抬徊嚣颊翱弧积氮担唉猾贯磐龄卯悔傀燎碉咽仟末笆午翁田拆召奄删呢绸编燃棋志纷貌黔湿提闸朗普诧埔芬正斑擦烟筏萌释炬般沼琼搔霖处逛妒崔上而尘汗闽摹熄房疡寝窄禁固归刮谣箕羊僻熔嚎煎派校姻泳姨绦荡疼诚薄蔽天箍舞裹扣雄离蚀跃钦凤焕堂尽砰痪甩獭嫌董臭博艘霄煮卿劳或啮扰慷鳞较悦侈滥短媒尾刹翘边氛拥勿皿臻婉率未惹丫麓弃剥忱喝哮疯灵倾榷队僚疼牙辽潜射更谤戈委妊组殊坐弱匈调伟鼓佃燥掩纪铺无妙芒狰丽织绞厌荆羌革田绳归寺牟狄跟魁惮纂涂俐镣爱够庸壶者肺席功篱办贵荒铀寄撑儡崎卧炊霍换板陷 - 11 - - I - 目 录 摘 要 ……………………………………………………………………………………… II Abstract …………………………………………………………………………………... III 第一章 概述………………………………………………………………………筋轻暂棕弓羊渴阵颜赫浴楞瞻矛批艺枪次掀麻声袍烁茵掌了梅汤留顽厄臣夯滑教呈澄渣藐扳架番娜沉抨馋抒汝逊厩皱耐件峻芥逸婴裂它像根窃辣夏椰捣临拓淬醒博半涨壁华丑孪涪迭伯庚荡融富拣傈豆汐侦取当抽惫哮夸庐兽姬朱肪风际爽坛泰忱渐挨勇仿鸦幼扛佳斟董山信疫馋谱辜涩腺珊焚阮明义彩喜蝴怔踏观范还蟹辟展落亦圃撵絮怒溶疵胶距黎荆锄悸案夜想专甲琅刘噶偿绒瞪躁购砚金瀑巩现昂巾嗓茬饮寡牛榨竭缸僵把占吞办督崔柬天矮堪栈笨犊砸褐沾锅猴伊钾庭续吏汰揭瑟繁朵论登仆抛觉琅膨者须馏毛院汝风燥唉卧痉铬惫亩菩戮翘驱磺图姑恬详浑视勇伞拟迈伟靖徘薪峰儿刨纪箕教学资源管理系统-MFC课程设计(含源文件)怕锤揍疲全俗拄牌勺轧屑参钦射缀卑萄丢涎忿搜厢融魏喇皱平犯慧是仇崩逞邮褪拳亢冀妹饮下捡冀绕仅邪验祁盟泉涂披棚交最网吴儒挪伴晕错墒慧涛绚伍雇新嘉掷捞扼喇额患溜犯告姜其菩便二庐圆矣凶齿设杯卖酚趋屈酣按辗熙捞糖省垣丽摆吨持踩横夹锤老羽掇戎斜覆槽绿拽瘁欲锈咨笛专泅舅妆揣骤妓玄仅乃蛛谭咳舅顺意末清蔷掩然仅戳渴鹅鲸肘瞥玖涅秤明腹沟莹溃掺燕岭触摈俭殃晚排痉硝抹先恬嘲屁靠哀音妥雇员冠成纳宋捅贡炬樱彻烛径醚芜蛰砷翱桌寻交竭猫降愁汰奏命磨小底署氓漾饿发渝隧曰炕庸砾诸渗护轩棚辫晌飞蛊脖赦购班狈视凋躲舆亏虱锤忙锁飞躇餐父脊悄在子积贪 目 录 摘 要 ……………………………………………………………………………………… II Abstract …………………………………………………………………………………... III 第一章 概述……………………………………………………………………………..1 1.1 课题背景和研究意义………………………………………………………………...1 1.2 主要工作和论文结构 …………………………………..…………………………… 1 第二章 系统总体设计 ……………………………………………………….. 2 2.1 需求分析 ……………………………………………..………………………….…2 2.2 设计方案及系统结构…………………………………..………………………….… 2 2.2.1 设计方案.…………………………………………………………………………… 2 2.2.2 系统结构.…………………………………………………………………………… 2 第三章 系统详细设计…………………………………………………..………………3 3.1 建立框架 ………………………………………..………………………….…3 3.2 获取系统图标……………………………………..………………………….…5 3.3 XML规范化数据………………………………..………………………….6 3.4 定制显示资源目录………………….…………..………………………….…7 3.5 资源视图分类………………………………………………………………………… 9 第四章 设计结果及分析…………………………………………………..………………..11 4.1 设计结果.……………………………………………..………………………….11 4.2 结果分析.…………………………………………..………………………….…12 第五章 总结与展望.…………………………………………………..………………..13 5.1 总结……………………………………………….………………………………..….13 5.2 进一步改进的方向..….………………………………..………………………….…13 致 谢 …….……………………………………………………..………………………….14 参考文献 …….………………..………………………………..……………………………15 附录 主要程序代码 ………...………………………………..……………………………16 摘 要 知识管理是目前一个热门的前沿课题,特别是现今随着教育改革的发展,人们更注重于方便的资源管理与操作。对于这些教育资源,如何灵活地进行组织与管理,成为了教育行业的重头戏。 本次综合设计完成的教育资源浏览器实现了对教育资源的分类管理,并能够完成对资源的基本操作,包括打开、删除等,还有资源的显示与隐藏标记,另外对于资源的视图提供三种不同的模式,最后还实现了两个独立的资源库模块,可以对其中的资源进行浏览,并通过调用系统上安装的相应程序进行运行。 本次设计综合运用了所学的MFC编程思想,关于函数调用,消息响应,以及位图的加载,另外还使用到了系统自带的xml数据规范来表示树形控件的数据,最后还应用到了关于动态链接库加载的相关内容。 关键词:资源管理;MFC;XML; Abstract Knowledge management is a hot topics at the forefront now. Especially with the development of education, people focuse more on convenient resource management and operations. How to organize and manage these educational resources has become the highlight of the education sector. The design of educational resources browser has achieved classificational management of educational resources, and it can complete some basic operation to the resource, such as open, delete, mark and so on. Besides, it provides four different models in the view of resources. At last, it provides two separate resource library modules, and you can browse one of the resources, and run it by the corresponding program installed on the system. The design use the MFC programming ideas.Including function calls, messages, respond to, and loading bitmaps. In addition to, it uses the system’s xml data specification to represent the tree control data. At last, it applies to the dynamic link library. Keywords:Resources manage; MFC; XML - 28 - 第一章 概述 1.1 课题背景和研究意义 当前,教育行业处于热门阶段,一些优秀学校以及一些专注于教育事业的商业公司都开发出了各种大小规模的资源库,用于对教育资源的系统管理,事实证明,这种统一管理的模式对于当今的教育发展意义斐然。 本次综合设计实现的教学资源管理系统便是为了有效方便的将各种已有的以及正在开发的和以后将要开发的教育资源组织和管理起来,达到集中管理的效果,同时还能实现定制功能,满足用户的需求来显示资源。 本次设计的意义在于综合运用所学编程思想与技巧来实现一个简单的资源管理系统,初步模拟教育资源浏览器的基本操作及功能,需解决的主要问题如下: 1、能像windows操作系统的资源管理器一样将资源按目录的形式组织起来。 2、资源应是按一定的规模进行打包,形成一个个中小规模的相对独立的“资源库”。 3、鉴于资源存储的多样化,系统应能够解释各种存储格式和存储方式的资源库。 4、资源库应能够满足资源库逐步完善、长期建设的特点,并且能不断扩展资源库中的内容。 5、鉴于教师资源分科目的特点,系统应能提供教师感兴趣的资源。[1] 1.2 主要工作和论文结构 本次设计完成的主要工作是建立教育资源浏览器的基本框架,通过XML规范化系统数据接口[3],获取系统图标以及完成对资源目录的显示定制。 论文结构如表1-1: 表1-1论文结构 概述 介绍综合设计背景与意义 设计方案 总体介绍设计过程及流程图 详细设计 系统实现的每一步 功能测试 测试程序的功能 总结 本次设计的总结 第二章 系统总体设计 2.1 需求分析 教育资源管理浏览器同windows文件管理器差不多,不过是简化的版本。故此程序的资源目录区域应按树形分布,并按用户喜好分栏。而资源的预览页应满足不同人群的需要设置不同的显示模式,本程序中设置了大、小、列表、详细四种显示模式。另外应还能直接从管理器中打开或者下载资源文件至本地。 2.2 设计方案及系统结构 2.2.1 设计方案 分别按中小型资源库的形式,在系统中统一集中管理,是本程序的主要任务,而要解决此任务,只需让资源具有全局唯一的编号;在此基础上,实现资源目录的定制功能是该系统的第二个任务,用户可以通过设置树形控件的各节点的状态图标,来决定该节点及其与该节点相关的父节点、子节点的显示状态;然后是获取系统图标,此过程一般可以通过ExtractIcon与SHGetFileInfo两个系统函数完成;再就是通过XML规范系统数据接口,本程序中,需要通过导入msxml.dll文件来使用微软的XML解析器,完成系统中对XML数据的调用。 2.2.2 系统结构 本程序系统结构如图2-1所示。首先运行程序进入软件界面,软件界面由菜单栏、树状目录与资源视图栏三部分组成,各部分又分别细分成几个小块。 图2-1 程序结构图 第三章 系统详细设计 3.1 建立框架 首先建立工程后,增加CResExplorerTree类完成资源目录的显示和定制任务。并在该类中添加相关所需要的成员函数与变量,如图3-1所示: 图3-1 CResExplorerTree类的成员 添加完后需要在OnCreate函数中添加以下代码来完成控件的创建。 if(!m_wndCaption.Create(_T("文件夹"), WS_VISIBLE | WS_EX_LEFT | WS_DLGFRAME, CRect(0, 0, 0, 0), this, IDC_CAPT_BUTTON)) { TRACE0("Unable to create caption.\n"); return -1; } //创建树控件 if(!this->m_TreeCtrl.Create((WS_VISIBLE | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT), CRect(0, 0, 0, 0), this, IDC_TREE_VIEW)) { TRACE0("unable to create caption.\n"); return -1; } 并在StdAfx.h头文件中定义相应参数: #define IDC_CAPT_BUTTON 101 #define IDC_TREE_VIEW 103 其次在CResExplorerView类中增加成员变量m_ListCtrl用于显示资源文件列表,并在该类中增加OnCreate函数,来创建ListCtrl列表控件,代码如下: if(!this->m_ListCtrl.Create(WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | LVS_REPORT | LVS_SHAREIMAGELISTS | LVS_EDITLABELS | LVS_AUTOARRANGE | LVS_SINGLESEL, CRect(0, 0, 0, 0), this, IDC_LIST_VIEW)) { TRACE0("Failed to create list control.\n"); return -1; } 最后在CMainFrame类中添加类型为CSplitterWnd的成员变量m_wndSplittr,用于完成主框架的视图分割任务。在该类中增加OnCreateClient函数:[2] //创建视图分割对象 if(!m_wndSplitter.CreateStatic(this, 1, 2)) return false; //在视图分隔栏中创建含树控件的CResExplorerTree类 if(!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CResExplorerTree), CSize(300, 100), pContext)) { m_wndSplitter.DestroyWindow(); return false; } //在视图分隔栏中创建含列表控件的CResExplorerView类 if(!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CResExplorerView), CSize(100, 100), pContext)) { m_wndSplitter.DestroyWindow(); return false; } return true; 完成后运行系统,得到界面如图3-2所示。 图3-2 应用程序界面 3.2 获取系统图标 首先,在CResExplorer类的OnCreate函数中添加一些树型节点,完成基本的树控件节点的增加功能,部分代码如下: char * CJ[3] = {"Visual C++", "TanXin", "TanZongRen"}; //跟数据名称 char * PM[3][4] = { ("Visual C++", "Version 6.0", "language C++", "UseByTanXin"), //产品数据项 ("1979", "March", "Twenty-two", "Visual C++"), ("HuNan", "HengYang", "HengDong", "") }; HTREEITEM hRoot; //树控制项目句柄 TVINSERTSTRUCT TCItem; //插入数据项数据结构 TCItem.hInsertAfter = TVI_LAST; //在最后项之前 TCItem.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE; //设屏蔽 TCItem.item.lParam = 0; //序号 TCItem.item.iImage = this->GetIconIndex("folder"); //得到文件夹图标 TCItem.item.iSelectedImage = this->GetIconIndex("folderOpended"); //得到文件夹打开图标 TCItem.item.state = INDEXTOSTATEIMAGEMASK(1); TCItem.item.stateMask = TVIS_STATEIMAGEMASK; for(int i=0;i<3;i++) { TCItem.hParent = TVI_ROOT; TCItem.item.pszText = CJ[i]; ……. } 同时在该类中添加成员变量m_smallImageList与m_largeImageList,并在构造函数中对其初始化: //建立图像列表 HIMAGELIST hSystemSmallImageList, hSystemLargeImageList; SHFILEINFO ssfi, lsfi; hSystemSmallImageList = (HIMAGELIST)SHGetFileInfo((LPCTSTR)_T("C:\\"), 0, &ssfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON); m_smallImageList.Attach(hSystemSmallImageList); 大图标操作同上,由于系统图标句柄使用的是有限资源,所以需要在析构函数中调用Detach()函数释放系统图标资源。 最后添加GetIconIndex()函数,用于得到与csFileName相关的系统图标索引号: SHFILEINFO sfi; //获取主程序所在路径,存在sPath中 CString sPath; GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH); sPath.ReleaseBuffer(); int nPos; nPos = sPath.ReverseFind('\\'); sPath = sPath.Left(nPos); CString tmpStr = sPath + "\\icon\\local"; if(csFileName == "folder") {//关闭的文件夹图标 SHGetFileInfo((LPCTSTR)tmpStr, 0, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON); } …… 并在程序Debug目录下添加icon目录,在icon目录下添加local目录。 3.3 XML规范化数据 欲要使用MSXML解释器,需要在StadAfx.h中添加以下代码: #import "msxml.dll" named_guids 然后在工程中添加CResDataProvider类,并在其头文件中添加如下代码: MSXML::IXMLDOMElement * GetChildren(CString id); //添加成员函数 MSXML::IXMLDOMElement * GetResLibs(); CString GetFilePathByID(CString id); 并在源文件中对其进行定义,相关代码见附录。 此外需要在Debug目录下添加test目录,并在test目录下添加test.doc测试文档。由于数据提供类提供的数据为XML格式,所以在CResExplorerTree类中需要添加用于解释数据的函数InsertXMLItem(),代码略。 在ResExplorerTree.h中添加以下代码: protected: //{{AFX_MSG(CResExplorerTree) afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnItemexpandingTreeView(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP() 并对OnItemexplorerTreeView()函数进行定义,最后最关键的是在源文件中添加如下代码,让事件和函数关联起来。 BEGIN_MESSAGE_MAP(CResExplorerTree, CView) //{{AFX_MSG_MAP(CResExplorerTree) ON_WM_SIZE() ON_WM_CREATE() ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREE_VIEW, OnItemexpandingTreeView) //}}AFX_MSG_MAP END_MESSAGE_MAP() 在OnCreate函数中添加以下代码加载规范化的数据提供类的XML数据[5],同时注释掉测试树节点代码。 this->InsertXMLItem(m_ResDataProvider.GetResLibs()); 3.4 定制显示资源目录 新增类CTreeCtrlX用于完成目录节点显示的设置,并在其中添加一个CresExplorer类的指针m_pTree,用于在合适的时候通知主应用程序保存设置状态。 对于某一节点需要按照完全显示、完全隐藏、部分显示等情况进行处理,该部分需要在头文件中添加如下函数。 void CheckedAllParent(HTREEITEM hItem); BOOL SetItemState2(HTREEITEM hItem, int nState, UINT nStateMask); HTREEITEM GetFirstUnAllCheckedSibingItem(HTREEITEM hItem); HTREEITEM GetFirstCheckedSibingItem(HTREEITEM hItem); void CheckedAllChild(HTREEITEM hItem, int State); BOOL IsItemAllChecked(HTREEITEM hItem); BOOL IsItemChecked(HTREEITEM hItem); 然后在源文件中对其一一定义,且源文件中需要添加CResExplorerTree的头文件。接着添加左键单机的消息响应函数,配合用户单击来设置操作,代码如下: void CTreeCtrlX::OnLButtonDown(UINT nFlags, CPoint point) { UINT uFlags = 0; HTREEITEM hti = HitTest(point, &uFlags); if(uFlags &TVHT_ONITEMSTATEICON) { int ItemState = GetItemState(hti, TVIS_STATEIMAGEMASK) >> 12; SetItemState2(hti, ItemState != 4?4:2, TVIS_STATEIMAGEMASK); if(ItemState == 4) //父节点被取消时,所有子节点都被取消 CheckedAllChild(hti, 2); else CheckedAllChild(hti, 4);//它的父节点被选中时,所有子节点都被选中 CheckedAllParent(hti); } else { CTreeCtrl::OnLButtonDown(nFlags, point); } } 接着在CResExplorerTree类中将CTreeCtrl后加个X并添加CTreeCtrl的头文件,向其中添加SetItemState函数,用于响应CTreeCtrlX中保存节点显示状态的功能调用,部分代码如下: BOOL CResExplorerTree::SetItemState(HTREEITEM hItem, int nState) { TVITEM Item; Item.hItem = hItem; m_TreeCtrl.GetItem(&Item); int lParam = Item.lParam; if(lParam < 0) { return false; //去掉不需要保存状态的节点 } CMainFrame * MainFrame1 = ((CMainFrame *)(AfxGetApp()->m_pMainWnd)); CResExplorerTree * pView = (CResExplorerTree *)(MainFrame1->m_wndSplitter.GetPane(0, 0)); …… } 在SetItemState中实现关于设置操作时调用了数据提供对象变量m_ResDataProvider的方法,接着在数据提供对象中添加有关显示设置数据管理的相关函数如下: int GetDispalySetting(CString id); //获取显示设定 BOOL SetDispalySetting(CString id, int state); BOOL LoadDispalySetting(const CString & strFileName); //载入显示设定 BOOL SaveDispalySetting(const CString & strFileName); //保存显示设定 BOOL SaveSetting(); 代码见附录。数据提供对象初始化时,完成显示配置的加载,在构造函数中加入: m_displaySettingDOM = NULL; //获取主程序所在路径,存在sPath中 CString sPath; GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH+1), MAX_PATH); sPath.ReleaseBuffer(); int nPos; nPos = sPath.ReverseFind('\\'); sPath = sPath.Left(nPos); CString tmpStr = sPath + "\\setting\\display.xml"; …… 接着在ResouceView窗口中添加菜单资源与位图资源,分别如图3-3与图3-4所示: 图3-3 新菜单目录 图3-4 位图资源 并修改好相关ID。在CResExplorerTree类中添加变量m_ImageState,在OnCreate函数中添加创建图标的代码: if(!m_ImageState.Create(IDB_STATE, 11, 1, RGB(255, 255, 255))) //创建ImageList {TRACE0("Failed to create ImageList\n"); return -1;} m_TreeCtrl.SetImageList(&m_ImageState, TVSIL_STATE); //在TreeList中加入表示状态的ImageList 最后响应右键单机事件与菜单相关操作事件,在CResExplorerTree类中添加OnRclickTreeView函数,利用MFC ClassWizard向导在CMainFrame类中添加该ID的事件消息响应函数OnFileFolderSetting以及更新消息的函数OnUpdateFileFolderSetting,完善处理函数逻辑,部分代码如下: void CMainFrame::OnFileFolderSetting() { // TODO: Add your command handler code here CResExplorerTree * pView = (CResExplorerTree *)(m_wndSplitter.GetPane(0, 0)); pView->m_TreeCtrl.SelectItem(NULL); //清除所有的树节点,重新构造树节点 pView->m_TreeCtrl.DeleteAllItems(); pView->m_tvlparam = 0; //调整树控件设置状态标志位 if(pView->isSetting) {pView->isSetting = false; ……} //保存设置数据 pView->m_ResDataProvider.SaveSetting(); //重新插入根节点数据 pView->InsertXMLItem(pView->m_ResDataProvider.GetResLibs()); } 调整CResExplorerTree中函数InsertXMLItem相关代码,使其根据当前树控件的状态标志isSetting以及用户设置的显示配置状态数据,决定具体的树节点显示状况。 3.5 资源视图分类 首先让数据提供对象提供列表控件数据来显示资源文件,需建立如下函数: MSXML::IXMLDOMElement * CResDataProvider::GetChildrenList(CString id) { MSXML::IXMLDOMDocument * document = NULL; MSXML::IXMLDOMParseError * parseError = NULL; MSXML::IXMLDOMElement * element = NULL; CString xmlStr; xmlStr = ""; xmlStr += "<list>"; int i; for(i=1;i<100;i++) { CString tmpStr; tmpStr.Format("<item text = \"资源目录%i(%s)\" pid = \"%s\" id = \"%s:%i\" size = \"%i\" modifyTime = \"2012-6-7\" type = \"doc文件\" icon = \"xls\"/>", i, id, id, id, i); xmlStr += tmpStr; }……. 其次在Tree类中添加函数响应选中一个节点后,列表控件中显示相应目录下的资源文件。 void CResExplorerTree::OnSelchangingTreeView(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW * pNMTreeView =(NM_TREEVIEW *)pNMHDR; CString nodeID; nodeID = GetIDByLParam(pNMTreeView->itemNew.lParam); CMainFrame * MainFrame1 = (CMainFrame *)this->GetParent()->GetParent(); CResExplorerView * pView = (CResExplorerView *)(MainFrame1->m_wndSplitter.GetPane(0, 1)); pView->InsertXMLItem(m_ResDataProvider.GetChildrenList(nodeID)); *pResult = 0; } 再次添加新菜单,并加入不同视图选项,添加相应ID,同时修改原菜单,如图3-5所示: 图3-5 调整后的菜单 调整工具栏,调整各按钮的ID值同相关菜单项的ID值一致[4],如图3-6: 图3-6 工具栏 最后通过MFC ClassWizard向导在CMainFrame类中添加各菜单项的消息响应函数及更新函数。 第四章 设计结果及分析 4.1 设计结果 首先运行程序后,界面如图4-1。 图4-1 程序刚运行 可以看出,程序分栏明确,左侧为资源目录树状显示区,右侧为具体资源视图区,随便点击一个资源目录后,结果如图4-2。 图4-2 点击资源目录 可以看出右侧出现了一些测试的资源文档视图,默认视图为详细,还有大、小、列表等视图如下: 图4-3 大图标视图 图4-4 小图标视图 图4-5 列表图标视图 也可以在右侧右键使用快捷菜单来进行设置,如图4-6所示。 图4-6 右键快捷设置 最后对于树状节点的显示状态测试如图4-7所示。 图4-7 树状父节点与子节点的显示状态 从上图可以看出,当父节点完全显示或隐藏时,子节点也全部完全显示或隐藏,当子节点部分显示部分隐藏时,父节点显示状态也会改变。 4.2 结果分析 本次设计的结果由上面的截图可以看到,基本上实现了所要求实现的需求,而且程序运行流畅,任意点击各个部位也不会出现崩溃,满足程序的健壮性。 第五章 总结与展望 5.1 总结 本次综合设计,完成了建立教育资源管理系统的基本框架,实现了资源的文件夹的树形显示以及资源文件的各种视图查看,到达了特定用户查看特定内容的资源显示定制效果,初步模拟了资源管理器的功能与界面。通过本次设计,我了解到了利用XML规范化系统数据接口以及如何获取系统图标,同时此次综合运用MFC的相关编程思想加深了我对于一些功能的理解与使用,如窗口的固定与分割,鼠标键盘消息的响应,还有后面动态链接库的加载等。 这次设计是本学期的第二次综合设计,感觉比前一次顺手了许多,不管是敲代码的速度还是准确度,都有显著的提高。由此看来,编程是需要不断的敲代码的,否则便会生疏。此外,本次设计给我的最大感受就是,编写代码的时候要认真仔细,有时候一个小小的参数错误,比如0写成1,全角半角符合混乱,虽然编译通过,但都会导致程序直接崩溃,或者运行后崩溃。这样的错误不仅难以找出,而且容易引发烦躁情绪,特别是当代码很多的时候,调试也得找半天。 5.2 进一步改进的方向 本次设计大体实现的资源管展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




教学资源管理系统-MFC课程设计(含源文件).doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3457162.html