个人通讯录管理系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运用《C语言》中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等
吴道金:文本排版及构图
林家勇:程序程序运行测试
printf("***********\t3.查询记录 *****************\n");
printf("***********\t4.删除记录 *******************\n");
printf("***********\t0.保存并退出! ****************\n");
case '4':Delete(); /*删除信息*/
print(); break;/*输出删除后的结果*/
case '0':SaveFree(); /*保存并释放内存*/
exit(0); /*退出*/
break;
default:
printf("选择错误!");
break;
}
}
}
/*菜单*/
void menu()
林东垚:程序分析
上官景铨:程序注释
七、致谢
{
printf("\n****************这是一个新的通讯录管理系统******************\n");
return;
}
head=(LIST *)malloc(sizeof(LIST));
head->next=NULL;
temp=p2=head;
while(! feof(fp)) /*循环读取*/
{
p=head->next;
head->next=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;
}
while(p!=NULL) /*保存信息*/
{
fwrite(p,sizeof(LIST),1,fp);
p=p->next;
}
printf("保存完毕!");
fclose(fp);
/*****释放链表空间*****/
for(;head->next!=NULL;)
{
printf("这是一个新记录,请添加记录\n");
return;
}
printf("**************通讯录系统*********************\n"); /*输出信息*/
printf("姓名\t\t地址\t学号\t\tqq\t\t电话\t\temail\n");
for(p=head->next;p!=NULL;p=p->next)
printf("请输入查找方式1、按姓名;2、按学号");
scanf("%d",&i);
if(i==1)
{
printf("请输入要查找的姓名:\n");
scanf("%s",name1);
printf("**************通讯录系统*********************\n");
printf("姓名\t\t地址\t学号\tqq\t电话\t\temail\n");
struct list
{
char name[20];
char addr[20];
char num[20];
char qq[10];
char phnum[20];
char email[30];
struct list *next;
};
typedef struct list LIST;
LIST *head=NULL;
{
if(strcmp(p->num,num1)==0)
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->name,p->addr,p->num,p->qq,p->phnum,p->email);
}
}
else
printf("请选择1和2两哥数字\n");
}
/*删除信息*/
void Delete()
printf("************************************************\n");
printf("\t请选择将要进行的操作:\n");
}
/*添加记录*/
void Add()
{
LIST *p1=NULL,*p2=NULL;
p1=(LIST *)malloc(sizeof(LIST)); /*申请结点*/
{
char name1[20]; /*先查找 后删除*/
LIST *p = head->next, *pr = head->next;
printf("请输入要删除的姓名:\n");
scanf(" %s",name1);
if (head->next == NULL)
{
printf("无此节点!\n");
void SaveFree()
{
LIST *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)
{
p1=(LIST *)malloc(sizeof(LIST));
temp=p2;
p2->next=p1;
p2=p1;
fread(p1,sizeof(LIST),1,fp);
}
temp->next=NULL;
fclose(fp); /*关闭文件*/
}
五、程序运行结果测试
六、结论与心得
通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
void menu(); /*菜单*/
void Add(); /*添加记录*/
void print(); /*输出记录*/
void Find(); /*查找记录( 按姓名 )*/
void Delete(); /*删除记录*/
void SaveFree(); /*保存到文件*/
void Creat(); /*打开文件*/
else if(i==2)
{
printf("请输入要查找人的学号:\n");
scanf("%s",num1);
printf("**************通讯录系统*********************\n");
printf("姓名\t\t地址\t学号\tqq\t电话\temail\n");
for(p=head->next;p!=NULL;p=p->next)
void Find(); /*查找记录( 按姓名 )*/
void Delete(); /*删除记录*/
void SaveFree(); /*保存到文件*/
void Creat(); /*打开文件*/
四、程序源代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
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("此记录已删除!");
}
/*保存链表信息到文件并释放内存空间 */
C语言程序设计
课程设计报告
个人通讯录管理系统设计
专业__网络工程________班级___(3)班___________
学号__3148119322姓名__吴道金_
学号_3148119319_姓名_林东垚___
学号_3148119359_姓名__林家勇__
学号__3149119349__________姓名___上官景铨___________
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.按姓名*/
printf("输入电话:\n");
scanf("%s",p1->phnum);
printf("请输入email:\n");
scanf("%s",p1->email);
p1->next=NULL; /*保存到链表*/
if(head==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"); /*添加信息*/
scanf("%s",p1->name);
printf("输入地址:\n");
scanf("%s",p1->addr);
printf("输入学号:\n");
scanf("%s",p1->num);
printf("请输入qq号:\n");
scanf("%s",p1->qq);
福建工程学院软件学院
2Baidu Nhomakorabea15年月日
(正文部分)
一、需求分析
建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
功能要求
(1)通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
(2)输入功能:可以一次完成若干条信息的输入。
for(p=head->next;p!=NULL;p=p->next)
{
if(strcmp(p->name,name1)==0)
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->name,p->addr,p->num,p->qq,p->phnum,p->email);
}
}
return;
}
while ((strcmp(p->name,name1)!=0 )&& p->next != NULL)
{
pr =p;
p =p->next;
}
if (strcmp(name1, p->name)==0) /*输出删除信息*/
{
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->next->name,p->next->addr,
(3)显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)
(4)查找功能:可以按姓名等多种方式查找通讯信息
(5)增加、删除、修改功能:完成通讯录信息的多种更新
二、总体设计
三、详细设计
void menu(); /*菜单*/
void Add(); /*添加记录*/
void print(); /*输出记录*/
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->name,p->addr,p->num,p->qq,p->phnum,p->email);
}
/*查找信息1.按姓名、2、按学号*/
void Find()
{
LIST *p;
char name1[20],num1[20];
int i;
{
printf("\n*****************通讯录系统*********************\n");
printf("***********\t1.添加记录 *******************\n");
printf("***********\t2.输出记录 *******************\n");
吴道金:文本排版及构图
林家勇:程序程序运行测试
printf("***********\t3.查询记录 *****************\n");
printf("***********\t4.删除记录 *******************\n");
printf("***********\t0.保存并退出! ****************\n");
case '4':Delete(); /*删除信息*/
print(); break;/*输出删除后的结果*/
case '0':SaveFree(); /*保存并释放内存*/
exit(0); /*退出*/
break;
default:
printf("选择错误!");
break;
}
}
}
/*菜单*/
void menu()
林东垚:程序分析
上官景铨:程序注释
七、致谢
{
printf("\n****************这是一个新的通讯录管理系统******************\n");
return;
}
head=(LIST *)malloc(sizeof(LIST));
head->next=NULL;
temp=p2=head;
while(! feof(fp)) /*循环读取*/
{
p=head->next;
head->next=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;
}
while(p!=NULL) /*保存信息*/
{
fwrite(p,sizeof(LIST),1,fp);
p=p->next;
}
printf("保存完毕!");
fclose(fp);
/*****释放链表空间*****/
for(;head->next!=NULL;)
{
printf("这是一个新记录,请添加记录\n");
return;
}
printf("**************通讯录系统*********************\n"); /*输出信息*/
printf("姓名\t\t地址\t学号\t\tqq\t\t电话\t\temail\n");
for(p=head->next;p!=NULL;p=p->next)
printf("请输入查找方式1、按姓名;2、按学号");
scanf("%d",&i);
if(i==1)
{
printf("请输入要查找的姓名:\n");
scanf("%s",name1);
printf("**************通讯录系统*********************\n");
printf("姓名\t\t地址\t学号\tqq\t电话\t\temail\n");
struct list
{
char name[20];
char addr[20];
char num[20];
char qq[10];
char phnum[20];
char email[30];
struct list *next;
};
typedef struct list LIST;
LIST *head=NULL;
{
if(strcmp(p->num,num1)==0)
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->name,p->addr,p->num,p->qq,p->phnum,p->email);
}
}
else
printf("请选择1和2两哥数字\n");
}
/*删除信息*/
void Delete()
printf("************************************************\n");
printf("\t请选择将要进行的操作:\n");
}
/*添加记录*/
void Add()
{
LIST *p1=NULL,*p2=NULL;
p1=(LIST *)malloc(sizeof(LIST)); /*申请结点*/
{
char name1[20]; /*先查找 后删除*/
LIST *p = head->next, *pr = head->next;
printf("请输入要删除的姓名:\n");
scanf(" %s",name1);
if (head->next == NULL)
{
printf("无此节点!\n");
void SaveFree()
{
LIST *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)
{
p1=(LIST *)malloc(sizeof(LIST));
temp=p2;
p2->next=p1;
p2=p1;
fread(p1,sizeof(LIST),1,fp);
}
temp->next=NULL;
fclose(fp); /*关闭文件*/
}
五、程序运行结果测试
六、结论与心得
通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
void menu(); /*菜单*/
void Add(); /*添加记录*/
void print(); /*输出记录*/
void Find(); /*查找记录( 按姓名 )*/
void Delete(); /*删除记录*/
void SaveFree(); /*保存到文件*/
void Creat(); /*打开文件*/
else if(i==2)
{
printf("请输入要查找人的学号:\n");
scanf("%s",num1);
printf("**************通讯录系统*********************\n");
printf("姓名\t\t地址\t学号\tqq\t电话\temail\n");
for(p=head->next;p!=NULL;p=p->next)
void Find(); /*查找记录( 按姓名 )*/
void Delete(); /*删除记录*/
void SaveFree(); /*保存到文件*/
void Creat(); /*打开文件*/
四、程序源代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
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("此记录已删除!");
}
/*保存链表信息到文件并释放内存空间 */
C语言程序设计
课程设计报告
个人通讯录管理系统设计
专业__网络工程________班级___(3)班___________
学号__3148119322姓名__吴道金_
学号_3148119319_姓名_林东垚___
学号_3148119359_姓名__林家勇__
学号__3149119349__________姓名___上官景铨___________
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.按姓名*/
printf("输入电话:\n");
scanf("%s",p1->phnum);
printf("请输入email:\n");
scanf("%s",p1->email);
p1->next=NULL; /*保存到链表*/
if(head==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"); /*添加信息*/
scanf("%s",p1->name);
printf("输入地址:\n");
scanf("%s",p1->addr);
printf("输入学号:\n");
scanf("%s",p1->num);
printf("请输入qq号:\n");
scanf("%s",p1->qq);
福建工程学院软件学院
2Baidu Nhomakorabea15年月日
(正文部分)
一、需求分析
建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
功能要求
(1)通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
(2)输入功能:可以一次完成若干条信息的输入。
for(p=head->next;p!=NULL;p=p->next)
{
if(strcmp(p->name,name1)==0)
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->name,p->addr,p->num,p->qq,p->phnum,p->email);
}
}
return;
}
while ((strcmp(p->name,name1)!=0 )&& p->next != NULL)
{
pr =p;
p =p->next;
}
if (strcmp(name1, p->name)==0) /*输出删除信息*/
{
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->next->name,p->next->addr,
(3)显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)
(4)查找功能:可以按姓名等多种方式查找通讯信息
(5)增加、删除、修改功能:完成通讯录信息的多种更新
二、总体设计
三、详细设计
void menu(); /*菜单*/
void Add(); /*添加记录*/
void print(); /*输出记录*/
printf("%s\t\t%s\t%s\t%s\t%s\t%s\n",p->name,p->addr,p->num,p->qq,p->phnum,p->email);
}
/*查找信息1.按姓名、2、按学号*/
void Find()
{
LIST *p;
char name1[20],num1[20];
int i;
{
printf("\n*****************通讯录系统*********************\n");
printf("***********\t1.添加记录 *******************\n");
printf("***********\t2.输出记录 *******************\n");