当前位置:文档之家› 通讯录管理系统实验报告

通讯录管理系统实验报告

通讯录管理系统实验报告信息科学与技术学院《程序设计实习》实训报告书目: 计算机科学与技术题专业: 计算机科学与技术班级:姓名:学号: 同组人员: 指导老师: 设计时间:目录1.实训计划 ..................................................................... ................................... 1 2.问题描述 ..................................................................... ................................... 1 3.问题分析 ..................................................................... ................................... 2 4.算法设计 ..................................................................... ................................... 4 5.程序模块设计 ..................................................................... ............................ 5 6.技术难点与分析 ..................................................................... ........................ 8 7.系统测试 ..................................................................... ................................... 9 8.心得体会 ...................................................................................................... 12 9.参考文献 ..................................................................... (13)21.实训计划2011.9.19~2011.9.19,选择实验任务,明确项目需求,查阅参考书籍。

2011.9.20~2011.9.20,数据结构的分析和确定。

2011.9.21~2011.9.23,项目分析和代码实现。

2011.9.24~2011.9.24,项目演示、验收、评分。

2.问题描述设计一个计算机程序,实现通讯录管理。

1(设计一个含有6个菜单项的主控菜单,这6个菜单项的内容和输入提示如下:1)通讯录链表的建立2)通讯者结点的插入3)通讯者结点的查询4)通讯者结点的删除5)通讯录链表的输出0)退出管理系统请选择0~5:2(使用数字0~5来选择菜单项,其它输入则不起作用。

13.问题分析开始开始菜单新建插入查找删除输出退出按学号按学号按学号按姓名按电话按住址查找查找查找插入查找删除2该通讯录主要分为六个模块:1)新建2)插入3)查询4)删除5)输出6)退出。

在开始菜单中对应的功能数字是0-5。

可以按照自己想要操作的动作选择对应的数字实现相应的功能。

对于插入主要是按学号的升序来插入通讯者的信息。

在查找中分为四个查找方式:1)按学号查询2)按姓名查询3)按号码查询4)按地址查询。

在删除中由于学号是主关键字,是唯一的,所以删除按学号来删除会比较方便。

而输出是按一个指针p指向头指针haed,按循环来输出直到p=NULL则结束输出。

34.算法设计1(数据结构设计typedef struct student{ //定义学生结构体long num; //学号char name[10]; //姓名char phone[11]; //电话char address[20]; //地址}datatype;typedef struct node{ //结点包括数据域和指针域datatype data;struct node * next;}listnode;typedef listnode * linklist;linklist head; //定义一个头指针head 2(算法设计linklist createlist(); //通讯录链表的建立 void insertnode(linklist head,listnode *p); //通讯录结点的插入 void listfind(linklist head); //通讯录链表的查询 void delnode(linklist head,long num); //通讯者结点的删除void printlist(linklist head); //通讯录链表的输出 int start_menu(); //开始菜单其中 listfind(linklist head);里面是用switch语句,由于查找分为四种:1) 按学号查找Findnum()2) 按姓名查找Findname()3) 按号码查找Findphone()4) 按地址查找Findaddress()45.程序模块设计按照模块(即函数)画出每个函数的流程图,并配合必要的文字说明。

1. 开始菜单模块如下:开始开始菜单键入4 键入5 键入0 键入1键入2键入3新建插入查找删除输出退出2. 新建linklist createlist()模块如下:开始申请头结点head插入一个结点p返回头结点3. 插入insertnode(linklist head,listnode *p)模块如下: 5开始申请相连的结点m和n,开始m指向头结点Y ,=Null?N新建通讯录将p结点插入结点m和n之间4. 查询listfind(linklist head)模块如下:开始头结点head=Null,NY查找不到联系输入n的数值人信息键入1键入2键入3键入4键入其他按姓名查询按号码查询按地址查询退出按学号查询5. 删除delnode(linklist head,long num)模块如下:6开始申请结点p指向头指针head通讯录空,无YP->next==null,法删除Np->data.num==Nnum?Y输出删除者信删除者不存在息6. 输出函数printlist(linklist head)模块如下:开始申请结点p,p=head->nextYp==NULL?通讯录为空N输出通讯者的信息76.技术难点分析主要内容:本课题在设计过程中所遇到的技术难点及解决方法。

在本次试验中我觉得我遇见了一些技术上的难点,刚开始是通讯录的建立,要用到数据结构中的知识,主要要用到链表和结构体。

在通讯录的插入的时候主要是用到学号的升值法插入,在此过程中要申请结点m和n,而且将要插入结点p插在两结点之间。

在通讯录的查询当中主要分为四类:1).按学号查找的函数;2).按姓名查找的函数;3).按电话查找的函数;4).按住址查找的函数。

其实原理一样,只是使用strcmp()函数匹配出和要查找的通讯者信息相同的结点,并且将其所有的信息输出。

在删除函数我开始觉得删除的时候很困难,后来我是按学号删除的,因为学号是关键字,主要注意在删除后对一些结点需要改变p=p->next; p->next=p->next->next;free(q); 如果没找到则q=q->next。

87.系统测试1.测试开始菜单,使用数字0~5来选择菜单项,其它输入则不起作用。

2进入通讯录的建立3.通讯录结点的插入3,通讯录按学号查找查询成功和失败94通讯录按姓名查找通讯录的按电话和地址查找和以上类似5通讯录的删除106.通讯录的输出7.通讯录的退出118.心得体会我觉得在试验的过程当中最重要的要有耐心和毅力,在一周的试验当中我遇见很多的问题,刚开始坐在电脑面前的时候我觉得试验应该不是很难,于是我便开始拿着试验要求报告开始我的编程,但是后来我发现并不是那么的简单,写到后面的时候我觉得自己考虑的东西多了,原本写的程序并没有把问题考虑那么周全,所以让我浪费了很多的时间。

后来在老师的指导下开始新的编程之路,我去了图书馆借了一些关于试验方面的书籍,看了一下,不是像以前一样拿起书本便开始往电脑里面敲代码。

我觉得一种好的编程习惯对于我来说是非常重要的。

我记得在试验的过程中我发现自己的程序有些问题于是我让老师帮我看下是哪里出现了问题,老师看了我的程序觉得没有结构感,我觉得也是自己平时很注重写代码最后是否能运行出自己想要的结果,完成试验的最后目的,所以对于代码的结构并不是很重要,所以让别人看起来不是很容易理解,我觉得在这些方面我还是有需要进步的一面。

我觉得这周的实习对于我来说是非常有意义的。

在进学校以来,我选择了这个专业,就是想自己给自己增加点技术知识和自己的动手能力。

以前的试验我觉得都是很有结构很有步骤的,但是这周我们写的试验是完全靠自己来写的,没有给我们固定的模式,所以我觉得这在一定的程度上考验了我的动手能力,不仅获取课外的很多知识也增加了自己的能力,我觉得类似这样的实习是被提倡的,对于我来说也是很有意义的。

129.参考文献1)徐孝凯,魏荣《数据结构》,机械工程出版社,1996.P121-P132. 2)谭浩强《程序设计》,北京大学出版社,1999.P236-P249. 3)杨路明《C语言程序设计教程》,北京邮电大学出版社.P170-P186. 4)耿国华《数据结构-C语言描述》,高等教育出版社.P248-P253.13。

相关主题