一维数组类模板的设计与实现C++/MFC工程源码

题目和所需完成功能函数如下:

建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char,int,float等多种数据类型,类中的成员函数主要包括:

(1)排序函数,能够对数组元素进行升序排列;

(2)查找函数,能够在输入待查元素后,输出其在数组中的下标;

(3)构造函数,初始化输入数组元素,这里要求数组元素的个数n是一个变量;

(4)析构函数,释放数组元素所占用的堆内存;

(5)Set函数,可以为指定的数组元素赋值;

(6)Get函数,可以读取指定数组元素的值;

(7)Print函数,可以输出数组元素的值;

(8)编写一个测试该模板类的程序。

首先附上C++源程序代码:

 

以下程序为一维数组类模板的实现:

template//定义数组类模板
class Array
{   public:
int size;//定义数组的大小
T *aptr;//定义数组指针
int i;
Array(int slots=1)//定义带参数的构造函数,初始化数组
{
size=slots;
aptr=new T[slots];//为数组申请空间
cout<<"输入"< for (int i=0;i cin>>aptr[i];
}
void Print();//输出数组函数
void Sort();//数组值升序排列函数
void Look_for(T x);//按值查找函数
void Set(T x,int i);//为指定的数组元素赋值函数
void Get(int i);//读取指定的数组元素
~Array()
{
delete[]aptr;
}};
template

void Array::Print()

{

cout<<"数组为:"<

for(i=0;i

cout<

cout<

template

//升序排列函数,采用了冒泡排序法

void Array::Sort()

{

int i,j,temp;

for (j=0;j

for (i=0;i

if(aptr[i]>aptr[i+1])

{ temp=aptr[i];

 aptr[i]=aptr[i+1];

 aptr[i+1]=temp;}

cout<<"升序排列后的数组:"<

for(i=0;i

cout<

cout<

template

//按值查找函数

void Array::Look_for(T x)

{

  int i=0;

//改元素存在时输出该元素的位置

  while((i

  i++;

  if(i

  cout<<"要查找的数所在的位置为:"<

  else  //改元素不存在时输出“不存在这个数!”}

template

//为指定的元素赋值函数

void Array::Set(T x,int i)

{

if(i

{aptr[i-1]=x;

 cout<<"把第"<

else //该位置不存在时输出“不存在此位置!”

{cout<<"不存在此位置!"<

 cout<<"此时";}}

template

//读取指定位置的数组元素函数

void Array::Get(int c)

{

if(i

{

cout<<"数组中第"<

    cout<

else //此位置不存在时,输出“此位置不存在!”

cout<<"此位置不存在!"<

以下程序为一维数组类模板设计的主函数:

int main()

{

int n;

cout<<"请输入您想输入的数据个数"<

cin>>n;

Arrayai(n);

//定义一个整型的数组对象,含7个元素,同时调用构造函数

    int x,a,b,c;

ai.Print();//调用类中的输出成员函数

ai.Sort();//调用类中的排序成员函数

cout<<"输入要查找的数:"<

cin>>x;

ai.Look_for(x); //调用类中的按值查找成员函数函数

cout<<"输入要赋值的位置及值:"<

cin>>a>>b;

ai.Set(b,a); //调用类中的给指定的元素赋值成员函数

ai.Print();

cout<<"输入要取的值的位置:"<

cin>>c;

ai.Get(c);//调用类中的输出指定位置的成员函数

ai.Print();

return 0;}

 

MFC工程部分程序如下:

 

#include "stdafx.h"

#include "MFC__zjr.h"

#include "MFC__zjrDlg.h"

#include

using namespace std;

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

该工程数据显示所需控件程序如下:

void CMFC__zjrDlg::OnChangeEdit1()

{

UpdateData();

cin>>m_ys1;

UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit2()

{  

UpdateData();

cin>>m_ys2;

UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit3()

{

    UpdateData();

 cin>>m_ys3;

 UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit4()

{

    UpdateData();

 cin>>m_ys4;

 UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit5()

{

    UpdateData();

 cin>>m_ys5;

 UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit6()

{

    UpdateData();

 cin>>m_ys6;

 UpdateData(false);}

oid CMFC__zjrDlg::OnButton1()

{

UpdateData();

int aptr[6]={m_ys1,m_ys2,m_ys3,m_ys4,m_ys5,m_ys6};

    m_ys1=aptr[0];

       m_ys2=aptr[1];

       m_ys3=aptr[2];

       m_ys4=aptr[3];

       m_ys5=aptr[4];

 m_ys6=aptr[5];

UpdateData(false);}

该工程数据排序控件所需程序如下:

void CMFC__zjrDlg::OnButton2()

{

UpdateData();

 int aptr[6]={m_ys1,m_ys2,m_ys3,m_ys4,m_ys5,m_ys6};

    int i,j,temp;

 for (j=0;j<6-1;j++)

{  for (i=0;i<6-1-j;i++)

 {  if(aptr[i]>aptr[i+1])

{

        temp=aptr[i];

  aptr[i]=aptr[i+1];

      aptr[i+1]=temp;

}}}

  m_px1=aptr[0];

        m_px2=aptr[1];

        m_px3=aptr[2];

        m_px4=aptr[3];

        m_px5=aptr[4];

     m_px6=aptr[5];

     UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit7()

{}

void CMFC__zjrDlg::OnChangeEdit8()

{}

void CMFC__zjrDlg::OnChangeEdit9()

{}

void CMFC__zjrDlg::OnChangeEdit10()

{}

void CMFC__zjrDlg::OnChangeEdit11()

{}

void CMFC__zjrDlg::OnChangeEdit12()

{}

该工程数据查找所需控件程序如下:

void CMFC__zjrDlg::OnButton3()

{

UpdateData();

int aptr[6]={m_ys1,m_ys2,m_ys3,m_ys4,m_ys5,m_ys6};

if(m_chazhao1==1)

m_chazhao2=aptr[0];

    if(m_chazhao1==2)

m_chazhao2=aptr[1];

    if(m_chazhao1==3)

m_chazhao2=aptr[2];

    if(m_chazhao1==4)

m_chazhao2=aptr[3];

    if(m_chazhao1==5)

m_chazhao2=aptr[4];

    if(m_chazhao1==6)

m_chazhao2=aptr[5];

UpdateData(false);

void CMFC__zjrDlg::OnChangeEdit13()

{  UpdateData();

cin>>m_chazhao1;

   UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit14()

{

   UpdateData();

 UpdateData(false);}

该工程数据赋值所需控件程序如下:

void CMFC__zjrDlg::OnButton4()

{  UpdateData();

int aptr[6]={m_ys1,m_ys2,m_ys3,m_ys4,m_ys5,m_ys6};

if(m_fuzhi1==1)

{ aptr[0]=m_fuzhi2;

m_fuzhi3=aptr[0];

m_ys1=m_fuzhi2; }

if(m_fuzhi1==2)

{ aptr[1]=m_fuzhi2;

m_fuzhi3=aptr[1];

m_ys2=m_fuzhi2;}

if(m_fuzhi1==3)

{ aptr[2]=m_fuzhi2;

m_fuzhi3=aptr[2];

m_ys3=m_fuzhi2;}

if(m_fuzhi1==4)

{ aptr[3]=m_fuzhi2;

m_fuzhi3=aptr[3];

m_ys4=m_fuzhi2;}

if(m_fuzhi1==5)

{ aptr[4]=m_fuzhi2;

m_fuzhi3=aptr[4];

m_ys5=m_fuzhi2;}

if(m_fuzhi1==6)

{ aptr[5]=m_fuzhi2;

m_fuzhi3=aptr[5];

m_ys6=m_fuzhi2;}

UpdateData(false)}

void CMFC__zjrDlg::OnChangeEdit15()

{

UpdateData();

cin>>m_fuzhi1;

UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit16()

{

UpdateData();

cin>>m_fuzhi2;

UpdateData(false);}

void CMFC__zjrDlg::OnChangeEdit17()

{

UpdateData();

UpdateData(false);}

mfc工程的页面设计

一维数组类模板的设计与实现C++/MFC工程源码_第1张图片

 

你可能感兴趣的:(c/c++编程语言)