数据结构课程设计:通讯录管理系统与学生信息管理

需积分: 46 0 下载量 49 浏览量 更新于2024-09-10 收藏 61KB DOC 举报
在本数据结构课程设计题目中,学生们被要求通过实践项目来深化对数据结构的理解和应用能力。项目的核心目标是设计并实现一个通讯录管理系统,采用链表作为主要的数据结构。以下是关键知识点的详细说明: 1. **任务分配**: 班级班长需负责统计每个同学选择的题目,确保每个同学选择不同的题目,避免重复。可用C、C++或Java三种编程语言进行开发。 2. **项目组织**: - **主函数main()**:作为项目的入口点,它根据用户的选择调用不同的模块(如菜单选择、数据操作等)来执行相应功能。 - **Menu()**:负责显示操作选项,提供用户交互界面。 - **Quit()**:处理退出系统的操作。 - **Create()**:创建新的数据记录,这里指通讯录中的联系人。 - **Add()**:添加新的联系人信息,并返回用户菜单。 - **Find()**:搜索并显示指定信息,如果找不到则给出提示。 - **Alter()**:修改已有的联系人信息,找不到则提示不存在。 - **Delete()**:删除指定联系人,找不到则通知不存在。 - **List()**:展示通讯录的所有联系人。 3. **链表实现**: - 需要实现一个至少包含10个节点的链表,支持节点的插入、查找、删除、修改和输出等基本操作。 - 数据结构为链表,存储通讯者信息,包括编号、姓名、性别和电话。 - 数据存储方式采用文件,这要求学生理解如何读写文件,与链表结构相结合。 4. **附加功能**: - 通讯录管理系统还需统计男性和女性的人数,这涉及到链表遍历和数据处理。 5. **评估与提交**: - 成绩由出勤、项目完成情况(包括演示给指导老师)、答辩表现和报告提交四个方面组成。 - 所有源代码和课程设计报告需存档,强调了文档管理的重要性。 - 题目难度与成绩关系:选择链表基础题目的同学最高成绩只能为“良”。若想提升成绩,可以选择更复杂的数据结构题目。 6. **灵活性**: 对于有一定数据结构基础且有创新题目想法的同学,可在与指导老师协商后使用自定义题目,但需确保其具备相当的难度和相关性。 这个课程设计题目旨在锻炼学生的编程技能、数据结构理解和实际问题解决能力,同时也注重团队合作和文档管理的实践。通过完成这个项目,学生们能够深入掌握链表的基本操作,以及如何在实际场景中应用数据结构。
2018-06-10 上传
1.1 单项选择题 1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ① A.操作对象   B.计算方法  C.逻辑结构  D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法 2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是① 的有限集合,R是D上的② 有限集合。 ① A.算法 B.数据元素 C.数据操作 D.数据对象 ② A.操作 B.映象 C.存储 D.关系 3. 在数据结构中,从逻辑上可以把数据结构分成 。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 4. 算法分析的目的是① ,算法分析的两个主要方面是② 。 ① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系 C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性 ② A. 空间复杂性和时间复杂性 B. 正确性和简明性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 5. 计算机算法指的是① ,它必具备输入、输出和② 等五个特性。 ① A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 1.2 填空题(将正确的答案填在相应的空中) 1. 数据逻辑结构包括 、 、 和 四种类型,树形结构和图形结构合称为 。 2. 在线性结构中,第一个结点 前驱结点,其余每个结点有且只有 个前驱结点;最后一个结点 后续结点,其余每个结点有且只有 个后续结点。 3. 在树形结构中,树根结点没有 结点,其余每个结点有且只有 个直接前驱结点,叶子结点没有 结点,其余每个结点的直接后续结点可以 。 4. 在图形结构中,每个结点的前驱结点数和后续结点数可以 。 5. 线性结构中元素之间存在 关系,树形结构中元素之间存在 关系,图形结构中元素之间存在 关系。 6. 算法的五个重要特性是__ __ , __ __ , ___ _ , __ __ , _ ___。 7. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i=0;i<n;i++) for (j=0;j<n; j++) A[i][j]=0; 8. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 for (i=0;i<n;i++) for (j=0; j<i; j++) A[i][j]=0; 9. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是__ __。 s=0; for (i=0;i<n;i++) for (j=0;j<n;j++) for (k=0;k<n;k++) s=s+B[i][j][k]; sum=s; 10. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是__ __。 int i=0,s=0; while (s<n) { i++; s+=i; //s=s+i } 11. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是__ __。 i=1; while (i<=n) i=i*2;