求用VC 做一个通信录程序所要的思路! 本人是新手 正在练手 需要实现的功能 是添加 修改 删除 保存 就光连TXT就可以 求高手提供一个思路和流程~ 谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去下一个读写TXT文件的例子。比较容易入手 就是准备写一个TXT文件的数据库的连接已经学会了 http://www.vckbase.com/code/filesys/file/note.zip 上codeproject上搜 好多例子 下一个慢慢研究 具有上传、下载的超强功能的通讯录:(两个类)// CToDo.h#ifndef __CTODO_H__#define __CTODO_H__#include <e32base.h>#include <e32std.h>#include <e32cons.h> #include <s32file.h>#include <f32file.h>class CToDo : public CBase{public: enum TPriority { EHigh, EMedium, ELow }; enum TAlarm { ENo, EOff };public: static CToDo* NewLC(); static CToDo* NewL(); static CToDo* NewLC(const TDesC& aSubject, const TDesC& aComments, const TDesC& aLocation, const TDateTime& aDate, const TDateTime& aTime, const TDesC& aPerson, TUint16 aAlarm, TUint16 aPriority ); static CToDo* NewL(const TDesC& aSubject, const TDesC& aComments, const TDesC& aLocation, const TDateTime& aDate, const TDateTime& aTime, const TDesC& aPerson, TUint16 aAlarm, TUint16 aPriority );public: const TDesC& Subject() const { return *iSubject; } TPriority& Priority() { return iPriority; } TAlarm& Alarm() { return iAlarm; } TDateTime& Date1(); TDateTime& Date2(); TDesC& Person(); HBufC* Comments() { return iComments; } void Setsubject(const TDesC& aSubject); void SetPriority(enum TPriority aPriority); void SetPerson(const TDesC& aPerson); void SetDate1(TInt aYear,TMonth aMonth,TInt aDay,TInt aHour,TInt aMinute, TInt aSecond,TInt aMicroSecond); void SetCommentsL(const TDesC& aComments); static TBool Match(const CToDo& aTodo1, const CToDo& aToDo2); static TInt ComparePrioritiesDec(const CToDo& aTodo1, const CToDo& aToDo2); static TInt ComparePrioritiesAsc(const CToDo& aTodo1, const CToDo& aToDo2);public: void ExternalizeL( RWriteStream& aStream ) const; void InternalizeL( RReadStream& aStream );protected: CToDo(); CToDo(const TDesC& aSubject, const TDesC& aLocation, const TDesC& aComments, const TDateTime& aDate, const TDateTime& aTime, const TDesC& aPerson, TUint16 aAlarm, TUint16 aPriority ); void ConstructL();private: HBufC* iSubject; HBufC* iLocation; HBufC* iComments; TBufC<20> iPerson; TDateTime iDate1; TDateTime iDate2; TAlarm iAlarm; TPriority iPriority;};#endif//CToDoList.h#ifndef __CTODOLIST_H__#define __CTODOLIST_H__#include "CTodo.h"#include <e32base.h>#include <e32std.h>#include <e32cons.h> class CToDoList : public CBase{public: static CToDoList* NewLC(); static CToDoList* NewL();public: TInt Count() const; void AddToDoL( CToDo* aToDo ); void InsertL(TInt aIndex, CToDo* aToDo ); void RemoveToDo( TInt aIndex ); TInt Find(const CToDo* aToDo ) const; CToDo* At( TInt aIndex ); void Sort(TBool aDec = EFalse); void Reset(); CToDo* operator[](const TInt aIndex); const CToDo* operator[](const TInt aIndex) const;public: void ExternalizeL( RWriteStream& aStream ) const; void InternalizeL( RReadStream& aStream );protected: CToDoList(); void ConstructL(); ~CToDoList();private: RPointerArray<CToDo> iArray; // RPointerArray<CToDo> };#endif 这个思路还不简单?将你的通讯录内容按一定的格式写入TXT文件。读的时候按一定的格式读出。其中单条记录的不同字段可以以特殊符号隔开。不同记录可以以换行区分。保存的的时候重写一下文件就可以了。这样做适合记录不多的情况。要是几万几 十万条记录就慢了。另外你也可以考虑用BCD码保存。这样少50%的存储空间。 opencv中矩阵的拷贝 vc 数据库显示控件 连接sql server的超时代码为何无效?如何才能设置连接超时呢? HBITMAP为什么泄漏内存,高手分析分析!! 如何让自己的DLL只被载入一次? 关于SplashWnd和sndPlaySound的问题请教~~! 如何用Schema验证XML文档 晕倒呀,GetWindowText怎么不行了 那位知道哪里能得到像CMSFlexGrid等ActiveX控件使用说明? MFC 重属名问题 忙乎两天了 为什么截获Q的WM_SOCKET_NOTIFY消息 以前顺利截获的 给CStatic添加滚动条,为什么拖不动?
// CToDo.h
#ifndef __CTODO_H__
#define __CTODO_H__
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h>
#include <s32file.h>
#include <f32file.h>
class CToDo : public CBase
{
public:
enum TPriority {
EHigh,
EMedium,
ELow
};
enum TAlarm {
ENo,
EOff
};
public:
static CToDo* NewLC();
static CToDo* NewL();
static CToDo* NewLC(const TDesC& aSubject,
const TDesC& aComments,
const TDesC& aLocation,
const TDateTime& aDate,
const TDateTime& aTime,
const TDesC& aPerson,
TUint16 aAlarm,
TUint16 aPriority );
static CToDo* NewL(const TDesC& aSubject,
const TDesC& aComments,
const TDesC& aLocation,
const TDateTime& aDate,
const TDateTime& aTime,
const TDesC& aPerson,
TUint16 aAlarm,
TUint16 aPriority );public:
const TDesC& Subject() const { return *iSubject; }
TPriority& Priority() { return iPriority; }
TAlarm& Alarm() { return iAlarm; }
TDateTime& Date1();
TDateTime& Date2();
TDesC& Person();
HBufC* Comments() { return iComments; }
void Setsubject(const TDesC& aSubject);
void SetPriority(enum TPriority aPriority);
void SetPerson(const TDesC& aPerson);
void SetDate1(TInt aYear,TMonth aMonth,TInt aDay,TInt aHour,TInt aMinute, TInt aSecond,TInt aMicroSecond);
void SetCommentsL(const TDesC& aComments); static TBool Match(const CToDo& aTodo1, const CToDo& aToDo2);
static TInt ComparePrioritiesDec(const CToDo& aTodo1, const CToDo& aToDo2);
static TInt ComparePrioritiesAsc(const CToDo& aTodo1, const CToDo& aToDo2);public:
void ExternalizeL( RWriteStream& aStream ) const;
void InternalizeL( RReadStream& aStream );protected:
CToDo();
CToDo(const TDesC& aSubject,
const TDesC& aLocation,
const TDesC& aComments,
const TDateTime& aDate,
const TDateTime& aTime,
const TDesC& aPerson,
TUint16 aAlarm,
TUint16 aPriority );
void ConstructL();private:
HBufC* iSubject;
HBufC* iLocation;
HBufC* iComments;
TBufC<20> iPerson; TDateTime iDate1;
TDateTime iDate2; TAlarm iAlarm;
TPriority iPriority;
};#endif
//CToDoList.h#ifndef __CTODOLIST_H__
#define __CTODOLIST_H__
#include "CTodo.h"
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h> class CToDoList : public CBase
{
public:
static CToDoList* NewLC();
static CToDoList* NewL();public:
TInt Count() const;
void AddToDoL( CToDo* aToDo );
void InsertL(TInt aIndex, CToDo* aToDo );
void RemoveToDo( TInt aIndex );
TInt Find(const CToDo* aToDo ) const;
CToDo* At( TInt aIndex );
void Sort(TBool aDec = EFalse);
void Reset(); CToDo* operator[](const TInt aIndex);
const CToDo* operator[](const TInt aIndex) const;public:
void ExternalizeL( RWriteStream& aStream ) const;
void InternalizeL( RReadStream& aStream );protected:
CToDoList();
void ConstructL();
~CToDoList();private:
RPointerArray<CToDo> iArray; // RPointerArray<CToDo>
};#endif
其中单条记录的不同字段可以以特殊符号隔开。不同记录可以以换行区分。保存的的时候重写一下文件就可以了。这样做适合记录不多的情况。要是几万几 十万条记录就慢了。
另外你也可以考虑用BCD码保存。这样少50%的存储空间。