《软件工程导论》实验报告

合集下载

龙纯鹏组《软件工程导轮》实验报告系统设计

龙纯鹏组《软件工程导轮》实验报告系统设计

中国矿业大学(北京)软件工程导论实验报告课程名称:软件工程导论实验名称:银行计算机储蓄系统设计说明书班级:信息与计算科学(1)班组长:龙纯鹏组员:代喜白鑫刘永鸿侯佳意实验日期: 2014年4月9日指导老师姓名:王颖组内任务分配:龙纯鹏11107200110组长、主要负责可行性分析报告和需求分析报告代喜 11107200103 主要负责系统设计白鑫 11107200101 刘永鸿11107200210 主要负责编写代码侯佳意11107200106主要负责用户手册目录1引言 (2)1.1编写目的 (2)1.2背景 (2)1.3定义 (2)1.4参考资料 (2)2总体设计 (2)2.1需求规定 (2)2.2运行环境 (2)2.3基本设计概念和处理流程 (3)2.4结构 (3)2.5功能器求与程序的关系 (3)2.6人工处理过程 (3)2.7尚未问决的问题 (3)3接口设计 (3)3.1用户接口 (3)3.2外部接口 (3)3.3内部接口 (4)4运行设计 (4)4.1运行模块组合 (4)4.2运行控制 (4)4.3运行时间 (4)5系统数据结构设计 (4)5.1逻辑结构设计要点 (4)5.2物理结构设计要点 (4)5.3数据结构与程序的关系 (4)6系统出错处理设计 (5)6.1出错信息 (5)6.2补救措施 (5)6.3系统维护设计 (5)系统设计说明书1引言1.1编写目的在现代化社会中随着银行业的激烈竞争,如何更好的提高办事效率,降低成本,提高银行系统的电算化及现代化程度,充分满足客户的需求,提供更优质高效的服务,成为各银行正向追逐的目标。

因此,开发一套方便快捷,高效实用,安全稳定的银行储蓄系统软件,便成了银行的当务之急。

它的意义也就显得尤为重要了。

过去落后的银行操作系统已经不适应现代社会的需求了,伴随着银行业激烈的竞争,急需出现一套更符合银行需要的新一代银行储蓄系统。

1.2背景项目名称:银行计算机储蓄系统开发者:计041软件工程第一小组用户:××银行背景:为了以更高的服务质量让储户满意,提高业务效率,强调资金安全,完善风险防范意识,特此开发一套新的银行计算机存储系统。

软件工程导论实习报告

软件工程导论实习报告

一、实习背景随着信息技术的飞速发展,软件工程作为一门研究软件开发和维护的学科,其重要性日益凸显。

为了更好地理解和掌握软件工程的基本原理和方法,我参加了为期两周的软件工程导论实习。

本次实习旨在通过实际操作,加深对软件工程概念、方法、工具和过程的了解。

二、实习目的1. 熟悉软件工程的基本概念和原则。

2. 掌握软件开发的基本流程和方法。

3. 学习使用常用的软件开发工具。

4. 培养团队协作和沟通能力。

三、实习内容1. 软件工程基本概念在实习的第一周,我们学习了软件工程的基本概念,包括软件、软件工程、软件开发过程、软件质量等。

通过学习,我对软件工程的定义、目标和任务有了更清晰的认识。

2. 软件开发流程接下来,我们学习了软件开发的基本流程,包括需求分析、系统设计、编码、测试和维护等阶段。

通过实际案例分析,我了解了每个阶段的具体任务和目标。

3. 软件开发方法实习期间,我们学习了两种软件开发方法:瀑布模型和敏捷开发。

通过对比分析,我认识到敏捷开发在应对需求变更和快速迭代方面的优势。

4. 软件开发工具为了提高软件开发效率,我们学习了常用的软件开发工具,如版本控制工具(Git)、集成开发环境(IDE)、数据库设计工具等。

通过实际操作,我掌握了这些工具的基本使用方法。

5. 团队协作与沟通在实习过程中,我们分组进行软件开发项目。

通过团队协作,我学会了如何与他人沟通、协调和分工,提高了团队协作能力。

四、实习成果1. 完成软件开发项目在实习期间,我们分组完成了一个简单的软件开发项目。

通过实际操作,我掌握了软件开发的基本流程和方法,提高了编程能力。

2. 撰写实习报告为了总结实习经验,我撰写了这份实习报告。

通过回顾实习过程,我对软件工程有了更深入的理解。

3. 提高团队协作能力通过实习,我学会了与他人沟通、协调和分工,提高了团队协作能力。

五、实习体会1. 理论与实践相结合本次实习让我深刻体会到理论与实践相结合的重要性。

只有将所学知识应用于实际项目,才能真正提高自己的能力。

软件工程导论实验报告-白盒测试-黑盒测试

软件工程导论实验报告-白盒测试-黑盒测试

.《软件工程导论》实验报告学生姓名:学号:班级:指导老师:专业:实验日期:.白盒测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试形成初步了解,并养成良好的测试习惯。

熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。

二、实验内容:1、被测试程序功能:求解系数为整数的方程ax2+bx+c=02、程序定义:键盘输入 3 个数字 a,b ,c,求解方程 ax2 +bx+c=03、测试环境: Windows8.1 、Eclipse4、说明:本次测试采用插桩测试法,由于程序比较简单,手动输入测试用例。

四、实验步骤1、程序流程图开始输入 a, b, ca=0 Y Y Y无穷多解b=0 C=0NN NX= 无解N无解b2-4ac>=0.YX1=x2=结束2、代码:import java.util.Scanner;public class test {public static void main(String[]args ) {Scanner sc= new Scanner(System.in );System. out .println( "请输入 3个整数 a,b,c:" );String as;String bs ;String cs;int a=0;int b =0;int c=0;double x, x1 , x2 ;as= sc.nextLine();bs = sc.nextLine();cs= sc.nextLine();try {a=Integer.parseInt (as );b =Integer.parseInt (bs );c=Integer.parseInt (cs);}catch (Exception e){System. out .println( " 输入错误 ");System. exit (0);}if (a == 0){if (b == 0){if ( c == 0)System. out .println(" 无穷多解 " );elseSystem. out .println(" 无解 " );}else{x = -( c / b );System. out .println( "x=" + x);}}else{double h = b * b - 4 * a*c;if (h<0)System. out .println(" 无解 " );else{x1 = (- b + Math. sqrt (h )) / (2 * a);x2 = (- b - Math. sqrt (h )) / (2 * a); System. out .println( "x1=" + x1 + "\tx2="+ x2 );}}}}3、流图:.4、程序基本路径:(1) 1 2 3 4 5 11 预期输出:无穷多解(2) 1 2 3 4 6 11 预期输出:无解(3) 1 2 3 7 11 预期输出: x=(4) 1 2 8 9 11 预期输出: x1= x2=(5) 1 2 3 10 11 预期输出:无解5、测试实验用例:路径覆盖编号测试用例覆盖路径对应输出1a=0 ,b=0 , 1 2 3 4 5 11无穷多解c=02 a=0 ,b=0 ,c=1 1 234 6 11 无解3 a=0 ,b=1 ,c=1 1 2 3 7 11 x=-14 a=1 ,b=2 ,c=1 1 2 8 9 11 x1=-1x2=-15 a=1 ,b=1 ,c=1 1 2 3 10 11 无解黑盒测试一、实验目的黑盒测试是常用的软件测试的方法,用这种方法测试时,把被测试程序当作一个黑盒,在不考虑程序内部结构和内部特性,测试者只知道该程序的输入和输出之间的关系或程序的功能的情况下,依靠能反应这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结构的正确性。

软件工程试验报告

软件工程试验报告

软件工程试验报告第一篇:软件工程试验报告实验项目名称:需求分析(所属课程:软件工程概论)1.实验目的1.选择要设计的系统,使用UML进行需求分析,了解所要完成系统的功能需求,性能需求,接口需求等。

2.学习实使用Rational Rose 或其它软件工程工具绘制用例图、活动图。

2.实验内容使用Rose 绘制系统的用例图。

1.Rational Rose介绍Rational Rose是基于UML而产生的,是软件开发过程中的不可或缺的一个建模工具。

(1)Rational Rose的特点:λ支持多种语言,如Ada、CORBA、Visual Basic、Java等;λ支持模型的Internet发布;λ可以生成简单、清晰且定制灵活的文档;λ双向工程保证了模型和代码高度一致;λ支持逆向工程,建立代码框架;λ支持多种关系型数据库的建模;λ从需求分析到测试,在整个软件生命周期中,都为团队开发提供强有力的支持。

(2)Rational Rose的作用λ整个开发团队可以使用用例图,来获得一个系统高层次的视图,并且可以协商项目的范畴;λ项目经理可以使用用例图和文档,把项目分解成便于管理的多个模块;λ系统分析员和客户在看到用例规格描述文档的时候,就可以明白系统将会提供什么样的功能;λ技术编写者在看到用例规格描述文档时,就可以着手编写用户手册和培训计划;λ系统分析员和软件开发者在看到时序图和协作图时,就可以明白整个系统的逻辑流程、对象以及对象之间的消息2.安装Rational Rose ①双击Rational Rose 2007的安装程序,进入安装界面;按照系统提示一步一步完成系统的安装。

其中在选择安装产品时,选择“Rational Rose Enterprise Edition”;并且在设置创建程序位置时,选择创建一个本地的应用程序而非网络的,即选择“Desktop installation from CD”。

②安装成功,进入Rational Rose界面,如图1-1所示。

软件工程导论报告

软件工程导论报告

软件工程导论报告实验报告课程名称实验题目学生学号实验目的:本课程实验的教学目标在于通过绘制数据流图、实体关系图、用例图、状态图等实验,重点熟悉软件设计中的逻辑模型设计方法及其绘制工具软件,从软件工程角度理解和掌握软件设计开发过程。

实验条件:电脑一台、能上网查阅资料。

实验项目一熟悉软件工程工具 1.实验目的、任务:通过创建、编辑、保存一个简单的Visio图形文件,让学生学习掌握Microsoft Office Visio 的基本用法,掌握使用Microsoft Office Visio绘制业务流程图、数据流图、功能模块图、软件结构图和软件界面的方法。

2.实验基本要求:熟练应用Visio绘制软件开发图形的基本操作。

3.实验内容:打开Microsoft Office Visio,按照给出的业务流程图、数据流图、功能模块图、软件结构图和软件界面,绘制出相同的图形。

实验结果:软件工程姓名日期班级 2021-6-10 实验项目二绘制数据流图和实体关系图 1.实验目的、任务:能够根据业务描述,分析设计并绘制其数据流图和实体关系图。

2.实验基本要求:基本掌握数据流图和实体关系图的分析设计方法。

3.实验内容:银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

要求用数据流图描绘本系统的功能,并用实体关系图描绘系统中的数据对象。

实验结果:数据流图: E-R图:实验项目三绘制用例图和状态图 1.实验目的、任务:掌握用例图分析方法和绘制方法,掌握状态分析方法和状态图的绘制方法。

2.实验基本要求:能够根据业务描述分析绘制用例图和状态图,能够熟练使用绘图工具软件绘制出用例图和状态图。

软件工程导论实验报告航空订票系统设计

软件工程导论实验报告航空订票系统设计

“机票预订系统”的需求分析需求分析是开发软件系统的重要环节,是系统开发的第一步和基础环节。

通过需求分析充分认识系统的目标、系统的各个组成部分、各部分的任务职责、业务范畴、工作流程、工作中使用的各种数据及数据结构、各部门的业务关系和数据流程等,为系统设计打下基础。

需求分析的好坏往往决定了系统开发的成败。

需求分析从系统的调查研究入手,需求分析要对系统的各个方面有全面的了解,既包括系统内部的各个方面,也包括与系统有联系的各种外部因素。

通过调查研究和分析,对系统产生比较深刻的认识。

需求分析阶段的最终结果是“需求分析说明书”,它涵盖了对用户环境、事务处理和信息流程分析的一切成果,供项目开发小组和用户共同遵守。

如果采用瀑布模型,就要对“需求分析说明书”进行冻结,使它成为凝固可靠的基线。

万一要求变更基线,开发者和用户双方,都必须执行基线变更程序,此变更程序在合同中已做了明确规定。

现针对“机票预订系统”对机票预订部门的组织结构、业务流程、用户角色职能、系统数据流进行分析。

利用结构化分析和UML中的用例从大到小、从粗到细进行系统建模。

1、组织结构调查系统的组织结构,反映了单位内部各个部门的职责划分和它们之间的关系。

为了对系统有一个全貌性的了解,首先要对系统内部部门结构、人员组织及用户情况有所了解。

对系统组织结构的调查,是从总的方面对系统进行宏观了解和分析。

信息的流动关系是以组织结构为背景的,而且总是伴随着组织部门之间的资金流和物流的传递而产生。

机票预订系统的组织结构如图 1所示。

图1 系统组织结构图机票预订由机票预定部门全面负责,下设信息管理部、票务部、客服部三个部门的业务职责如下:●信息管理部:管理基本信息、主要包括旅客基本信息的查询、更改、删除;航班信息的添加、查询、更改、删除。

●票务部:管理各种票据,主要包括根据订票信息和航班信息打印账单和取票通知、核对账单和取票通知以及交款信息,无误则打印机票并发放。

●客服部:为订票旅客提供实时服务,主要包括投诉咨询受理,和售前售后支持。

软件工程导论实验报告材料

软件工程导论实验报告材料

软件工程导论实验报告一、实验题目:学生成绩管理系统、图书借阅管理系统、工资管理系统、网络订餐系统、招聘考试成绩管理系统二、实验目标通过独立完成项目开发,加深对软件开发分析过程的流程和方法的理解,建立软件工程的思想,同时,明确软件开发的成本和时间管理的相关概念。

实验一实验要求:①.在实验题目列出的几个系统中选择一个作为自己要开发的软件系统,要求该系统有明确的功能需求,并建立系统的分析模型。

②.对系统进行需求分析,掌握ER图、DFD、DD的设计与编写③.熟悉Visio环境和基本操作,制作一个简单的系统流程图和数据流图、主要数据项的数据字典描述及主要加工的逻辑说明(自己选择结构语言、判定树、判定表等)。

④.撰写需求分析规格说明书用户需求分析作为图书管理系统,其主要的需求人员是借阅者,借阅者对其的要求可以大体概括如下:1)能按各种方式,比如书名、编号、作者等查询图书馆的藏书情况;2)能熟悉使用图书管理系统;3)能方便地借阅图书、续借图书、归还图书;4)能查询自己的基本资料、借阅图书情况;5)能方便图书管理员对图书的录入登记、注销;6)能方便对新生的登记或注销已经毕业学生的信息;7)能及时发布一些学院学生借阅图书超期情况、馆内藏书情况等。

功能说明1)、读者管理系统(1)未注册者可以进入注册系统进行注册;(2)已注册借阅者可按姓名、编号或身份证号登陆进入借阅者检索系统查询借阅者情况;(3)、已注册借阅者可按书名、出版社或作者对图书信息进行检索查询或提出预约请求;2)、图书管理员管理系统(1)图书管理员通过图书管理员身份认证进入图书管理员管理系统;(2)读者可借阅在库图书;(3)在规定期限内借阅者归还借阅图书;(4)读者在不违规情况下可继续借阅已借阅图书;(5)读者可以预约图书。

3)、系统管理员管理系统(1)系统管理员通过系统管理员身份认证进入系统管理员管理系统;(2)系统管理员可以对图书进行图书管理(如:查询、删除、修改图书资料或图书分类查询修改、删除管理);(3)系统管理员可以对借阅者进行学生管理(如:查询、删除、修改借阅者信息或借阅者类别修改、删除管理,查询浏览借阅者详细资料,包括借阅次数,登陆次数,最后登陆时间);4)、罚款管理系统(1)罚款管理员通过罚款管理员身份认证进入罚款管理系统;(2)罚款处理可以读取借阅信息表再生成超时罚款信息表,通过超时罚款信息表可以生成罚款单给罚款管理员;(3)图书管理员告知罚款系统图书超时未还,经罚款管理员鉴定后,对图书进行注销处理且罚款管理员对借阅者进行罚款处理。

软件导论实验报告范文

软件导论实验报告范文

一、实验目的通过本次实验,使学生掌握软件工程的基本概念、原理和方法,了解软件开发的流程,提高软件设计和开发能力。

二、实验内容1. 软件工程的基本概念2. 软件开发的流程3. 软件需求分析4. 软件设计5. 软件测试6. 软件维护三、实验步骤1. 软件工程的基本概念(1)了解软件工程的定义:软件工程是一门研究软件开发、维护和管理的技术科学。

(2)了解软件工程的基本原则:抽象、模块化、信息隐藏、可复用性、可维护性等。

(3)了解软件工程的基本方法:需求分析、设计、编码、测试、维护等。

2. 软件开发的流程(1)了解软件开发的生命周期:需求分析、设计、编码、测试、部署、维护。

(2)了解每个阶段的主要任务和目标。

3. 软件需求分析(1)了解需求分析的方法:访谈、问卷调查、观察等。

(2)了解需求分析的工具:UML(统一建模语言)、用例图、需求规格说明书等。

(3)以一个实际项目为例,进行需求分析。

4. 软件设计(1)了解软件设计的方法:模块化、层次化、面向对象等。

(2)了解软件设计的工具:UML、ER(实体-关系)图等。

(3)以一个实际项目为例,进行软件设计。

5. 软件测试(1)了解软件测试的方法:黑盒测试、白盒测试、灰盒测试等。

(2)了解软件测试的工具:Junit、Selenium等。

(3)以一个实际项目为例,进行软件测试。

6. 软件维护(1)了解软件维护的类型:错误修复、功能增强、性能优化等。

(2)了解软件维护的方法:版本控制、代码审查、自动化测试等。

(3)以一个实际项目为例,进行软件维护。

四、实验结果与分析1. 通过实验,掌握了软件工程的基本概念、原理和方法。

2. 熟悉了软件开发的生命周期和每个阶段的主要任务。

3. 学会了使用UML、ER图等工具进行软件需求分析和设计。

4. 掌握了软件测试的方法和工具,能够对软件进行有效的测试。

5. 了解软件维护的类型和方法,能够对软件进行有效的维护。

五、实验心得1. 软件工程是一门实践性很强的学科,需要我们在理论学习的基础上,不断进行实践。

软件工程导论实验报告

软件工程导论实验报告

目录第一章可行性分析报告 (2)1.1 引言 (2)1.2 可行性研究的前提 (3)1.3技术可行性分析 (4)1.3.1系统简要描述 (4)1.3.2处理流程和数据流程 (4)1.4操作可行性分析 (4)1.5经济可行性分析 (4)1.5.1支出 (4)1.5.2效益 (5)1.5.3收益/投资比 (5)1.5.4投资回收周期 (5)1.5.5敏感性分析 (5)1.6法律可行性 (6)1.7结论 (6)第二章需求分析报告 (6)2.1引言 (6)2.1.1 编写目的 (6)2.1.2 项目背景 (6)2.1.3 定义 (6)2.1.4 参考资料 (6)2.2任务概述 (7)2.2.1 目标 (7)2.2.2 假定和约束 (6)2.2.3 人力、资金、时间的约束 (6)2.2.4技术发展规律的约束 (7)2.3需求规定 (8)2.3.1对功能的规定 (8)2.3.2对性能的规定 (8)2.3.3精度 (8)2.3.4时间特性要求 (9)2.3.5旅客信息 (9)2.4数据描述 (9)2.4.1数据特征 (9)2.4.2系统数据流图 (9)2.5 运行环境规定 (11)2.5.1服务器端子系统运行要求 (11)2.5.2客户端子系统运行要求 (11)第三章概要设计 (11)3.1引言 (11)3.1.1编写目的 (11)3.1.1项目背景 (11)3.1.1定义 (12)3.2任务概述 (12)3.2.1目标 (12)3.2.2运行环境 (12)3.2.3需求概述 (12)3.3总体设计 (13)3.3.1处理流程 (13)3.3.2客户机程序流程 (13)3.3.3总体结构设计 (14)3.3.4功能分配 (14)3.4 接口设计 (14)3.4.1外部接口 (14)3.4.2软件接口 (15)3.4.3硬件接口 (15)3.4.4内部接口 (15)3.5 数据结构设计 (15)3.5.1 数据库数据结构设计 (15)3.5.2物理结构设计 (16)3.5.3 数据结构与程序关系 (17)3.6 运行设计 (17)3.6.1 运行模块的组合 (17)3.6.2 运行控制 (17)3.6.3 运行时间 (17)3.7出错处理设计 (17)3.7.1出错输出信息 (18)3.7.2出错处理对策 (18)3.8安全保密设计 (19)3.9维护设计 (19)第四章详细设计 (19)4.1引言 (19)4.1.1编写目的 (19)4.1.2项目背景 (19)4.1.3文中定义和缩写 (20)4.1.4参考资料 (20)4.2总体设计 (20)4.2.1需求概述 (20)4.3程序描述 (21)4.4代码设计 (21)4.5测试项目说明 (22)4.5.1测试项目名称及测试内容 (22)4.5.2测试用例 (22)第五章基于面向对象技术的机票预订系统开发 (23)5.1引言 (23)5.2需求分析 (23)5.3UML系统建模 (24)5.3.1机票预订系统的用例分析 (24)5.3.2机票预订系统的域类分析 (24)5.3.3机票预订系统的功能设计 (25)5.4数据库分析 (25)5.4.1E-R图分析 (25)5.4.2创建数据库 (26)5.5界面设计 (26)5.6代码分析和实现 (26)5.7小结 (27)第六章测试 (27)6.1测试计划 (27)6.1.1 编写目的 (27)6.1.2任务概述 (27)6.1.3 计划 (28)6.1.4测试项目说明 (29)6.1.5 条件 (29)6.2 测试分析报告 (30)6.2.1编写目的 (30)6.2.2 测试计划执行情况 (30)6.2.3软件需求测试结论 (31)6.2.4评价 (31)6.2.5建议 (31)6.2.6 测试结论 (31)第七章程序维护手册 (31)7.1 引言 (31)7.2 系统说明 (33)7.2.1 系统用途 (33)7.2.2安全保密 (33)7.2.3总体说明 (33)7.3 维护过程 (33)7.3.1 规则 (33)7.3.2 验证过程 (34)7.3.3 出错及纠正方法 (34)7.3.4 专门维护过程 (34)7.3.5 程序清单及流程图 (34)第八章总结性报告 (35)8.1 过程 (35)8.2 总结 (35)第一章可行性分析报告1.1 引言航空公司为方便旅客乘机,需要开发一个新机票预定系统。

软件工程导论实验报告

软件工程导论实验报告
.
.
ER模型图
程序流程图
.
.
数据字典
图书管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述 清楚。在定义的图书管理系统数据字典中, 主要对数据流图中的数据项、 数据流、 数据存储和处理过程进行说明。 (1)数据项描述
1)数据项名称:借书证号 含义说明:惟一标识一个借书证 类型:字符型 长度: 50
.
.
逻辑关系:不允许为空 2)数据项名称:用户名 含义说明:读者的名称 类型:字符型 长度: 20 逻辑关系:不允许为空 3)数据项名称:密码 含义说明:对用户名和操作员管理员进行加密 类型:字符型 长度: 10 逻辑关系:允许为空 4)数据项名称:性别 类型:字符型 长度: 10 逻辑关系:允许为空 5)数据项名称:所在系别 类型:字符型 长度: 10 逻辑关系:允许为空 6)数据项名称:所在班级 类型:字符型 长度: 10 逻辑关系:允许为空 7)数据项名称:操作员名称 类型:字符型 长度: 30 逻辑关系:不允许为空 8)数据项名称:操作员简称 含义说明:惟一标识一个操作员 类型:字符型 长度: 10 逻辑关系:不允许为空 9)数据项名称:操作员级别 含义说明:对操作员和管理员进行区分 类型:字符型 长度: 10 逻辑关系:不允许为空 10)数据项名称:图书编号 含义说明:惟一标识一个图书 类型:字符型 长度: 10 逻辑关系:不允许为空 11)数据项名称:图书名称 类型:字符型
( 2)读者可借阅在库图书; ( 3)在规定期限内借阅者归还借阅图书; ( 4)读者在不违规情况下可继续借阅已借阅图 书; ( 5)读者可以预约图书。 3)、系统管理员管理系统 ( 1)系统管理员通过系统管理员身份认证进入 系统管理员管理系统; ( 2)系统管理员可以对图书进行图书管理 (如:查询、删除、修改图书资料或图书分类查询 修改、删除管理); ( 3)系统管理员可以对借阅者进行学生管理 (如:查询、删除、修改借阅者信息或借阅者类别 修改、删除管理,查询浏览借阅者详细资料,包括借 阅次数,登陆次数,最后登陆时间); 4)、罚款管理系统

《软件工程导论》实验报告(小组)

《软件工程导论》实验报告(小组)

《软件工程导论》实验报告学院:计算机科学与技术学院专业班级:指导教师:项目成员:项目课题:学校内部工资管理系统时间:2011年5月目录小组情况 (1)一、可行性分析报告 (2)1.1 引言 (2)1.1.1 编写目的 (2)1.1.2 背景 (2)1.2 可行性分析的前提 (3)1.2.1 要求 (3)1.2.2 开发目标 (3)1.2.3 条件、假定和限制 (3)1.2.4 可行性研究的方法 (4)1.3 技术可行性 (4)1.3.1 简要描述 (4)1.3.2 与现有系统的优越性比较 (4)1.4 经济可行性 (5)1.4.1 成本 (5)1.4.2 效益 (5)1.5 社会因素可行性分析 (6)1.5.1 法律方面的可行性 (6)1.5.2 操作可行性 (6)1.6 结论意见 (6)二、软件需求规格说明书 (7)2.1 背景材料 (7)2.2 功能需求分析 (7)2.2.1 管理员用户设置 (7)2.2.2 普通用户创建 (8)2.2.3 用户登录 (8)2.2.4 远程信息接收与传递 (8)2.2.5 信息提醒 (8)2.2.6 职工编号的判断 (9)2.2.7 职工工资的计算 (9)2.3 性能需求分析 (10)2.3.1 运行环境 (10)2.3.2 精度 (10)2.3.3 响应时间 (10)2.3.4 内存占用 (11)2.3.5 安全与更新 (11)2.3.6 故障处理 (11)三、数据流程图 (12)四、功能分析图 (13)4.1 员工工资标准模块 (13)4.2 工资统计模块 (13)4.3 财务处理模块 (13)4.4 职工工资查询模块 (13)4.5 登录用户管理模块 (14)4.6 人事管理模块 (14)4.7 员工出勤管理模块 (14)五、数据字典 (15)六、概要设计 (16)七、详细设计说明书 (17)7.1 编写目的 (17)7.2 背景 (17)7.3 系统的结构 (17)7.4 程序流程图 (18)7.4.1 用户注册 (18)7.4.2 用户登录 (20)7.4.3 人事管理 (21)7.4.4 员工工资查询 (21)7.4.5 员工出勤管理 (21)7.4.6 财务部管理 (22)7.5 程序部分代码 (23)7.5.1 用户注册 (23)7.5.2 用户登陆 (29)7.5.3 人事部管理 (33)7.5.4 财务部管理 (36)八、测试报告 (39)8.1 单元测试 (39)8.1.1 用户注册登陆测试 (39)8.1.2 人事部测试 (41)8.1.3 财务部测试 (44)8.2 黑盒测试 (45)8.2.1 测试用例表 (46)8.3 测试总结 (48)九、参考资料 (49)小组情况项目题目:学校内部工资管理系统项目成员:肖远昊、闫培、马瑞良、王高明项目负责人:王高明任务分配表一、可行性分析报告1.1 引言1.1.1 编写目的可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。

《软件工程导论》实验报告(推荐文档)

《软件工程导论》实验报告(推荐文档)

2011-2012(2)《软件工程导论》实验报告学院:计算机学院班级:软件工程114姓名:黄芳恺学号:119074258目录实验1:项目计划、分析和设计实验2;编码实验3:代码复查、编译实验4:项目测试总结软件工程导论实验一:项目计划、分析和设计[ 实验日期 ] 2012 年 4 月 20 日[ 实验目的 ]初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、设计文档。

[ 实验内容 ]贪吃蛇程序:贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物则表示食物被蛇吃掉,这时蛇的身体长一节,同时计1分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体,游戏结束。

根据编写贪吃蛇的游戏规则,我们利用c语言来进行编辑具体步骤,从而使游戏能够运行,根据编写贪吃蛇程序,掌握软件工程思想及要领,进一步巩固编程思想和掌握画图函数底层,依据项目可行性研究的结果,进行需求分析和设计,编写简要的需求规格说明书,绘制程序流程图。

[ 实验原理和步骤]当前的建模方法主要有传统的结构化分析、设计方法(SA/D)和面向对象分析、设计方法(OOA/D)两种。

分析阶段:结构化分析(SA)是一种建模技术,它通过一定方法帮助开发人员定义系统需要什么功能,系统需要存储和使用哪些数据,以及为完成这些功能,系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。

设计阶段:分总体设计和详细设计两阶段。

总体设计阶段的任务主要是确定系统由哪些模块组成,以及这些模块之间的相互关系;详细设计阶段的任务主要是设计每个模块的处理过程。

常用的结构化设计(SD)方法有面向数据流分析(DFA)的设计方法和面向数据的设计方法。

DFA设计技术实施的通用步骤:(1)复查并精化DFD;(2)确定DFD类型;(3)把DFD映射到系统模块结构,设计出模块结构的上层;(4)基于DFD逐步分解高层模块,设计出下层模块〈初步结构〉;(5)根据模块独立性原理,精化模块结构,得到更为合理的软件结构;(6)模块接口描述;(7)修改和补充数据词典;(8)制定测试计划。

软件工程导论实验报告

软件工程导论实验报告

软件工程导论实验报告软件工程导论实验报告导论软件工程是一门涉及软件开发、测试和维护的学科,它的目标是提高软件开发的效率和质量。

为了更好地理解软件工程的概念和实践,我们进行了一系列的实验。

本报告将介绍我们在软件工程导论实验中所学到的知识和经验。

实验一:需求分析在软件开发过程中,需求分析是至关重要的一步。

我们的第一个实验是对一个虚拟的在线购物系统进行需求分析。

通过与团队成员的合作,我们学习了如何收集用户需求、分析需求的重要性和优先级,并将其转化为软件功能和特性。

实验二:软件设计软件设计是软件工程的核心环节之一。

在第二个实验中,我们学习了不同的软件设计模式和架构,如MVC(Model-View-Controller)和微服务架构。

通过实际操作,我们掌握了如何将需求转化为软件设计图,并理解了设计决策对软件开发的影响。

实验三:编码与测试编码和测试是软件开发的具体实施阶段。

在第三个实验中,我们使用了常见的编程语言和开发工具,如Java和Eclipse,来实现我们的软件设计。

同时,我们还学习了测试的重要性,并使用JUnit等测试框架进行单元测试和集成测试。

实验四:软件项目管理软件项目管理是确保软件开发项目按时、按质量完成的关键。

在第四个实验中,我们学习了项目管理的基本原理和方法,如项目计划、进度跟踪和风险管理。

通过实践,我们意识到合理的项目管理可以极大地提高团队的工作效率和项目的成功率。

实验五:软件质量保证软件质量保证是确保软件产品符合用户需求和质量标准的重要环节。

在最后一个实验中,我们学习了软件测试的不同方法和技术,如黑盒测试和白盒测试。

我们还了解了软件质量标准和认证,如ISO 9001和CMMI。

总结通过这一系列的实验,我们深入了解了软件工程的各个方面。

我们学会了如何分析用户需求、设计软件系统、实施编码和测试,并掌握了软件项目管理和质量保证的方法。

这些实验不仅提高了我们的理论知识,也培养了我们的团队合作和问题解决能力。

软件工程导论实验报告

软件工程导论实验报告

一、实验目的本次实验旨在通过实践操作,加深对软件工程基本概念、原理和方法的理解,掌握软件生命周期各个阶段的基本知识和技能。

通过实验,培养学生运用软件工程理论分析和解决实际问题的能力。

二、实验内容1. 软件生命周期概述- 软件生命周期:软件从提出需求、设计、开发、测试、部署到维护的整个过程。

- 软件生命周期模型:常见的软件生命周期模型包括瀑布模型、螺旋模型、敏捷开发模型等。

2. 需求分析- 需求分析:分析用户需求,明确软件功能、性能、接口等方面的要求。

- 需求分析方法:常用的需求分析方法包括结构化分析、面向对象分析等。

- 实验任务:分析某学生信息管理系统的需求,撰写需求分析报告。

3. 软件设计- 软件设计:根据需求分析结果,设计软件的架构、模块、接口等。

- 设计方法:常用的设计方法包括面向对象设计、结构化设计等。

- 实验任务:设计某学生信息管理系统的架构和模块,绘制类图、序列图等。

4. 编码- 编码:根据设计文档,编写软件代码。

- 编程语言:选择合适的编程语言进行编码,如Java、C++、Python等。

- 实验任务:根据设计文档,使用Java语言实现某学生信息管理系统的主要功能。

5. 测试- 测试:对软件进行测试,验证其功能、性能、可靠性等方面是否符合要求。

- 测试方法:常用的测试方法包括单元测试、集成测试、系统测试等。

- 实验任务:对某学生信息管理系统进行测试,编写测试用例,验证其功能。

三、实验过程1. 需求分析- 分析某学生信息管理系统的需求,包括学生基本信息、课程信息、成绩信息等。

- 撰写需求分析报告,明确系统功能、性能、接口等方面的要求。

2. 软件设计- 设计某学生信息管理系统的架构和模块,包括学生管理模块、课程管理模块、成绩管理模块等。

- 绘制类图、序列图等,展示系统模块之间的关系和功能。

3. 编码- 使用Java语言实现某学生信息管理系统的主要功能,包括学生信息的增删改查、课程信息的增删改查、成绩信息的增删改查等。

《软件工程导论》实验报告(小组)

《软件工程导论》实验报告(小组)

《软件工程导论》实验报告学院:计算机科学与技术学院专业班级:软件1702指导教师:辛雨璇项目成员:张玉、秦飞虎、徐连成项目课题:学生签到系统时间:2019年3月目录《软件工程导论》 (I)小组情况 (1)一、可行性分析报告 (2)1.1 引言 (2)1.2 可行性分析的前提 (3)1.3 技术可行性 (4)1.4 经济可行性 (4)1.5 社会因素可行性分析 (5)1.6 结论意见 (5)二、软件需求规格说明书 (6)2.1 背景材料 (6)2.2 功能需求分析 (6)2.4 数据流图 (9)2.5 数据字典 (11)2.6 加工说明 (17)2.7 E-R图 (22)三、总体设计-结构图 sc图 (23)四、详细设计说明书 (23)4.1 编写目的 (23)4.2 背景 (23)4.3 系统的结构 (24)4.4 程序流程图 (24)4.5 程序部分代码 (27)五、测试报告 (36)5.1 单元测试 (36)5.2 黑盒测试 (42)5.3 测试总结 (44)小组情况项目题目:学生签到系统项目成员:张玉、秦飞虎、徐连成项目负责人:张玉任务分配表一、可行性分析报告1.1 引言1.1.1 编写目的可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。

经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排,明确开发风险及其所带来的经济效益。

本报告经审核后,交项目负责人审查。

1.1.2 背景随着教育事业的飞速发展,我国教育水平已经跃上了一个更高的平台:普及九年义务教育,本科生,硕士研究生的大量扩招,各高等院校及地州院校的新建与升级,越来越多的学子走进了大学的殿堂,这意味着学生的考勤签到管理信息越来越复杂、繁重,传统的签到系统已无法承担当前的信息量,快速、高效的完成学生签到考勤系统的任务,无法减轻签到考勤管理人员的工作量与工作压力。

软件工程导论,数据流图实验报告

软件工程导论,数据流图实验报告

软件工程导论,数据流图实验报告软件工程导论实验报告实验项目名称: Microsoft Visio 软件的使用实验项目名称:软件概要设计实验项目名称: 软件详细设计日期11月16日地点实验中心404实验项目名称:UML用例图的设计和制作日期地点实验项目名称:UML类图的设计与实现篇二:软件工程上机实验报告(1-10)SHANGHAI UNIVERSITY软件工程实验总结学学姓院计算机工程与科学学院号名10122050 王杰陈圣波 2014.03指导老师日期实验一软件工程标准化文档一、实验目的1(了解国家标准GB/T8567-20062(熟悉软件产品开发文件的基本内容二、实验内容1. 搜索和下载国家标准GB/T8567-2006。

2. 通过阅读国家标准GB/T8567-2006,将以下文字填写完整:3. 通过阅读国家标准GB/T8567-2006,填写以下表格:实验2 数据流分析【说明】某直达列车车票预售系统接受顾客的订票和取票业务。

1(顾客为了提前订票,可向系统提供个人信息及其预订购的车次和日期,系统根据个人信息是否齐全和车次是否正确来判断订票单是否合格。

对于合格的订票单,系统通过查找座位表审核相应的车次是否有剩余票。

如果有剩余票,则记录顾客个人信息以及订票信息,并向顾客提供取票单。

2(到了可以取票的时间,顾客向系统提供取票单,在检查单据合格的情况下,系统想顾客提供火车票。

3(售票员可以利用系统查询各车次车票的已订购、已售出和剩余情况。

【问题1】画出系统的顶层数据流图。

【问题2】对问题1的结果进行分解,画出0层和1层数据流图。

(1) 系统的顶层数据流图(2)0层数据流图篇三:软件工程实验报告本科实验报告课程名称: 软件工程实验项目: 机票预订系统实验地点: 软件实验楼专业班级:学生姓名:指导教师:2015年 5月10日太原理工大学学生实验报告机票预订系统需求规格说明书实验报告一、实验目的与任务目的:确定项目要做什么及其可实施性,在此基础上完成系统的逻辑功能模型的建立。

软件工程导论实验报告

软件工程导论实验报告

软件工程导论实验报告摘要本实验主要是通过学习软件工程导论中的基本概念和方法,以及软件项目管理的过程和方法,来实现一个简单的面向对象程序。

本报告主要介绍了本实验的背景和意义、实验过程和结果、以及实验的评估和总结。

背景和意义软件工程作为计算机科学的一个重要分支,已经成为了当今信息化时代的支撑和基础。

因此,对于软件工程的学习和实践尤其重要。

本实验作为软件工程导论的一部分,旨在通过实践操作来加深对软件工程基础知识的理解和应用,并在操作中锻炼编程和协作能力。

实验过程和结果本实验分为三个主要的步骤:需求分析、设计和编码、以及测试和维护。

在需求分析阶段,我们先明确了该程序的功能和性能,以及其面向的用户和运行环境。

在设计和编码阶段,我们采用UML模型设计方法,完成了类图、用例图和时序图等建模工作,并在此基础上进行了程序的编写和调试。

在测试和维护阶段,我们进行了功能和性能测试,并根据测试结果对程序进行了调整和优化。

经过以上的实验过程,我们达到了以下的实验结果:1.程序实现了预期的功能和性能,基本满足了用户的需求。

2.程序的设计和编码遵循了UML建模的规范和约束,易于理解和维护。

3.测试结果表明,程序的稳定性和可靠性较高,在运行过程中没有出现过重大的错误或问题。

评估和总结本实验是一个比较成功的实验,对于我们的学习和实践都具有一定的帮助和意义。

通过这个实验,我们掌握了一些基本的软件工程知识和方法,比如需求分析、UML建模、编码和测试等,并将其应用到了实际的软件开发中。

同时,我们还学习到了一些编程和协作的技巧和方法。

然而,本实验还存在一些不足之处,比如时间的紧迫性、人员的不足和指导的不够到位等。

这些问题对于实验结果的影响并不太大,但对于我们自身的学习和提高还是需要加以改进和完善。

总之,本实验是一个有益而有意义的实践活动,相信在今后的学习和实践中,我们将会更好地运用所学知识和方法,为软件工程的发展和应用做出更大的贡献。

软件工程导论实验报告【最新】

软件工程导论实验报告【最新】

软件工程导论实验报告姓名:张胜男学号:091842153班级:软件0941指导老师:李伟安徽工业大学工商学院1、开发背景近年来,随着数据库技术的迅速发展以及数据库管理系统的光反应用,人们利用信息技术工作和搜索数据的能力大幅度提高,千千万万的数据库被应用于商业管理、政府办公、科学研究和工程开发等方面,特别是多媒体技术、网络技术与数据库的结合,使数据库有了更大的发展空间。

本文就公司人事管理系统的设计与实现进行了认真的分析研究,结合工作环境和管理需求,建立了一个高效、稳定的人事管理系统,达到了先进、安全、实用、可靠的目标,并对今后新的需求有很好的扩展性。

(1)公司人事管理系统开发的目的随着公司规模的扩大,经济体制的快速发展,公司组织管理会变得越来越庞大和困难,而信息的处理与使用也变得越来越重要。

它的内容对企业的决策者和管理者来说都至关重要,所以,人事管理系统应能够为用户提供充足的信息和快捷的查询手段。

建立一套人事管理系统能够加快物资的周转速度,提高生产效率,加强管理的信息化手段,提高本单位的经济效益。

从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。

因此,开发这样一套管理软件成为很有必要的事情。

人事管理的对象是一个单位或若干单位种的员工的基本信息,这些信息是在变化的。

人事部门要为本单位、上级部门提供准确的统计数据。

由于人员众多、数据复杂、统计管理工作困难,以往每做一项工作,都需要花费很多的时间和精力。

传统的人工管理方式有诸如效率低,保密性差,查找、更新、维护困难等各种各样的缺点。

因此,人事管理系统能够味用户提供充足的信息和快捷的查询手段。

使用计算机对人事资料进行管理,会给应用者带来很多方便,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高人事管理的效率,同时,这也是企业的科学化、正规化管理以及与世界先进管理技术接轨的重要条件。

(2)公司人事管理系统的意义人的管理是一切管理工作的核心。

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

2011-2012(2)《软件工程导论》实验报告学院:计算机学院班级:软件工程114姓名:***学号:*********目录实验1:项目计划、分析和设计实验2;编码实验3:代码复查、编译实验4:项目测试总结软件工程导论实验一:项目计划、分析和设计[ 实验日期 ] 2012 年 4 月 20 日[ 实验目的 ]初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、设计文档。

[ 实验内容 ]贪吃蛇程序:贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物则表示食物被蛇吃掉,这时蛇的身体长一节,同时计1分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体,游戏结束。

根据编写贪吃蛇的游戏规则,我们利用c语言来进行编辑具体步骤,从而使游戏能够运行,根据编写贪吃蛇程序,掌握软件工程思想及要领,进一步巩固编程思想和掌握画图函数底层,依据项目可行性研究的结果,进行需求分析和设计,编写简要的需求规格说明书,绘制程序流程图。

[ 实验原理和步骤]当前的建模方法主要有传统的结构化分析、设计方法(SA/D)和面向对象分析、设计方法(OOA/D)两种。

分析阶段:结构化分析(SA)是一种建模技术,它通过一定方法帮助开发人员定义系统需要什么功能,系统需要存储和使用哪些数据,以及为完成这些功能,系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。

设计阶段:分总体设计和详细设计两阶段。

总体设计阶段的任务主要是确定系统由哪些模块组成,以及这些模块之间的相互关系;详细设计阶段的任务主要是设计每个模块的处理过程。

常用的结构化设计(SD)方法有面向数据流分析(DFA)的设计方法和面向数据的设计方法。

DFA设计技术实施的通用步骤:(1)复查并精化DFD;(2)确定DFD类型;(3)把DFD映射到系统模块结构,设计出模块结构的上层;(4)基于DFD逐步分解高层模块,设计出下层模块〈初步结构〉;(5)根据模块独立性原理,精化模块结构,得到更为合理的软件结构;(6)模块接口描述;(7)修改和补充数据词典;(8)制定测试计划。

详细设计阶段的任务主要是确定每个模块的处理过程,包括(1)确定每个模块的算法。

(2)确定每一个模块的数据组织。

(3)为每个模块设计一组测试用例。

(4)编写详细设计说明书。

详细设计阶段采用的方法是结构化程序设计(SP),与SA,SD方法衔接。

目标是给出可以直接用以编码的程序逻辑结构,强调清晰第一。

设计思路:这个程序的关键点是表示蛇的图形以及蛇的移动。

用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。

移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。

如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时,由于没有清屏的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。

食物的出现和消失也是画矩形块和覆盖矩形块。

为了便于理解,定义了两个结构体:食物和蛇。

[ 需求规格说明书]主要功能陈述:这是一款适合各年龄阶层小游戏,它可以使人们休息时的一种放松方式也可以是孩子们的娱乐游戏;另外对于一些对于有一定的C语言基础的,可以一边在玩的时候,感受在其中的编程思想并且自己进行尝试。

IPO图:数据字典:先进行蛇与食物的定义,再制定游戏中蛇的光标处理方法,初始化蛇的位置坐标,接着创建整个游戏的活动界面从而确定游戏的整体的框架。

初始化游戏的计分系统,设置初始化分数,再增加分数统计系统确立分数处理的方法。

接着编写游戏的规则,蛇的走动方法与吃到食物增长的处理以及游戏中碰壁或碰到自身的处理,最后进行对游戏失败的处理以及游戏的清屏处理。

[ 详细设计说明书]模块的文字描述:main()主函数:这是程序的大体流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数画出开始画面,调用函数,即玩游戏的具体过程与分数的增加,游戏结束后调用关闭图形系统清理屏幕,结束程序画界面函数:设计游戏的活动界面,就是一个密封的围墙加上一个数据处理界面,利用printf 来构建游戏的大体框架与各个部分的具体内容游戏具体过程函数:这一部分是游戏的重要组成,调用这个函数是游戏的主要部分,重点是一次次反复表示蛇与食物的新位置并进行对前一次的反复清屏。

采用的方法是每次移动的时候从最后一节开始到倒数第二节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可。

蛇的方向通过w a s d键进行控制数组的加减。

如果没有食物,随机出现食物;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃了自己,如果出现这两种情况之一,则蛇死,调用游戏结束函数结束本次游戏或重新开始。

如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。

如果有按键,则识别键值。

如果按键为Esc键则结束游戏,程序运行结束;如果所按键为方向键,则根据该键改变代表蛇方向的变量的值,要考虑相反方向键无效。

游戏结束函数:游戏结束,显示游戏结束信息。

HIPO图:[[注意事项]1.程序流程图应符合结构化思想:单入口、单出口。

[实验总结 ]通过本次试验让我加深了对程序设计的理解,对程序结构化设计有了进一步的认识,同时也是对自己编程思想的优化和编程能力的提高,认识到了如何将程序设计工程化,同时也发现了自己诸多问题,对软件工程思想没有很好的理解,以及IPO图和HIPO图的绘制与编写出现了问题,我觉得在画图之前首先要确定具体框架,然后根据框架进行补充。

此次试验让我发现了很多问题,我认识到编写任何程序无论难或易都要进行实验前的准备,对实验的步骤有个具体了解并且能够理清实验思路才能够进行实验。

这些发现让我能够及时的进行自我反思从而对自己进行相应的改进。

总体说,这次实验让我学到了很多宝贵的经验与思想,为以后打好基础。

软件工程导论实验二:编码[ 实验日期 ] 2012 年 4 月 20 日[ 实验目的 ]通过对本次贪吃蛇程序的编写,了解各种不同的编程方法和不同的编程风格,从而在这次实验以及以后学习过程中养成属于自己的良好的编程风格与编程方法技巧。

[ 实验内容 ]通过实验一的基础,先制定基本框架,然后在这个基础上详细的进行编注,整体按照相应的结构化思想编写代码,在相应的地方做出对自身的注释,从而能够使自己和他人能够更好的理解。

[ 实验原理和步骤]编码的原理包括几方面,首先编码风格要强调“清晰易读”,不能过分个性化或过多的插入个人技巧,要做到自己编的程序对于那些会编程的人都能够轻易理解并能够在不足的地方进行修改。

编码过程中要注意变量或函数的名字要赋予相应的意义,做到每个代码都有自己存在的意义与作用。

编码中的表达式和语句要一目了然,排版风格、循环语句风格要保持一致,使人在阅读你的程序是能够很快理解你要表达的意思与目的。

在函数宏的定义,常数的定义,注释方面要全面。

注释包括序言性注释、函数模块注释和程序语句注释。

[具体步骤]首先制定相应的程序框架,然后根据实验一种相应的模块进行相应的填充。

当整体程序基本成型后,再通过反复测试,找出其中的不足,进行不断地完善。

然后对程序中相应的模块与需要理解的地方进行合理的简洁的注释,使他人能够跟快的理解。

对每个函数前写模块注释,重要语句写功能性注释,变量或函数的名字要有意义,排版,从而使程序变得美观易懂。

[ 程序源代码]#include <stdio.h>#include <windows.h>#include <time.h>#include <conio.h>#include <stdlib.h>#include <string.h>int snake_len=1;//蛇的长度int snake_loc[50][2]={31,12};//整条蛇的位置,最长为50int snake_head[2]={31,12};//蛇头位置,初始值为11,12;int food[2];//食物位置char snake_direction='s';int delay=200; //蛇每delay个时间走一步int eat_flag=0;//1表示吃了食物,0表示未吃int liv_stat=0;//1表示死了,游戏该结束了;0表示还活着void gotoxy(int x, int y)//定位光标,x为行坐标,y为列坐标{COORD pos = {x,y};HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut, pos);}void hidden()//隐藏光标{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);}void init()//初始化{int i;snake_len=1;//蛇的长度snake_loc[0][0]=31;//整条蛇的位置snake_loc[0][1]=12;snake_head[0]=31;//蛇头位置,初始值为11,12;snake_head[1]=12;snake_direction='s';delay=200;eat_flag=0;liv_stat=0;for(i=1;i<50;i++){snake_loc[i][0]=0;//整条蛇的位置snake_loc[i][1]=0;}}void create_window()//创建窗口{gotoxy(0,0);printf("********************************************************************* ***********");printf("* * *");printf("* * *");printf("* * 分数:1 *");printf("* * 按键说明:*");printf("* * 上:w *");printf("* * 下:s *");printf("* * 左:a *");printf("* * 右:d *");printf("* * 暂停:空格*");printf("* * 退出:Esc键*");printf("* * *");printf("* * *");printf("* * *");printf("* * *");printf("* * *");printf("* * *");printf("* * *");printf("* * *");printf("* **");printf("* * *");printf("* * *");printf("* * *");printf("********************************************************************* ***********");}void update_score()//更新分数{gotoxy(73,3);printf("%2d",snake_len);}void create_food()//产生食物的位置{time_t t;srand(time(&t));while(1){food[0]=rand()%62+1;//生成1~62之间的随机数,其中random函数生成0~77之间的随机数food[1]=rand()%22+1;//生成1~22之间的随机数,其中random函数生成0~17之间的随机数if(food[0]!=snake_head[0]&&food[1]!=snake_head[1])break;}gotoxy(food[0],food[1]);printf("*");}void direction(){char keyhit=0,i;while(kbhit()!=0)keyhit=getch();if( ((keyhit=='a') || (keyhit=='d') || (keyhit=='w') || (keyhit=='s')) && (abs(snake_direction/16-keyhit/16)==1) )snake_direction=keyhit;else if(keyhit==' '){gotoxy(30,24);system("pause");gotoxy(30,24);for(i=0;i<19;i++)printf(" ");}else if(keyhit==27)exit(0);}void state()//判定蛇死没死{if(snake_head[0]<1||snake_head[0]>62||snake_head[1]<1||snake_head[1]>22)liv_stat=1; }void eat()//判定蛇吃没吃上,并对根据方向对蛇头位置进行更新{switch(snake_direction){case 'w': snake_head[1]--;break;case 's': snake_head[1]++;break;case 'a': snake_head[0]--;break;case 'd': snake_head[0]++;break;}if((food[0]==snake_head[0]) && (food[1]==snake_head[1]) ){eat_flag=1;switch(snake_direction){case 'w': snake_head[1]--;break;case 's': snake_head[1]++;break;case 'a': snake_head[0]--;break;case 'd': snake_head[0]++;break;}}}void show_snake()//更新蛇在屏幕中的位置{gotoxy(snake_head[0],snake_head[1]);printf("*");gotoxy(snake_loc[snake_len-1][0],snake_loc[snake_len-1][1]);printf(" ");}void update_maxtrix()//更新存储蛇位置的数组{int i;if(eat_flag!=1){for(i=snake_len-1;i>0;i--){snake_loc[i][0]=snake_loc[i-1][0];snake_loc[i][1]=snake_loc[i-1][1];}}else{snake_len++;if(snake_len>3 && delay>100)delay-=30;for(i=snake_len-1;i>1;i--){snake_loc[i][0]=snake_loc[i-2][0];snake_loc[i][1]=snake_loc[i-2][1];}snake_loc[1][0]=food[0];snake_loc[1][1]=food[1];eat_flag=0;create_food();update_score();}snake_loc[0][0]=snake_head[0];snake_loc[0][1]=snake_head[1];}void main(){int flag;long password=123456;int i=1;long pw;printf("请输入密码\n");scanf("%ld",&pw);if(password!=pw)while(1){i++;printf("密码错误\n请重新输入:");scanf("%ld",&pw);if(password==pw){printf("密码正确,欢迎使用\n");flag=1;break;}i f(i==3){printf("请稍后再试\n");flag=0;break;}}else{printf("密码正确,欢迎使用");f lag=1;LOOP:system("cls");init();create_window();hidden();create_food();while(1){int i;Sleep(delay);direction();eat();show_snake();update_maxtrix();state();if(liv_stat==1){for(i=1;i<snake_len;i++){gotoxy(snake_loc[i][0],snake_loc[i][1]);printf(" ");}gotoxy(food[0],food[1]);printf(" ");gotoxy(30,12);printf("Game over!\n");gotoxy(25,13);printf("继续请按y,退出请按n");while(1){i=getch();if(i=='y')goto LOOP;else if(i=='n')break;}break;}}}}[注意事项]1.模块的逻辑描述应该清晰第一、使用标准的、规范的控制结构、正确可靠[实验总结 ]通过对实验二的学习让我对程序的编写有了更深的理解也对编程的谨慎性有了更深层次的体会,即使在小的疏忽或错误都会影响整个实验的进行。

相关文档
最新文档