个人通讯录管理系统课程研究与设计开发报告.docx

上传人:b****6 文档编号:5997187 上传时间:2023-01-02 格式:DOCX 页数:14 大小:181.64KB
下载 相关 举报
个人通讯录管理系统课程研究与设计开发报告.docx_第1页
第1页 / 共14页
个人通讯录管理系统课程研究与设计开发报告.docx_第2页
第2页 / 共14页
个人通讯录管理系统课程研究与设计开发报告.docx_第3页
第3页 / 共14页
个人通讯录管理系统课程研究与设计开发报告.docx_第4页
第4页 / 共14页
个人通讯录管理系统课程研究与设计开发报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

个人通讯录管理系统课程研究与设计开发报告.docx

《个人通讯录管理系统课程研究与设计开发报告.docx》由会员分享,可在线阅读,更多相关《个人通讯录管理系统课程研究与设计开发报告.docx(14页珍藏版)》请在冰豆网上搜索。

个人通讯录管理系统课程研究与设计开发报告.docx

个人通讯录管理系统课程研究与设计开发报告

C语言程序设计

课程设计报告

个人通讯录管理系统设计

专业__网络工程________班级___(3)班___________

学号__3148119322姓名__吴道金_

学号_3148119319_姓名_林东垚___

学号_3148119359_姓名__林家勇__

学号__3149119349__________姓名___上官景铨___________

福建工程学院软件学院

2015年月日

(正文部分)

一、需求分析

建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。

功能要求

(1)通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。

(2)输入功能:

可以一次完成若干条信息的输入。

(3)显示功能:

完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)

(4)查找功能:

可以按姓名等多种方式查找通讯信息

(5)增加、删除、修改功能:

完成通讯录信息的多种更新

二、总体设计

三、详细设计

voidmenu()。

/*菜单*/

voidAdd()。

/*添加记录*/

voidprint()。

/*输出记录*/

voidFind()。

/*查找记录(按姓名)*/

voidDelete()。

/*删除记录*/

voidSaveFree()。

/*保存到文件*/

voidCreat()。

/*打开文件*/

四、程序源代码

#include

#include

#include

structlist

{

charname[20]。

charaddr[20]。

charnum[20]。

charqq[10]。

charphnum[20]。

charemail[30]。

structlist*next。

}。

typedefstructlistLIST。

LIST*head=NULL。

voidmenu()。

/*菜单*/

voidAdd()。

/*添加记录*/

voidprint()。

/*输出记录*/

voidFind()。

/*查找记录(按姓名)*/

voidDelete()。

/*删除记录*/

voidSaveFree()。

/*保存到文件*/

voidCreat()。

/*打开文件*/

voidmain()

{

charc。

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。

/*输出删除后的结果*/

case'0':

SaveFree()。

/*保存并释放内存*/

exit(0)。

/*退出*/

break。

default:

printf("选择错误!

")。

break。

}

}

}

/*菜单*/

voidmenu()

{

printf("\n*****************通讯录系统*********************\n")。

printf("***********\t1.添加记录*******************\n")。

printf("***********\t2.输出记录*******************\n")。

printf("***********\t3.查询记录*****************\n")。

printf("***********\t4.删除记录*******************\n")。

printf("***********\t0.保存并退出!

****************\n")。

printf("************************************************\n")。

printf("\t请选择将要进行的操作:

\n")。

}

/*添加记录*/

voidAdd()

{

LIST*p1=NULL,*p2=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(head==NULL)

{

head=(LIST*)malloc(sizeof(LIST))。

/*申请空间*/

head->next=p1。

}

else

{

for(p2=head。

p2->next!

=NULL。

p2=p2->next)。

/*找到结点尾*/

p2->next=p1。

}

printf("此记录已添加!

")。

}

/*输出学生信息*/

voidprint()

{

LIST*p=NULL。

if(head==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("%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、按学号*/

voidFind()

{

LIST*p。

charname1[20],num1[20]。

inti。

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")。

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)。

}

}

elseif(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)

{

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")。

}

/*删除信息*/

voidDelete()

{

charname1[20]。

/*先查找后删除*/

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->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,

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("此记录已删除!

")。

}

/*保存链表信息到文件并释放内存空间*/

voidSaveFree()

{

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)

{

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->next=head->next->next。

free(p)。

}

free(head)。

}

/*文件信息输出到链表*/

voidCreat()

{

FILE*fp。

LIST*p1=NULL,*p2=NULL,*temp=NULL。

if((fp=fopen("addresslist.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(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