数据结构课程设计实习报告

本次课程设计基于MFC,实现了线性表、一元多项式相加、栈的应用和排序等功能。通过对话框和消息响应展示了数据结构的直观应用,加深了对《数据结构》、MFC和软件本质的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 复习MFC的相关操作。

  2. 巩固《数据结构》的基础知识并实现:List, Stack. Sort

  3. 熟练调用系统类库,加深对软件本质的理解。

  4. 理解多态,宏的意义,并运用。

二.设计任务

根据《数据结构》课程设计的结构体系,基于MFCSDI应用程序。利用树状图实现各级菜单,并实现对应的消息响应。线性表,一元多项式相加,栈的应用,排序都基于对话框。

三.程序结构

1.程序结构图:


2.类图:


3.类关系图


4.FileViewTreeView

      FileView显示数据,TreeView处理消息响应;有代表性的代码如下:

voidCFileView::FillFileView()

{

   HTREEITEM hRoot = m_wndFileView.InsertItem(_T("数据结构"),0, 0);

   m_wndFileView.SetItemState(hRoot,TVIS_BOLD,TVIS_BOLD);

 

   HTREEITEM hSrc = m_wndFileView.InsertItem(_T("绪论"),0, 0, hRoot);

 

   m_wndFileView.InsertItem(_T("什么是数据结构"),2,2, hSrc);

   m_wndFileView.InsertItem(_T("基本概念和术语"),2, 2, hSrc);

   m_wndFileView.InsertItem(_T("抽象数据类型的表示和实现"),2,2 ,hSrc);

   m_wndFileView.InsertItem(_T("算法和算法分析"),2, 2, hSrc);

 

   m_wndFileView.Expand(hRoot,TVE_EXPAND);

   m_wndFileView.Expand(hSrc,TVE_EXPAND);

……

}

voidCViewTree::OnNMClick(NMHDR *pNMHDR,LRESULT *pResult)

   {

   DWORD dwpos = GetMessagePos();

   TVHITTESTINFO ht = { 0 };

   ht.pt.x =GET_X_LPARAM(dwpos);

   ht.pt.y =GET_Y_LPARAM(dwpos);

   ::MapWindowPoints(HWND_DESKTOP,pNMHDR->hwndFrom,&ht.pt, 1);

   TreeView_HitTest(pNMHDR->hwndFrom, &ht);

   CString sel =this->GetItemText(ht.hItem);

#defineJUDGE(x)if(sel==x)

   JUDGE(_T("图的定义和术语"))

       AfxMessageBox(_T("图:是一种较线性表和树更为复杂的数据结构。结点直接的关系可以是任意的,图中任意两个数据元素之间都可能相关。\n顶点:数据元素。\n弧:两个顶点之间的关系。\n弧头:弧的终端点。\n弧尾:弧的初始点。\n有向图:有指向的图。\n无向图:没有指向的图。\n连通图:任意两个顶点都连通。"));

   JUDGE(_T("线性表的顺序表示和实现"))

       {

       CListDLg*m_listDlg =newCListDLg();

       m_listDlg->DoModal();

       }

   JUDGE(_T("线性表的链式表示和实现"))

       {

       CListDLg*m_SqListDlg =newCListDLg();

       m_SqListDlg->DoModal();

       }

   JUDGE(_T("一元多项式的表示及相加"))

       {

       CPolynomialDlg*m_pPolynomialDlg =newCPolynomialDlg();

       m_pPolynomialDlg->DoModal();

 

       }

   JUDGE(_T("栈的应用举例"))

       {

       CUSESTACK*m_stackDlg =newCUSESTACK();

       m_stackDlg->DoModal();

JUDGE(_T("插入排序"))

       {

       CSortDlg*sortDlg =newCSortDlg();

       sortDlg->DoModal();

       }

……

}

5.ListDlg

voidCListDLg::OnBnClickedButtonCreate()

   {

   UpdateData(TRUE);

   GetDlgItemTextW(IDC_EDIT_ITEMOFCREATE, m_itemOfCreate);

   for (int i = 0; i < m_itemOfCreate.GetLength(); i=i+2)

       {

       CStringstr(m_itemOfCreate.GetAt(i));

       List.push_back(_wtoi(str));

       }

 

   //length

   if (m_numOfCreate != List.size())

       {

       AfxMessageBox(_T("Error!"));

       }

   else

       ListSize = List.size();

 

   for (

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值