课程设计报告范文

2022-08-02 来源:其他范文收藏下载本文

推荐第1篇:课程设计报告

课程设计报告

课程设计报告应该怎么写?课程设计是一个有目的、有计划、有结构的产生教学计划、教学大纲以及教科书等系统化活动。下面小编给大家带来课程设计报告,欢迎大家阅读。

课程设计报告范文1 1。2课题背景及研究意义

本课程设计是在《数据库与管理信息系统》课程理论教学之后的实践教学,其目的在于加深对数据库原理、管理信息系统基础理论和基本知识的理解,进一步掌握利用结构化方法对管理信息系统进行分析与设计的基本原则、方法和步骤,培养学生解决实际问题、开发管理信息系统的实践能力。同时课程设计充分体现“教师指导下的以学生为中心”的教学模式,以学生为认知主体,充分调动学生的积极性和能动性,重视学生自学能力的培养。通过课程设计使学生认识管理信息系统开发的基本过程,能够运用系统分析和设计方法进行管理信息系统的开发。

课程作业要求如下:

内容要求

1。文字在4000 字以上,需在封面注明题目、班级、组员;

2。能够阐明现行系统的业务情况,能够进行业务流程分析;

3。能够利用数据流图进行信息结构的分析与设计,建立E—R 图和相应的数据字典;

4。能够建立系统的结构图,能够运用U/C 矩阵进行子系统划分和数据正确性检验。

组织要求

1。按时完成课程设计,及时提交成果;

2。能够充分应用Word、Execel、PowerPoint 等工具制作和表达系统方案;

3。能够积极参与小组合作,认真完成自己所担负的任务,并向其他组员阐明自己的设计思想,互相讨论,完成自己的设计工作;

4。各组内的同学能够互相督促,交流充分;

5。组长能够及时向指导教师报告自己所在组的进度。

文档要求

1。图表美观,文理通顺;

2。能够参考软件开发的国家标准文档,指导自己编写设计报告的相关部分;

3。尝试应用项目管理软件进行项目进程的规划管理。

人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间、人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动化处理变得十分重要,这正是本系统开发的目的和意义。

而本系统的开发,为工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:本系统的运行可以代替人工进行许多繁杂的劳动;第二,本系统的运行可以节省许多资源;第三,本系统的运行可以大大的提高的工作效率;第四,本系统可以使敏感文档更加安全。第五,本系统在经济上是可行的。

1、基本思路

用VB设计界面,编写代码,在VB中通过调用SQL数据库实现查询,删除,修改,添加等功能。

2、作业目标

1 人事信息录入,编辑,修改,查询,打印

把员工信息记录进数据库,可以随时查看,起到档案的作用,登记了人事信息,便于管理。该系统按照人事劳资管理人员的书写习惯,可对员工的编号、员工的姓名、性别、所在部门、职位名称、最高学历、等基本信息进行记录,为了方便起见,还增加了备注的功能,可以对员工进行评语及特点的描述。信息录入后最终自动生成详细的易于操作的人事档案表,可以随时的记录了解本公司的员工信息,一目了然。本系统支持任何一种输入方法。

2 工资管理录入,编辑,修改,查询,计算,统计

工资信息主要包括员工的底薪、补贴、奖金、加班费、房贴、养老金、等项目,另外,系统会自动统计该员工的工资的总工资等信息。

3 各种信息的查询统计

查询可以提高了工作效率,输入字符即可获得符合条件的信息,统计可以从杂乱的数据中,分析出有效的数据。

4 系统数据的安全保密,设定系统用户

系统为区分了身份,因此由用户和密码,级别构成,这样系统在系统登陆界面进行身份验证,将输入的信息和用户表进行比较,让符合身份的用户通过验证。

1、个人主要工作

我和其他组员一起进行系统分析,业务流程分析,数据流图的绘制,数据字典的编制。系统设计过程中,与他们一同设计新系统功能,设计E—R图,输入输出设计。在次过程中计划了分配了各自的任务,在设计和画E—R图过程中对于应当注意的事项,提醒注意。当遇到问题时候,向同学老师请教,及时解决。在系统实施过程中,设计模块,并编写程序。调试时,改正相应的错误。

2、主要收获

课程设计的心得体会

做了两周的课程设计,有很多的心得体会,有关于单片机方面的,更多的是关于人与人之间关系方面的。

我在自己的努力下,在老师同学们的帮助下,终于把整个系统完成了,实现了预定的功能,以前的SQL语言没学好,一开始的程序这块儿就要令我抓狂了。后来

在几天几夜的努力,终于有了头绪,然后又在同学的帮助下,找到了一些参考书,又在这写书的帮助下了解了系统设计的各种方法,在编译过程中常常出现的问题,和解决的方法。接下来就是编程件方面的焊接工作了。没想到这项看起来不需要多少技术的工作却是非常的劳心劳力。很多次是早上起来买瓶水放些吃的在宿舍里,一泡就是一天。我看到有很多人跟我一样,都他们是三三两两,一同讨论学习。在这个时候也有很多人帮助我,或是热心的帮我带饭。大家都鼓励我,即使最后出不来东西,但是一定要坚持把它做完。当我想放弃的时候,我也这么对自己说,即使你做出来的是次品甚至不合格品,但是你一定要拿出来一件成品。

一个多星期后我们的程序终于完成了,而且放到一起也能用。在机房调试虽然出现了一些问题,但都解决了。最后,我发现自己对编程竟然也有了一点兴趣,想寒假回家以后自己去买一些东西来做,再补一补汇编语言。

课程设计报告范文2 在开学的第一周,我参加了院里组织的数据库课程设计,这项任务是分组分工完成的,我们组有五名成员,分别是我们班学号的后五位同学,很荣幸地我被推荐为我们组的组长,在组长的“英明”指导下,全体组员团结奋斗,使得任务完成地比我们预期的要稍早一些,也比预期要漂亮一些,这一点我们都感到很高兴也很自豪。

王婆卖瓜时间过了,言归正传吧。凡是都要有个总结,以下便是我在这个课程设计中的一点心得。

首先我分析一下我们组任务顺利完成的成功之处并总结一些经验,供以后反省参考用。

凡事预则备,不预则废。这是我的座右铭,也是我深有感悟的几句古语之一。在这个项目的开始阶段,老师便让我们做了个进度安排表,我很好的利用了这次机会,花了较多心思作出了一个很详细的进度安排表,之后我们组任务的完成也是严格按照这个进度表进行的。当然我后来去了解了一下别的组的情况,有些组的进度安排表没我们组做完善的一个很重要的原因就是他们对这一周的数据库课程设计到底还没什么概念。导致这种现象的原因有很多方面,一个是基础太差不能理解老师安排的任务,一种是缺乏交流,这个交流包括组内的交流,也包括组间的,更包括与老师之间的,这也就引出了我的第二个心得。

多交流,这是我这次项目的第二个心得。对于这种分工完成的项目,组员之间的交流是极其必要的。如果组员之间不能很好的沟通,不仅会做很多无用功,而且也会做很多重复的工作。组员之间很好的互通有无,表明自己正在做什么,下一步要做什么,才能使工作很好的开展开来。而我们组这次就做到了这点,我们每天都会在qq上或者见面相互交流,并及时修改进度安排表;除此之外,我们还相互帮助解决问题,或者共同解决问题,比如说这次的概念模型的设计,我们组负责设计概念数据模型的同学和负责数据需求分析的同学就经常沟通,共同解决问题,才会做出令我们组员都比较满意的数据概念模型和漂亮的数据需求分析文档;当然最重要的是我们也常会去与老师沟通,老师也在关键的设计地方也给了很多很多的宝贵意见。当然不得不作出检讨的地方是组长这次与老师交流的比较少,反而不及组员,希望在接下来的项目中能有所改观,起好带头作用。我同样也有观察别的组完成情况,发现有些组出现了组长包干或者组长与个别组员的包干的现象,我觉得导致出现这种可怕现象的主要责任在于组长,组长的任务不仅仅参与部分任务的完成,更重要的是分配任务并协调组间关系,是沟通交流的一根主要管道。通俗的讲就是组长上要联系老师,中要与他组交流,下要与组员积极沟通,我觉得这也是组长这个角色的设置的必要所在吧。我真心地希望在我们下一个创新课程j2ee的训练中我们班不要再出现这种现象,每个人都有平等得到锻炼的机会,组长不认真分配任务不积极与组员沟通在某种程度上剥夺了组员得到锻炼的机会,而更可悲的是很多组员还没有意识到这一点。

多主动,这一点原本和上一点多交流有很多相似之处,但我把它专门列出来也是为了体现他的重要性。多主动一方面是说要主动积极的思考解决问题。有很多同学比较好学,总是不停的在与别人沟通交流,看似很积极,但是仔细分析他提出的那些问题着实汗涔涔,有些问题近似牢骚话类,稍微开动点脑筋就能解决的,但其总不会先去寻找解决问题的办法后再提出个经过大脑过滤的问题,说白了就是凡事都没有个自己稍微成熟的看法。关于这一点我曾经就一度犯过,现在回想起那段岁月着实还是对有些同学的耐心感动到热泪盈眶。直到有一天张老师找我谈了一次我才幡然醒悟到,之后便有了教大的长进,至少变得比较会提问题了。当然我觉得这一点还是值得给与一定程度的肯定的,至少他肯学,比起那种喜欢“搭顺风车”的同学强多了。我上面提到的而关于组长的剥夺组员锻炼权利的问题想必要是被有些组长看了会大有意见,组长会说:“你以为我喜欢一个人全干啊,还不是被逼的”。出现这种情况也于他们组喜欢“搭便车”的人太多了有关系,这也在一定程度上映射出了这个组组员和组长团队意识的极度缺乏。又扯远了,总之喜欢“搭车”的那部分同学可要提高警惕了,眼看过一年就要出去实习了,还不抓紧时间主动学点东西,还不停的让组长剥削你得到锻炼的机会,以后在这条路上怎么混得下去啊?

以上很简单的三点让我们组在这次设计之中顺利完成了任务,下面谈谈我们组在这次任务中做的不足的地方吧。

首先得从组长自身谈起,刚有说到组长与老师交流较少是第一点,第二点是组长一直以来的老毛病了,就是基础不扎实,数据库的理论知识很多考完就忘的干干净净,在项目的开始阶段又返工去补习部分数据库的知识,而且我们的组员大部分也这样,甚至班里有很多同学也是这样的。所以以后对于重要的专业基础课一定要牢牢把握,绝不能追求过一门算一门。不过话说回来,组长这次返工还是较有成效,很快的理解了设计任务,并以最快的速度做好了详细的进度安排表,需要被鼓励一下呵呵。第三点就是组长对问题的解决程度缺乏完美的追求,说通俗一点就是不求甚解,其实在我们的设计模型中,有一些地方还可以做调整的,数据的完整性和合理性将会进一步提升,如果我带领组员朝这个方向再多努力一点,水平就不仅仅提高几个档次了,但是组长鼓励组员去解决了一部分,且在一些地方确实做了修改。

其次说说组员,这几位组员中有两位与组长合作过一次,默契还不错,在这次的任务的完成中发挥了很大的作用,他们是周#和左##,分别担任功能需求说明书的编写和数据需求分析说明书的编写,曾在第一次小组会议就表示一定要交出令组长非常满意的作品,而且事实的确是这样,都完成的很出色。而其余两位同学相对主动性就差了点,总是要组长不停的花心思督促能勉强完成任务,令组长很是头疼,但总的来说还是很配合,但这也在一定程度上导致组内组员水平出现较大差异。

怎么办呢不足之处真还少,可能是组长反省的还不够吧,等以后反省彻底了再和老师说说吧。

推荐第2篇:课程设计报告

一. 设计题目

WFS-601面包电话制作

二. 主要内容

1、分析面包电话机的功能,了解面包电话机的构造

2、完成面包电话机的焊接,要求焊点符合焊接要求。电话要实现接听与呼叫以及来电铃响的功能

3、用protel软件完成面包电话机印制电路板的制作

三. 具体要求

1、学会分析电路原理图,学会绘制Protel原理图,学会一种实用电子器件的安装与调试。

2、在设计期间,认真查阅所需资料,按照所查资料以及面包电话机的电路板以及电路图,并且利用protel软件在计算机上完成电路图,PCB板的仿真,最终实现课程设计的任务。

3、在课程设计结束时要提交《课程设计报告》。指导教师对学生的所完成的题目进行现场检查,进行综合评定。

四.进度安排

查阅资料,分析面包电话机的电路原理 一天 元器件筛选,熟悉整个面包电话机的构造与功能 一天 焊接面包电话机 一天 面包电话机组装、功能调试 一天

整理设计资料,绘制面包电话机原理图和印制板PCB图并完成课程设计报告。

一天

五. 成绩评定

1、平时成绩:无故旷课一次,平时成绩减半;无故旷课两次平时成绩为0分,无故旷课三次总成绩为0分。迟到20分钟按旷课处理。

2、设计成绩:按照实际的焊接过程、焊点质量以及最终的调试结果给出相应的成绩。

3、设计报告成绩:按照提交报告的质量给出相应的成绩。

WFS-601面包电话制作

目录

正文:要求至少包括以下内容!

1.实验器材准备(包括课题意义,元件清单等) 2.元器件辨别

3.WFS-601面包电话的原理(分振铃和手柄板两部分,详细介绍各部分的功能),尤其是各个芯片)

4.电路板焊接(简要介绍手工焊接的要点并附上自己焊接电路板的图片) 5.电话机安装(介绍安装步骤并附图片)

6.protel99 SE绘制电路板仿真(附上印制电路板图,电气规则检测ERC ,创建网络表,PCB图) 7.心得体会

推荐第3篇:课程设计报告

学 期:2014-2015-2 作 业:课程设计社会调研报告

班 级:社会工作131 学 号:1325012029

姓 名:蒋叶青

指导老师:钱雪飞老师

一.简介

时间:2015.5.26-5.28

地点:中国杭州

人物:南通大学社会工作131全体学生 钱雪飞老师 吴祁老师

二.摘要

步入大学两年,我已经深深系喜欢上了社会工作专业,同时,在大二的课程学习中,我也了解到一些关于老年人社会工作的相关知识,让我对社会工作专业有了更详细的认知。而在我们的课程实践周中,我们拜访了杭州市社会福利中心,更是让我充分了解了有关老年人社区工作的一些细节,为我以后的社工之路做了良好的铺垫。而后我们参观了拥有上百亿资产的娃哈哈集团,领略了作为大企业的风采。在杭州的第三天,我们集体参加了三墩镇社区服务中心的讲座,参观了该社区的一些福利项目,可以说该社区是以人性化为主,环境优良,设施齐全,治安良好的典范。

三.主要内容

(一).杭州市社会福利中心

拱墅区和睦路451号

(1)简介

前往杭州的第一天,我们集体拜访了位于拱墅区的杭州市社会福利中心。杭州市社会福利中心是经市委、市政府确定的庆祝建国50周年重点建设项目和1999年市政府为民办实事工程之一。工程按国家级福利院标准建设,占地60亩,环境优越、清雅幽静,绿化率达60%以上,建筑面积为57200平方米,总投资1.6亿元,于1999年11月正式开业。而在2005年,该中心为了满足不同老年人服务的需求,重修2期,新增8号楼 350张床位,帮助了更多需要护理入住的老年人,让他们安享晚年。随着杭州市社会福利中心的发展,在2009年,该中心又新增了特护专区,专门为缺乏自理能力的老年人设立了558张床位,大部分为合订床位,解决了因人数太多造成的拥挤问题,同时,也便于护理人员的管理。开业至今,杭州市社会福利中心以其优良的环境,科学化的社区管理机制,人性化的服务,吸引了杭州市2000多名老年人前来入住。现在入住老人的平均年龄达到84岁,大部分均为有自理生活能力的健康老人。

参观期间,我们了解到,该中心是市民政局所属的国办社会福利事业单位,以自费寄养为主,具有生活、医疗、康复、文化娱乐等多种功能。我们参观了一楼的活动区,小卖部,医务室,健身房,康复理疗室等不同功能的活动室,我发现这些活动室环境干净整洁,设备齐全,布局合理,尤其是各个走廊均设有挂靠在墙面上的扶手,便于老年人搀扶同行,是非常人性化的设计。

通过讲解员与我们对话,沿途我们参观了一些老人的住所,我们了解到,中心设休养楼7栋,床位共1458张,分套间、单人间、双人间和多人间,内设有彩电、电话、壁柜及单独卫生间,每栋楼均配有空调和电梯。医疗护理设有诊断、检验、治疗、康复、观察室和护理病床。中心内有为老年人提供服务的健身房、阅览室、棋牌室、台球室、乒乓球室、网球(羽毛球)场、电脑室、歌舞厅等集体娱乐场所,另设有餐厅、洗衣房等老年人生活服务设施。本中心坚持休养、保健、康复并重的服务方向,本着为老年人服务的宗旨,按老年人的不同年龄、不同需要开展各项生活和医疗护理。

后来,我们自由活动参观时,我和一些同学遇到了住在该中心的一堆老夫妻,老爷爷在悠闲的荡秋千,老爷爷面容和善,已经90岁高龄,脸上洋溢着幸福的笑容,而老奶奶则在一旁陪着老爷爷。然后,我们和老奶奶进行了简单的对话。据老奶奶介绍,老奶奶是江苏常州人,她老伴是江苏无锡人,她随老伴来杭州工作,从退休后就应经搬过来了,自己的子女会抽空来看望自己。关于该中心的服务,老奶奶表示自己还算满意,护理人员会每天帮助他们清洁生活用品,对于该中心的收费服务,老奶奶表示能接受,在合理范围内。

(二).哇哈哈集团

杭州市上城区清泰街160号

第二天,我们一行人参观了杭州娃哈哈集团,这次体验给了我很深的感受。娃哈哈创建于1987年,前身是杭州市上城区的一个校办企业经销部,从3个人、14万元借款白手起家,创始人宗庆后在30多岁时仍然很贫困,家庭非常贫困,共有兄妹5人,家庭成分差,父亲迁回杭州后找不到工作,全家只靠在杭州做小学教师的母亲的工资度日。后来他顶替母亲教职入工农校办纸箱厂做推销员,一步一步从推销员做到业务员,经销部经理,后来又做到了厂长,在他的一步一步努力下,他成为了娃哈哈集团董事长。在创始人宗庆后的领导下,现已发展成为一家集产品研发、生产、销售为一体的大型食品饮料企业集团,为中国最大的饮料生产企业,产量位居世界前列。在中国29个省市自治区建有80多个生产基地、180多家子公司,拥有员工3万名、总资产近400亿元。

我们随着讲解员的带领,参观了娃哈哈的饮料身生产过程,先进的生产设备和科学化的工作管理,让我深深感受到作为一家大型企业的风范魄力。

娃哈哈超越同行的科研开发能力、世界领先的自动化生产设备、厂商一家的市场销售网络、家喻户晓的品牌优势锻造了企业的核心竞争力,所有这些使娃哈哈成为目前中国饮料行业最具有活力、实力及发展潜力的企业。同时,娃哈哈也致力于通过自身的技术创新和努力,带动整个饮料行业的发展,与国际饮料发展水平接轨。

28年来,娃哈哈的发展得到了国家和社会的高度评价,先后获得了1000多项国家、省、市级荣誉称号,被国家有关部门授予“全国五一劳动奖状”、“全国食品工业科技进步优秀企业”、“全国质量管理先进企业”、“全国质量效益型先进企业”、“中国企业管理杰出贡献奖”、“全国对口支援三峡工程移民工作先进单位”、“全国东西扶贫协作先进集体”、“全国守合同重信用企业”、“全国工商企业信用评级AAA级信用单位”、“中国最受尊敬企业”、“中华慈善奖”、“国家西部大开发突出贡献集体”、“全国模范劳动关系和谐企业”、“全国就业先进企业”、“全国社会扶贫先进集体”等荣誉称号。

(三).杭州市西湖区三墩镇西苑社区

第三天上午我们参观了位于杭州市西湖区的三墩镇西苑社区,虽然它不在市中心,但是一进大门我就能感受到作为一个高档社区的魅力。这里环境优美,社区干净整洁,防止外来不良人员入内,设有门禁系统,保安认真负责。该社区共有7000多人,作为学区房,这里房价高达2万/平米,该社区老年人较少,主要为中青年人。

该社区的附近学校是九年制义务教育,满足了大多数家庭的求学需求,它毗邻浙江大学,有良好的学风氛围。该社区设置有地下车位,住户需要交纳26万才能获得一个车位,虽然价格高,但是对于杭州市普遍的社区来讲,这是很低的价位了。儿它的地下车位等于小区面积,满足了住户需求,充分保证了住户的停车需要。

该社区注重文化娱乐多元发展,设立十多支文体队伍,每逢重要节日,社区居民自发排练表演节目,其中文体团队包括武术队, 太极拳队,音乐队等, 丰富了社区人员的日常生活,提升了整个社区的活力。

社区设有专门的保安队伍,24小时巡逻,社区的案发率较低。让我感到惊奇的是,社区设有专门人员,通过人民调解的方法,来解决关于社区内违规搭建,婆媳关系,教育,计划生育等问题,帮助社区人员调解内部矛盾,创造良好的社区生活环境。社区设有劳动保障,包括企业管理,安排企业退休人员工作,开展养生讲座,组织社区人员出门游玩等活动。

我们了解到企业退休人员可以获得政府社区提供的专款,2400元/年,另外还包括130元退休经费。

社区设有运动场地,包括足球场,篮球场,排球场等,方便社区居民开展多种多样的问题活动。 而今年是《中小学场地对外开放 》第一年实施,这项规定的提出,方便了社区居民的健身运动,同时也给管理造成极大不便。为了防止外来人员擅自入内,社区设立了专门的监管人员,为市民开办运动卡,通过摄像录像记录的方式严格监管,为了支持该项政策的实行,市政府也拨款了2万元用于建设。

为了社区孩子的健康成长,社区开办了雏鹰乐园,培养孩子的兴趣爱好,组织孩子们积极参加各项活动。社区通过捐赠,开展图书漂流活动,设立电子阅览室使社区孩子们有了学习的动力。

同时,社区积极开展民政工作,为老年人办老年卡帮助他们生活出行。 在城市管理工作中,社区部门专门跟物业探讨,积极解决社区内部的卫生状况,还社区居民良好的生活环境,

(四).杭州黄龙洞

我们参观了杭州黄龙洞,它位于栖霞岭后的山麓上,从岳庙边上一条山径上去全程行山路约1公里即到黄龙洞。

从马路上走到黄龙洞“福”字雕刻之间的沿途风景很好,有很多人在游玩,附近有黄龙体育中心,也是一个大的旅游集散中心,像上海原来的万体馆。从黄龙洞门口经过,不必买票,直接上山,可以上到栖霞岭,路上会经过牛皋墓,白沙泉,紫云洞,一路上风光不错。栖霞岭上可以看到西湖全景,视野很好,很多老人在上面锻炼。有次国庆从上面看断桥和苏堤,密麻麻一条蠕动的黑线,人真是多。从栖霞岭下来可以直接到岳庙门口,沿途有些小饭店,价格很便宜,据说栖霞岭的村民大部分都姓岳,是岳飞的后代。

它以缘为主题,龙为主景,将“缘景”和“龙景”有机结合,这就是黄龙洞圆缘民俗园,新西湖十景之一的“黄龙吐翠”。相传南宋年间,1247年,杭州出现大旱天气,宋理宗请来了江西黄龙山的慧开禅师到此作法求雨。有一天,雷声震地,山后一块石头突然裂开,裂口犹如龙嘴,喷出一股清泉流入碧池,民间传言黄龙随慧开前来解救干旱,于是便称此地为“黄龙洞”。清末时,黄龙洞才由寺院改为道观,规模不大,还是山林水洞名气更大。

黄龙洞很有古意,进门但见松篁交翠,山径幽深。主景有池,池后有山,水石交融。其山虽由人作,但却宛若天开,山崖之上饰有一龙头,泉水由龙嘴泻入池中,地中立石,上刻“有龙则灵”,洞边岩石上刻有“水不在深”,这是一座叠理很好的水假山,池边有亭有廊,可满足游人“常倚曲栏贪看水”的心理。池的对面有一组小庭院,植有各种竹类植物,其中以方竹最为著称,是一种名贵的观赏竹。池右假山的半腰有一人工造就的山洞即黄龙古洞,过去洞内有一座石刻的黄龙祖师像,即为慧开和尚。沿山径而上可至卧云洞,洞壑宽敞,常有雾气弥漫,因名卧云洞。

近几年来,黄龙洞接待人员全部古装打扮,池边亭檐上斜挂着"太白遗风"的酒旗,游人可入内小酌,凭栏观看前面亭子里的戏文。也可在黄龙古洞前聆听国乐古曲,音响经古洞反射十分宏亮,曲毕大有余音绕梁的感觉。黄龙洞已成为现代人寻古探幽的好去处。这里既有幽奇洞壑,精巧亭台;又有茂林修竹,怪石清泉,整座园林覆盖于森森的浓萌之中,显示出一派"藏龙卧虎"的神幽

(五).杭州西湖

西湖,位于浙江省杭州市西面,是中国大陆首批国家重点风景名胜区和中国十大风景名胜之一。它是中国大陆主要的观赏性淡水湖泊之一,也是现今《世界遗产名录》中少数几个和中国唯一一个湖泊类文化遗产。

西湖三面环山,面积约6.39平方千米,东西宽约2.8千米,南北长约3.2千米,绕湖一周近15千米。湖中被孤山、白堤、苏堤、杨公堤分隔,按面积大小分别为外西湖、西里湖、北里湖、小南湖及岳湖等五片水面,苏堤、白堤越过湖面,小瀛洲、湖心亭、阮公墩三个小岛鼎立于外西湖湖心,夕照山的雷峰塔与宝石山的保俶塔隔湖相映,由此形成了“一山、二塔、三岛、三堤、五湖”的基本格局。

古往今来,不知有多少文人墨客浏览过西湖,写过多少令人痴醉的文章,千百年来广为流传,而我也独恋那西子湖畔的一潭令人心旷神怡,宠辱偕忘的水„„ 西湖之水是很绿的,也许是周围环绕着层层叠叠的苍翠欲滴的树木的缘故吧,使得这水那么绿,使人不敢相信自己的眼睛,仿佛春姑娘就住在湖底,摇动的水草呈现出翠绿颜色,闪亮闪亮的,太阳光一照,便活跃起来了,像一群舞者穿着闪亮的裙子在跳舞,舞姿那样整齐。那样优美,令人沉醉。 “欲把西湖比西子,淡妆浓抹总相宜”想必大家都知道这一描写西湖美景的名句吧。的确,我也喜欢这句诗,因为同作者一样深恋着那西子湖畔,深恋着西子湖畔那一潭无以伦比的水。

(六).塘栖古镇

塘栖古镇位于浙江省杭州市余杭区,在杭州市北部,与湖州市的德清县接壤,距市区中心约20公里,距区政府所在地临平约13公里,著名的京杭大运河穿镇而过,使其成为苏、沪、嘉、湖的水路要津,历朝历代以来,塘栖均为杭州市的水上门户。

以前河运盛行之时塘栖乃是江南十大名镇之首,由此就可以知道塘栖的繁华程度,并且可想而知的是塘栖已经距离京杭大运河终点站杭州市已经很近,它的繁荣也是必然的。另外,可以看的亮点还有乾隆御碑。

塘栖,地处杭嘉湖平原南端,是浙北重镇、江南水乡名镇、属杭州临平副城副中心。是闻名遐迩的“鱼米之乡、花果之地、丝绸之府、枇杷之乡”。

后记

如果还能再来一次旅行,我一定会把最美的景点记在心中,此次杭州之旅,让我长了不少见识。其中,令我感触最深的还是社会福利中心和三墩镇西苑社区,他们拥有规范化管理和人性化的设施服务,解决了入住居民的各项生活问题。同时,通过此次旅行,我也感悟到了作为一个社工,我不应该局限于书本知识,要多多拓宽视野,学习先进的管理和服务经验,以便未来更好的求职和发展。

推荐第4篇:课程设计报告

华东交通大学轨道学院

车站信号自动控制

题目:车站信号自动控制课程设计 专业:

班级: 姓名: ____ 学号: ____________ 指导老师:

时间:20年月日 至 20年月日

华东交通大学轨道学院

目录

任务书

一、概述······································1

二、组合连接图································1

1、继电器组合······························1

2、组合连接图的绘制························2

三、联锁表····································3

1、联锁表的作用····························3

2、联锁表的内容····························3

3、联锁表的填写····························4

四、电路图····································5

1、CAD概述································5

2、CAD的基本绘制··························5

五、设计结果···································8

六、总结·······································8

华东交通大学轨道学院

任务书

一、课题内容

基于给定的每个站场的车站信号平面布置图,用A4纸制出整个车站的组合连接图;按规范编制出整个车站的联锁表(包括上行咽喉与下行咽喉);用AUTOCAD绘制给定的6502的网络电路图或局部电路图。

二、设计任务及要求

1.基于给定的每个站场的车站信号平面布置图,用A4纸制出整个车站的组合连接图(附图1);

2.基于给定的每个站场的车站信号平面布置图,用A4纸制出整个车站的联锁表(包括上行咽喉与下行咽喉);

3.用AUTOCAD绘制给定的6502的网络图或局部图(附图2-5)。

4.写出课程设计报告。

5、注意事项:

 组合连接图要用A4纸手绘。

 联锁表的表格可以用电脑打印在A4纸上,但是里面的内容全部要手写,请一定要亲力亲为,不要照抄其他同学的,老师会随机抽问。

 AUTOCAD所制图可打印,也要自己完成,老师会随机找一条电路要某个同学画出来。

 所有的要求,是要让大家掌握所学的知识。

华东交通大学轨道学院

一、概述

本次车站信号控制系统的课程设计是对我们关于联锁表、组合连接图以及网络线学习的一次考验,是在这学期学的6502电气集中电路课程基础之上进行的一比较综合的实践。安排了这次课程设计不仅是为了巩固课堂教学,加强我们的理论知识,更是为了提高我们分析问题、解决问题的能力。通过此次的设计使我们在学完该课程后能综合运用车站方面的相关专业知识。此次设计,运用CAD绘图,提高了我们对专业绘图软件的使用熟练能力,并且通过查阅手册,资料,培养了设计的基本技能。为今后的学习与毕业设计及所从事的工作打下坚实的基础。

二、组合连接图

1、继电器组合

电气集中联锁系统采用继电器来实现联锁逻辑控制功能。一个规模较大的车站,所用继电器数量很多,既费时又费力。通过长期的实践,人们发现继电器电路虽然复杂,但其中大部分可以设计成定型的标准电路模块,这些模块与具体的站场无关或关联很少。这样就可以把这些标准模块中所用的继电器及其电路在工厂预先进行组装和配线,即实现工厂化预先生产,节省了大量的施工时间。

继电集中既然是由许多定型的电路模块组合而成的,因此称这些定型的电路模块尾组合单元。根据具体的站场平面布置图选取适合的组合并将其组合在一起,即形成了组合连接图。

2、组合连接图的绘制

华东交通大学轨道学院

根据站场平面布置图,从左到右安顺序选取各个类型的继电器组合并连接在一起,绘制出组合连接图。组合类型参照如下表格:

以下行咽喉X/D3至SⅡ这一段为例,其中包含信号机 X/D

3、SⅡ,道岔1/3的3号道岔、5号道岔,轨道区段 3-5DG。之后确定各自类型,如3-5DG为有岔区段,应写为2/Q;5号为单动道岔,应写为1/DD。最后把各组合连接到一起。

华东交通大学轨道学院

三、联锁表

1、联锁表的作用

联锁表是说明车站信号设备联锁关系的图表。联锁表中表示出了进路、道岔、信号机之间的基本联锁内容,同时,联锁表又是联锁设备开通试验时作为检查车站联锁设备之间联锁关系的主要依据。他是根据车站信号平面图布置图展示的线路,道岔、信号机以及轨道区段等情况,按照规定的原则和格式编制出来的。

2、联锁表的内容

1.方向栏:填写进路性质、列车、调车进路和运行方向(接、发车方向)和进路的始端信号机名称;

2.进路栏:逐条列出车站范围内的全部列车和调车的基本进路,基本进路方式规定为第一种方式在栏中写“1”,在提供的列车变通进路的进路方式栏内填写“2”、“3”......对于只有一种方式的列车及调车进路,本栏不填写。

3.进路号码栏填写所有进路的顺序编号;

4.按钮栏:顺序填写排列进路应按下的按钮名称;即进路始端信号机按钮填在始端拦;终端信号机按钮填在终端栏。

5.信号机栏:填写排列进路时应写已开放信号机的名称和显示;

6.道岔栏:顺序填写所排进路上的全部道岔以及有关防护道岔和带动道岔的编号和位置;

7.敌对信号栏:填写所排列进路的全部敌对信号,在填写时是有条件敌对则把条件填在的敌对信号一栏的末尾;

华东交通大学轨道学院

8.轨道区段栏:填写排列进路所应检查的轨道区段名称,其中还要写出对于侵限绝缘的检查是有条件的;

9.迎面进路栏:应填写同一到发线上,对向的列车和调车进路的敌对关系。

3、联锁表的填写

1.根据所给平面布置图选出所有存在的进路,按列车进路/调车进路、福州方向/温州方向、正方向发车/接车、反方向发车/接车进行分类。

2.对每一条进路,先确定进路方向、始端和终端,写出需按下的按钮,写出开放信号的信号机及亮灯颜色,确定此进路中道岔的位置(定位/反位),写出所有敌对信号,写出进路中的所有轨道区段。3.对于正方向发车,表示器一栏填写B-A,对于反方向发车,表示器一栏填写B-B 4.对于接车进路,要写出迎面进路(包括列车和调车)。 5.对于通过进路,进路号码栏需写上包含的发车进路和接车进路的号码

6.填写联锁表,并按顺序标上进路号码

以上行咽喉福州方面的列车进路正方向接至3G为例,需按下SLA、X3LA,信号机S开放,点亮两个黄灯,进路中道岔位置为(2/4)、(6),经过的轨道区段为ⅡBG、3G、2-8DG、4-6DG,迎面进路有3G(列车和调车),进路号码为7号。

华东交通大学轨道学院

四、电路图

1、CAD概述

AutoCAD(Auto Computer Aided Design)是Autodesk(欧特克)公司首次于1982年开发的自动计算机辅助设计软件,用于二维绘图、详细绘制、设计文档和基本三维设计。现已经成为国际上广为流行的绘图工具。AutoCAD具有良好的用户界面,通过交互菜单或命令行方式便可以进行各种操作。它的多文档设计环境,让非计算机专业人员也能很快地学会使用。在不断实践的过程中更好地掌握它的各种应用和开发技巧,从而不断提高工作效率。AutoCAD具有广泛的适应性,它可以在各种操作系统支持的微型计算机和工作站上运行,常用于土木建筑,装饰装潢,工业制图,工程制图,电子工业,服装加工等多方面领域。

2、CAD的基本绘制

设计制图过程里往往要多次重复绘制一些图形,本次课设将多次使用相同的图形,最好是将这些图形创建成“块”,以后用插入的方法将它调用到设计图里。。

第一步,在模型空间的图层下拉列表里选定“0”图层,画一个粗糙度符号,其中三角形边长为3.8mm。之所以要选定“0”图层的原因是在这图层创建的“块”,今后在插入时会自动变成插入时的图层的颜色。

第二步,在命令行窗口输入命令“wblock”并回车,弹出“写块”对话框。

华东交通大学轨道学院

第三步,点击对话框里的“拾取点”按钮,对话框暂时隐藏起来,捕捉并点击粗糙度符号图形的最下面的顶点,以后插入块的时候就以这点为定位点。

第四步,点击重新显现的对话框里的“选择对象“按钮,对话框又一次暂时隐藏起来,在模型空间用鼠标拖一个选择框,将粗糙度符号图形选中。

第五步,在重新显现的对话框里输入保存“块”的文件名如“粗糙度”,同时输入保存路径。最后点击“确定”。至此粗糙度符号的“块”就创建好了。

调用已创建的“块”很容易,点击“绘图”工具栏里的“插入块”工具,在弹出的“插入”对话框里的“名称”下拉列表里找到“块”的名称或者点击“浏览”,找到“块”文件,点击“确定”,在定位点点击鼠标,“块”里的图形就插入进来了。必要时可以在“插入块”对话框里键入要缩放的比例和旋转的角度。

在完成创建“块”的步骤的第一步后,暂时不再往下进行,而是操作菜单“绘图”→“块”→“定义属性”,弹出“属性定义”对话框。

第一步,在“属性定义”对话框里的“标记”文本框里键入标记文字,比如“粗糙度”。

第二步,在“属性定义”对话框里的“提示”文本框里键入提示文字,比如“等级”。

第三步,在“属性定义”对话框里的“值”文本框里键入默认的

华东交通大学轨道学院

值,比如“3.2”。

第四步,将文字选项的“对准”选成“右”,必要时还可以对“文字样式”、“文字高度”、“旋转角度”等选项进行改动。

第五步,点击“确定”,关闭对话框,在已经画好的粗糙度符号图形的适当位置点击鼠标,定义的属性就安置在粗糙度符号上了。

接下来,再从创建“块”步骤的第二步往下进行,完成“块”的创建。

本组的继电器“块”的建立如下图。

华东交通大学轨道学院

五.设计结果:

组合连接图见附件1。

联锁表见附件2 Cad图见附件3。

六、总结

8 8

推荐第5篇:计算机网络课程设计报告

计算机网络课程设计报告

目:简单企业网的设计与实现 专

业:计算机应用技术 姓

名:黄贤菊 班

级:1340301 学

号:201340030119 指导老师:魏树权

完成时间:2015年6月25日

1 目

一、··········概

述··········

二、··········设计目的···········

三、········设计内容及要求·······

四、··········实现过程···········

(1) 开发工具

五、·········网络拓扑图··········

六、··········设备清单···········

七、··········IP地址划分·········

八、···········配

置··········

九、··········测试结果···········

十、··········心得体会···········

2 概

述:

计算机网络课程设计是计算机专业实践环节之一,是学习完《计算机网络》课程后进行的一次全面的综合练习。其目的在于加深对OSI七层模型、TCP/IP模型的各层功能和设计思想的理解,掌握组建计算机网络的基本技术,特别是网络规划、设计和IP地址的分配。 设计目的:

通过该课程设计,使学生熟悉路由器、交换机的配置及相关命令。根据网络案例设计出包括网络拓扑结构图、IP分配及规划、特殊网络应用技术和网络测试及协议分析。提高学生对网络设计方案的分析、设计、论证、实现及文档规范书写的能力和解决实际问题的能力。

设计内容及要求:

某企业有办公室、财务部、销售部、设计部、生产部5个部门,每个部门配置8台计算机,现在需要设计并实现一个网络,,要求如下:

3 (1) 为每台计算机分配一个私有IP

地址,地址范围为:192.168.0.0/24。为保证部门间的访问隔离,每个部门单独划分一个子网,子网间通过路由器互联; (2) 企业已从电信申请4个公网IP地址210.88.55.11~210.88.55.14,为了能够使所有与主机访问Internet,需要在路由器中使用PAT技术; (3) 内、外网用户均需要访问企业内

部的一台Web服务器,可以在路由器中使用Static NAT技术来解决之一问题。

实现过程: 此次课程设计,采用了单臂路由的设计方法。

单臂路由:指在路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正物理接口)的方式,实现原来相互隔离

4 的不同VLAN(虚拟局域网)之间的互联互通。由于从拓扑结构图上看,在交换机与路由器之间,数据从一条线路进去,又从一个线路出来,两条线路重合,故形象的称之为“单臂路由”。

(1)开发工具:

cisco packet tracer模拟器

(Cisco Packet Tracer 是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖曳方法建立网络拓扑,并可提供数据包在网络中行进的详细处理过程,观察网络实时运行情况。可以学习IOS的配置、锻炼故障排查能力。)

网络拓扑图:

为了实现访问隔离,将五个部门划分为5个VLAN,每个部门8台计算机(为了方便设计及效果美观,本次设计选用两台计算机作为代表)。其中办公室属于VLAN10,财务部属于VLAN20,销售部属于VLAN30,设计部属于VLAN40,生产部属于VLAN50。而服

5 务器则属于VLAN60。网络拓扑图所示。

网络拓扑图

设备清单:

设备 电脑 交换机 路由器 服务器 网线

数量 40/台 4/台 2/台 1/台 若干

6 IP地址划分: 公司使用一个C类网络地址192.168.0.0/24,分为五个子网,则占用主机号3位即可,还剩5位主机号,可为32台主机服务,而每个部门只有8台主机,所以完全够用。

以下是完整的IP划分方案:

部门 IP段

192.168.0.2/24——办公室

192.168.0.9/24 192.168.1.2/24——财务部

192.168.1.9/24 192.168.2.2/24——销售部

192.168.2.9/24 192.168.3.2/24——设计部

192.168.3.9/24 192.168.4.2/24——生产部

192.168.4.9/24

7 配置:

(1)交换机配置: 每个子网中的交换机只需将端口划分到相应的VLAN中即可,以办公室的交换机为例,端口1—8与主机1—8相连,划分到VLAN10中,而与上层交换机的端口24则设置为trunk模式,如图所示。

底层交换机配置

(注:而在底层交换机的上层的交换机,则将端口全部设为trunk模式,其配置方式与底层交换机大体相同,在此不再赘述。)

(1)路由器配置: 起局域网内部路由功能的路由器需划分子端口,对各个VLAN起到路由作用。其配置过程如图所示。

单臂路由器配置

而另一个路由器则是起网络地址翻译功能。由于公司有40台主机,但是只有四个共用IP可以使用,其中,210.88.55.14/24分配给服务器使用,所以共用IP满足不了公司内部主机的使用,因此需要用到NAT来建立动态IP池,给主机动态分配IP,以解决IP短缺问题。其配置过程如图4.4.2.2与图4.4.2.3所示。其中上图为静态NAT配置,下图为动态NAT配置。

.静态NAT配置

.动态NAT配置

测试结果:

不同VLAN之间

由于在单臂路由之中,所以不同VLAN之间可以ping通,现以办公室与财务部之间的主机为例进行测试,如图所示。

不同VLAN间的测试

11 本地主机访问本地服务器:

以办公室主机为例,访问本地服务器,如图所示:

访问本地服务器

访问外部网络:

访问本地服务器,如图所示:

访问外部网络

心得体会:

通过本次网络课程设计,完成了简单的企业网络设计及前期调试验证,学会了对交换机、路由器的配置方法。课程设计是要把每个知识点掌握牢固而且融会贯通。

通过本次课程设计我明白了理论与实践相结合才是掌握知识的主要方法,学习书本知识时感觉很盲目,通过课程设计我更好的理解了书本上的某些抽象的知识。只有把所学的理论知识与实践结合起来,才能在

13 初步理解理论的基础上对该知识点融会贯通,从而能够更加全面、正确地完成自己的设计。

通过本次的课程设计,我学会了网络的基本分配,了解了计算机网络的基本格式和怎样对客户的需求进行分析,建立一定的方案,并且实现自己的方案。 网络是计算机专业一个前景非常广阔、应用极其广泛的领域,努力掌握基本的网络原理和设计网络方案是计算机系学生应该具备的本领。

在本次课程设计中,我得到了老师和同学的很多帮助,经过老师和同学的帮助,我最终还是完成了自己的设计内容,完善了自己的知识。 最后,感谢老师和同学的无私帮助!

推荐第6篇:数据库课程设计报告

数据库课程设计

校友通讯录

南华大学计算机科学与技术学院网络工程

(2010~2011 年度 第二学期)

2011.6.25

目 录

一、设计需求说明··············3

二、总体设计分析··············

三、部分模块设计分析············

四、程序源代码···············

五、运行结果及截图·············

六、心得体会················

七、参考文献················

3 4 10 18 23 23

一、设计需求说明

1、设计题目及要求

建立校友通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;

◆ 能够提供注册、登录和修改个人信息等的功能; ◆ 校友之间能进行相互通信;

2、系统功能需求分析:

1).注册,找回密码(无法登陆该系统); 2).登陆;

3).更改个人资料;

4).查看并浏览校友所有的公开性信息; 5).申请私人互动,进一步获取校友私有信息: ①发送申请消息; ②拒绝;

③通过,开放私人信息; 6).删除已在列表中的对象; 7).账号注销。

二、总体设计分析

系统功能模块图:

校友通讯录要实现的需求功能主要有注册,找回密码;登录;修改个人资料;浏览校友信息;查找校友;修改密码;删除校友;账号注销。 (1)注册:如果是新用户,用户可注册加入,填写详细的注册信息表。验证通过,如果注册成功,则进入校友通讯录主界面。

(2)找回密码:用户忘记了登陆密码,可通过找回密码功能找回密码,进入找回密码界面,填写邮箱号,可以修改密码。

(3)登录:输入正确的账号,密码,登陆成功,如果登陆次数超过5次,提示错误信息。

(4) 修改个人资料:进入个人信息页面,填写要修改的内容,如果修改成功,系统更新并记录信息。

(5)浏览校友信息:查看已在校友列表的校友的信息。 (6)查找校友:输入姓名、学院、专业等查找信息,查找成功。

(7)删除校友: 在已有的可互动的联系人中找寻并选择要删除的对象,如果删除成功则用户的私密信息不再对已删除对象开放。

(8)帐户注销:用户提出注销请求,如果退出校友通讯录系统,则系统注销退出者的个人信息。

三、部分模块设计分析

1.通讯录:

2.工作顺序图:

(1)注册:申请账号

注册注册数据 : 真实性检查错误真实加入班级记录,分配帐号

6

②找回密码:找回用户丢失的密码

找回密码已登陆用户进入更改密码界面已注册未登记用户申请找回密码键入新密码输入帐号系统发送密码通过电子邮件确认否记录

7

(3)登录:已注册的用户利用系统已分配的账号登录

已注册用户或管理员登录键入密码帐号验证密码帐号是否正确通过验证未通过验证验证是否为管理员拒绝进入普通用户管理员进入个人主页进入管理员界面系统维护8

4)修改个人资料:修改个人中心的资料

更改个人资料进入更改个人资料页面已登陆用户输入要更改的个人资料确定取消记录9 (

(5)浏览校友信息:查看校友的信息

已登陆用户 查看搜索校友公开信息进入搜索界面键入搜索信息精确搜索模糊搜索显示符合条件校友名单显示选中校友公开信息10

(6)查找校友:查找用户感兴趣的校友

通信许可权发送许可权申请收到许可权申请已登陆用户拒绝许可权申请同意许可权申请记录,加入联系人列表删除许可权浏览联系人私人信息

11

(7)删除校友:删除用户的好友

已登陆用户

删除通信权进入已获通信权列表选中要删除的联系人取消删除确定要删除移出,记录12

四、源程序代码

五、运行结果及截图 1.显示主菜单界面

2.添加界面

3.显示界面

4.删除界面

删除后,通讯录里的显示记录:

5.查询界面

以姓名查询方式为例:

6.修改界面

修改后,通讯记录的显示记录:

7.保存界面

六、心得体会

李兰利: 李竹村: 姚莉 : 李叶婷: 毛蓓:

梁娟:这次课程设计我觉得我做的事情比较少,尽的力不够,但在组员的辅助下,还是学到了一些东西。如:如何做原型设计、需求分析的应该做些什么,以及界面设计,数据库那边了解甚少。我觉得那句话话说得很对,团结就是力量。要做一件事,你需要有一个优秀的团队,大家可以一同进步,一同努力,困难一起克服。在这个团队中,我看到了他们钻研的精神,令我很敬佩;看到大家分工明确一起努力地画面。只是一次不错经验。

七、参考文献

何玉洁、李宝安《数据库系统教程》人民邮电出版社 教材《软件工程》

推荐第7篇:3d_max_课程设计报告

3DMAX设计报告

设计题目:办公室

业 计算机科学与技术

BU计算机091

金晓兰

0911503106

指导教师

唐拥政

完成时间

2012.11.22

3dmax设计:办公室

一、设计任务和设计要求

办公室基本上是每家企业必备的,现代人也越来越倾向于坐办公室。因此,一个良好的舒适的办公室环境可以提高我们的工作效率,同时影响我们的心情。

随着现代的社会科学技术突飞猛进,社会也在不断进步,人们对生活的要求也越来越高。人们开始注意到生活的质量,从而对生活的环境等等第一有了更新的要求。办公室的设计要充分考虑到舒适感,包括对桌椅的舒适度、电脑的位置摆放、适当的植物改善空气质量、百叶窗的设置等等,都需要细细考究。

根据题目和要求设计室内环境,控制灯光效果。为场景中的各个模型和角色建模,制作材质等等。

二、报告正文

(一)总体设计方案

设计一个包含桌子、椅子、台灯、电脑、盆景、百叶窗等的模拟办公室,并渲染出真实的效果,配合灯光的设计。室内设计的装饰风格一般应根据室内的空间用途、结构以及设计者的审美观和用户的要求来决定。每一类室内结构都具有不同的用途,其装饰风格也各有不同。应讲究实用美观,在构建模型时要注意各种模型之间的比例,材质贴图及颜色搭配也是要注意的。

(二)3D建模过程 1.屋型设计

2

3dmax设计:办公室

2.设计流程

(1)创建外框 用长方体创建室内空间 用布尔命令制作窗洞 (2)创建室内装饰物及材质的赋予

椅子:用切角长方体制作椅子,配合使用旋转、移动、缩放命令。注意:按住shift键可复制。椅子制作好开始赋予材质,在贴图通道中的漫反射右侧的按钮点击,选择位图打开,选择布料材质赋予材质球,拖动到椅子上即可 。

电脑:创建长方体,配合使用可编辑多边形命令中的面,在前视图中选择,央视字样的面,然后用倒角向里倒一深度,在ID材质中输入1,按ctrl+A反选,即电视机黑色部

3

3dmax设计:办公室

分,在ID材质中输入2即可,模型建好后开始赋予材质;按M键打开材质对画框,在明暗器基本参数中点击标准按钮,选择多维子对象材质,设置数量为2点击材质球1中右侧的按钮,选择位图中图片V打开,然后在反射贴图中加入光线跟踪,机身在材质球2赋予黑色即可。

茶几:用切角长方体制作椅子,配合使用旋转、移动、缩放命令。注意:按住shift键可复制。椅子制作好开始赋予材质,在贴图通道中的漫反射右侧的按钮点击,选择位图打开,选择布料材质赋予材质球,拖动到椅子上即可 。

柜子:用二维线形在前视图中创建剖面,然后在修改其中选择挤出命令,挤出一高度 用缩放命令调整合适大小,电视柜创建完成。材质赋予:按M键打开材质编辑器,点击标准按钮,选择建筑,在模板中选择绘制光泽平面,在漫反射颜色中调整颜色为白色,然后将材质赋予电视柜即可。

4

3dmax设计:办公室

柜子:在扩展基本体中选择切角长方体,在顶视图中创建一个,然后复制三个,用缩放和移动及旋转命令调整其位置及大小,在复制两个作为柜门,在标准基本体中选择圆环 桌位滑轮,材质的赋予,白储物柜的材质赋予床头柜即可。

台灯:用球体创建底座,把长方体改为可编辑多边形挤出。灯罩的制作同理。画圆柱及球作为灯罩里的灯芯材质赋予;选择一个材质球在漫反射中颜色调整为蓝绿色,调整不透明度为50,在扩展参数高级透明的数量设为65,过滤色为蓝绿色玻璃材质即调好,灯芯用自发光材质调整为灰白色。

5

3dmax设计:办公室

窗帘:在图形命令面板中选择线,在顶视图中绘制一条直线和窗帘的横截面,在修改器命令面板中选择横截面的顶点然后在卷展栏中选择圆角命令。调整参数使圆滑,返回到样条线级别,选择直线,然后在几何体中选择复合对象,放样点击获取图形按钮。在顶视图中选择截面样条线,即窗帘制作好,直接修改颜色为绿色即可。

灯光及摄像机:在前视图中创建一盏泛光灯,调整位置及参数,使其照亮整间客厅。然后创建一架摄像机,位置如图。

3.渲染输出

将制作好的空间组合整理之后,按F9键渲染 保存为jpg格式名为客厅效果。

6

3dmax设计:办公室

三、总结

通过这次的3Dmax课程设计,我对3D建模有了更深的了解和理解,在3D建模中,我们不仅要会建模的方法,而且还要学会在建模之间打好草稿,拟好比例,各个模型之间都是有比例的,各个模型之间的比例都是一定的,我们要按照一定的比例来创建模型,那样模型建出来才会更真实。同时,3D建模是一件需花很多时间的事情,而且有时候也是很枯燥的事情,在一些细节方面,需要我们很仔细去创建模型,这就需要我们有足够的耐心和细心。在3D建模过程中用到的最多的方法就是布尔、用线条挤出模型、放样、复制模型等等。在做室内设计的过程中,最重要的是美感,美感对于室内设计来说是最重要的,室内的模型格子要选择什么样的材质,贴上什么样的位图,以及各个模型之间的比例和在室内的相对位置等等,这些都是影响室内效果的因素。模型建好后,剩下的就是打灯光和架好摄影机。灯光的设置对于室内来说是非常重要的,什么样的室内需要用什么样的灯光,这些都是很有讲究的。而且灯光的强度的大小以及灯光照射的范围,这些都是靠灯光的参数的设置得到的。通过这次是室内设计,我对这些都有了更为全面的了解。同时,我加强了主观能动性,做到整个课程设计过程中的耐心细致。尽善尽美,精益求精,是每一位创

7

3dmax设计:办公室

造者应该具备的良好素质,我还要学习很多。

四、参考文献

【1】张云杰.3ds max8 安全互动课堂.北京:电子工业出版社,2004 【2】王国良.渐入佳境-3ds max材质精粹.北京:人民邮电出版社,2006

8

推荐第8篇:课程设计报告封面

……………… _…__…_…__…__…__…_)__线号(学… … …__…__…_… _…__…名…姓… … … 业)封专(__…__…_…__…__…_级……__…__…__…_…__…院)密_学(__…__…__…_…__……………………

本科课程设计专用封面

设计题目: 所修课程名称: 修课程时间: 年 月 日至 月 日完成设计日期: 年 月 日 评阅成绩: 评阅意见:

评阅教师签名: 年 月

推荐第9篇:ERP课程设计报告

ERP供应链管理课程设计

专 业 信息管理与信息系统

虚拟公司

金凤燕集团

陈燕(083411102);李美金(083411105);王设计成员 凤(083411109) 指导老师 闫晓妍、张延红、张娜 设计时间

2014-2015学年

(一)第19周

计算机科学与工程学院

1

一、公司说明 ...................................................................................................................4

二、经营理念 ...................................................................................................................4

三、实习内容 ...........................................................................................................................4

3.1管理维护子系统 .........................................................................................................4 3.2基本信息子系统 .........................................................................................................4

3.2.1品号编码设置 ..................................................................................................4

3.2.2客户编码设置 ..................................................................................................5 3.2.3供应商编码设置: ..........................................................................................5 3.2.4公司信息设置 ..................................................................................................5 3.2.5仓库信息设置 ..................................................................................................6 3.2.6部门信息设置 ..................................................................................................6 3.2.7职务类别设置 ..................................................................................................7 3.2.8员工姓名录入 ..................................................................................................7

3.3销售管理子系统(王凤) .........................................................................................8

3.3.1设置编码原则 ..................................................................................................8 3.3.2录入客户品号信息 ..........................................................................................8 3.3.3录入客户信息 ..................................................................................................9 3.3.5录入报价单 ....................................................................................................10 3.3.6客户订单 ........................................................................................................10 3.3.7订单变更单 ....................................................................................................11 3.3.8录入销货单 ....................................................................................................11 3.3.9录入销退单 ....................................................................................................12 3.3.10设置信用参数 ..............................................................................................12 3.4存货管理子系统(陈燕) .......................................................................................13

3.4.1设置编码原则(基本信息子系统) ............................................................13 3.4.2设置进销存参数 ............................................................................................14 3.4.3录入品号类别 ................................................................................................14 3.4.4录入品号信息 ................................................................................................14 3.4.5设置库存单据性质 ........................................................................................15 3.4.6库存交易流程 ................................................................................................15 3.4.7库存调拨 ........................................................................................................15 3.4.8借出/借出归还流程 ......................................................................................16 3.4.9借入/借入归还流程 ......................................................................................17 3.4.10报废销毁流程 ..............................................................................................18 3.4.11录入盘点料件 ..............................................................................................18 3.5采购管理子系统(李美金) ...................................................................................19

3.5.1系统简介 ........................................................................................................19 3.5.2设置编码原则 ................................................................................................19 3.5.3录入供应商信息 ............................................................................................19

2

3.5.4设置采购单据性质 ........................................................................................20 3.5.5请购流程 ........................................................................................................20 3.5.6采购流程 ........................................................................................................21 3.5.7采购变更流程 ................................................................................................21 3.5.8进货/进货验收流程 ......................................................................................22 3.5.9验退流程 ........................................................................................................22 3.5.10进货退回流程 ..............................................................................................23 四 课程设计小结 ...................................................................................................................23

3

金凤燕集团供应链管理

一、公司说明

金凤燕集团致力于金银首饰买卖,我公司有库存部门,采购部门,销售部门等多个部门,公司销售各种金银首饰,如:戒指,项链,耳环等。我公司产品质量保证,与多个供应商建立友好联系,是一家值得信赖的公司。

二、经营理念

团结友爱,不断创新,质量保证,服务客户

三、实习内容 3.1管理维护子系统

首先登录系统的用户的信息(陈燕,李美金,王凤)与用户权限设置

3.2基本信息子系统

首先设置系统的共用参数,最主要的就是编码原则(品号、客户、供应商)、工厂信息、仓库信息、部门信息、职务类别、员工姓名、交易对象分类等信息的设置。

3.2.1品号编码设置

4

3.2.2客户编码设置

3.2.3供应商编码设置:

3.2.4公司信息设置

5

3.2.5仓库信息设置

3.2.6部门信息设置

3.2.7职务类别设置

3.2.8员工姓名录入

3.3销售管理子系统(王凤)

销售管理子系统主要包含了报价、订单、销退货和客户信息管理。除详细记载从报价、接单以及销退货的交易信息外,更重要的是实时提供各种报表,供管理者了解销售状况,以便正确做出与销售相关的管理决策。

3.3.1设置编码原则

3.3.2录入客户品号信息

3.3.3录入客户信息

3.3.4设置订单单据性质

3.3.5录入报价单

3.3.6客户订单

10

3.3.7订单变更单

3.3.8录入销货单

11

3.3.9录入销退单

3.3.10设置信用参数

12

3.4存货管理子系统(陈燕)

存货管理可以帮助企业在适合的时机,提供合理的物品及数量,避免出现因停工待料而延误交货的困境,同时也可避免因库存数量过多,而导致资金积压、周转困难、增加利息等管理成本的负担。除此之外,存货管理的基本工作,还要记载及保留出入库的交易资料,从而事实提供各种相关报表,以供管理者了解库存的状况,后续做出正确的采购或存货处理等决策。

3.4.1设置编码原则(基本信息子系统)

3.4.2设置进销存参数

3.4.3录入品号类别

3.4.4录入品号信息

14

3.4.5设置库存单据性质

3.4.6库存交易流程

3.4.7库存调拨

3.4.8借出/借出归还流程

16

3.4.9借入/借入归还流程

17

3.4.10报废销毁流程

3.4.11录入盘点料件

3.5采购管理子系统(李美金)

3.5.1系统简介

采购管理涵盖采购作业流程的五个主要项目:请购、采购、进货收料、日常跟催管理以及供应商管理。出了详细记载,从请购到采购再到收料进货的交易信息外,更重要的是实时提供各种相关报表,以供管理者了解所有的采购状况,以便能够后作出合理的决策。

3.5.2设置编码原则

3.5.3录入供应商信息

3.5.4设置采购单据性质

3.5.5请购流程

20

3.5.6采购流程

3.5.7采购变更流程

21

3.5.8进货/进货验收流程

3.5.9验退流程

22

3.5.10进货退回流程

四 课程设计小结

一周的ERP课程设计结束了,在这次实践的过程中学到了一些技能以外的其他东西,领略到了其他同学在处理专业技能问题时显示出的优秀品质,更深切的体会到人与人之间的那种相互协调合作的机制,最重要的还是自己对一些问题的看法产生了良性的变化。在社会这样一个大群体里面,沟通自然是为人处世的基本,如何协调彼此的关系值得我们去深思和体会.在这次设计当中我的触及很大,小组的同学很有责任感,把这样一种事情当成是自己的重要任务,并为之付出了很大的努力,不断的思考自己所遇到的问题。其实在生活中这样的事情也是很多的,当我们面对很多问题的时候所采取的具体行动也是不同的,这当然也会影响我们的结果。很多时候问题的出现所期待我们的是一种解决问题的心态,而不是看我们过去的能力到底有多强,那是一种态度的端正和目的的明确,只有这样把自己身置于的问题之中,我们才能更好的解决问题。在这种相互协调合作的过程中,口角的斗争在所难免,关键是我们如何的处理遇到的分歧,而不是一味的计较和埋怨。这不仅在类似于这样的协调当中,生活中的很多事情都需要我们有这样的处理能力,面对分歧大家要消除误解,相互理解,增进了解,达到谅解,也许很多问题没有想象中的那么复杂,关键还是看我们的心态,那种处理和解决分歧的心态,因为毕竟我们的出发点都是很好的。课程设计也是一种学习同学优秀品质的过程,比如与我同组的同学的确有种耐得住寂寞的心态。确实他在学习上取得了很不错的成绩,但是我所赞赏的还是他追求的过程,当遇到问题的时候,那种斟酌的态度就值得我学习,同学是在用心造就自己的任务,而且孜孜不倦,追求卓越。我们过去有位老师说得好,有些事情的产生是有原因的,别人能在诸如学习上取得了不一般的成绩,那绝对不是侥幸或者巧合,那是自己付出劳动的成果的彰显,那是自己辛苦过程的体现。这种不断上进,

23

认真一致的心态也必将导致一个人在生活和学习的各个方面做的很完美,有那种追求的锲而不舍的过程是相同的,这就是一种优良的品质,它将指引着一个人意气风发,更好的走好自己的每一步。在今后的学习中一定要戒骄戒躁,虚心认真„„要永远的记住一句话态度决定一切。

通过这次课程设计,我们对易飞ERP系统的了解也有了很大的提升,为将来工作用到该系统有了很大的帮助。为以后工作奠定了基础,也可能以后用不到,但是确是一次学习的过程。

24

推荐第10篇:数据结构课程设计报告

数据结构课程设计

散列表的应用:插队买票

专业 计算机科学与技术(网络技术)

金玲 计算机131 1310704114 张静林 2015年1月23日 学生姓名 班学级 号

指导教师 完成日期

目录

1 概述……………………………………………………………………………………1 1.1 课程设计目的……………………………………………………………………….1 1.2 课程设计内容……………………………………………………………………….1 2 系统需求分析……………………………………………………………………….1 2.1 主体功能…………………………………………………………………………....2 3系统概要设计…………………………………………………………………………2 3.1 系统流程图………………………………………………………………………….2 4 系统详细设计…………………………………………………………………………3 5 测试……………………………………………………………………………………5 5.1 测试方案…………………………………………………………………………….5 5.2 测试结果…………………………………………………………………………….5 6 小结……………………………………………………………………………………5 参考文献…………………………………………………………………………………5 附录………………………………………………………………………………………7 附录1 源程序清单……………………………………………………………………...7

1 概述

1.1 课程设计目的

数据结构课程设计是为数据结构课程独立开设的实践性教学环节。数据结构课程设计对于巩固数据结构知识,加强学生的实际动手能力和提高学生综合素质是十分必要的。课程设计的目的:

1.要求学生达到熟练掌握C语言的基本知识和技能。

2.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。 3.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

4.培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。

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

1.2课程设计内容

本课程设计的任务是写一个程序模拟这种情况。每个队伍都允许插队。如果你在排队,有一个以上的朋友要求插队,则你可以安排他们的次序。每次一个人入队,并且如果这个入队的人发现队伍中有自己的朋友,则可以插入到这个朋友的后面;当队伍中的朋友不止一个的时候,这个人会排在最后一个朋友的后面;如果队伍中没有朋友,则他只能够排在这个队伍的最后面。每一个入队的人都先进行上述的判断。当队伍前面的人买到车票之后,依次出队。

2 系统需求分析

2.1 主体功能

程序从“input.txt”文件读入测试用例,一个文件可包含多个测试用例。每个用例的第一行是朋友组的数目n(1

下面是一些具体命令: .ENQUEUE——X入队; .DEQUEUE——排队头的人买票,离开队伍,即出队; .STOP——一个测试用例结束。

测试结果输出到“output.txt”文件中。每个测试用例第一行输出“Scenario#k”,k是测试用例的序号(从1开始)。对每一个出队命令,输出刚买票离开队伍的人名。两个测试试用例

3 之间隔一空行,最后一个用例结束不输出空行。

3 系统概要设计

3.1 系统流程图

4 系统详细设计

本题目主要解决两个问题:一是怎么存放和查找大量数据(主要是姓名);二是怎么操作“ENQUEUE”和“DEQUEUE”命令。

用散列表来存放和查找数据。由于最多有1000个朋友组,每组最多有1000人,使用平方探测法解决冲突,则表的大小是2*(1000*1000),所以选择TableSize=2000003(2000003是大于2000000的最小素数)。同一个组内的都是朋友,所以每个人除了记录他的名字name,还要记录他属于哪个组group,另外用info来表示该单元是否被占用,数据结构如图4.1所示。散列函数是根据Honer法则计算一个以64为阶的多项式,如图4.2所示。冲突解决方法采用平方探测法,如图4.3所示。

#define TabSize 2000003 typedef struct hashtab *PtrToHash; struct hashtab

/*散列表数据结构*/ { char name[5];

/*名字*/ int group;

/*属于哪个朋友组*/ char info;

/*标志位,该单元是否被占用*/ }; 图4.1数据结构:散列表

Int Hash(char *key,int TableSize) {

Int HashVal=0;

While(key!=NULL)

HashVal=(HashVal

Return HashVal%TableSize; } 图4.2散列函数

Long int Find(PtrToHash hash,char *c) {

key=c;

CurrentPos=Hash(key,TableSize);

CollisionNum=0;

While((单元被占用)and(单元内的名字与查找的名字不同))

{

CurrentPos+=2*(++CollisionNum)-1;

If(CurrentPos>=TabSize)

CurrentPos=TabSize;

}

Return CurrentPos; } 图4.3用平方探测法解决冲突

第二个问题是关于怎么操作“ENQUEUE”和“DEQUEUE”命令。这可以用队列来模拟。由于有插队现象的存在,不能单纯的用一个数组来表示队列,因为这样的话,插入一个朋友,则他后面的人都要往后移一个单位,删除一个人,则他后面的人都要前移一个,会降低效率。所以,采用一个Index标记来表示当前元素的后继元素,最后一个单元的后继元素是第0个,形成环,数据结构如图4.4所示。不用链表是因为链表存放指针也需要空间,并且链表插入、删除的效率没有数组高。

typedef struct Que *PtrToQue; struct Que

/*队列数据结构*/ { long int HashVal;

/*散列值*/ long int Index;

/*在中的队列序号*/ }; 图4.4数据结构:队列

输入ENQUEUE命令,如果队伍里有朋友,则排在朋友后面;如果没有朋友,则排在队尾。入队时,用一个数组记录每个朋友组的最后一位,以便下一个朋友到来时排到他后面,这个数组被称为“插队数组”。

输入DEQUEUE命令,则根据“先进先出”,按照各个元素和它后继元素的先后顺序,每次删除队列重的第一个。程序结构如图4.5所示。

While(读测试文件) {

if(输入”ENQUEUE”)

{

读入名字;

插入散列表;

插入队列;

}

else if(输入”DEQUEUE”)

{

删除队列第一个名字;

将该名字输出到文件;

}

else stop; } 图4.5入队、出队操作

5 测试

5.1 测试方案

5 按输入要求输入正常测试数据,测试程序是否能正确解决问题,得到正确答案。 应注意边界测试。例如,将n,j分别取为1的用例和n为1000的用例。n,j比较大时需写程序生成测试用例。

不按输入要求输入数据,测试程序能否对输入内容进行数据合法性检测并进行相应的异常处理。例如,将n或j取为小于1或大于1000的数,名字超过4个字母等情况下的测试用例。 5.2 测试结果

6 小结

在前面的学习过程中我们学到了很多知识而这次课程设计又是对我们所学的 一次总结,刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于程序方面的,可这远远不够,这只是小小的开始。我们必须掌握很多已学的知识才能很好的完成本次的课程设计。在这次课程设计中,总的感觉是我遇到了很多困难这主要是由于我编写代码的经验不足,有时虽然是一个很小的问题但解决起来却花费了我不少的时间,值得欣慰的是,当自己苦思冥想或者和其它同学一起探讨把问题解决的时候我还是觉得获益非浅,这就是在摸索中寻求到的知识。在设计时也免不了存在着些不足,所以在今后的学习中我会努力取得更大的进步。虽然对着电脑做程序,有些累,可当看到劳动成果时,却有另一番滋味。

参考文献

[1]范策,周世平,胡晓琨.《算法与数据结构(C语言版)》[M].北京:机械工业出版社,2004 [2]严蔚敏.《数据结构(C语言版)》.北京:清华大学出版社,2004 [3]许卓群,杨冬青,唐世渭,张铭.《数据结构与算法》.北京:高等教育出版社,2004 [4]徐孝凯.《数据结构实用教程(第二版)》.北京:清华大学出版社,2006

附录

附录1 源程序清单

#include #include #include #define TabSize 2000003

/*散列表大小TabSize 是大于表最大空间的素数*/ #define Max 1000001

/*队列空间最大值*/ struct hashtab; typedef struct hashtab *PtrToHash; struct hashtab

/*散列表数据结构*/ { char name[5];

/*名字*/ int group;

/*属于哪个朋友组*/ char info;

/*标志位,该单元是否被占用*/ }; struct Que; typedef struct Que *PtrToQue; struct Que

/*队列数据结构*/ { long int HashVal;

/*散列值*/ long int Index;

/*在中的队列序号*/ };

int hashedx=0;

/*标记元素是否已经在散列表里*/ long int Find(PtrToHash hash,char *c) /*查找在散列表中的位置*/ { char *key; long int CurrentPos,CollisionNum;

key=c; for(CurrentPos=0;*key;++key)

/*散列函数,计算散列值*/

CurrentPos=(CurrentPos

/*散列值*/ CollisionNum=0; /*如果当前单元被占用:单元内的元素与当前操作的名字不同,使用平方探测法解决冲突;与当前操作的名字相同,则直接返回在散列中的位置*/ while((hash[CurrentPos].info)&&(strcmp(hash[CurrentPos].name,c)))

{

/*平方探测法*/

CurrentPos+=2*(++CollisionNum)-1;

if(CurrentPos>=TabSize)

CurrentPos-=TabSize; }

if((hash[CurrentPos].info)&&(strcmp(hash[CurrentPos].name,c)==0))

/*元素已经在散列表里*/

hashedx=1; else /*元素不在散列表里*/

hashedx=0; return CurrentPos;/*返回在散列表中的位置*/ }

int main() { long int Find(PtrToHash hash,char *c);

/*查找在散列表中的位置*/

PtrToHash hash;

/*散列表*/

7 PtrToQue queue;

/*队列*/ int *grouppos;

/*记录每个朋友组的最后一位,即插队数组*/ int n;

/*测试用例数目*/ int num;

/*当前测试用例序号*/ long int i,ii,j,key,temp; long int head,last;

/*队列的头和尾*/ char c[8],tempc[8];

/*名字*/ FILE *fpin,*fpout;

/*输入、输出文件指针*/

if(!(fpin=fopen(\"input.txt\",\"r\")))

/*打开测试文件*/ {

printf(\"fopen error!\");

/*文件打开错误*/

return -1; } if(!(fpout=fopen(\"output.txt\",\"w\")))

/*打开输出文件*/ {

printf(\"fopen error!\");

return -1; }

hash=(PtrToHash)malloc(sizeof(struct hashtab)*TabSize); /*为散列表申请空间*/ queue=(PtrToQue)malloc(sizeof(struct Que)*Max); /*为队列申请空间*/ grouppos=(int *)malloc(sizeof(int)*1000); /*申请空间记录每个朋友组的最后一位*/ for(i=0,j=1;i

queue[i].Index=j; queue[i-1].Index=0; /*最后一个单元的后继单元是第0个,形成环*/ num=0; for(fscanf(fpin,\"%d\",&n);n;fscanf(fpin,\"%d\",&n))/*输入当前测试用例的朋友组数*/ {

if(n1000)

/*处理异常输入n*/

{

fprintf(fpout,\"n is out of range\\n\");

return -1;

}

num++;

if(num!=1)

/*两个测试用例间输入一空行*/

fprintf(fpout,\"\\n\");

for(i=0;i

hash[i++].info=0;

/*初始化散列表,标记位置0*/

for(i=0;i

/*对每一组朋友*/

{

fscanf(fpin,\"%d\",&j);

/*当前组里的人数*/

if(j1000)

/*处理异常输入j*/

{

fprintf(fpout,\"j is out of range\\n\");

return -1;

}

for(;j;--j)

{

fscanf(fpin,\"%s\",c);

/*输入名字*/

for(ii=0;ii

tempc[ii]=\'\\0\';

strcpy(tempc,c);

ii=0;

while(tempc[ii]!=\'\\0\')

/* 是否由四个以内字母组成*/

{

if(tempc[ii]\'z\'||ii>4)

{

fprintf(fpout,\"Group %d: Nonstandard name\\n \",i);

return -1;

}

ii++;

}

key=Find(hash,c);

/*找到在散列表中的位置*/

if(hashedx==1) /*重名*/

{

fprintf(fpout,\"repeated name %s\\n\",c);

return -1;

}

strcpy(hash[key].name,c);/*插入散列表*/

hash[key].info=1;

/*标记置1,该单元被占用*/

hash[key].group=i;

/*记录他属于哪个组*/

} } for(i=0;i

grouppos[i++]=0; /*初始化插队数组*/ head=0;

/*初始化队列头、尾标记*/ last=0; fprintf(fpout,\"Scenario #%d\\n\",num); /*输出当前用例序号到文件*/ for(fscanf(fpin,\"%s\",c);;fscanf(fpin,\"%s\",c)) /*输入命令*/ {

if(*c==\'E\')

/*入队命令*/

{

fscanf(fpin,\"%s\",c);

/*输入名字*/

key=Find(hash,c);

/*查找在散列表中的位置*/

if(hashedx==0) /*散列表里没这个人*/ {

fprintf(fpout,\"no %s\\n\",c);

return -1; }

temp=queue[0].Index;

/*队列第0个位置记录队尾的后继单元*/ queue[0].Index=queue[temp].Index;

/*在队列中申请一个新单元,队尾标记后移一个位置 */ queue[temp].HashVal=key; /*入队*/ if(!head) /*如果是队列里的第一个元素 */ last=head=temp; /*队头、队尾标记指向第一个元素*/ if(!grouppos[hash[key].group]) /*如果队列里没朋友*/ { queue[temp].Index=0; /*队尾指向对头,形成环*/ queue[last].Index=temp;/*前一次队尾的后继元素是当前元素*/ last=temp;

/*队尾标记指向当前元素*/ grouppos[hash[key].group]=temp; /*插队数组记录该朋友组里已入队的最后一位*/ } else/*如果队列中已经有他的朋友*/ {

queue[temp].Index=queue[grouppos[hash[key].group]].Index;

/*插队到朋友的后面*/

queue[grouppos[hash[key].group]].Index=temp;

/*插队到朋友后面一位的前面*/

grouppos[hash[key].group]=temp;

/*替换插队数组里该组的元素为当前元素*/

if(hash[queue[last].HashVal].group==hash[key].group)

/*如果当前元素和前一元素是朋友,队尾标志指向当前元素*/

last=temp;

}

}

else if(*c==\'D\') /*出队命令*/

{

if(last==0)

/*不能对空队列执行出队命令*/

{

fprintf(fpout,\"Empty queue!\\nCan\'t execute DEQUEUE!\\n\");

return -1;

}

fprintf(fpout,\"%s\\n\",hash[queue[head].HashVal].name);

/*输出队头元素到文件*/

temp=head;

head=queue[temp].Index;

/*队列第一位出队,队头标记后移一位*/

queue[temp].Index=queue[0].Index;

/*队列第0个元素后移一位*/

queue[0].Index=temp;

/*释放空间*/

if(grouppos[hash[queue[temp].HashVal].group]==temp)

/*当前删除的元素是该朋友组在队列里的最后一位*/

grouppos[hash[queue[temp].HashVal].group]=0;

if(last==temp)

/*出队后,队列为空*/

last=0;

}

else

/*输入 \"STOP\"*/

break;

/*测试结束*/

} } fprintf(fpout,\"\\b\"); fclose(fpin); fclose(fpout); return 1; }

第11篇:数据结构课程设计报告

正文要求:对每一个题目,正文必须包括以下几个方面 知识点回顾: 实验要求:

实验过程:包括设计思路,算法描述,程序清单,调试等等; 实验小结:

注意:(1)正文中字体用小四号宋体,行间距1.25倍行距;

(2)页码居中;

(3)A4纸双面打印,在纸的左侧装订。

(4)上交的课程设计报告控制在10页以内。

2

齐鲁工业大学

理学院

信计11-1

郑桥

一、提示:对于单窗口的服务系统知识点回顾如下:

1、什么是负指数分布?

又称指数分布。泊松事件流的等待时间(相继两次出现之间的间隔)服从指数分布。用于描述非老化性元件的寿命(元件不老化,仅由于突然故障而毁坏)。常假定排队系统中服务器的服务时间和Petri网中变迁的实施速率符合指数分布。

2、用C语言如何产生随机序列? double rd_MN1(double m,double n) { double r; if (m>n) {r=n;n=m;m=r;}; r = ((double)rand()/ ((double)(RAND_MAX)+(double)(1)) ); r = m+ r*(n-m); return r; }

3、用C语言如何产生负指数分布的时间序列? double expntl(double x) { double z; do { z = ((double) rand() / RAND_MAX); } while ((z == 0) || (z == 1)); return(-x * log(z)); //z相当于1-x,而x相当于1/lamda。 } 其中的x相当于1/λ

4、排队论简单叙述;

排队系统主要有:X/Y/Z,其中X表示到达时间间隔的分布,Y表示服务时间的分布,Z表示并列的服务设备的数目。表示相继到达的时间间隔或服务时间的分布的符号是:

M——负指数分布,D——确定性,Ek——k阶Erlang,GI——相互独立的一般随机分布,G——一般的随机分布。

例如:M/M/1表示达到时间间隔为负指数分布,服务时间为负指数分布,单服务设备的排队系统。

这里我们用静态仿真的思想来实现M/M/1仿真。

3 在排队系统中的每一个动态实体的状态可以有三个量来反映:与前一个实体到达的时间间隔,在排到自己服务前的等待时间以及服务时间。其中服务时间和到达时间间隔服从指数分布,不受别的因素的影响。开始服务前的等待时间则受到排在前面的动态实体的状态的影响。其更新算法如下:

即:如果某个实体到达以后,发现处在它前面的动态实体已经结束服务,所以这个实体就不用等待,直接接受服务;反之,处在它前面的动态实体如果没有结束服务(包括没有开始服务),则这个实体的等待时间就是它前一实体结束服务的时刻减去它到达的时刻。

5、如何得到每个顾客的到达时刻,服务时间,等待时间和离开时刻;到达时间=前面各个到达时间之和; 服务时间就是负指数随机生成的时间;

等待时刻:如果前一个人的离开时间小于这个人的到达时间,等待时间=0;

如果不是,则等待时间=该人的离开时间-他的到达时间-服务时间

6、如何排队,排队的主要算法思想? 排队就是来到的人数多于离开的人数;

如果下一个人到达时前一个人依旧在接受服务,则此人就要排队。

7、如何求队长?以及最大的队长?

假设以5分钟为一个时间段,则在第5分钟时用这5分钟内来到的人数减去这5分钟内离开的人数即是排队人数

8、如何求平均等待时间?

求平均等待时间首先要求出总的等待时间与接受服务的人数;

总的等待时间=每个人的等待时间之和;接受服务的人数由时间540分钟来控制,如果在540分钟之后才到达的人则不再算入接受服务的人数之内。

9、用C语言如何将得到的数据输出到文件?

在C语言中用fopen函数打开文件,然后把数据输出比如用fprintf函数,最后fclose。

利用ofstream fcout(“d:\\arr_time.txt”);语句来实现C++中的输出文件

10、如何用已学的数学语言程序(如:Mathematica, Matlab)把C语言得到的数据文件画出其相应的图像?

11、如果是两个窗口的服务系统,则该怎么修改程序?

12、如果到达时间间隔,服务时间服从泊松分布或者其他分布,该程序该如何改进?

二、数据结构课程设计题目

单窗口的排队模型的数值仿真(参考课本上第四章的离散事件模拟) 要求如下:

4 (1)要求相邻两个顾客的到达时间间隔服从负指数分布;且每个顾客接受服务的时间也服从负指数分布;

(2)求出各个时刻的队长(以五分钟为一时间单位,即求零时刻的队长,五分钟时的队长,十分钟时的队长,依次类推);

(3)一个工作日内的顾客总数,约定8:30上班,17:30下班,中午不休息; (4)求平均等待时间(顾客总等待时间除以总人数);

(5)画出顾客的到达,离开图像(横坐标是顾客图,纵坐标是到达时刻,和离开时刻);

(6)画出队长变换图像(横坐标是时刻图,纵坐标是队长个数); (7)求出一个工作日内的最大队长;

三、设计思路:

1)把8::30记做第0分钟,17:30记做第540分钟。

2)首先利用C++随机生成200个服从负指数分布的到达时间与200个服务时间 然后根据随机生成的数计算到达的时刻,即到达时间的逐步加和,然后计算离开的时刻;

3)根据到达时刻与离开时刻来计算等待时刻,于是便可得到平均等待时间; 同时根据这两个时刻求出每5分钟到达人数与离开的人数,于是便得出每5分钟的队长,同时也可求出最大队长。 4)再利用MATLAB画出相应的图像。

四、算法描述:

1)首先将8:30这个时刻化为0时刻,17:30化为第540分钟这个时刻,全体单位为分钟。

2)定义到达时间间隔arr_time[200],服务时间ser_time[200],到达时刻arr_time1[200],离开时间lea_time[200],等待时间sta_time[200],离开人数lea_num[200],到达人数arr_num[200]等变量。 3)根据负指数函数

来利用C++程序生成随机到达时间间隔与服务时间。

4)利用到达时刻与离开时刻之间的关系来求出等待时间。同时将这540分钟划分为5分钟间隔的108个时间段来求出在每个时间段到达人数与离开人数,再求出队长。

5)利用已知的服务人数,平均到达时间与平均离开时间来做出图像。(借助MATLAB软件。)

五、总结

(1)求出各个时刻的队长(以五分钟为一时间单位,即求零时刻的队长,五分钟时的队长,十分钟时的队长,依次类推);见程序清单中数据部分对长。 (2)求平均等待时间(顾客总等待时间除以总人数);根据程序可得,平均等待时间为21.6分钟。

(3)画出顾客的到达,离开图像(横坐标是顾客图,纵坐标是到达时刻,和离开时刻);

180160140120100806040200 0Arrive curveleave curve100200300400500600

(6)画出队长变换图像(横坐标是时刻图,纵坐标是队长个数);

25Queue Length Curve 20151050 0100200300400500600

(7)求出一个工作日内的最大队长: 最大对长为16个人在排队。

六、程序清单:

求随机产生负指数 #include #include #include #include #include

#include using namespace std;

void main() { long int i,k; double m,n;//m,n控制时间间隔

double r; double a,s,sum;//arr为到达时间,ser为服务时间

double LAM=1.2;

//f(x)=LAM*exp(-LAM*x); double arr_time[200]; double ser_time[200]; ofstream fcout(\"d:\\arr_time.txt\"); ofstream fscout(\"d:\\ser_time.txt\"); m=2.0; n=5.0; srand((unsigned)time(NULL));

k=0; loop: r=((double)rand()/((double)(RAND_MAX)+(double)(1)) );

a =-log(r)/LAM; if (a >= m && a

arr_time[k]=a;

k++; }; if (k

// 产生200个指数分布随机数

for(i=0;i

fcout

//cout

if(i!=0 && i%5==0)

//cout

fcout

7 k=0; loop1: r=((double)rand()/((double)(RAND_MAX)+(double)(1)) );

s =-log(r)/LAM; if (s >= m && s

// 产生200个指数分布随机数 m=3.0; n=5.5;

srand((unsigned)time(NULL)); k=100; loop2: r=((double)rand()/((double)(RAND_MAX)+(double)(1)) );

s =-log(r)/LAM; if (s >= m && s

// 产生200个指数分布随机数

for(i=0;i

fscout

//cout

if(i!=0 && i%5==0)

//cout

fscout #include #include #include #include

#include using namespace std; void main() { //下面求离开时间、等待时间

8 int i; double lea_time[200];//离开时间

double sta_time[200];//等待时间

double arr_time[200];//随机生成到达时间

double ser_time[200];//随机生成服务时间

double arr_time1[200];//到达时间

ifstream fcin(\"d:\\arr_time.txt\"); ifstream fscin(\"d:\\ser_time.txt\"); ofstream fcout(\"d:\\arr_time1.txt\"); ofstream flcout(\"d:\\lea_time.txt\"); ofstream fscout(\"d:\\sta_time.txt\");

//求到达的时间

for(i=0;i

fcin>>arr_time[i];

arr_time1[i]=arr_time[i]; } double sum=0.0; for(i=0;i

sum+=arr_time1[i];

arr_time1[i]=sum; } for(i=0;i

fcout

if(i!=0 && i%5==0)

fcout

//求离开时间

fscin>>ser_time[0]; lea_time[0]=arr_time1[0]+ser_time[0]; for(i=1;i

fscin>>ser_time[i];

if(lea_time[i-1]>arr_time1[i])

{lea_time[i]=lea_time[i-1]+ser_time[i];}

else

{lea_time[i]=arr_time1[i]+ser_time[i];} }

for(i=0;i

flcout

if(i!=0 && i%5==0)

flcout

sta_time[i]=lea_time[i]-arr_time1[i]-ser_time[i];//

if(sta_time[i]

{

sta_time[i]=0;

} } for(i=0;i

fscout

if(i!=0 && i%5==0)

fscout

sta_sum+=sta_time[i]; }

//求平均等待时间

double ave; int peo_sum; for(i=0;i

if(lea_time[i]

peo_sum=i; } cout

求离开人数和到达人数 #include #include #include #include #include

#include using namespace std; void main() { //求离开人数和到达人数

int i,j;

int arr_num[200];//到达人数arr int lea_num[200];//lea离开人数

int arr_jian=0;//时间间隔

double arr_time1[200]; double lea_time[200]; int peo_sum; int count=0; int count1=0; ifstream fcin(\"d:\\arr_time1.txt\"); ifstream flcin(\"d:\\lea_time.txt\"); ofstream fcout(\"d:\\arr_num.txt\"); ofstream flcout(\"d:\\lea_num.txt\"); for(i=0;i

fcin>>arr_time1[i];

flcin>>lea_time[i]; } for(i=0;i

if(lea_time[i]

peo_sum=i; } while(arr_jian

for(i=0;i

{

if(arr_time1[i]>arr_jian)

{

arr_num[count]=i;

count++;

//cout

break;

}

}

for(j=0;j

{

if(lea_time[j]>arr_jian)

{

lea_num[count1]=j;

count1++;

break;

}

}

arr_jian=arr_jian+5; } for(i=0;i

fcout

//cout

if(i!=0 && i%5==0)

//cout

fcout

for(i=0;i

flcout

//cout

if(i!=0 && i%5==0)

//cout

flcout

求对长

#include #include using namespace std; int main() {

int i; int max; int que[200]; int arr_num[200]; int lea_num[200]; ifstream fcin(\"d:\\arr_num.txt\"); ifstream flcin(\"d:\\lea_num.txt\"); ofstream fcout(\"d:\\que.txt\");

for(i=0;i

fcin>>arr_num[i];

//cout

flcin>>lea_num[i];

//cout

for(i=0;i

que[i]=arr_num[i]-lea_num[i];

//cout

} for(i=0;i

fcout

if(i!=0 && i%5==0)

{

fcout

} } max=que[0]; for(i=1;i

{

if(que[i]>max)

{

max=que[i];

//cout

} }

cout

画图: function[maxque,mwait_t,mstay_t,queue_l,use_rate]=MM1queue(mean_arr,mean_lea,peo_num) status=zeros(3,peo_num);

%用一个3行矩阵表示每个顾客的状态;

%到达时间间隔,服务时间,等待时间; status(1,:)=exprnd(mean_arr,1,peo_num);

%按照指数分布随机生成各顾客的到达间隔; status(2,:)=exprnd(mean_lea,1,peo_num);

%按照指数分布随机生成各顾客的服务时间; for i=2:peo_num

if status(1,i)

status(3,i)=status(2,i-1)+status(3,i-1)-status(1,i);

else

status(3,i)=0;

end;

%对状态进行更新; end; arr_time=cumsum(status(1,:)); status(1,:)=arr_time; lea_time=sum(status); stairs([0 arr_time],0:peo_num);

%绘出各顾客的到达时间图;

hold on; stairs([0 lea_time],0:peo_num,\'r\');

%绘出各顾客的离去时间图; legend(\'Arrive curve\',\'leave curve\',0) hold off figure; plot(1:peo_num,status(3,:),\'r:\',1:peo_num,status(2,:)+status(3,:),\'k-\');

%绘出每个顾客的等待时间和停留时间; legend(\'Wait Time\',\'Stay Time\',0); n1=1; n2=1; mstay_t=(sum(status(2,:))+sum(status(3,:)))/peo_num; mwait_t=mean(status(3,:));

%求平均停留时间和等待时间; queue_num=zeros(1,2*peo_num+1); queue_time=zeros(1,2*peo_num+1);

14 n3=1;

%while循环求每个时间队列的长度; while n1

n3=n3+1;

if arr_time(n1)

queue_num(1,n3)=n1-n2+1;

queue_time(1,n3)=arr_time(n1);

n1=n1+1;

else

queue_num(1,n3)=n1-n2-1;

queue_time(1,n3)=lea_time(n2);

n2=n2+1;

end; end; while n2

n3=n3+1;

queue_num(1,n3)=peo_num-n2;

queue_time(1,n3)=lea_time(n2);

n2=n2+1; end; figure; stairs(queue_time,queue_num,\'k\');

%绘出队列长度的时间变化曲线, stairs 是Matlab的函数

legend(\'Queue Length Curve\',0); hold off; temp=diff(queue_time); overtime=max(queue_time); queue_l=sum(temp.*queue_num(2:(2*peo_num+1)))/overtime; use_rate=sum(temp(find(queue_num)))/overtime; maxque=max(queue_num); % 最大队长

在MATLAB中命令窗口中输入MM1queue(2.86,3.22,175) 数据结果:

随机到达时间arr_time 2.2218 2.91038 2.70151 3.20392 2.20729 2.23954 2.27037 2.12161 2.97105 2.59537 2.05195 2.33276 2.40885 2.54536 3.18395 4.34619 2.9621 4.03687 2.56005 4.3556 2.59767 2.6854 2.2156 2.35007 2.01546 3.16558 2.51725 2.4227 3.00499 2.68796 2.57445 2.29238 2.04275 3.56593 4.12181 3.14539 4.60806 2.85305 2.18215 4.15836 2.75386 2.45691 3.15095 3.84449 3.29556 2.35349 2.88082 2.96656 2.60517 3.09175 3.77562 2.12649 2.17347 2.28761 2.91709 2.59767 2.20084 3.64077 2.09167 2.30401 2.89137 2.78563 2.35564 2.60401 3.47721 2.31212 2.2892 2.26189 2.71001 3.23541 3.15543 4.04989 2.33905 2.60575 2.93069 2.63466 2.33025 2.67211 2.13304 2.46765 2.01119 2.66026 2.17867 4.26591 2.56115 2.84451 3.37485 2.22326 2.3109 3.08451 2.75872

15 3.02393 2.32155 2.37607 2.43489 3.70764 3.07631 2.56943 2.81941 2.81567 2.18215 3.78511 2.72393 2.02062 2.28013 2.03219 2.9324 4.02088 2.83606 2.01804 2.82241 2.23062 2.38448 2.15369 4.07996 2.02407 2.77847 2.93584 4.92381 4.07996 2.52143 2.10523 3.29291 2.34922 2.60807 2.83989 3.77091 2.4652 2.12096 2.36601 4.23257 2.29039 2.03278 3.42756 3.04233 2.80972 4.46149 2.04867 3.6673 2.04363 3.56409 4.8267 4.40435 3.60347 2.01375 4.41955 2.28406 2.49971 2.85853 2.11547 2.29079 2.2037 3.0078 2.43726 2.43963 3.82172 2.26189 3.14207 3.02297 2.39612 2.26381 3.59773 2.454 4.98197 3.60539 3.04233 3.21228 2.48553 2.16591 2.17244 2.25882 2.11773 3.77326 2.1113 3.15319 2.4011 2.66648 3.58261 3.36182 2.74012 2.16046 2.53464 2.21742 2.48754 2.86484 2.45837 2.4213 2.81047 4.02405 2.08667 2.24179 2.17971 3.1465 2.96925 2.07709 2.6139 3.48217 4.50565 3.25667 2.71528

随机服务时间ser_time 1.36266 1.25234 1.19953 1.81288 1.7025 1.49777 1.18475 1.2005 2.2218 2.91038 1.69353 1.06181 1.95277 1.86629 1.35603 1.36501 1.98628 1.05845 1.48635 2.70151 1.56285 1.7392 1.00964 1.69024 1.23548 1.68311 3.20392 2.20729 2.23954 1.0431 1.986 1.09644 2.27037 1.53367 2.12161 2.97105 1.68177 2.59537 2.05195 1.54594 1.24156 1.42946 2.33276 1.06994 2.40885 1.9069 2.54536 3.18395 4.34619 2.9621 1.09313 4.03687 2.56005 1.01332 1.97996 1.76143 1.26501 1.34689 1.66416 4.3556 1.6471 1.46631 2.59767 2.6854 1.92952 1.51985 1.85138 1.04044 2.2156 1.30726 1.1663 1.16661 5.21173 2.35007 1.3357 1.00973 2.01546 3.16558 2.51725 1.27905 2.4227 1.04284 1.69508 1.63761 1.13783 1.05052 1.94433 1.53127 3.00499 2.68796 2.57445 2.29238 1.40015 1.2112 1.64527 2.04275 1.29598 1.29286 3.56593 1.07538 3.20392 3.18395 4.34619 4.03687 4.3556 5.21173 3.16558 3.00499 3.56593 4.12181 3.14539 4.60806 4.15836 3.15095 3.84449 3.29556 5.29513 3.09175 3.77562 3.64077 3.47721 3.23541 3.15543 4.04989 4.26591 3.37485 3.08451 3.02393 3.70764 3.07631 3.78511 4.02088 4.07996 4.92381 4.07996 3.29291 3.77091 4.23257 3.42756 3.04233 4.46149 3.6673 3.56409 4.8267 4.40435 3.60347 4.41955 3.0078 3.82172 3.14207 3.02297 3.59773 4.98197 3.60539 3.04233 3.21228 3.77326 3.15319 3.58261 3.36182 5.0445 4.02405 3.1465 3.48217 4.50565 3.25667 4.85208 4.16211 4.13261 3.21952 3.46087 3.74548 4.5463 3.72969 3.29423 3.0804 3.08657 3.47556 4.09022 3.17586 5.29513 3.75694 3.74548 3.30222 3.01725 3.18627 3.40305 4.12539 3.49556 3.02777 3.87053 3.39703 3.51433 3.67983 3.27072 4.11115 4.22444 4.08337 3.37339 5.03375

到达时刻:arr_time1 2.2218 5.13218 7.83369 11.0376 13.2449 15.4844 17.7548 19.8764 22.8475 25.4428 27.4948 29.8276 32.2364 34.7818 37.9657 42.3119 45.274 49.3109 51.8709 56.2265 58.8242 61.5096 63.7252 66.0753 68.0907 71.2563 73.7736 76.1963 79.2012 81.8892 84.4637 86.756 88.7988 92.3647 96.4865 99.6319 104.24 107.093 109.275 113.434 116.187 118.644 121.795 125.64 128.935 131.289 134.17 137.136 139.741 142.833 146.609 148.735 150.909 153.196

16 156.113 158.711 160.912 164.553 166.644 168.948 171.84 174.625 176.981 179.585 183.062 185.374 187.664 189.925 192.635 195.871 199.026 203.076 205.415 208.021 210.952 213.586 215.917 218.589 220.722 223.189 225.201 227.861 230.039 234.305 236.867 239.711 243.086 245.309 247.62 250.705 253.463 256.487 258.809 261.185 263.62 267.327 270.404 272.973 275.793 278.608 280.79 284.575 287.299 289.32 291.6 293.632 296.565 300.586 303.422 305.44 308.262 310.493 312.877 315.031 319.111 321.135 323.913 326.849 331.773 335.853 338.374 340.48 343.773 346.122 348.73 351.57 355.341 357.806 359.927 362.293 366.525 368.816 370.849 374.276 377.318 380.128 384.59 386.638 390.306 392.349 395.913 400.74 405.144 408.748 410.762 415.181 417.465 419.965 422.823 424.939 427.23 429.433 432.441 434.878 437.318 441.14 443.402 446.544 449.567 451.963 454.227 457.824 460.278 465.26 468.866 471.908 475.12 477.606 479.772 481.944 484.203 486.321 490.094 492.205 495.359 497.76 500.426 504.009 507.371 510.111 512.271 514.806 517.023 519.511 522.376 524.834 527.255 530.066 534.09 536.176 538.418 540.598 543.744 546.714 548.791 551.405 554.887 559.393 562.649 565.364

离开时刻:lea_time 3.58446 6.38452 9.03322 12.8505 14.9474 16.9822 18.9396 21.0769 25.0693 28.3532 30.0467 31.1086 34.1892 36.6481 39.3217 43.6769 47.2603 50.3693 53.3573 58.928 60.4909 63.2488 64.7348 67.7655 69.3262 72.9394 76.9775 79.1848 81.4408 82.9323 86.4497 87.8525 91.0692 93.8984 98.6081 102.603 105.922 109.688 111.74 114.979 117.429 120.074 124.128 126.71 131.344 133.251 136.715 140.32 144.666 147.628 148.722 152.772 155.332 156.345 158.325 160.472 162.177 165.9 168.308 173.304 174.951 176.417 179.579 182.27 184.992 186.894 189.515 190.966 194.851 197.178 200.193 204.243 210.627 212.977 214.313 215.322 217.932 221.754 224.271 225.551 227.973 229.016 231.735 235.943 238.004 240.762 245.03 246.84 250.625 253.393 256.038 258.78 260.209 262.396 265.265 269.37 271.7 274.266 279.358 280.434 283.994 287.759 292.106 296.142 300.498 305.71 308.875 311.88 315.446 319.568 322.713 327.322 331.48 334.631 338.475 341.771 347.066 350.158 353.933 357.574 361.051 364.287 367.442 371.492 375.758 379.133 382.217 385.241 388.949 392.025 395.81 399.831 403.911 408.835 412.915 416.208 419.979 424.211 427.639 430.681 435.143 438.81 442.374 447.201 451.605 455.209 459.628 462.636 466.458 469.6 472.623 476.22 481.202 484.808 487.85 491.062 494.836 497.989 501.572 504.933 509.978 514.002 517.148 520.631 525.136 528.393 533.245 537.407 541.54 544.759 548.22 551.966 556.512 560.242 563.536 566.616 569.703 573.178 577.269 580.444 585.74 589.496 593.242 596.544 599.561 602.748 606.151 610.276 613.772 616.799 620.67 624.067 627.581 631.261 634.532 638.643 642.867 646.951 650.324 655.358

到达人数:peo_num 0 1 3 5 8 9 12 14 15 16 18 19 21 23 25 27 29 31 33 34 36

37 39 40 42 43 45 47 49 50 52 54 56 58 60 62 64 65 68 69 71

72 74 76 78 80 82 84 86 87 89 91 93 95 96 98 100 102 104 106 107 109 111 113 115 117 118 119 121 123 125 126 129 130 132 134

17 135 137 138 140 141 142 144 145 148 150 152 154 155 157 159

161 162 163 165 166 167 169 170 171

173174 175 177 离开人数:lea_num 0 1 3 5 7 8 10 13 15 16 17 19 20 23 25 26 28 30 32 34 35

36 38 40 41 43 44 46 47 49 51 52 55 57 59 61 63 65 67 69 70

72 72 75 77 79 82 83 85 86 88 90 92 94 96 98 99 101 102 103 104 105 107 108 110 111 112 114 115 116 117 119 120 122 123 124

126 127 129 130 132 133 134 135 137 138 139 140 142 143 144

145 147 148 150 151 152 154 155 157 158 160 161 162

队长que 0 0 0 0 1 1 2 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0

1 1 2 1 1 2 1 1 1 1 1 0 1 0 1 0 2 1 1 1 0 1 1 1 1

1 1 1 0 0 1 1 2 3 3 4 4 5 5 6 6 5 6 7 8 7 9 8 9 10

0 10 9 10 9 9 10 10 11 12 13 14 13 14 15 16 15 15 15 15

0 0 0 0 0 0 0 0

70 605040302010Wait TimeStay Time204060801001201401601800 0

第12篇:单片机课程设计报告

单片机课程设计报告

题目:小直流电机调速实验

教学单位: 机 电 工 程 系

专业: 机械设计制造及其自动化

班级: 0803班学号: 0811050342姓名: 程怀虎

2011 年 11月

(以下内容用宋体,五号,单倍行距)

第13篇:VB课程设计报告

学院名称 学生姓名 专业名称 班

VB课程设计报告

——文本编辑器

计算机学院

计算机科学与技术

::::

一、课程设计题目

用Visual Basic程序设计语言编写一个简易的文本编辑器 要求:有最基本的文本编辑功能,包括复制、剪切、粘贴、字体设置、背景颜色设置、字体颜色设置;同时拥有文本管理功能,包括打开文件、保存文件;以及完整的系统运行退出等功能,所有的操作可选择设定的快捷键。

二、课程设计目的

(1)目标:实现类似与WINDOWS平台下的记事本程序。 (2)涉及功能:新建、打开、保存、另存为、退出、编辑、撤销、复制、粘贴、剪切、删除、查找、全选、打印、格式、字体、颜色、查看、状态栏、帮助、关于等

三、课程设计说明

1创建应用程序界面 2设置属性 3编写代码 4保存应用程序 5调试,运行应用程序 6生成可执行文件

四、源代码

Dim filecount As Integer Dim inputdata As String Dim TargetPosition As Integer Dim pos As Integer Dim targey As String Dim neirong As String

Private Sub A_Click() On Error Resume Next cmndlg1.Filter = \"文本文件|*.txt\" cmndlg1.CancelError = True cmndlg1.Action = 2 Open cmndlg1.FileName For Output As #1 Print #1, Text1.Text Close #1 End Sub

Private Sub C_Click() End Sub

Private Sub D_Click() End Sub

Private Sub Form_Load()

Text1.Text = \"\"

Text1.Left = 0

Text1.Top = 550

Text1.Width = Form1.ScaleWidth

Text1.Height = Form1.ScaleHeight

mnucut.Enabled = False

mnucopy.Enabled = False

mnudelete.Enabled = False

mnuselectall.Enabled = False

mnupaste.Enabled = True

mnuleft.Checked = True End Sub

Private Sub Form_Resize()

\'如果窗体不处于最小化text1状态,改变text1大小以适应窗体大小变化

If Form1.WindowState 1 Then

Text1.Width = Form1.Width1350

End If End Sub

Private Sub Form_Unload(Cancel As Integer) Dim msg As Integer If Text1.Text neirong Then

msg = MsgBox(\" 内容已被修改,是否保存文件\", 48 + vbYesNoCancel, \"提示\")

If msg = vbYes Then

On Error GoTo Err

cmndlg1.DialogTitle = \"保存文件\"

cmndlg1.Filter = \"文本文件|*.txt\"

cmndlg1.CancelError = True

cmndlg1.ShowSave

Open cmndlg1.FileName For Output As #1

Print #1, Text1.Text

Close #1 Err:

If Err.Number = cdlCancel Then

Cancel = True

End If

ElseIf msg = vbNo Then

End

ElseIf msg = vbCancel Then

Cancel = True

End If

Else

End

End If End Sub

Private Sub mnucopy_Click() \'复制

利用SetText 方法,将选中的文本放入剪贴板上

Clipboard.SetText Text1.SelText End Sub

Private Sub mnucut_Click() \'剪切

Clipboard.SetText Text1.SelText

Text1.SelText = \"\" End Sub

Private Sub mnudelete_Click()

\'删除 Text1.SelText = \"\" End Sub

Private Sub mnuedit_Click() \'编辑 菜单项代码

\' 如果文本框中没有选中的内容,则剪切\\复制\\删除和粘贴菜单无效,否则有效

If Text1.SelLength 0 Then

mnucut.Enabled = True

mnucopy.Enabled = True

mnudelete.Enabled = True

mnupaste.Enabled = True

Else

mnucut.Enabled = False

mnucopy.Enabled = False

mnudelete.Enabled = False

End If

End Sub

Private Sub mnuexit_Click() \'退出

End End Sub

Private Sub mnufind_Click() \'查找 FindText 1 mnuNext.Enabled = True End Sub

Private Sub mnufont_Click()

\'字体 On Error GoTo A:

cmndlg1.Flags = cdlCFBoth Or cdlCFEffects

cmndlg1.ShowFont

If cmndlg1.FontName >\"\" Then

Text1.FontName = cmndlg1.FontName

End If

Text1.FontSize = cmndlg1.FontSize

Text1.FontBold = cmndlg1.FontBold

Text1.FontItalic = cmndlg1.FontItalic

Text1.FontStrikethru = cmndlg1.FontStrikethru

Text1.FontUnderline = cmndlg1.FontUnderline

Text1.FontBold = cmndlg1.FontBold

Text1.ForeColor = cmndlg1.Color A:

If Err.Number

Private Sub mnufontcolor_Click()

\'字体颜色 cmndlg1.ShowColor Text1.ForeColor = cmndlg1.Color End Sub

Private Sub mnuleft_Click()

\'左对齐

Text1.Alignment = 0

mnuleft.Checked = True

mnuright(1).Checked = False

mnuright(2).Checked = False End Sub Private Sub mnunew_Click()

\'新建

Text1.Text = \"\" End Sub Private Sub FindTex(ByVal start_at As Integer)

targey = targey pos = InStr(start_at, Text1.Text, targey) If pos >0 Then \'找到了匹配字符串 TargetPosition = pos Text1.SelStart = TargetPosition1 \'选中找到的字符串

Form1.Text1.SelLength = Len(targey) Form1.Text1.SetFocus Else \'没有找到匹配的字符串

MsgBox \"没找到匹配的字符串\", 48, \"提示\" Form1.Text1.SetFocus End If End Sub Private Sub mnupaste_Click()

\'粘贴

用GetText1 方法,将剪切板中的内容粘贴到光标所在位置

Text1.SelText = Clipboard.GetText() End Sub

Private Sub mnuprint_Click() \'打印 On Error Resume Next

cmndlg1.ShowPrinter

Printer.Copies = cmndlg1.Copies

Printer.Print Text1.Text End Sub

Private Sub mnuright_Click(Index As Integer) \'右对齐\\居中菜单代码 Select Case Index Case 1 Text1.Alignment = 1 mnuleft.Checked = False mnuright(1).Checked = True mnuright(2).Checked = False Case 2 Text1.Alignment = 2 mnuleft.Checked = False mnuright(1).Checked = False mnuright(2).Checked = True End Select End Sub

Private Sub mnusave_Click() \'保存

On Error Resume Next

cmndlg1.DialogTitle = \"保存文件\"

cmndlg1.Filter = \"文本文件|*.txt\"

cmndlg1.CancelError = True

cmndlg1.ShowSave

Open cmndlg1.FileName For Output As #1

Print #1, Text1.Text

Close #1 End Sub

Private Sub mnuselectall_Click()

\'全选

Text1.SelStart = 0

Text1.SelLength = Len(Text1.Text) End Sub

Private Sub Text1_Change() If Text1.Text = \"\" Then mnufind.Enabled = False mnuNext.Enabled = False Else mnufind.Enabled = True mnuselectall.Enabled = True End If End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button Case \"新建\" Call mnunew_Click Case \"打开\" Call mnuopen_Click Case \"剪切\" Call mnucut_Click Case \"复制\" Call mnucopy_Click Case \"粘贴\" Call mnupaste_Click Case \"保存\" Call mnusave_Click Case \"查找\" Call mnufind_Click End Select End Sub

Private Sub tre_Click() Shell (\"notepad 使用说明.txt\") End Sub

Private Sub xufeng_Click() Form2.Visible = True End Sub

五、运行结果

保存功能

查找功能

打开功能

颜色修改功能

字体修改功能

七、心得体会

作为一名计算机专业的学生,在接触了C语言、数据结构与C++课程后,对计算机语言有了一定的兴趣,于是在这个学期我毫不犹豫的选择了VB课程(算法与程序设计)。

VB程序设计的入门学习并不难,但却是一个十分重要的过程,因为程序设计思想的形成,以及之前学习积累的经验,很快就对VB有了一定的了解。下面就是我这段时间学习的新的与体会。 我认为作为学习程序设计最重要的一点是要注重理解一些重要的概念.VB程序设计本身并不复杂,翻开一本程序设计学习的书籍,看到的无非就是变量,函数,条件语句,循环语句等概念.但要真正能进行程序设计,需要深入理解这些概念.因此,在 程序入门阶段还是应该重视概念的学习.我们学习VB并没有从正常的途径,可以说VB语言相对来说比其他语言简单,从他的语法就可以看出

其次,自己动手编写程序。程序设计入门阶段要经常自己动手抄写或编写一些小程序,亲自动手进行程序设计是创造性思维应用的体现,是培养逻辑思维的好方法.因此一定要多动手编写程序,而且要从小程序开发开始,逐渐提高写程序的能力.只有不断的从自己的程序中积累经验,从中进步,才能写出好的程序。程序设计课是高强度的脑力劳动,不是听会的,也不是看会的,而是练会的.只有自己动手,编写一些程序,才会有成就感,进而对课程产生兴趣,学起来才比较从容.动手能力的培养是这门课和以往课程最大的不同之处.重点放在思路,算法,编程构思和程序实现上.语句只是表达工具,要求堂上积极思考,尽量当堂学懂,并做到灵活应用.编程序不像做其它的事情,写程序之前一定要计划周详,把所有的可能性都想到,并想好相应的解决方法,不然思想会很混乱,很容易出现错误。还有就是编程序最重要的其实是思想,思想确定之后用什么语言或什么方法就简单了,接下来就是设计并写成代码的事情了

好的程序员就是这样一步一步炼成的。

在者,阅读,借签别人设计的好程序。多看别人设计好的程序代码,包括教材上的例题程序.在读懂别人程序后,要想他为什么这么设计能不能将程序修改完成更多的功能 则可以学到别人优秀的东西,帮助自己 提高自身水平.通过这次学习,我越来越喜欢上计算机语言,我相信在计算机语言上会走的更远。

第14篇:微机课程设计报告

绪论

当今社会在飞速发展,能源、健康、空间的利用,成了人们着重关注的对象。而在这个信息传递极速的社会,LED的出现给人们带来了希望之光。LED的特色之处一是节能(直接功耗,间接耗能),二是基本无电离辐射,三提高空间利用率。而这些特色又恰好解决了上述的三种问题。

LED点阵分为图文显示屏和视频显示屏,均由LED矩阵块组成。用点阵方式构成图形或文字,点阵显示是集微电子技术、计算机技术、信息处理于一体的新型显示方式,其具有色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点。而且它不仅可以静态的显示文字,也可以通过动态滚动,以增加信息显示的容量。为了醒目,也可以产生诸如闪动、滚动等效果。只要设计好合适的数据文件,就可以得到满意的显示效果,所以,采用LED点阵显示方式显示一些需要经常变化的信息是很有效、便捷的。

点阵大小有8X

8、16X

16、24X

24、32X

32、48X48等不同规格,也有单色、双色和多色几种,而我们最常用的是单色图文显示。我们本次的课程设计是使用16X6的规格。16X16点阵是由4个8X8点阵屏组成,共有256个发光二级管,且每个发光二级管是放置在行线和列线的交叉点上,由于行线是高电平有效,列线是低电平有效,所以当对应的某一行置高电平,某一列置低电平,则相应的二极管就亮。

LED点阵被广泛用于公共场合的大屏显示上,LED点阵大屏可应用于户外广告,交通导航,大厅公告,比赛的多媒体实时显示等领域。

本次的课程设计内容是用16X16的点阵以滚动显示方式显示本小组人员的名字,并且用开关控制左右滚动方向的改变。利用本次的课程设计让我们加深对微机原理与应用课程的认识和掌握,对微机原理与应用课程的应用有更深一步的了解。

小结

课程设计是培养我们综合运用所学知识,发现、提出、分析、解决实际问题,锻炼实践能力的重要环节。

本次通过一个星期的课程设计,使我们在理论的基础上更深刻的掌握了微机的深层内容及实际应用生活中的应用,锻炼了我们的动手能力和思维能力,在软件方面的编程能力,以及硬件的连接能力,让我们受益匪浅,同时也使我们在学习上的缺点暴露出来,让我们深刻反思。独立解决这些问题,对我们以后的工作、学习都会有很好的帮助作用。

在刚拿到题目的时候,我们分析了题目的内容及要求,然后去图书馆查找了资料,

第15篇:数据结构课程设计报告

《数据结构》 课程设计报告

1

目录

《数据结构》 ...................................................................................................................................1 课程设计报告 ...................................................................................................................................1 目录 ..................................................................................................................................................2 课题一:表达式求值 .......................................................................................................................3 一:算数表达式后缀版 ...........................................................................................................3

1、问题描述: .................................................................................................................3

2、设计思路: .................................................................................................................3

3、程序代码: .................................................................................................................3

4、运行与测试 .................................................................................................................6

5、设计心得: .................................................................................................................6 二:算术表达式中缀版 ...........................................................................................................7

1、问题描述: .................................................................................................................7

2、设计思路: .................................................................................................................7

3、代码: .........................................................................................................................7

4、调试及测试 ...............................................................................................................13

5、设计心得: ...............................................................................................................13 课题四:迷宫求解 .........................................................................................................................14 一:问题描述: .............................................................................................................14 二:设计思路: .............................................................................................................14 三:功能函数设计 .........................................................................................................14 四:代码 .........................................................................................................................14 五:测试及调试 .............................................................................................................21 六:设计心得 .................................................................................................................23

2 课题一:表达式求值

一:算数表达式后缀版

1、问题描述:一个算术表达式是由操作数、运算符和界线符组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界线符有左右括号和表达式起始、结束符“#”,如:“1285-*+42/-#”。引入表达式起始、结束符是为了方便。编程利用“算符优先法”求算术表达式的值。

2、设计思路:在C++环境下,用字符数组A,保存算数式,一“#”表示结束。用栈对数字和运算符号进行操作。当扫描A不是‘#’时,判断数组成员是数字还是字符,若数字,则将数字的ASCII码入栈,若不是,则弹出两个数字,并根据字符进行相应的运算,并将结果入栈保存,以便下一次的运算操作。

3、程序代码:

#include using namespace std; cla stack { private: int *base; int *top; public: int size; int empty_stack(); int push_stack(int e); int pop_stack(int &e);

3 int get_stack(int &e); stack(int Size=100) {

base=new int[Size];

top=base;

size=Size; }; ~stack() {

delete[] base;

base=NULL;

top=NULL; }; }; int stack::empty_stack() { return ((top==base)); } int stack::push_stack(int e) { if(top-base

*top=e;

top++;

return 1; } else

return 0; } int stack::pop_stack(int &e) { if(top>base) {

top--;

e=*top;

return 1; } else

return 0; } int stack::get_stack(int &e) { if(top>base) {

4

e=*(top-1);

return 1; } else

return 0; } int match(char A[]) { stack s; int i=0,x,y,z; while(A[i]!=\'#\') {

while(A[i]>\'0\'&&A[i]

{

s.push_stack(A[i]-\'0\');//存储 数字0~9 char-char

i++;

}

if(A[i]\'9\')

{

s.pop_stack(x);

s.pop_stack(y);

switch(A[i])

{

case \'+\':s.push_stack(x+y);break;//switch,case \'ch\'的用法

case \'-\':s.push_stack(x-y);break;

case \'*\':s.push_stack(x*y);break;

case \'/\':s.push_stack(x/y);break;

}

}

i++; } s.pop_stack(z); printf(\"%d\\n\",z); return z; } int main() { char A[100]; int m; scanf(\"%s\",A); m=match(A); printf(\"%d\\n\",m); return 0; }

5

4、运行与测试

5、设计心得:考察栈的应用,在c++环境下栈的构建与操作,在输入数组A时(用于存放数组),注意当数组元素是数字时,将A[i]-’0’,(ASCII码)作为栈相应函数的参数。后缀表达式还是相应比较简单的。

6 二:算术表达式中缀版

1、问题描述:一个算术表达式是由操作数、运算符和界线符组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界线符有左右括号和表达式起始、结束符“#”,如:“1285-*+42/-#”。引入表达式起始、结束符是为了方便。编程利用“算符优先法”求算术表达式的值。

2、设计思路:在C++环境下,在后缀表达式的基础上,增加将中缀转换为后缀存储的算法。自左向右扫描表达式,当扫描到的是操作数时直接输出,扫描到运算符时不能马上输出,因为后面可能还有更高的运算;若运算符栈栈顶字符比这个字符低,则入栈,继续向后处理;若高,则从运算符栈出栈一个运算符输出,继续处理当前字符;若相等,则为括号,从栈中出栈,继续向后处理,直到遇到字符’#‘,求值结束。例如:“1+2*(8-5)-4/2#”。

3、代码:

#include using namespace std; #include cla stack { private: int *base; int *top; public: int size; int empty_stack();

7 int push_stack(char e); int pop_stack(char &e); int get_stack(char &e); stack(int Size=100) {

base=new int[Size];

top=base;

size=Size; }; ~stack() {

delete[] base;

base=NULL;

top=NULL; }; }; int stack::empty_stack() { return ((top==base)); } int stack::push_stack(char e) { if(top-base

*top=e;

top++;

return 1; } else

return 0; } int stack::pop_stack(char &e) { if(top>base) {

top--;

e=*top;

return 1; } else

return 0; } int stack::get_stack(char &e) {

8 if(top>base) {

e=*(top-1);

return 1; } else

return 0; } cla temp { private: int *base; int *top; public: int size; int empty_temp(); int push_temp(int e); int pop_temp(int &e); int get_temp(int &e); temp(int Size=100) {

base=new int[Size];

top=base;

size=Size; }; ~temp() {

delete[] base;

base=NULL;

top=NULL;

}; }; int temp::empty_temp() { return ((top==base)); } int temp::push_temp(int e) { if(top-base

*top=e;

top++;

return 1; }

9 else

return 0; } int temp::pop_temp(int &e) { if(top>base) {

top--;

e=*top;

return 1; } else

return 0; } int temp::get_temp(int &e) { if(top>base) {

e=*(top-1);

return 1; } else

return 0; } char fhcg(char a,char b)//#不能传进a { int i,j; char h; char CH[7]={\'+\',\'-\',\'*\',\'/\',\'(\',\')\',\'#\'}; char R[7][7]={{\'>\',\'>\',\'\',\'>\'},

{\'>\',\'>\',\'\',\'>\'},

{\'>\',\'>\',\'>\',\'>\',\'\',\'>\'},

{\'>\',\'>\',\'>\',\'>\',\'\',\'>\'},

{\'

{\'>\',\'>\',\'>\',\'>\',\'/\',\'>\',\'>\'},

{\'

if(CH[i]==a)

break; } for(j=0;j

if(CH[j]==b)

break; } h=R[i][j]; return (h); } int matchcg(char A[],char B[])// { stack s; char h,x,y; int i,j; i=0;j=0; s.push_stack(\'#\');//#没传入 // s.get_stack(y); //cout

while(!s.empty_stack())//最后的-4/2有问题,/没进入B[j] {

if(A[i]>\'0\'&&A[i]

{

B[j]=A[i];

j++;

i++;

}

else//(A[i]\'9\')

{

s.get_stack(y);

// s.pop_stack(x);//

h=fhcg(y,A[i]);//

switch(h)

{

case \'>\':

{

s.pop_stack(x);

B[j++]=x;//x没有下移,还是‘-’只有这一步把数据压入B,j++

break;///////////

}

case \'

case \'=\':s.pop_stack(x);i++;break;

default:

return 0;

}

} }

11 B[j]=\'#\';//B[]由j控制进程

B[++j]=\'\\0\'; // printf(\"%s\\n\",B); return 1; } int matchfn(char A[]) { temp s; int i=0; int n,x,y,z; n=strlen(A); //printf(\"n=%d\\n\",n); // printf(\"%s\\n\",A); while(A[i]!=\'\\#\')//!!!!!!!!! {

if(A[i]>\'0\'&&A[i]

{

s.push_temp(A[i]-\'0\');//存储 数字0~9 char-char

i++;

}

else//(A[i]\'9\')

{

s.pop_temp(x);

s.pop_temp(y);

switch(A[i])

{

case \'+\':s.push_temp(y+x);break;//switch,case \'ch\'的用法

case \'-\':s.push_temp(y-x);break;

case \'*\':s.push_temp(x*y);break;

case \'/\':s.push_temp(y/x);break;

}

i++;

}

} s.pop_temp(z); return z; } int main() { //char A[100]={\"1+2*(8-5)-4/2#\"}; char A[100]; printf(\"A[]=以#结束:\"); scanf(\"%s\",A);

} char B[100]; int m,n,i=0; m=matchcg(A,B); m=matchfn(B); printf(\"%s\",A); printf(\"=%d\\n\",m); return 0;

4、调试及测试

5、设计心得:

中缀算法是在后缀的基础上,增加了处理,是的中缀在栈的存储中为后缀,然后只用后缀的算法运算。最容易忽略的是字符数组处理是的’\\0‘问题,所以加上了B[j]=\'#\';B[++j]=\'\\0\';在int matchcg(char A[],char B[])函数后。

13 课题四:迷宫求解

一:问题描述:设二维数组maze[m][n]为’0‘,表示此路可通,为’1‘表示此路不通.入口是maze[1][1]出口为maze[m][n]且maze[1][1]=0, maze[m][n]=0.编写寻找从入口到出口的一条路径的程序。必须沿4个方向搜索.二:设计思路:回溯法,从入口出发,按某一方向探索,若能走通并未走过(maze[i][j]==0),即该处可以到达,并标记为已走过(maze[i][j]=-1),并入栈保存前一步到达的位置,否则探索下一个方向(d++);若所有的方向均没有通路,则按原路返回前一步到达的位置,换下一个方向继续探索,直到找到一条同路。

三:功能函数设计

typedef struct _Befor//前一点的坐标方向 typedef struct//链栈

void play(Befor temp)//temp void play(Befor temp)//temp用于实现在DOS下的界面显示

typedef struct MOVE和typedef struct _Path//用于计算四个方向的位移量

int Export(int (*maze)[10],int x0,int y0,int m,int n,PStack s)//用于探索迷宫寻找出路

四:代码

//用c表示栈

//改进,加入动态演示(子弹打飞机)

//最重大的错误,ij的位置反了,i是行,对应的是y坐标;j是列,对应的是x坐标。 #include #include #include #include #include #include #include #include #include const int True = 1; const int False = 0; #define MAX 15//限定了栈的容量

14 //system(\"cls\"); #define Up

0x48 #define Down 0x50 #define Left 0x4b #define Right 0x4d #define Esc

0x1b void gotoxy(int x, int y) //光标移到(x,y)friend函数(COORD,HANDLE)屏幕宽80、高25 {

COORD point; // 创建光标位置坐标。COORD类(x,y)

HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);// 控制台屏幕缓冲区的把手。HANDLE类

point.X = x; point.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),point); //设置控制台光标位置 }

void clear(int left,int top,int width,int higth)//!!!!! {

//函数消除轨迹

gotoxy(left,top); for(int i=0;i

for(int j=0;j

{

gotoxy(left+i,top+j);

cout

} } void sound(DWORD freq) //按freq HZ频率发声 (50ms) { Beep(freq,50); } void delay(DWORD dur)//延时dur毫秒 {

Sleep(dur); } //////正文

typedef struct _Befor { int x,y,d; }Befor;//前一点的坐标方向 typedef struct//链栈 { int top; Befor Node[100];//结构体每一个都是Befor型 }Stack,*PStack; //初始化栈

15 PStack Inite_Stack() { PStack s; s=(PStack)malloc(sizeof(Stack)); if(s) {

s->top=-1; } return s; } int empty_Stack(PStack s) { return(s->top==-1);//s.top==0即为空 } int push_Stack(PStack s,Befor temp) { if(s->top==MAX-1)//限定了栈的容量

return 0; else {

s->top++;

s->Node[s->top]=temp;

return 1; } } int pop_Stack(PStack s,Befor &temp) { if(empty_Stack(s))

return 0; else {

temp=s->Node[s->top];

s->top--;

return 1; } } int get_Stack(PStack s,Befor &temp) { if(empty_Stack(s)) return 0; else {

temp=s->Node[s->top];

return 1;

16 } } void play(Befor temp)//temp { delay(500); clear(20+temp.y+temp.y*3,5+temp.x+temp.x*3,1,1); gotoxy(20+temp.y+temp.y*3,5+temp.x+temp.x*3); printf(\"$\"); } ////////////////////////////////////////栈完成

//迷宫点的设计,保存的坐标,保存前一点的坐标(方向),此点的四个方向坐标 //加入难度,也就是迷宫复杂化,1出现在中间区域。 /*typedef struct _Befor { int x,y,d; }Befor;//前一点的坐标方向*/ typedef struct MOVE { int dx,dy; }move; typedef struct _Path {

move x,y; }Path; int Export(int (*maze)[10],int x0,int y0,int m,int n,PStack s)//二维数组做实参形参 {//(x0,y0)起始点,(m,n)将要到达的点

Befor temp; int i,j,x,y,d; struct MOVE move[4]; move[0].dx=-1;//位置错误。向上i-1;向左j+1;向下i+1;向左j-1;!!!!!!!!!!!!!! move[0].dy=0; move[1].dx=0; move[1].dy=1; move[2].dx=1; move[2].dy=0; move[3].dx=0; move[3].dy=-1; //栈初始化temp(x,y,d),入栈

temp.x=x0; temp.y=y0; temp.d=-1; push_Stack(s,temp); while(!empty_Stack(s)) {

pop_Stack(s,temp);//出栈,存储为之前的点 x=temp.x; y=temp.y; d=temp.d+1; while(d

i=x+move[d].dx;//一直是1 j=y+move[d].dy;//当前点坐标y值不对,一直增长

if(maze[i][j]==0)//当前的可走 改变了,maze[i][j]没变

{

temp.x=x;

temp.y=y;

temp.d=d;

push_Stack(s,temp);//入栈保存

//加入动态(temp)

play(temp);//

x=i;

y=j;

maze[x][y]=-1;//记录当前点已走过

if(x==m&&j==n)//已走出则输出路径

{

temp.x=x;

temp.y=y;

temp.d=d;

push_Stack(s,temp);//入栈保存最后一个点,出口点/////////////////////

//加入动态(temp)

play(temp);/////////////

gotoxy(0,2);

while(!empty_Stack(s))

{

pop_Stack(s,temp);/////////////////////////

printf(\"(%d,%d,%d)\\t\",temp.x,temp.y,temp.d);//没有改变!!!!! 正确

}

for(i=x0;i

for(j=y0;j

{

if(maze[i][j]==-1)

maze[i][j]=0;

}

return 1;//已成功

}

else

d=0;

}

else

d++;

} } //空栈后,恢复迷宫

for(i=x0;i

for(j=y0;j

{

if(maze[i][j]==-1)

maze[i][j]=0;

}

return 0;//失败 } //迷宫的初始化maze[m+2][n+2] int main() { int maze[10][10]; int m,n,i=0,j=0; char c_0; int nx,ny; PStack s=Inite_Stack(); printf(\"迷宫的规格:\"); scanf(\"%d%d\",&m,&n); gotoxy(20,5);//通过键盘控制迷宫中间区域

for(i=0;i

for(j=0;j

{

maze[i][j]=1;

gotoxy(20+i+3*i,5+j+3*j);

printf(\"1\");

} for(i=1;i

for(j=1;j

{

maze[i][j]=0;

gotoxy(20+i+3*i,5+j+3*j);

printf(\"0\");

} gotoxy(3,0); printf(\"请修改迷宫,增加难度。\\n\"); printf(\"输入0为此位置可行,输入1为此位置不可行。请不要修改外部。\\n\");

} printf(\"向上;向左;向右;向下\\n\"); nx=20;ny=5; gotoxy(20,5); c_0=getch(); while(c_0!=\'q\')//增加改错了,改为0的选项 { switch(c_0) { case Esc:break; case Up:ny--;

gotoxy(nx,ny);

break; case Left:nx--;

gotoxy(nx,ny);

break; case Down:ny++;

gotoxy(nx,ny);

break; case Right:nx++;

gotoxy(nx,ny);

break; case \'1\':j=(nx-20)/4;

i=(ny-5)/4;

maze[i][j]=1;//

delay(100);

clear(nx,ny,1,1);

gotoxy(nx,ny);

printf(\"%d\",maze[i][j]);//

break; case \'0\':j=(nx-20)/4;

i=(ny-5)/4;

maze[i][j]=0;//

delay(100);

clear(nx,ny,1,1);

gotoxy(nx,ny);

printf(\"%d\",maze[i][j]);//

break;

} c_0=getch(); } Export(maze,1,1,m,n,s); return 0; 20 五:测试及调试

1、初始化迷宫及操作提示

2、增加难度修改迷宫

21

3、运行结果 22

六:设计心得

1、最麻烦的是几个结构体之间的关联,比如“typedef struct//链栈中{Befor Node[100];}//结构体每一个都是Befor型”;“typedef struct _Path// {move x,y;}”move类型的变量x,y。

2、还有四个位移的变化(move[d].dx,move[d].dy)他的变化是与i,j的位置的变化相关的。

3、迷宫的探索中,一但按某一方向探索,若能走通并未走过(maze[i][j]==0),即该处可以到达,并标记为已走过(maze[i][j]=-1),并入栈保存前一步到达的位置,这是值得注意的,因为可能返回,要保存前面的位置。

4、界面的设计以及增加迷宫复杂性时,更改迷宫位置是的处理,也是要注意的。

23

第16篇:数据结构课程设计报告

青岛理工大学

数据结构课程设计报告

题目:宿舍管理查询软件

院(系):计算机工程学院

学生姓名:谢茂盛

班级:网络121学号: 201207131

起迄日期:2014.07.07-2014.07.20

指导教师:张艳

一、需求分析(所有大标题宋体加粗四号,下同)(小标题宋体加粗小四,下同)

1.问题描述:

以无歧义的陈述详细说明对自己所选题目的解释性描述,可以补充说明该设计中要做的具体任务。强调的是程序要做什么?

2.基本功能

要求分别列出该设计要实现的功能,(每个功能要尽量和概要设计中的模块函数对应起来)。

二、概要设计

1.设计思路:

解决问题的思路概述,拟采用的算法的简介。

2.数据结构设计:

要求分别列出拟采用的数据结构及其定义,分为逻辑结构(线性?树状?图状?)和存储结构(顺序?链式?)。采用该结构的原因,如果有定义的抽象数据类型,可以列出其定义及各种操作。如下为抽象数据类型定义的模板。

定义程序中用到的抽象数据类型;

设计中所用到的数据结构或抽象数据类型的说明,以及在程序中的作用

抽象数据类型线性表的定义如下:

ADT List{

数据对象:D={ai| ai ∈ElemSet,i=1,2,3……,n,n≥0}

数据关系:R1={| ai-1,ai ∈D,i=1,2,3,……,n}

基本操作:

Insert(&L,i,j)

初始条件:线性表L已存在,1≤i≤n+1。

操作结果:在L中第i个位置之前插入新的数据元素j,L的长度加1。

Del(&L,i,j)

初始条件:线性表L已存在,1≤i≤n。

操作结果:删除L的第i个数据元素,L的长度减1

Xg(&L,i,j)

初始条件:线性表L已存在。

操作结果:用新的输入数据项j代替原有的指定要修改的数据项i。

Search(&L,i,e)

初始条件:线性表L已存在。

操作结果:查找指定的某元素i,并将值赋给e,用e 输出。

}

3.软件结构设计:

按需求分析中的功能进行模块划分,建立模块的层次结构及调用关系。

三、详细设计

实现概要设计中定义的所有数据类型,对每个操作只需要写出伪代码算法;对主程序和其他模块也都需要写出伪代码算法(伪代码算法达到的详细程度建议为:按照伪代码算法可以在计算机键盘直接输入高级程序设计语言程序));可采用流程图、活动图进行描述,画

出函数和过程的调用关系图。

实现设计中主程序和其他子模块的算法,以流程图的形式表示,需画出函数和过程的调用关系图。

本小节内所有的图均要求用Visio或Word进行绘制,不允许用bmp或其他格式的图片。绘图内文字均采用宋体五号(如果图比较大,排版不好看的话,可以根据需要缩小字体),单倍行间距,段前段后均设置为0行。

1.定义程序中所有用到的数据及其数据结构,及其基本操作的实现;

2.主函数和其他函数的伪码算法;

3.主要函数的程序流程图,实现设计中主程序和其他子模块的算法,以流程图的形式表示。

4.画出函数之间的调用关系图。

四、调试分析

内容包括:调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析。

1.实际完成的情况说明(完成的功能,支持的数据类型等);

2.程序的性能分析,包括时空分析;

3.上机过程中出现的问题及其解决方案;

4.程序中可以改进的地方说明;

5.程序中可以扩充的功能及设计实现假想。

五、测试结果

列出你的测试结果,包括输入和输出。注意测试数据应该完整和严格,至少给出2组测试结果(含合法数据与非法数据)。

六、用户手册

说明如何使用你编写的程序,详细列出每一步的具体操作步骤。这里可以有适当的运行结果抓图。用户手册与开发过程无关,只与使用有关,必须是Step by Step的。

所有运行结果截图均要求有实际数据的内容,截图尺寸要求按页宽排版两张大小,且要求有每张图下面有规范的标题说明如何使用你编写的程序,详细列出每一步的操作步骤。

七、体会与自我评价

写出本设计的总结思考,收获心得体会,要求不少于600字,不得摘抄网上资料,只能参考。

正文(各标题除外),均采用宋体和Times New Roman字体,小四号字,1.25倍行距。

八、参考文献 (列出你参考的书,格式按照下面的例子来写)例如:

[1]严蔚敏.数据结构(C语言).清华大学出版社,2007

第17篇:网络安全课程设计报告

实验一 用X-SCAN进行网络安全扫描

【课程设计目的】

(1)掌握网络扫描技术及涉及的相关基本知识

(2)掌握使用流行的安全扫描工具X-SCAN进行安全扫描 (3)能够分析安全报表并利用安全报表进行安全加固

【实验环境】

硬件设备:PC、实验室小组局域网环境(建议有Internet环境)、NDIS 3.0+驱动的网络接口卡

软件环境:Windows 2000、WinXP、TCP/IP、X-SCAN

【实验基础】

流行扫描工具x-csan介绍

这是当今常用的一款扫描工具,软件的系统要求为:Windows 9x/NT4/2000/XP/2003,NDIS 3.0+驱动的网络接口卡。该软件采用多线程方式对指定IP地址段((或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式等„„

* 扫描内容包括:

•远程操作系统类型及版本 •标准端口状态

•SNMP信息,CGI漏洞,IIS漏洞,RPC漏洞,SSL漏洞 •SQL-SERVER、FTP-SERVER、SMTP-SERVER、POP3-SERVER •NT-SERVER弱口令用户,NT服务器NETBIOS信息 •注册表信息等。

【实验准备】

(1)了解网络扫描技术、端口、漏洞的相关知识 (2)学习X-SCAN使用方法

(3)读懂安全报表及明确相应的加固工作

六.实验内容及步骤

第一步:先在Windows2000手工查看已开放的服务及初步判断安全漏洞

第二步:安装x-scan并完成参数配置

1.对本地机进行扫描(端口设置为TCP)

扫描结果如下:

2.对本地机进行扫描(端口设置为SYN)

扫描结果如下图所示:

第三步:分析扫描报表并登陆Internet进行相应加固

比如TCP扫描时的警告login (513/tcp)

远程主机正在运行\'rlogin\' 服务, 这是一个允许用户登陆至该主机并获得一个交互shell的远程登录守护进程。

事实上该服务是很危险的,因为数据并未经过加密- 也就是说, 任何人可以嗅探到客户机与服务器间的数据, 包括登陆名和密码以及远程主机执行的命令.应当停止该服务而改用openh 解决方案 : 在/etc/inetd.conf 中注释掉\'login\' 一行并重新启动inetd 进程.风险等级 : 低

又比如SYN扫描时的警告www (80/tcp)

webserver支持TRACE 和/或 TRACK 方式。 TRACE和TRACK是用来调试web服务器连接的HTTP方式。支持该方式的服务器存在跨站脚本漏洞,通常在描述各种浏览器缺陷的时候,把\"Cro-Site-Tracing\"简称为XST。攻击者可以利用此漏洞欺骗合法用户并得到他们的私人信息。

解决方案: 禁用这些方式。

如果使用的是Apache, 在各虚拟主机的配置文件里添加如下语句: RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F]

如果使用的是Microsoft IIS, 使用URLScan工具禁用HTTP TRACE请求,或者只开放满足站点需求和策略的方式。

如果使用的是Sun ONE Web Server releases 6.0 SP2 或者更高的版本, 在obj.conf文件的默认object section里添加下面的语句: AuthTrans fn=\"set-variable\" remove-headers=\"transfer-encoding\" set-headers=\"content-length: -1\" error=\"501\"

第四步:对局域网内部主机进行扫描,发现可利用主机

扫描结果如下:

根据扫描出来的漏洞,发现可以利用网络执法官对这两台主机进行ARP攻击。

实验二 网络测试及监测

【实验目的】

(1)了解和掌握网络测试的一般方法 (2)掌握用CHARIOT测试局域网的带宽

(3)在WinXP下进行手工网络加速,比较前后的异同。 (4)在Win2000 Sever下安装并使用网络监视器

【实验环境】

硬件设备:整个实验室的局域网内的每台终端机上均可做此实验 软件环境:Windows XP、Windows 2000、TCP/IP

【实验基础】

局域网速度测试利器:CHARIOT是一款目前世界上唯一被广泛认可的应用层IP网络及网络设备的测试软件,它可提供端到端、多操作系统、多协议测试、多应用模拟测试,应用范围包括有线网、无线网、广域网及各种网络设备。可以进行网络故障定位、用户投诉分析、系统评估、网络优化等,能从用户角度测试网络或网络参数。

这款软件的基本组成包括CHARIOT控制台和Endpoint。CHARIOT控制台主要负责监视和统计工作,Endpoint负责流量测试工作,实际操作时Endpoint执行CHARIOT控制台发布的脚本命令,从而完成需要的测试(具体的工作流程图见图)。

实例1:测量网络中任意两个节点间的带宽

任务描述:假设我们要测量网络中A计算机192.168.13.8与B计算机192.168.13.7之间的实际带宽。

针对问题:局域网中的用户经常感到互访速度缓慢,此时我们可使用CHARIOT来查看网络连接情况。

第一步:首先在A、B计算机上运行CHARIOT的客户端软件Endpoint。运行endpoint.exe后,任务管理器中多了一个名为endpoint的进程。

第二步:被测量的机器已经准备好了,这时需要运行控制端CHARIOT,我们可以选择网络中的其他计算机,也可以在A或B计算机上直接运行CHARIOT。

第三步:在主界面中点击“New”按钮,接着点击“ADD PAIR”

第四步:在“Add an Endpoint Pair”窗口中输入Pair名称,然后在Endpoint1处输入A计算机的IP地址192.168.13.8,在Endpoint2处输入B计算机的IP地址192.168.13.7。按“select script”按钮并选择一个脚本,由于我们是在测量带宽,所以可选择软件内置的Throughput.scr脚本。

第五步:点击主菜单中的“RUN”启动测量工作。

第六步:软件会测试100个数据包从A计算机发送到B计算机的情况。由于软件默认的传输数据包很小所以测量工作很快就结束了。在结果中点击“THROUGHPUT”可以查看具体测量的带宽大小。下图显示了A与B计算机之间的实际最大带宽为80.727Mbps。

实例2:一次性测量两个方向

任务描述:实例1中为大家介绍了单向测量的方法,也就是只检测A到B的带

宽。然而,实际工作中,网络是单工或双工工作也是影响网络速度的主要因素,因此用CHARIOT进行测量时应该尽量建立双向PAIR而不是单向的,测量结果会显示出A到B的速度以及B到A的速度。

针对问题:A到B的传输速度很快,但B到A的速度却很慢,特别是在A、B同时从对方计算机复制文件到本机时最为明显。

前三步跟实例1一样;

第四步:在“Add an Endpoint Pair”窗口中输入Pair名称,然后在Endpoint1处输入B计算机的IP地址192.168.13.7,在Endpoint2处输入A计算机的IP地址192.168.13.8。按“select script”按钮并选择一个脚本,由于是测量带宽所以选择软件内置的Throughput.scr脚本。

第五步:现在,两对PAIR已经建立起来了(如图),点击主菜单中的“RUN”启动测量工作。

第六步:软件会将100个数据包从A计算机发送到B计算机,还会测量100个数据包从B发送到A的情况。在结果页面中点击“THROUGHPUT”标签可以查看具体测量的带宽大小。如图所示在下方图表中:

实例3:科学测量减小误差

任务描述:对于网络情况不稳定、经常出现速度波动的情况来说,在某一时刻测量速度存在一定的不确定因素,如何将误差降低到最小呢?我们可以采用科学测量法来解决这个问题,即采用平均值的方法。将所有测量值汇总在一起可以得到更接近真实数值的结果。

针对问题:网络传输速度非常不稳定,经常一会儿十几MB/s,一会儿只有几MB/s。

第一步:按照上面提到的方法安装CHARIOT并将客户端程序Endpoint安装在A与B计算机上。启动CHARIOT,点击“New”按钮。

第二步:点击“ADD PAIR”按钮建立一个新的Endpoint Pair。输入PAIR名称,然后在Endpoint1处输入A计算机的IP地址192.168.13.8,在Endpoint2处输入B计算机的IP地址192.168.13.7。按“select script”按钮选择

Throughput.scr脚本。

第三步:在Pair 1上点鼠标右键选择Copy将该测量项复制,然后连续向下粘贴9个这样的测量项。

第四步:点击“RUN”启动测量工作,我们在THROUGHPUT标签页中可以看出基本上每项带宽测量数值在10Mbps左右,在总和处我们可以看到最终结果是94Mbps,

基本接近100Mbps的真实值。

实例4:大包测量法

任务描述:虽然我们可以通过科学测量法减小误差,但由于默认数据包为100KB,所以总的数据检测量相对较小。对于带宽比较大的情况,例如100Mbps以上的网络或ISP提供的传输速度较快的时候,使用100KB数据包进行测量得出的结果不太准确。这时就需要通过修改默认数据包的大小以求测量结果更精确。

针对问题:网络带宽比较大或使用CHARIOT默认设置进行测量时误差过大。

在这个实例中,大多数步骤和上面所介绍的实例基本一致,因此这里只介绍修改数据包的方法。在我们建立测量PAIR并选择好Throughput.scr脚本后,点击“edit this script”按钮。在弹出的窗口下方file_size处,将该值修改为你希望的数值即可。这样在测量带宽时就会用你设置好大小的数据包进行传输了。根据实际环境设置数据包大小可以让我们的结果更准确。

实验三 ARP欺骗及网络执法官

【实验目的】

(1)掌握ARP欺骗的基本原理

(2)了解流行的ARP欺骗工具网络执法官的使用方法及危害 (3)能够进行基本ARP欺骗防范

【实验环境】

硬件设备:PC、实验室小组局域网环境、路由器取消IP/MAC绑定防欺骗功能 软件环境:Windows 2000、WinXP、TCP/IP、网络执法官

【实验准备】

(1)了解交换网络嗅探技术及相关知识 (2)学习ARP的基本原理

(3)掌握网络执法官的使用方法

【实验内容及步骤】

(这一步的数据由于当时在机房没有保存就丢失了,后来回宿舍后在自己电脑上补做的。)

第一步:在中了ARP病毒的机子上使用“ping”命令

发现不能ping通,在dos下键入命令“arp -d”清除所有arp,再键入静态绑定命令,绑定正确MAC地址,绑定好后,再键入“ping”命令,发现可以ping通。

结果如下图所示:

第二步:安装网络执法官并使用网络执法官

第三步:对局域网中的一台主机进行ARP攻击

在受到ARP攻击之前该主机可以“ping”通

第四步:检查受到攻击的主机的上网情况

在DOS下使用“ping”命令不能ping通

ARP欺骗分析

在OSI模型中,针对网络第二层的攻击可以使网络瘫痪或者通过非法获取密码等敏感信息来危及网络用户的安全。由于任何一位合法用户都能获取一个以太网端口的访问权限,而这些用户都有可能成为黑客;同时,由于设计OSI模型时,允许不同通信层处于相对独立的工作模式,而承载所有客户关键应用的网络第二层,成为了被攻击的目标。

ARP欺骗攻击是针对网络第二层攻击中的一种。ARP用来实现MAC地址和IP地址的绑定,两个工作站才可以通讯,通讯发起方的工作站以MAC广播方式发送ARP请求,拥有此IP地址的工作站给予ARP应答,送回自己的IP和MAC地址。

由于ARP无任何身份真实校验机制,黑客程序发送误导的主动式ARP使网络流量重指经过恶意攻击者的计算机,变成某个局域网段IP会话的中间人,达到窃取甚至篡改正常传输的功效。简单来讲,ARP欺骗的目的是为了实现全交换环境下的数据监听。大部分的木马或病毒使用ARP欺骗攻击也出于此目的。

一旦怀疑有ARP攻击,我们就可以使用抓包工具来抓包,如果发现网络内存在大量ARP应答包,并且将所有的IP地址都指向同一个MAC地址,就说明存在ARP欺骗攻击。该MAC地址就是用来进行ARP欺骗攻击的主机MAC地址,我们可以查出它对应的真实IP地址,从而采取相应的控制措施。另外,我们也可以到路由器或者网关交换机上查看IP地址与MAC地址的对应表。如果发现某一个MAC地址对应了大量的IP地址,就说明存在ARP欺骗攻击,同时可通过这个MAC地址查出用来ARP欺骗攻击的主机在交换机上所对应的物理端口,进行控制。

如何防范ARP欺骗

1.静态ARP绑定网关

(1)在能正常上网时,进入MS-DOS窗口,输入命令:arp -a,查看网关的IP对应的正确MAC地址, 并将其记录下来。

(2)手工绑定,可在MS-DOS窗口下运行以下命令: arp -s 网关IP 网关MAC 192.168.1.1 00-01-02-03-04-05 static 这时,类型变为静态(static),就不会再受攻击影响了。

2.作批处理文件

(1)查找本网段的网关地址,比如192.168.1.1,在正常上网时,“开始→运行→cmd→确定”,输入:arp -a,点回车,查看网关对应的Physical Addre。 比如:网关192.168.1.1 对应00-01-02-03-04-05。 (2)编写一个批处理文件rarp.bat,内容如下: @echo off arp -d arp -s 192.168.1.1 00-01-02-03-04-05 保存为:rarp.bat。

(3)运行批处理文件将这个批处理文件拖到“Windows→开始→程序→启动”

中,如果需要立即生效,请运行此文件。 注意:以上配置需要在网络正常时进行

3.使用安全工具软件

下载Anti ARP Sniffer软件保护本地计算机正常运行。如果已有病毒计算机的MAC地址,可使用NBTSCAN等软件找出网段内与该MAC地址对应的IP,即感染病毒的计算机的IP地址,然后对其进行查封。

另外还可以利用木马杀客等安全工具进行查杀。

实验四:网页防篡改系统iGuard

【实验目的】

实验的目的在于了解网页防篡改的原理,掌握 Web 网站的配置过程, 熟悉iGuard网页防篡改系统的配置过程并会正确使用iGuard网页防篡改系统,从而使学生进一步增强对于网页防篡改保护机理的认识。

【实验要求】

(1)了解基本的HTML 标记及网页防篡改的原理 (2)熟悉 Web 网站的配置

(3)掌握 iGuard网页防篡改系统的配置及使用

【实验准备】 硬件 PC机三台

软件 iGuard安装系统

【背景描述】

外部网站因需要被公众访问而暴露于因特网上, 因此容易成为黑客的攻击目标。虽然目前已有防火墙、入侵检测等安全防范手段,但现代操作系统的复杂性和多样性导致系统漏洞层出不穷、防不胜防,黑客入侵和篡改页面的事件时有发生。 iGuard 网页防篡改系统通过服务器内嵌技术,使用密码技术,为每个需保护的对象(静态网页、执行脚本、二进制文件)计算出具有唯一性的数字水印。公众每次访问网页时,都将网页内容与数字水印进行对比计算;一旦发现网页被非法修改,则立即进行自动恢复,从而彻底地保证了非法网页内容不被公众浏览。 iGuard 的组成由以下三个部件组成:发布服务器(Statging Server)、同步服务器(SyncServer)和防篡改模块(AntiTamper Module)。 在物理上它们部署在两台机器上: 发布服务器部署在内部网中的一台独立服务器上,同步服务器和防篡改模块部署在 Web 服务器上。通过各部件之间的协同工作,实现了网页的自动同步和篡改保护功能。

iGuard 工作流程

在没有使用 iGuard 网页防篡改系统的情况下,用户利用专门的网站发布系统或者使用 FTP 软件或者直接使用文件拷贝将网页文件放到网站 Web 服务器上。在使用 iGuard 网页防篡改系统的情况下,网页文件的传送由 iGuard来完成。

1.正常上传网页

(1) 用户使用自己的网页发布方式 (如网站发布系统、FTP、RCP、文件拷贝等)将网页发布到发布服务器上。

(2)发布服务器对同步服务器进行身份鉴别,鉴别无误后使用安全散列函数计算出更新网页的数字水印, 将网页和数字水印安全传输到同步服务器。 (3) 同步服务器对发布服务器进行身份鉴别,并对传输过来的内容进行完整性检查;一切无误后将数字水印密文存放在安全数据库里,同时完成网页的更新。

2.内容保护过程

(1) 浏览器发出网页浏览请求,Web 服务器取得网页内容后,交给防篡改模块进行监测。

(2) 防篡改模块使用安全散列函数计算出欲发出的网页的数字水印,并与安全数据库中的数字水印相比对。

(3) 如果没找到数字水印或数字水印比对失败,即是可疑或被非法篡改的网页,防篡改模块向发布服务器报警。

(4) 发布服务器向发送警告信息给管理员,并重新同步和恢复可疑网页。 (5) Web 服务器将正确的网页发送给网页浏览者。

【实验步骤】

第一步:安装IIS系统

1.在控制面板中选择“添加/删除程序” ,在出现的对话框中选择“添 加/删除 Windows组件” 。

2.在出现的复选框中选择安装Internet 信息服务(IIS)。

第二步:上传网页到web服务器(假设ip地址为192.168.13.8)

第三步:配置 Web 服务器

(1) 打开 IIS 服务器的配置窗口。选择开始→控制面板→管理工具→Internet 服务管理器。

(2) 在打开的窗口中鼠标右击“默认 Web 站点” ,选择“属性”菜单。 (3) 在出现的“默认 Web 站点属性”窗口中,选择“网站”标签,设置Web 服务器的IP 地址。

(4)“主目录”标签,用以设置 Web 内容在硬盘中的位置,默认目录为“C:\\Inetpub\\Wwwroo” ,你可根据需要自己设置。

(5)在属性窗口处选择“文档”标签,添加自己默认的网站首页文件, 例如“a.html” 。

(6)确认默认的 Web 站点是否已经启动,如果没有可以鼠标右键点击 “默认 Web 站点” ,选择“启动” ,在打开的 IE地址栏中键入本机的IP 地址,即可看到自己指定的主页已经开始在 Internet 上发布了。

第四步:iGuard系统的安装次序

先在一台单独的服务器上(ip地址为192.168.13.9)安装发布服务器 (Staging Server) 软件,然后再在 Web 服务器上(ip地址为192.168.13.8)安装同步服务器(SyncServer)软件和防篡改模块(AntiTamper Module)。

一.发布服务器安装时需要注意的几个地方:

1.选择安装目录 安装程序会给出一个默认的安装目录, 用户也可以自己指定别的目录,需要注意的是目录的名称中不能使用空格或者汉字。

2.生成数字证书 在安装的过程中,安装程序会自动为 iGuard 发布服务器生成一个数字证书,出现以下消息框后,请按“确定”等待数字证书签发完成,这个过程可能需要2-5 秒钟。

3.MySql 数据库 。本系统的日志存储需要 MySql 数据库系统的支持。如果安装程序检测到机器上已经安装了 MySql 数据库系统,提示用户输入root 用户的密码。如果安装程序没有检测到 MySql 数据库系统,则会在本机上安装并启动 MySql 数据库系统。

后续工作:安装完发布服务器后,需要在 Web 服务器上安装同步服务器。为保证通信体的身份鉴别, 安装同步服务器时需要发布服务器的证书摘要数据文件,这个文件的位置在:

“发布服务器安装目录\\iguard.dat” 例:如果安装在默认安装目录下,则该文件的存放位置为:C:\\Tercel\\iGuard\\StagingServer\\iguard.dat。 需要把这个文件拷贝到合适的载体(闪存或软盘)中,供安装同步服务器时使用。

二.同步服务器和防篡改模块的安装

同步服务器安装时需要注意的几个地方:

1.选择安装目录 安装程序会给出一个默认的安装目录, 用户也可以自己指定别的目录,需要注意的是目录的名称中不能使用空格或者汉字。

2.发布服务器证书摘要数据文件 为保证通信实体的身份鉴别, 安装同步服务器时需要发布服务器的证书摘要数据文件,这个文件在发布服务器的如下位置:

“发布服务器安装目录\\iguard.dat” 例:如果发布服务器安装时被安装在默认安装目录下,则该文件在发布服务器的存放位置为: C:\\Tercel\\iGuard\\StagingServer\\iguard.dat。需要把这个文件拷贝到合适的载体(闪存或软盘)中,并在出现如下的窗口时给出该文件所在的路径。

后续工作: 同步服务器及防篡改模块安装完毕后, 同步服务器就已经自动运行,但防篡改模块还未正式工作。

第五步:启动发布服务器时需注意以下几个方面:

1.网站网页文件

检查在发布服务器的本地硬盘上是否已经保存有整个网站的页面文件的备份。

2.数据库系统运行 发布服务器的运行需要 MySql 数据库系统的支持,所以要确认一下MySql 是否在工作。 MySql 在安装好后以系统服务的形式运行,如果MySql 不工作可以用系统的服务管理器来启动 MySql。

3 同步服务器运行,启动发布服务器运行之前需检查一下iGuard同步服务器是否已运行。

4 最后启动发布服务器 运行“开始→程序→iGuard→发布服务器→启动发布服务器”。

第六步:初次使用向导 iGuard注册 第一次运行发布服务器的时候, 程序首先弹出“iGuard注册”窗口,完成iGuard软件的注册。

注册信息分别为:

注册用户名:中国地质大学

注册码:WASGK-5ZDC5-AGXUU-REAA7-4BIAA

第七步:输入 Web站点信息 Web站点名称:用这个名称来标识该Web站点,可以取任意简短明了的名字。 Web服务器的域名或IP地址:用这个域名/IP地址来连接Web服务器(同步服务器)。

第八步:输入主目录信息

在此输入Web主目录(有时也被称作Web文档根目录)的位置。

第九步:完成 发布服务器的基本配置至此完成,单击“完成”进入主程序。

第十步:启用防篡改模块 iGuard 防篡改模块是作为 IIS 的 ISAPI 筛选器来运行,在 IIS 中添加它的步骤如下:

1.运行“开始→程序→管理工具→Internet 服务管理器”(或“开始→设置→控制面板→管理工具→Internet 服务管理器”),选中本地计算机(图中为“COMPUTER”)中要保护的Web服务器(图中为“默认网站”)。 2.选择菜单“操作→属性”或点击右键快捷菜单中“属性”, 弹出该站点属性对话框。选择其中的“ISAPI筛选器”选项卡。单击“添加”,在筛选器属性窗口中输入: 筛选器名称:gg 可执行文件:“同步服务器安装目录\\plugin\\iGuard_iis.dll”

例如,如果安装在默认路径下,则可执行文件位置为: C:\\Tercel\\iGuard\\SyncServer\\plugin\\iGuard_iis.dll 然后点击“确定”。 3.回到上一级窗口,可以在“ISAPI筛选器”中看到刚才添加的内容,点击“确认”。

4.重新启动IIS, 然后检查刚才安装的ISAPI筛选器的状态是否为“已装载”(注意图中状态栏的绿色向上的箭头)。至此,iGuard整个系统正常运行。

第十一步:进入系统在运行环境完备并且基本配置正确的情况下,系统将正常启动,并且与同步服务器通信成功。

注意:如果发布服务器与同步服务器通信成功,服务器小图标会显示绿色,否则会显示灰色。 点击工具栏的“同步上传”按钮即可让本机主目录下的所有文件同步到Web服务器(同步服务器)的主目录下,并且保持完全相同的目录结构。

通过另一台主机访问如下图所示,证明网页上传成功。

第十二步:iGuard 系统工作

1. 修改同步服务器上的某个网页

2. 在其它电脑上访问同步服务器上的相应网页, 此时该网页无法访问。

3.发布服务器进行报警并自动恢复同步服务器上被篡改的网页。

4.网页重新恢复正常,可以访问。

第18篇:PCB课程设计报告

课程设计报告

利用Altium Designer设计单片机最小系统

一、设计目的:

1.掌握、使用实用电子线路、计算机系统设计、仿真软件的能力。2.提高读图、分析线路和正确绘制设计线路、系统的能力。

二、基本要求:

1.了解原理图设计基础、了解设计环境设置、学习Altium Designer 软件的功能及其使用方法。

2.掌握绘制原理图的各种工具、利用软件绘制原理图。3.掌握编辑元器件的方法并构造原理图元件库。 4.熟练掌握手动布局以及手动布线的方法。

5.掌握绘制编辑元器件封装图的方法,构造印制板元件库。

6.了解电路板设计的一般规则、利用软件绘制原理图并自动生成印制板图。

三、设计内容和要求:

1.根据题目要求的指标,通过查阅有关资料,确定系统设计方案,并设计其硬件电路图。

2.绘制电路原理图,并绘制PCB板。

四、设计成果形式及要求:

1.电路原理图及PCB板图 2.编写课程设计报告。

五:设计的详细过程及心得体会

Altium Designer软件是由Altium公司推出的一款功能强大的电路CAD软件,广泛应用于电子电路设计。除了全面继承包括Protel 99se和Protel2004在内的先前一系列版本的功能和优点外,Altium Designer还增加了许多改进和高

课程设计报告

端功能。该软件全面集成了FPGA设计和SOPC设计功能,从而允许工程师能够将系统设计中的FPGA与PCB设计集成在一起。 利用Altium Designer软件设计系统的详细步骤如下:

1.绘制流程图

新建工程绘制原理图编译原理图导入PCB文件得到最终的原理图和PCB图PCB自动查错PCB的手动排版自动布线编辑网络表

2.绘制过程

(1) 电路原理图设计和绘制。

电路原理设计是整个系统设计的基础,一般有以下五个步骤: ① 设置原理图设计环境。

根据电路图的规模设定图纸的大小,另外通过原理图设置选项选择合适的格点、线形以及线宽等。

课程设计报告

② 元器件布局。

根据系统的需要从元器件库中选择相应的元件并放置在图纸上合适的地方,另外需对放置元件的标号和封装进行设定。虽然Altium Designer软件一直以来都自带丰富的元件,但是电子技术及相关器件的迅速发展,这就需要对元器件库中没有的元件创建新的集成库。添加原理图库需要根据元件信息进行器件外形绘制和引脚定义等步骤。这一过程可以通过对空的元件进行编辑,也可对现有的元件库中的元件进行必要的修改。(下图所示为原理图元件库添加元件)。

③ 原理图布线。

利用Altium Designer软件的布线工具将图纸上元件用具有电气意义的线(包括导线和总线)和符号(包括网络标号和端口号等)连接起来,另外根据需要放置电缘端子,这样就构成了完整的原理图。原理图布线讲求线路清晰并且美观匀称。

课程设计报告

④ 原理图调整和检查。

在保证原理图正确性的前提下对原理图进行调整以达到美观和整洁。同时对元件的编号、封装进行设定。这其中对元器件的封装设置尤为重要,我们需要根据最终选定的封装形式在封装编辑器中对其进行编辑。在完成前述的步骤后,利用Altium Designer 的电气规则对画好的电路原理图进行电气规则检查。若有错误,需要对其进行改正。

4 课程设计报告

⑤ 生成网络表。

网络表是电路原理图设计和印刷电路板设计之间的桥梁,执行生成网络表命令可以生成具有元件名、元件封装、参数及元件之间连接关系的网络表。

(2) 印刷电路板的设计。

通过印刷电路板得到电子产品的实际结构,是电路原理图变成一个具体产品的必经之路,印刷电路板的设计主要有以下六个步骤:

① 线路板规划。

根据要设计的电路确定电路板的尺寸板层数(可以通过PCB向导工具完成),接着在Keep-Out 层绘制电路板的边框,这样就设计出电路板的基本框架。

② 导入文件和网络。

导入文件和网络就是从原理图更新PCB操作,即将原理图中的元件符号和导线转换成PCB中的元件封装和网络。因此这步操作至关重要,需要 5

课程设计报告

认真对待出现的任何问题。在确保没有错误完成执行操作后,由飞线连接的所有PCB就会出现在编辑区中。

③ 设置设计规则。

设置规则包括电气规则、布线规则、布局规则、层规则等,每项还可进行细分。这些规则将直接影响到电路板的布线、性能和尺寸等一系列问题。通常我们需要对布线线宽、安全间隔规则和层设计规则进行调整。

④ 元件布局。

元件布局是否合理将直接影响到布线的速度和质量,对后续操作至关重要。在布局时一般先放置与机械尺寸有关的固定位置的元器件,再放置特殊的和较大的元器件,最后放置小的元器件。同时要兼顾布线方面的要求,例如高频元器件的放置要尽量紧凑,信号线的布线才可能尽可能的短,从而降低信号线的交叉干扰。

课程设计报告

⑤ 自动布线。

布线操作是PCB设计的重点,Altium Designer特有的智能交互式布线能力,只需拖拉即可完成布线。在自动布线的方式下,可以选择对全部对象布线,或者是对指定网络布线。 ⑥ 设计规则检查。

显示没有错误。

课程设计报告

⑦ 手工调整。

对自动布线不完善或不尽如人意的部分进行手工布线操作,另外手工调整阶段还要完成铺地、调整元件编号、添加字符(如需要)等操作。这样就完成了印制电路板的设计。

3.心得体会

首先,Altium Designer是一款功能十分强大的软件,我们所接触到和使用的它的功能仅仅是皮毛,所以课程设计结束之后,如果想进一步更深地理解PCB设计,还有很多的经验和技巧要学。为期两周的PCB课程设计让我对利用Altium Designer软件设计原理图和电路板的基本步骤有了初步的了解。

这次的课程设计与以往的有很大的区别,主要是自学教学视频和参考书,老师则给我们提供了学习的平台并随时进行答疑。这是一种新的学习方法,通过自学、同学之间相互交流以及老师的指导,提高了自身的自学能力。

在学习的过程中,我熟悉了利用软件设计系统的详细步骤,对原理图设计中的网络标号、端口号、电气规则检查和网络表等概念有了一定的了解,懂得了绘制印刷电路板的具体流程。除此以外,这次课程设计还加深了元器件封装的相关知识,并让我对于芯片的引脚、常用连接方式和功能有了深入的认识,受益匪浅。以下是我在绘制过程中的具体心得:

(1)画原理图的时候就要注意元器件的封装,这将比最后生成pcb图时再去检查要节省很多时间,原理图要严格按照所设计的电气关系连接。画图时要注意原理图的元器件编号和网络标号。原理图中NetLable摆放位置要注意,一定要把它放在有电气连接点的位置,如果把NetLable放在了管脚的中间,并没有构成电气连接,这样生成网表时根本就连不上。

(2)在原理图画好后要注意compile时meage框中显示的错误和警告,要耐心的一个一个读懂他们并且改正,这是一个整个原理图绘制过程中最能发现自己错误、总结经验的时刻,也是pcb设计中自我技能提升的时候,所以别怕错误多,错的越多,学的越多。

(3)一块好的PCB取决于好的布局。有经验的设计者在布局时一般都按电路

课程设计报告

功能分块布局。布局时尽量考虑布线方向和各种电源的相对集中性.如CPU跟其他元件的连接时IO口最好选择一定方向顺序选取,如顺时针,而不要将几个排在一起的如输入输出等在CPU上不按顺序选取而中间隔着其他信号,会增加布线的复杂程度。

除了学习上的收获,我还得到了许多经验与教训。初期,由于对器件知识的欠缺,我曾按照原理图所示将所有的去耦电容连接在一起,而不知道将它们并联到芯片周围。另外,在前期准备阶段不够仔细,导致许多元件的封装出现了问题,这也给后来印制电路板的设计带来了极大的不便。但“实践出真知”,这些教训也是本次课程设计极宝贵的经验。

六、主要参考文献:

[1] 史久贵.基于Altium Designer的原理图与PCB设计.机械工业出版社, 2009 [2].李珩.Altium Designer 6 电路设计实例与技巧.国防工业出版社, 2008 [3] 邹丽新 翁桂荣.单片微型计算机原理(第二版).苏州大学出版社, 2009

七、附录

第19篇:数字钟课程设计报告

一、综述

数字电子钟是一种用数字电路实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的应用。数字钟从原理上来讲是一种典型的数字电路,其中即包含了组合逻辑电路,也有时序电路。

因此,我们此次设计与制作数字电子钟就是为了了解其工作原理,从而学会制作数字钟。通过设计和制作数字电子钟,可以加深我们对中小规模集成电路相关知识的理解,并且通过实际运用,提高我们的动手能力、培养我们的探索精神。

二、设计题目与设计要求 1.设计题目

本次的题目为设计一个具有计时、显示“时、分、秒”和校时功能的数字电子钟,具体功能如下:

① 显示时、分、秒;

② 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; ③ 计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时; ④ 为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。 2.设计要求

本次设计的具体要求如下:

① 画出电路原理图(或仿真电路图); ② 元器件及参数选择; ③ 电路仿真与调试;

三、方案选择

数字电子钟作为实际生活中运用广泛的一个物品。在电路实现方面,完全可以用单片机实现功能。这也是我们小组一开始的思路。但是,由于我们小组的这道题本身就比较简单,如果还从用单片机来做,基本上就只是编个程序的事情了。如此,这个学期在数电课上学到的一些东西并不能得到很好的运用,老师也是基于此考虑,建议我们还是不要使用单片机。

因此,我们采用了老师提供的思路和方案,具体的阐述请见以下几个部分。

四、大体设计思路

1.总体概要设计

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。晶体振荡器电路给数字电子钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。然后分频器将32768Hz的高频方波信号经32768次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。通常使用石英晶体振荡器电路构成数字钟。图1所示为数字钟的一般构成框图。

“时”计时信号 “分”计时信号

校时信号

“秒”计时信号

图 1

数字电子钟原理框图

2.晶体振荡器电路

晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的脉冲,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。

3.分频器电路

分频器电路将32768Hz的高频方波信号经74HC4060和T’触发器(将D端接至输出的非端,使其变成一个T’触发器实现二分频)的分频后得到1Hz的方波信号,可以供秒计数器进行计数。分频器实际上也就是计数器。

4.时间计数器电路

时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器设计为24进制计数器。

5.译码驱动电路

译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。

6.示数电路

用译码驱动电路提供的电流带动数码管实现数字电子钟最后的示数部分。数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计采用的为LED数码管。

五、元件清单

30pF电容2个 32768Hz晶振1个 15k欧姆电阻4个 74HC4060一片

74LS74双D触发器一个 单刀双掷开关2个 1M电阻1个

74Ls00四二输入7个 74Ls192六片 74Ls48六片 共阴数码管6个 蜂鸣器一个

六、仿真电路图

根据上述思路,我们小组的各个成员分别负责了部分电路,在确认部分功能可以实现

的前提下,将它们有机地组合起来得到了总电路。并在proteus软件中进行了仿真,确定可以实现功能后,再申请了实做。

仿真电路总图见下:

七、各单元模块的具体设计和分析

1.晶体振荡器电路

晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。

图2所示电路通过CMOS非门构成的输出为方波的数字式晶体振荡电路,这个电路中,CMOS非门U1与晶体、电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波。输出反馈电阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器。电容C

1、C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能。由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。

晶体XTAL的频率选为32768HZ。该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数。

从有关手册中,可查得C

1、C2 为30pF时,频率准确度和稳定度较高。

由于CMOS电路的输入阻抗极高,因此反馈电阻R1可选为20MΩ或10MΩ。较高的反馈电阻有利于提高振荡频率的稳定性。但是,由于实验室只提供了1MΩ的电阻,所以在实际制作的过程中,我们采用的是实验室提供的电阻,最终造成了脉冲输出端的频率并不是严格符合1Hz。

图2 晶体振荡器电路图

2.分频器电路

通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡

器的输出信号进行分频。

通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现。例如,将32767Hz的振荡信号分频为1Hz的分频倍数为32767(2),即实现该分频功能的计数器相当于15级2进制计数器。

本实验中采用HC4060来构成分频电路。HC4060在数字集成电路中可实现的分频次数最高,而且HC4060还包含振荡电路所需的非门,使用更为方便。

HC4060计数为最高为14级2进制计数器,可以将32767Hz的信号分频为2Hz,而经过转换为T’的D触发器则可以通过翻转功能将它分为1HZ的信号。如图3所示,可以直接实现振荡和分频的功能。

1

5图3 分频电路图

3.时间计数单元

时间计数单元有时计数、分计数和秒计数等几个部分。

时计数单元一般为24进制计数器计数器,其输出为两位8421BCD码形式;分计数和秒计数单元为60进制计数器,其输出也为8421BCD码。

针对每个计数单元,本实验分别采取了用两块74LS192芯片进行级联来产生相应的进制。

74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下所示:

(a)引脚排列 (b) 逻辑符号

其中:为置数端,为加计数端,为减计数端,为非同步进位输出端, 为清除端,Q0、Q

1、Q

2、为非同步借位输出端,P0、P

1、P

2、P3为计数器输入端,Q3为数据输出端。

其功能表如下:

表1 74LS192的功能表

对于秒计数单元,由于192内部本身就是10进制,所以只需要将作为十位输出的那一片192的输出端中的Q2和Q1(相与代表作为得到数字6)作为反馈端,相与再连接到两片

192的清零端上即可。如此就可以实现60进制的计数。满足秒计数的要求。实现此功能的部分电路如图四所示:

图4 60进制计数器电路

对于分计数单元,与秒计数单元完全一致,在此不再累述。

对于时计数单元,同理,将作为十位输出的那一片的192的输出端中的Q1(代表数字2)和作为个位输出的那一片192的输出端中的Q2(代表数字4)作为反馈端,相与再连接到两片192的清零端上即可。如此就可以实现24进制的计数。满足时计数的要求。实现此功能的部分电路如图五所示:

图5 24进制计数器电路

4.译码驱动及显示单元

计数器实现了对时间的累计以8421BCD码形式输出,选用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,选用74LS48作为显示译码电路,选用共阴LED数码管作为显示单元电路,实现此部分的功能的电路如图6所示。

图6 译码驱动和显示电路

5.校时电路

当重新接通电源或走时出现误差时都需要对时间进行校正。通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可。

根据要求,数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。

图7 校正电路

6.整点报时电路

一般时钟都应具备整点报时电路功能,即在时间出现整点前数秒内,数字钟会自动报时,以示提醒。其作用方式是发出连续的或有节奏的音频声波,较复杂的也可以是实时语音提示。本次采用的是用蜂鸣器实现简单的鸣响。

根据要求,电路应在整点前10秒钟内开始整点报时,即当时间在59分51秒到59分59秒期间时,报时电路报时控制信号。故将秒计数电路部分的作为十位的那一片的192的输出端中的Q

2、Q0相与(即表示数字5),作为蜂鸣器的控制端1。再将分计数电路部分的作为十位的那一片192的输出端中的Q

2、Q0相与(即表示数字5),再和作为个位的那一片192的输出端中的Q

3、Q0相与(即表示数字9)相与,如此作为蜂鸣器的控制端2。最后,再将两个控制端相与,连接至蜂鸣器的一端,再将另一段接地即可。

八、心得体会

第20篇:CAD课程设计报告

学院:水资源与环境工程学院

班级:水文与水资源工程一班

姓名:高陶

学号: 东华理工大学

AutoCAD课程设计报告

1020310113

2012 年 06 月 16 日

一、课程设计内容:

扳手、三视图、虎钳底座俯视图

二、课程设计的要求:

1、添加所需要的图层,选择A3图纸,画好表格

2、按照规定的时间完成,过期未交将以不及格处理

3、按照所给图示绘制图形,要求图形美观整洁

4、按照所给图示标注图形文件

三、课程设计目的:

1.更加熟练的运用之前学到的CAD中的各种指令。2.为以后在各方面得到广泛的应用打下一定的基础。 3.学到更多的制图方法和操作技巧。

四、设计实现思路:

1、首先将绘图界限设成A3纸,设置不同图层

2、绘制扳手、三视图、虎钳底座。标注尺寸,完成平面图。

五、心得体会

开始学习CAD之前,我以为这是一门很复杂的科目,心里有过小小挣扎和害怕。所幸遇到的老师是一位风趣幽默的老师,我深深的喜欢上了CAD,特别是当你看着自己手上画出的一个又一个美丽的图形之后,那种满足和自豪是难以言喻的。

通过这次课程设计,让我进一步熟悉了CAD的基本操作,在绘图前必须要进行以下基本的操作, 进行各方面的设置是非常必要的,只有各项设置合理了,才为我们接下来的绘图工作打下良好的基础,才有可能使接下来“清晰”、“准确”、“高效”。如图形界限的设置采用的是A3图幅,在图层设置的过程中,需要按图上要求设置,图层的设置应遵循在够用的基础上越少越好。此外还

有颜色、线型、线宽等等设置都随层,这样会简单很多,但都需按照要求进行。

原来也从来没有画过建筑图,开始一看图觉得很难,后来画起来觉得没有想象中的难,所以这让我学到了不要只观其表,只要你愿意跨出第一步,以后也就容易多了。在标注应用方面也更加熟练了,在不断的练习下,能够快速的完成老师布置的任务。没接触AutoCAD的时候,什么都不会,通过一天的学习和训练,现在基本能够运完成一些二维图形,对我的基本操作技能是提高了不少,让我受益匪浅。

绘制这些图的时候,首先应该在画之前看好整体的布局,知道了这些图的基本格式,然后心里知道大致应该如何着手,然后按照要求一步步的画好。毕竟刚接触CAD,所以必须在课后的时候加强练习,才能在考试中尽快的完成老师的要求。这些图形虽然只是一些较简单的二维图形,但是还是要求我们仔细认真的完成,否则很容易出现小错误,这对以后我们完成其它的事情也是有帮助的,至少我们懂得了细心。

六、CAD感想

通过这一天的学习,使我对CAD有了进一步的了解。CAD不但用处很大,我们可以用它作出各种我们想要画的图来,简单易学,把那些基本的套路把握熟悉了以后,画图的过程就得心应手了,不管是在设置还是在标注上,都有了很大的提高。

不管以后画什么图,首先应该掌握的就是基础,而且各科学科是相通的,就像CAD和《工程制图》一样,两者有着紧密的联系。学习这玩意,不能打马虎眼,操之过急必能会导致不同程度的错误。循序渐进的学习是最好的。

图层就像是透明的覆盖图,运用它可以很好地组织不同类型的图形信息。严格做到层次分明,规范作图。

粗细要清楚。使用线宽,可以用粗线和细线清楚地展现出部件的截面,标高的深度,尺寸线以及不同的对象厚度。作为学员,一定要通过图层指定线宽,显示线宽。提高自己的图纸质量和表达水平。

不依规矩,不成方圆。在任何时候一幅工程图中,工程标注是不可少的重要部分,在某些情况下,工程标注甚至比图形更重要。没有标注图纸就相当一张废纸,拿到任何一个厂家,都不可能生产出所需要的部件。

虽然这次CAD在短短的一天时间内就结束了,可是却是我大学以来最感兴趣的一门学科。既然学校给开了这一门课程,虽然这对我们以后的工作或者生活是有用的。我们常说学以致用,CAD的学以致用就是把它联系到实际的工程设计中,当然,这需要我们自己继续努力!

《课程设计报告范文.doc》
课程设计报告范文
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

相关推荐

实施方案自查报告整改措施先进事迹材料应急预案工作计划调研报告调查报告工作汇报其他范文
下载全文