通讯录管理系统.docx
- 文档编号:24236262
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:20
- 大小:233.19KB
通讯录管理系统.docx
《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
通讯录管理系统
JIANGXIAGRICULTURALUNIVERSITY
C语言实训及课程设计项目报告
通讯录系统
学院:
软件学院
姓名:
学号:
专业:
年级:
指导教师:
二零一三年一月
目录
1系统简介2
2需求分析2
3概要设计2
3.1系统功能结构图2
3.2重要数据的数据结构设计3
3.3函数设计3
4详细设计4
5调试分析11
6课程设计小结11
7附录(源程序代码)11
1系统简介
设计一个基于结构体数组的学生通讯录管理系统,能实现对学生通讯信息进行输入、修改、删除、查询和输出等基本操作。
2需求分析
通讯录管理系统应实现以下功能:
1.能录入学生的基本信息,包括姓名、电话、街道、城市、省、邮编,保存到结构体数组中;
2.录入信息,将录入的信息导入链表;
3.删除,将指定的信息(按姓名)删除并保存;
4.修改,将指定的信息(按姓名)修改并保存;
5.浏览,将入的全部信息显示出来;
6.查找,按姓名查找指定的信息;
7.保存,保存所录入、修改、删除、排序的信息。
3概要设计
3.1系统功能结构图
根据项目的开发要求,本系统划分成几个主功能模块:
创建新的通讯录,录入新的通讯信息,修改通讯信息,删除通讯信息,查找通讯信息,退出系统。
结构图如下:
3.2重要数据的数据结构设计
通讯录的记录项用结构体telephone表示,包括6个属性,name,street,tel,city,province,eip分别代表姓名,街道,电话,城市,省份,邮编:
typedefstructTelephone
{
charname[50];
charstreet[30];
chartel[30];
charcity[30];
charprovince[30];
chareip[30];
structTelephone*next;
}TEL;
3.3函数设计
第一模块——主函数main()的功能是根据菜单的选项调用各函数,并完成相应的功能。
第二模块——Menu()功能是:
显示出提示菜单。
第三模块——Quit()功能是:
退出菜单。
第四模块——Create()功能是:
创建新的通讯录。
第五模块——Add()功能是:
在通讯录的末尾,写入新的信息,并返回菜单。
第六模块——Find()功能是:
查找某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中无此人的信息,并返回菜单。
第七模块——Alter()功能是:
修改某人的信息,如果未找到要修改的人,则提示通讯录中无此人的信息,并返回菜单。
第八模块——Delete()功能是删除某人的信息,如果未找到要删除的人,则提示通讯录中无此人,并返回菜单。
第九模块——_list()的功能是:
显示通讯录中的所有记录。
4详细设计
1.系统主函数main()设计
2.主菜单模块函数Manu()设计
3.
创建新的通信录模块函数Create()的设计
4.
插入信息模块函数Add()的设计
5.
查询记录模块函数find()的设计
6.
修改记录模块函数Alter()的设计
7.删除记录模块函数Delete()的设计
5
调试分析
本系统在在VC6下编译调试通过,可顺利运行,各项功能能达到设计要求。
本系统程序由三个.h头文件和.c源文件构成。
系统调试主要在VC6下进行,采用分模块调试的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整体编译并生成可执行文件cpp1.exe。
界面结果
6课程设计小结
在设计该学生学籍管理系统中需要使用在课本上没有提到的函数,则要求我们自己去查资料弄懂各函数的使用方法。
要达到该系统的设计要求,需要我们掌握函数的声明,调用以及结构体类型的使用方法,同时,也需要把课本上的知识融会贯通。
总的来说,C语言这门课程需要我们在掌握理论的基础上,不断的上机操作,而不能拿到一个程序就去上机验证,而是要先弄懂这个程序是怎样运行的,只有这样我们才能学到真正的知识。
从做这个系统可以看出C语言的功能是强大的,所以我们要重视C语言,为以后学习C++等课程打下牢实的基础。
建议:
1、希望有更多学习交流C语言的平台;
2、希望老师上课的时候能给学生多介绍一些用C语言编写的程序,激发学生学习的兴趣。
最后,要感谢学长,学姐给我们提供的帮助以及本班同学提供的资料。
7附录(源程序代码)
#include
#include
#include
typedefstructTelephone
{
charname[50];
charstreet[30];
chartel[30];
charcity[30];
charprovince[30];
chareip[30];
structTelephone*next;
}TEL;
TEL*head;
voidInitiate();
voidMenu();
voidCreate();//的功能是:
创建新的通讯录。
voidAdd();//在通讯录的末尾,写入新的信息,并返回选单
voidFind();//查找记录
voidAlter();//修改记录如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
voidDelete();//删除某人的信息,如果未找到要删的人,提示通讯录中没有此人的信息,并返回选单。
voidList();//的功能是:
显示通讯录中的所有记录。
voidquit();//的功能是:
退出菜单。
intmain()
{
intchoice;
charyes_no;
Initiate();
do
{
system("cls");
Menu();
printf("请选择0-6的数字\n");
scanf("%d",&choice);
printf("\n");
switch(choice)
{
case1:
Create();
break;
case2:
Add();
break;
case3:
Find();
break;
case4:
Alter();
break;
case5:
Delete();
break;
case6:
List();
break;
case0:
quit();
exit(0);
break;
default:
printf("输入有误!
请重新输入\n");
break;
}
printf("是否继续YorN?
\n");
do
{
scanf("%c",&yes_no);
}while(yes_no!
='Y'&&yes_no!
='y'&&yes_no!
='N'&&yes_no!
='n');
}while(yes_no=='Y'||yes_no=='y');
}
//初始化
voidInitiate()
{
if((head=(TEL*)malloc(sizeof(TEL)))==NULL)exit
(1);
head->next=NULL;
}
//显示菜单
voidMenu()
{
printf("**************欢迎使用通讯录系统**************");
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("请输入0~6\n");
}
//创建通讯录
voidCreate()
{
TEL*p1[100],*p2;
intm,i;
printf("请输入创建个数:
");
scanf("%d",&m);
for(i=1;i<=m;i++)
{
p1[i]=(TEL*)malloc(sizeof(TEL));
printf("请输入第%d条信息!
\n",i);
printf("姓名:
\n");
scanf("%s",&p1[i]->name);
printf("街道:
\n");
scanf("%s",&p1[i]->street);
printf("电话:
\n");
scanf("%s",&p1[i]->tel);
printf("城市:
\n");
scanf("%s",&p1[i]->city);
printf("省份:
\n");
scanf("%s",&p1[i]->province);
printf("邮编:
\n");
scanf("%s",&p1[i]->eip);
p1[i]->next=NULL;
if(head->next==NULL)
head->next=p1[i];
else
{
for(p2=head;p2->next!
=NULL;p2=p2->next);//找到结点尾
p2->next=p1[i];
}
}
printf("信息已添加!
\n");
return;//保存到链表
}
//添加通讯录信息
voidAdd()
{
TEL*p,*q;
if((q=(TEL*)malloc(sizeof(TEL)))==NULL)exit
(1);
printf("请输入要添加的信息!
\n");
printf("姓名:
\n");//添加信息
scanf("%s",&q->name);
printf("街道:
\n");
scanf("%s",q->street);
printf("电话:
\n");
scanf("%s",q->tel);
printf("城市:
\n");
scanf("%s",q->city);
printf("省份:
\n");
scanf("%s",q->province);
printf("邮编:
\n");
scanf("%s",q->eip);
for(p=head;p->next!
=NULL;p=p->next);
p->next=q;
q->next=NULL;
printf("此信息已添加!
");
return;
}
//查找通讯录信息
voidFind()
{
TEL*p;
charname[50];
if(head->next==NULL)
{
printf("此通讯录为空!
\n");
return;
}
printf("请输入要查找的姓名:
\n");
scanf("%s",&name);
for(p=head->next;p!
=NULL;p=p->next)
{
if(strcmp(p->name,name)==0)
{
printf("姓名\t街道\t城市\t省份\t邮编\t电话\n");
printf("%s\t%s\t%s\t%s\t%s\t%s\n",p->name,p->street,p->city,p->province,p->eip,p->tel);
}
elseif(p->next==NULL)
printf("无此信息!
\n");
}
}
//修改通讯录信息
voidAlter()
{
charname[50];//先查找后删除
TEL*p,*p1;
if(head->next==NULL)
{
printf("此通讯录为空!
\n");
return;
}
printf("请输入要修改的姓名:
\n");
scanf("%s",name);
for(p=head->next;p!
=NULL;p=p->next)
{
if(strcmp(p->name,name)==0)
break;
elseif(p->next==NULL)
{
printf("无此信息!
\n");
return;
}
}
p1=(TEL*)malloc(sizeof(TEL));
printf("姓名:
\n");//添加信息
scanf("%s",p1->name);
strcpy(p->name,p1->name);
printf("街道:
\n");
scanf("%s",p1->street);
strcpy(p->street,p1->street);
printf("电话:
\n");
scanf("%s",p1->tel);
strcpy(p->tel,p1->tel);
printf("城市:
\n");
scanf("%s",p1->city);
printf("省份:
\n");
scanf("%s",p1->province);
strcpy(p->city,p1->city);
printf("邮编:
\n");
scanf("%s",p1->eip);
strcpy(p->eip,p1->eip);
printf("此信息已修改!
\n");
//显示修改的信息
printf("姓名\t街道\t城市\t省份\t邮编\t电话\n");
printf("%s\t%s\t%s\t%s\t%s\n",p->name,p->street,p->city,p->province,p->eip,p->tel);
free(p1);
}
//删除通讯录信息
voidDelete()
{
charname[50];//先查找后删除
TEL*p=head->next,*p1=head->next,*p2;
if(head->next==NULL)
{
printf("此通讯录为空!
\n");
return;
}
printf("请输入要删除的姓名:
\n");
scanf("%s",name);
while((strcmp(p->name,name)!
=0)&&p->next!
=NULL)
{
p1=p;
p=p->next;
}
if(strcmp(name,p->name)==0)//输出删除信息
{
if(p==head->next&&p->next!
=NULL)
head->next=p->next;
elseif(p==head->next&&p->next==NULL)
{
head->next=p->next;
printf("信息已删除,先此通讯录为空!
!
\n");
return;
}
else
p1->next=p->next;
}
else
{
printf("此信息不存在!
!
!
\n");
return;
}
printf("此信息已删除!
");
printf("姓名\t街道\t城市\t省份\t邮编\t电话\n");
for(p2=head->next;p2!
=NULL;p2=p2->next)
printf("%s\t%s\t%s\t%s\t%s\n",p2->name,p2->street,p2->city,p2->province,p2->eip,p2->tel);
}
//显示所有记录
voidList()
{
TEL*p;
if(head->next==NULL)
{
printf("此通讯录中无记录!
\n");
return;
}
printf("姓名\t街道\t城市\t省份\t邮编\t电话\n");
for(p=head->next;p!
=NULL;p=p->next)
printf("%s\t%s\t%s\t%s\t%s\n",p->name,p->street,p->city,p->province,p->tel,p->eip);
}
//退出通讯录
voidquit()
{
printf("************感谢您的使用************\n");
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统