厦门理工 数据结构课程设计0907052218
厦门理工学院数据结构实验
《数据结构》实验报告实验序号:6 实验项目名称:树和二叉树的操作2.编写函数实现计算叶节点个数。
附源程序清单:#include <stdio.h>#include <stdlib.h>#define max 50typedef struct liuyu{int data;struct liuyu *lchild,*rchild;}test;liuyu *root,*p,*q[max];int sum=0;int m=sizeof(test);void insert_data(int x) /*生成二叉排序树*/{liuyu *p,*q,*s;s=(test*)malloc(m);s->data=x;s->lchild=NULL;s->rchild=NULL;if(!root){root=s;}p=root;while(p) /*如何接入二叉排序树的适当位置*/ {q=p;if(p->data==x){printf("data already exist! \n");return;}else if(x<p->data)p=p->lchild;elsep=p->rchild;}if(x<q->data)q->lchild=s;elseq->rchild=s;}void Preorder(liuyu *bt) //先序遍历输出{if(bt){printf("%d ",bt->data);Preorder(bt->lchild);Preorder(bt->rchild);}}void Inorder(liuyu *bt) //中序遍历输出{if(bt){Inorder(bt->lchild);printf("%d ",bt->data);Inorder(bt->rchild);}}void Postorder(liuyu *bt) //后序遍历输出{if(bt){Postorder(bt->lchild);Postorder(bt->rchild);printf("%d ",bt->data);}}int Leafnum(liuyu *bt){int i=0,j,k;if(bt==NULL) return 0;if(bt->lchild==NULL&&bt->rchild==NULL) i++;j=Leafnum(bt->lchild);k=Leafnum(bt->rchild);return i+j+k;}void main() /*先生成二叉排序树*/{int i,x;i=1;root=NULL; /*千万别忘了赋初值给root!*/do{printf("please input data%d:",i);i++;scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/if(x==-9999){printf("\nNow output data value:\n");}elseinsert_data(x); /*调用插入数据元素的函数*/}while(x!=-9999);printf("先序遍历输出:");Preorder(root);printf("\n中序遍历输出:");Inorder(root);printf("\n后序遍历输出:");Postorder(root);printf("\n叶子总数为:");printf("%d\n",Leafnum(root)); }。
厦门理工 数据结构课程设计报告
《数据结构与算法》课程设计报告(2012— 2013学年第 1 学期)专业:网络工程班级:11网络工程姓名学号:1107022144指导教师:林仙丽成绩:计算机科学与技术系2013 年01 月11 日目录一.课程设计目的与要求 (1)1.设计目的 (1)2.设计任务及要求 (1)二 .方案实现与调试 (1)1.停车场管理系统 (1)1.1算法描述及实验步骤 (2)1.2调试过程及实验结果 (3)2.字符串操作 (4)2.1算法描述及实验步骤 (5)2.2调试过程及实验结果 (6)3.找祖先 (8)3.1算法描述及实验步骤 (9)3.2调试过程及实验结果 (10)4.二叉树运算2 (8)4.1算法描述及实验步骤 (9)4.2调试过程及实验结果 (1)三.课程设计分析与总结 (10)四.源程序清单 (11)1.停车场管理系统 (11)2.字符串操作 (19)3.找祖先 (22)4.二叉树运算2 (25)五.设计日志 (31)六.指导教师评语 (32)2一. 课程设计的目的与要求(含设计指标)1、设计目的(1)培养学生运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。
(2)培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。
(3)培养学生初步的软件设计及软件测试的能力。
2、设计任务及要求基本要求:学生必须仔细阅读《数据结构》课程设计指导书,认真主动完成课程设计的要求。
有问题及时主动通过各种方式与教师联系沟通。
学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。
课程设计按照教学要求需要一周时间完成,一周中每天(按每周5天)至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序15小时。
根据设计报告要求编写设计报告,主要内容包括目的、意义、原理和实现方法简介、过程分析及说明、实验结果情况说明、结论。
数据结构课程设计完整版
通讯录操作系统一.需求分析当今时代是飞速发展的信息时代。
在各行各业中离不开信息管理以及处理,这正是计算机被广泛应用于管理系统的原因。
计算机管理的好处在于利用它能够进行信息储存以及信息编辑。
用计算机储存和控制,大大提高了工作效率也减少了好多人的工作量。
通讯录信息系统不仅仅帮助了人们记忆,同时也为不少管理者提供了方便。
其设计理念较简单,将传统的纸张与笔录方式改为计算机自动化进行通讯录信息管理,既省时间又提高工作效率。
用c语言构建的通讯录系统设计,通过课上学到一些关于结构体、数组、指针、函数以及循环函数的运用和字符串的处理等基本知识可以初步的实现通讯录的输入、显示、查找、删除等简单实用功能,给人们带来更多的方便。
通讯录信息系统的主要功能清单如下:1) 建立通讯录链表;2) 通讯者结点的插入(按编号的次序插入有序通讯录表);3) 通讯者信息的查询(按编号或姓名查找通讯者信息);4) 通讯者信息的删除(按编号或姓名删除通讯者信息);5) 通讯录的显示(显示所有通讯者信息列表);6) 通讯录信息系统的退出测试数据见调试分析。
二.详细设计算法分析:↓↓↓↓↓↓主函数流程图:主函数流程图创建函数流程图:显示通讯录流程图:查找函数流程图(1)find函数:find函数流程图(2)search函数Search函数流程图删除操作流程图:插入函数流程图:退出函数流程图:图11退出函数流程图3)调试分析及测试结果进入系统后,系统会出现图所示菜单:在主菜单中输入1后,系统会给出提示,如图所示:在主菜单中输入3后,输入要找的姓名。
在系统没有要找信息时或链表为空时,系统会给出提示,确认用户是否继续查找,如图所示:(链表为空时的查找)若要继续查找则按1 ,不是则按0,如图所示:(链表非空的查找)在主菜单中输入0后,系统会给出提示,提示用户输入相关信息,如图所示:依次输入提示信息输入信息:1wuyifeinv139********Wuhan2wwnv132********Wuhan再在主菜单输入1后,程序显示如图所示:在主菜单中输入2后输入要删除的编号,系统便自动删除要删除的通讯录信息,如图15所示:按1显示查看是否删除如图:输入4进行插入操作,如图所示:插入信息如下2wyfnv12345678912wuhan按1进行显示如下图:现在如果没有其他的操作则可按5退出,操作如图所示:实验心得:通过这次课程设计,我熟练的掌握了结构体、数组、指针、函数以及循环函数的运用和字符串的处理,了解代码中出现错误寻找错误的方法,初步了解到了一个完整的应用程序,应该如何处理美观与实用之间的关系,如何处理实际需求与操作难度之间的关系,并让我深刻了解到数据结构这门课的重要性和实用性,在以后的学习中,我将更加努力的学习并动手实践这门课程。
数据结构课程设计pdf
数据结构课程设计 pdf一、课程目标知识目标:1. 让学生掌握数据结构的基本概念,包括线性表、栈、队列、树、图等;2. 使学生了解不同数据结构的特点,并能运用其解决实际问题;3. 引导学生掌握常见数据结构的相关算法,如排序、查找等。
技能目标:1. 培养学生运用数据结构描述问题的能力,提高编程实现复杂问题的技能;2. 培养学生具备分析算法复杂度,选择合适数据结构和算法解决问题的能力;3. 提高学生的团队协作能力,通过小组讨论和项目实践,培养学生的沟通表达能力和协作精神。
情感态度价值观目标:1. 激发学生对计算机科学的兴趣,培养学生主动探索、勇于创新的精神;2. 培养学生具备良好的学习习惯,严谨的学术态度,对待问题敢于质疑、善于思考;3. 引导学生认识到数据结构在实际应用中的重要性,提高学生的专业认同感。
本课程针对高中年级学生,结合数据结构课程性质,注重理论与实践相结合,培养学生解决实际问题的能力。
考虑到学生的年龄特点,课程设计力求生动有趣,以激发学生的学习兴趣。
在教学过程中,注重启发式教学,引导学生主动探索、积极思考,提高学生的综合素质。
通过本课程的学习,期望学生能够达到上述课程目标,为后续计算机科学课程打下坚实基础。
二、教学内容1. 线性表:介绍线性表的定义、特点和基本操作,包括顺序存储和链式存储的实现方法。
教材章节:第一章第一节进度安排:2课时2. 栈和队列:讲解栈和队列的基本概念、性质以及应用场景,实现顺序栈和链栈、循环队列等。
教材章节:第一章第二节进度安排:3课时3. 树和二叉树:阐述树和二叉树的基本概念、性质、存储结构及遍历方法,包括二叉排序树、平衡二叉树等。
教材章节:第二章进度安排:5课时4. 图:介绍图的定义、存储结构、遍历算法以及最短路径、最小生成树等算法。
教材章节:第三章进度安排:5课时5. 排序与查找:讲解常见排序算法(冒泡、选择、插入等)和查找算法(顺序、二分、哈希等),分析其算法复杂度。
数据结构课程设计(附代码)-数据结构设计说明
应用技术学院课程设计报告课程名称《数据结构课程设计》设计题目猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级学号指导教师日期一.目的与要求1. 巩固和加深对常见数据结构的理解和掌握2. 掌握基于数据结构进行算法设计的基本方法3. 掌握用高级语言实现算法的基本技能4. 掌握书写程序设计说明文档的能力5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力二.课程设计容说明1. 项目一(1) 对设计任务容的概述学生成绩管理**任务:要现对学生资料的录入、浏览、插入和删除等功能。
输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:学号和各门课程的成绩,设学生成绩至少3门以上。
存储结构:采用线性链式结构。
(2) 详细设计LinkList *create():输入学生成绩记录函数;void print(LinkList *head):显示全部记录函数LinkList *Delete(LinkList *head):删除记录函数LinkList *Insert(LinkList *head):插入记录函数void menu_select():菜单选择void ScoreManage():函数界面(3) 程序流程图(4) 程序模块及其接口描述该程序可以分为以下几个模块:1、菜单选择:void menu_select();提供五种可以选择的操作,在main函数过switch语句调用菜单menu_select()函数,进入不同的功能函数中完成相关操作。
2、输入功能:LinkList *create();通过一个for循环语句的控制,可以一次完成无数条记录的输入。
并将其存入链表。
3、输出功能:void print(LinkList *head);通过一个while的循环控制语句,在指针p!=NULL时,完成全部学生记录的显示。
知道不满足循环语句,程序再次回到菜单选择功能界面。
厦门理工c语言课课程设计
厦门理工c语言课课程设计一、教学目标本课程旨在通过C语言的学习,让学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,培养学生编程思维和解决问题的能力。
同时,通过课程的学习,使学生了解编程在实际应用中的重要性,提高学生对计算机科学的兴趣和热情。
具体的教学目标如下:1.知识目标:(1)理解C语言的基本语法和编程规范;(2)掌握C语言的数据类型、运算符和表达式;(3)熟悉C语言的控制结构,如顺序结构、分支结构和循环结构;(4)了解函数的定义和调用,掌握函数的参数传递和返回值;(5)理解编程中常用的数据结构,如数组、链表、栈和队列等。
2.技能目标:(1)能够使用C语言编写简单的程序,解决实际问题;(2)具备基本的编程思维,能够独立分析和解决编程问题;(3)掌握C语言的调试技巧,能够有效地查找和修复程序错误。
3.情感态度价值观目标:(1)培养学生对编程的兴趣,提高学生对计算机科学的认识;(2)培养学生良好的编程习惯,提高学生的自律性和责任感;(3)培养学生团队合作精神,提高学生的沟通能力和协作能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。
具体安排如下:1.第一章:C语言概述介绍C语言的发展历程、特点和应用领域,使学生对C语言有一个整体的认识。
2.第二章:数据类型和运算符讲解C语言的基本数据类型、复杂数据类型和运算符,使学生能够熟练使用C语言进行数据操作。
3.第三章:控制结构介绍C语言的控制结构,包括顺序结构、分支结构和循环结构,使学生能够根据实际问题选择合适的控制结构。
4.第四章:函数讲解函数的定义、声明和调用,使学生能够理解函数的基本概念,并掌握函数的参数传递和返回值。
5.第五章:数组和字符串介绍数组和字符串的概念及其在C语言中的应用,使学生能够熟练使用数组和字符串解决实际问题。
6.第六章:指针讲解指针的概念和用法,使学生能够掌握指针在C语言中的应用,提高程序的性能。
数据结构课程设计目录及正文
数据结构课程设计目录及正文一、课程设计目的数据结构是计算机科学中的一门重要基础课程,通过课程设计,旨在让学生更深入地理解和掌握数据结构的基本概念、原理和算法,并能够将其应用到实际问题的解决中。
培养学生的问题分析能力、算法设计能力、程序编写能力和调试能力,提高学生的综合素质和创新能力。
二、课程设计要求1、学生需独立完成课程设计任务,不得抄袭他人成果。
2、课程设计应具有清晰的结构和良好的可读性,代码规范,注释详细。
3、选择合适的数据结构和算法解决给定的问题,并对算法的时间复杂度和空间复杂度进行分析。
4、完成课程设计报告,包括问题描述、算法设计、程序实现、测试结果和总结等内容。
三、课程设计题目1、图书管理系统实现图书的添加、删除、查询、修改等功能。
按照图书的分类、作者、书名等进行排序和查找。
2、学生成绩管理系统录入学生的成绩信息,包括学号、姓名、课程名称、成绩等。
计算学生的平均成绩、总成绩,并按照成绩进行排序。
3、公交线路查询系统建立公交线路的网络模型。
实现站点之间的最短路径查询和换乘方案查询。
4、停车场管理系统模拟停车场的车辆进出管理。
计算停车费用,显示停车场的当前状态。
四、课程设计目录1、引言2、需求分析问题描述功能需求数据需求性能需求3、总体设计系统架构模块划分数据结构设计4、详细设计模块功能描述算法设计界面设计5、编码实现代码框架关键代码实现6、测试与调试测试用例测试结果调试过程7、总结课程设计的收获遇到的问题及解决方法对数据结构课程的进一步理解8、参考文献9、附录源程序代码五、正文内容(一)引言随着信息技术的不断发展,计算机在各个领域的应用越来越广泛。
数据结构作为计算机科学的重要基础,对于提高程序的效率和质量起着至关重要的作用。
本次课程设计旨在通过实际项目的开发,让学生将所学的数据结构知识运用到实践中,提高解决实际问题的能力。
(二)需求分析1、问题描述以图书管理系统为例,系统需要对图书馆中的图书进行有效的管理,包括图书的基本信息(书名、作者、出版社、出版日期、ISBN 号等)、图书的库存数量、借阅状态等。
厦门理工学院数据结构实验5
q.push(c); //进队列 c=getchar(); }
printf("该队列长度为:%d\n",q.size()); printf("队列打印输出为:"); while(!q.empty()) {
printf("%c ",q.front()); //得到队首的值 q.pop(); //出队列 } printf("\n"); }
五、教师评语
成绩
签名:
日期:
附源程序清单: #include <iostream> #include <queue> using namespace std; void main() {
queue<int> q; //使用前需定义一个 queue 变量,且定义时已经初始化 char c; printf("请输入所有元素的值,以‘#’结束:\n"); c=getchar(); while(c!='#') {
实验序号:5
《数据结构》实验报告
实验项目名称:队列的操作
学号
姓名
实验地点 实 1#514 指导教师 林仙丽
一、实验目的及要求 1. 熟悉队列的基本概念; 2. 掌握队列的链式表存储结构; 3.掌握队列的应用。
、实验设备(环境)及要求 微型计算机; windows 操作系统; Microsoft Visual Studio 6.0 集成开发环境。
三、实验内容与步骤
1.C/C++的库函数中已经实现了队列,引用方法为#include <queue>,请上网查 阅资料,完成习题。 ①创建一个队列。②将 a、b、c、d、e、f 依次入队。③若队列不为空,将元素 出队并打印输出。
数据结构与程序设计课程设计
数据结构与程序设计课程设计1. 前言数据结构是计算机科学中非常基础的学科,它是计算机程序设计的基础。
程序设计与数据结构课程是计算机类专业的核心课程之一,本次课程设计旨在通过实践,提高学生对数据结构的理解,培养学生程序设计能力,加强团队协作意识,提高综合能力。
本文档将介绍数据结构与程序设计课程设计的内容和要求。
2. 课程设计目标1.提高学生对数据结构的理解;2.培养学生程序设计能力;3.加强团队协作意识;4.提高综合能力。
3. 课程设计内容本次课程设计要求学生通过团队协作完成以下任务:1.以指定的数据结构为基础,开发一个能够完成指定功能的程序;2.针对程序的性能、可靠性、可扩展性、易用性等方面进行测试和优化;3.撰写开发文档和用户手册。
4. 数据结构选择本次课程设计指定以下数据结构供学生选择:1.树(二叉搜索树、平衡树、红黑树等);2.图(无向图、有向图等);3.堆(最大堆、最小堆等);4.队列(单向队列、双向队列等)。
5. 任务说明5.1 任务要求学生需要完成以下任务:1.选择一个数据结构,并开发一个能够完成指定功能的程序;2.针对程序的性能、可靠性、可扩展性、易用性等方面进行测试和优化;3.撰写开发文档和用户手册。
5.2 功能要求根据所选择的数据结构,要求程序能够完成以下功能:1.树:实现二叉搜索树(BST),并实现查找、插入和删除操作;2.图:实现有向图(DAG),并实现拓扑排序和关键路径计算;3.堆:实现最大堆(Max Heap),并实现插入、删除和查找最大值等操作;4.队列:实现单向队列(Queue)或双向队列(Deque),并实现入队、出队、查找队首元素等操作。
5.3 技术要求1.程序实现语言为C或C++;2.要求程序具有良好的可读性、可维护性和代码规范性;3.要求程序具有较高的运行效率和空间效率;4.要求程序具有良好的用户交互及用户体验。
5.4 组成要求课程设计分组完成,一般2-5人一组,每个小组需要提交以下文件:1.程序源代码(包括注释);2.程序可执行文件(打包压缩);3.测试报告,包括测试数据、测试结果、测试分析;4.开发文档,包括问题描述、系统分析、设计思路、流程图、代码说明等;5.用户手册,包括系统使用说明。
厦门理工学院数据结构实验2
《数据结构》实验报告实验序号:2 实验项目名称:顺序表的实现四、实验结果与数据处理1.设A、B均为用数组实现的List类型的有序顺序表,试设计一个函数Alternate,从A、B读取值,构件数组C,使得C的值也有序。
要求:用不同的方式实现(至少两种),并比较算法的效率。
(1)运行结果:图1:先合并之后再排序图2:合并时排序(2)问题分析:在这一问题中,A顺序表和B顺序表的合并方法可以分为先将这两个顺序表合并后排序或者在输入时就对其进行比较元素大小排序。
这里第一种方法,因为上一次实验学习过了快速排序,所以这一次我采用了另一种方法——希尔排序,希尔排序法是对直接插入排序法的优化,通过设置一个增量,对原始序列进行分组,对每组用直接插入排序法排序再整合,再缩小增量,周而复始直至增量为1,完成排序,因此又叫“缩小增量排序法”。
希尔排序的算法性能在面对大量数据时会高于快速排序,它的平均时间复杂度为n*log2n,整体范围为n^(1.3—2)之间。
第二种方法是我们在输入时就对新顺序表进行排序,在输入A顺序表的时候我们正常接收数据,而在输入B顺序表时,我们通过遍历一次当前顺序表同时结合插入数据函数来将B顺序表输入的数据放到正确的位置上,来使整个顺序表能够有序,整体时间复杂度为n^2左右,可见第一种方法的算法效率会更高一些。
2.顺序表表示和实现线性表的如下:【要求】(1)实现顺序表的插入、删除、按值查找等基本操作;(2)假设构建的是非递增有序顺序表,设计算法实现从该有序顺序表中删除所有其值重复的元素,使得表中所有元素的值均不同。
(3)设有一元素为整数的线性表L=(a1,a2,a3,…,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左、右两部分,其中左半部分每个元素小于等于an,右半部分每个元素都大于an, an位于分界位置上(要求结果仍存放在A[N]中)。
(4)分析以上算法的时间复杂性。
数据结构 课程设计
数据结构课程设计
数据结构课程设计是一门计算机科学与技术专业的通识基础课程,旨在培养学生基本的数据结构与算法设计能力。
课程设计是课程教学的重要组成部分,通过解决实际问题来巩固和应用课程所学的知识和技能。
数据结构课程设计的目标是让学生能够熟练运用各种常用的数据结构(如数组、链表、栈、队列、树、图等),了解它们的特点、操作和应用场景,并能够根据问题需求选择合适的数据结构。
同时,课程设计还培养学生的程序设计、算法分析与优化能力,使其能够设计高效的算法并解决实际问题。
数据结构课程设计通常包括以下内容:
1. 需求分析和问题建模:分析实际问题的需求,建立相应的模型。
2. 数据结构的选择与设计:根据问题的特点选择合适的数据结构,并进行相应的设计。
3. 算法设计与优化:设计解决问题的算法,并优化其效率。
4. 程序实现与调试:将算法转化为具体的程序代码,并进行调试和测试。
5. 算法复杂度分析:对算法的时间复杂度和空间复杂度进行分析,评估算法的效率。
6. 实验报告撰写:整理和总结课程设计的过程和结果,撰写实验报告。
学生在完成数据结构课程设计时,通常需要选择一个实际问题进行解决,通过分析问题需求、选择合适的数据结构和设计相
应的算法,最后将算法实现并进行测试。
通过这个过程,学生能够掌握数据结构与算法的基本原理和应用方法,并培养解决实际问题的能力。
《数据结构》课程设计任务书
一.课程设计的任务每位同学做两题:一题在设计题中每人相对应一题号另一题必选题(每个班级有一必选题)二. 要求:1、对相应的题目进行算法设计2、编写源代码3、上机调试4、显示调试结果5、写出实验总结三.课程设计进度安排设计总学时为2周课程设计每周大体分五个阶段:1、选题与搜集资料:每人选择相应题目,进行课程设计课题的资料搜集.2、分析与概要设计:根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构,并在此基础上进行实现程序功能的算法设计.3、程序设计:运用掌握C语言编写程序,实现所程序的各个模块功能.4、调试与测试:自行调试程序,成员交叉测试程序,并记录测试情况.5、实习报告:编写实习报告6、验收与评分:指导教师对每个小组的开发的系统,及每个成员开发的模块进行综合验收.结合设计报告,根据课程设计成绩的评定方法,评出成绩.四.课程设计考核标准考核时主要有如下几项参考:1、初步设计内容的考核:是否有查阅资料能力?是否有设计思想?2、程序编码能力调试能力的考核:程序是否清晰、易读?在技算计上是否可独立完成程序的调试,是否熟练?3、说明书质量的考核:设计结构是否合理?叙述是否正确?方案是否可行?4、答辩:设计结果的调试能力,对自己设计是否熟练?5、出勤率极平时表现的考核:出勤超过2次不到者成绩为不及格。
五.课程设计报告的内容设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料.设计报告以规定格式的电子文档书写,打印并装订,排版及图,表要清楚,工整.装订顺序如下:封面、目录、正文.正文包括以下7个内容:1.需求分析陈述说明程序设计的任务,强调的是程序要做什么,需要什么结果、所能达到的功能.2.概要设计说明本程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系.3.详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图、N S 图进行描述,画出函数和过程的调用关系图.4.调试分析内容包括:a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;c.经验和体会等.5.测试结果列出你的测试结果,包括输入和输出.这里的测试数据应该完整和严格,最好多于需求分析中所列.6.参考文献列出参考的相关资料和书籍.封面格式如下:数据结构课程设计报告题目——采用的方法班级:_________________________姓名:__________________________ 指导教师:__________________________ 成绩:__________________________信息工程学院年月日。
数据结构课程设计
合肥学院计算机科学与技术系课程设计报告2017~2018学年第二学期课程数据结构与算法课程设计名称文本文件单词的检索与计数学生姓名陈映而学号**********专业班级16软件工程(1)班指导教师孙斐文本文件单词的检索与计数一、问题分析和任务定义要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。
(1)建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构二、数据结构的选择和概要设计数据结构:1.所有存储形式都用顺序存储2.用矩阵检索单词出现的位置和次数概要设计:该设计要求可分为三个部分实现:1.对文件的操作,其中包括文本文档的建立,文件名由用户用键盘输入;以及读取文本文档内容并显示在屏幕上;2.给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;3.检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。
图2-1 课题目录图2-2 流程图图2-3 函数关系开始输入number 显示主菜单 n=1? Y Nn=2? Y Nn=3? Y Nn=4?Y结束 文件操作单词定位输入numbern=1? 单词计数Y 创建文件内容显示N主菜单n=2? Y Nn=3? Y 写入文本N返回主菜单三、详细设计和编码1.头文件包含:#include<stdio.h>#include<stdlib.h>#include<string.h>2.功能细分(1)创建自定义名字文档①用字符数组filename存放特定的文件路径(D:\\Dev-Cpp\\课程设计数据\\)②从键盘输入自定义的文档名字name,把name和“.txt”用strcat连接③再用strcat把路径filename与文档名name连接起来④打开文件时用变量(filename)表示文件名,若无该文件则创建图3-1 创建自定义名字文档编码(2)打开文件读取内容并输出①输入文档名字,根据名字打开文件②打开文件后,用fgets读取文档内容③fgets读取一行输出一行,并用i记录行数④fgets返回EOF(END OF FILE)表示文件结尾(3)写入文本①输入文档名字,根据名字打开文档,若无该文档,则重新建立一个。
2009级数据结构课程设计任务书-总则
2009级数据结构课程设计任务书课程设计教学目的数据结构是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。
数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
本课程属于集中实践教学环节,是在学习了C语言、面向对象程序设计(C++)和数据结构后开设的。
要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C(C++,Java)程序并上机调试的基本方法。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
设计要求1、学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
每个学生必须独立完成;2、课程设计时间为2周;3、设计语言不限;鼓励学生采用GUI设计;4、充分利用课余时间完成源程序和课程设计报告等文档书写工作,上机时带上源程序、数据结构教材、C++语言教材。
5、上机任务1)选择合适的数据结构,并定义数据结构的结构体;2)根据程序所要完成的基本要求和程序实现提示,设计出完整的算法;3)设计出主程序或界面,使其成为完整的程序。
6、无论在校外、校内,都要严格遵守学校的学习和劳动纪律、规章制度,学生有事离校必须请假。
课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。
7、学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。
《数据结构》课程设计计划书
《数据结构》课程设计计划书《数据结构》课程设计计划书班级:2012信计专业授课教师:马阿曼⼀、课程设计⽬的《数据结构》课程是计算机科学与技术专业的核⼼专业基础课。
本课程设计的⽬的是将数据结构理论和实践结合起来,锻练学⽣编写程序过程中的数据结构使⽤和分析、解决实际问题的能⼒。
1、使学⽣进⼀步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使⽤⽅法。
2、使学⽣掌握软件设计的基本内容和设计⽅法,并培养学⽣进⾏规范化软件设计的能⼒。
3、使学⽣掌握使⽤各种计算机资料和有关参考资料,提⾼学⽣进⾏程序设计的基本能⼒。
⼆、课程设计内容《数据结构》课程设计包含以下主要内容:1、查阅相关资料确定课题;2、课题所设计的数据结构设计、算法设计;3、编写代码并调试;4、完成课程设计报告;5、进⾏课设答辩。
三、设计地点及时间安排地点:瑞樟6-402时间:2014年6⽉3、4、5、6、7、8号四、课程设计报告的书写格式1、问题描述:描述要求编程解决的问题。
2、基本要求:给出程序要达到的具体的要求。
3、测试数据:设计测试数据,或具体给出测试数据。
要求测试数据能全⾯地测试所设计程序的功能。
4、算法思想:描述解决相应问题算法的设计思想。
5、模块划分:描述所设计程序的各个模块(即函数)功能。
6、数据结构:给出所使⽤的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。
7、算法设计分析:给出算法的设计分析和算法流程图。
8、源程序:给出所有源程序清单,要求程序有充分的注释语句,⾄少要注释每个函数参数的含义和函数返回值的含义。
9、测试情况:给出程序的测试情况,并分析运⾏结果。
10、收获及体会:写出此次课程设计过程中的收获及体会。
五、评分标准1、程序运⾏结果(30%)2、设计报告(30%)3、设计考勤,平时上机成绩,教师不定期检查(10%)4、学⽣根据⾃⼰设计报告对教师的提问可以熟练的解释(10%)5、设计课题的难易程度(20%)六、参考设计题⽬课程设计题⼀:学⽣成绩管理系统设计⽬的:1、掌握线性链表的建⽴。
数据结构课程设计
数据结构是计算机课程的一门重要的基础课,它的教学要求大致有三个重要方面:其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。
本综合实训利用Visual Studio 2008 集成编程环境为实践工具,通过上机实践培养学生分析具体问题、解决实际问题的能力,训练和培养学生的数据抽象能力和程序设计的能力。
数据结构是一门实践性较强的课程,以养学生的数据抽象能力和程序设计的能力为目的。
在实训时应注重培养学生的实际操作能力。
本综合实训安排了20学时的实验课时,完成4次上机作业。
具体要求如下:1. 学习和理解每个实训题目的基本理论和方法;2. 掌握每个实验的实现步骤和关键技术;3. 准备好实验所需要的资源和文档;4. 上机实现程序,得到通过调试的正确程序。
5. 根据每个实验的不同要求,完成实验报告的word文档。
二.实训环境Windows 7Visual Studio 2012三、实训内容1 )问题描述使用下面的数据,设计一个简单的成绩管理系统,实现出最基本的功能。
学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成学号姓名性别宿舍号码电话号码01 张成成男 501 8773211102 李成华女 101 8772311203 王成凤女 101 8772311204 张明明男 502 87734333……. .. …………..学生成绩基本信息文件(B.TXT)及其内容:学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分01 A01 大学物理 3 66 78 8202 B03 高等数学 4 78 -1 9001 B03 高等数学 4 45 -1 8802 C01 VF 3 65 76 66数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。
课程设计教学大纲
厦门理工学院课程设计教学大纲课程设计名称:数据库技术课程设计学分:1学分课程设计时间:课程设计年级:2010级课程设计学时或周数:1周课程设计专业:电子商务一、课程设计的目的、任务与要求本课程是为了配合数据库原理与技术课程开设的,通过本次设计巩固基础知识,完成大纲所要求的任务。
设计一完整的数据库。
掌握数据设计各阶段的输入、输出、设计环境、目标和方法。
熟练掌握两个主要环节——概念结构设计与逻辑结构设计;熟练的使用SQL语言实现数据库以及数据库重要对象的建立、应用和维护。
培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。
培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。
二、选题的原则及题目难度、深度、广度分析1.课程设计的内容应属课程范围,应能满足课程设计的教学目的与要求,能使学生得到较全面的综合训练。
2.课程设计题目的难度和工作量应适合学生的知识和能力状况,使学生在规定的时间内既工作量饱满,又能经过努力完成任务。
3.课程设计题目可以由指导教师拟定,也可以由学生自拟。
三、课程设计内容要求掌握数据库的设计的每个步骤,以及提交课程设计报告,内容包括下面各步骤所需图表和文档。
在SQL Server2005环境下,建立所设计的数据库,并在此基础上实现数据库查询、连接等操作和触发器、存储器等对象设计。
(一)需求分析自定一设计实例,用详细描述需求分析过程。
其中可以借助业务流程图、数据流程图(DFD)、数据字典(DD)等图表工具。
(二)概念结构设计结合前一步的分析,绘制所选实例详细的E—R图,并加适当的文字说明。
如果所选系统比较复杂,可以先画局部E-R图,然后合并成全局。
(三)逻辑结构设计将E-R图转换成等价的关系模式;按需求对关系模式进行规范化;对规范化后的模式进行评价,调整模式,使其满足性能、存储等方面要求;根据局部应用需要设计外模式(视图)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程设计报告姓名:刁方圆学号:0907052218班级:09软2设计时间:2010.12.20~2010.12.24 审阅教师:谢彦麒课程设计报告通讯录管理系统•一、题目内容的描述通讯录一般包括通讯者的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。
•二、应用程序功能的详细说明程序主要能实现添加记录、查找记录、删除记录。
•三、输入数据类型、格式和内容限制;本程序所有数据都可输入字符型。
•四、主要模块的算法描述生成菜单:创建结点:struct record{char name[8];char sex[20];char num[20];char tel[20];char address[20];}student[500];struct slnode{record date;struct slnode *next;struct slnode *prior;};利用顺序表储存通讯录信息。
查找函数search():printf("\n\t\t请输入姓名:");scanf("%s",name);for(int i=a;i<num;i++,p=p->next){if(strcmp(name,p->next->)==0){p rintf….. ..记录删除:for (j=i;j<num-1;j++)student[j]=student[j+1];num--;创建通讯录:添加一项记录:删除操作:•五、结束语通过本题的锻炼,让我更加熟悉顺序表的使用了。
顺序表虽然查询比较方便,但在插入删除操作都比较繁琐。
或许还能用链式表做改进。
•六、程序的源代码清单#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>struct record{char name[8];char sex[20];char num[20];char tel[20];char address[20];}student[500];struct slnode{record date;struct slnode *next;struct slnode *prior;};typedef slnode * linklist;linklist l;int num=0;FILE *fp;void mainmenu();void searchmenu();void enter();void search();void display();void load();void save();void delet();void listinsert();void initlist();void main(){initlist();load();listinsert();while (1)mainmenu();}void load(){if((fp=fopen("student.bin","rb"))==NULL){printf("\n\t\t通讯录文件不存在");if ((fp=fopen("student","wb"))==NULL){printf("\n\t\t建立失败");exit(0);}else{printf("\n\t\t通讯录文件已建立");printf("\n\t\t按任意键进入主菜单");getch();return;}exit(0);}fseek(fp,0,2);if (ftell(fp)>0){rewind(fp);for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);printf("\n\t\t文件导入成功");printf("\n\t\t按任意键返回主菜单");getch();return;}printf("\n\t\t文件导入成功");printf("\n\t\t通讯录文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}void mainmenu()//主菜单{char choic;system("cls");printf("\n\t\t***************欢迎进入通讯录系统***************");printf("\n\t\t******************1-新添纪录 ******************");printf("\n\t\t******************2-查找联系人 ****************");printf("\n\t\t******************3-删除联系人 ***************");printf("\n\t\t******************4-保存退出 *****************"); printf("\n\t\t******************5-不保存退出 ***************"); printf("\n\t\t************************************************");printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':enter();break;case '2':searchmenu();break;case '3':delet();break;case '4':save();break;case '5':exit(0);default:mainmenu();}}void searchmenu()//查询菜单{char choic;system("cls");printf("\n\t\t******************* 查询菜单 *******************");printf("\n\t\t**************** 1-显示所有 ********************");printf("\n\t\t**************** 2-按姓名查询 ******************");printf("\n\t\t**************** 3-返回主菜单 ******************");printf("\n\t\t************************************************");printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':display();break;case '2':search();break;case '3':mainmenu();break;}}void enter()//添加纪录{printf("\n\t\t**************** 请输入学生信息****************\n");printf("\n\t\t姓名:");scanf("%s",&student[num].name);printf("\n\t\t性别:");scanf("%s",&student[num].sex);printf("\n\t\t编号:");scanf("%s",&student[num].num);printf("\n\t\t输入电话:");scanf("%s",&student[num].tel);printf("\n\t\t地址:");scanf("%s",&student[num].address);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')enter();return;}void display()//显示所有{int i;system("cls");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************");for (i=0;i<num;i++){printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t编号: %s",student[i].num);printf("\n\t\t电话: %s",student[i].tel);printf("\n\t\t地址: %s",student[i].address);printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************");}elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return;}void save()//写入文件{int i;if ((fp=fopen("student","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&student[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t");exit(0);}void listinsert()//增加一个结点{linklist s,p=l;for(int i=0;i<num;i++){s=new slnode;strcpy(s->,student[i].name);strcpy(s->date.num,student[i].num);strcpy(s->date.sex,student[i].sex);strcpy(s->date.tel,student[i].tel);strcpy(s->date.address,student[i].address);s->prior=p->prior;s->next=p;p->prior->next=s;p->prior=s;p=p->next;}}void initlist(){l=new slnode;l->next=l;l->prior=l;}void search(){int j=0,a=0;linklist p=l;printf("\n\t\t***************** 按姓名查找 *******************");char name[8];printf("\n\t\t请输入姓名:");scanf("%s",name);for(int i=a;i<num;i++,p=p->next){if(strcmp(name,p->next->)==0){printf("查询到的信息:");printf("\n");printf("姓名:");printf("%s",p->next->);printf("\n");printf("编号:");printf("%s",p->next->date.num);printf("\n");printf("地址:");printf("%s",p->next->date.address);printf("\n");printf("性别:");printf("%s",p->next->date.sex);printf("\n");printf("电话:");printf("%s",p->next->date.tel);j++;}if(j==0)printf("\t\t该通讯录没有该人!");if ((i+1)<num){printf("\n\t\t是否继续查找相同名字的学生信息:(y/n)");if (getch()=='y'){a=i;continue;}elsereturn;}else{printf("\n\t\t按任意键返回主菜单");getch();return;}}}void delet(){int a=0;int findmark=0;int j;int deletemark=0;int i;char name[8];printf("\n\t\t请输入要删除学生姓名:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(student[i].name,name)==NULL){printf("\n\t\t以下是您要删除的学生纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t性别: %s",student[i].sex);printf("\n\t\t编号: %s",student[i].num);printf("\n\t\t电话: %s",student[i].tel);printf("\n\t\t地址: %s",student[i].address);printf("\n\t\t________________________________");printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的同学信息?(y/n)");if (getch()=='y'){a=i;continue;}}printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')delet();return;}if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的同学信息?(y/n)");if (getch()=='y'){a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)){printf("\n\t\t没有该同学的纪录");return;}elseif (findmark!=0){printf("\n\t\t没有重名信息");printf("\n\t\t没有该同学的纪录");return;}}仓库管理系统•一、题目内容的描述设计一个仓库管理系统,可以按照顺序和货物名称查询仓库的存储情况,也可以增加或删除货物。