⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rarray.cpp

📁 《基于symbian os的手机开发与应用》
💻 CPP
字号:
// RArray.cpp
//
// Author: hewei
// 
// Copyright (c) 2005 CCNIIT.  All rights reserved.
//
// version: 1.0
// Date: 2005-10-25
//
// This Example demostrate how to use dynamic array(RArray).

#include "CommonFramework.h"
//定义学生类
class TStudent{
public:
	TStudent(const TDes& aSName,TUint aSNo,TInt aScore);

 public:
   TUint iId; //学号
   TBuf<10> iName; //姓名
   TInt iScore; //
};

TStudent::TStudent(const TDes& aSName,TUint aSNo,TInt aScore)
{
	
     iId=aSNo;
	 iScore=aScore;
     iName=aSName;
}


TInt CompareStudentId(const TStudent& stu1,const TStudent& stu2)
{
	if(stu1.iId>stu2.iId)
		return 1;
	else if(stu1.iId==stu2.iId)
		return 0;
	else
		return -1;
}
TInt CompareStudentName(const TStudent& stu1,const TStudent& stu2)
{
	return stu1.iName.CompareF(stu2.iName);
}
TInt CompareStudentScore(const TStudent& stu1,const TStudent& stu2)
{
	if(stu1.iScore>stu2.iScore)
		return 1;
	else if(stu1.iScore==stu2.iScore)
		return 0;
	else
		return -1;
}
//
TBool StudentHaveSameName(const TStudent& stu1,const TStudent& stu2)
{
	if(stu1.iName.CompareF(stu2.iName)==0)
		return ETrue;
	else
		return EFalse;
}

void ManageStu()
{
  RArray<TStudent> StuArray;
  CleanupClosePushL(StuArray);
  
  _LIT(KSTUDENT1,"zhangbing");
  _LIT(KSTUDENT2,"hewei");
  _LIT(KRETURN,"\n");

  TBuf<10> StuName1(KSTUDENT1);
  TBuf<10> StuName2(KSTUDENT2);

  TStudent stu1(StuName1,1,90);
  TStudent stu2(StuName2,2,80);
  //添加
  StuArray.Append(stu1);
  StuArray.Append(stu2);
  

  _LIT(KPrompt1,"students in array are:\n");
  _LIT(KFORMAT2,"id is %d");
  _LIT(KFORMAT3,"score is %d");
  console->Printf(KPrompt1);
  for(TInt i=0;i<StuArray.Count();i++)
  {
	  console->Printf(StuArray[i].iName);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT2,StuArray[i].iId);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT3,StuArray[i].iScore);
	  console->Printf(KRETURN);
  }
  console->Getch();
 
 //修改  
  _LIT(KSTUDENT3,"LiYong");
  StuArray[0].iName=KSTUDENT3;

  _LIT(KPrompt2,"array after modifies are:\n");
   console->Printf(KPrompt2);

  for( i=0;i<StuArray.Count();i++)
  {
	  console->Printf(StuArray[i].iName);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT2,StuArray[i].iId);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT3,StuArray[i].iScore);
	  console->Printf(KRETURN);
  }
  console->Getch();
//查找和排序
  
  TInt findPos;
  TStudent S(StuName1,01,90);
  findPos=StuArray.Find(S);
  console->Getch();
  
  if(findPos!=KErrNotFound)
	  console->Printf(StuArray[findPos].iName);
  console->Printf(KRETURN);
  console->Getch();

  TStudent S1(StuName2,0,0);
  TIdentityRelation<TStudent> relation(StudentHaveSameName);
  findPos=StuArray.Find(S1,relation);
   
  if(findPos!=KErrNotFound)
	  console->Printf(StuArray[findPos].iName);
  console->Printf(KRETURN);
  console->Getch();

 //Sort
  TLinearOrder<TStudent> order1(CompareStudentId);
  StuArray.Sort(order1);
  _LIT(KPrompt3,"sort by Id:\n");
  console->Printf(KPrompt3);
 
   for( i=0;i<StuArray.Count();i++)
   {
	  console->Printf(StuArray[i].iName);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT2,StuArray[i].iId);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT3,StuArray[i].iScore);
	  console->Printf(KRETURN);
   }
  TLinearOrder<TStudent> order2(CompareStudentName);
  StuArray.Sort(order2);
  _LIT(KPrompt4,"sort by name:\n");
	  console->Printf(KPrompt4);
   for( i=0;i<StuArray.Count();i++)
   {
	  console->Printf(StuArray[i].iName);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT2,StuArray[i].iId);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT3,StuArray[i].iScore);
	  console->Printf(KRETURN);
   }
   
   _LIT(KPrompt5,"sort by score:\n");
	  console->Printf(KPrompt5);
  TLinearOrder<TStudent> order3(CompareStudentScore);
   StuArray.Sort(order3);
   for( i=0;i<StuArray.Count();i++)
   {
	  console->Printf(StuArray[i].iName);
      console->Printf(KRETURN);
	  console->Printf(KFORMAT2,StuArray[i].iId);
     console->Printf(KRETURN);
	  console->Printf(KFORMAT3,StuArray[i].iScore);
	  console->Printf(KRETURN);
   }
   StuArray.Reset();
   CleanupStack::PopAndDestroy();
  }

// do the example
LOCAL_C void doExampleL()
    {

    ManageStu();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -