C语言通讯录管理系统课程设计报告.docx
- 文档编号:29876815
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:14
- 大小:231.70KB
C语言通讯录管理系统课程设计报告.docx
《C语言通讯录管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言通讯录管理系统课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
C语言通讯录管理系统课程设计报告
西安郵電學院
高级语言课程设计报告书
系部名称
通信工程学院
学生姓名
张博
专业名称
电子信息科学与技术
班级
电科0901班
学号
04092018
指导教师
夏虹
时间
2010年11月22日至
2010年12月03日
实验题目个人通讯录管理系统
一、实验目的
设计一个个人通讯录管理系统,拥有对数据的各种操作功能,实现对通讯录的管理,从而巩固C语言程序设计
二、实验内容
个人通讯录管理系统需求分析
个人通讯录管理系统总体设计
个人通讯录管理系统详细设计
个人通讯录管理系统模块设计
个人通讯录管理系统系统集成
个人通讯录管理系统测试运行
三、需求分析
对于一个通用的个人通讯录管理系统而言,用户首先要能够对通讯录中的数据进行录入,删除,更新和输出等操作,其次要求对通讯录中的数据进行查找操作。
根据上述分析,在后面给出该个人通讯录的主要实现功能。
⏹信息录入:
即创建一个存储通讯录信息的数据结构,有用户从键盘上录入信息,或从数据表文件中导入到该数据结构中。
⏹信息更新:
对数据结构中已有的信息进行修改,并将结果保存在数据结构中。
⏹信息删除:
删除数据结构中无用的信息,并将解雇保存在无数据结构中。
⏹信息查询;针对用户输入的目标值,在数据结构中查找对应的记录,并将其输出到用户屏幕。
⏹信息导入:
将某文件中的信息导入到创建的数据结构中,提高数据的输入效率。
⏹信息导出:
将数据结构中的记录导出到文件中,已永久保存下来。
信息输出:
将数据结构中的信息或指定的信息输出到用户屏幕中。
四、概要设计
n1.数据类型
dnode*p,*rear,*q;/*定义指针结点*/
constcharUSER[]={'w','a','l','d','e','n'},PASSWORD[]={'4','1','6','9','5','3'};/*定义用户密码*/
intOK=1,i;/*用作循环变量或返回值*/
FILE*fp;/*定义文件指针*/
2、数据结构说明
/*datastructure*/
typedefstructtxl
{
charname[20];/*成员姓名,为通讯录管理的对象*/
charsex[4];/*性别,可用于快速类别查询,区别数据成员*/
charcity[20];/*所在城市,可用于快速类别查询,区别数据成*/
charprovince[20];/*省别*/
charqq[11];/*QQ号,管理查询主信息*/
charphonenumber[11];/*对象电话号,管理查询主信息*/
}dtxl;/*建立通讯录信息结构体*/
typedefstructdlnode
{
dtxldata;/*定义数据域*/
structdlnode*prior;/*前驱指针*/
structdlnode*next;/*后继指针*/
}dnode;/*建立双向链表结构体*/
程序中定义的数据类型——结构体(各个成员的作用)
3、模块功能说明
信息录入功能模块:
实现用户从键盘输入数据存储对应字段或该数据成员中,并检查输入的合法性。
信息更新功能模块:
首先更具用户输入找到需要修改的目标记录,再将用户重新输入的信息存储到该记录中,以替代该记录原来的信息。
信息删除功能模块:
该模块将通讯录中无用的信息从数据数据结构中删除,不可再恢复。
信息查询功能模块;用户输入的待查询记录的某关键字,在结构中查找对应的记录,找到则输出相关信息,否则给出无法得提示信息。
信息导入功能模块:
该模块将文本文件或二进制中的数据导入到数据结构中,以提高数据的输入效率。
信息导出功能模块:
将数据结构中的记录导出到文件中,已永久保存下来。
信息输出:
将数据结构中的信息或指定的信息输出到用户屏幕中。
信息输出功能模块:
将数据结构中指定的信息输出在用户屏幕。
根据如上功能模块分析,通讯录信息管理系统的总体结构设计图如下所示。
五、详细设计及运行结果
总体结构图:
删除流程图:
信息更新流程:
首先建立一个空的头结点,再根据用户的输入对每个结点分配内存空间,指定其前驱结点和后继结点,将该结点插入到链表中最后判断用户是否需要重复输入。
主页面是一个系统的主要操作界面,也是系统的交互式平台,可通过printf函数来画出主界面。
与在单链表中添加结点不同,循环双链表中添加一个结点除了需将后继指针next只想后一个结点外,还需要将其前前驱指针prior指向其前一个结点。
但该结点为第一个结点时,其前驱指针为空,当其为最后一个结点时,后继指针指向第一个结点。
因此,录入模块的实现就是对双向链表结点的添加操作,其函数代码如下:
dnode*enter()
信息查询模块所要实现的功能是根据用户输入的待查询记录的某关键字,在数据结构中查找该记录。
在该通讯录中,关键字是指姓名字段,通过制定姓名来查找对应的信息记录。
对于循环双链表中结点的查询,其实现与单链表的查询类似,在其中依次比较结点的数据域,发现其相同即查找成功,返回给关键字对应的信息记录,否则返回无法找到的提示信息。
代码如下:
dnode*search(dnode*head)
voidse(dnode*head)
信息更新需要对指定的成员进行更新,其实现需获取从键盘的两个输入,分别是查找的关键字和目标成员。
代码如下:
voidmodify(dnode*head)
信息删除只需调用查询函数找到目标记录,释放对应结点的结点空间,代码如下:
voiddelete(dnode*head)
程序设计过程及编码(不必给出完整程序),运行结果。
六、调试情况,设计技巧及体会(重点)
1、测试数据
录入密码,进入系统
显示主页面
load外部文件G:
\\file.txt中数据
waldenboynewyorknewyork475869486184****4856
xiaoxiaogilrbaojishannxi48596728615453256535
xiaohuagilrxianshannxi47544524616854353265
xiaofeiboyheiljheilj613534269165345335
zhangboboybaojishannxi276639405187****8142
load()函数实测:
实测数据
插入
shaopingboyyuanxihuangyuan645161586156****3558
结果
查找”walden”
修改walden,性别为gilr,qq为406020588
预期结构
waldengilrnewyorknewyork406020588184****4856
运行结果
修改结果
删除shaoping
结果
导出保存数据
查看结果
退出系统
:
全部结果符合预期
2、问题总结
调试中曾出现乱码现象,通过仔细检查原因在于输出时定义的位数不足,才得到了解决
导入外部文件数据时系统异常退出,发生错误,仅是没将文件位置改正为G:
\\
3、自我评价
作品采用了较具难度的指针写成,外观靓丽;
但缺少统计模块,且有个模块在检查时仍存在些问题;
最终通过修改文件写入方式及几个细节处得到了改正
4、设计过程中的感受
当好不容易写完的程序在调试时出现错误提示时,我常常产生抱怨情绪,但其实这些错误有时仅仅是些没费功夫就找出的食物而已,所以耐力还不够。
后期几天忙于将程序的执行结果美化,这几天的做出的效果激发了我对面向对象程序设计的兴趣,而前些日子的我还对这个专业没多大热爱,
美化后一个模块却为解决,让我更加深刻意识到不能以小失大
七、源程序清单(略,详见实验报告电子版源代码)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 通讯录 管理 系统 课程设计 报告