当前位置:文档之家› 《程序设计与算法分析》课程设计报告

《程序设计与算法分析》课程设计报告

函数类型:未调用参数,且无返回值。
算法说明(流程图表示)
3、主菜单函数
函数功能:输出主菜单,并利用多分枝选择结构调用各功能函数。
函数类型:未调用参数,且无返回值。
算法说明:利用多分枝选择结构实现程序中各程序之间的转换和方便用户进行选择。调用各功能函数。
4、添加记录函数
函数功能:电话本为空时,实现电话本中信息的创建;电话本不为空时,实现电话本信息的添加。
(4) 在输入人名过程中能自动识别非法输入,并给与非法输入的反馈信息要求重新输入。
(5)查找成功时,显示姓名及关键字,并计算和输出查找成功的平均查找长度。
2、输入输出的要求;分别用scanf函数和printf函数实现函数的输入和输出。
3、测试数据。
2、概要设计
1、存储结构设计说明:
应用结构体类型的数组对姓名记录进行存储
函数类型:未调用参数,且无返回值。
算法说明:实现主函数与排序函数之间的转换,多分支选择结构调用排序函数及主菜单函数。
13、排序函数
函数功能:对电话本中已经存在的函数实现按电话号码的排序。
函数类型:未调用参数,且无返回值。
算法说明:(流程图表示)
14、写入文件函数
函数功能:显示文件中信息并保存文件
函数类型:未调用参数,且无返回值。
函数类型:未调用参数,且无返回值。
算法说明:实现主函数与修改函数之间的转换,多分支选择结构调用删除函数及主菜单函数。
7、修改函数
函数功能:实现电话本中记录的修改。
函数类型:未调用参数,且无返回值。
算法说明:(流程图表示),进行继续修改时递归调用修改函数。
8、查询菜单函数
函数功能:显示查询菜单,实现查询函数与主菜单之间的转换。
解决办法:在函数最前面对所有函数全部进行声明。
个别函数中if...else语句对应问题和括号匹配有问题。
解决办法:小组中成员团结协作,仔细检查,解决了这些错误。
5、核心源程序清单和执行结果
1、核心源程序
附件一
2、执行结果:同调试分析。
6、分析与讨论
本次个人电话本系统的设计,我小组主要使用的方法包括多分枝选择结构实现菜单项以及递归调用函数进行继续操作,其中调试过程中出现的种种问题都在我们的合作商量下共同解决,这充分体现了在课程设计中团队协作的重要性,同时我们的电话本系统编写的程序还比较稚嫩,在很多方面都需要继续改进和提高。
并且定义结构体类型的哈希表。
typedef struct //姓名表
{
char *py; //名字的拼音
int m; //拼音所对应的
}NAME;
NAME NameTable[HASH_LEN]; //全局定义姓名表
算法说明:通过输出文件中的信息,判断是否信息已经全部存入文件中。
4、调试分析
一)测试数据:
1、主菜单
2、修改菜单及修改函数
3、查询菜单和查询函数
4、删除菜单和删除函数
5、排序菜单和排序函数
6、显示所有函数
二)时间复杂度
1、主菜单函数:O(1)
2、增加联系人函数:每次添加记录的时间复杂度为O(1)(继续添加时进行了递归调用)。
2、输入输出的要求:电话本中每个人的各项信息需要由键盘进
行输入,应用getch函数进行输入,printf函数实现输出。
3、测试数据。
2、概要设计
1、存储结构设计说明:
应用结构体类型的数组对电话本中的记录进行存储。
struct record
{
char name[20];
char phone[20];பைடு நூலகம்
char mailbox[20];
函数类型:未调用参数,且无返回值。
算法说明:实现主函数与删除函数之间的转换,多分支选择结构调用删除函数及主菜单函数。
11、删除函数
函数功能:实现对指定记录(按姓名)的删除操作。
函数类型:未调用参数,且无返回值。
算法说明:(用流程图表示)继续删除则递归调用删除函数。
12、排序菜单
函数功能:显示排序菜单,实现排序函数与主菜单之间的转换。
数据结构课程设计报告
设计名称:1)简单个人电话号码查询系统
2)哈希表设计
《程序设计与算法分析》课程设计报告
一、简单个人电话号码查询系统
1、需求分析
1、程序的功能:实现一个简单的个人电话号码查询系统,根据用户输入的信息进行排序(按电话号码)并且可以进行快速查询(按姓名),同时还可以进行插入、删除、修改等维护功能
函数类型:未调用参数,且无返回值。
算法说明:实现主函数与查询函数之间的转换,多分支选择结构调用查询函数及主菜单函数。
9、查询函数
函数功能:实现对电话本中指定记录(按姓名)的查询。
函数类型:未调用参数,且无返回值。
算法说明:(流程图表示)
10、删除菜单函数
函数功能:显示删除菜单,实现删除函数与主菜单之间的转换。
函数类型:未调用参数,且无返回值。
算法说明:,从键盘输入联系人的姓名和电话、邮箱等信息,应用系统printf函数输出,scanf函数输入,继续添加——递归调用添加记录函数
5、显示所有函数
函数功能:遍历输出电话本中的所有信息。
函数类型:未调用参数,且无返回值。
算法说明:(流程图表示)
6、修改菜单函数
函数功能:显示修改菜单,实现修改函数与主菜单之间的转换。
3、修改函数:每次进行修改的时间复杂度为O(n)(继续修改时进行了递归调用)。
4、查询函数:O(n)
5、删除函数:O( )
6、排序函数:O( )
7、写入文件函数:O(n)
8、显示所有函数:O(n)
三)存在的问题及解决设想
存在的问题:
多分枝选择结构较多应用,一开始没有注意函数声明问题,以致很多函数在其他函数中被调用出错。
}people[60];
2、程序设计组成框图
3、详细设计
1、主函数
函数功能:对写入文件函数及主菜单函数进行调用。实现主菜单的显示
函数类型:未调用参数,且无返回值。
函数调用关系描述:调用主菜单函数及写入文件函数,实现主菜单的显示。
2、从文件导入函数
函数功能:判断文件是否存在,存在进行导入,不存在进行文件导入。
二、哈希表设计
1、需求分析
1、程序的功能;
(1) 针对某个集体中的人名设计一个哈希表,使得平均查找长度不超过R,完成相应的建立和查表程序。
(2)人名为汉语拼音形式,最长不超过19个字符(如:杨欢 yanghuan)。
(3) 假设待填入哈希表的人名有30个,平均查找长度的上限为2。哈希表用除留余数法构造,用伪随机探测在散列法处理冲突。
相关主题