Windows程序课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
window程序课程设计
简单的学生信息
管理应用程序
学生姓名:**
学生学号: *********
班级: 031140--3
二〇一三年十二月
简单的学生信息管理应用程序
一、设计目的、内容及要求
1.1设计目的
1. 了解Windows编程的基础知识,掌握MFC应用程序的基本知识;
2. 基本掌握面向对象程序设计的基本思路和方法;
3. 掌握用VC++开发应用程序的的一般步骤和方法;
1.2设计内容
利用所学的基本知识, 设计一个简单的学生信息管理应用程序,具有以下功能:①实现学生信息的存储,可以用文件来实现。②编程实现学生信息的添加、删除、修改、浏览和查询等功能。
1.3设计要求
1. 用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当
的注释;
2. 采用单文档多视图方式,左边为树视图,右边为列表视图,左边一级节点
为中原工学院,二级节点为计算机学院和软件学院,三级节点为计算机学院的三个专业。要求可以动态增加节点。楼便为列表视图,包含学生的学号、性别、姓名各科成绩等。右边也可以实现动态增加
3. 当选中节点时,显示对应的学生信息。如当选中”中原工学院”时选中所用的
学生信息,选中“计算机学院”时,显示所有计算机学院学生信息
4. 采用序列化方式保存和读取学生信息
二、主要的数据结构
1.数组集合类:CObArray m_stuObArray;
2.树:
3.序列化类数据
三、基本思路
基于树视图类建立单文档应用程序,插入列表视图类,切分窗口,左边为树视图,右边为列表视图。插入学生信息对话框,创建序列化类,并利用数组集合类储存学生信息。在主菜单中添加添加、修改、删除、查询菜单,并在文
档类中一一添加其映射函数。在列表视图类写入输出函数,在树视图类中添加click映射函数,调用列表试图中的输出函数,是两个视图之间建立关系。
四、步骤及主要代码
4.1设计并创建切分窗口完善视图
1.用MFC AppWizard (exe)创建一个单文档应用程序Student。在第六步中将视图类的基类选择为CtreeView。
2.用MFC ClassWizard添加一个新的ClistView的派生类ClistView。打开CmainFrame.h文件,为CmainFrame类添加下列变量成员:
public:
CSplitterWnd m_wndSplitter;
3.用MFC ClassWizard为CMainFrame类添加OnCreatClient函数,并添加下列代码:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, 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);
return TRUE;
}
4.在MainFrm.cpp的前面添加下列语句:
#include "MainFrm.h"
#include "StudentView.h"
#include "listView.h"
在StudentView.cpp的前面添加下列下列语句:
#include "StudentDoc.h"
#include "StudentView.h"
#include "listView.h"
在StudentDoc.cpp的前面添加:
#include "StudentDoc.h"
#include "listView.h"
#include "StudentView.h"
打开StudentView.h文件,在class CStudentView : public CtreeView语句前面添加:class CStudentDoc;
class CStudentView : public CTreeView
5.为CstudentView添加void类型函数creatTree()函数,并添加下列代码
void CStudentView::creatTree()
{
CTreeCtrl& m_TreeCtrl = GetTreeCtrl();
m_TreeCtrl.DeleteAllItems();
HTREEITEM hRoot,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);
BOOL flag=TRUE;
CStudentDoc *doc=GetDocument();
int nIndex=doc->m_stuObArray.GetSize();
for(int n=0;n { CStudentInfo *stu=(CStudentInfo*)doc->m_stuObArray.GetAt(n); CString str1=stu->strSpecial; CString str2=stu->strAcademy; if(!m_TreeCtrl.ItemHasChildren(hRoot))//判断根节点是否有子节点 { hParent=m_TreeCtrl.InsertItem(str2,hRoot); m_TreeCtrl.InsertItem(str1,0,1,hParent);