数据结构课程设计报告 手机个人通讯录信息管理系统正文终稿 联系客服

发布时间 : 星期六 文章数据结构课程设计报告 手机个人通讯录信息管理系统正文终稿更新完毕开始阅读

}

return 0; }

int PhoneBook::SearchContactPhonenumber(char * key, int &g, int &c) {

for (g = 1; g <= numberofgroup; g++)

if ((c = group[g].SearchContactPhonenumber(key)) != 0) {

return 1; break; }

return 0; }

PhoneBook::PhoneBook() {

(*this).numberofgroup = 0;

ifstream is(\

is.read(reinterpret_cast(this), sizeof(PhoneBook)); is.close(); }

PhoneBook::~PhoneBook() {

ofstream file(\

file.write(reinterpret_cast(this), sizeof(PhoneBook)); file.close(); }

4.3.3王帅的设计实现

我设计的是成员的的创建,添加,删除,组的创建,添加,删除,前序,后序,先序遍历。树的销毁。

Contact::Contact(){ strcpy_s(remark, \= { { 2015, 1, 1, 15, 15 }, { 2, 30 } }; } Contact::~Contact(){}

int Contact::Create(char *n, char *p, char *c, char *r) {

strcpy_s(name, n);

strcpy_s(phonenumber,p); strcpy_s(city, c);

strcpy_s(remark, r); return 1; }

Group::Group(){ numberofmenber = 0; } Group::~Group(){}

int Group::Create(char *groupname) {

strcpy_s(name, groupname); numberofmenber = 0; return 1; }

int Group::AddContact(char *n, char *p, char *c, char *r) {

if (numberofmenber < MAX_NUMBEROFMENBER-1) {

contact[numberofmenber + 1].Create(n, p, c, r); numberofmenber++; return 1; } else

return 0; }

int Group::DeleteContact(int c) {

Contact *p = &contact[c];

for (; c <= numberofmenber; c++) {

*p = *(p + 1); p++; }

numberofmenber--; return 1; }

int PhoneBook::AddGroup(char *groupname) {

if (numberofgroup < MAX_NUMBEROFGROUP-1) {

group[numberofgroup + 1].Create(groupname); numberofgroup++; return 1; }

else

return 0; }

int PhoneBook::DeleteGroup(char *key) {

int i;

if ((i = SearchGroup(key)) != 0) {

Group *p = &group[i];

for (; i <= numberofgroup; i++) {

*p = *(p + 1); p++; }

numberofgroup--; return 1; } else

return 0; }

int PhoneBook::DeleteContact(char *key) {

int g, c;

if (SearchContactName(key, g, c)) return group[g].DeleteContact(c); else

return 0; }

5 测试与调试

5.1 个人测试(按组员分工)

5.1.1 黄红清测试

(1)测试了图形界面的执行情况,发现部分编辑框未输入内容时按钮仍然可以将空内容存入顺序表中,这是无意义的,于是对每个编辑框输入内容进行了判断,确保有输入时才会执行按钮功能。

(2)测试了Tree Control控件与详细信息展示区鼠标单击时一一对应功能,发现当鼠标点在某些联系人时,右边无法显示出相应信息,经调试,发现是由于联系人姓名为汉字或重复时,未对其进行排序,因此折半查找无法找到相应的联系人,于是进行了修改,每对联系人列表进行更改操作时,重新对其排序,以保证折半查找函数可以运行出正确的结果。

(3)在联系人列表下方添加了可以动态显示的联系人数目和分组数的统计。

(4)当鼠标点击组名时,发现右侧仍然显示上一个联系人的信息,于是对此进行了修改,使显示组名时,右边信息中可以显示组名,并且可以在备注栏中显示“该组共2人”的统计信息。

(5)利用删除联系人和添加联系人的基本功能,实现了将某联系人移动到另一分组的功能。

5.1.2邢伟测试

(1)测试了查找功能时,用的折半查找,但是局限于查找的关键字只有一个,如果想查找多条联系人信息,只能顺序查找。

(2)测试了排序功能,在phonebook里的查找,函数需要带入一个group变量,所以定义了个全局变量。

5.1.3王帅测试

(1)顺序表的设计结构可以方便查找到需要删除的元素,进行删除时曾指针错误,进行调试,发现错误,并进行改正。

(2)测试时曾因组数和成员数在定义时过少,导致添加成员到上限时失败,找到后并进行改正。