通讯录管理系统实例课案.docx
- 文档编号:10665486
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:53
- 大小:1.53MB
通讯录管理系统实例课案.docx
《通讯录管理系统实例课案.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统实例课案.docx(53页珍藏版)》请在冰豆网上搜索。
通讯录管理系统实例课案
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2016年春季学期
C程序设计课程设计
题目:
通讯录管理系统
专业班级:
信息与计算科学15级1班
姓名:
学号:
指导教师:
成绩:
通讯录管理系统
摘要
通讯录管理系统主要包括五大模块:
信息录入模块;信息查询模块;信息查看模块;信息修改模块;信息统计模块。
采取模块化结构方案,通过链表与文件的方式,是实用性与美观性并存的系统。
该系统适应现代高科技信息管理尺度的要求,推动通讯录联系人管理走向科学化、规范化。
设计的指导思想是一切为用户着想,界面美观大方,操作简单明了,而且作为一个实用的应用程序要有良好的容错性,在用户出现误操作时能及时地给出警告,以便用户及时改正。
关键词:
通讯录,查询,链表,文件,管理
目录
1题目要求1
2需求分析2
2.1产品需求概述2
2.1.1功能简介2
2.1.2运行环境2
2.2功能需求2
2.2.1信息录入功能2
2.2.2信息查询功能2
2.2.3信息查看功能2
2.2.4信息修改功能2
2.2.5信息统计功能3
2.2.6不支持的功能3
3概要设计7
3.1系统体系结构图7
3.2模块描述8
4详细设计11
4.1系统主要函数11
4.2函数详细说明11
4.2.1ShowMenu函数(主界面函数)11
4.2.2HeadShow函数(界面顶端显示函数)11
4.2.3FileLoading函数(文件判断函数)12
4.2.4add函数(添加使用者信息函数)12
4.2.5SaveChange函数(保存修改函数)13
4.2.6AllShow函数(综合显示信息函数)14
4.2.7AllNum函数(显示记录性条数函数)15
4.2.8CheckFace函数(显示信息查询界面函数)16
4.2.9Selelctname函数(通过姓名查询信息函数)17
4.2.10Selelctphone函数(通过电话号码查询信息函数)18
4.2.11Selelctall函数(通过任意信息查询信息函数)19
4.2.12Change函数(修改使用者信息函数)20
4.2.13ExirShow函数(显示退出界面函数)21
4.2.14ErrorShow函数(显示发生错误时界面)21
4.2.15main函数(主函数)21
5系统测试23
5.1系统欢迎界面23
5.2信息录入界面23
5.3信息查询界面24
5.3.1信息按姓名查询界面24
5.3.2信息按电话号码查询界面25
5.3.3信息综合查询界面25
5.4信息查看界面26
5.5信息修改界面26
5.6信息修改界面27
5.7系统退出界面27
6总结28
参考文献29
致谢30
附录:
源程序31
1题目要求
(1)以通讯录管理系统为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型,系统以菜单方式工作。
(2)完成软件结构设计和算法设计。
(3)完成系统的软件开发和测试工作。
(4)撰写设计说明书。
(5)做好答辩工作。
2需求分析
2.1产品需求概述
2.1.1功能简介
为方便广大群众管理通讯录,设有录入、查询、查看、修改、统计五大功能,给使用者便利生活。
2.1.2运行环境
(1)硬件环境:
最低配置:
CPU:
INTEL奔腾4及以上
内存:
128MB及以上
硬盘:
10GB及以上
最佳配置:
CPU:
INTEL酷睿i5及以上
内存:
2GB及以上
硬盘:
160GB及以上
(2)软件环境:
操作系统:
MicrosoftWindows系列操作系统(WindowsCE除外)。
2.2功能需求
本系统支持信息录入、查询、查看、修改、统计五大功能。
2.2.1信息录入功能
对每个使用者进行进行录入,实现“一人一档”,录入使用者的姓名、性别、生日、电话号码、邮编、地址。
2.2.2信息查询功能
对已录入的使用者信息进行查询,包括按姓名查询、按电话号码查询、综合查询。
2.2.3信息查看功能
对已录入的使用者信息进行查看。
2.2.4信息修改功能
对已录入的使用者信息进行修改。
首先需输入修改者姓名,其次可进行删除与修改两个命令。
2.2.5信息统计功能
对已录入的使用者信息进行统计。
可查看记录条数共有多少,同时可检索移动、联通、电信用户的数量。
2.2.6不支持的功能
暂未发现
2.3数据描述
输入输出数据的类型及格式。
输入数据:
数据类型:
姓名
字符型
性别
字符型
生日
字符型
电话
字符型
邮编
字符型
地址
字符型
输出数据
数据类型
姓名
字符型
性别
字符型
生日
字符型
电话
字符型
邮编
字符型
地址
字符型
数据流图:
图1.通讯录管理系统顶层DFD
图2.通讯录管理系统0层数据流图
数据字典:
数据流名称:
联系人和联系方式
别名:
使用者信息
描述:
使用者录入信息时填写的信息
定义:
联系人和联系方式=姓名+性别+生日+电话号码+邮编+地址
数据流名称:
待修改信息
别名:
无
描述:
使用者修改信息时需修改的信息
定义:
待修改信息=姓名+性别+生日+电话号码+邮编+地址
数据流名称:
检索条件
别名:
无
描述:
检索时填写信息
定义:
检索条件=姓名或性别或生日或电话号码或邮编或地址
数据流名称:
符合要求的条目
别名:
无
描述:
符合检索要求的条目
定义:
符合要求的条目=姓名+性别+生日+电话号码+邮编+地址
加工说明:
录入用户信息:
if(文件正常打开)
输入用户信息;
if(输入字符为E或e)
结束
修改用户信息:
if(输入姓名与录入用户姓名相同)
if(删除)
删除该环节;
else
printf("姓名:
");scanf("%s",p1->name);
printf("性别:
");scanf("%s",p1->sex);
printf("生日:
");scanf("%s",p1->birthday);
printf("电话:
");scanf("%s",p1->phone);
printf("邮编:
");scanf("%s",p1->postcode);
printf("地址:
");scanf("%s",p1->addr);
查询检索条目是否与现有数据匹配:
if(检索条件与查找信息匹配)
printf(匹配信息)
链表后移;
if(到达链表末尾)
结束
3概要设计
软件概要设计是从总体上把握系统设计框架,他包括模块划分、处理流程和接口设计,概要设计说明书对上述内容作了总体描述,体现了用户需求与应用系统实现之间的关系,在设计过程中起到了提纲挈领的作用。
通讯录管理系统,分为五大模块:
信息录入模块、信息查询模块、信息查看模块、信息修改模块、信息统计模块。
采取全局变量的方式,统筹模块中的函数。
使用者信息包括姓名、性别、生日、电话号码、邮编、地址。
其中信息查询模块可通过使用者姓名、电话号码任一项来查询使用者信息,便于从诸多信息中筛选出所寻找的信息。
而信息查看模块可直接查看所有录入的使用者信息。
信息修改模块需通过使用者姓名来选择修改或是删除操作。
信息统计模块可以统计出当前已录入的数量及移动、联通、电信用户已录入的数量。
3.1系统体系结构图
本部分对系统需要实现的功能进行模块化,并给出模块和模块之间的关系,需要使用流程图来对系统的整体结构进行描述,例如图
图3.系统体系结构图
3.2模块描述
模块1:
信息录入
名称
信息录入
标识
add
子系统名称
信息录入
系统
名称
通讯录管理系统
接 口
说 明
输入
无
输出
无
功 能
说 明
录入使用者信息的平台,包括使用者姓名、性别、生日、电话号码、邮编、地址
运行环
境说明
Windows操作系统系列
调用关
系说明
调用模块
无
被调用模块
无
模块2:
信息查询
名称
信息查询
标识
CheckFace
子系统名称
信息查询
系统
名称
通讯录管理系统
接 口
说 明
输入
无
输出
无
功 能
说 明
通过使用者姓名、电话号码或任一项信息,查询已录入的使用者信息
运行环
境说明
Windows操作系统系列
调用关
系说明
调用模块
无
被调用模块
无
模块3:
信息查看
名称
信息查看
标识
AllShow
子系统名称
信息查看
系统
名称
通讯录管理系统
接 口
说 明
输入
无
输出
无
功 能
说 明
查看已录入的使用者信息
运行环
境说明
Windows操作系统系列
调用关
系说明
调用模块
无
被调用模块
无
模块4:
信息修改
名称
信息修改
标识
Change
子系统名称
信息修改
系统
名称
通讯录管理系统
接 口
说 明
输入
无
输出
无
功 能
说 明
通过使用者姓名,修改该使用者全部个人信息
运行环
境说明
Windows操作系统系列
调用关
系说明
调用模块
无
被调用模块
无
模块5:
信息统计
名称
信息统计
标识
AllNum
子系统名称
信息统计
系统
名称
通讯录管理系统
接 口
说 明
输入
无
输出
无
功 能
说 明
统计已录入的使用者信息的总条数,及移动、联通、电信用户总条数
运行环
境说明
Windows操作系统系列
调用关
系说明
调用模块
无
被调用模块
无
4详细设计
4.1系统主要函数
函数名称
函数功能
ShowMenu
显示主要界面
HeadShow
输出表头
FileLoading
读取文件数据
add
添加信息
SaveChange
保存修改
AllShow
综合显示
AllNum
显示总记录条数
CheckFace
显示消息修改界面
Selelctname
通过使用者姓名查询使用者信息
Selelctphone
通过使用者电话号码查询使用者信息
Selelctall
通过使用者任意信息查询使用者信息
Change
通过使用者姓名修改使用者信息
ExirShow
显示退出界面
ErrorShow
显示错误界面
main
主函数
4.2函数详细说明
4.2.1ShowMenu函数(主界面函数)
【功能】
显示主要界面,其中包括信息录入、信息查询、信息查看、信息修改、信息统计五大模块。
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
无算法要求
4.2.2HeadShow函数(界面顶端显示函数)
【功能】
输出界面顶端
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
无算法要求
4.2.3FileLoading函数(文件判断函数)
【功能】
读取文件数据,判断文件是否操作错误
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
图4.文件判断函数结构图
4.2.4add函数(添加使用者信息函数)
【功能】
添加使用者信息,例如:
使用者姓名、使用者性别、使用者生日、使用者电话号码、使用者邮编、使用者地址。
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
该算法需要一个字符型变量ch用来判断是否结束信息输入。
在执行算法时,首先判断参数是否为“e”或“E”。
如果是,则结束信息输入;如果不是,则重新进行信息输入操作。
以上算法可以用流程图描述为
图5.添加使用者信息函数结构图
4.2.5SaveChange函数(保存修改函数)
【功能】
使用者修改信息结束后,保存修改信息
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
图6.保存修改函数结构图
4.2.6AllShow函数(综合显示信息函数)
【功能】
显示用户的信息,包括姓名、性别、生日、电话号码、邮编、地址。
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
图7.综合显示信息函数结构图
4.2.7AllNum函数(显示记录性条数函数)
【功能】
显示用户信息的总记录条数
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
该算法需要一个变量i用来显示总记录条数。
在执行算法时,首先将p1指向链表头,从头检索链表,然后判断p1是否为空值。
如果是,则输出i的值;否则进行“i++”指令。
以上算法可以用流程图描述为
图8.显示记录性条数函数结构图
4.2.8CheckFace函数(显示信息查询界面函数)
【功能】
显示消息查询界面,其中包括按姓名查询、按电话号码查询、综合查询
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
无算法要求
4.2.9Selelctname函数(通过姓名查询信息函数)
【功能】
通过使用者姓名查询使用者信息,显示被查询者的全部信息
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
该算法需要一个变数i用来显示检索符合要求条数,一个变量FindName用来检索查询信息。
在执行算法时,首先将输入变量FindName用文件中保存的变量p1->name进行判断是否相同。
如果相同,则输出该变量p1->name所对应的使用者已输入信息,并进行“i++”指令,同时输出变量“i”;否则回到信息查询界面。
以上算法可以用流程图描述为
图9.通过姓名查询信息函数结构图
4.2.10Selelctphone函数(通过电话号码查询信息函数)
【功能】
通过使用者电话号码查询使用者信息,显示被查询者的全部信息
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
该算法需要一个变量i用来显示检索符合要求条数,一个变量Phone用来检索查询信息。
在执行算法时,首先将输入变量Phone用文件中保存的参量p1->name进行判断是否相同。
如果相同,则输出该变量p1->name所对应的使用者已输入信息,并进行“i++”指令,同时输出变量“i”;否则回到信息查询界面。
以上算法可以用流程图描述为
图10.通过电话号码查询信息函数结构图
4.2.11Selelctall函数(通过任意信息查询信息函数)
【功能】
通过使用者任意信息查询使用者信息,显示被查询者的全部信息
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
该算法需要一个变量i用来显示检索符合要求条数,一个变量all用来检索查询信息。
在执行算法时,首先将输入参量all与文件中保存的参量p1->name进行判断是否相同。
如果相同,则输出该参量p1->name所对应的使用者已输入信息,并进行“i++”指令,同时输出参量“i”;否则回到信息查询界面。
以上算法可以用流程图描述为
图11.通过任意信息查询信息函数结构图
4.2.12Change函数(修改使用者信息函数)
【功能】
通过使用者姓名,修改使用者全部信息
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
该算法需要一个变量ChangeName用来寻找需修改条目,一个变量changekey用来判断删除或是修改,一个变量i用来判断是否修改信息,一个变量y用来判断是否检索到需修改条目。
在执行算法时,首先将输入变量ChangeName与文件中保存的变量p1->name进行判断是否相同。
如果不同,则通过变量y等于0来输出“对不起,没有找到要删除的通讯名单,请检查你要修改的姓名是否正确”,否则输出检索到的使用者信息,同时显示“您要修改的是这条记录吗?
1---是|2---否”,此时通过输入变量changekey来判断删除或修改。
如果输入变量为1,则删除该使用者信息;如果输入变量为2,则修改该使用者信息,否则回到主界面。
以上算法可以用流程图描述为
图12.修改使用者信息函数结构图
4.2.13ExirShow函数(显示退出界面函数)
【功能】
显示退出通讯录管理系统界面
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
无算法要求
4.2.14ErrorShow函数(显示发生错误时界面)
【功能】
发生错误时,提醒提醒使用者的界面,例如输入数据不符合定义或者输入的数据无法进行函数操作等
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
无算法要求
4.2.15main函数(主函数)
【功能】
主函数
【参数】
无参数要求
【返回值】
无返回值
【算法描述】
在执行算法时,首先判断是否存在文件。
如果无,则输出“文件操作错误,请检查是否有权限操作文件!
”;否则,输出ShowMenu函数。
接着,通过输入参数key,判断执行函数。
若为1,则执行add函数;若为2,则执行CheckFace函数;若为3,则执行AllShow函数;若为4,则执行Change函数;若为5,则执行AllNum函数;若为6,则执行ExirShow函数;否则,执行ErrorShow函数。
在CheckFace函数执行时,通过输入参数Check_key,判断执行函数。
若为1,则执行Selelctname函数;若为2,则执行Selelctphone函数;若为3,则执行Selelctall函数;若为4,则返回主界面;否则,执行ErrorShow函数。
以上算法可以用流程图描述为
图13.主函数结构图
5系统测试
5.1系统欢迎界面
运行结果
图14.系统欢迎界面
5.2信息录入界面
主界面输入1,进入信息修改界面,运行结果
图15.信息录入界面
5.3信息查询界面
主界面输入2,进入信息查询界面,运行结果
图16.系信息查询界面
5.3.1信息按姓名查询界面
信息查询界面输入1,进入信息按姓名查询界面,运行结果
图17.信息按姓名查询界面
5.3.2信息按电话号码查询界面
信息查询界面输入2,进入信息按电话号码查询界面,运行结果
图18.信息按电话号码查询界面
5.3.3信息综合查询界面
信息查询界面输入3,进入信息综合查询界面,运行结果
图19.信息综合查询界面
5.4信息查看界面
主界面输入3,进入信息查看界面,运行结果
图20.信息查看界面
5.5信息修改界面
主界面输入4,进入信息修改界面,运行结果
图21.信息修改界面
5.6信息修改界面
主界面输入5,进入信息修改界面,运行结果
图22.信息修改界面
5.7系统退出界面
主界面输入6,进入系统退出界面,运行结果
图23.系统退出界面
6总结
通过C程序设计这门课,使我对《C语言》这门课程有了更深一步的了解。
它是计算机程序设计的重要理论技术基础,在我们计通院的计算机科学与技术专业的学习中占据着十分重要的地位。
同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有极强的实践能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
在遇到不懂的时候,要善于请教他认,不要认为自己什么都懂,这种想法是极其错误的,只有不断吸收他人好的方面,充实自己,自己才能不断的进步。
计算机是是一门特殊的专业,书上学到的,永远要小于自己实践中收获的知识。
经过连续几日的不断探索与辛苦努力,对许多平时不大关注的指令有了更为深刻的了解。
同时在使用C语言时,也能结合DOS控制指令,对程序的运算进行简化,便于程序的运算。
对于该通讯录管理系统,按照模块的方式来编写,每一个模块都是一个函数,便于查看,思路清晰,运行简捷,封面美观。
其中在程序中设立了背景颜色指令与字体颜色指令,增加的本程序的魅力。
同时在执行每一个函数之前,都进行清屏指令,使得系统更为美观。
通过对C程序设计课程的逐步理解,让我明白生成一个系统,需要从多个方面去考虑,编程时则需逐步进行,以模块的形式来思考问题并解决问题,同时要以函数的方式来生成所需系统,做到严谨而简洁,快捷而不失条理。
参考文献
[1]王为青,刘变红.C语言高级编程及实例剖析[M].北京:
人民邮电出版社,2007
[2]张长海.C语言程设计[M].北京:
高等教育出版社,2006
[3]陈建新,李志敏.数据结构实验指导与课程设计教程[M].北京:
科学出版社,2010
[4]吴玉蓉,李劲.数据结构(C语言版)[M].北京:
中国水利水电出版社,2008
[5]谭浩强.C语言程设计[M].北京:
清华大学出版社,2005
[6]王连相.C/C++程序设计教程(第二版)[M].中国铁道出版社,2011
致谢
通过本次课设,首先要感谢老师,给了我一次接触专业应用的机会,通过此次设计,让我更清楚得认识到程序在现实中各行各业的应用之广泛,更加清楚得认识到我学习的方向。
同时也让我明白设计一个系统时所需注意的诸多方面,比如从函数到模块,再从模块到整个系统;注意谨慎使用全局变量,便于调控系统及减少出错率;设计系统不只是编程的问题,还需要通过调查诸多文献资料,从硬件环境、软件环境等方面来思考。
其次要感谢刘伟强同学的大力配合,对文档编辑一丝不苟,流程图做到明了,函数描述做到精确,对图片各种注意点做到尽善尽美,以严谨的态度对待,以高标准严格要求自己。
附录:
源程序
#include
#include
#include
structSign{
charname[8];
charsex[4];
charbirthday[12];
charphone[11];
charpostcode[7];
charaddr[30];
structSign*next;
}pe;
charPhoneCop[4];
//结构体
structSign*p1,*p2,*head;
FILE*fp;
voidShowMenu(){
system("color1F");
printf("#################通讯录管理系统v1.0###################\n");
printf("#####################################################################\n");
printf("##\n");
printf("#1--
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统 实例