设计文档
- 格式:doc
- 大小:81.05 KB
- 文档页数:9
1 电话簿
设计文档
设计者:朱雷雷 汪小明
2014年6月29日
1 需求分析
用户需要对电话簿实施的操作有:
查询某个联系人信息、删除联系人、添加联系人、修改联系人信息,对联系人的信息进行排序以及显示所有联系人,所以电话簿设计应分成七大模块(同时要有翻页等功能)
(1)查询:根据指定的联系人名查找联系人的具体信息
(2)添加:添加联系人的信息
(3)修改:规定具体联系人的姓名,然后找到此人并修改其信息
(4)删除:给定某人姓名,删除其信息
(5)显示:显示所有联系人的姓名及电话(分按姓名、电话显示)
(6)排序:对联系人进行排序(分按姓名、电话号码进行排序显示)
(7)退出系统
2 2 模块分析
开始
菜单
查询
添加
修改
删除
显示所有
退出
按姓名排序 按号码排序
结束
3
3 存储分析
联系人的信息有姓名、性别、手机号码、邮箱、等信息,建立联系人结构体,将联系人的信息封装在一起,通过建立链表进行存储
4数据结构
联系人详细信息结构
typedef struct nodenode
{
char name[10];
char sex[5];
char phone_number[13];
char email[30];
struct nodenode *next, *prior;
} node;
5 界面设计
1、查询
2、添加
3、修改
4、删除
5、显示
6、退出程序
6 详细模块分析 namel Sex num email next
4 6.1 显示模块
函数:int printall( node *s )
用户进入界面,选择过后就能显示所有人的信息(前提是文件中已经存过联系人了),无联系人会显示no node
6.2 排序模块
用户进入主界面,选择排序,会提示按姓名还是号码排序显示,根据提示选择,就能使联系人按所需要的进行排序,然后按显示就能查看排过序的联系人。
void paixu( node *s, int which )
{
node *L;
node *last = s;}
6.2.1 姓名排序显示
sort_by_name(node *s, int which)
s:要排序的链表的尾结点
which:排序类型(冒泡排序)
6.2.2 号码排序显示
sort_by_telephone(node *s, int which)
s:要排序的链表的尾结点
which:排序类型(冒泡排序)
6.3添加联系人模块
insert_last(S)
使用头插法不断地向链表中添加数据
电话簿
查询 添加 修改 删除 显示 退出
开始
选择
按姓名 按号码
显示
结束
5
提示用户输入所要添加的联系人详细信息,由系统自动保存,边输入,边保存
6.4 删除联系人
void deleteone( node * s )
由用户选择是按姓名还是按号码来查找删除联系人,然后提示用户输入姓名或电话号码,分别调用函数void delete_by_name(node * s )函数void delete_by_telephone(node * s )来删除联系人节点,并保存到文件
开始
选择
根据提示输入信息
由系统自动保存到文件
结束
6
6.5 修改联系人
int revise( node*s,int which )
参数which:要修改的项目
7
提示用户输入要修改的联系人姓名,然后根据输入的姓名到链表中去查找联系人,未找到就退出,找到则修改联系人的信息,并保存到文件
6.6 查询模块
friend * search_friend( node *s, char *ar)
参数 ar :关键字
由用户输入联系人的姓名来查找相关信息,
按关键字(姓名)查找节点,需要关键字
完全匹配
6.7 退出模块
exit(0);
释放链表再退出系统
7辅助函数
7.1 读文件
(1)函数名:node * init_from_file( )
(2)功能:将信息从文件中读出来
7.2 写文件
(1)函数名:int save_to_file( node * s )
(2)功能:将输入的信息保存到文件中
选择
输入待查联系人的姓名
找到?
显示详细信息
结束
8
附录:
学习总结
1204011026汪小明 1204011011 朱雷雷
自从开始参加了为期七天的C语言开发实训,实训课题为《电话簿的设计》。在本次实训过程中,我们小组二人通过精诚合作,共同
努力,在赵老师和俩位学长的耐心指导下圆满完成实训任务。
通过本次实训,巩固了平时所学的c语言基础知识,对C语言系统有了一个比较直观的了解、认识和应用。特别是在解决问题的过程当中,我学到了书本上学不到的知识,获取宝贵的开发经验。还有就是要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在速度上,掌握的知识量比较少,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
借此机会我衷心地感谢知道老师在整个实训过程中给予我的帮助和指导,没有老师的孜孜不倦,就没有我对于这门学科的深入理解;同时还要感谢小组成员在实训过程中对我的宽容和帮助,没有我们的共通努力,就没有实训的完美收局。总的来说,本次实训给我启发很大,我希望以后还有机会和同学们参加更多的相关实训,借以提
9 升自己的专业能力和实战能力,完善理论知识!