数据结构通讯录管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、数据结构课程设计目标

《数据结构》是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。《数据结构》课程的目标是使学生学会分析研究计算机加工对象的特性,选择合适的数据结构和存储表示,以及编制相应的实现算法,培养和提高学生程序设计的能力。《数据结构》课程也是一门实践性较强的课程,设置实践环节是十分重要的。本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。

二、问题描述

编写一个简单的通讯录管理程序。通讯录记录有姓名、地址、电话号码、电子邮箱等4项。

三、需求分析

1、要求:

1)添加:增加一个人的记录到通讯录中;

2)显示:在屏幕上显示所以通讯录中的人员信息,应能分屏显示;

3)存储:将通讯录信息保存在一个文件中;

4)装入:即将文件中的信息读入程序;

5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号

码、电子邮箱;

6)修改:可修改一个人的除姓名之外的其他信息;

2、详细功能如下:

A.插入:系统将提示用户输入新添加学生信息,学生信息数据包括姓名、性别、地址、编号、电话等。

B.查询:提示用户输入要查找的学生姓名,然后系统用查找函数查找,接着系统使用相关命令输出所查找的学生的全部信息。

C.删除:首先提示用户输入要删除的学生姓名,然后调用删除函数,删除该学生的所有相关资料。

D.输出后退出系统,退出通讯录管理系统。

四、概要设计

1、通讯录管理系统功能说明图:

2、设计结构体及基本数据成员类型:

#include

#include

#include

#include

struct record

{char num[10],name[20],tel[20],address[40],unit[10],email[30];

}stu[500];

int pc=0;

FILE *fp;

void mainmenu();//主菜单

void newrecord();//新名片

void searchbyname();//按姓名查询

void searchbynum();//按编号查询

void showall();//显示所有

void readfromfile();//读取文件

void writetofile();//写入文件

void deletebynum();//按编号删除

void deletebyname();//按姓名删除

void modifybynum();//按编号修改

void modifybyname();//按姓名修改

3、实现主程序与各模块的调用关系:

void mainmenu()//主菜单

{

char choic;

system("cls");

printf("\n\t\t******************** 主菜单********************");

printf("\n\t\t*********** 0-新添名片1-全部显示************");

printf("\n\t\t*********** 2-按编号查询3-按姓名查询************");

printf("\n\t\t*********** 4-按姓名删除5-按编号删除************");

printf("\n\t\t*********** 6-按姓名修改7-按编号修改************");

printf("\n\t\t*********** 8-保存退出9-不保存退出***********");

printf("\n\t\t************************************************");

printf("\n\t\t请选择:");

choic=getch();

switch (choic)

{

case '0':newrecord();break;

case '1':showall();break;

case '2':searchbynum();break;

case '3':searchbyname();break;

case '4':deletebyname();break;

case '5':deletebynum();break;

case '6': modifybyname ();break;

case '7': modifybyname ();break;

case '8':writetofile();break;

case '9':exit(0);

default:mainmenu();

}

}

五、详细设计

各个操作的算法:

1、导入名片信息:

void main()

{ readfromfile();

while (1)

{ mainmenu();

}

}

void readfromfile()//从文件导入

{ if((fp=fopen("stu.txt","rb"))==NULL)

{ printf("\n\t\t通讯录文件不存在");

if ((fp=fopen("stu.txt","wb"))==NULL)

{ printf("\n\t\t建立失败");

exit(0);

}

else

{ printf("\n\t\t通讯录文件已建立");

printf("\n\t\t按任意键进入菜单");

getch();

return;

}

exit(0);

}

fseek(fp,0,2); /*文件位置指针移动到文件末尾*/

if (ftell(fp)>0) /*文件不为空*/

{rewind(fp); /*文件位置指针移动到文件开始位置*/

for (pc=0;!feof(fp) && fread(&stu[pc],sizeof(struct record),1,fp);pc++);

printf("\n\t\t文件导入成功");

相关文档
最新文档