源程序清单流程图(1)
- 格式:doc
- 大小:37.56 KB
- 文档页数:2
.修道士与野人问题这是一个古典问题。
假设有n个修道士和n个野人准备渡河,但只有一条能容纳c人的小船,为了防止野人侵犯修道士,要求无论在何处,修道士的个数不得少于野人的人数(除非修道士个数为0)。
如果两种人都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出一个小船来回次数最少的最佳方案。
要求:(1)用一个三元组(x1,x2,x3)表示渡河过程中各个状态。
其中,x1表示起始岸上修道士个数,x2表示起始岸上野人个数,x3表示小船位置(0——在目的岸,1——在起始岸)。
例如(2,1,1)表示起始岸上有两个修道士,一个野人,小船在起始岸一边。
采用邻接表做为存储结构,将各种状态之间的迁移图保存下来。
(2)采用广度搜索法,得到首先搜索到的边数最少的一条通路。
(3)输出数据若问题有解(能渡过河去),则输出一个最佳方案。
用三元组表示渡河过程中的状态,并用箭头指出这些状态之间的迁移:目的状态←…中间状态←…初始状态。
若问题无解,则给出“渡河失败”的信息。
(4)求出所有的解。
1.需求分析有n个修道士和n个野人准备渡河,但只有一条能容纳c人的小船,为了防止野人侵犯修道士,要求无论在何处,修道士的个数不得少于野人的人数,否则修道士就会有危险,设计一个算法,确定他们能否渡过河去,若能,则给出一个小船来回次数最少的最佳方案。
用三元组(x1,x2,x3)来表示渡河过程中各个状态,其中,x1表示起始岸上修道士个数,x2表示起始岸上野人个数,x3表示小船位置(0——在目的岸,1——在起始岸)。
若问题有解(能渡过河去),则输出一个最佳方案。
用三元组表示渡河过程中的状态,并用箭头指出这些状态之间的迁移:目的状态←…中间状态←…初始状态,若问题无解,则给出“渡河失败”的信息。
2.设计2.1 设计思想(1)数据结构设计逻辑结构设计: 图型结构存储结构设计: 链式存储结构采用这种数据结构的好处:便于采用广度搜索法,得到首先搜索到的边数最少的一条通路,输出一个最佳方案,采用图的邻接表存储结构搜索效率较高。
河北工业大学软件工程课程实验实验报告题目:专业:班级:组:组长:成员:指导教师:完成日期:目录1项目开发计划书 (3)2软件需求规格说明书 (6)3设计规格说明书 (22)4 源程序清单 (35)5测试报告 (45)6用户手册 (48)一、项目开发计划书完成人:1.引言(Introduction)1.1项目概述(Project Summary)教学评估是教学管理的一项重要内容,如何科学地、全面地、客观公正地评估教师的师德水平和业务素质,是一项理论上和实践上都十分重要的工作。
教师测评系统通过学校学生对某一位教师的教学质量进行民主评估,评估结果和分析报表可以帮助学校领导及时全面的掌握全校教师教学业务状况,帮助教师进一步的改进教学方法,提高教学质量。
该系统充分利用学校现有的网络和教学资源,通过校园网络实现数据的采集和成绩的发布,是适合于高校的数据处理系统。
1.2 术语定义(Terms Glossary)文档中采用的专门术语的定义及缩略词简要如下:TMS:Teacher Evaluation System,教师测评系统。
1.3 相关文档(Related Documents)[1] 软件需求规格说明书[2] 设计规格说明书2.软件生存周期(Software Life Cycle)(1)项目生存期框图(2)项目生存期说明1.需求描述通过咨询系统用户建立系统的服务、约束和目标。
并对其详细定义从而成为系统描述服务。
2.组件分析给出需求描述,然后搜寻能满足需求的组件。
通常情况是,没有正好合适的组件以供使用,能得到的组件往往只提供所需要的部分功能。
3.需求修改在这个阶段,根据得到的组件信息来分析需求,然后修改需求以反映可得到的组件。
当不允许修改的时候。
组建分析活动可能要重新进行,以寻求其他可能的代替方案。
4.使用复用的系统设计在这个阶段,开始设计系统的框架,或者重复使用一个已存在的框架。
设计者分析这些被重复使用的组件并设计一个框架来组织这些组件。
课程设计一、实验目的1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。
2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。
3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。
二、实验要求1.问题描述准确、规范。
2.程序结构合理,调试数据准确、有代表性.。
3.界面布局整齐,人机交互方便。
4.输出结果正确。
5.正确撰写实验报告。
三、实验内容编写一个GUI程序实现日历的功能。
一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。
可以实现显示时钟,时钟能进行整点报时。
可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。
四、实验步骤1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。
2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。
3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。
4. 根据实验结果,写出合肥工业大学实验报告。
实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。
5.详细的上机实验步骤见任务分工及程序设计进度表。
五、实验结果经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。
程序设计流程图程序设计流程图程序设计的基本过程(1)分析需求:了解清楚程序应有的功能。
(2)设计算法:根据所需的功能,理清思路,排出完成功能的具体步骤,其中每一步都应当是简单的、确定的。
这一步也被称为“逻辑编程”。
(3)编写程序:根据前一步设计的算法,编写符合C++语言规则的程序文本。
(4)输入与编辑程序:将程序文本输入到计算机内,并保存为文,文名后缀为“.cpp”。
至此,产生了完整的程序文本,被称为源程序或源代码。
保存源程序的文(例如前面的c:\student\ch1_01.cpp)称为源程序文,简称源文,文名的后缀是“.cpp”。
(5)编译(pile):把C++程序编译成机器语言程序。
编译产生的程序称为目标程序,目标程序被自动保存为文,这一文称为目标文,文名的后缀是“.obj”。
VC++进行编译的依据是源程序,如果源程序中的符号、词语、整体结构等有差错,超出了VC++的“理解能力”,VC++就无法完成编译,这样的差错称为语法错误。
一旦发现语法错误,VC++就不生成目标文,并在窗口下方列出错误;如果没有语法错误,则显示“0 error(s)”,并生成目标文,允许继续进行后面的步骤。
编译没有出现错误,仅仅说明程序中没有语法错误。
(6)生成执行程序:从目标文进一步连接生成Windows环境下的可执行文,即文名后缀为“.exe”的文。
由于可执行文是由若干个文拼接而成的,其中不但有目标文,还有另一些标准的库文,一些规模较大的程序还会有多个目标文,所以这一步骤又被称为连接(Link)。
(7)运行:在Windows环境中使用可执行文。
这是程序设计的最终目的。
这一步也常被称为“Run”。
程序设计流程图。
目录1引言 (1)1.1标题 (1)1.2模块开发情况表 (1)2模块1(标识符) (3)2.1功能说明 (3)2.2原代码清单(标识符) (3)2.2.1子模块(Server) (3)2.2.2子模块(Login) (11)2.2.3子模块(MainWindow ) (14)3.模块2(标识符) (23)3.1功能说明 (23)3.2原代码清单 (23)3.2.1子模块1(TransInforR) (23)3.2.2子模块2(SelectFriends) (28)3.2.3子模块3(AddFriends) (31)4模块3(标识符) (35)4.1功能说明 (35)4.2原代码清单(标识符) (35)4.2.1子模块1(ChangeInfo) (35)4.2.2子模块2(ChangePwd) (40)4.2.3子模块3(Enrol) (43)4.2.4子模块4(AddUserid) (47)5号宋体(西文times new roman)1.5倍行距1引言1.1标题软件系统名称和标识符模块名称和标识符(如果本卷宗包含多于一个的模块,则用这组模块的功能标识代替模块名)1.2模块开发情况表扼要说明本模块(或本组模块)的功能,主要是输入、要求的处理、输出。
可以从系统设计说明书中摘录。
(自制表格,说明模块名称和标识符、程序编制员签名、修改完成日期)注意所有新章换页。
图的要求如下:图1-1 ××××××××图名居中,位于图下方,两级标号:章节号-序列号。
每章序号升序排列。
表的要求如下:表1-1 ××××××××表名居中,位于表上方,两级标号:章节号-序列号。
每章序号升序排列。
非异性表格的一律使用三线表。
如表格换页请拆分表格后加续表表头。
全文关于图表的要求同上。
概要设计说明书1.导言1.1 目的本文档的目旨在推动软件工程的规范化,对本系统的业务流程、软件架构、功能模块设计、数据库设计、接口设计等做了分析和说明,使设计人员遵循统一的软件设计规范,降低系统实现的风险,做到系统设计文档的规范性与全面性,以利于整个系统的实现、测试、维护等。
1.2 范围本文档用于软件设计阶段的概要设计,它的依据的基线是《需求分析规格书》,它的下游是《详细设计说明书》,并为《详细设计说明书》提供测试的依据。
软件概要设计的范围是:软件系统业务流程分析、总体结构设计、全局数据库和数据结构设计、外部接口设计、主要部件功能分配设计、部件之间的接口设计等方面的内容。
该范围应覆盖《需求规格说明书》中的功能点列表、性能点列表。
1.3 命名规则1.3.1 变量对象命名规则:1、局部变量:采用驼峰式命名规则,第一单词全小写,其他单词首字母大写。
例如:userName。
2、全局变量:首字母为大写的P,后面与局部变量的命名一致。
例如:PuserName。
3、函数名:。
采用驼峰式命名规则,第一单词全小写,其他单词首字母大写例如:addUser()。
4、常量:所有字母均要小写。
例如:name。
5、类:首字母为大写的C,其他的单词首字母都大写。
例如:CUser。
6、对象:与局部变量命名规则一致。
例如:userOne。
1.3.2数据库对象命名规则:1、数据库表名:采用驼峰式命名规则。
例如:cpInfo。
2、字段名:表名首字母小写加下划线加相应单词小写。
若表名首字母相同的,则在字段名的前两个字母为表名的前两个字母小写。
例如:u_name。
3、索引名:“index_”加相应的名称。
例如:index_name。
4、视图名:首字母为大写的V,后面加相应的名称。
例如:Vpest。
1.4 术语定义术语定义如表1所示。
表1 术语定义表1.5 参考资料[1] 用户需求报告[2] 软件开发合同[3] 数据库设计规范[4] 命名规范1.6 相关文档[1] 《详细设计说明书》[2] 源程序清单[3] 测试计划及报告[4] 《用户使用手册》2.业务流程分析2.1 业务流程分析依据前面的需求分析说明书,我们从整个系统中提取了普通用户和管理员两实体(操作员)。
目录实验一P1口输入、输出实验 (2)实验二继电器控制实验 (8)实验三音频控制实验 (11)实验四程序调试 (14)实验五5LED静态串行显示实验 (16)实验六6LED动态扫描显示实验 (21)实验七查询式键盘实验 (28)实验八阵列式键盘实验 (36)实验九计数器实验 (47)实验十定时器实验 (49)实验十一外部中断实验 (54)实验一P1口输入、输出实验一、实验目的1、学习P1口的使用方法2、学习延时子程序的编写和使用二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验(二):用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1、用导线分别连接P1.0、P1.1到两个拨断开关,P1.2、P1.3到两个发光二极管。
2、添加 P1_B.ASM源程序,编译无误后,运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为熄灭,向下拨为点亮。
四、流程图及源程序1.流程图2.源程序:(一)实验一ORG 0000HLJMP STARTORG 0030HSTART: MOV A, #0FEHMOV R2,#8OUTPUT: MOV P1,ARL AACALL DELAYDJNZ R2,OUTPUTLJMP STARTDELAY: MOV R6,#0MOV R7,#0DELAYLOOP:;延时程序DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPRETEND(二)实验二KEYLEFT BIT P1.0 ;定义KEYRIGHT BIT P1.1LEDLEFT BIT P1.2LEDRIGHT BIT P1.3ORG 0000HLJMP STARTORG 0030HSTART: SETB KEYLEFT ;欲读先置一SETB KEYRIGHTLOOP: MOV C,KEYLEFTMOV LEDLEFT,CMOV C,KEYRIGHTMOV LEDRIGHT,CLJMP LOOPEND五、思考题(1)对于本实验延时子程序Delay: MOV R6,0MOV R7, 0DelayLoop:DJNZ R6,DelayLoopDJNZ R7,DelayLoopRET如使用12MHz晶振,粗略计算此程序的执行时间为多少?六、电路图实验二继电器控制实验一、实验目的1、学习I/O端口的使用方法2、掌握继电器的控制的基本方法3、了解用弱电控制强电的方法二、实验说明现代自动控制设备中,都存在一个电子电路的互相连接问题,一方面要使电子电路的控制信号能控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路和电气电路提供良好的电气隔离,以保护电子电路和人身的安全。