急!求用C++编写一个使用结构体数组实现添加,删除,修改,查询功能的程序!在MFC中实现!

就是要做一个电子地图,实现点的添加,删除,修改,查询功能,变量有XY坐标,点的ID,点的name。在MFC中编写,使用结构体数组,数组的容量没有固定值。调用数据通过接口函数。真心求解答,谢谢大家,急!!!

直接用MFC 的 CArray就可以了
实例伪代码:
Class MyPoint 或 struct MyPoint
{
XY坐标;
点的ID;
点的NAME:
}

定义数组
CArray<Mypoint,&Mypoint> m_arrMyPoint;
需要动态添加时
MyPoint point;
point.XY坐标 = 某值;
point.点的ID = 某值;
point.点的name = 某值;

添加:
m_arrMyPoint.Add(point);
m_arrMyPoint.InsertAt(位置,point);

删除:
m_arrMyPoint.RemoveAt(位置,删除数量);

修改:
MyPoint newPoint;
m_arrMyPoint.SetAt(位置,newPoint);
或直接赋值:
m_arrMypoint.GetAt(位置).某值 = 新值;

查询:
这个没有现成功能,自己写个条件遍历吧
for(int i=0; i<m_arrMyPoint.GetSize(); i++)
{
if(m_arrMyPoint.GetAt(i).某值 == 某条件)
{
处理代码。。。
}
}追问

你好,可以稍微详细点吗,是否可以举个真实代码的例子。稍微多一点注释。万分感谢!

追答

其实已经很详细了,CArray这样的工具类是很简单的,根据你的要求,只要掌握Add,InsertAt,SetAt,GetAt,RemoveAt 这几个函数就可以了。
那我稍微再改下:

Class MyPoint 或 struct MyPoint //定义点结构体
{
CPos m_pos ; //XY坐标;
UINT m_posID; //点的ID;
CString m_strPosName;点的NAME:
}

CArray m_arrMyPoint; //定义结构体类型数组
需要动态添加时
MyPoint point;
point.m_pos.x = 100;point.m_pos.y = 50; // 假设XY坐标为100,50
point.posID= 99; //点的ID
point.m_strPosName = "A点"; //点的name

添加:
m_arrMyPoint.Add(point); //将点结构体point加入数组末尾,
m_arrMyPoint.InsertAt(0,point); //将点结构体插入数组中0位置

删除:
m_arrMyPoint.RemoveAt(0,1); //从0位置起删除1个结构体

修改:
MyPoint newPoint; //新点结构
m_arrMyPoint.SetAt(0,newPoint); //将原位置为0的point 替换为 newpoint
或直接赋值:
m_arrMypoint.GetAt(0).m_strPosName = "B点"; //直接根据索引0修改该点名称

查询:
这个没有现成功能,自己写个条件遍历吧
for(int i=0; i<m_arrMyPoint.GetSize(); i++) //遍历整个数组
{
if(m_arrMyPoint.GetAt(i).m_strPosName == "X点") //假设查询数组中名称为X点的结构体
{
处理代码。。。 //可对该点属性进行任何处理
}
}

追问

是这样,在MFC中我们做了一个界面,把需要添加的坐标,名称等信息添加到框中点击确定就可以添加了,是不是得用指针来做啊,因为每次添加的时候框中输入的数值是随机的。用指针的话得怎么写呢?万分感谢!

追答

添加局部变量或指针都可以

AddFunction() //添加变量
{
MyPoint point;
m_arrMyPoint.Add(point); //将点结构体point加入数组末尾,
}

CArray m_arrMyPoint;//数组定义类型换成结构指针
AddFunction() //添加指针
{
MyPoint* pPoint = new MyPoint;
m_arrMyPoint.Add(pPoint); //将点结构体point指针加入数组末尾,不过用完记得释放
}

可以先写段测试代码,熟悉下CArray的增删改等功能

温馨提示:答案为网友推荐,仅供参考
相似回答