1、通讯录管理系统 湖南工学院课程设计报告课程设计题目: 通讯录管理系统 学生姓名: 蔡俊鹏班 级: 软件0901专 业: 软件技术指导教师: 戴成秋 2010年1月1日 目 录一、设计需求说明3二、概要设计4三、程序源代码5四、运行结果及截图12五、心得体会14六、附录14一、 设计需求说明1、设计题目及要求:建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;能够提供添加、删除和修改通讯录信息的功能;能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询;将通讯录保存在文件中;能够按表格方式输出通讯录信息。2、系统功能需求分析:主要包含一下多种功能:添加:添加通讯录记录
2、显示:显示通讯录记录删除:删除通讯录记录查询:查询通讯录记录修改:修改通讯录记录保存:将信息保存到文件二、 概要设计系统功能模块:添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。显示:可以以表格形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、地址三种方式查询修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改保存:输入文件名(带后缀名)后,即可将通讯录信息保存到文件 三、 源程序代码 #include #include#i
3、nclude FILE *fp; typedef struct char score; /*编号*/ char name10; /*姓名*/ char num15; /*号码*/ char email20; /*邮箱*/ char age8; /*年龄*/ char adds20; /*住址*/ Person; void readtext() system(cls); char cInput; FILE* pReadFile = fopen( C:通讯录.txt, r ); / 打开文件 if ( pReadFile = NULL ) printf(文件不存在,打开失败); while ( (
4、 cInput = fgetc( pReadFile ) ) != EOF ) / 从文件读入一个字符,如果到文件尾部,则返回EOF(-1) printf( %c, cInput ); fclose( pReadFile ); / 关闭文件 Person pe80; int menu_select() int i; char c; do /system(cls); printf(tt *通讯录* n); printf(tt n); printf(tt 1. 添加记录 n); printf(tt 2. 显示记录 n); printf(tt 3. 删除记录 n); printf(tt 4. 查询记
5、录 n); printf(tt 5. 修改记录 n); printf(tt 6. 保存记录 n); printf(tt 7. 查看保存的通讯录 n); printf(tt 0. 退出程序 n); printf(tt请您选择(0-7):); scanf(%d,&i); /c=getchar(); / while(c6); / return(c-0); while(i7); return(i); int Input(Person per,int n) int i=0; char sign,x10; while(sign!=n&sign!=N) printf(t编号:); scanf(t%d,&pe
6、rn+i.score); printf(t姓名:); scanf(t%s,pern+i.name); printf(t年龄:); scanf(t%s,pern+i.age); printf(t电话号码:); scanf(t%s,pern+i.num); printf(t通讯住址:); scanf(t%s,pern+i.adds); printf(t电子邮箱:); scanf(t%s,pern+i.email); gets(x); printf(nt是否继续添加?(Y/N); scanf(t%c,&sign); i+; system(cls); return(n+i); void Display
7、(Person per,int n) int i; printf(-n); /*格式*/ printf(编号 姓名 年龄 电话号码 通讯地址 电子邮箱n); printf(-n); for(i=1;i1&i%10=0) printf(t-n); printf(t); system(pause); printf(t-n); printf(-n); system(pause); int Delete_a_record(Person per,int n) char s20; int i=0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(pe
8、ri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return(n); for(j=i;jn-1;j+) strcpy(perj.num,perj+1.num); strcpy(perj.name,perj+1.name); strcpy(perj.age,perj+1.age); strcpy(perj.adds,perj+1.adds); strcpy(perj.email,perj+1.email); perj.score=perj+1.score; printf(ttt已经成功删除!n); return(n-1); void Quer
9、y_a_record(Person per,int n) int m; printf(tn请选择查询方式:n); printf(t n); printf(t 1 姓名 n); printf(t 2 电话 n); printf(t 3 地址 n); printf(t 4 返回 n); printf(t n); printf(请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(输入错误,请重新选择:); scanf(%d,&m); if(m=1) char s20; int i=0; printf(t请输入想查询的姓名:); scanf(t
10、%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t此人编号: %dn,peri.score); printf(t此人年龄: %sn,peri.age); printf(t电话号码: %sn,peri.num); printf(t通讯地址: %sn,peri.adds); printf(t电子邮箱: %sn,peri.email); ; if(m=2) char s20; int i=0; printf(t请输入想查询的电话:); scanf(t%s,s); while
11、(strcmp(peri.num,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t此人编号: %dn,peri.score); printf(t此人姓名: %sn,peri.name); printf(t此人年龄: %sn,peri.age); printf(t通讯地址: %sn,peri.adds); printf(t电子邮箱: %sn,peri.email); ; if(m=3) char s20; int i=0; printf(t请输入想查询的地址:); scanf(t%s,s); while(strcmp(peri
12、.adds,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t此人编号: %dn,peri.score); printf(t此人姓名: %sn,peri.name); printf(t此人年龄: %sn,peri.age); printf(t电话号码: %sn,peri.num); printf(t电子邮箱: %sn,peri.email); ;void Change(Person per,int n) char s20; int i=0; printf(t请输入想修改的记录中的名字:); scanf(%s,s); while
13、(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t编号:); scanf(t%d,&peri.score); printf(t姓名:); scanf(t%s,peri.name); printf(t年龄:); scanf(t%s,peri.age); printf(t电话号码:); scanf(t%s,peri.num); printf(t通讯住址:); scanf(t%s,peri.adds); printf(t电子邮箱:); scanf(t%s,peri.email); printf(t
14、修改成功!);void WritetoText(Person per,int n) int i=0; if(fp=fopen(C:通讯录.txt,w)=NULL) printf(t无法打开文件n); system(pause); return; fprintf(fp,*通讯录*n); fprintf(fp,编号 姓名 年龄 电话号码 通讯地址 电子邮箱n); fprintf(fp,-n); while(in) fprintf(fp,%-3dt%-6st%-3st%-13st%-20st%-20sn,peri.score,peri.name,peri.age,peri.num,peri.adds
15、,peri.email); i+; fprintf(fp,-n); fprintf(fp,*共有%d条记录*n,n); fclose(fp); /*关闭文件*/ printf(保存成功!n); printf(文件保存在C盘目录下“通讯录.TXT”); void main() /*主函数*/ int n=0; for(;) switch(menu_select() case 1: printf(nt添加记录到通讯录n); /*添加记录*/ n=Input(pe,n); break; case 2: printf(nttt 通讯录记录表n); /*显示记录*/ Display(pe,n); bre
16、ak; case 3: printf(nt从通讯录中删除记录n); n=Delete_a_record(pe,n); /*删除记录*/ printf(t); system(pause); break; case 4: printf(nt在通讯录中查找记录n); Query_a_record(pe,n); /*查找记录*/ printf(t); system(pause); break; case 5: printf(nt修改通讯录中的记录n); Change(pe,n); /*修改数据*/ printf(t); system(pause); break; case 6: printf(nt保存
17、功能n); WritetoText(pe,n); /*保存数据*/ printf(t); system(pause); system(cls); break; case 0: printf(ntt谢谢使用,再见!n); /*结束程序*/ printf(ntt); system(pause); exit(0); case 7: system(cls); readtext(); break; 四、 运行结果及截图1.显示主菜单界面2.添加界面3.显示界面4.删除界面5.查询界面6.修改界面修改后,通讯记录的显示记录:7.保存界面8.查看保存的通讯录五、 心得体会写通讯录对于我来说是个巨大的挑战 充分把所学的东西和实际生活结合起来。运用了结构体数组 特别是用了C语言的文件,这点尤为重要,因为上个学期的C语言老师任老师并没有讲“文件”这个章节,我自己搜资料试着把文件写出来 所谓的数据库就是在文件的基础上发展出来的 但是我学的不好 我的文件系统有缺陷,只能添加和读取,不能够更新 因为每次启动程序变量会置零,其实我可以用一个文件把下标记住,每次都调用它 但是我觉得太麻烦 而且我也没有什么时间 我以后会继续努力解决这个问题的 另外写通讯录对自己逻辑上的编排起到了重要的影响 对我的后讯学习很有帮助!六、 参考文献电子工业出版社 朱站立版 数据结构清华大学出版社 谭浩强版C程序设计
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1