1、个人通讯录管理系统课程研究与设计开发报告C语言程序设计课程设计报告个人通讯录管理系统设计专 业_网络工程_班 级_(3)班_学 号_3148119322 姓 名_吴道金 _学 号_ 3148119319 _姓 名_ 林东垚 _学 号_ 3148119359 _姓 名_ 林家勇 _学 号_3149119349_姓 名_上官景铨_福建工程学院软件学院2015年 月 日(正文部分)一、需求分析建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。功能要求(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、
2、QQ等。(2) 输入功能:可以一次完成若干条信息的输入。(3) 显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)(4) 查找功能:可以按姓名等多种方式查找通讯信息(5) 增加、删除、修改功能:完成通讯录信息的多种更新二、总体设计三、详细设计void menu()。 /*菜单*/ void Add()。 /*添加记录*/ void print()。 /*输出记录*/ void Find()。 /*查找记录( 按姓名 )*/ void Delete()。 /*删除记录*/ void SaveFree()。 /*保存到文件*/ void Creat()。 /*打开
3、文件*/ 四、程序源代码#include #include #include struct list char name20。 char addr20。 char num20。 char qq10。 char phnum20。 char email30。 struct list *next。 。 typedef struct list LIST。 LIST *head=NULL。 void menu()。 /*菜单*/ void Add()。 /*添加记录*/ void print()。 /*输出记录*/ void Find()。 /*查找记录( 按姓名 )*/ void Delete()。
4、/*删除记录*/ void SaveFree()。 /*保存到文件*/ void Creat()。 /*打开文件*/ void main() char c。 Creat()。 /*打开文件*/ while(1) menu()。 /*显示菜单*/ scanf( %c,&c)。 switch(c) case 1:Add()。break。 /*添加记录*/ case 2:print()。 break。/*输出条目*/ case 3:Find()。 break。/*查找条目1.按姓名*/ case 4:Delete()。 /*删除信息*/ print()。 break。/*输出删除后的结果*/ cas
5、e 0:SaveFree()。 /*保存并释放内存*/ exit(0)。 /*退出*/ break。 default: printf(选择错误!)。 break。 /*菜单*/ void menu() printf(n*通讯录系统*n)。 printf(*t1.添加记录 *n)。 printf(*t2.输出记录 *n)。 printf(*t3.查询记录 *n)。 printf(*t4.删除记录 *n)。 printf(*t0.保存并退出! *n)。 printf(*n)。 printf(t请选择将要进行的操作:n)。 /*添加记录*/ void Add() LIST *p1=NULL,*p2=
6、NULL。 p1=(LIST *)malloc(sizeof(LIST)。 /*申请结点*/ printf(输入姓名:n)。 /*添加信息*/ scanf(%s,p1-name)。 printf(输入地址:n)。 scanf(%s,p1-addr)。 printf(输入学号:n)。 scanf(%s,p1-num)。 printf(请输入qq号:n)。 scanf(%s,p1-qq)。 printf(输入电话:n)。 scanf(%s,p1-phnum)。 printf(请输入email:n)。 scanf(%s,p1-email)。 p1-next=NULL。 /*保存到链表*/ if(he
7、ad=NULL) head=(LIST *)malloc(sizeof(LIST)。 /*申请空间*/ head-next=p1。 else for(p2=head。p2-next!=NULL。p2=p2-next)。 /*找到结点尾*/ p2-next=p1。 printf(此记录已添加!)。 /*输出学生信息*/ void print() LIST *p=NULL。 if(head=NULL) printf(这是一个新记录,请添加记录n)。 return。 printf(*通讯录系统*n)。 /*输出信息*/ printf(姓名tt地址t学号ttqqtt电话ttemailn)。 for(p
8、=head-next。p!=NULL。p=p-next) printf(%stt%st%st%st%st%sn,p-name,p-addr,p-num,p-qq,p-phnum,p-email)。 /*查找信息1.按姓名、2、按学号*/ void Find() LIST *p。 char name120,num120。 int i。 printf(请输入查找方式1、按姓名;2、按学号)。 scanf(%d,&i)。 if(i=1) printf(请输入要查找的姓名:n)。 scanf(%s,name1)。 printf(*通讯录系统*n)。 printf(姓名tt地址t学号tqqt电话ttem
9、ailn)。 for(p=head-next。p!=NULL。p=p-next) if(strcmp(p-name,name1)=0) printf(%stt%st%st%st%st%sn,p-name,p-addr,p-num,p-qq,p-phnum,p-email)。 else if(i=2) printf(请输入要查找人的学号:n)。 scanf(%s,num1)。 printf(*通讯录系统*n)。 printf(姓名tt地址t学号tqqt电话temailn)。 for(p=head-next。p!=NULL。p=p-next) if(strcmp(p-num,num1)=0) pr
10、intf(%stt%st%st%st%st%sn,p-name,p-addr,p-num,p-qq,p-phnum,p-email)。 else printf(请选择1和2两哥数字n)。/*删除信息*/ void Delete() char name120。 /*先查找 后删除*/ LIST *p = head-next, *pr = head-next。 printf(请输入要删除的姓名:n)。 scanf( %s,name1)。 if (head-next = NULL) printf(无此节点!n)。 return。 while (strcmp(p-name,name1)!=0 )& p
11、-next != NULL) pr =p。 p =p-next。 if (strcmp(name1, p-name)=0) /*输出删除信息*/ printf(%stt%st%st%st%st%sn,p-next-name,p-next-addr, p-next-num,p-next-qq,p-next-phnum,p-next-email)。 if (p = head-next) head-next = p-next。 else pr-next = p-next。 free(p)。 printf(此记录已删除!)。 /*保存链表信息到文件并释放内存空间 */void SaveFree() L
12、IST *p=NULL。 FILE *fp。 char *Book=list.txt。 if(head=NULL) printf(n记录为空!n)。 return。 else p=head-next。 if(fp=fopen(Book,wb+)=NULL) printf(n打不开文件!n)。 return。 while(p!=NULL) /*保存信息*/ fwrite(p,sizeof(LIST),1,fp)。 p=p-next。 printf(保存完毕!)。 fclose(fp)。 /*释放链表空间*/ for(。head-next!=NULL。) p=head-next。 head-nex
13、t=head-next-next。 free(p)。 free(head)。 /*文件信息输出到链表 */void Creat() FILE *fp。 LIST *p1=NULL,*p2=NULL,*temp=NULL。 if(fp=fopen(address list.txt,rb+)=NULL) printf(n*这是一个新的通讯录管理系统*n)。 return。 head=(LIST *)malloc(sizeof(LIST)。 head-next=NULL。 temp=p2=head。 while(! feof(fp) /*循环读取*/ p1=(LIST *)malloc(sizeof
14、(LIST)。 temp=p2。 p2-next=p1。 p2=p1。 fread(p1,sizeof(LIST),1,fp)。 temp-next=NULL。 fclose(fp)。 /*关闭文件*/ 五、程序运行结果测试六、结论与心得通过为期一周的课程设计,我们对C语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。运用C语言中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等吴道金:文本排版及构图林家勇:程序程序运行测试林东垚:程序分析上官景铨:程序注释七、致谢
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1