淮海工学院计算机工程学院课程设计报告数据结构课程设计
- 格式:doc
- 大小:276.62 KB
- 文档页数:18
课程设计报告课程名称:专业:班级:姓名:学号:成绩:完成日期:年月日任务书摘要本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。
所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。
关键词:黑白棋编程设计目录1.引言 (3)2.课题分析 (6)3.具体设计过程 (7)3.1设计思路 (7)3.2程序设计流程图 (8)3.3.函数实现说明 (12)4.程序运行结果 (14)5.软件使用说明 (18)6.结论 (21)参考文献 (23)1.引言数据结构在计算机科学界至今没有标准的定义。
个人根据各自的理解的不同而有不同的表述方法:Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。
这些联系可以通过定义相关的函数来给出。
”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。
Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型Abstract Data Type)的物理实现。
”Lobert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。
其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。
淮海工学院计算机科学系实验报告书课程名:《数据结构》题目:线性数据结构试验班级:软嵌151学号: 2015123352姓名:吉线性表实验报告要求1目的与要求:1)掌握线性表数据结构的基本概念和抽象数据类型描述;2)熟练掌握线性表数据结构的顺序和链式存储存表示;3)熟练掌握线性表顺序存储结构的基本操作算法实现;4)熟练掌握线性表的链式存储结构的基本操作算法实现;5)掌握线性表在实际问题中的应用和基本编程技巧;6)按照实验题目要求独立正确地完成实验容(提交程序清单及相关实验数据与运行结果);7)按照报告格式和容要求,认真书写实验报告,并于下周周二前统一提交实验报告电子版文档(每次实验全体同学必须提交实验报告电子版,实验报告文档文件命名方式:+学号+数据结构第X次实验报告)提交给学委,而后由学委以班为单位统一打包(包文件名为:软件14X 班-数据结构第X次实验报告)用发给老师;提交纸质报告(每班每次收5份,学委安排,保证每学期每个同学至少提交一次)一起提交给老师。
每次提交电子文档时,学委务必统计和上报未交报告人数和具体;凡逾期不交报告者,不再推迟提交,一律按照旷交处理。
8)积极开展实验组组交流和辅导,严禁直接复制和剽窃他人实验成果,一旦发现严肃处理;9)上实验课前,要求每个同学基本写好程序,并存储在自己的U盘上,用于实验课堂操作时调试和运行。
2实验容或题目(在一个主程序中实现全部题目容)一、顺序表的基本操作实现实验要求:数据元素类型ElemType取整型int。
按照顺序存储结构实现如下算法:1)创建任意整数线性表(即线性表的元素值随机在键盘上输入)的顺序存储结构(即顺序表),长度限定在25之;2)打印/显示(遍历)该线性表(依次打印/显示出表中元素值);3)在顺序表中查找第i个元素,并返回其值;4)在顺序表第i个元素之前插入一已知元素;5)在顺序表中删除第i个元素;6)求顺序表中所有元素值(整数)之和;二、链表(带头结点)基本操作实验要求:数据元素类型ElemType取字符型char。
淮海工学院计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:表达式求值姓名:学号:专业班级:系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室指导教师评语:成绩:签名:年月日1.课程设计目的1、训练学生灵活使用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
2.课程设计任务和要求:任务根据教材《数据结构-C语言描述》(耿国华主编)和参考书《数据结构题集(C语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择使用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。
设计题目从任务书所列选题表中选取,每班每题不得超过2人。
学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度和难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。
学生自选课题需在18周前报课程设计指导教师批准方可生效。
要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。
前期准备工作完备和否直接影响到后序上机调试工作的效率。
在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。
2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。
3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
《数据结构》课程设计报告姓名:潘庆专业:计算机科学与技术班级: J1401学号: 4141110020指导老师:王新宇2016年1月15日目录一、需求分析 (2)二、设计说明 (3)1. 算法设计的思想 (3)2. 主要的数据结构设计说明 (4)3. 程序的主要流程图 (5)4. 程序的主要模块 (6)5. 程序的主要函数及其伪代码说明 (6)三、上机结果及体会 (13)1.实际完成情况说明 (13)2.程序运行结果及图示 (13)3.问题及解决方案 (16)4.收获及体会 (16)附录(源程序) (17)一、需求分析1. 程序所实现的功能:七种排序算法的演示:(1)直接插入排序;(2)冒泡排序;(3)选择排序;(4)快速排序;(5)归并排序;(6)堆排序;(7)基数排序。
要求:(1)设计一个人机交互界面;(2)给出从初始开始时每一趟排序的结果。
2. 程序的输入:用户开始时自行输入排序个数和具体数字(须为整数)void input_int(SqList &L){int i;printf("请输入排序个数:");scanf("%d",&L.length);printf("请输入%d个整数:",L.length);for(i=1;i<=L.length;i++)scanf("%d",&L.r[i].key);}3. 程序的输出:用户选择具体排序方法后,程序将每一趟排序的输出结果一次性输出,最后一趟即为最终排序结果void output_int(SqList L){int i;for(i=1;i<=L.length;i++)printf("%d ",L.r[i].key);}4. 测试数据:12 2 16 30 8 28 4 10 20 6 18二、设计说明1. 算法设计的思想(1). 插入排序基本思路:向有序表中插入新的元素(或记录),使之仍有序,此时表的长度也相应地发生变化。
车牌号管理系统淮海工学院计算机工程学院课程设计报告设计名称: 数据结构课程设计选题名称: 车牌号管理系统姓名: 学号:专业班级: 软件工程系 (院): 计算机工程学院设计时间: 2011.12.19~2011.12.30 设计地点: 软件工程实验室、教室指导教师评语:成绩:签名:年月日数据结构课程设计报告第 1 页,共页1(课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
2(课程设计任务与要求:任务根据教材《数据结构-C语言描述》(耿国华主编)和参考书《数据结构题集(C语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。
设计题目从任务书所列选题表中选取,每班每题不得超过2人。
学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。
学生自选课题需在18周前报课程设计指导教师批准方可生效。
要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。
2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。
3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
淮海工学院计算机科学系实验报告书课程名:《数据结构》题目:线性数据结构实验(栈与队列及其应用)班级:软嵌151学号:2015123352姓名:韩吉线性表算法实现与应用报告要求1目的与要求:1)掌握栈与队列的数据类型描述及特点;2)掌握栈的顺序和链式存储存表示与基本算法的实现;3)掌握队列的链式和循环存储表示与基本操作算法实现;4) 掌握栈与队列在实际问题中的应用和基本编程技巧;5)按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例的运行过程抓获相关屏面验证程序设计的正确性;7)希望大家过一个丰富多彩的国庆节,抽出一定时间圆满完成实验,并于第6周周二以前按时提交实验报告,逾期按照旷交处理。
2 实验内容或题目(一)必做题:1、实现顺序栈的创建(初始化)、压入(插入)操作(数据、弹出(删除)元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并给出栈的每次操作变化状态;2、实现链栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),要求给出栈的操作变化过程;3、实现循环队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并实时给出队列的操作变化状态;4、实现链式队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并实时给出队列的操作变化状态;(注意:必做题需用一个主程序实现所有功能)(二)选做题(视自己能力而定,数量不限):任选下列一个或多个栈或队列应用源程序(已经发给学委),并阅读、调试和运行程序,而后给出程序功能分析和实例运行演示;1、实现表达式求值算法程序;2、用递归算法实现汉诺塔问题算法程序;3、使用循环队列实现打印杨辉三角形算法程序。
3 实验步骤与源程序#include<stdio.h>#include<stdlib.h>#include <windows.h>#define TRUE 1#define FALSE 0#define Stack_Size 50#define MAXSIZE 5void mainmenu();/*********************************************//*顺序栈*/typedef struct{int elem[Stack_Size];int top;}SeqStack;/*链栈*/typedef struct node{int data;struct node *next;}LinkStackNode;/*循环队列*/typedef struct{int element[MAXSIZE];int front;int rear;}SeqQueue;/*链式队列*/typedef struct Node{int data;struct Node *next;}LinkQueueNode;typedef struct{LinkQueueNode *front;LinkQueueNode *rear;}LinkQueue;/*********************************************//********************顺序栈************************/ /*构造一个空栈S*/void InitStack(SeqStack *S){S->top = -1;}/*进栈*/int Push(SeqStack *S,int x){if(S->top==(Stack_Size-1))return(FALSE); /*栈已满*/S->top++;S->elem[S->top]=x;return(TRUE);}/*出栈*/int Pop(SeqStack *S,int *x){/* 将栈S的栈顶元素弹出,放到x所指的存储空间中 */if(S->top==-1) /*栈为空*/return(FALSE);else{*x=S->elem[S->top];S->top--; /* 修改栈顶指针 */return(TRUE);}}/*取栈顶元素*/int GetTop(SeqStack *S, int *x){/* 将栈S的栈顶元素弹出,放到x所指的存储空间中,但栈顶指针保持不变 */ if(S->top==-1) /*栈为空*/return(FALSE);else{*x = S->elem[S->top];return(TRUE);}}/**************************************************//********************链栈**************************//*初始化*/void InitStack1(LinkStackNode *top){ //构造一个空栈top = (LinkStackNode *)malloc(sizeof(LinkStackNode));if(!top)printf("OVERFLOW\n");top = NULL;}/*进栈操作。
淮海工学院计算机工程学院实验报告书课程名:《数据库课程设计》题目:员工管理系统班级:软件142学号:***********名:***目录1 引言 (3)1.1 背景 (3)1.2 系统简介 (3)2 需求分析 (3)2.1 功能需求 (3)2.2 可行性分析 (4)3 系统总体设计 (5)3.1 数据库设计 (5)3.2 界面设计 (10)3.3 时序设计 (10)3.4 接口设计 (16)3.5 代码设计 (16)3.6 测试用例 (20)4 总结 (21)1 引言1.1 背景随着知识经济的来临,计算机技术,网络技术和信息技术已经广泛的应用于社会的各个方面,给现代人的生活、工作带来了巨大的变化。
企业的员工管理正朝着追求高效,低成本,稳定可靠的发展方向。
为此目的,企业需要一个功能完善,性能稳定的员工管理系统。
其主要目的是通过计算机对员工的各种信息进行管理和维护。
员工管理系统共完成了员工资料情况进行添加、查询、修改和删除操作。
员工名册信息的报表查询可添加新的用户以及修改用户原有的用户名、删除原有用户,查询员工基本信息等功能。
达内科技的老师带领我们做了这样一个基于C/S架构数据库设计的员工管理系统。
1.2系统简介开发环境:Windows操作系统、Eclipse、Mysql和Navicat for Mysql软件架构:C/S架构适用对象:小型企业或学校2需求分析2.1 功能需求员工管理系统能够实现登录、添加/删除用户、修改密码、切换用户、退出登录、员工信息管理和员工信息查询等功能。
运行系统,在登录页面可以进行身份验证,登录成功后可以修改密码和用户信息,用户不想使用时可以点击退出系统结束操作。
功能图如图2.1所示。
员工管理系统是将企业的人事管理、工资管理、考勤管理有机相合,综合运用的一个企业管理软件,它使企业的人事管理由以往的手工作业,向自动化、网络化、现代化迈进了一大步。
从而使企业的人事管理人员从繁重的人事管理中解放出来,大大提高了工作效率,减轻了管理人员的工作量。
淮阴工学院数据结构课程设计报告选题名称:二叉排序树(二叉链表结构存储)系(院):计算机工程系专业:计算机科学与技术班级:计算机1091姓名:黄磊学号:1091301108指导教师:张亚红周海岩学年学期:2010 ~ 2011 学年第 1 学期2010 年12 月31 日设计任务书摘要:数据结构是研究与数据之间的关系,我们称这一关系为数据的逻辑结构,简称数据结构。
当数据的逻辑结构确定以后,数据在物理空间中的存储方式,称为数据的存储结构。
相同的逻辑结构可以具有不同的存储结构,因而有不同的算法。
本次课程设计,程序中的数据采用“树形结构”作为其数据结构。
而二叉搜索树又是一种特殊的二叉树。
本课程设中的二叉排序树是基于二叉链表作存储结构的,一共要实现五项基本的功能。
它们分别是二叉搜索树的创建、中序遍历、查找结点、删除结点和计算二叉排序树搜索成功时的平均查找长度。
关键词:二叉排序树;中序遍历;搜索结点;删除结点;平均查找长度目录1需求分析 (1)1.1课程设计题目、任务及要求 (1)1.2课程设计思想 (1)2概要设计 (2)2.1 二叉排序树的定义 (2)2.2二叉链表的存储结构 (2)2.3建立二叉排序树 (2)2.4二叉排序树的生成过程 (3)2.5中序遍历二叉树 (3)2.6二叉排序树的查找 (3)2.7二叉排序树的插入 (4)2.8平均查找长度 (4)3详细设计和实现 (4)3.1主要功能模块设计 (4)3.2主程序设计 (5)4调试与操作说明 (12)4.1程序调试 (12)4.2程序操作说明 (12)总结 (16)致谢 (17)参考文献 (18)1需求分析1.1课程设计题目、任务及要求二叉排序树。
用二叉链表作存储结构(1)以(0)为输入结束标志,输入数列L,生成一棵二叉排序树T;(2)对二叉排序树T作中序遍历,输出结果;(3)计算二叉排序树T查找成功的平均查找长度,输出结果;(4)输入元素x,查找二叉排序树T:若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;1.2课程设计思想建立二叉排序树采用边查找边插入的方式。
淮海工学院计算机工程学院实验报告书课程名:《计算机组成原理》题目:实验四基本模型机实验班级:学号:姓名:1、目的与要求1)在掌握部件单元电路实验的基础上,进一步将其组成系统以构造一台基本模型实验计算机。
2)设计五条机器指令,并编写相应的微程序,具体上机调试,掌握整机软硬件组成概念。
2、实验设备1) ZYE1601B 计算机组成原理教学实验箱一台,排线若干。
2) PC 机一台。
3、实验步骤与源程序l) 实验接线方法如下:(1)跳线器J1~J12全部拨在右边(自动工作方式); (2)跳线器J16、J18、J23、J24全部拨在左边; (3)跳线器J13~J15、J19、J25拨在右边; (4)跳线器J20~J22、J26、J27连上短路片; (5)UJ1连UJ2,JSE1连JSE2,SJ1连SJ2; (6)MBUS 连BUS2; (7)REGBUS 连BUS5; (8)PCBUS 连EXJ2; (9)ALUBUS 连EXJ3; (10)ALUO1连BUS1; (11)EXJ1连BUS3;2) 根据机器指令画出对应的微程序流程图, 当拟定“取指”微指令时,该微指令的判别测试字段为P (1)测试。
由于“取指”微指令是所有微程序都使用的公用微指令,因此P (1)的测试结果出现多路分支。
本机用指令寄存器的前4位I7~I4作为测试条件,出现5路分支,占用5个固定微地址单元。
实验机控制操作为P (4)测试,它以控制开关SWC 、SWA 作为测试条件,出现了3路分支,占用3个固定微地址单元。
当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。
注意:微程序流程图上的单元地址为16进制。
运 行 微 程 序微程序流程图↓ PC →AR0B PC+1↓ RAM →BUS 0E BUS →AR ↓ RAM →BUS 0FBUS →DR1↓DR1→LED1501↓ PC →AR0C PC+1↓RAM →BUS 16BUS →PC01↓ PC →AR09 PC+1↓ RAM →BUS 03 BUS →AR ↓ 04 RAM →BUS BUS →DR2 ↓ 05RO →DR1 ↓ 06(DR1)+(DR2) 01→ROSW →R0↓ 0801↓ 01 PC →AR PC+1↓↓ PC →AR0A PC+1↓ RAM →BUS 07 BUS →AR↓ RO →BUS0DBUS →RAM01控 制器十六进制微地址3)根据微程序流程图设计微指令并转换成16进制代码文件。
淮海工学院计算机工程学院
课程设计报告
设计名称:数据结构课程设计
选题名称:简单行编辑
姓名:侯耀生学号: 2012122694 专业班级:软件工程软件121
系(院):计算机工程学院
设计时间:2013.12.23~2013.1.5
设计地点:软件工程实验室、教室
数据结构课程设计报告第 4 页,共页
数据结构课程设计报告第 5 页,共页{printf("%s\n",p->data);}
while((p=p->next)!=NULL);//遍历链表
}
四设计与调试分析
(1)系统起始界面,要求输入字符串文章
(2)系统主界面
(3)统计字母数
(4)统计数字数
(5)统计空格数
(6)统计文章总字数
(7)统计某个字符串出现的次数
(8)删除指定字符串
(9)退出该系统
(10)未按指定要求输入编号
五用户手册
1.进入用户界面,输入一篇文章,可以包括字母数字以及空格符,完成后按Ctrl+E键。
2.输入完成后,进入用户主界面,在选项1~7内进行选择。
(1)若按1键,统计该篇文章的全部字母数。
(2)若按2键,统计该篇文章的全部数字数。
(3)若按3键,统计该篇文章的全部空格数。
(4)若按4键,统计该篇文章的总字数。
(5)若按5键,统计某个字符串在文章中出现的次数。
(6)若按6键,删除该文章中的指定字符串。
(7)若按7键,退出该系统。
(8)若按8键,则返回异常,提示输入键为1~7键。
六测试成果
七附录(源程序清单)
#include <iostream.h>
#include <string.h>
#include <stdio.h>
//文本每行以字符串形式存储,行与行之间以链表存储。