软件工程大作业

合集下载

软件工程大作业

软件工程大作业

软件工程大作业软件工程大作业1. 引言软件工程是计算机科学与工程学的一个分支,主要研究如何以系统性的、可预测的方法开发、维护和管理软件。

在软件工程的学习过程中,大作业是一项重要的任务,旨在让学生通过实际项目的开发与管理来提高他们的技能。

本文档将介绍软件工程大作业的背景、目标和关键要点。

2. 背景软件工程大作业是软件工程课程的一部分,旨在让学生学会团队协作、项目管理和系统开发。

通过这个大作业,学生可以应用课堂学到的知识和技能,并将其实践于实际项目中。

3. 目标软件工程大作业的主要目标是培养学生的团队协作和项目管理能力,让他们能够在一个给定的时间内,按照预定的要求完成一个软件系统的设计和开发。

此外,本作业还旨在提供一个实际的应用环境,让学生了解软件工程实践中的挑战并学会解决问题。

4. 关键要点完成软件工程大作业需要学生掌握以下关键要点:4.1 团队协作学生将分组进行团队协作。

他们需要与团队成员一起合作,分工协作,共同完成项目的不同阶段。

团队协作能力对于软件工程项目的成功非常关键。

4.2 项目管理学生需要学会项目管理技巧,包括制定项目计划、设置里程碑、跟踪进度和风险等。

通过有效的项目管理,学生可以提高项目的执行效率并保证项目按时交付。

4.3 需求分析与设计学生需要进行需求分析和系统设计。

他们需要与项目的利益相关者沟通,理解他们的需求,然后转化为功能规格说明书和系统设计文档。

4.4 编码与测试学生将根据需求分析和系统设计文档进行编码与测试。

他们需要编写高质量的代码,并进行单元测试和集成测试,以确保软件系统的质量和稳定性。

4.5 项目交付和演示一旦开发和测试阶段完成,学生将交付最终的软件系统。

他们需要准备项目演示,并向老师和同学展示他们的成果。

5. 考核标准软件工程大作业的考核将根据以下标准进行评估:- 团队协作能力:团队成员之间的合作和沟通能力。

- 项目管理能力:项目计划的制定和执行效果。

- 需求分析与设计能力:需求分析和系统设计文档的准确性和完整性。

软件工程-课程大作业

软件工程-课程大作业
第9页,共18页。
管理员
持管理员用户名、密码登陆,验证正确后进入系统。
主要工作内容:
• 学生选课
• 开课管理 • 学籍管理 • 成绩管理 • 考务管理
第10页,共18页。
学生选课
学生持学号及密码登陆系统。学生忘记密 码可持有效证件到管理员处更改密码。 选课有一定期限。在有效期内,学生可选 课也可删除所选课程;过期则学生只有查 看的权限。 选课限制:某学期最多***课,大二前不能 选选修课等
任课教师/管理人员进行选课统计、打印
第11页,共18页。
开课管理
教师教学计划信息查询、处理和发布。 任课教师可以查询自己开设的课程,并进 行核准确认。
实现教材总库信息的查询、维护功能。
实现年度/学期开课目录信息的生成、查 询、维护。
制定分班计划、分配学号、分班调整以及查 看分班信息。 排课并制定课程表。
大作业选题3
银行客户关系管理系统
• 客户信息管理。 • 客户行为分析。
• 采用控制台应用程序,用符号示意各个地铁状 态即可。
第18页,共18页。
作业提交
每个组一个压缩文件, “学号1-学号2-学号3-学号
4.rar”
每个压缩文件包括两个文件夹和一个文本文件, 文件夹命名为“源代码”和“文档”,文本文件 命名为“说明.txt”
源代码文件夹中只要软件源代码,不要放编译好的 可执行程序 文档文件夹放以下文档:项目开发计划、需求说明 书、设计说明书、测试计划书、测试报告、项目总 结报告。 说明.txt放每个人在各阶段分工说明,格式为:
学号 姓名 项目计划 需求 设计 实现 测试
第4页,共18页。
大作业选题1
某学院教务管理系统
第5页,共18页。

软件工程大作业

软件工程大作业

软件工程大作业软件工程大作业引言本文档旨在介绍软件工程大作业的相关背景和要求,并提供一个实施计划,以便顺利完成该作业。

本作业旨在培养学生的软件工程实践能力,通过团队合作完成一个软件项目,涵盖项目规划、需求分析、设计实现、和部署等各个阶段。

1. 背景软件工程是开发高质量软件的一门学科,涵盖了软件开发过程的各个方面,包括需求分析、系统设计、编码、和维护。

软件工程大作业是对学生所学知识的综合应用,旨在让学生在一个团队环境中体验软件开发的全过程。

2. 作业要求软件工程大作业要求学生以小组形式合作,完成一个软件项目的开发。

作业要求如下:- 每个小组由3-5名成员组成,每个小组自行确定项目主题。

- 小组需要进行项目规划,包括项目目标、范围和进度计划等等。

- 小组需进行需求分析,明确系统的功能和非功能需求。

- 小组需要进行系统设计,包括系统架构设计和数据库设计等。

- 小组需要进行编码和单元,并进行代码评审。

- 小组需要进行系统集成,确保各个模块正确集成。

- 小组需要进行系统验收,并准备系统发布的相关文档。

- ,小组需要进行项目和经验分享。

3. 实施计划为了顺利完成软件工程大作业,下面是一个建议的实施计划:阶段一:项目规划(1周)在这个阶段,小组成员应该共同确定项目主题,并进行项目规划。

项目规划需要明确项目的目标、范围和进度计划等,以便在后续阶段进行参考。

阶段二:需求分析(2周)在这个阶段,小组成员需要进行需求分析,明确系统的功能和非功能需求。

可以采用面谈、问卷调查等方法收集用户需求,并将其进行整理和归类。

阶段三:系统设计(2周)在这个阶段,小组成员需要进行系统设计,包括系统架构设计、数据库设计等。

可以采用UML工具绘制系统的结构图、类图等,确保系统的设计满足需求。

阶段四:编码和(3周)在这个阶段,小组成员需要进行编码和单元,并进行代码评审。

编码过程中要遵循代码规范,确保代码质量。

,进行单元,及时发现和修复代码缺陷。

软件工程大作业

软件工程大作业

软件工程大作业
软件工程大作业
简介
项目背景
软件工程大作业是我们软件工程课程的重要组成部分。

通过这个项目,学生可以学习并实践软件工程的基本原理和方法。

项目目标
我们小组的项目目标是开发一个在线销售平台。

该平台允许用户购买和销售各种产品。

开发过程
需求分析
在项目开始之前,我们进行了需求分析。

我们与客户进行了需求讨论,并整理出详细的需求文档。

设计
基于需求文档,我们进行了系统设计。

设计包括了架构设计、数据库设计和用户界面设计。

开发
在设计完成后,我们开始了开发阶段。

我们采用了敏捷开发的方法,并利用Git进行版本控制。

我们小组分工合作,大部分功能模块都在预定的时间内完成。

测试
在开发阶段结束后,我们进行了系统测试。

我们通过编写测试用例并进行测试,确保系统的质量和稳定性。

部署
,我们将系统部署到服务器上,并进行了最终的测试和调试。

项目成果
经过几个月的努力,我们成功完成了项目的开发。

我们实现了一个功能强大且用户友好的在线销售平台。

该平台具有以下特点:用户可以浏览和搜索产品
用户可以下订单并完成支付
商家可以发布产品和管理订单
系统具有良好的性能和稳定性
在这个项目中,我们学到了很多软件工程方面的知识。

我们掌握了需求分析、系统设计、开发和测试等技术。

这对我们的软件工程发展将非常有帮助。

参考文献Smith, John. \。

软件工程大作业

软件工程大作业

软件工程大作业12201510程彩征题目:学院仪器设备管理系统1.用户登录模块,可以登录的用户有普通教师、仪器设备管理员和系统管理员。

2.设备的借用归还,当教师需要使用某种设备时,可提出借用申请,由设备管理员进行审批,审批通过后教师可到实验室领取该设备。

教师使用完该设备后,可归还该设备,设备管理员将该设备归还入库。

3.设备的请购和登记,当仪器库中无教师需要借用的设备时,可提出设备请购申请,由仪器设备管理员进行审批,批准后由管理员进行购买,并登记入库。

4.设备的报修,当设备出现故障时,教师和设备管理员都可以提出报修申请,由设备管理员将该设备送修,同时将该设备置为故障状态。

报修完成后,设备管理员将该设备置为正常状态。

5.设备的查询和统计,教师和设备管理员都可随时查询各种设备信息,可通过设备类型、设备名称、设备编号、设备状态等信息查询设备。

6.设备管理员可对设备进行统计,可按设备类型、设备状态、设备借用情况等进行统计。

7.消耗品的领用,系统中还有一类设备属于消耗器,该类用品教师领用后无须归还,只需在领用时进行登记,设备管理员进行相应的审批工作。

8.基础信息管理,系统管理员可对该系统的基础信息进行管理,如学院机构、教师信息、设备管理员信息、设备类型等基础信息进行管理。

9.用户个人信息查看和修改,每个用户登录后都可查看自己的个人信息,并能对其中的大部分信息进行修改。

需求分析:管理系统主要包括两大功能:用户模块:1.用户信息:用户可以查询自己的基本信息。

2.资料修改:用户的基本信息有时候会变化,比如联系电话等,对于这种情况就可以对资料及时修改更新。

设备管理模块:1.设备一览:查看所有的设备。

2.设备的添加和报废:对添加新增设备以及对报废的信息进行处理。

3.设备的维修和挑拨:对维修中的设备的详细信息进行管理以及对设备的挑拨几其信息管理。

4.设备的查询:根据设备的名称查询设备,设备的查询使用模糊查询,以及可能的把符合用户要求的设备展示给用户。

《软件工程》大题作业

《软件工程》大题作业

精品资料附加题:1、对下列子程序进行调试:procedure example(y,z: real; var x: real)beginif(y>1) and (z=0) then x:=x/y;if(y=2) or(x=l) then x:=x+l;end.该子程序接受 x, y, z 的值,并将计算结果x的值返回给调用程序。

答题要求:(1)画出流程图。

(2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准、预期结果以及路径。

答:( 1 )流程图(2 )用白盒法中条件组合覆盖设计测试用例:①y=2, z=0, x=4;②y=2, z=1, x=1;③y=1, z=0, x=2;④y=1, z=1, x=1.2 、某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。

系统日期规定由年、月的 6 位数字字符组成,前四位代表年,后两位代表月。

现要求用黑盒测试法中的边界值法写出测试用例。

答:输入条件测试用例说明测试数据报表日期的 1 个数字字符5类型及长度 5 个数字字符200357 个数字字符2003005有 1 个非数字字符2003.5全部是非数字字符MAY---6 个数字字符200305日期范围在有效范围200301边界上选取200812数据200300精品资料200813月份范围月份为 1月200301月份为 12 月200312月份 <1200300月份 >122003133、对以下程序进行测试:PROCEDURE EX (A,B:REAL ;VAR X: REAL );BEGINIF( A=3 )OR (B> 1 ) THEN X :=A ×BIF ( A>2 ) AND ( B=0 ) THEN X :=A -3END先画出程序流程图。

再按不同逻辑覆盖法设计一种(写出名称)测试数据。

软件工程大作业

软件工程大作业

软件工程大作业软件工程大作业一、引言二、目标软件工程大作业的目标是让学生们通过一个实际的项目,了解软件开发的整个过程,并培养其解决问题的能力和团队协作能力。

为了达到这个目标,大作业需要具备以下几个方面的要求:1. 实践性:大作业应该是一个实践性的项目,能够让学生们真正动手去做,并通过实际操作来巩固所学的知识。

2. 复杂性:大作业应该具备一定的复杂性,要求学生们能够面对实际的问题,并通过分析和解决来完成任务。

3. 团队协作:大作业可以以团队为单位来完成,这样可以培养学生们的团队协作能力和沟通能力。

4. 实际应用:大作业应该具备一定的实际应用价值,可以解决某个具体领域的问题。

三、需求分析在开始进行大作业的设计和实施之前,需要先进行需求分析。

需求分析是整个软件开发过程中的第一步,它的目的是明确用户对于软件的需求和期望。

在需求分析阶段,可以进行以下几个步骤:1. 问题定义:明确大作业所要解决的问题,并对问题进行描述和分析。

2. 用户调研:与潜在用户进行沟通,了解他们的需求和期望,进一步明确问题的范围和目标。

3. 功能需求:根据问题定义和用户需求,确定大作业所需要实现的功能,并进行详细的功能描述。

4. 非功能需求:除了功能需求外,还需考虑大作业的性能要求、安全性要求等非功能需求。

四、设计与实施在完成需求分析后,接下来是设计与实施阶段。

这个阶段可以分为以下几个步骤:1. 总体设计:在总体设计阶段,需要对大作业进行整体的设计,包括系统的架构设计、模块的划分和数据的设计等。

2. 详细设计:在详细设计阶段,需要对每个模块进行具体的设计,包括接口的定义、算法的选择和数据结构的设计等。

3. 编码实现:在编码实现阶段,可以根据设计文档进行编码,并通过测试来验证代码的正确性。

4. 系统测试:在系统测试阶段,可以对整个大作业进行综合性的测试,以确保系统的功能和性能达到要求。

五、软件工程大作业是一次实践性的项目,通过这个项目可以让学生们在实际的开发过程中学习和应用所学的软件工程知识。

软件工程大作业(答案)

软件工程大作业(答案)
辑模型; 86. 原型模型的优点是系统与用户见面快;开发成功率高,适合于需求不确定的大系统。但缺点也是
很明显的主要是:周期长,开发成本高; 87. 影响软件可维护性因素有三大方面可测试性、可修改性、可理解性。 88. 瀑布模型是以文档为驱动、适合于软件需求明确的软件项目的模型。 89. 软件概要设计的主要任务就是软件结构的设计。 90. 结构化程序设计方法是使用三种基本控制结构__构造程序。 91. 软件生存周期中时间最长、花费的精力和费用最多的一个阶段是_维护__阶段。 92. 对象之间进行通信的构造叫做__消息_____。 93. 为了便于对照检查,测试用例应由输入数据和预期的__输出结果____________两部分组成。 94. 软件概要设计的主要任务就是_软件结构的设计_______。 95. 维护阶段是软件生存周期中花费精力和费用___最多___的阶段。 96. 在面向对象方法中,人们常用状态图描述类中对象的___动态行为________。 97. 可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目__是否值得开发_____。 98. 需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是__功能需求______。 软
A、不能嵌套使用
B、只能用来写简单的程序
C、已经用硬件实现 D、只有一个入口和一个出口
110.软件生产过程中,需求信息由(D )给出。
A、程序员 B、项目管理者 C、软件分析设计人员 D、软件用户
111.分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描述了系统的(A )。
A、总貌
B、细节 C、抽象
聚。( ╳ ) 48. 概要设计阶段完成的主要文档是概要设计说明书。( √ ) 49. 详细设计是在概要设计之后进行的。它利用概要设计的结果,对系统中的每个模块给出足够的过

软件工程大作业

软件工程大作业

软件工程大作业软件工程大作业一、项目介绍本文档是针对软件工程大作业的项目介绍,主要包括项目背景、项目目标、项目范围及关键要素等内容。

1.1 项目背景软件工程大作业是软件工程课程的重要部分,旨在培养学生的软件开发能力、团队协作能力和项目管理能力。

该项目基于实际的软件开发需求,通过团队合作完成软件的开发过程,从而使学生在实践中熟悉和掌握软件工程的各个环节。

1.2 项目目标本项目的目标是通过实践培养学生的软件工程实践能力,包括需求分析、系统设计、编码、测试和部署等环节。

同时,通过团队合作,培养学生的项目管理和团队协作能力,提高解决问题的能力和沟通协调能力。

1.3 项目范围本项目的范围包括但不限于以下内容:- 确定项目需求和功能- 进行系统设计和架构- 编码和测试软件- 进行软件的文档编写和维护- 部署和发布软件1.4 关键要素在本项目的开发中,有一些关键要素需要特别关注:- 需求管理- 设计和构建- 测试和验证- 部署和发布- 文档编写和维护二、项目计划项目计划是项目管理的重要工具,它用于确定项目的目标、任务和时间安排。

在本项目中,我们需要合理地规划项目的进度,确保项目能按时完成。

2.1 项目任务在本项目中,我们将完成以下任务:1. 确定项目需求和功能2. 进行系统设计和架构3. 编码和测试软件4. 进行软件的文档编写和维护5. 部署和发布软件2.2 时间安排根据项目任务的复杂性和优先级,我们制定了以下时间安排:- 任务 - 开始日期 - 结束日期 ---- 确定项目需求和功能 - 2022-01-01 - 2022-01-10 -- 进行系统设计和架构 - 2022-01-11 - 2022-01-20 -- 编码和测试软件 - 2022-01-21 - 2022-02-20 -- 文档编写和维护 - 2022-02-21 - 2022-03-10 -- 部署和发布软件 - 2022-03-11 - 2022-03-20 -三、项目开发流程项目开发流程指的是从需求分析到软件交付的一系列环节。

大工22春《软件工程》大作业题目及要求(二)

大工22春《软件工程》大作业题目及要求(二)

大工22春《软件工程》大作业题目及要求(二)引言概述:《软件工程》大作业是大工22春学期课程的一部分,本文将介绍该作业的题目和要求。

本次作业旨在让学生运用所学的软件工程知识与技巧,设计和开发一个完整的软件系统。

以下将详细说明作业的题目和要求。

正文:1. 题目确定:1.1 系统功能需求:确定软件系统的基本功能需求,包括输入、处理和输出。

1.2 系统非功能需求:确定软件系统的非功能需求,如性能、可靠性、安全性等。

1.3 系统界面设计:设计软件系统的用户界面,包括布局、颜色和交互方式等。

1.4 数据库设计:设计软件系统所需的数据库结构和关系,包括表和字段的定义。

1.5 系统架构设计:确定软件系统的整体架构,包括模块划分和接口定义等。

2. 开发要求:2.1 项目计划:制定软件开发的时间计划,并按计划完成不同阶段的开发任务。

2.2 编码实现:根据题目要求和设计文档,使用合适的编程语言和工具进行编码实现。

2.3 单元测试:编写单元测试用例,验证软件系统的各个模块和功能的正确性。

2.4 集成测试:将各个模块集成,进行整体测试,并解决其中的问题和bug。

2.5 用户测试:邀请用户参与测试,收集用户的反馈意见,并进行相应的优化和改进。

3. 文档要求:3.1 需求分析文档:详细描述软件系统的功能需求和非功能需求,包括用例、流程图等。

3.2 系统设计文档:详细阐述软件系统的界面设计、数据库设计和系统架构设计等。

3.3 编码实现文档:记录编码实现过程中的思路、方法和遇到的问题及解决方案。

3.4 测试文档:描述软件系统的测试策略、用例和测试结果,包括单元测试和集成测试。

3.5 用户反馈文档:总结用户的测试反馈和意见,并记录相应的优化和改进措施。

4. 完成要求:4.1 完整性:软件系统需按照题目要求实现所有功能,并满足相应的非功能需求。

4.2 高质量:软件系统的代码规范、功能正确性和性能稳定性等方面达到高质量要求。

4.3 文档齐备:相应的需求分析文档、系统设计文档和测试文档等都需完成且齐备。

软件工程大作业:仓库管理系统

软件工程大作业:仓库管理系统

大作业组员: xxxxxxxxxx目录1整体功能 (4)1.1整体功能用例图 (4)1.2主要功能用例叙述 (5)2用户登录注册功能 (6)2.1用户登录注册功能用例图, (6)2.2用户登录注册功能类图 (6)2.3用户登录注册功能时序 (7)3用户在线浏览商品功能 (7)3.1用户在线浏览商品用例图: (7)3.2用户在线浏览商品类图 (8)3.3用户在线浏览商品时序图 (8)4仓库科发货功能 (9)4.1仓库科发货功能用例图 (9)4.3仓库科发货功能时序图 (10)5经理课管理账目功能 (10)5.1经理课管理账目功能用例图 (10)5.2经理课管理账目功能类图 (11)5.3经理课管理账目功能时序图 (11)6营业课查看订单功能 (12)6.1营业课查看订单功能用例图 (12)6.2营业课查看订单功能类图 (13)6.3营业课查看订单功能时序图 (13)7营业科接收订单 (14)7.1营业科接收订单用例图 (14)7.2营业科接收订单类图 (15)7.3营业科接收订单时序图 (15)8仓库购货功能 (16)8.1仓库购货功能用例图 (16)8.2仓库购货功能类图 (16)8.3仓库购货功能时序图 (17)9用户在线购买商品功能 (17)9.1用户在线购买商品功能用例图 (17)9.2用户在线购买商品功能类图 (18)9.3用户在线购买商品功能时序图 (18)10用户检查订单/退货功能 (19)10.1用户检查订单/退货功能用例图 (19)10.2用户检查订单/退货功能类图 (19)10.3用户检查订单/退货功能时序图 (20)11系统数据各表定义 (20)11.1管理员表 (20)11.2顾客表 (20)11.3订单表 (21)11.4供应商表 (21)11.5催款单表 (21)1整体功能1.1整体功能用例图主要参与者:客户、系统管理员、营业科、仓库科、经理科主要用例: 注册登录、客户在线浏览、客户在线购买、付款营业科查看订单并库存确认、营业科接受订单、仓库科取货发货、客户确认收货、客户检查订单、经理科管理账务、仓库科联系厂家1.2主要功能用例叙述客户注册账户, 填写个人信息。

软件工程大作业

软件工程大作业

软件工程大作业软件工程大作业1. 引言2. 作业目标本次大作业的主要目标如下:通过项目实践,学习软件工程的基本概念和方法。

熟悉软件开发的整个生命周期,包括需求分析、设计、实现、和维护等环节。

掌握团队合作的能力,学会分工合作、沟通协调,提升团队协作效率。

实践使用软件开发工具和技术,如代码版本控制、项目管理工具等。

3. 作业要求3.1 项目选择学生可以自由选择项目,但需要遵循以下要求:项目应具有一定的实际意义,可以是一个小型的实际应用,也可以是一个模拟的计算问题等。

项目难度需要适中,既能够挑战学生的能力,又不至于过于困难。

项目需要涵盖软件工程的各个环节,包括需求分析、设计、实现、和维护等。

学生需在规定的时间内完成项目。

3.2 项目管理为了保证项目的顺利进行,学生需要进行良好的项目管理,并按照以下要求进行:项目立项:确定项目的目标和需求,并进行项目计划的制定。

任务分配:根据项目计划,将任务合理分配给团队成员,确保每个成员都有明确的任务和责任。

进度跟踪:及时跟踪项目的进度和完成情况,并做好相应的记录和报告。

沟通协调:团队成员之间需要进行有效的沟通和协调,及时解决问题和调整计划。

3.3 文档撰写为了记录项目的详细过程和结果,每个学生需要按照以下要求完成相关文档的撰写:需求分析文档:明确项目的需求和目标,包括功能需求、性能需求等。

设计文档:详细描述项目的设计方案,包括系统结构、模块设计、接口定义等。

编码文档:记录项目的实现过程,包括代码注释、算法详解等。

文档:描述项目的策略和用例,记录结果和反馈。

维护文档:记录项目的日常维护情况,包括问题解决和优化措施等。

4. 评分标准根据学生的项目表现和文档质量,将综合评估每个学生的作业成绩。

评分标准如下:项目实现的功能完整性和正确性。

项目的设计合理性和模块化程度。

代码的可读性和结构清晰度。

的完备性和覆盖率。

文档的详细程度和规范性。

5.通过软件工程大作业的实践,学生可以将所学的理论知识应用到实际项目中,锻炼项目开发和团队合作的能力。

软件工程大作业

软件工程大作业

<软件工程——大作业>“网上鲜花销售系统”软件设计说明书姓名:田甜、郑裕集、马昊、翟静雨班级:计科0805学号:0909082721完成日期:2011-6-5指导老师:熊永华中南大学信息科学与工程学院目录1 引言 (1)1.1 编写目的 (1)1.2 范围 (1)1.3 定义 (1)1.4 参考资料 (2)2 项目概述 (2)2.1 产品描述 (2)2.2 产品功能 (2)2.3 用户特点 (5)2.4 一般约束 (5)2.5 假设和依据 (5)3 具体需求 (5)3.1 功能需求 (5)3.1.1 游客用例描述表 (5)3.1.2 会员用例描述表 (7)3.1.3 管理员用例描述表 (11)3.2 行为需求 (16)3.3 数据需求 (16)3.3.1 数据库设计 (16)3.3.2 表设计 (17)3.4 外部接口需求 (18)3.4.1 用户接口 (18)3.4.2 硬件接口 (18)3.4.3 软件接口 (18)3.4.4 通信接口 (18)3.5 性能需求 (18)3.5.1 精度 (18)3.5.2 时间特性要求 (19)3.5.3 输入输出的要求 (19)3.5.4 数据管理能力要求 (19)3.5.5 故障处理要求 (19)3.5.6 其它专门要求 (19)3.6 设计约束 (19)3.6.1 其他标准的约束 (19)3.6.2 硬件的限制 (19)3.7安全性 (19)3.9 可转移\转换性 (20)3.10 数据库 (20)4 总体设计 (20)4.1运行环境 (20)4.2基本设计概念和处理流程 (20)4.3系统结构 (20)4.3.1软件程序结构图 (20)4.3.2管理员模块 (21)4.3.3会员模块 (22)4.3.4游客模块 (23)4.4 接口设计 (23)4.4.1用户接口 (23)4.4.2外部接口 (23)4.5功能需求与程序的关系 (24)4.6人工处理过程 (29)4.7尚未问决的问题 (29)5 详细设计 (29)5.1系统数据结构设计 (29)5.1.1逻辑结构设计要点 (29)5.1.2物理结构设计要点 (31)5.1.3数据结构与程序的关系 (36)5.2模块设计说明 (36)5.2.1F0001模块描述 (36)5.2.2 F0002模块描述 (37)5.2.3 F0003模块描述 (38)5.2.4 F0004模块描述 (38)5.2.5 F0005模块描述.................................................................................. 3错误!未定义书签。

软件工程大作业(二)2024

软件工程大作业(二)2024

软件工程大作业(二)引言:软件工程大作业是一项重要的任务,要求学生根据所学知识和技能,设计和实现一个完整的软件系统。

该文档旨在概述软件工程大作业的内容,介绍其中的关键步骤和要点。

正文:一、需求分析1.1 了解用户需求和背景信息- 进行用户访谈,明确需求和期望- 调研类似系统,了解行业标准和最佳实践1.2 确定功能需求- 根据用户需求和背景信息,列出功能清单- 在团队中讨论和确认功能的优先级和可行性1.3 定义非功能需求- 确定性能要求,如响应时间和数据处理能力- 定义系统的安全和可靠性要求1.4 编写需求规格说明书- 将所有的需求整理、归纳和文档化- 确保规格说明书准确、清晰和可理解二、系统设计2.1 制定系统结构- 确定整体的系统结构,如分层架构或模块化设计- 确定系统的模块划分和模块间的接口2.2 设计数据库- 根据系统需求,设计适当的数据库结构- 定义数据表、字段和关系2.3 界面设计- 设计用户界面,确保用户友好和易用性- 使用工具创建原型和模拟界面,进行用户测试2.4 算法设计- 确定系统所需的算法和数据结构- 优化算法以提高系统的性能和效率2.5 编写详细设计文档- 将系统设计完整地记录下来,包括各个模块的详细设计三、编码和测试3.1 选择合适的编程语言和开发环境- 根据系统需求和团队成员的技能,选择最适合的工具 - 确保使用的编程语言和开发环境能够支持系统的需求 3.2 编写代码- 根据详细设计文档,逐个模块地编写代码- 遵循编码规范和最佳实践,确保代码质量3.3 进行单元测试- 针对每个模块编写相应的测试用例- 通过单元测试确保每个模块的功能正确和稳定3.4 进行集成测试- 将各个模块整合为一个完整的系统- 测试整个系统的功能和性能3.5 进行系统测试- 利用各种测试方法和技术对整个系统进行综合测试四、部署和维护4.1 部署系统- 准备服务器和网络环境,并安装所需的软件和配置- 将系统上线,确保可用性和稳定性4.2 系统的持续维护- 监控系统运行情况,及时解决问题和修复漏洞- 升级和扩展系统,以满足日益增长的需求五、总结通过软件工程大作业的设计和实现,我们加深了对软件开发全过程的理解。

软件工程大作业

软件工程大作业

软件工程大作业《小食品管理系统》需求规格说明书520项目小组修订表编号生成版本修订人修订章节与内容修订日期1 2 3 4 52审批记录版本审批人审批意见审批日期 1.0.03目录1. 引言...................................................................... (1)1.1. 目的 ..................................................................... . (1)1.2. 适用范围 ..................................................................... .. (1)1.3. 参考资料 ..................................................................... .. (1)1.4. 术语和缩略语 ..................................................................... .......................................... 1 2. 系统概述...................................................................... . (1)2.1. 产品描述 ..................................................................... .. (1)2.2. 产品功能 ..................................................................... .. (2)2.3. 一般约束 ..................................................................... .................................................. 2 3. 数据流程图...................................................................... (3)4. 功能要求...................................................................... . (4)4.1. 销售处理 ..................................................................... .. (4)4.2. 更新处理 ..................................................................... .. (4)4.3. 查询处理 ..................................................................... .................................................. 4 5. 系统的非功能性需求 ..................................................................... (4)5.1. 接口要求 ..................................................................... .. (4)5.2. 精度需求 ..................................................................... .. (4)5.3. 硬件的限制 ..................................................................... . (4)5.4. 系统的运行环境 ..................................................................... .. (5)5.5. 灵活性要求 ..................................................................... . (5)5.6. 故障处理要求 ..................................................................... .......................................... 5 6. E-R图和数据字典 ..................................................................... . (5)6.1. E-R图 ..................................................................... (5)6.2. 数据字典 ..................................................................... .................................................. 6 附录A:需求确认 ..................................................................... (9)451. 引言1.1. 目的本说明书将全面描述本系统的各种功能、运行环境,使用户和开发者双方对本系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。

软件工程大作业题目

软件工程大作业题目

软件工程大作业题目1.英汉小词典基本要求:实现类似“金山词霸”的英汉双向词典。

输入英文,显示词性、解释、音标和衍生词等。

输入中文,显示拼音和英文。

同时显示单词的索引,无需输入,只需点击就可查询。

高级要求:屏幕拾词2.围棋围棋是一种古老的运动,现在计算机大面积普及,围棋电子化也是一种大势所趋。

“围棋对弈”就是希望开发一个模拟现实中围棋对弈的软件平台,供人使用。

基本要求:实现围棋下子、提子、胜负判定功能,规则参照围棋界通用规则。

3.人机对弈(五子棋)基本要求:开发五子棋对弈的软件平台,进行人机对弈,实现下子和胜负判定功能,规则参照实际五子棋的通用规则。

4.游戏(挖地雷)Windows系统提供一个“挖地雷”的游戏,并具有高、中、低三个级别供用户选择。

用户按“开始”,系统进行计时,用户开始“挖”地雷,当把全部地雷都挖出,则获胜;只要碰到一个地雷就失败,只能从头开始。

地雷数目、分布位置随机产生,本游戏保存所有获胜盘的日期、开始和结束时间、地雷数。

游戏规则遵循Windows系统所提供的“挖地雷”游戏的规则。

5.计算器基本要求:Windows操作系统提供一个计算器,现要求开发一个能够完成Windows系统提供的计算器的所有功能。

高级要求:增强输入框的功能:用户可以在输入功能框中输入任何合法、非法的运算四则运算表达式,如果是合法表达式,计算器自动计算并显示结果,如果非法显示出错信息。

说明:1 合法的表达式:36.789*((23+68*45)-27/3747);2 非法的表达式:36.789*((23+68*45)-27/3747));67#67(3-2);6.源代码行数计数器基本要求:用户选择多个C或C++的程序文件,本软件能计算这些文件的源代码行数、空行行数和注解行数,计算结果显示并可保存在文件中。

高级要求:对C或C++程序进行美化,即按规则缩进,输出美化后的源程序文件。

7.画图板基本要求:实现MS Windows中“画图”软件的简单功能,包括用彩笔画直线、画矩形、画圆、用颜色填充一个区域、橡皮擦、颜色盒。

软件工程大作业题目

软件工程大作业题目

2xxxxxx班1、小区物业管理系统小区物业管理系统完成对小区公共财产等信息的管理。

功能需求可大致分为以下模块:①小区信息及财产管理②小区公告管理③小区收费管理2、超市管理系统超市管理系统主要完成对超市产品,库存等信息管理。

功能需求可大致分为以下模块:①超市员工信息管理②超市物品管理③超市库存管理④超市物品销售统计3、软件客户服务系统客户服务系统为软件购买客户及游客提供一个了解本公司信息的网络平台,客户可了解公司的开发团队及开发软件相关信息。

功能需求可大致分为以下模块:①软件及团队信息介绍②软件新闻及公告管理③软件常见疑难问题解答④软件开发工具及升级包下载4、学生学籍管理系统学生管理系统是对学生信息进行有效的管理功能需求可大致分为以下模块:①学生基本信息管理②学生成绩管理③学生奖罚管理5、教学设备管理系统教学设备管理主要完成对教学设备信息,设备采购库存信息管理。

功能需求可大致分为以下模块:①教学设备信息管理②教学设备库存管理③教学设备采购管理④教学设备报修及报废管理6、食堂管理系统食堂管理系统主要完成对食堂员工,菜类采购及相关事宜的管理。

功能需求可大致分为以下模块:①食堂员工及财产信息管理②食堂食物采购及库存管理③食堂每日菜价公告管理④食堂菜类统计7、飞机定票系统飞机定票系统主要完成对飞机航班信息及定票信息的管理。

功能需求可大致分为以下模块:①飞机航班信息管理②飞机订票管理③飞机退票管理8、班级网站班级网站主要是向外界充分展示班级风貌,向外界提供一个了解班级,参与班级活动的途径,本网站为班级成员提供了一个学习、交流、互动的一个平台。

功能需求可大致分为以下模块:①班级成员管理②论坛功能③聊天室④学习资料上传,下载管理9、网上购物系统顾客可以在网上选择他要购买的物品类型,顾客可通过汇款和邮寄方式进行商品交易。

功能需求可大致分为以下模块:①顾客信息管理②物品信息管理③顾客订购商品管理10、学生公寓管理系统学生公寓管理系统是院校的学生宿舍进行统一管理。

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

软件工程大作业交通灯控制系统2012年12月20日一、设计背景及需求分析 (2)1.设计背景 (2)2.需求分析 (3)二、系统设计 (3)1.总体设计 (3)2.可行性分析 (3)2.1 电源提供方案 (3)2.2单片机选择方案 (4)2.3键盘选择方案 (4)2.4交通灯选择方案 (4)2.5显示选择方案 (4)2.6成本分析 (4)3.总体设计 (4)3.1通行方案设计 (4)3.2软件流程 (6)三、模块设计及编码实现 (7)1.键盘芯片控制模块 (7)2.基于键盘的时间设置模块 (13)3.数码管显示模块 (17)4.蜂鸣器模块 (19)四、综合程序设计 (22)五、测试 (28)1.单元测试 (28)1.1测试目标: (28)1.2测试方法: (28)2.黑盒测试(功能测试) (28)2.1测试目标: (28)2.2测试流程: (28)六、总结 (30)参考文献: (30)一、设计背景及需求分析1.设计背景随着人口快速的增多,交通工具的爆炸性的发展,以及道路资源的有限性,交通控制就应运而生,在人类的生活、工作环境中,交通扮演着极其重要的角色,人们的出行都无时不刻与交通打着交道。

要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的技术手段加以实现。

电子科学技术的发展和成熟能比较好的解决系统建立中硬软件方面要求的技术难题。

目前,交通控制方面的研究能完全实现自动智能化,甚至将整个区域整合成一个统一的系统范围,还能根据正常时段以及特定突发时段的情况进行科学的自动调整。

交通对于社会的工业经济和人们的生活生产中有着十分重要的意义。

随着单片机和传感技术的迅速发展,自动检测领域发生了巨大变化,交通自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比,逐步取代传统的交通控制措施。

城市道路交通自动控制系统的发展是以城市交通信号控制技术为前导,与汽车工业并行发展的。

在其各个发展阶段,由于交通的各种矛盾不断出现,人们总是尽可能地把各个历史阶段当时的最新科技成果应用到交通自动控制中来,从而促进了交通自动控制技术的不断发展。

在近百年的发展中,道路交通信号控制系统经历了手动到自动,从固定配时到灵活配时,从无感应控制到有感应控制,从单点控制到干线控制,从区域控制到网络控制的长远过程。

交通控制研究的发展,旨在解决人类交通因需求的增多而日益繁重带来的问题,局限于道路建设的暂时不足和交通工具的快速增长,就要使更多的车辆安全高效的利用有限的道路资源,避免因无序和抢行等无控制原因造成的不必要阻塞甚至瘫痪,另外,针对整个交通线路车辆的多少实时调整和转移多条线路的分流也十分必要。

2.需求分析2.1实现交通信号灯(红灯、黄灯和绿灯)的基本定时控制。

2.2采用数码LED显示路口各个方向红灯、黄灯和绿灯的持续时间并进行倒计时提醒。

2.3可以通过键盘进行各个时间的设置。

实现对特殊需求的控制。

2.4实时检测车流量。

2.5闯红灯报警设置。

2.6换灯时进行声音提示。

二、系统设计1.总体设计本设计系统以单片机为控制核心,连接成最小系统,由车流量检测模块,违规检测模块,和按键设置模块等产生输入,信号灯状态模块,LED 倒计时模块和蜂鸣器状态模块接受输出。

图1 总体框图2.可行性分析2.1 电源提供方案为使模块稳定工作,须有可靠电源。

方案一:采用电池供电。

此方案随着能量的耗尽电压下降便导致电路供电异常,且需要的电池数量多,经济性差。

方案二:采用自制电源电路供电。

此方案提供稳定电压,且结构简单,制作方便,成本较低。

比较后选择方案二。

2.2单片机选择方案方案一:采用MSP430G2553。

此单片机的亮点是功耗较低,但其本身I/O接口数量少,不能满足系统需要,且价格较高。

方案二:采用AT89S52。

此单片机是一种较低功耗、高性能CMOS 8位微控制器,具有32位I/O接口线,有两个外部中断,两个定时器,能满足系统的基本需求,且价格较低廉。

比较后选择方案二。

2.3键盘选择方案方案一:一个I/O接口对应一个键。

浪费I/O接口,且设计的键数有限。

方案二:用zlg7289A键盘控制芯片组成键盘模块,zlg7289A具有串行接口,同时可连接多达64 键的键盘矩阵,单片即可完成键盘接口的全部功能,还具有多种控制指令。

比较后选择方案二。

2.4交通灯选择方案LED灯构造简单、成本低廉、技术成熟度高.故选LED灯做为交通灯。

2.5显示选择方案方案一:液晶12864。

价格较高,可视角度有限制,操作较复杂。

虽然具有显示字符图画等多种功能,但是在本系统中,只需要显示相应的数字,没必用液晶12864。

方案二:数码管。

数码管具有功耗较小,耐冲击,长寿命,价格低,响应速度快等优点。

比较后选择方案二。

2.6成本分析单片机7元、键盘模块15元、导线10元、数码管5元、显示灯2元、电路板15元。

总计54元。

3.总体设计3.1通行方案设计图2 交通状态图通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:①东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。

此状态下,东西向禁止通行,南北向允许通行。

②东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时5秒。

此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。

③南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20秒。

此状态下,东西向允许通行,南北向禁止通行。

④南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时5秒。

此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。

东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。

状态及红绿灯状态如表1所示。

说明:0表示灭,1表示亮。

3.2软件流程图4 软件流程1图5 软件流程2三、模块设计及编码实现1. 键盘芯片控制模块/******************************************************************** 键盘控制芯片头文件********************************************************************/#ifndef _TM1638_H_#define _TM1638_H_void delay_us();void delay_ms();void delay();void TM1638_Write(unsigned char DATA); //写数据函数unsigned char TM1638_Read(void); //读数据函数void Write_COM(unsigned char cmd); //发送命令字unsigned char Read_key(void); //读按键值void init_TM1638(void); //芯片初始化void LED_display(unsigned char ddata0,unsigned char ddata1,unsigned char ddata2,unsigned char ddata3, //显示按键unsigned char ddata4,unsigned char ddata5,unsigned char ddata6,unsigned char ddata7);#endif#define uchar unsigned char#define uint unsigned intuchar data disbuffer[8]={0,0,0,0,0,0,0,0};uchar code tab_key[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7 C,0x39,0x5E,0x79,0x71,0x40,0xef};uchar flag_break;uchar key_value;uchar red,green,time,yellow;void LED_display(uchar data0,uchar data1,uchar data2,uchar data3,uchar data4,uchar data5,uchar data6,uchar data7);sbit DIO=P3^5;sbit CLK=P3^6;sbit STB=P3^7;void delay_us(unsigned int time){while (time--);}void delay_ms(unsigned int time){while(time--) delay_us(100);}void delay( unsigned long cnt){unsigned int i = 0;while(cnt--){for (i = 0; i < 2; i++){}}}/******************************************************************** ***********************函数功能:向芯片写数据********************************************************************* **********************/void TM1638_Write(unsigned char DATA){unsigned char i;for(i=0;i<8;i++){CLK=0;if(DATA&0X01)DIO=1;elseDIO=0;DATA>>=1;CLK=1;}}/******************************************************************** ***********************函数功能:读芯片数据********************************************************************* **********************/unsigned char TM1638_Read(void){unsigned char i;unsigned char temp=0;DIO=1; //设置为输入for(i=0;i<8;i++){temp>>=1;CLK=0;if(DIO)temp|=0x80;CLK=1;}return temp;}/******************************************************************** ***********************函数功能:向芯片写命令字********************************************************************* **********************/void Write_COM(unsigned char cmd){STB=0;TM1638_Write(cmd);STB=1;}/******************************************************************** ***********************函数功能:读按键值********************************************************************* **********************/unsigned char Read_key(void){unsigned char c[4],i,key_value=0;STB=0;TM1638_Write(0x42);delay_ms(100);for(i=0;i<4;i++)c[i]=TM1638_Read();STB=1;if(c[0]==0x04) key_value=1;if(c[0]==0x40) key_value=2;if(c[1]==0x04) key_value=3;if(c[1]==0x40) key_value=4;if(c[2]==0x04) key_value=5;if(c[2]==0x40) key_value=6;if(c[3]==0x04) key_value=7;if(c[3]==0x40) key_value=8;if(c[0]==0x02) key_value=9;if(c[0]==0x20) key_value=10;if(c[1]==0x02) key_value=11;if(c[1]==0x20) key_value=12;if(c[2]==0x02) key_value=13;if(c[2]==0x20) key_value=14;if(c[3]==0x02) key_value=15;if(c[3]==0x20) key_value=16;return (key_value);}/*******************************************************************************************函数功能:芯片初始化*******************************************************************************************/void init_TM1638(void){unsigned char i;Write_COM(0x8a);//亮度Write_COM(0x8a);//亮度Write_COM(0x40); //写数据命令STB=0;TM1638_Write(0xc0);//写地址命令for(i=0;i<16;i++)TM1638_Write(0xff);STB=1;}/*******************************************************************************************函数功能:显示按键值*******************************************************************************************/void LED_display(unsigned char ddata0,unsigned char ddata1,unsigned char ddata2,unsigned char ddata3,unsigned char ddata4,unsigned char ddata5,unsigned char ddata6,unsigned char ddata7){unsigned char writedata0,writedata1,writedata2,writedata3,writedata4,writedata5,wri tedata6,writedata7;unsigned char data0,data1,data2,data3,data4,data5,data6,data7;data0=ddata4;data1=ddata5;data2=ddata6;data3=ddata7;data4=ddata0;data5=ddata1;data6=ddata2;data7=ddata3;writedata0=(tab_key[data0]&0x01)+((tab_key[data1]&0x01)<<1)+((tab _key[data2]&0x01)<<2)+((tab_key[data3]&0x01)<<3)+((tab_key[data4]&0x0 1)<<4)+((tab_key[data5]&0x01)<<5)+((tab_key[data6]&0x01)<<6)+((tab_ke y[data7]&0x01)<<7);writedata1=((tab_key[data0]&0x02)>>1)+((tab_key[data1]&0x02))+((t ab_key[data2]&0x02)<<1)+((tab_key[data3]&0x02)<<2)+((tab_key[data4]&0 x02)<<3)+((tab_key[data5]&0x02)<<4)+((tab_key[data6]&0x02)<<5)+((tab_ key[data7]&0x02)<<6);writedata2=((tab_key[data0]&0x04)>>2)+((tab_key[data1]&0x04)>>1)+ ((tab_key[data2]&0x04))+((tab_key[data3]&0x04)<<1)+((tab_key[data4]&0 x04)<<2)+((tab_key[data5]&0x04)<<3)+((tab_key[data6]&0x04)<<4)+((tab_ key[data7]&0x04)<<5);writedata3=((tab_key[data0]&0x08)>>3)+((tab_key[data1]&0x08)>>2)+ ((tab_key[data2]&0x08)>>1)+((tab_key[data3]&0x08))+((tab_key[data4]&0 x08)<<1)+((tab_key[data5]&0x08)<<2)+((tab_key[data6]&0x08)<<3)+((tab_ key[data7]&0x08)<<4);writedata4=((tab_key[data0]&0x10)>>4)+((tab_key[data1]&0x10)>>3)+ ((tab_key[data2]&0x10)>>2)+((tab_key[data3]&0x10)>>1)+((tab_key[data4 ]&0x10))+((tab_key[data5]&0x10)<<1)+((tab_key[data6]&0x10)<<2)+((tab_ key[data7]&0x10)<<3);writedata5=((tab_key[data0]&0x20)>>5)+((tab_key[data1]&0x20)>>4)+ ((tab_key[data2]&0x20)>>3)+((tab_key[data3]&0x20)>>2)+((tab_key[data4 ]&0x20)>>1)+((tab_key[data5]&0x20))+((tab_key[data6]&0x20)<<1)+((tab_ key[data7]&0x20)<<2);writedata6=((tab_key[data0]&0x40)>>6)+((tab_key[data1]&0x40)>>5)+ ((tab_key[data2]&0x40)>>4)+((tab_key[data3]&0x40)>>3)+((tab_key[data4 ]&0x40)>>2)+((tab_key[data5]&0x40)>>1)+((tab_key[data6]&0x40))+((tab_ key[data7]&0x40)<<1);writedata7=((tab_key[data0]&0x80)>>7)+((tab_key[data1]&0x80)>>6)+ ((tab_key[data2]&0x80)>>5)+((tab_key[data3]&0x80)>>4)+((tab_key[data4 ]&0x80)>>3)+((tab_key[data5]&0x80)>>2)+((tab_key[data6]&0x80)>>1)+((t ab_key[data7]&0x80));Write_COM(0x8a);//亮度Write_COM(0x40); //写数据命令STB=0;TM1638_Write(0xc0); //写地址命令TM1638_Write(writedata0);TM1638_Write(0x80);TM1638_Write(writedata1);TM1638_Write(0x00);TM1638_Write(writedata2);TM1638_Write(0x00);TM1638_Write(writedata3);TM1638_Write(0x00);TM1638_Write(writedata4);TM1638_Write(0x00);TM1638_Write(writedata5);TM1638_Write(0x00);TM1638_Write(writedata6);TM1638_Write(0x00);TM1638_Write(writedata7);TM1638_Write(0x00);STB=1;}2.基于键盘的时间设置模块#ifndef JIANPAN_H#define JIANPAN_Hvoid jianpan();#endifuchar flag_break;uchar red_init,yellow_init,green_init;uchar xiugai;uchar b[]={0,0};/******************************************************************** ***********************函数功能:将修改时间的十位存在b[0];个位存在b[1]********************************************************************* **********************/void fenwei(uchar xiugai_time){b[0]=xiugai_time/10;b[1]=xiugai_time%10;}/******************************************************************** ***********************函数功能:读按键,将修改的按键值存在init中********************************************************************* **********************/uchar xiugai_time(){uchar i=0;uchar init;uchar gewei,shiwei;gewei=0;shiwei=0;init=0;LED_display(0,0,0,0,0,0,0,0);while(i==0){xiugai=0;key_value=Read_key();delay1ms(50);switch(key_value){case1:xiugai=1;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case2:xiugai=2;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case3:xiugai=3;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 4:xiugai=0;break;case5:xiugai=4;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case6:xiugai=5;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case7:xiugai=6;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 8:xiugai=0;break;case9:xiugai=7;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case10:xiugai=8;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case11:xiugai=9;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 12:xiugai=0;break;case13:xiugai=0;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 14:xiugai=0;break;case 15:xiugai=0;break;case 16:xiugai=0;break;default:break;}shiwei=xiugai;delay1ms(50);}while(i==1){xiugai=0;key_value=Read_key();delay1ms(50);switch(key_value){case1:xiugai=1;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case2:xiugai=2;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case3:xiugai=3;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 4:xiugai=0;break;case5:xiugai=4;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case6:xiugai=5;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case7:xiugai=6;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 8:xiugai=0;break;case9:xiugai=7;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case10:xiugai=8;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case11:xiugai=9;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 12:xiugai=0;break;case13:xiugai=0;LED_display(xiugai,0,0,0,0,0,0,0);i++;break;case 14:xiugai=0;break;case 15:xiugai=0;break;case 16:xiugai=0;break;default:break;}gewei=xiugai;delay1ms(50);}init=shiwei*10+gewei;return(init);}/******************************************************************** ***********************函数功能:读键值,修改相应的时间********************************************************************* **********************/void jianpan(){uchar i=0;while(i<=1){key_value=Read_key();switch(key_value){case 1:flag_break=1;break;case 2:flag_break=1;break;case 3:flag_break=1;break;case4:red_init=xiugai_time();fenwei(red_init);LED_display(0,0,0,0,0,0,b[1 ],b[0]);i++;break;case 5:flag_break=1;break;case 6:flag_break=1;break;case 7:flag_break=1;break;case8:yellow_init=xiugai_time();fenwei(yellow_init);LED_display(0,0,0,0,0 ,0,b[1],b[0]);i++;break;case 9:flag_break=1;break;case 10:flag_break=1;break;case 11:flag_break=1;break;case12:green_init=xiugai_time();fenwei(green_init);LED_display(0,0,0,0,0, 0,b[1],b[0]);i++;break;case 13:flag_break=1;break;case 14:flag_break=1;break;case 15:flag_break=1;break;case 16:flag_break=1;i++;break;default:break;}}}3.数码管显示模块#ifndef PRINT_H#define PRINT_Hvoid time_print(uchar tdxred,tdxgreen,tnbred,tnbgreen);void jishu_print(uchar dx_jishu,nb_jishu);#endifuchar tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//采用共阳极数码管,分别表示0,1,2,3,4,5,6,7,8,9uchar print1[ ]={0x08,0x04,0x80,0x40}; //分别选中用于倒计时的数码管uchar print2[ ]={0x02,0x01,0x20,0x10}; //分别选中用于计数的数码管/******************************************************************** *********函数功能:倒计时显示********************************************************************* ********/void time_print(uchar tdxred,tdxgreen,tnbred,tnbgreen){uchar x;uchar i;uchar t[4];if(tdxred!=0){t[0]=tdxred/10;t[1]=tdxred%10;}else{t[0]=tdxgreen/10;t[1]=tdxgreen%10;}if(tnbred!=0){t[2]=tnbred/10;t[3]=tnbred%10;}else{t[2]=tnbgreen/10;t[3]=tnbgreen%10;}i=4;while(i--){P0=print1[i];x=t[i];P1=tab[x];delay1ms(1);}}/******************************************************************** ************函数功能:计数显示********************************************************************* ***********/void jishu_print(uchar dx_jishu,nb_jishu){uchar y;uchar i;uchar a[]={0,0,0,0};a[0]=dx_jishu/10;a[1]=dx_jishu%10;a[2]=nb_jishu/10;a[3]=nb_jishu%10;i=4;while(i--){P0=print2[i];y=a[i];P1=tab[y];delay1ms(1);}}4.蜂鸣器模块#ifndef FENGMINGQI_H#define FENGMINGQI_Hvoid delay_50us();void delay_8us();void delay_50ms();void delay_5s();void delay250us();void delay500us();void delay1ms(unsigned int i);void been_2KHZ();void been_1KHZ();void been_500KHZ();#endif#define uchar unsigned charsbit fmq=P2^6;void delay_50us() //延时50us{uchar i;for(i=0;i<6;i++){;}}void delay_8us(){uchar i;for(i=0;i<1;i++){;}}void delay_50ms(){uchar i,j;for(j=0;j<50;j++)for(i=0;i<125;i++){;}}void delay_5s(){uchar i=100;while(i--)delay_50ms();}void delay250us(){unsigned char j;for(j=0;j<22;j++) //250us基准延时程序 {;}}void delay500us(){unsigned char j;for(j=0;j<57;j++) //500us基准延时程序{;}}void delay1ms(unsigned int i){unsigned char j;while(i--){for(j=0;j<115;j++) //1ms基准延时程序{;}}}/******************************************************************** *************蜂鸣器报警部分********************************************************************* ************/void been_2KHZ() //产生2KHZ频率声音的函数(响0.2s){uchar i=250;while(i--){fmq=0;delay250us();fmq=1;delay250us();}}void been_1KHZ() //产生1KHZ频率声音的函数(响0.25s){uchar i=25;while(i--){fmq=0;delay500us();fmq=1;delay500us();}}void been_500HZ() //产生500HZ频率声音的函数(响0.25s){uchar i=12;while(i--){fmq=0;delay1ms(1);fmq=1;delay1ms(1);}}四、综合程序设计/******************************************************************** ***************工程名称:交通灯系统作者:赵晓梅赵叶茹王凤君徐秀慧张倩倩刘文超各个接口设置如下:数码管A~G——P0数码管位控制——东西*东西0——P0.0;*东西1——P0.1;*东西2——P0.2;*东西3——P0.3;数码管位控制——南北*南北0——P0.4;*南北1——P0.5;*南北2——P0.6;*南北3——P0.7;信号灯*P2.0——南北红灯*P2.1——南北黄灯*P2.2——南北绿灯*P2.3——东西绿灯*P2.4——东西黄灯*P2.5——东西红灯蜂鸣器*蜂鸣器——P3.4;键盘*DIO——P3.5;*CLK——P3.6;*STB——P3.7;车流量计数*东西计数——P3.2*南北计数——P3.3********************************************************************* **************/#include<reg52.h>#include<fengmingqi.h>#include<print.h>#include<TM1638.h>#include<jianpan.h>#define uchar unsigned charsbit flag_jianpan=P3^0;sbit flag_jianpan_LED=P3^1;uchar red,green,time;uchar nb_red,nb_yellow,nb_green,dx_red,dx_yellow,dx_green;uchar nb_jishu,dx_jishu,nb_jishu_before,dx_jishu_before;void main(){uchar jishu1,jishu2,tdxred,tdxgreen,tnbred,tnbgreen;uchar flag_fmq_g_y,flag_fmq_y_r;uchar flag_jianpan_before;/*************************************************************** 初始化***************************************************************/ nb_red=0x01;nb_yellow=0x02;nb_green=0x04;dx_green=0x08;dx_yellow=0x10;dx_red=0x20;red_init=10; //红灯亮时间初始化green_init=8; //绿灯亮时间初始化jishu1=0;jishu2=0;EA=1; //开总中断EX0=1; //允许使用外中断0EX1=1; //允许使用外中断1IT0=1; //选择负跳变来触发外中断0IT1=1; //选择负跳变来触发外中断1ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式1TH0=(65536-50000)/256; //定时器T0的高8位赋初值TL0=(65536-50000)%256; //定时器T0的高8位赋初值TR0=1; //启动定时器T0flag_jianpan_before=flag_jianpan;while(1){/************************************************************** 南北绿灯亮,东西红灯亮**************************************************************/ red=red_init; //红灯持续时间赋初值green=green_init; //绿灯持续时间赋初值flag_fmq_g_y=40; //由绿灯换黄灯蜂鸣器响的次数赋初值flag_fmq_y_r=40; //由黄灯换红灯蜂鸣器响的次数赋初值nb_jishu=0; //南北车流量计数赋初值dx_jishu=0; //东西车流量计数赋初值while(red!=0) //只要red没有减到零,则程序持续在南北绿灯亮东西红灯亮的循环中{tdxred=red; //将要显示的变量赋值tdxgreen=0;tnbred=0;tnbgreen=green;time_print(tdxred,tdxgreen,tnbred,tnbgreen); //调用倒计时显示函数,显示倒计时jishu_print(dx_jishu,nb_jishu); //调用车流量计数显示函数,显示计数值if(green==0) //如果绿灯倒计时减到零,则南北方向由绿灯换为黄灯{if(flag_fmq_g_y!=0) //如果是刚刚换灯则蜂鸣器报警,提醒用户{been_500HZ();flag_fmq_g_y--;}P2=nb_yellow|dx_red; //该状态下,南北黄灯亮,东西红灯亮delay1ms(1);}else //如果绿灯倒计时没有减到零,则南北绿灯亮{if(flag_fmq_y_r!=0) //如果是刚刚换灯则蜂鸣器报警,提醒用户{been_1KHZ();flag_fmq_y_r--;}P2=nb_green|dx_red; //该状态下,南北绿灯亮,东西红灯亮delay1ms(1);}if(flag_jianpan!=flag_jianpan_before) //检测键盘控制键是否有变化,若有,则执行键盘修改初值程序{jianpan();flag_jianpan_before=flag_jianpan;}if(dx_jishu!=dx_jishu_before) //东西红灯亮时,如果有车经过则蜂鸣器报警{been_2KHZ();dx_jishu_before=dx_jishu;}}delay1ms(1);/************************************************************** 东西绿灯亮,南北红灯亮**************************************************************/ red=red_init;green=green_init;flag_fmq_g_y=40;flag_fmq_y_r=40;nb_jishu=0;dx_jishu=0;while(red!=0){//南北红灯,东西绿灯tdxred=0;tdxgreen=green;tnbred=red;tnbgreen=0;time_print(tdxred,tdxgreen,tnbred,tnbgreen);jishu_print(dx_jishu,nb_jishu);if(green==0){if(flag_fmq_g_y!=0){been_500HZ();flag_fmq_g_y--;}P2=nb_red|dx_yellow;delay1ms(1);}else{if(flag_fmq_y_r!=0){been_1KHZ();flag_fmq_y_r--;}P2=nb_red|dx_green;delay1ms(1);}if(flag_jianpan!=flag_jianpan_before){jianpan();flag_jianpan_before=flag_jianpan;}if(nb_jishu!=nb_jishu_before){been_2KHZ();nb_jishu_before=nb_jishu;}}}}/************************************************************** 函数功能:定时中断服务程序**************************************************************/ void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;time++;if(time==20) //计时一秒则红灯减一,绿灯减一{if(red!=0){red--;}if(green!=0){green--;}time=0;}}/**************************************************************函数功能:外中断T0的中断服务程序**************************************************************/void int0(void) interrupt 0 //外中断0的中断编号为0{dx_jishu_before=dx_jishu;dx_jishu++;}/**************************************************************函数功能:外中断T1的中断服务程序**************************************************************/void int1(void) interrupt 2 //外中断1的中断编号为2{nb_jishu_before=nb_jishu;nb_jishu++;}五、测试1. 单元测试1.1测试目标:检测每一单元是否正常工作,各状态跳转是否能正常进行。

相关文档
最新文档