您的当前位置:首页正文

数据结构 实验报告一 通讯录管理

2022-06-07 来源:步旅网


实验课程名称 数据结构课程设计 专 业 班 级

学 生 姓 名 学 号

指 导 教 师

2012至 2013学年第 一 学期第 1 至 9 周

目录

一、概述 ................................................................................................ 3 二、系统分析 ........................................................................................ 3 三、概要设计 ........................................................................................ 3 四、详细设计 ........................................................................................ 4 五、运行与测试 .................................................................................... 6 六、总结与心得 .................................................................................. 10 附录:程序代码 ............................................................................ 10

实验题目:通讯录管理

一、概述

1、建立通讯录系统,通讯录要包含编号、姓名、年龄、电话、通讯地址、电子邮箱等; 2、系统具有添加、删除和修改通讯录信息的功能;

3、能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询; 4、能将通讯录保存在文件中;

5、能够按表格方式输出通讯录信息。

二、系统分析

该系统主要包含一下多种功能:

创建:创建通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 查询:查询通讯录记录 修改:修改通讯录记录

保存:将信息保存成文件,并保存在磁盘中。

三、概要设计

功能模块结构图:

创建:即建立一个通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加

显示:可以以表格形式输出所有通讯录里的记录

删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询

修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电

子邮箱即可完成修改

保存:输入文件名(带后缀名)后,即可将通讯录信息保存到文件

四、详细设计

1、创建:创建通讯录 2、显示:显示通讯录

3、删除:删除通讯录

4、查询:查询通讯录

5、修改:修改通讯录

五、运行与测试

1、功能菜单:

2、创建通讯录:

3、显示通讯录:

4、删除通讯录:

删除后的通讯录:

5、查询通讯录:

① 按姓名查找 ② 按电话查找

③ 按住址查找

6、修改通讯录:

修改后的通讯录:

7、保存通讯录:

六、总结与心得

要真正的做好一件事是很难的,就拿这道题来说吧。在开始这首之前吗,肯定要有一个大概的构思。通讯录管理系统,谈到系统,应该有不止一个功能模块,而功能又与人的需求有关。

所以在设计的时候就为了实现基本的需求加入了创建、显示、删除、查询、修改、保存等功能,而单查询就提供了姓名、电话、地址等查询方式。

说到实现,就与代码有关了,可以说程序质量与执行效率和代码的质量有直接的关系。当按照要求将代码全写出来时,难免会出现错误,这时候就得返回去一个一个的改正,有时候调试了半天,结果是出来了,但是不是想要的,还得二次修改。比如:在该程序中利用system(“cls”)函数解决屏幕内容杂乱。

编程实际是将理论与实践相融合,只有自己亲自动手,才能更好的发现问题、解决问题,另外动手的好处就是能检测出我们平时的不足,当知道了自己的不足后,经过不断思考及查阅相关资料来弥补自己的缺陷。

总的来说,实验课的收获还是不小的,从中能够学到很多书本上学不到的东西。

附录:程序代码

#include #include #include typedef struct { char score; /*编号*/ char name[12]; /*姓名*/ char num[12]; /*号码*/ char email[22]; /*邮箱*/ char age[6]; /*年龄*/ char adds[30]; /*住址*/ }Person;

Person pe[85]; int menu_select() { int c; system(\"cls\"); /*清除屏幕*/ printf(\"\\ ********通讯录******* \\n\"); printf(\"\\ ───────\\n\"); printf(\"\\≯ 1. 创建通讯录 \\n\"); printf(\"\\≯ 2. 显示通讯录 \\n \");

printf(\"\\≯ 3. 删除通讯录 \\n \"); printf(\"\\≯ 4. 查询通讯录 \\n \"); printf(\"\\≯ 5. 修改通讯录 \\n \"); printf(\"\\≯ 6. 保存通讯录 \\n \"); printf(\"\\≯ 0. 退出程序 \\n \"); printf(\"\\ ───────\\n\"); printf(\"\\请选择(0-6):\"); for(;;) {

scanf(“%d”,&c); if(c<0||c>6)

printf(“\\n\输入错误,请确认后再输入(0-6):”); else break;

} return(c); }

int Input(Person per[],int n) { int i=0; char sign,x[10]; while(sign!='n'&&sign!='N') { printf(\"\编号:\"); scanf(\"\%d\ printf(\"\姓名:\"); scanf(\"\%s\ printf(\"\年龄:\"); scanf(\"\%s\ printf(\"\电话号码:\"); scanf(\"\%s\ printf(\"\通讯住址:\"); scanf(\"\%s\ printf(\"\电子邮箱:\"); scanf(\"\%s\ gets(x); printf(\"\\n\是否继续添加?(Y/N)\"); scanf(\"\%c\ i++; } return(n+i); }

void Display(Person per[],int n) {

int i; printf(\"----------------------------------------------------------------------\\n\"); /*格式*/ printf(\"编号 姓名 年龄 电话号码 通讯地址 电子邮箱\\n\"); printf(\"----------------------------------------------------------------------\\n\"); for(i=1;i1&&i%10==0) { printf(\"\-----------------------------------\\n\"); printf(\"\\"); system(\"pause\"); printf(\"\-----------------------------------\\n\"); } } printf(\"----------------------------------------------------------------------\\n\"); system(\"pause\"); }

int Delete_a_record(Person per[],int n) { char s[20]; int i=0,j; printf(\"\请输入想删除记录中的名字:\"); scanf(\"%s\ while(strcmp(per[i].name,s)!=0&&ivoid Query_a_record(Person per[],int n) { int m; printf(\"\\\n请选择查询方式:\\n\"); printf(\"\──────────\\n\"); printf(\"\≯ 1------姓名 \\n\"); printf(\"\≯ 2------电话 \\n\"); printf(\"\≯ 3------地址 \\n\"); printf(\"\≯ 4------返回 \\n\"); printf(\"\──────────\\n\"); printf(\"请选择:\"); scanf(\"%d\

while(m!=1&&m!=2&&m!=3&&m!=4) { printf(\"输入错误,请重新选择:\"); scanf(\"%d\ } if(m==1) { char s[20]; int i=0; printf(\"\请输入想查询的姓名:\"); scanf(\"\%s\ while(strcmp(per[i].name,s)!=0&&iprintf(\"\通讯录中没有此人!\\n\"); return; } printf(\"\此人编号: %d\\n\ printf(\"\此人姓名: %s\\n\ printf(\"\此人年龄: %s\\n\ printf(\"\通讯地址: %s\\n\ printf(\"\电子邮箱: %s\\n\ } ; if(m==3) { char s[20]; int i=0; printf(\"\请输入想查询的地址:\"); scanf(\"\%s\ while(strcmp(per[i].adds,s)!=0&&ivoid Change(Person per[],int n) { char s[20]; int i=0; printf(\"\请输入想修改的记录中的名字:\"); scanf(\"%s\ while(strcmp(per[i].name,s)!=0&&iprintf(\"\年龄:\"); scanf(\"\%s\ printf(\"\电话号码:\"); scanf(\"\%s\ printf(\"\通讯住址:\"); scanf(\"\%s\ printf(\"\电子邮箱:\"); scanf(\"\%s\ printf(\"\修改成功!\"); }

void WritetoText(Person per[],int n) { int i=0; FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/ printf(\"\保存到文件\\n\"); /*输入文件名*/ printf(\"\请输入所保存的文件名:\"); scanf(\"\%s\ if((fp=fopen(filename,\"w\"))==NULL) { printf(\"\无法打开文件\\n\"); system(\"pause\"); return; } fprintf(fp,\"******************************************通讯录******************************************\\n\"); fprintf(fp,\"编号 姓名 年龄 电话号码 通讯地址 电子邮箱\\n\"); fprintf(fp,\"------------------------------------------------------------------------------------------\\n\"); while(ivoid main() /*主函数*/ { int n=0;

for(;;) { switch(menu_select()) { case 1: printf(\"\\n\添加记录到通讯录\\n\"); /*添加记录*/ n=Input(pe,n); break; case 2: printf(\"\\n\\\ 通讯录记录表\\n\"); Display(pe,n); break; case 3: printf(\"\\n\从通讯录中删除记录\\n\"); n=Delete_a_record(pe,n); printf(\"\\"); system(\"pause\"); break; case 4: printf(\"\\n\在通讯录中查找记录\\n\"); Query_a_record(pe,n); printf(\"\\"); system(\"pause\"); break; case 5: printf(\"\\n\修改通讯录中的记录\\n\"); Change(pe,n); printf(\"\\"); system(\"pause\"); break; case 6: printf(\"\\n\保存功能\\n\"); WritetoText(pe,n); printf(\"\\"); system(\"pause\"); break; case 0: printf(\"\\n\\欢迎下次使用!\\n\"); printf(\"\\n\\\"); system(\"pause\"); exit(0); } }

}

/*显示记录*/ /*删除记录*/ /*查找记录*/ /*修改数据*/ /*保存数据*/ /*结束程序*/

因篇幅问题不能全部显示,请点此查看更多更全内容