通讯录管理系统.docx
- 文档编号:7832769
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:43
- 大小:338.02KB
通讯录管理系统.docx
《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(43页珍藏版)》请在冰豆网上搜索。
通讯录管理系统
内蒙古科技大学
本科生课程设计说明书
题目:
C语言课程设计
——通讯录管理系统
学生姓名:
学号:
专业:
计算机科学与技术
班级:
指导教师:
***
日期:
2015年1月8日
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
通讯录管理系统
指导教师
孙涛
时间
2015.1.5——2015.1.9
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
通讯录管理系统
现有一批通讯录的数椐,要求输入计算机并存放在内存中,然后增加若干个新通讯录的记录,并可输出通讯录清单,实现文件存盘和读入文件进行修改的功能。
通讯录的基本信息包括编号,姓名,电话号码,QQ号码,电子邮件,通讯地址。
要求设计菜单来调用其各功能模块:
v新建文件、打开文件、保存信息到文件
v输入记录、输出记录
v查询记录(至少具有两种查询方式,例如以姓名查询和以电话号码查询)
v修改、插入和删除记录
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
第一章需求分析
1.1引言
随着手机的普遍化,人与人的联系几乎使用手机或电话。
这样,每人都有一个电话号码,这就需要对电话号码进行管理。
而写在纸质的本子上,会给查找带来不便,所以,这是需要软件来进行管理。
1.2任务概述
现有一批通讯录的数椐,要求输入计算机并存放在内存中,然后增加若干个新通讯录的记录,并可输出通讯录清单,实现文件存盘和读入文件进行修改的功能。
1.3数据描述
1.采用结构体来存储通讯录的数据
2.通讯录的数据包括:
编号,姓名,电话号码,QQ号码,电子邮件,通讯地址
3.编号输入时为1--10的数字
4.电子邮件的格式为:
**********
5.姓名和通讯地址表示方式:
拼音或汉字
6.姓名、电话号码、QQ号码、电子邮件、通讯地址的长度不可超出20
1.4功能需求
1.建立记录
2.输入记录、
3.输出记录
4.查询记录(至少具有两种查询方式)
5.修改记录
6.插入记录
7.删除记录
8.存入文件
1.5性能需求
1.具有基本提示判断。
2.对数据具有基本处理功能。
3.对管理数据输入输出。
1.6运行需求
1、输入信息要严格按照提示顺序进行输入。
2、输入选择项功能,要在选项范围内进行选择。
3、输入的信息严格按照要求的格式输出。
4、输入的信息必须清晰,不可连续不断。
5、在Vc和CodeBlocks中,均可运行。
1.7任务计划
本程序是以为了更好地管理通讯录信息而写的程序。
目的是以以一种更系统的操作来管理通讯录信息,所以本程序的输入是以数据和文字两种形式输入的,输出也是一样。
而本程序可以对通讯录信息输入和输出,对信息进行删除和修改并可以对信息进行浏览使使用者更方便的浏览所输入的信息。
还可以对信息尽查找,方便使用者对信息进行提取。
对程序进行调试时,如果有输入错的信息的时候,本程序会对使用者进行提示,而让使用者对信息进行重新输入。
对信息的录入要完善详细,种类齐全。
第二章概要设计
2.1总体设计
2.2数据类型设计(或数据结构设计)
typedefstructnode
{
intnum;//编号
charname[20];//姓名
charphone[20];//电话号
charQQ[20];//QQ号
charemail[20];//电子邮件
charaddress[20];//通讯地址
structnode*next;
}JD;//结构体储存
2.3接口设计
表2.1:
函数列表
函数名
函数格式
函数功能
creat_address_book
JD*creat_address_book()
建立通讯录信息
scan_message
voidscan_message(JD*head)
浏览通讯录信息
search_num
voidsearch_num(JD*head)
按编号查询信息
search_name
voidsearch_name(JD*head)
按姓名查询信息
insert
voidinsert(JD*head)
添加通讯录信息
delet
voiddelet(JD*head)
删除通讯录信息
change_message
voidchange_message(JD*head)
修改通讯录信息
save
voidsave(JD*head)
将信息存入文件
2.4运行界面设计
printf("\t");
printf("\t");
printf("\t");
printf("**********************************");
printf("\n");
printf("\t");
printf("\t");
printf("\t");
printf("***欢迎进入通讯录管理系统***");
printf("\n");
printf("\t");
printf("\t");
printf("\t");
printf("**********************************");
printf("\n");
printf("\t");
printf("\t");
printf("");//6个空格
printf("\n");
printf("\n");
printf("\n");
printf("\t");
printf("\*******************************************************************");
printf("\n");
printf("\t");
printf("\*****1、建立通讯录信息*****");
printf("\t");
printf("\t");
printf("*****2、浏览通讯录信息*****");
printf("\n");
printf("\t");
printf("*****3、按编号查询信息*****");
printf("\t");
printf("\t");
printf("*****4、添加通讯录信息*****");
printf("\t");
printf("\t");
printf("*****5、删除通讯录信息*****");
printf("\t");
printf("\t");
printf("*****6、修改通讯录信息*****");
printf("\n");
printf("\t");
printf("*****7、文件中的信息*******");
printf("\t");
printf("\t");
printf("*****0、退出通讯录系统*****");
printf("\t");
printf("\t");
printf("*******************************************************************");
printf("\n");
printf("\t");
printf("请输入序号:
");
运行后如图2.1所示:
图2.1:
运行界面
第三章详细设计
3.1输入模块设计
JD*creat_address_book()
{
JD*head;//指向结构体数组的指针
JD*p;//指向结构体数组的指针
JD*s;//指向结构体数组的指针
head=(JD*)malloc(sizeof(JD));//让head指向新建节点
p=head;
s=(JD*)malloc(sizeof(JD));//让s指向新建节点
printf("\t");
printf("请输入通讯录中信息:
");
printf("\n");
printf("\t");
printf("以编号为0或姓名为#结束:
");
printf("\n");
printf("\n");
printf("\t");
printf("编号(1-10):
");
scanf("%d",&s->num);
printf("\t");
printf("姓名(如he):
");
scanf("%s",&s->name);
printf("\t");
printf("电话号码:
");
scanf("%s",&s->phone);
printf("\t");
printf("QQ:
");
scanf("%s",&s->QQ);
printf("\t");
printf("电子邮箱(如**********):
");
scanf("%s",&s->email);
printf("\t");
printf("地址(如neimeng):
");
scanf("%s",&s->address);
printf("\n");
while((s->num!
=0)&&(s->name[20]!
='#'))//编号为0或名字为#退出输入
{
p->next=s;//让s指向下一个节点
p=s;
s=(JD*)malloc(sizeof(JD));
printf("\t");
printf("编号(1-10):
");
scanf("%d",&s->num);
printf("\t");
printf("姓名(如he):
");
scanf("%s",&s->name);
printf("\n");
}
p->next=NULL;//将新建节点置为表尾
returnhead;
}
3.2输出模块设计
voidscan_message(JD*head)
{
JD*p;
printf("\t");
printf("通讯录现有信息:
");
printf("\n");
printf("\n");
p=head->next;
while(p!
=NULL)
{
printf("\t");
printf("编号:
");
printf("%d",p->num);
printf("\n");
printf("\t");
printf("姓名:
");
printf("%s",p->name);
printf("\n");
printf("\t");
printf("电话号码:
");
printf("%s",p->phone);
printf("\n");
printf("\t");
printf("QQ:
");
printf("%s",p->QQ);
printf("\n");
printf("\t");
printf("电子邮箱:
");
printf("%s",p->email);
printf("\n");
printf("\t");
printf("地址:
");
printf("%s",p->address);
printf("\n");
printf("\n");
p=p->next;
}
}
3.3查找模块设计
1.按编号查找:
voidsearch_num(JD*head)//结构体指针变量做函数形参
{
JD*p;
inti;
p=head->next;//让头指针指向待删除节点p的下一节点
printf("\t");
printf("请输入你要查询人的编号:
\n");
printf("\t");
scanf("%d",&i);
while(p!
=NULL)
{
if(p->num==i)
{
printf("\t");
printf("输出此人信息:
");
printf("\n");
printf("\n");
printf("\t");
printf("编号:
");
printf("%d",p->num);
printf("\n");
printf("\t");
printf("姓名:
");
printf("%s",p->name);
printf("\n");
printf("\t");
printf("电话号码:
");
printf("%s",p->phone);
printf("\n");
printf("\t");
printf("QQ:
");
printf("%s",p->QQ);
printf("\n");
printf("\t");
printf("电子邮箱:
");
printf("%s",p->email);
printf("\n");
printf("\t");
printf("地址:
");
printf("%s",p->address);
printf("\n");
break;
}
else
p=p->next;//让p指向下一个节点
}
if(p==NULL)
{
printf("\t");
printf("查无此人!
");
printf("\n");
}
}
2.按姓名查找:
voidsearch_name(JD*head)//结构体指针变量做函数形参
{
JD*p;
chars[20];
p=head->next;//让头指针指向节点p的下一节点
printf("\t");
printf("请输入你要查询人的姓名(如he):
");
printf("\n");
printf("\t");
scanf("%s",&s);
while(p!
=NULL)
{
if(strcmp(p->name,s)==0)
{
printf("\t");
printf("输出此人信息:
");
printf("\n");
printf("\n");
printf("\t");
printf("编号:
");
printf("%d",p->num);
printf("\n");
printf("\t");
printf("姓名:
");
printf("%s",p->name);
printf("\n");
printf("\t");
printf("电话号码:
");
printf("%s",p->phone);
printf("\n");
printf("\t");
printf("QQ:
");
printf("%s",p->QQ);
printf("\n");
printf("\t");
printf("电子邮箱:
");
printf("%s",p->email);
printf("\n");
printf("\t");
printf("地址:
");
printf("%s",p->address);
printf("\n");
break;
}
else
p=p->next;//让p指向下一个节点
}
if(p==NULL)
{
printf("\t");
printf("查无此人!
");
printf("\n");
}
}
3.4整理模块设计
1.删除信息
voiddelet(JD*head)//结构体指针变量做函数形参
{
JD*p;
JD*q;
JD*r;
intnum;
p=head->next;//让头指针指向待删除节点p的下一节点
r=head;
printf("\t");
printf("请输入你要删除人的编号:
");
printf("\n");
printf("\t");
scanf("%d",&num);
while(p!
=NULL)
{
if(p->num==num)//若当前节点的节点值为num,找到待删除节点
{
r->next=p->next;//让前一节点的指针域指向待删节点的下一节点
q=p;
printf("\t");
printf("输出被删除人的信息:
");
printf("\n");
printf("\n");
printf("\t");
printf("编号:
");
printf("%d",p->num);
printf("\n");
printf("\t");
printf("姓名:
");
printf("%s",p->name);
printf("\n");
printf("\t");
printf("电话号码:
");
printf("%s",p->phone);
printf("\n");
printf("\t");
printf("QQ:
");
printf("%s",p->QQ);
printf("\n");
printf("\t");
printf("电子邮箱:
");
printf("%s",p->email);
printf("\n");
printf("\t");
printf("地址:
");
printf("%s",p->address);
printf("\n");
free(q);
printf("\t");
printf("再次进行浏览,确保此人已删除!
");
printf("\n");
break;
}
else
{
r=p;//在q中保存当前节点的下一节点
p=p->next;//让p指向下一个节点
}
}
if(p==NULL)//若链表为空,则退出程序
{
printf("\t");
printf("查无此人!
");
printf("\n");
}
}
2.插入信息
voidinsert(JD*head)//结构体指针变量做函数形参
{
JD*p;
JD*s;
JD*r;
p=head;
r=head->next;//让头指针指向节点p的下一节点
s=(JD*)malloc(sizeof(JD));//让s指向待插入节点
printf("\t");
printf("请输入你添加人的信息:
");
printf("\n");
printf("\t");
printf("以编号为0结束或姓名为#结束:
");
printf("\n");
printf("\n");
printf("\t");
printf("编号(1-10):
");
scanf("%d",&s->num);
printf("\t");
printf("姓名(如he):
");
scanf("%s",&s->name);
printf("\t");
printf("电话号码:
");
scanf("%s",&s->phone);
printf("\t");
printf("QQ:
");
scanf("%s",&s->QQ);
printf("\t");
printf("电子邮箱(如**********):
");
scanf("%s",&s->email);
printf("\t");
printf("地址(如neimeng):
");
scanf("%s",&s->address);
printf("\n");
while((s->num!
=0)&&(s->name[20]!
='#'))
{
s->next=r;
p->next=s;//为带插入节点的指针域赋值为S
p=s;
s=(JD*)malloc(sizeof(JD));
printf("\t");
printf("编号(1-10):
");
scanf("%d",&s->num);
printf("\t");
printf("姓名(如he):
");
scanf("%s",&s->name);
printf("\t");
printf("电话号码:
");
scanf("%s",&s->phone);
printf("\t");
printf("QQ:
");
scanf("%s",&s->QQ);
printf("\t");
printf("电子邮箱(如**********):
");
scanf("%s",&s->email);
printf("\t");
printf("地址(如neimeng):
");
scanf("%s",&s->address);
printf("\n");
}
}
3.修改信息
voidchange_message(JD*head)//结构体指针变量做函数形参
{
JD*s;
intnum;
s=head;
if(s==NULL)//若在头节点前插入新节点
{
printf("\t");
printf("查无此人,修改失败!
");
pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统