您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Windows程序课程设计报告
window程序课程设计简单的学生信息管理应用程序学生姓名:韩慧学生学号:031140312班级:031140--3二〇一三年十二月2简单的学生信息管理应用程序一、设计目的、内容及要求1.1设计目的1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思路和方法;3.掌握用VC++开发应用程序的的一般步骤和方法;1.2设计内容利用所学的基本知识,设计一个简单的学生信息管理应用程序,具有以下功能:①实现学生信息的存储,可以用文件来实现。②编程实现学生信息的添加、删除、修改、浏览和查询等功能。1.3设计要求1.用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;2.采用单文档多视图方式,左边为树视图,右边为列表视图,左边一级节点为中原工学院,二级节点为计算机学院和软件学院,三级节点为计算机学院的三个专业。要求可以动态增加节点。楼便为列表视图,包含学生的学号、性别、姓名各科成绩等。右边也可以实现动态增加33.当选中节点时,显示对应的学生信息。如当选中”中原工学院”时选中所用的学生信息,选中“计算机学院”时,显示所有计算机学院学生信息4.采用序列化方式保存和读取学生信息二、主要的数据结构1.数组集合类:CObArraym_stuObArray;2.树:3.序列化类数据三、基本思路基于树视图类建立单文档应用程序,插入列表视图类,切分窗口,左边为树视图,右边为列表视图。插入学生信息对话框,创建序列化类,并利用数组集合类储存学生信息。在主菜单中添加添加、修改、删除、查询菜单,并在文4档类中一一添加其映射函数。在列表视图类写入输出函数,在树视图类中添加click映射函数,调用列表试图中的输出函数,是两个视图之间建立关系。四、步骤及主要代码4.1设计并创建切分窗口完善视图1.用MFCAppWizard(exe)创建一个单文档应用程序Student。在第六步中将视图类的基类选择为CtreeView。2.用MFCClassWizard添加一个新的ClistView的派生类ClistView。打开CmainFrame.h文件,为CmainFrame类添加下列变量成员:public:CSplitterWndm_wndSplitter;3.用MFCClassWizard为CMainFrame类添加OnCreatClient函数,并添加下列代码:BOOLCMainFrame::OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext){m_wndSplitter.CreateStatic(this,1,2);m_wndSplitter.SetRowInfo(0,400,0);m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CStudentView),CSize(400,600),pContext);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(ClistView),CSize(400,600),pContext);returnTRUE;}4.在MainFrm.cpp的前面添加下列语句:#includeMainFrm.h#includeStudentView.h#includelistView.h在StudentView.cpp的前面添加下列下列语句:#includeStudentDoc.h5#includeStudentView.h#includelistView.h在StudentDoc.cpp的前面添加:#includeStudentDoc.h#includelistView.h#includeStudentView.h打开StudentView.h文件,在classCStudentView:publicCtreeView语句前面添加:classCStudentDoc;classCStudentView:publicCTreeView5.为CstudentView添加void类型函数creatTree()函数,并添加下列代码voidCStudentView::creatTree(){CTreeCtrl&m_TreeCtrl=GetTreeCtrl();m_TreeCtrl.DeleteAllItems();HTREEITEMhRoot,hParent,hChild,pS;hRoot=m_TreeCtrl.InsertItem(中原工学院,0,1);hParent=m_TreeCtrl.InsertItem(计算机学院,hRoot);m_TreeCtrl.InsertItem(网络工程,hParent);m_TreeCtrl.InsertItem(软件工程,hParent);m_TreeCtrl.InsertItem(计算机科学,hParent);hParent=m_TreeCtrl.InsertItem(软件学院,hRoot);BOOLflag=TRUE;CStudentDoc*doc=GetDocument();intnIndex=doc-m_stuObArray.GetSize();for(intn=0;nnIndex;n++){CStudentInfo*stu=(CStudentInfo*)doc-m_stuObArray.GetAt(n);CStringstr1=stu-strSpecial;CStringstr2=stu-strAcademy;if(!m_TreeCtrl.ItemHasChildren(hRoot))//判断根节点是否有子节点{hParent=m_TreeCtrl.InsertItem(str2,hRoot);m_TreeCtrl.InsertItem(str1,0,1,hParent);6}else{hParent=m_TreeCtrl.GetChildItem(hRoot);pS=hParent;for(;pS!=NULL;pS=m_TreeCtrl.GetNextItem(pS,TVGN_NEXT)){CStringstrItem1=m_TreeCtrl.GetItemText(pS);if(strItem1==str2)flag=FALSE;}if(flag){hParent=m_TreeCtrl.InsertItem(str2,hRoot);m_TreeCtrl.InsertItem(str1,0,1,hParent);}else{if(!m_TreeCtrl.ItemHasChildren(hParent))//判断是否有子节点m_TreeCtrl.InsertItem(str1,0,1,hParent);else{hChild=m_TreeCtrl.GetChildItem(hParent);for(;hChild!=NULL;hChild=m_TreeCtrl.GetNextItem(hChild,TVGN_NEXT)){CStringstrItem2=m_TreeCtrl.GetItemText(hChild);if(strItem2==str1)flag=TRUE;}if(!flag)m_TreeCtrl.InsertItem(str1,0,1,hParent);}}}}SetCtrlStyle(m_TreeCtrl.GetSafeHwnd(),7TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS);}6.为CstudentView添加SetCtrlStyle(HWNDhWnd,DWORDdwNewStyle)函数,并写入下列代码:voidCStudentView::SetCtrlStyle(HWNDhWnd,DWORDdwNewStyle){LONGlStyle;lStyle=GetWindowLong(hWnd,GWL_STYLE);//获取当前窗口stylelStyle&=~LVS_TYPEMASK;//清除显示方式位lStyle|=dwNewStyle;//设置styleSetWindowLong(hWnd,GWL_STYLE,lStyle);//设置style}7.在CStudentView::OnInitialUpdate中添加一些初始化代码:voidCStudentView::OnInitialUpdate(){CTreeView::OnInitialUpdate();CTreeCtrl&m_TreeCtrl=GetTreeCtrl();m_TreeCtrl.DeleteAllItems();creatTree();}8.为ClistView类添加print(CStudentInfo*dlg)和SetCtrlStyle(HWNDhWnd,DWORDdwNewStyle)函数,并添入下列代码:voidSetCtrlStyle(HWNDhWnd,DWORDdwNewStyle){DWORDdwOldStyle;dwOldStyle=GetWindowLong(hWnd,GWL_STYLE);if((dwOldStyle&LVS_TYPEMASK)!=dwNewStyle){dwOldStyle&=~LVS_TYPEMASK;dwNewStyle|=dwOldStyle;SetWindowLong(hWnd,GWL_STYLE,dwNewStyle);}}8voidClistView::print(CStudentInfo*dlg){CListCtrl&m_listctrl=GetListCtrl();m_listctrl.InsertItem(0,dlg-strName);m_listctrl.SetItemText(0,1,dlg-strNO);if(dlg-bMale)m_listctrl.SetItemText(0,2,男);elsem_listctrl.SetItemText(0,2,女);m_listctrl.SetItemText(0,3,dlg-tBirth.Format(%Y-%m-%d));m_listctrl.SetItemText(0,4,dlg-strAcademy);m_listctrl.SetItemText(0,5,dlg-strSpecial);CStringstr;str.Format(%d,dlg-English);m_listctrl.SetItemText(0,6,str);str.Format(%d,dlg-Computer);m_listctrl.SetItemText(0,7,str);}9.在ClistView::OnInitialUpdate中添加初始化代码:voidClistView::OnInitialUpdate(){CListView::OnInitialUpdate();CListCtrl&m_listctrl=GetListCtrl();SetCtrlStyle(m_listctrl.m_hWnd,LVS_REPORT);for(intn=0;n8;n++)m_listctrl.DeleteColumn(0);CStringstrHeader[8]={姓名,学号,性别,出生年月,学院,专业,英语,计算机};intnWidth[8]={100,80,60,100,150,150,80,80};for(intnCol=0;nCol8;nCol++)m_listctrl.InsertColumn(nCol,strHeader[nCol],LVCFMT_LEFT,nWidth[nCol]);}94.2文档序列化——建立可序列化类1.选择“文件”→“新建”菜单命令,显示出“新建”对话框。单击“文件”标签在左边的列表框中选择C/C++HeaderFile项,在右边的“文件”下的编辑框中键入StudentInfo.h,单击“确定”按钮。2.在文档窗口中输入下列代码
本文标题:Windows程序课程设计报告
链接地址:https://www.777doc.com/doc-2856458 .html