电话簿管理程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3,系统详细设计 ,
3.3 文件结构(续) 文件结构划分原则: 界面相关的函数放在同一文件中; 操作相同数据结构的函数放在同一文件中; 操作数据联系紧密的函数放在同一文件中; 协同完成同一功能的函数放在同一文件中.
3,系统详细设计 ,
3.3 文件结构(续) 1)elemtype.h 和elemtype.cpp 完成记录元素的定义及操作函数;
c)
d)
e)
2,系统概要设计 ,
2.5程序功能接口设计 (续) f) bool ReadDataFromFile(LinkList *L, char *filename); //从文件 中读入保存的记录信息
g)
bool WriteDataToFile(LinkList *L, char *filename); //将所有记 录写入文件
学员客户端 DB服务器
异种网络连接
学员客户端
CBT服务器
Lan,Internet, Intranet,PSTN……
学员客户端
教员客户端
教员客户端
管理客户端
2,系统概要设计 ,
b) 逻辑结构:从软件结构(部署)的角度 例:
2,系统概要设计 ,
c) 各软件功能划分(略)
2,系统概要设计 ,
d) 功能需要分配表(略)
3,系统详细设计 ,
3.2 功能接口详细设计 //往电话本中添加一个记录 a) void AddMember(LinkList *L) { 输入新的记录信息; if(该记录信息已经存在于链表之中) { 提示操作失败信息; 显示已经存在的记录信息; 返回; } 将记录信息插入链表; }
3,系统详细设计 ,
1,功能需求分析: ,功能需求分析:
增加记录 修改记录 删除记录 根据查询条件查询符合条件的记录 程序退出时能保存所有记录 程序启动时能读入所有记录 ……(每条记录所包括的内容,格式等)
2,系统概要设计 ,
2.1 系统结构
系统结构包括系统物理结构和系统逻辑结构. a) 物理结构:从硬件结构(部署)的角度 例:
2,系统概要设计 ,
2.3 数据结构
a)用于存放单个名片的结构 (续) enum SEX //性别 { FEMALE = 0, MALE = 1 }; //分组 enum GROUPTYPE { FRIENDS =0, FAMILYMEMBERS, CLASSMATES , COLLEAGUE, OTHER };
3,系统详细设计 ,
3.1 程序框架(main函数)详细设计 (续) void Run(LinkList *L) { do { 提示用户选择操作 ; switch(用户选择 ) //根据用户选择调用相关函数完成指定的操作 用户选择 根据用户选择调用相关函数完成指定的操作 { case 添加一个成员 添加一个成员: AddMember(L); break; case 删除成员 删除成员: DelMember(L); break; case 修改各项信息 修改各项信息: ModifyMember(L); break; case 查询记录信息 查询记录信息: SearchMember(L); break; case 所有记录信息 所有记录信息: DisplayAll(L); break; default: break; } }while(选择 != 退出 ); 选择 }
3,系统详细设计 ,
3.2 功能接口详细设计 //往电话本中查找一个记录 d) void SearchMember(LinkList *L) { 输入查询条件; 输入查询条件; 在链表中查找符合条件的记录 ; if(找到符合条件的记录 找到符合条件的记录) 找到符合条件的记录 { 显示记录信息; 显示记录信息; reutrn; } 提示查找失败信息; 提示查找失败信息; }
3,系统详细设计 ,
3.3 文件结构(续) 1)ListManage.h 和ListManage.cpp 完成记录元素的定义; 链表操作(查,插,删,改); 记录文件的读写.
ห้องสมุดไป่ตู้
3,系统详细设计 ,
3.3 文件结构(续) 2)AddressBook.h 和AddressBook.cpp (主要协助主程序框架完成相应的功能) 对电话簿中的记录进行插,查,删,改 操作; 对电话簿中的记录进行显示; 读写文件 生成一条新的记录; 生成查询条件;
3,系统详细设计 ,
3.3 文件结构(续) 3)AddressBookManage.cpp 主程序,完成main函数
打开保存信息的数据文件filename ; 打开保存信息的数据文件 if(打开文件成功 打开文件成功) 打开文件成功 { for(int i =0 ;i<LenthOfList ;i++) 将记录写入文件filename中; 将记录写入文件 中 reutrn; } 提示打开文件失败信息; 提示打开文件失败信息;
2,系统概要设计 ,
2.3 数据结构
b) 用于存放所有名片的结构 链表:
L
记录数据1 记录数据2
……
记录数据N
空记录数据 NULL
最后一个空节点的作用: 避免用指针的指针,在稍后的程序中讲解,掌握指针,函数参数 传值和传指针的不同执行结果
2,系统概要设计 ,
2.3 数据结构
b) 用于存放所有名片的结构(续) 定义链表的结点结构 typedef struct STRU_NODE { ElemType data; //结点数据 …… struct STRU_NODE *next; //指向下一个结点的指针 }LinkList; typedef STRU_NODE LNode;
3,系统详细设计 ,
3.2 功能接口详细设计 //显示电话本中所有的记录信息 e) void DisplayAll(LinkList *L)
{ for(int i =0 ;i<LenthOfList ;i++) 显示记录信息; 显示记录信息; }
3,系统详细设计 ,
3.2 功能接口详细设计 //将所有记录写入文件 f) bool WriteDataToFile(LinkList *L, char *filename); {
while(fread 记录信息成功 记录信息成功)
将记录信息加入链表; 将记录信息加入链表 } 提示打开文件失败信息; 提示打开文件失败信息;
}
3,系统详细设计 ,
3.3 文件结构 从接口设计过程中可以知道我们需要操作链表, 进行链表元素的增加,修改,查询和删除;需 要操作文件,对文件进行读写;需要管理电话 簿,对电话簿所管理的记录进行增加,修改, 查询,删除和显示;需要响应用户的操作.因 此我们用以下文件分别来完成相应的功能:
2,系统概要设计 ,
2.4数据存放 永久性的数据存放主要有两种方式:写入 数据库和写入文件. 本项目选择写入文件.
2,系统概要设计 ,
2.5程序功能接口设计 对照程序所要完成的功能,设计出如下接口: a) void AddMember(LinkList *L); //往电话本中添加一个记录
b)
void DelMember(LinkList *L); //从电话本中删除一个记录 void ModifyMember(LinkList *L); //修改成员信息 void SearchMember(LinkList *L); //查询记录 void DisplayAll(LinkList *L); //显示所有记录信息
3,系统详细设计 ,
3.1 程序框架(main函数)详细设计 (续) void main() { //生成一个含有一个空节点的链表 生成一个含有一个空节点的链表 LinkList *L = new LNode[1]; InitElem(&(L->data)); L->next = NULL; DispProgramInfo( ); //显示程序信息 显示程序信息 ReadDataFromFile(L, "addressbook.dat" ); //从文件中读出数据并插入链表中 从文件中读出数据并插入链表中 Run(L); //调用用户界面,接受用户的输入 调用用户界面, 调用用户界面 WriteDataToFile(L, "addressbook.dat" ); //将电话本 链表 中的数据保存到文件中 将电话本(链表 将电话本 链表)中的数据保存到文件中 DestroyList(L ); //销毁链表,回收 销毁链表, 销毁链表 回收new分配的空间 分配的空间 }
2,系统概要设计 ,
2.6界面设计
3,系统详细设计 ,
3.1 程序框架设计 程序的主程序框架用以下伪代码说明: void main() { //程序初始化工作 生成一个含有一个空节点的链表 ; 从文件中读出数据并插入链表中; 显示程序信息; 显示程序信息 //程序运行方式 调用用户界面,接受用户的输入 并响应 ; //程序结束工作 将电话本(链表)中的数据保存到文件中; 销毁链表,回收new分配的空间; }
}
3,系统详细设计 ,
3.2 功能接口详细设计 //从文件中读入保存的记录信息 g) bool ReadDataFromFile(LinkList *L, char *filename); {
打开保存信息的数据文件filename ; 打开保存信息的数据文件 if(打开文件成功 打开文件成功) 打开文件成功 {
电话簿管理程序
程序设计基础模拟项目之一
项目目标: 项目目标:
通过该模拟项目巩固C语言所学知识,主要包括:指 针,链表,结构体,预编译,宏定义,函数调用,数 组,文件读写,enum, typedef等. 将所学各项离散的C语言知识进行自然的,有机的组 合运用. 学习完整的项目开发过程,包括:功能需求分析,系 统概要设计,系统详细设计,编码和测试. 建立程序设计和算法设计基本思想. 用C语言完成一个完整的电话簿管理程序.
3.2 功能接口详细设计 //从电话本中删除一个记录 b) void DelMember(LinkList *L) { 输入查询条件; 输入查询条件; 查找符合条件的记录 ; if(找到符合条件的记录 找到符合条件的记录) 找到符合条件的记录 { 显示该记录信息; 显示该记录信息; 从链表中删除记录; 从链表中删除记录; reutrn; } 提示删除失败信息; 提示删除失败信息; }
项目所需完成的任务: 项目所需完成的任务:
功能需求分析 系统概要设计(包括数据结构设计,功能接口设 计,关键算法设计,界面设计等) 系统详细设计(程序框架设计,文件结构,函数 设计) 代码编写 调试和测试(单元测试和系统测试)
示例
从以下方面来示范一个电话簿管理程序 1,功能需求分析 2,系统概要设计 3,系统详细设计 4,代码编写 5,调试和测试(从开发者的角度)
2,系统概要设计 ,
本系统的物理结构:单机(PC) 本系统的逻辑结构:
记录数据 电话簿管理程序 磁盘
2,系统概要设计 ,
2.2 开发技术 a)操作系统 WindowsXP b)开发环境(开发平台) Visual C++ c)开发语言 C语言
2,系统概要设计 ,
2.3 数据结构(接口,内部和外部接口)
3,系统详细设计 ,
3.2 功能接口详细设计 //在电话本中修改一个记录 c) void ModifyMember(LinkList *L) { 输入查询条件; 输入查询条件; 在链表中查找符合条件的记录 ; if(找到符合条件的记录 找到符合条件的记录) 找到符合条件的记录 { 显示记录信息; 显示记录信息; 输入新的记录信息; 输入新的记录信息; 在链表中修改记录信息 ; reutrn; } 提示修改失败信息; 提示修改失败信息; }
a)用于存放单个名片的结构 typedef struct { int memberID; //成员ID号 char name[LEN_NAME + 1]; //成员姓名 SEX sex; //成员性别 char teleNo[LEN_TELENO + 1]; //成员的电话 char addr[LEN_ADDRESS + 1]; //成员地址 char email[LEN_EMAIL+ 1]; //成员e-mail地址 GROUPTYPE relation; //分组信息 }ElemType;
相关文档
最新文档