通讯录总体功能要求
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.需求分析说明 (1)
1.通讯录总体功能要求: (1)
2. 各功能模块的功能描述: (1)
二.概要设计说明 (3)
1.模块调用图: (3)
2.各函数简要说明: (3)
三.详细设计说明 (4)
1.数据结构设计 (4)
2.主函数模块 (5)
3.密码验证模块 (5)
4.输入信息模块 (6)
5. 显示信息模块 (7)
6.查找模块 (7)
7.修改信息模块 (7)
8.删除信息模块 (8)
9. 信息加载 (8)
10.存盘模块 (8)
11. 密码修改模块 (8)
四.调试分析 (9)
1.问题一 (9)
2.问题二 (9)
3.问题三 (9)
五.用户使用说明 (10)
六.课程设计总结 (16)
七.测试结果 (17)
1.测试密码登陆 (17)
2.测试输入信息 (17)
3.测试显示信息 (18)
4.测试查找信息 (18)
5.测试修改信息 (19)
6.测试删除信息 (19)
7.测试加载信息 (20)
8.测试存盘 (21)
9.测试密码修改 (22)
参考书目 (23)
附录 (24)
一.需求分析说明
1.通讯录总体功能要求:
在window7系统下用vc6.0开发工具以双向链表作数据结构,编写一个通讯录管理系统。每条信息包含:姓名(name )街道(street)城市(city)邮编(eip)电话(tel)国家(state)。此系统具有友好的界面和较强的容错能力。
本系统具有以下几方面的功能:
(1).密码验证passWord():通过密码登陆本系统。
(2).输入信息enter():通过键盘输入所需添加信息。
(3).显示信息display( ):显示所有通讯录信息。
(4).查找search( ):以名字为关键字查找用户信息。
(5).修改modify():修改指定的信息。
(6).删除信息del ( ):用户通过输入指定名字找到相关记录然后确定是否删除。
(7).存盘save ( ):把所有用户通过键盘录入的信息或者通过文件加载的信息以
文本文件存入硬盘。
(8).装入load( ) :从文本文件加载通讯录信息。
(9).密码修改modpw():由用户自己修改为指定的密码。
2. 各功能模块的功能描述:
(1)主函数模块:
本模块的主要功能是初始化各种数据,根据用户选择的数字调用对应的
模块,实现相应的功能。
(2) 密码验证模块:
本模块主要功能是接受用户键入的密码字符,读取已经存好的密码文件,解密后与之比较。
(3)输入信息模块:
本模块的主要功能是通过用户再键盘上键入的相关信息存入一个结构体中,然后再把这个结构体作为一个节点加入到双向链表中。
(4)显示信息模块:
本模块的主要功能是显示所有在双向链表节点的信息,打印在屏幕上。
(5)查找模块:
本模块的主要功能通过用户输入的用户名然后在双向链表中遍历所有的节点看是否有对应的节点,有的话把这个节点的所有信息打印到屏幕上。
(6) 修改信息模块:
本模块首先调用查询模块找到相对应的节点,然后由用户选择修改哪项信息。
(7)删除信息模块:
本模块首先调用查询模块找到相对应的节点,然后由用户确定是否删除此信息。
(8) 信息加载模块:
本模块的是通过吧txl.txt文件中的信息加载到内存中。
(9)存盘模块:
本模块的主要功能是把当前双向链表中的所有的节点数据以一个名为txl.txt的文本文件存到与本程序同一文件夹的目录下。
(10)密码修改模块:
本模块实现了接受用户新键入的密码字符,然后吧密码字符加密后存入以passWord.txt为文件名的文本文件。
二.概要设计说明
1.模块调用图:
2.各函数简要说明:
int passWord(char *pw) //密码验证
txlnode * enter(txlnode *pp,txlnode *head) //信息输入
void display(txlnode *head) //显示所有数据
txlnode * search2(txlnode *head) //查找通讯录信息(供修改信息和删除信息模块调用)
void search(txlnode *head) //查找信息供主函数调用
void modify(txlnode *head) //修改信息
txlnode * del(txlnode *head) //删除信息
txlnode * load(txlnode *pp,txlnode *head) //加载文件
void save(txlnode *head) //保存信息
int modpw(void) //修改密码
三.详细设计说明
1.数据结构设计
数据结构的设计是具体模块设计的前提。此处使用循环双向链表来表示通讯录结点。所谓循环双向链表,是指在单链表的基础上增加一个指针域,使该结点数据域左边的指针指向该结点前面的结点,右边的指针指向其后的结点,最后一个结点的右边指针指向第一个结点。
typedef struct txl //建立通讯录信息结构体{
char name[20];
char street[32];
char city[20];
char eip[20];
char tel[20]
char state[20];
}txld; typedef struct dlnode //建立双向链表结构体{
txld data;
struct dlnode *prior;
struct dlnode *next;
}txlnode;
此处首先定义了结构体txld包含了通讯录的所有信息,然后以这些信息为数据域建立一个双向链表,该链表包含前去指针prior和后继指针next。
2.主函数模块
首先定义头结点,为头结点分配一块内存空间,然后调用是接受用户输入的密码调用passWord函数验证密码是否正确正确的话打印出功能菜单选项,运用swith 语句,用户通过选择指定项从而进入相应的功能执行完此项功能后返回,循环显示功能菜单和接受用户的选项,从而在不退出程序的情况下重复使用本系统的各项功能。(具体实现见附录main函数(P32))。
3.密码验证模块
在主函数中通过getchar()得到用户的密码,主函数吧这个参数传递到密码验证模块passWord(),密码验证模块通过读取password.txt中的密文存入数组a[i]中数组中的每一个字符依次通过a[i]-=i%5; a[i]+=i%3; a[i]+=i%2; a[i]++;解密之后与用户输入的字符串进行比较,如果相同则密码正确否则密码错误,当错误次数超过三次后程序自动结束运行。(具体实现见附录passWord函数(P24))。