实验课程名称 数据结构课程设计 专 业 班 级
学 生 姓 名 学 号
指 导 教 师
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 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;i 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&&i 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&&i 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(i 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); } } } /*显示记录*/ /*删除记录*/ /*查找记录*/ /*修改数据*/ /*保存数据*/ /*结束程序*/ 因篇幅问题不能全部显示,请点此查看更多更全内容