将Toyota三级菜单处理成我们需要的格式并用在产品上

菜单的结构是: 
OptionID OptionFirst      OptionSec      OptionThr ModelName VehicleID 
1        ES240                                               1690 
1        CAMRY,-0605      W/ VSC                             505 
1        CAMRY,-0605      W/0 VSC                            575 
1        CAMRY,0605-0801  W/ Memory Seat W/ VSC              581 
1        CAMRY,0605-0801  W/ Memory Seat W/O VSC             616
2        CAMRY,0801-      W/ Memory Seat W/ VSC              599
 .........
要求处理成的结构是:
OptionID Index    Sequence StringID VehicleID NextIndex
01 00    01 00    01 00    CA 7A    9A 06     00 00
01 00    01 00    02 00    CA 77    00 00     02 00
01 00    01 00    03 00    CA 78    00 00     03 00
01 00    02 00    01 00    CA 60    F9 01     00 00
01 00    02 00    02 00    CA 61    3F 02     00 00
01 00    03 00    01 00    CA 80    00 00     04 00
01 00    04 00    01 00    CA 60    45 02     00 00
01 00    04 00    02 00    CA 61    68 02     00 00
我把要处理的数据放到ACCESS中, 字符串对应的StringID放在IDString中,
IDString表的结构是:
StringID String
CA 60    W/ VSC
CA 61    W/o VSC
CA 7A    ES240
CA 77    CAMRY,-0605
CA 78    CAMRY,0605-0801
CA 80    W/ Memory Seat 

程序中用到的ACCESS表的操作类CADOConnection和树类CTree在其他文章中
CTree myTree;
CADOConnection adoOption;
处理完的数据放在Excel表中


		myTree.root->data = strOptionID;
		while(!adoOption.adoEOF())
		{
			strOptionFirst = adoOption.GetItemText(35);
			strOptionSec = adoOption.GetItemText(36);
			strOptionThr = adoOption.GetItemText(37);
			strVehicleID = adoOption.GetItemText(39);

			strSQL = "SELECT * FROM IDString WHERE IDString.String = '";
			strSQL = strSQL + strOptionFirst + "'";
	
			adoIDString.Open(strSQL);
			strOptionFirst = adoIDString.GetItemText(0);
			myTree.CreateOptionTree(strOptionFirst);
			
			strSQL = "SELECT * FROM IDString WHERE IDString.String = '";
			strSQL = strSQL + strOptionSec + "'";
			if (strOptionSec != "")
			{
				adoIDString.Open(strSQL);
				strOptionSec = adoIDString.GetItemText(0);
				myTree.CreateOptionTree(strOptionSec);
			}
			
			strSQL = "SELECT * FROM IDString WHERE IDString.String = '";
			strSQL = strSQL + strOptionThr + "'";
			if (strOptionThr != "")
			{
				adoIDString.Open(strSQL);
				strOptionThr = adoIDString.GetItemText(0);
				myTree.CreateOptionTree(strOptionThr);
			}

			myTree.tag--;
			strVehicleID = DecToMemoryHexCString(StrToDec(strVehicleID));
			myTree.CreateOptionTree(strVehicleID);
			myTree.curr->tagSelf = 0;
			myTree.tag--;
			
			myTree.curr = myTree.root;
			adoOption.MoveNext();
		}
		adoOption.ExitConnect();
		adoIDString.ExitConnect();

		myExcel.OpenSheet("2A");
		TreeNode *p = myTree.root->firstChild;
		int childNum = 0, seq = 1;

		while (p != NULL)
		{
			myExcel.SetItemText(optionLine, 1, strOptionID);
			myExcel.SetItemText(optionLine, 2, DecToMemoryHexCString(p->tagParent));
			myExcel.SetItemText(optionLine, 3, DecToMemoryHexCString(seq++));
			myExcel.SetItemText(optionLine, 4, p->data);
			if (p->firstChild->tagSelf == 0)
			{
				myExcel.SetItemText(optionLine, 5, p->firstChild->data);
				myExcel.SetItemText(optionLine++, 6, "00 00");
			}
			else
			{
				myExcel.SetItemText(optionLine, 5, "00 00");
				myExcel.SetItemText(optionLine++, 6, DecToMemoryHexCString(p->tagSelf));
			}
			
			p = p->nextSibling;
		}

		p = myTree.root->firstChild;
		seq = 1;
		while(p != NULL)
		{
			if (p->firstChild->tagSelf != 0)
			{
				TreeNode *q = p->firstChild;
				while(q != NULL)
				{
					myExcel.SetItemText(optionLine, 1, strOptionID);
					myExcel.SetItemText(optionLine, 2, DecToMemoryHexCString(q->tagParent));
					myExcel.SetItemText(optionLine, 3, DecToMemoryHexCString(seq++));
					myExcel.SetItemText(optionLine, 4, q->data);
					if (q->firstChild->tagSelf == 0)
					{
						myExcel.SetItemText(optionLine, 5, q->firstChild->data);
						myExcel.SetItemText(optionLine++, 6, "00 00");
					}
					else
					{
						myExcel.SetItemText(optionLine, 5, "00 00");
						myExcel.SetItemText(optionLine++, 6, DecToMemoryHexCString(q->tagSelf));
					}
					q = q->nextSibling;
				}

				TreeNode *ptr = p->firstChild;
				seq = 1;
				while(ptr != NULL)
				{
					if (ptr->firstChild->tagSelf != 0)
					{
						TreeNode *q = ptr->firstChild;
						while(q != NULL)
						{
							myExcel.SetItemText(optionLine, 1, strOptionID);
							myExcel.SetItemText(optionLine, 2, DecToMemoryHexCString(q->tagParent));
							myExcel.SetItemText(optionLine, 3, DecToMemoryHexCString(seq++));
							myExcel.SetItemText(optionLine, 4, q->data);
							if (q->firstChild->tagSelf == 0)
							{
								myExcel.SetItemText(optionLine, 5, q->firstChild->data);
								myExcel.SetItemText(optionLine++, 6, "00 00");
							}
							else
							{
								myExcel.SetItemText(optionLine, 5, "00 00");
								myExcel.SetItemText(optionLine++, 6, DecToMemoryHexCString(q->tagSelf));
							}
							q = q->nextSibling;
						}
					}

					ptr = ptr->nextSibling;
				}
			}

			p = p->nextSibling;
		}
		adoMain.MoveNext();
	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值