计算机工程系课程设计报告

合集下载

幻方 C++课程设计报告

幻方 C++课程设计报告

淮阴工学院C++程序设计课程设计报告选题名称:幻方系(院):计算机工程系专业:通信工程班级:通信XXXXX姓名:XXX 学号:XXXXXXXXXXXXX 指导教师:戴峻峰赵建洋学年学期:200X ~ 200X 学年第X学期200X 年XX 月XXX 日设计任务书指导教师(签章):年月日摘要:幻方是一个非常神秘的课题,它有着悠久的历史文明。

我们这些炎黄子孙对它有着很深入的了解和研究。

幻方就是一个方阵,它有着自己的规则和定义。

就象你玩游戏一样,你要遵从游戏规则才能去完成它。

幻方可分为奇阶幻方和偶阶幻方,同时偶阶幻方又可以分为双偶阶和单偶阶。

奇阶幻方比偶阶幻方简单一些。

幻方要运用到数组的知识,首先我要把数组的赋值,输出等。

首先我要回顾一下这些知识,进而全面的讨论了幻方操作的基本理论。

幻方还运用到循环体结构等知识。

我要先把这些看明白,才可以完成这个程序设计。

在这过程中我要多思考多总结,善于去研究去探索,这样才能把这个课题完成好。

幻方的规则就是它每一行和每一列的和及两条对角线的和要相等,每列,每行,每条对角线的和称之为幻和。

这样你排出来的才叫幻方,否则没有条理,那样就没有意义了。

幻方中所排的数就是从1开始到N的平方结束。

所谓双偶阶就是指N能被4整除,单偶阶就是指能被2整除但不能被4整除。

给出主要的流程图,最后编写软件代码。

关键词:连续摆数法;阶梯法;对称法;斯特雷奇法;LUX方法;奇阶幻方;双偶阶幻方;单偶阶幻方目录1课题综述 (1)1.1课题来源 (1)1.2课题意义 (1)2需求分析 (1)2.1涉及的知识基础 (1)2.2总体方案 (3)3课题内容 (3)3.1奇数阶幻方的制作 (3)3.2偶数阶幻方的制作 (5)3.3流程图 (11)4代码和解析 (11)5程序的运行与测试 (21)总结 (24)致谢 (26)参考文献 (27)1 课题综述1.1课题来源幻方又称为魔方,方阵或厅平方,它最早起源于我国。

软件工程课程设计五子棋游戏

软件工程课程设计五子棋游戏

计算机工程系课程设计报告课程名称:软件工程课程设计题目:五子棋游戏班级 2013级计科(4)班姓名许婷娜学号 ***********2015年12月27日目录1. 引言 (1)1.1系统的开发背景(可行性分析) (1)1.2 系统简介 (2)1.2.1系统介绍 (2)1.2.2开发本系统所做的工作 (2)2. 需求分析 (3)2.1 需求的描述与分析 (3)2.2 需求定义 (3)2.2.1 功能需求 (3)2.2.2 性能需求 (4)3. 系统设计 (4)3.1总体设计 (4)3.1.1设计思想 (4)3.1.2五子棋游戏的功能的结构图 (5)3.2程序设计分析 (5)4. 五子棋游戏的详细设计 (6)4.1五子棋游戏的主窗口界面 (6)4.2五子棋游戏的核心模块的详细设计 (10)4.2.1五子棋游戏程序核心代码 (10)4.2.2五子棋游戏程序主面板与鼠标事件 (13)4.2.3五子棋游戏程序流程图 (17)4.3五子棋游戏的游戏功能模块的详细设计 (18)4.3.1五子棋游戏的开局功能模块 (18)4.3.2五子棋游戏的棋盘功能模块 (18)4.3.3五子棋游戏的模式功能模块 (19)4.3.4五子棋游戏的退出功能模块 (19)4.4五子棋游戏的外观功能模块的详细设计 (19)4.5五子棋游戏的版本功能模块的详细设计 (20)5. 五子棋游戏的测试 (20)5.1系统测试的类型 (20)5.2测试举例 (21)5.2.1测试用户的对弈结果 (21)5.2.2测试用户切换棋盘类型功能 (22)5.2.3测试用户切换模式类型功能 (23)5.2.4测试用户切换外观类型功能 (24)5.2.5测试版本功能 (26)小结 (27)致谢 (28)参考文献 (29)1. 引言1.1系统的开发背景(可行性分析)人工智能是一门正在迅速发展的、新兴的、综合性很强的交叉科学。

它与生物工程、空间技术一起被并列为二十一世纪三大尖端技术。

计算机网络课程设计实验报告

计算机网络课程设计实验报告

计算机网络课程设计报告姓名:学号:班级:指导老师:湖南科技大学计算机科学与工程学院2013年6月实验一1。

实验名称:网络聊天程序的设计与实现2。

实验目的:通过本实验能够了解socket通信的原理并在此基础上编写一个聊天程序了解TCP/IP的基础知识,发现TCP与UDP的优缺点以及在网络通信的应用.3.实验原理:从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

当网络的边缘部分中的两个主机使用网络的两个主机使用网络的核心部分进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

从IP层来说,通信的两端是两个主机,IP数据报的首部明确的标志了这两个主机的IP地址.但是严格的讲,两个主机进行通信就是两个主机中的应用进程互相通信。

根据应用程序的不同需求,运输层需要有两种不同的运输协议,即是面向连接的TCP和无连接的UDP。

在使用这两个协议时运输层向高层用户屏蔽了下面的网络核心的细节,它使应用进程看见的就是好像在两个运输层实体间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别.当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。

但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道.由于我在课程设计中采用的是UDP协议进行通信的,这里就只简述一下一些关于UDP的内容,UDP在传送数据之前不需要先建立连接。

远地主机的运输层在收到UDP报文后,不需要给出任何确认。

虽然UDP不提供可靠的交付,但在某些情况下UDP却是一种最有效的工作方式.为此当我们使用UTP协议使两个计算机中的进程要互相通信,不仅必需知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。

计算机专业课程设计

计算机专业课程设计

计算机专业课程设计一、课程目标知识目标:1. 理解计算机专业课程设计的基本概念、原则和方法;2. 掌握运用所学的编程语言、数据结构与算法,解决实际问题;3. 了解计算机系统的基本组成、工作原理及其在各领域的应用。

技能目标:1. 能够运用分析、设计的方法,独立完成小型计算机项目的需求分析和设计;2. 培养阅读和理解计算机相关技术文档的能力,提高自学能力;3. 学会使用专业软件工具进行项目开发和调试,提高实际操作能力。

情感态度价值观目标:1. 培养学生的团队合作意识,学会与他人共同解决问题;2. 激发学生对计算机专业的兴趣,提高学习的积极性和主动性;3. 树立正确的价值观,认识到计算机技术在国家和社会发展中的重要作用,增强社会责任感。

课程性质:本课程为计算机专业核心课程,旨在培养学生的编程能力、项目设计和实践能力。

学生特点:学生已具备一定的编程基础,具有较强的逻辑思维能力和学习兴趣。

教学要求:注重理论与实践相结合,强调学生动手实践,培养学生的创新能力和实际操作能力。

将课程目标分解为具体的学习成果,以便于后续的教学设计和评估。

二、教学内容1. 计算机专业课程设计概述- 课程设计的基本概念- 课程设计的原则- 课程设计的方法2. 编程语言与数据结构- 常用编程语言的特点与应用场景- 数据结构的基本概念与分类- 常用数据结构及其算法实现3. 计算机系统组成与应用- 计算机硬件系统- 计算机软件系统- 计算机在各领域的应用案例4. 项目需求分析与设计- 需求分析的方法与步骤- 设计模式与架构- 项目文档编写规范5. 项目开发与调试- 编程规范与技巧- 软件测试方法与策略- 调试工具与技巧6. 团队合作与沟通- 团队合作的重要性- 沟通技巧与方法- 项目管理与协作工具教学内容安排与进度:1. 第1-2周:计算机专业课程设计概述2. 第3-4周:编程语言与数据结构3. 第5-6周:计算机系统组成与应用4. 第7-8周:项目需求分析与设计5. 第9-10周:项目开发与调试6. 第11-12周:团队合作与沟通教材章节关联:1. 《计算机组成原理》第1-3章,介绍计算机硬件系统;2. 《数据结构与算法》第1-5章,介绍数据结构及其算法实现;3. 《软件工程》第1-2章,介绍需求分析、设计与文档编写;4. 《编程实践》第1-2章,介绍编程规范与技巧;5. 《项目管理与团队协作》第1-2章,介绍团队合作与沟通。

C#-实训报告

C#-实训报告

苏州市职业大学课程设计任务书课程名称:计算机语言C#课程设计起讫时间:2011-6-20~~2011-7-1院系:计算机工程系班级:10网站开发(ATA)班指导教师:张苏叶良系主任:李金祥一、课程设计课题本实训要求学生运用C#.NET独立设计、编程开发一个完整的Windows应用程序,并完成实训报告。

可以从以下题目中选择:①绘图板②二十一点游戏③科学计算器④弹珠游戏⑤日记本⑥屏幕保护程序⑦挖地雷游戏⑧调色板⑨文本编辑器⑩井字棋也可自选课题(须征得指导教师同意)不建议选择贪吃蛇、华容道等难度比较高的题目,需要由本人完成大部分代码,不建议根据网上或书上的现成代码调试编写。

二、课程设计要求1、设计选题:学生可以在“《Windows应用程序设计》实训选题”指定的题目中选取实训题目,具体题目以此文件为准。

也可以自选,但自选的题目必须在实训开始前得到指导教师的认可。

2、设计结果:学生需按所选题目的具体要求使用C#完成程序设计,同时还要完成课程设计说明书,以介绍实训的情况,说明书中应该至少包括以下几部分:●题目说明●总体设计:概述程序的基本结构和主要技术。

●详细说明:选择几个功能模块详细说明设计时的想法和所用的技术。

●遇到的问题和解决方法●心得体会3、考核要求学生需提交完整的C#源程序(电子版)和课程设计说明书(打印稿),要求程序运行稳定可靠,能实现题目中所要求的功能。

课程设计说明书符合要求,并能对程序的设计思路或具体代码做出正确的解释。

三、课程设计工作量1、程序中应有不少于100~300行的自行编写的代码。

2、软件界面美观大方,操作简洁易用,功能完备可靠。

3、说明书中摘用关键代码部分,应标注详细的代码说明。

4、实训报告以A4纸打印,其中正文不少于6页,正文主要用于解释实现思路和关键代码,完整代码作附件。

四、课程设计说明书内容(有指导书的可省略)课程设计说明书中至少应该包括以下几部分:1、封面2、摘要3、目录4、选题说明5、总体设计:概述程序的基本结构和主要技术。

数据结构课程设计报告_最短路径

数据结构课程设计报告_最短路径

青岛理工大学琴岛学院
设计报告
课题名称:数据结构课程设计
学院:计算机工程系
专业班级:计算机网络技术
学号:aaaaaa
学生: aaa
指导教师: aaaaaaa
青岛理工大学琴岛学院教务处
2011 年 12 月 18日
四.调试分析(调试过程中出现的问题及处理方式)调试出现的界面
1)进入程序弹出查询信息对话框如图2:
图2
2) 输入查询信息,显示路径长度及最短路径,如果输入代号不在0~24之内,提示出错。

图3
图4
B.出现的问题及解决方式
1、在执行程序的时候不能显示最短的距离
解决方法:增加一个函数调用,调用的函数为ShortestPath(v0); /*计算两个城市之间的最短路径*/
2、不能连续查询,即查询一次完成后,必须重新运行才能就进行二次查询
解决方法:在代码中添加while( ) 语句printf("是否继续,1(继续查询),0(退出查询)");
printf("\n"); scanf("%d",&ch); 详见图5
图 5。

课程设计报告 课程设计报告书(优秀7篇)

课程设计报告 课程设计报告书(优秀7篇)

课程设计报告课程设计报告书(优秀7篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如合同协议、条据文书、策划方案、总结报告、党团资料、读书笔记、读后感、作文大全、教案资料、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as contract agreements, documentary evidence, planning plans, summary reports, party and youth organization materials, reading notes, post reading reflections, essay encyclopedias, lesson plan materials, other sample essays, etc. If you want to learn about different formats and writing methods of sample essays, please stay tuned!课程设计报告课程设计报告书(优秀7篇)在不断进步的时代,需要使用报告的情况越来越多,报告中提到的所有信息应该是准确无误的。

计算机组成原理设计课题报告 (1)

计算机组成原理设计课题报告 (1)

SHANGHAI UNIVERSITY<计算机组成原理>课程设计实验报告学院计算机工程与科学学院组员于影、吴珺文、王杰强、金春学号********姓名金春指导老师诸而明一、设计题目和要求1.设计题目:设计一个储存器,并且在Maxplus上模拟实现2.要求:每个组采用指定的内存芯片(二种)和译码器(一种)来实现二、设计过程1.芯片选择:128*8位的ROM、128*8位的RAM各一片。

因为81287(位),所以需要7位地址线:A0~A6,8位数据线D0~D7。

*2*8地址分配如下表所示:地址分配A7 A6 A5 A4 A3 A2 A1 A0 地址空间0 0000000 00H………………0 1111111 7FH1 0000000 80H………………1 1111111 FFH【注】1)A7=0时,表示选择ROM;2)A7=1时,表示选择RAM。

2.译码器选择:74138译码器,如下图所示:状态表(1)C B A Y0 Y10 0 0 0 10 0 1 1 02)Y0Y1=10时,表示Y1接RAM。

状态表(2)端口G1 G2A G2B状态 1 0 0功能使能3.MAXPLUS实现电路图:4.波形图:ROM的波形图RAM的波形图三、体会:在这次实验中与之前所学的只是很不一样,是一个全新的内容,通过这次实验从对主存储器的一无所知,到现在能看懂主存储器的功能,并且能根据存储芯片设计存储器,中间我们遇到的困难可想而知。

毕竟我们才刚接触存储器,面对各种存储时时序上错误,在我们组员的齐心合力之下,我们能很快的了解这些我们原本并不熟悉的知识,并将它们运用到实际中,尽管这只是一个作业。

我们从这份作业中学到很多,也体会到很多,控制信号下的存储功能看似复杂难懂,其实只要我们认真研读,细心讨论,一切难题都将不是问题。

校园网建设课程设计报告

校园网建设课程设计报告

校园网建设课程设计报告(CCNA综合实验)系别:计算机工程系专业:计算机网络技术班级:网络1210姓名:朱金贵学号:0930504121028二零一一年十一月十一日前言自1994年以来,互联网在我国取得了飞速发展,联网的计算机、上网用户和网站的数目逐年倍增。

各大专院校相继建立了自己的校园网。

Internet技术和现代教育的快速发展以及越来越紧密的结合使得校园网成为学校教育、教学和科研的重要平台。

校园网已成为各学校必备的重要信息基础设施,其规模和应用水平已成为衡量学校教学与科研综合实力的一个重要标志。

在某学院校园网目前的实际情况在充分调研的基础上,结合目前技术的发展方向和用户的实际需求,制订了学院校园校园网建设的整体设计方案。

通过校园网的设计与建设,实现真正意义上的宽带多媒体网络,为师生提供教学、科研和综合信息服务。

针对本项目,本文做了以下工作:研究了数字化校园网的建设;调查比较了大型组网设备的性能的优缺点;分析了部分高校校园网组网技术方案;研究了基于校园网平台的信息安全问题;实现了拥有教学、科研、宽带多媒体网络和综合信息服务的校园网的规划设计。

目录第一章校园网简介1.1什么是校园网1.2校园网有什么作用1.3 实验目的第二章校园网的需求分析2.1 校园网的要求2.1.1 主机要求2.1.2 访问控制要求2.1.3 路由协议要求2.2 IP地址规划2.3 VLAN划分2.4 设备的管理与划分第三章实验配置3.1 拓扑图3.2 配置命令3.2.1 基本配置3.2.2 VLAN配置命令3.2.3 单臂路由3.3 路由协议配置3.3.1 EIGRP协议3.3.2 OSPF 协议3.3.3 rip 协议3.3.4 路由协议重分布3.3.5 ppp封装和chap身份验证3.4 ACL技术3.5 PAT技术第四章调试及故障排除4.1调试4.2故障解决的步骤4.3.1检查是否问题出在交换机之间的连接上4.3.2检查是否问题在某个交换机上4.4 总结及心得体会第一章校园网简介1.1什么是校园网首先,校园网是利用先进的建筑综合布线技术构架安全、可靠、便捷的计算机信息传输线路;其次,校园网的建设必须考虑到为学校教学、教育科研,利用成熟、领先的计算机网络技术规划计算机综合管理系统的网络应用,提供优质的网络化教学环境。

课程设计报告10篇

课程设计报告10篇

课程设计报告10篇课程设计报告1一、设计目的经过一系列硬件课程的学习及相关实验后,做一个综合的系统性的设计,对计算机硬件设计有一个整体的认识,可以进一步提高实践动手能力。

二、所用设备TDN—CM++实验教学系台,PC微机一台,排线若干三、设计思想1、确定搭建一台8位模型机,指令系统系统有10条,涉及输入,输出,加,减,自增,自减,与,传送,跳转,停机等指令。

2、根据所要设计的指令,确定各种信息的传送路径,以及实现这些传送所需的微指令。

3、根据数据通路,确定指令系统中每条指令的执行流程。

4、根据执行流程,确定好机器指令之后,确定相对应的微指令地址,需要多条微指令来完成的机器指令,要准确无误的确定每条微指令的后续地址。

5、设计好指令后,将指令加载,检测该指令是否可以达到预计功能。

四、设计总结经过了三天的实践学习,在老师的悉心指导和搭档的默契配合下终于完成了硬件课程实验,从中受益匪浅。

实验首先要做的事情就是接线,对于已经做过微机实验的我们,器件箱并不陌生,但也熟知连线的重要性,连每根线都必须十分细心,因为每根都影响着整个设备的运行。

于是,我跟我的搭档分工合作,她读图我连线,为了避免连错,我每根线都以红线为起始位,保持规律性,这样也方便出错后检查。

在我俩默契的配合下,我们很快就完成了连线操作,后来测试时却发现数据显示一直不变,经过检查才发现原来数据线少插了一根。

还好就这么一根问题,因为很多同学在连线这块就花费了大量的时间了,降低了效率,所以说小问题也不能忽视。

连线正确后,接下来就是编写微指令了,由于对指令的格式不是很熟悉,所以在了解指令格式和工作流程上花费了些时间。

编写的指令有两种,一个是操作码,一个是微指令。

操作码格式比较简单,相比而言微指令格式比较复杂,共24位,为了便于理解,在编写微指令的时候我都按各部分的含义将24位划分成了几个部分,也便于修改。

在编写指令的过程中,我发现虽然写的指令都是时最常用的基本指令,我们都很清楚每条指令的含义,但是把它们转换成微指令还是比较复杂的。

课程设计报告(模板)

课程设计报告(模板)

课程设计报告
(2015-2016学年第二学期)
报告题目:OA办公自动化
课程名称:《软件工程项目实践》
任课教员:唐志
专业:计算机科学与技术
学号:152013113021 152013113025
姓名:程浪谭小江
二〇一六年六月二十四日
说明
一、报告内容
课程设计报告一般应包括以下内容:
1.课题概述(任务、目的、要求)
2.设计思路及采取的方案
3.取得的结果
4.总结与体会(包括:设计中遇到的问题及解决过程;设计中产生的错误及原因分析;设计体会和收获)
5.主要参考文献
6.附录(原程序代码及注释等)
二、课程设计报告格式要求:
1.课程设计报告采用统一封面,以左侧为准装订成册。

2.课程设计报告一律使用标准A4开复印纸打印。

3.报告打印的格式要求:
报告标题(使用隶书二号加黑;一级标题、二级标题、三级标题分别使用宋体三号、四号及小四号并加加黑)
摘要、关键字(需使用宋体小四号)
正文(使用宋体小四号,行距20磅)
参考文献(使用宋体五号)。

关键路径算法 报告

关键路径算法 报告

数据结构课程设计报告题目:关键路径算法院(系):计算机工程学院专业:计算机科学与技术班级:嵌入式1091学生:吕帅指导教师:寇海洲孙成富邱军林殷路2010年12月目录一、设计目的 (3)二、设计内容 (3)三、程序设计步骤 (4)四、调试分析 (12)五、测试结果 (12)六、课程设计小结 (16)一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。

2、提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。

4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。

二、设计内容1、系统名称:关键路径算法AOE网(即边表示活动的网络),在某些工程估算方面非常有用。

它可以使人们了解:(1)研究某个工程至少需要多少时间?(2)哪些活动是影响工程进度的关键? 在AOE网络中,从源点到汇点的有向路径可能不止一条,但只有各条路径上所有活动都完成了,这个工程才算完成。

因此,完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和,这条路径就叫做关键路径(critical path)。

2、要求:1 以某一工程为蓝本,采用图的结构表示实际的工程计划时间。

2 调查并分析和预测这个工程计划每个阶段的时间。

3 用调查的结果建立AOE网,并用图的形式表示。

4 用CreateGraphic ()函数建立图的邻接表存储结构,能够输入图的顶点和边的信息,并存储到相应存储结构中。

5 用SearchMaxPath()函数求出最大路径,并打印出关键路径。

课程设计报告 停车场

课程设计报告 停车场

淮阴工学院数据结构课程设计报告选题名称:停车场管理(1)系(院):计算机工程系专业:计算机科学与技术班级:网络1071姓名:陈绍平学号: 1071304104 指导教师:张亚红张勇军学年学期:2008 ~ 2009 学年第 2 学期2009 年 6 月20 日设计任务书摘要随着私家车的愈来愈多,在各个公共场所的各式各样的停车场也应运而生,在这样的情况下,停车场的管理就显得尤为重要。

本文介绍运用数据结构中所学的链表、栈等知识,在Visual C++6.0环境下开发一个行之有效的停车场管理系统,要求实现的功能的有:车辆到达是的信息登记,车辆离开时的信息记录及停车费用的计算和停车场及便道的车辆信息的显示等功能。

关键词:数据结构;停车场管理;栈;链表;1. 需求分析 (1)1.1课程设计的目的 (1)1.2基本要求 (1)1.3课程设计的任务 (1)1.4软件运行和开发工具 (1)1.5课程设计的思想 (1)2. 概要设计 (1)2.1程序整体描述 (1)2.2结构描述 (1)2.3 栈描述 (3)2.4函数描述 (3)2.5数据结构与算法描述 (3)2.5功能模块 (4)3. 详细设计和实现 (4)3.1车辆到达登记 (4)3.2车辆离开记录 (5)3.3车辆信息显示 (8)4. 调试及操作说明 (9)总结 (12)致谢 (13)参考文献 (14)1.需求分析1.1课程设计的目的运用数据结构编写一个C++程序,实现对停车场的管理。

主要包括:车辆到达是的信息登记,车辆离开时的信息记录及停车费用的计算和停车场及便道的车辆信息的显示等功能。

1.2基本要求设计好算法,使该系统能实现对停车场有效的进行管理。

1.3课程设计的任务该系统主要实现以下几个功能:a)车辆到达信息登记:包括车牌号,到达时间,在停车场停放的位置等;b)车辆离开记录:包括离开时间,停车费用等;c)信息显示:显示停车场内和便到内的汽车到达时机急位置等基本信息;1.4软件运行和开发工具1.Windows2000以上操作系统2.Visual C++6.0开发环境1.5课程设计的思想该程序应用栈来完成的汽车进停车场和出停车场就是一个数据进栈和出栈的过程。

计算机科学导论课程设计报告

计算机科学导论课程设计报告

计算机科学导论课程设计报告
介绍
本报告旨在总结计算机科学导论课程设计的内容和成果。

课程设计内容
计算机科学导论课程设计的主要内容包括以下几个方面:
- 课程概述:介绍计算机科学导论的定义、目标和重要性。

- 计算机科学基础知识:包括计算机硬件、软件、网络和数据
结构等基本概念。

- 编程语言和算法:介绍常用的编程语言和常见的算法设计方法。

- 计算机科学应用领域:介绍计算机科学在人工智能、大数据、网络安全等领域的应用。

- 前沿技术和发展趋势:介绍计算机科学领域的最新技术和未
来发展方向。

课程设计成果
在本课程设计中,我完成了以下成果:
- 研究和掌握了计算机科学导论课程的基本知识和概念。

- 熟悉并使用了几种常见的编程语言和算法。

- 完成了一个小型的计算机科学应用项目,并对其进行了测试和优化。

总结
通过这门课程设计,我对计算机科学导论有了全面的了解,并且能够运用所学的知识和技能进行实际项目的开发和优化。

希望在未来的研究和工作中能够继续深入研究计算机科学领域,并为社会的发展做出贡献。

计算器课程设计报告

计算器课程设计报告

2012-2013学年第二学期《高级语言程序设计》课程设计报告题目:计算器设计专业:数字媒体技术班级: 1姓名:徐少明学号:1208030149指导教师:陈广宏成绩:计算机与信息工程系年月日设计题目1设计内容及要求1.1 设计内容:用高级语言编写一个简单地计算器,并对其进行简单的程序功能介绍,设计思路,数据结构设计及用法说明,各模块的功能及程序说明。

编写出简单计算器的程序代码,展示设计成果,最后对设计成果进行总结和分析。

1.2 设计要求:通过用高级语言编写一个简单地计算器,要求改简单计算器拥有以下功能:1. 算术运算功能。

能够实现+、-、*、/、mod、int运算。

2. 函数运算功能。

能够实现exp、ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1/x等运算。

3. 进制之间的转换功能。

能够实现十六、十、二、八进制数据之间的转换。

4.通过键盘控制字符和数字的输入。

2概要设计2.1程序功能介绍利用Turbo C 所具有的函数模仿画出计算器的界面,实现计算器的基本功能,进行浮点数加、减、乘、除、乘方和求模运算。

2.2程序整体设计说明计算器的输入输出和显示结果的显示屏,绘制计算器的按键,绘制边框。

利用Turbo C绘制程序中的计算器的图形. 程序中对使用的图形系统进行初始化定义函数,然后输出函数进行字符的输入输出,来进行简单的+、-。

*、/运算。

2.3设计思路C语言编辑的程序可以直接输入数学表达式,是由于它具有优良的兼容性,有很好的数据处理能力,稳定性也很强。

不需要转换就可以直接输出数学运算的结果。

输入字符后,输出结果可以显示一个字符串表达式(传入参数,输出值), 所以该程序具有较强的计算能力2.4数据结构设计及用法说明在主函数里先对接口、屏幕、系统等函数定义(#include <math.h> #include <conio.h>),屏幕函数包括文本窗口大小设定(<void drawboder(void)>)、窗口颜色的设置、窗口文本的清除和输入输出等函数。

计算机组成原理课程设计报告

计算机组成原理课程设计报告

计算机组成原理课程设计报告集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)南通大学计算机科学与技术学院计算机组成原理课程设计报告书课题名模型计算机的设计与实现班级计123班姓名流星雪雨学号指导教师顾辉日期目录1 设计目的1.融会贯通教材各章的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,加深计算机工作中“时间-空间”概念的理解,从而清晰地建立计算机的整机概念。

2.学习设计和调试计算机的基本步骤和方法,培养科学研究的独立工作能力,取得工程设计和调试的实践和经验。

2 设计内容1.根据给定的数据格式和指令系统,设计一台微程序控制的模型计算机。

2.根据设计图,在QUARTUS II环境下仿真调试成功。

3.在调试成功的基础上,整理出设计图纸和相关文件,包括:(1)总框图(数据通路图);(2)微程序控制器逻辑图;(3)微程序流程图;(4)微程序代码表;(5)设计说明书及工作小结。

3 设计要求(1)对指令系统中的各条指令进行分析,得出所需要的占领周期与操作序列,以便确定各器件的类型和数量;(2)设计总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通路,使得由指令系统所要求的数据通路都能实现,并满足技术指标的要求;(3)检查全部指令周期的操作序列,确定所需要的控制点和控制信号;(4)检查所设计的数据通路,尽可能降低成本,简化线路,优化性能。

以上过程可以反复进行,以便得到一个较好的方案。

4 数据格式与指令系统4.1 数据格式数据字规定采用定点整数补码表示法,字长8位,其中最高位为符号位,其格式如下:7 6 5 4 3 214.2 指令系统本实验设计使用5条机器指令,其格式与功能说明如下:7 6543210INADDSTAOUTJMPIN指令为单字长(字长为8bits)指令,其功能是将数据开关的8位数据输入到R0寄存器。

ADD指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将R0寄存器的内容与内存中地址为A的数相加,结果存放在R0寄存器中。

数据库原理课程设计报告

数据库原理课程设计报告

淮海工学院计算机工程学院课程设计报告设计名称:数据库原理及应用设计课程设计姓名:薛沈晨学号: 110831223 专业班级:软件工程082 系(院):计算机工程学院设计时间:2010.12.20~~2011.12.31设计地点:计算机楼一楼机房一、概述1、项目背景:数据库原理课程设计2、编写目的:掌握数据库设计原理及相关软件的使用3、软件定义:宾馆房间管理系统4、开发环境:java,netbeans,sql server2005二、需求分析随着全国宾馆数量的增加和越来越自动化的宾馆设施,对于宾馆的信息管理也越来越复杂,要求也越来越高,因此需要一个全面、详细的宾馆信息管理系统,以便完成对宾馆信息的管理。

基于发票、表格等纸介质的手工处理,宾馆信息管理员信息处理工作量大,容易出错。

本系统是为了实现宾馆信息管理自动化,更高效、准备地管理,而开发的宾馆信息管理系统。

宾馆信息管理系统,可以用集中的数据库将与人力资源管理相关的信息全面、有机地联系起来,有效地减少了信息更新和查找中的重复劳动,保证了信息的相容性,从而大大地提高了工作效率在采用和实施宾馆信息管理系统之后,就会将依赖于人的过程改为依赖于计算机系统的过程。

宾馆管理人员只要获取了相应的权限,就可以随时进入系统,直接查阅相应的信息。

采用和实施宾馆信息管理系统不仅仅是为了提高工作效率。

同时在使用该系统后,宾馆相关人员可以较为全面、准确的了解到房间和房客们的综合信息,然后方便更具各种信息对宾馆的管理做出各种决策。

建立一套功能完善的管理信息系统,既能满足业务人员日常处理的需要,增强企业经营全过程的数字化管理水平;又能满足管理人员决策分析的需要,提高公司管理层对公司经营反馈信息的响应速度。

从而大幅度提高工作效率,提高实施管理的准确性、科学性,使担负管理的工作人员从繁杂的手工劳作中解脱出来。

系统主要包括的功能有:#实现房间预定功能#实现房间类型以及相应收费的管理#实现住客收费账目的管理#实现房间状态的管理三、系统设计1.要求管理员可以增加和删除操作员的帐户。

课程设计报告(骰子游戏)

课程设计报告(骰子游戏)

课程设计报告课程名称:C++面向对象程序设计实验和课程设计教程课题名称:投掷骰子游戏系别:计算机科学与工程专业:计算机科学与技术学号:姓名:指导教师:日期:一、设计目的与要求1.课程设计的目的:编写程序实现游戏:游戏者每次投掷两颗骰子,每颗骰子是一个正方体,有6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时,将每颗骰子朝上的点的数相加,在第一次投掷骰时, 如果所得到的和为7或11,那么游戏者为赢得胜利; 如果所得到的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6、8、9或10,那么为游戏者的点数;如要想赢得胜利,必须继续投掷骰子,直到取得自已的点数(也就是第一次投掷出的4、5、6、8、9或10)为止, 但是如果投掷出的和为7,那么游戏者输掉了游戏。

2.课程设计的要求分析:设计该程序中应包括以下几个功能:1)主菜单界面:包含多具有的所有功能的选项。

2)获得游戏帮助功能:告诉游戏者游戏规则。

3)显示游戏数据功能:在游戏结束时,显示游戏者获得的游戏数据。

4)模拟游戏功能:选择进入,开始游戏。

5)退出模拟游戏功能:玩完游戏后退出程序。

二、工具/准备工作开发环境:Visual C++ 6.0三、分析1.系统功能结构2.重要数据的数据结构设计1)设计一个DiceGame类,其类的数据成员包括numOfWin、numOfLose、numOfTie,分别代表游戏胜利的数次、失败的数次、平局的数次;辅助函数包括RollDice()、Help()、Show(),分别表示模拟投掷一次骰子、获得帮助、显示统计结果;class DiceGame{private:int numOfWin; // 胜利数次int numOfLose; // 失败数次int numOfTie; // 平局数次// 辅助函数int RollDice(); // 模拟投掷一次骰子void Help(); // 获得帮助void Show(); // 显示统计结果public:DiceGame(); // 无参数的构造函数virtual ~DiceGame(){}// 析构函数void Game();// 模拟游戏void getscore(); //获得的积分};2)还设计了另外一个Rand类,该类能随机生成数字提供游戏中骰子使用,它设置了当前时间为时间种子。

万年历课程设计报告

万年历课程设计报告

万年历课程设计报告课程设计报告课程名称程序设计基础专周题目年历显示姓名XX班级XXXXXX学号XX指导教师XXX设计时间2022-03-02至2022-03-06XX学院计算机工程系XX学院课程设计(论文)任务书一、课程设计题目年历显示二、课程设计工作自2022年03月02日至2022年03月06日。

三、课程设计地点:XXXX四、课程设计内容要求:1.本课程设计的目的1)增进对C语言各理论知识的熟练程度,2)加强算法设计的能力,为以后的程序设计与编写打下良好基础。

3)增加对C语言的熟练程度,提高程序设计的能力,并初步接触实用程序的编写。

2.课程设计的任务及要求题目:年历显示要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。

假定输入的年份在1940-2040年之间。

(2)输入年月,输出该月的日历。

(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。

3)课程设计编写要求1)详细清晰地描述个人的课程设计工作;2)要按照本模板的规格打印誊写课程报告;3)课程报告包括目录、内容提要、正文、课程设计体会、参考文献、附录等;4)课程报告装订按学校的统一要求完成4)评分标准:1)完成原理分析:20分;2)完成设计过程:40分;3)完成代码分析:20分。

4)个人创新工作:20分。

学生签名:XX2022年3月8日目录目录-1-正文-2-一、需求分析-2-二、个人工作-2-三、概要设计-2-流程图……………………………………………………………….-2-程序……………………………………………………………….-4-四、程序结果-7-课程设计体会-9-正文一、需求分析我选择课程设计题目:年历显示日常生活当中,我们查询日期很大程度上需要用到日历。

而手动去翻纸质日历查询速度慢,而且会让人看的眼花缭乱。

因此,我们可以编写一个程序来显示某一年的日历。

①程序要能够准确输出某一年的日历;②程序要能够准确的输出某一年的某一月的月历;③程序能够详细查询某一年某一天的日期;④程序能够循环输出。

本科计算机课程设计

本科计算机课程设计

本科计算机课程设计一、课程目标知识目标:1. 理解计算机课程设计的基本原理和方法;2. 掌握运用所学的编程语言和工具进行简单的系统分析与设计;3. 了解软件工程的基本概念,并能运用到实际项目中;4. 掌握计算机课程中涉及的数据结构、算法和软件测试等知识。

技能目标:1. 能运用结构化分析方法进行需求分析,独立完成需求规格说明书编写;2. 能根据需求规格说明书,运用面向对象设计方法进行系统设计,并编写设计文档;3. 能运用所学的编程技能,独立完成系统模块编码和调试;4. 能对完成的软件进行基本的测试和优化。

情感态度价值观目标:1. 培养学生严谨、认真的工作态度,养成良好的编程习惯;2. 增强学生的团队协作意识,学会与他人共同解决问题;3. 激发学生对计算机科学的兴趣,培养其探索精神和创新意识;4. 培养学生遵守职业道德,关注社会需求,将所学知识应用于实际问题的解决。

本课程目标旨在让学生通过学习,掌握计算机课程设计的基本知识和技能,培养其独立分析和解决问题的能力,同时注重培养学生的团队协作、创新意识和职业道德,使其成为适应社会需求的计算机专业人才。

二、教学内容1. 计算机课程设计基本原理:包括课程设计的目的、任务、方法和步骤,结合教材相关章节,让学生从理论上掌握计算机课程设计的基本框架。

2. 系统分析与设计:讲解需求分析、系统设计的基本方法,如结构化分析、面向对象设计等,结合案例让学生学会运用所学方法进行实际项目的设计。

3. 编程语言与工具:根据教材,介绍常用的编程语言(如C++、Java等)和开发工具(如Visual Studio、Eclipse等),使学生能熟练运用这些工具进行软件开发。

4. 数据结构、算法与软件测试:结合教材相关章节,讲解基本数据结构、算法知识,以及软件测试方法,让学生掌握计算机程序的核心技术。

5. 项目实践:安排一个实际项目进行课程设计,要求学生按照教学大纲,分阶段完成需求分析、系统设计、编码、测试等任务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机工程系课程设计报告课程名称: 数据结构课程设计题目:图的深度优先遍历、广度遍历优先算法2016年12月20日班 级: 计算机科学与技术15-3班姓 名: 蔺亚楠 学 号: 15091317 指导老师:范智华目录一、设计目的及要求............................................................................................... I I1.题目与设计要求........................................................................................ I I2.本程序涉及的知识点................................................................................ I I二、功能设计........................................................................................................... I I1.总体设计.................................................................................................... I I2.详细设计 (III)三、程序实现 (IV)1.程序实现时应考虑的问题 (IV)2.核心代码 (IV)3.全部代码 (VI)四、测试分析........................................................................................................ X V1.测试结果及分析..................................................................................... X V2.运行结果................................................................................................. X V五、总结 (XVI)六、参考文献 (XVII)一、设计目的及要求1.题目与设计要求本程序要实现的基本功能有:a)以邻接矩阵为存储结构,实现无向图的深度优先遍历和广度优先遍历。

b)分别输出每种遍历下的结点访问序列.从图中某个顶点出发,沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问。

它是许多图的算法的基础。

2.本程序涉及的知识点图的定义、邻阵矩阵表示法、深度优先搜索、广度优先搜索、结构体的定义以及其他相关函数。

二、功能设计1.总体设计数据类型及函数定义定义图typedef struct{int V[M];int R[M][M];int vexnum;}Graph;创建图void creatgraph(Graph *g,int n)打印图的邻接矩阵void printgraph(Graph *g)访问顶点void visitvex(Graph *g,int vex)深度递归遍历void dfs(Graph *g,int vex)队列的基本操作定义队列typedef struct{int V[M];int front;int rear;}Queue;判断队列是否为空quempty(Queue *q)入队操作enqueue(Queue *q,int e)出队操作dequeue(Queue *q)广度遍历void BESTraverse(Graph *g)主程序模块void main (){构造一个图;打印图的邻接矩阵进行深度优先遍历图;进行广度优先遍历图;}2.详细设计1)主函数:主函数一般设计的较为简洁,只提供输入、功能处理和输出部分的函数调用。

2)广度优先遍历函数:基本思想是首先访问图中某一指定的出发点Vi;然后依次访问Vi的所有接点Vi1,Vi2...Vit;再次访问Vi1,Vi2 (Vi)的邻接点中未经访问过的顶点,依此类推,直到图中所有顶点均被访问为止。

3)深度优先遍历函数:基本思想是首先访问图中某一个指定的出发点Vi;然后任选一个与顶点Vi相邻的未被访问过的顶点Vj;以Vj为新的出发点继续进行深度优先搜索,直至图中所有顶点均被访问过。

三、程序实现1.程序实现时应考虑的问题存在的问题:图中可能存在回路,且图的任一顶点都可能与其他顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点解决办法:为了避免重复访问,可设置一个标志顶点是否被访问过的辅助标志visitvex辅助数组visitvex 的初始状态为0,在图的遍历过程中,一旦此顶点被访问,就立刻让visitvex为1,防止它被多次访问Visitevex[0..n-1]的设置:图中任一顶点都可能和其它顶点相邻接。

在访问了某顶点之后,又可能顺着某条回路又回到了该顶点。

为了避免重复访问同一个顶点,必须记住每个已访问的顶点。

为此,可设一布尔向量visitvex[0..n-1],其初值为假,一旦访问了顶点Vi之后,便将visitvex[i]置为真。

2.核心代码1)以邻接矩阵为存储结构的图的深度优先搜索遍历的算法void dfs(Graph *g,int vex){ int w;visited[vex]=1; 标记vex已被访问过visitvex(g,vex); 访问图g的顶点for(w=firstadjvex(g,vex);w>0;w=nextadjvex(g,vex,w))if(!visited[w]){ dfs(g,w); } }从初始点vex出发广度优先搜索由邻接矩阵R表示的图void dfstraverse(Graph *g){ int i;for(i=1;i<=g->vexnum;i++)visited[i]=0;for(i=1;i<=g->vexnum;i++)if(!visited[i]){dfs(g,i);} }2)以邻接矩阵为存储结构的图的广度优先搜索遍历的算法从初始点vex出发广度优先搜索由邻接矩阵R表示的图void BESTraverse(Graph *g){ int i;Queue *q=(Queue *)malloc(sizeof(Queue)); 定义一个队列q,其元素类型应为Queue型for(i=1;i<=g->vexnum;i++){ visited[i]=0; 标记初始点i未被已访问过}initqueue(q); 初始化队列for(i=1;i<=g->vexnum;i++){ if(!visited[i]){ visited[i]=1; 标记初始点i已访问过visitvex(g,g->V[i]); 访问顶点ienqueue(q,g->V[i]); 将已访问过的初始点序号i入队while(!quempty(q)) 当队列非空时进行循环处理{依次搜索i的每一个可能的邻接点int u,w;u=dequeue(q);for(w=firstadjvex(g,u);w>0;w=nextadjvex(g,u,w)){ if(!visited[w]){ visited[w]=1; 访问一个未被访问过的邻接点visitvex(g,w); 访问顶点wenqueue(q,w); 顶点w出队}}}} } }3.全部代码#include <stdio.h>#include <malloc.h>#define INF 32767 /*INF表示∞*/typedef int InfoType;#define MAXV 100 /*最大顶点个数*/#define MAXQUEUE 10 /* 队列的最大容量*/struct node /* 图的顶点结构定义*/{int vertex; struct node *nextnode;};typedef struct node *graph; /* 图的结构指针*/struct node head[9]; /* 图的顶点数组*/int visit[9]; /* 遍历标记数组*/int queue[MAXQUEUE]; /* 定义序列数组*/int front = -1; /* 序列前端*/int rear = -1; /* 序列后端*//***********************二维数组向邻接表的转化****************************/void creategraph(int node[20][2], int num){graph newnode; /* 顶点指针*/graph ptr;int from; /* 边起点*/int to; /* 边终点*/int i;for (i = 0; i < num; i++) /* 第i条边的信息处理*/{from = node[i][0]; /* 边的起点*/to = node[i][1]; /* 边的终点*//* 建立新顶点*/newnode = (graph)malloc(sizeof(struct node));newnode->vertex = to; /* 顶点内容*/newnode->nextnode = NULL; /* 设定指针初值*/ptr = &(head[from]); /* 顶点位置*/while (ptr->nextnode != NULL) /* 遍历至链表尾*/ptr = ptr->nextnode; /* 下一个顶点*/ ptr->nextnode = newnode; /* 插入第i个节点的链表尾部*/ }}/************************ 数值入队列************************************/int enqueue(int value){if (rear >= MAXQUEUE) /* 检查伫列是否全满*/ return -1; /* 无法存入*/ rear++; /* 后端指标往前移*/queue[rear] = value; /* 存入伫列*/return 0;}/************************* 数值出队列*********************************/int dequeue(){if (front == rear) /* 队列是否为空*/return -1; /* 为空,无法取出*/ front++; /* 前端指标往前移*/return queue[front]; /* 从队列中取出信息*/}/*********************** 图形的广度优先遍历************************/void bfs(int current){graph ptr;/* 处理第一个顶点*/enqueue(current); /* 将顶点存入队列*/visit[current] = 1; /* 已遍历过记录标志置疑1*/printf(" Vertex[%d]\n", current); /* 打印输出遍历顶点值*/while (front != rear) /* 队列是否为空*/{current = dequeue(); /* 将顶点从队列列取出*/ptr = head[current].nextnode; /* 顶点位置*/while (ptr != NULL) /* 遍历至链表尾*/{if (visit[ptr->vertex] == 0) /*顶点没有遍历过*/{enqueue(ptr->vertex); /* 将定点放入队列*/visit[ptr->vertex] = 1; /* 置遍历标记为1 */printf(" Vertex[%d]\n", ptr->vertex);/* 印出遍历顶点值*/ }ptr = ptr->nextnode; /* 下一个顶点*/}}}/*以下定义邻接矩阵类型*/typedef struct {int no; /*顶点编号*/InfoType info; /*顶点其他信息*/} VertexType; /*顶点类型*/typedef struct /*图的定义*/{int edges[MAXV][MAXV]; /*邻接矩阵*/int vexnum, arcnum; /*顶点数,弧数*/VertexType vexs[MAXV]; /*存放顶点信息*/} MGraph; /*图的邻接矩阵类型*//*以下定义邻接表类型*/typedef struct ANode /*弧的结点结构类型*/{int adjvex; /*该弧的终点位置*/struct ANode *nextarc; /*指向下一条弧的指针*/InfoType info; /*该弧的相关信息,这里用于存放权值*/ } ArcNode;typedef int Vertex;typedef struct Vnode /*邻接表头结点的类型*/{Vertex data; /*顶点信息*/ArcNode *firstarc; /*指向第一条弧*/} VNode;typedef VNode AdjList[MAXV]; /*AdjList是邻接表类型*/typedef struct{AdjList adjlist; /*邻接表*/int n, e; /*图中顶点数n和边数e*/} ALGraph; /*图的邻接表类型*/int visited[MAXV];void MatToList(MGraph g, ALGraph *&G)/*将邻接矩阵g转换成邻接表G*/{int i, j, n = g.vexnum; /*n为顶点数*/ArcNode *p;G = (ALGraph *)malloc(sizeof(ALGraph));for (i = 0; i<n; i++) /*给邻接表中所有头结点的指针域置初值*/G->adjlist[i].firstarc = NULL;for (i = 0; i<n; i++) /*检查邻接矩阵中每个元素*/for (j = n - 1; j >= 0; j--)if (g.edges[i][j] != INF) /*邻接矩阵的当前元素不为0*/{p = (ArcNode *)malloc(sizeof(ArcNode)); /*创建一个结点*p*/p->adjvex = j;p->info = g.edges[i][j];p->nextarc = G->adjlist[i].firstarc;G->adjlist[i].firstarc = p;}G->n = n; G->e = g.arcnum;}void ListToMat(ALGraph *G, MGraph &g)/*将邻接表G转换成邻接矩阵g*/{ int i, j, n = G->n;ArcNode *p;for (i = 0; i<n; i++) /*g.edges[i][j]赋初值0*/for (j = 0; j<n; j++)g.edges[i][j] = INF;for (i = 0; i<n; i++) {p = G->adjlist[i].firstarc;while (p != NULL){g.edges[i][p->adjvex] = p->info;p = p->nextarc;}}g.vexnum = n; g.arcnum = G->e;}void DispMat(MGraph g)/*输出邻接矩阵g*/{int i, j; for (i = 0; i<g.vexnum; i++){for (j = 0; j<g.vexnum; j++)if (g.edges[i][j] == INF)printf("%3s", "∞"); else printf("%3d", g.edges[i][j]); printf("\n");}}void DispAdj(ALGraph *G)/*输出邻接表G*/{int i;ArcNode *p;for (i = 0; i<G->n; i++){p = G->adjlist[i].firstarc;if (p != NULL) printf("%3d: ", i);while (p != NULL){ printf("%3d", p->adjvex); p = p->nextarc; }printf("\n");}}void DFS(ALGraph *G, int v){ArcNode *p; visited[v] = 1; /*置已访问标记*/printf("%3d", v); /*输出被访问顶点的编号*/p = G->adjlist[v].firstarc; /*p指向顶点v的第一条弧的弧头结点*/while (p != NULL){if (visited[p->adjvex] == 0) /*若p->adjvex顶点未访问,递归访问它*/DFS(G, p->adjvex); p = p->nextarc; /*p 指向顶点v的下一条弧的弧头结点*/}}void DFS1(ALGraph *G, int v){int i, visited[MAXV], St[MAXV], top = -1;ArcNode *p;for (i = 0; i<G->n; i++)visited[i] = 0; /*结点访问标志均置成0*/ printf("%3d", v); /*访问顶点v*/top++; /*v入栈*/St[top] = v;visited[v] = 1;while (top >= -1) /*栈不空时循环*/{v = St[top]; top--; /*取栈顶顶点*/p = G->adjlist[v].firstarc;while (p != NULL && visited[p->adjvex] == 1)p = p->nextarc; if (p == NULL) /*若没有退到前一个*/ top--;else /*若有,选择一个*/{v = p->adjvex;printf("%3d", v); /*访问顶点*/visited[v] = 1;top++; /*入栈*/St[top] = v;}}printf("\n");}int main(){int i, j;MGraph g, g1;ALGraph *G;graph ptr;/* 边信息数组*/int node[20][2] = { { 1, 2 }, { 2, 1 }, { 6, 3 }, { 3, 6 }, { 2, 4 }, { 4, 2 },{1, 5}, { 5, 1 }, { 3, 7 }, { 7, 3 }, { 1, 7 }, { 7, 1 }, { 4, 8 }, { 8, 4 }, { 5, 8 }, { 8, 5 }, { 2, 8 }, { 8, 2 }, { 7, 8 }, { 8, 7 } };int A[MAXV][6] = { { INF, 5, INF, 7, INF, INF }, { INF, INF, 4, INF, INF, INF }, { 8, INF, INF, INF, INF, 9 }, { INF, INF, 5, INF, INF, 6 }, { INF, INF, INF, 5, INF, INF }, { 3, INF, INF, INF, 1, INF } };g.vexnum = 6; g.arcnum = 10;puts("This is an example of Width Preferred Traverse of Gragh.\n");for (i = 1; i <= 8; i++) /*顶点结构数组初始化*/{head[i].vertex = i; head[i].nextnode = NULL; visit[i] = 0;}creategraph(node, 20); /* 图信息转换,邻接表的建立*/ printf("The content of the graph's allist is:\n");for (i = 1; i <= 8; i++){printf(" vertex%d =>", head[i].vertex); /* 顶点值*/ptr = head[i].nextnode; /* 顶点位置*/while (ptr != NULL) /* 遍历至链表尾*/{printf(" %d ", ptr->vertex); /* 打印输出顶点内容*/ptr = ptr->nextnode; /* 下一个顶点*/ }printf("\n"); /* 换行*/}printf("The contents of BFS are:\n");bfs(1); /* 打印输出遍历过程*/ printf("\n"); /* 换行*/ puts(" Press any key to quit..."); getchar();for (i = 0; i<g.vexnum; i++) /*建立图9.1的邻接矩阵*/for (j = 0; j<g.vexnum; j++)g.edges[i][j] = A[i][j];printf("\n"); printf(" 有向图G的邻接矩阵:\n");DispMat(g);G = (ALGraph *)malloc(sizeof(ALGraph));printf(" 图G的邻接矩阵转换成邻接表:\n");MatToList(g, G); printf("图G的邻接表:\n");DispAdj(G); printf(" 图G的邻接表转换成邻接邻阵:\n");ListToMat(G, g1); DispMat(g1); printf("\n");printf("从顶点0开始的DFS(递归算法):\n");DFS(G, 0); printf("\n");printf("从顶点0开始的DFS(非递归算法):\n");DFS1(G, 0); printf("\n");}四、测试分析1.测试结果及分析调试过程中遇到的问题以及对设计与实现的回顾讨论和分析:一个图的DFS序列不一定惟一:当从某顶点x出发搜索时,若x的邻接点有多个尚未访问过,则我们可任选一个访问之;源点和存储结构的内容均已确定的图的DFS序列惟一;邻接矩阵表示的图确定源点后,DFS序列惟一;DFS算法中,当从vi出发搜索时,是在邻接矩阵的第i行上从左至右选择下一个未曾访问过的邻接点作为新的出发点,若这样的邻接点多于一个,则选中的总是序号较小的那一个。

相关文档
最新文档