logo资料库

数据结构课程设计《通讯录的制作》.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
1引言
2课程设计报告内容:
2.1系统功能模块图如下:
2.2设计结构体及函数表:
2.2.1结构体:
2.2.2函数目录表:
2.3实现主程序和各模块的调用关系:
3详细设计:
3.1各个操作的算法实现:
3.1.1链表初始化
3.1.2载入可能存在的通讯录文件
3.1.3增加新结点
3.1.4添加新纪录(可循环)
3.1.5按姓名查找(同时显示全部符合要求的结果,包括没有保存到磁盘的)
3.1.6显示所有记录(包括没有保存到磁盘的)
3.1.7删除指定记录(可循环)
3.1.8保存到磁盘文件(实时写入文件)
4部分运行结果界面:
4.1调试分析:
4.2调试中遇到的问题:
5总结:
数据结构 课 程 设 计 题 目 系 (部) 班 姓 学 级 名 号 通讯录的制作 电子与信息工程系 09 级计算机科学与技术 张泽昊 2009222239 指导教师 付争方 2010 年 12 月 27 日
电子与信息工程系 《数据结构》课程设计任务书 设计 题目 已知技术 参数和设 计要求 通讯录的制作 设计目的:用《数据结构》中的双向链表作数据结构,结合 C语言基本知 识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中 去。 设计内容:本系统应完成一下几方面的功能: 输入信息——enter(); 显示信息——display( ); 查找以姓名作为关键字——search ( ) , 删除信息——delete( ); 存盘——-save 装入——load( ) 设计要求: 1)每条信息至包含:姓名 (NAME )街道 (STREET)城市 (CITY)邮 编 (EIP)国家 (STATE)几项 2)作为一个完整的系统,应具有友好的界面和较强的容错能力 ( ), 3)上机能正常运行 设 计 内 容 与 步 骤 1、结点结构的设计 2、算法设计与分析 3、程序设计、实现、调试 4、课程设计说明书 设计工作 计划与进 度安排 设计考核 要求 1、设计工作4学时 2、实现与调试 16学时 3、课程设计说明书 8 学时 1、考勤30% 2、课程设计说明书70% 计算机教研室制
2009222239 张泽昊 通讯录的制作 张泽昊 安康学院 计算机科学与技术 09 级 陕西省 安康市 725000 摘要:设计“通讯录管理系统”使其具有数据添加、删除、显示和查询等功能。使学生进一 步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以 及它们在程序中的使用方法。使学生掌握软件设计的基本内容和设计方法,并培养学生进行 规范化软件设计的能力。使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程 序设计的基本能力。 关键字:数据结构、通讯录、设计能力、调试 1 引言 在设计中我们利用双循环链表存储方式对信息进行存储 ,利用基本的输入输出 ,定义 五个信息选项,然后保存到一个文件里。读者可以利用姓名为关键字对所需要的信息进行查 找。也可以根据姓名进行删除,但由于我们知识的有限性,我们只能对信息进行简单的处理, 希望我们能在以后的学习中进一步改善。 2 课程设计报告内容: 2.1 系统功能模块图如下: 通讯录管理 建立 通讯录 添 加 保 存 查 找 删 除 退 出 2.2 设计结构体及函数表: 2.2.1结构体: struct record { char name[20]; char street[20]; 1
通讯录的制作 char city[20]; char eip[20]; //邮编 char state[20]; }people[500];//500 个记录,可修改 struct pnode { record data; struct pnode *next, *prior;//双循环链表 }; typedef pnode * linklist; 2.2.2函数目录表: void mainmenu();//主菜单 void searchmenu();//查询菜单 void enter();//添加新纪录 void search();//按条件搜索记录 void display();//显示全部记录 void load();//载入文件 void save();//写入文件 void del();//删除记录 void listinsert();//插入结点函数 void initlist();//初始化链表函数 2.3 实现主程序和各模块的调用关系: void main() //主函数 { initlist();//初始化链表 load();//载入文件 listinsert(); //增设新节点 while (1) mainmenu(); //进入主菜单,有非法输入仍停留在主菜单 } void mainmenu()//主菜单 { 菜单界面; printf("%c ",ch=getch()); switch (ch) { case '1':enter();break; case '2':searchmenu();break; case '3':del();break; case '4':save();break; 2
2009222239 张泽昊 case '5':exit(0); default:mainmenu(); } } void searchmenu()//查询菜单 { 查询菜单; printf("%c",ch=getch()); switch (ch) { case '1':display();break; case '2':search();break; case '3':mainmenu();break; } } 3 详细设计: 3.1 各个操作的算法实现: 3.1.1链表初始化 void initlist()//链表初始化函数 { l=(linklist)malloc(sizeof(pnode));//动态申请内存 l->next=l; l->prior=l; } 3.1.2载入可能存在的通讯录文件 //无文件,新建立文件 void load()//装载已有文件信息 { ……; ……; //已有文件,导入文件 ……; ……; } 3.1.3增加新结点 void listinsert()//增加新结点 { //插入新结点,读入内存信息 ……; ……; 3
通讯录的制作 } 3.1.4添加新纪录(可循环) void enter()//添加新纪录 { //信息输入 ……; ……; //是否继续添加? ……; ……; } 3.1.5按姓名查找(同时显示全部符合要求的结果,包括没有保存到磁盘的) //输入姓名 void search() { ……; ……; //输出查询结果 ……; ……; //检索可能的重名纪录 ……; ……; } 3.1.6显示所有记录(包括没有保存到磁盘的) void display()//显示所有纪录 { //显示内存中的所有记录 ……; ……; } 3.1.7删除指定记录(可循环) //输入要删除的姓名 void del() //删除纪录 { ……; ……; //查找符合条件的记录,对于每条记录询问是否删除; //满足条件的输出结束,询问是否删除其他记录,循环 ……; ……; } 3.1.8保存到磁盘文件(实时写入文件) void save()// 4
分享到:
收藏