基于WEB的停车场管理系统的设计和实现【附源码】

基于WEB的停车场管理系统的设计和实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

摘 要
随着现代社会的快速发展,人民生活水平快速提高,汽车的数量飞速增加,与此同时停车问题也越来越受到人们的关注,为了实现对停车场进行有效的管理,结合一些停车场的模式和现状开发出本停车场管理系统。
停车场管理系统是典型的信息管理系统,本停车场管理系统设计的主要功能包括场内车辆管理和后台数据库管理,其中场内车辆管理又分为出入场管理模块、收费模块、用户管理模块、停车场参数、停车场数据管理模块、系统管理模块等。我们从系统的设计和功能实现方面阐述了管理系统软件的开发过程。
系统采用了B/S架构,Tomcat6.0作为运行服务器,基于J2EE标准、JSP技术利用Hibernate3.1和Struts1.2框架作为开发工具,MyEclipse6.0开发环境,数据库采用Microsoft SQL Server 2000。开发过程利用MVC开发模式,层次分明。成功实现了该系统。试运行结果表明,该系统具有良好的性能和扩展性,较高的响应速度和效率,该系统符合实际的停车场管理系统,为停车场管理供一个快速,简单规范的管理平台。这对提高信息化程度,降低人力成本有着重要的意义。
关键词:停车场管理系统,J2EE,Hibernate3.1,Struts1.2

Abstract
With the rapid development of modern society, people’s living standards improve and the number of vehicles increases rapidly. People pay more attention to parking problems at the same time. In order to manage the parking lots more efficiently, we have developed a Parking Management System, with some modes and the actuality of present parking lots considered.
Parking Management System is typically one of the information management systems. The main functions in the Parking Management System include vehicle management and background database management, and vehicle management is divided into the passing in and out module, the charging module, the user management module, the parking parameters, parking data management module, and the system management module. We discussed the management systems development process from the system design and function of the realization in the Papers.
Tomcat6.0 as a running server is used in this system on the basis of B/S structure. Based on J2EE standards, JSP technology as development tools which is taken advantage of Hibernate3.1 and Struts1.2 framework and MyEclipse6.0 as development environment are applied in the system. Microsoft SQL Server 2000 is used as background database. We develop the use of MVC pattern in development process. Test results show that the system has good performance and scalability, high response speed and efficiency which is in line with the actual park management system and can provide a fast, simple and standardized management platform. It is important to improve the information level and reduce labor costs.
Key words: parking management system, J2EE, Hibernate3.x, Struts1.2

目 录
摘 要 I
Abstract II
目 录 III
第一章 绪论 1
1.1 选题背景 1
1.2 主要相关技术 1
1.2.1 Struts技术 1
1.2.2 Hibernate 2
1.2.3 JSP(Java Server Pages)技术 2
1.2.4 J2EE 2
1.2.5 MVC 2
1.2.6 JavaScript技术 3
第二章 系统分析 4
2.1 系统分析 4
2.1.1 功能需求分析 4
2.1.2 系统流程分析 5
2.2 技术可行性分析 5
2.2.1 系统数据模型层的分析与设计 6
2.2.2 系统视图层的设计与分析 6
2.2.3 系统控制层的分析与设计 6
第三章 系统总体设计 8
3.1 系统设计 8
3.1.1 总体设计 8
3.1.2 业务流程分析 8
3.1.2 系统功能模块 9
3.1.3 系统模块设计 10
3.2 数据库设计与实现 10
3.2.1 数据库的需求分析 10
3.2.2 数据库的逻辑设计 11
3.2.3 数据库的实现脚本 14
第四章 系统详细设计与实现 18
4.1 登录模块 18
4.1.1 功能说明 18
4.1.2 程序描述 19
4.2 授权管理模块 19
4.2.1 功能说明 20
4.2.2 程序功能描述 20
4.3 系统设置模块 20
4.3.1 功能说明 20
4.3.2 程序功能描述 21
4.4 操作员档案管理模块 21
4.4.1 功能说明 21
4.4.2 程序功能描述 22
4.5 数据管理模块 22
4.5.1 功能说明 22
4.5.2 程序功能描述 23
4.6 档案管理 24
4.6.1 功能说明 24
4.6.2 程序功能描述 25
4.7 入场管理模块 25
4.7.1 功能说明 25
4.7.2 程序功能描述 26
4.8 出场管理 27
4.8.1 功能说明 27
4.8.2 程序功能描述 28
4.9 收费管理模块 28
4.9.1 功能说明 28
4.9.2 程序功能描述 29
第五章 系统测试、运行维护与评价 30
5.1 测试概况及测试用例 30
5.1.1 添加用户信息 30
5.2 系统维护 31
5.2.1 系统维护的需求起因和目的 31
5.2.2 系统维护的内容 31
5.2.3 系统维护工作要考虑的因素 32
5.2.4 系统维护工作的管理 32
5.3 系统评价 32
结 论 33
参考文献 34
致谢 35

第一章 绪论
1.1 选题背景
近年来,随着我国经济的快速发展,人们生活水平的不断提高,物质需求和生活方式也发生着深刻的变化,以前属于奢侈品的汽车己经逐步走入了市民的日常生活。伴随汽车消费大众化和各种机动车辆大范围内的迅速普及,车辆对其配套设施特别是停车场提出了更高的要求。停车是"速度为零的交通”,停车场及附属相关设施是静态交通的重要组成部分。停车场收费管理系统是伴随着公用收费停车场这一新生事物而诞生的。
目前的多数停车场存在着以下几个问题,管理漏洞、系统的可靠性、独立性强、收费过程比较繁琐、劳动强度高、停车场利用率低下、票款易流失等。针对这些问题该停车场系统从以下方面进行设计。针对管理进行了优化,采用划卡消费和现金支付相结合,系统计时计费。采用Java高级编程语言和WEB相关技术开发设计管理系统软件,实现网络管理操作。优化后的系统使用方便、服务高效、收费透明、防止票款的流失,提高可靠性同时也提高了操作者的工作效率。
1.2 主要相关技术
1.2.1 Struts技术
Struts其英文为在建筑和飞机中使用的金属支架,有支持和支撑的含义,同时也说明了其在WEB设计中的重要作用。Struts是一个基于Sun J2EE平台的MVC框架,Struts把Servlet、JSP、自定义标签和信息资源(Message Resources)整合到统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间[4][11]。

图 1-1 Struts工作原理
对于基于Struts框架的Web应用程序,当客户端浏览器发出请求时,请求会被控制器截获,并调用在Web应用启动时就加载并初始化核心控制器组件ActionServlet,然后通过ActionServlet从Struts-config.xml文件中读取预先设置的配置信息,并且把他们存放到各个配置对象中。控制器根据配置文件中的信息,或者选择合适的Action对象,或者直接选择合适的View对象返回给浏览器。Action对象本身没有任何的逻辑功能,它只是控制器和模型层之间的接口,控制器通过Action调用匹配的模型对象,模型对象根据执行结果,选择合适的View对象返回给浏览器。,控制器时整个程序执行流程的调度者,在Struts中基本的控制器组建是ActionServlet类,但是Action-Servlet类不包含任何控制信息,程序的所有调度信息都需要在Struts-con-fig.xml配置文件中设置。
1.2.2 Hibernate
Hibernate[2]是目前最流行的ORM(Object/Relational Mapper),是连接Java对象模型和关系数据库模型的桥梁,它对JDBC进行了轻量级封装不仅提供ORM映射服务,还提供数据查询和数据缓冲查询功能。Hibernate将SQL操作完全封装成对象化的操作,开发人员可以方便通过Hibernate来访问数据库。
1.2.3 JSP(Java Server Pages)技术
JSP是一种动态网页的技术标准,是一种服务器端嵌入了Java代码的脚本语言。它把内容的生成和显示分离,能生成可重用的组件,应用了标记简化页面的开发并且具有Java特点。
1.2.4 J2EE

  1. J2EE介绍
    J2EE(Java 2 Platform, Enterprise Edition)是SUN公司定义的一个开放式企业级应用规范,他提供了一个多层次的分布式应用模型和一系列开发技术规范,多层次分布式应用模型是根据功能把应用逻辑分成多个层次,每个层次支持相应的服务器和组件.组件在分布式服务器的组件容器中运行,如Servlet组件在Servlet容器上运行,EJB组件在EJB容器上运行,容器间通过相关的协议进行通讯,实现组件的相互调用。遵从这个规范的开发者将得到行业的广泛支持,使企业级应用的开发变得简单、快速。
  2. 构建本系统J2EE开发工具
    Java虚拟机:J2SDK1.6;Java开发工具:MyEclipse6.0;WEB服务器采用:Tomcat 6.0。环境配制过程:安装好J2SDK1.6后。在MyEclipse6.0中选择新建J2EE Project->Web Project,并在Web Project中Add Struts和Hibernate3.1。
    1.2.5 MVC
    MVC的英文全称为Model-View-Controller,即把一个应用程序的输入层、业务处理层、控制流程按照View、Model、Controller的方式进行分离,这样一个应用程序就被划分成相对独立而又协同工作的3个层,即视图层、模型层、控制层。在MVC设计模式中,客户端WEB浏览器会提交各种不同的用户请求,这些请求由控制器进行处理,控制器根据时间的类型来改变模型或视图,视图也可以接受模型层发出的数据更新通知,依据数据更新的结果调整视图效果,并呈现给用户。而模型也可以通过视图所获得的用户提交的数据进行具体业务逻辑的处理。
    1.2.6 JavaScript技术
    JavaScript语言的前身是LiveScript语言[5]。由美国Netscape(网景)公司的布瑞登·艾克(Brendan Eich)为即将在1995年发布的Navigator 2.0 浏览器的应用而开发的脚本语言。JavaScript是一种基于对象的语言,这意味它能运用自己已经创建的对象。本系统主要用JavaScript小程序代码做一些客户端的登陆验证和页面的选择控制。

第二章 系统分析
2.1 系统分析
2.1.1 功能需求分析
根据停车场管理系统的需求,确定了该系统的用例图如图2-1所示。

图2-1 停车场管理系统用例图
如图2-1所示,该系统主要有超级管理员、管理员和操作员三种角色,不同角色的基本任务如下所述。
超级管理员具有最高的权限,即对本系统所有的权限操作权。超级管理员授权给管理员赋予管理员应有的权限。
管理员可根据需要来维护角色信息,并授权给相应的操作员。进行系统的设置,权限设置,数据管理,操作员档案的管理。
操作员行使管理员给与的权限,行使档案管理(车辆档案、卡档案管理、用户档案管理),入场的管理,收费管理,以及出场的管理。
根据用例图得到的部分类图,如图 2-2

图 2-2 类图
2.1.2 系统流程分析
停车场管理系统分为入场停车和出场取车两部分。如图2-3所示。

图 2-3 系统流程图
1.入场停车流程
(1)入场
根据系统提示的停车场的现有信息控制车辆的入场,停车场在有车位的情况下方能停车。
(2)卡审核
审核用户的卡类型并判断卡的有效性。
(3)停车
指定停车位置提示给用户
2.出场取车流程
(1)出场审核
卡审核,卡与车辆的匹配审核。
(2)收费
根据车辆信息,卡类型以及停车的时间等依据收费标准计算收费额度实施收费环节。
(3)出场
交费之后在出场的相关信息提示下完成停车管理过程。
2.2 技术可行性分析
停车场管理系统设计中,MVC(Model-View-Control)分层设计模式贯穿了整个设计流程,系统开发框架采用Struts1.2 +Hibernate3.1组合结构。
 模型层
模型层主要包括数据逻辑和业务逻辑。 在本系统中,Hibernate提供处理数据持久化,JavaBean对业务逻辑Service封装。
 视图层
系统采用JSP实现视图层。
 控制层
采用Struts技术处理前台请求与Service业务逻辑的调用。
2.2.1 系统数据模型层的分析与设计
MVC设计模式中的M(Model),主要包括了数据逻辑与业务逻辑。
 数据逻辑
数据逻辑作为Model层面中的主要组成部分,其设计的优劣会对系统得整体性能表现产生至关重要的影响。
Hibernate提供了强大、高性能的对象到关系型数据库的持久化服务。利用Hibernate,可以按照Java的基础定义进行持久化层开发,Hibernate在对象与关系型数据库之间构建了一条快速、高效、便捷的沟通渠道。在本系统中对数据库的增加、修改、删除、查询的操作都通过Hibernate对数据表进行相对应的操作。
 业务逻辑
业务逻辑是业务系统实现的主要组成部分,业务逻辑层主要负责以下几个方面的实现。
(1)管理应用的业务逻辑和业务校验。如添加数据时数据表中没有该项记录,才允许添加。
(2)管理业务级对象之间的依赖性。
(3)管理与其他层进行交互的接口。
(4)事物代理。对数据库的插入和删除时要调用事物处理才能物理上执行对数据表的更新操作。
(5)错误管理。
2.2.2 系统视图层的设计与分析
MVC设计模式中的V(View)即视图层(或表现层),本系统采用JSP技术实现。本系统所有的页面都是通过此技术来实现的。
2.2.3 系统控制层的分析与设计
MVC设计模式中的C(Control)即控制层,采用Struts框架技术实现控制层。控制层需要负责以下功能:
(1) 接受来自客户端的HTTP请求。
(2) 调用M层模型组件来执行相应得业务逻辑。
(3) 获得M层业务逻辑的处理结果。
(4) 根据处理结果选择合适的视图层呈现给客户端。

第三章 系统总体设计
3.1 系统设计
3.1.1 总体设计
首先判断登录的身份,进入相应的操作页面通过需要的操作,最终完成目的操作的功能。本系统UML活动图如图3-1所示。
他们在内在关系由数据库和程序来控制。

图3-1 UML活动图
3.1.2 业务流程分析
本系统的的使用者是停车场的工作人员,为了便于管理并借鉴现有停车场的管理模式,划分成三个角色的用户。工作人员首先登陆系统,经过一系列的身份验证,登陆成功之后进入相应的操作界面,实现各自的管理功能。总体功能分析业务流程图。如图 3-2业务流程图

图3-2 业务流程图
其中各模块有对应的添加、修改及删除功能。
3.1.2 系统功能模块
如图 3-3 系统功能模块划分

图 3-3 系统功能模块划分
3.1.3 系统模块设计
(1)授权管理模块 具有最高管理权限超级管理员对该模块进行操作,对管理员进行授权,添加删除修改管理员。
(2)系统设置 由超级管理员授权的管理员行使该功能,主要是对停车场的参数进行设置。
(3)操作员档案管理 由管理员行使改功能,停车场业务操作员进行管理,添加、删除、修改操作员的信息。
(4)数据管理模块 该模块显示了停车场日常运行所产生的数据,场内车辆,进出数据,收费金额以及交班记录的相关信息。
(5)档案管理 该部分功能为操作员所使用,主要是对停车场发放的卡进行管理、车档案的管理以及停车场顾客的信息档案管理。他们都有自己的添加、删改、修改的功能。
(6)入场管理 该模块是本系统的一个重要的功能模块,主要采集汽车入场时候的一些必要的参数,对参数进行处理和判断,这些获得的参数提交到后台进行相关的处理。
(7)出场管理 汽车离场之前对其进行的离场验证和停车时间的数据收集,为下一收费模块提供数据。
(8)收费管理 该模块是本系统最重要的一个模块,根据出入场提供的参数结合该模块收费标准的设置计算出收费的金额,完成收费并打印出收费清单。
3.2 数据库设计与实现
3.2.1 数据库的需求分析
数据库设计的ER图。如图 3-4系统数据库ER图,制定一个收费标准要卡的类型以及收费的标准(时收费或次收费)来确定。停车场的顾客用户有唯一的一条卡信息与自己的车信息绑定。停车场的总车位数决定了车位表的总车位,一个车位只能存放一部车。收费的根据时入场时的信息和出场时的信息以及收费标准的综合得出。交班记录要记下该员工在工作时间内的所有的操作记录,上下班时间以及在这段时间内的操作。

图 3-4 系统数据库ER图

根据系统需求,本系统需要设计13张表。
(1) 卡信息表:存放卡的相关信息。
(2) 停车场参数表:存放停车场的基本参数。
(3) 用户表:存放用户的基本信息。
(4) 车信息表:存放车的基本信息。
(5) 权限表:存放对应的权限信息和对应的行使该权限人员的相关信息。
(6) 时收费表:存放按时收费的时间段。
(7) 次收费表:存放按次收费的时间段。
(8) 入场表:存放入场时候的一些信息。
(9) 出场表:存放出场时的相关信息。
(10) 交班表:存放操作员交接班的相关信息。
(11) 收费表:存放停车一段时间的收费信息。
(12) 车位表:用于存放每一个车位上的停车状态。
(13) 收费标准表:存放收费的统一标准。

3.2.2 数据库的逻辑设计
下面给出各个表的详细结构。

表3-1 卡信息表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
cardid 卡编号 varchar 20 是 否
cardno 卡号 varchar 20 是 否
cardtype 卡类型 varchar 20 是 否
cardmoney 余额 money 8 是 否
sendtime 发卡时间 datetime 8 是 否
activetime 有效时间 datetime 8 是 否
sendflag 已发 tinyint 1 是 否
loseflag 挂失 tinyint 1 是 否

表3-2 停车场参数表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
parkname 停车场名字 varchar 20 是 否
parktotal 总车位 int 4 是 否
entertotal 入口车道数 int 4 是 否
exittotal 出口车道数 int 4 是 否
parktel 停车场电话 varchar 20 是 否
parkadd 停车场地址 varchar 20 是 否

表3-3 用户表
字段名 描述 类型 长度 是否为空 是否主键
id 编号 varchar 20 否 是
name 用户名 varchar 20 是 否
sex 性别 char 2 是 否
tel 电话 varchar 20 是 否
cardno 卡号 varchar 20 是 否
carno 车牌 varchar 20 是 否
address 地址 varchar 20 是 否

表3-4 车信息表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
carid 编号 varchar 20 否 是
carno 车牌号 varchar 20 是 否
cartype 车类型 varchar 20 是 否

表3-5 权限表

字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
poperatorid 编号 varchar 20 否 是
poperatorname 姓名 varchar 20 是 否
poperatorsex 性别 char 10 是 否
poperatorpsw 密码 varchar 20 是 否
poperatorright 权限 varchar 20 是 否

表3-6时收费表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
timeno 时间号 int 4 否 是
starttime 开始时间 char 10 是 否
endtime 结束时间 char 20 是 否

表3-7 次收费表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
times_no 时间号 int 4 否 是
starttime 开始时间 char 10 是 否
endtime 结束时间 char 10 是 否

表3-8 入场表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
encardid 入场编号 varchar 20 否 否
encardno 卡号 varchar 20 是 否
encarno 车牌 varchar 20 是 否
enway 入场车道 varchar 20 是 否
entime 入场时间 datetime 8 是 否
enposition 指定车位 varchar 20 是 否

表3-9 出场表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
exited 出场编号 varchar 20 否 否
excardno 卡号 varchar 20 是 否
excarno 车牌 varchar 20 是 否
exway 出场车道 varchar 20 是 否
extime 出场时间 datetime 8 是 否

表3-10 交班表

字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
tnoperator 操作员 varchar 20 否 否
tnlogintime 登录时间 datetime 8 是 否
tnturntime 交班时间 datetime 8 是 否
entimes 进场次数 int 4 是 否
extimes 出场次数 int 4 是 否
totalmoney 金额总计 money 8 是 否

表3-11 收费表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
chargeid 收费编号 varchar 20 否 否
chcardno 卡号 varchar 20 是 否
chcarno 车牌 varchar 20 是 否
chmoney 收费金额 money 8 是 否

表3-12 车位表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
cpcarno 车牌 varchar 20 是 否
positionstate 车位状态 varchar 20 是 否

表3-13 收费标准表
字段名 描述 类型 长度 是否为空 是否主键
id 自增 int 4 否 是
chargestid 标准编号 int 4 是 否
cardtype 卡类型 varchar 20 是 否
cartype 车类型 varchar 20 是 否
chargetype 收费类型 varchar 20 是 否
timeno 时间编号 int 4 是 否
unittime 单位时间 int 4 是 否
unitsum 单位金额 int 4 是 否
mostsum 最大金额 int 4 是 否

3.2.3 数据库的实现脚本
1 卡信息表
CREATE TABLE [dbo].[pcard] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[cardid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[cardno] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[cardtype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[cardmoney] [money] NULL ,
[sendtime] [datetime] NULL ,
[activetime] [datetime] NULL ,
[sendflag] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[loseflag] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
2 停车场参数表
CREATE TABLE [dbo].[parkparameter] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[parkname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[parktotal] [int] NULL ,
[entertotal] [int] NULL ,
[exittotal] [int] NULL ,
[parkadd] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[parktel] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
3 用户表
CREATE TABLE [dbo].[users] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[userid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[username] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[usersex] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[usertel] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[u_carid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[u_cardid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[useradd] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
4 车信息表
CREATE TABLE [dbo].[car] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[carid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[carno] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[cartype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
5 权限表
CREATE TABLE [dbo].[rateright] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[poperatorid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[poperatorname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[poperatorsex] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[poperatorright] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[poperatorpsw] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
6 时收费表
CREATE TABLE [dbo].[ptime] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[timeno] [int] NOT NULL ,
[timestart] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[timeend] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
7 次收费表
CREATE TABLE [dbo].[ptimes] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[timesno] [int] NOT NULL ,
[timesstart] [char] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[timesend] [char] (8) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
8 入场表
CREATE TABLE [dbo].[entrance] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[encardno] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[encardtype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[encarno] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[encartype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[enway] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[entime] [datetime] NULL ,
[enposition] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[enchargetype] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[enoperator] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
9 出场表
CREATE TABLE [dbo].[pexit] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[excardno] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[excarno] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[exway] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[extime] [datetime] NULL
) ON [PRIMARY]
10 交班表
CREATE TABLE [dbo].[turn] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[tnoperator] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[tnlogintime] [datetime] NULL ,
[tnturntime] [datetime] NULL ,
[entimes] [int] NULL ,
[extimes] [int] NULL ,
[totalmoney] [money] NULL
) ON [PRIMARY]
11 收费表
CREATE TABLE [dbo].[charge] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[cardid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[cardtype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[cartype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[carno] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[money] [money] NULL
) ON [PRIMARY]
12 车位表
CREATE TABLE [dbo].[carposition] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[cpcarno] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[positionstate] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
13 收费标准表
CREATE TABLE [dbo].[standardcharge] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[chargestid] [int] NOT NULL ,
[cardtype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[cartype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[chargetype] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[timeno] [int] NULL ,
[unittime] [int] NULL ,
[unitsum] [int] NULL ,
[mostsum] [int] NULL
) ON [PRIMARY]

第四章 系统详细设计与实现
4.1 登录模块

图4-1 登录界面图

4.1.1 功能说明
登陆页面需要用户名、密码以及用户的登录类型,分为超级管理员、管理员和操作员,所以在登录类型中进行区别,进入后根据管理的级别,行使不同的功能。登陆时进行验证,首先进行页面级的验证输入的信息,用户名和密码不能为空。其次进行数据库的验证,当系统中没有该管理员的信息时将把错误信息抛出到页面,提示用户出错原因。当同一个用户已经登录时,使用同一账号和密码将不能登陆该系统,在一定程度上提高了系统的安全性。
数据流图如图4-2所示。

图4-2 登录模块数据流程图
4.1.2 程序描述
login.jsp提供登录用户名、密码和登陆类型三个属性。通过loginForm采集数据交由loginAction进行登录信息的验证根据验证的信息进入到相应的界面。
try{
byte[] buffer=logintype.getBytes(“ISO-8859-1”);//中文处理
logintype=new String(buffer,“GBK”);
}
catch(UnsupportedEncodingException e)
{e.printStackTrace();}
boolean bool =rightDAO.isLogin(username, password,logintype);
if(bool){
if(logintype.equals(“1”))//判断时哪个权限类型的登录超级管理员
{PlublicStr=“administratorsuccess”;
}
else if(logintype.equals(“2”))//管理员
{
PlublicStr=“adminsuccess”;
}
else if(logintype.equals(“3”))//操作员
{
PlublicStr=“operatorsuccess”;
}
}
else//如果输入的账号时非法的账号则在页面上进行提示
{
ActionMessages errors = new ActionMessages();
request.getSession().setAttribute(“errors”,“账号不存在,或没有该登陆权限!”);
return (new ActionForward(mapping.getInput()));}
return mapping.findForward(PlublicStr);
4.2 授权管理模块

图4-3 授权管理界面
4.2.1 功能说明
此模块只有超级管理员才能进行相关的操作,一般用户无法进入该页面进行操作。所有的管理员级别的用户都有该超级管理员进行授权产生。授权管理模块数据流图4-4:

图4-4 授权管理数据流图
4.2.2 程序功能描述
超级管理员进入该模块之后可以查询管理员的信息,并可以进行管理员信息的编辑,主要的编辑是添加、删除和修改。
添加管理员的信息的前提是保证数据库中没有该管理员的信息,所以在添加的时候首先要对添加的管理员在管理员表中进行检查,如果存在则提示不能添加该管理员的信息。修改管理员的信息,作了一个人为的规定,即管理员的ID号时不允许修改的,其他的项目可以修改,修改之前要在复选框中选中,利用JavaScript代码控制只能选择一个管理员的信息进行修改。删除的时候可以选择多项和选择所有的管理员进行删除。
4.3 系统设置模块

图 4-5 系统设置界面
4.3.1 功能说明
管理员进入该功能界面进行停车场参数的设置。数据流图4-6

图 4-6 停车场参数数据流图
4.3.2 程序功能描述
主要是根据管理员输入的停车场的参数,这些参数是由管理员对停车场的参数进行初始化,通过查询停车场参数显示停车场的参数信息。
SystemsetForm systemsetForm = (SystemsetForm) form;
Parkparameter pp = new Parkparameter();
pp.setParkname(systemsetForm.getParkname());
System.out.println(systemsetForm.getParkname());
pp.setParktotal(Integer.parseInt(systemsetForm.getParktotal()));
pp.setEntertotal(Integer.parseInt(systemsetForm.getEntertotal()));
pp.setExittotal(Integer.parseInt(systemsetForm.getExittotal()));
pp.setParkadd(systemsetForm.getParkadd());
pp.setParktel(systemsetForm.getParktel());
ParkparameterDAO ppDao = new ParkparameterDAO();
request.setAttribute(“parkparameter”, pp);
try{ppDao.save(pp);}catch(Exception e){e.printStackTrace()}
return mapping.findForward(“systemsetsuccess”);
4.4 操作员档案管理模块

图4-7 操作员档案管理界面
4.4.1 功能说明
管理员进入该界面,查询操作员的权限档案信息,并可以进行添加删除修改。数据流程图4-8。

图 4-8 操作员档案管理数据流程图
4.4.2 程序功能描述
管理员进入该模块之后可以查询操作员的信息,并可以进行操作员信息的编辑,主要的编辑是添加、删除和修改。
添加操作员的信息的前提是保证数据库中没有该操作员的信息,所以在添加的时候首先要对添加的操作员在操作员表中进行检查,如果存在则提示不能添加该操作员的信息。修改操作员的信息,作了一个人为的规定,即操作员的ID号时不允许修改的,其他的项目可以修改,修改之前要在复选框中选中,利用JavaScript代码控制只能选择一个操作员的信息进行修改。删除的时候可以选择多项和选择所有的操作员进行删除。
4.5 数据管理模块

图 4-9 数据管理交班记录界面
4.5.1 功能说明
数据管理页面主要是对停车场的数据进行管理,场内车辆管理信息的查询,进出场数据的查询,操作员收费金额信息的查询,以及操作员交班记录的查询。在设计交班数据表中的数据时候,考虑到该表中的记录会在上班的过程中随时发生变化,所以在本系统中,所有与该表数据关联的模块中都实现了对交班记录表数据的更新。由于这些记录可能会出现很多,所以在页面进行了分页显示。实现对停车场和操作员的综合管理。图4-10 数据管理流程图。

图4-10 数据管理流程图
4.5.2 程序功能描述
只实现对数据库的读数据操作,对停车场的日常管理进行监理。综合这些数据信息便于管理者进行必要的商业决策和人事管理等。该分页设计的思想是将所有符合条件的数据的记录集取出,然后根据记录总数和每页要显示的记录数进行分页。
//分页显示查询的记录
int intPageSize;//一页显示的记录数
int intRowCount;//记录总数
int intPageCount;//总页数
int intPage;//待显示页码
String strPage;
int m,pagecounter;
int j=1;
intPageSize=10;//设置一页显示的记录数
int len=intPageSize;
Turn turn;
strPage=request.getParameter(“page”);//取得待显示页码
if(strPage==null)//表明在QueryString中没有page这一个参数,此时显示第一页数据
{
intPage = 1;
}
else//将字符串转换成整型
{
intPage = java.lang.Integer.parseInt(strPage);
}
if(intPage< 1)
{
intPage = 1;
}
//获取记录总数
intRowCount = turnlist.size();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage >intPageCount)
intPage = intPageCount;
if(intPageCount >0){
//将记录指针定位到待显示页的第一条记录上
len=(intPage-1)*intPageSize;
turnlist.get((intPage-1)*intPageSize);
turn=(Turn)turnlist.get((intPage-1)*intPageSize);
//显示数据
}
m=0;
while(m< intPageSize && len<intRowCount)
{
turn=(Turn)turnlist.get(len);
len++;
m++;
%>

<%=turn.getTnoperator() %> <%=turn.getTnlogintime() %> <%=turn.getTnturntime() %> <%=turn.getEntimes() %> <%=turn.getExtimes() %> <%=turn.getTotalmoney() %> <%} %>

共<%=intRowCount%>个记录,分<%=intPageCount%>页显示,您所在的页面是:第<%=strPage %>页 <%for(;j<=intPageCount;j++) {out.print("  "+j+""); }%> 4.6 档案管理

图 4-11 档案管理界面
4.6.1 功能说明
操作员登录该界面进行档案管理的功能,包括卡档案、车档案以及用户的档案管理实现对以上档案的编辑。档案管理数据流程图4-12。

图4-12档案管理数据流程图
4.6.2 程序功能描述
档案管理下有个小的功能模块,卡档案管理实现对卡的信息管理,标记卡的类型,卡的状态,如金额,发卡时间,卡丢失后的挂失标记等信息,以及长期卡的充值。用户管理小模块是长期卡用户进行的管理,在整个系统中,长期卡与车牌号以及用户即持卡人是一一对应的关系。档案的管理也包含对这这些信息的编辑如添加、删除以及修改的过程。
4.7 入场管理模块

图 4-13 入场管理模块界面
4.7.1 功能说明
如果有车入场,首先要检测一下是否还有空闲的车位,如果没有空闲车位,入场不成功。这一过程的实现通过设置每个车位的状态来进行实现,每个车位的信息都存储在车位信息表中。入场管理需要手动输入一些信息,提交之后要进行必要的判断之后按照指定车位进入停车场,在指定车位的时候是根据车位在车位表中的顺序来进行指定的。为了记录停车场的一些人员操作的信息,入场时的操作员实行自动签名的方式,实现该方式是根据其登陆时候的名称在入场模块中有系统写入。图4-14 是入场模块的数据流程图。

图 4-14入场模块的数据流程图
4.7.2 程序功能描述
车辆进入以后,在有空车为的情况下,手动输入卡的信息,根据卡的信息进行判断卡类型。长期卡如果有效直接按指定车位停车。临时卡需要临时发放。车辆入场后总车位数减1,该车位的状态由先前的有车状态标记为无车状态。
4.8 出场管理

图 4-15出场管理界面
4.8.1 功能说明
用户取车时操作员使用该功能,手动输入出场车辆的卡号,输入出场车道编号。图4-16是出场管理数据流程图。

图4-16 出场管理数据流程图
4.8.2 程序功能描述
用户取车,手动输入卡的信息,并与入场表中的卡信息相比较,如果入场表中没有记录,说明该卡信息相关的车辆没有入场,所以在出场时提示没有入场,根据卡的信息进行判断卡类型。根据入场表中的卡类型,车类型,入场时间,收费类型和出场时的时间,计算出收费的金额,调用收费模块,将入场表中的与该车相关的入场数据从数据表中删除,并将出入场相关的数据记录到出入场记录表中。交费后离场,出场后停车场的总车位数加1。
4.9 收费管理模块

图 4-17 收费清单界面

图 4-18 收费标准设置界面
4.9.1 功能说明
收费管理是停车场管理系统最重要的功能之一,综合以上入场时提供的信息,根据设置的计费标准计算出收费金额,并打印出收费清单。收费管理的数据流程如图 4-19

图 4-19 收费管理的数据流程
4.9.2 程序功能描述
显示收费清单是进行收费的凭据,并打印出收费单提供给用户。收费标准的设置有时收费和次收费,时收费以时段为系统收费提供依据。根据设置的时间段设置对应得收费金额。次收费按次收费,在指定的时间段内设置每次停车的收费金额。收费的标准也与车辆类型和卡类型有关,单位时间单位为分钟,金额单位为元。最大金额设置收费最大的额度。

第五章 系统测试、运行维护与评价
在系统设计完成后还要经过测试阶段,系统外部环境与内部因素的变化,不断影响系统的运行,同时需要系统不断适应这些变化,不断完善该系统,以提高系统运行的效率与水平,这时就需要从始至终的进行系统的维护工作。
系统评价主要是指系统建成后,经过一段时间的运行,要对系统目标与功能的实现情况进行检查,并与系统开发中设立的系统与其的目标进行对比,及时写出系统评价报告。
系统维护与评价阶段是系统生命周期中的最后一个阶段,也是时间最长的一个重要阶段,系统维护工作的好坏可以决定系统生命周期的长短和使用效果。
由于时间的关系,并未对所有的功能模块进行测试,系统的测试和维护工作相对较少,这里选择几个典型的功能做一下测试。
5.1 测试概况及测试用例
测试是一个执行程序的过程,即要求被测程序在机器上运行。其实,不执行程序也可以发现程序的错误。通常将前者称为“动态测试”,后者称为“静态分析”。广义的说,它们都属于程序测试。
动态测试也可以区分为两类。一类把被测程序看成一个黑盒,根据程序的功能来设计测试用例,称为黑盒测试(Black Box Testing);另一类则根据被测程序的内部结构设计测试用例,测试者需事先了解被测程序的结构,故称为白盒测试(White Box Testing)。
在本设计中,所用测试方法是黑盒法设计的测试用例。由于篇幅关系,只列出具有代表性的测试用例,现将几个在测试中发现的主要问题列出。
5.1.1 添加用户信息
添加用户信息时,其中有7个字段用户ID、姓名、性别、电话、卡号、车牌、地址,这中间的卡号和车牌必须是卡信息表和车信息表中已存在的信息,当操作员执行添加操作时,后台会判断是否存在该用户的信息。下面是添加用户信息这一模块,运用黑合测试方法中的等价划分类来写出程序功能的测试用例。步骤如下:
1.建立输入等价类表,如表5-1所示:
表5-1 “添加用户”的等价类表
输入数据 有效等价类 无效等价类
卡号 ○1卡信息表中有该卡号
○2卡信息表中无该卡号

车牌 ○3车信息表中有车牌
○4车信息表中无该车牌

2.设计有效等价类需要的测试用例,如表5-2所示:
表5-1中的○1、○32个有效等价类,用一个公用测试用例,测试用例如下:

表5-2 添加用户的有效等价类
测试数据 期望结果 测试范围
2000,3000 输入有效 ○1○3

3.设计一个无效等价类的测试用例,如表5-3所示:
表5-1中的○2、○42个无效等价类,用一个公用测试用例,测试用例如下表5-3:
表5-3添加用户无效等价类
测试数据 期望结果 测试范围
0002,0003 输入无效 ○2○4

添加用户信息时如果输入表5-2中的测试数据,会提示操作员添加成功,如果输入5-3中的测试数据,则会提示操作员用户信息已经存在这一错误报告。
5.2 系统维护
软件产品开发出来并交付用户使用之后,就进入了软件维护阶段,维护阶段是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。
本系统运行阶段管理工作的目的要求与开发阶段有根本的区别,开发阶段要求经济地、按质按时开发好系统,而运行管理的目的是使信息系统在一个预期的时间内能正常的发挥其应有的作用,产生其应有的效益。
系统运行管理的任务围绕这一目的开展,一般包括三个方面的工作:
(1)日常运行的管理
(2)运行情况的记录
(3)对系统的运行情况进行检查与评价
系统维护工作是为了适应系统内部因素和外部环境的变化,排除运行故障,不断满足新的要求,保证系统正常工作所采取的一切活动。离开系统维护工作,信息系统就无法生存下去。
5.2.1 系统维护的需求起因和目的
系统维护工作的主要需求起因主要有来自上级领导的命令和要求;来自业务部门的进一步要求;组织系统内部管理方式、方法、策略的变化;先进的计算机与通信信息等技术的发展和创新等因素。
软件维护的最终目的,时满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长软件的寿命。根据每次进行维护的具体目标可分为完善性维护、适应性维护和纠错性维护。不管时哪种维护,其最终目的时始终如一的。
5.2.2 系统维护的内容
系统维护工作的主要内容有程序的维护、数据文件的维护、系统代码的维护、机器设备的维护、系统维护机构和人员的变动等等。
5.2.3 系统维护工作要考虑的因素
系统维护工作时间长、范围广、情况复杂,一般在进行系统维护工作项目时要从系统运行的实际情况、该项维护工作对系统即有关组织的影响、系统维护所需费用和人员等资源的要求等方面来考虑。
5.2.4 系统维护工作的管理
要建立严格的有关的规章制度和程序,提供必要的资源保证,要有专人负责各项维护工作,职责明确。维护时期的配置管理贯穿与整个生存的周期,在运行维护的时期,其任务尤其繁重。维护管理的文档维护日志时评价维护工作有效性的主要依据,要详细记录维护前后和维护过程中的重要数据和情况,为以后的维护查询时使用。维护费用的估算,软件维护是软件开发的一个缩影,其复杂度和工作量不下于开发过程,要合理的做出估算。
针对本系统的维护工作,主要是在系统投入运行之后出现的问题,及时发现,找出原因,进行排除,保证系统在运行的过程中不会因为技术问题而影响整个系统的运行。
5.3 系统评价
本系统采用JSP+Struts+Hibernate+SQL Server 2000实现。JSP用于页面的设计,Java用来处理后台跳转、对数据库操作,实现对数据库的增、删、改等操作。使用是Tomcat6.0作为WEB服务器,提供适应性强的Intranet服务器功能,具有很高的执行效率。
该系统符合实际的停车场管理系统,为停车场管理供一个快速,简单规范的管理平台。这对提高信息化程度,降低人力成本有着重要的意义

结 论
本文对基于WEB的停车场管理系统的设计和实现做了阐述和分析。探讨了在MyEclipse6.0的开发环境上利用Struts1.2+Hibernate3技术来分析和开发该停车场管理系统。实现基于J2EE平台开发WEB版停车场管理系统,基本实现一般规模停车场的应用管理。
该系统设计采用了MVC开发设计模式,把整个系统的应用分成三个模块:模型、视图和控制器,让他们分担不同的任务,使整个系统在结构上看起来思路清晰,易于系统的改进和维护。系统使用时,只需要开启服务器,在浏览器中即可完成对该系统的操作。停车场管理系统的收费功能是该系统的主要功能模块,在利用在程序设置的收费标准进行计算收费金额实施收费。出入场的管理,实现卡与车的一一对应关系,在安全防盗车方面有一定作用。由于本系统只做了软件管理方面的实现,所以在采集数据方面还需要手动输入。由于开发能力和时间所限,本系统目前还需要在一定程度上进行改进和完善,根据以后系统在运行过程中出现的问题,主要是在系统性能、功能完善方面进一步加强。

参考文献
[1] 梁建全,周力,孟志勇,田利军.精通轻量级Java EE框架整合方案[M].人民邮电出版社,2008.
[2] 夏昕,曹晓刚,唐勇.深入浅出Hibernate[M].电子工业出版社,2005.
[3] 吕凤翥,马皓.Java语言程序设计[M].清华大学出版社,2006.
[4] 孙更新,宾晟,周峰.Struts框架结构的Java Web开发技术基础与实践教程[M].电子工业出版社,2008.
[5] 明日科技,梁冰,苏宇,吕继迪.JavaScript技术开发大全[M].人民邮电出版社,2008.
[6] 王俊标.精通Java Web开发—基于Struts、EJB、Hibernate、JBuilder[M].人民邮电出版社,2007.
[7] 史济民,顾春华,李昌武,苑荣.软件工程—原理、方法与应用[M].高等教育出版社,2002.
[8] 樊月华.Web技术应用基础[M].清华大学出版社,2006.
[9] 马海军,景丽.Java编程原理与实践[M].清华大学出版社,2005.
[10] 明日科技,王毅,尹相群.Struts应用开发完全手册[M].人民邮电出版社,2007.
[11] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发.电子工业出版社,2008
[12] 邓子云,燕锋.JSP网络编程从基础到实践[M].电子工业出版社,2007

致谢
首先要感谢我的导师李正茂老师,在百忙之中用宝贵的时间为我悉心的指导,导师认真的工作态度和耐心的指导给了我很大的帮助,在大学最后的时间感受到了老师最真切和有效的鼓励。
在学校生活的四年中,感谢每一位老师的辛勤劳动,是你们无私的奉献使我们得以汲取更多的养分,让我们学到知识的同时也学到了很多做人的道理。忠心祝福老师们健康快乐。
其次,要感谢我的同学,感谢他们在论文过程中给我的关心和帮助。感谢他们留给我大学生活美好的记忆。
最后感谢我的家人,正他们无尽的关怀和深沉的爱是我今生最大的财富。感谢答辩老师对我论文的批评和指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/208027.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高斯Filter 和 Bilateral Filter

参考链接&#xff1a; Python | Bilateral Filtering - GeeksforGeeks 高斯Filter&#xff1a; 高斯模糊后的图像中的每个像素的强度是由它周围的像素的加权平均得到的&#xff0c;这个权重就是高斯函数的值&#xff0c;它取决于像素之间的距离。具体来说&#xff1a; 通常会导…

本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)

按照固有思维方式&#xff0c;深度学习的训练环节应该在云端&#xff0c;毕竟本地硬件条件有限。但事实上&#xff0c;在语音识别和自然语言处理层面&#xff0c;即使相对较少的数据量也可以训练出高性能的模型&#xff0c;对于预算有限的同学们来说&#xff0c;也没必要花冤枉…

分享给自媒体人:做自媒体最好的心态

做自媒体路上的两大修行&#xff1a; 一是状态不好的时候&#xff0c;明知道停更会掉流量&#xff0c;依然可以毫不焦虑地躺平; 二是发的东西没人看&#xff0c;坚持更新也没流量&#xff0c;却依然可以坚定地做自己。 做号这件事&#xff0c;就是一分耕耘一分收获的。 可能有人…

什么是视频直播美颜SDK?美颜SDK对比评测与实战应用

为了满足用户对于高质量美颜的需求&#xff0c;各种美颜技术应运而生&#xff0c;其中最为关键的工具之一就是视频直播美颜SDK。 一、视频直播美颜SDK简介 美颜SDK专注于提供实时美颜效果&#xff0c;使得在视频直播过程中能够实现肤色均匀、磨皮、瘦脸等效果&#xff0c;提高…

(C++)验证回文字符串

愿所有美好如期而遇 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/valid-pali…

51单片机按键控制LED灯亮灭的N个玩法

51单片机按键控制LED灯亮灭的N个玩法 1.概述 这篇文章介绍按键的使用&#xff0c;以及通过控制LED灯的小实验&#xff0c;发现按键中存在的问题&#xff0c;然后思考并解决这些问题。达到熟练使用按键控制元器件。 2.搭建硬件环境 1.硬件准备 名称型号数量单片机STC12C205…

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS)

1992-2021年省市县经过矫正的夜间灯光数据&#xff08;GNLD、VIIRS&#xff09; 1、时间&#xff1a;1992-2021年3月&#xff0c;其中1992-2013年为年度数据&#xff0c;2013-2021年3月为月度数据 2、来源&#xff1a;DMSP、VIIRS 3、范围&#xff1a;分区域汇总&#xff1a…

最易上手的电子期刊制作工具,快来使用!

快节奏时代&#xff0c;纸质书籍逐渐淡出人们的视野&#xff0c;取而代之的就是电子刊物制作。而电子期刊开始寻求更多的互动和丰富的内容形式&#xff0c;给人以良好的阅读体验。 如何制作呢&#xff1f;便成为了当下必须要学会的新技能&#xff0c;接下来分享一个比PPT更简单…

面试题-8

1.vue路由是怎么传参的&#xff1f; params传参 this.$router.push({name:index}) this.$route.params.id 路由属性传参 this.$router.push({name:/index/${item.id}}) 配置路由{path:/index:id} query传参(可以解决页面刷新参数丢失的问题) this.$router.push({ name…

AIGC,ChatGPT AI绘画 Midjourney 注册流程详细步骤

AI 绘画,Midjourney完成高清图片绘制,轻松掌握AI工具。 前期准备: ① 一个能使用的谷歌账号 ② 可以访问外网 Midjourney注册 1.进入midjourney官网https://www.midjourney.com 点击左下角”Join the Beta”,就可以注册,第一次使用的小伙伴会弹出提示,只需要点击Acc…

调试接口速度,打印毫秒数,找出慢的地方,优化

方法的最开头写上 $start_time microtime(true); 然后代码行里 dump(All 1: time ’ . (microtime(true) - $start_time)); dump(All 1.2: time ’ . (microtime(true) - $start_time)); 类似这样的最终打印

实验7设计建模工具的使用(三)

二&#xff0c;实验内容与步骤 1. 百度搜索1-2张状态图&#xff0c;请重新绘制它们&#xff0c;并回答以下问题&#xff1a; 1&#xff09;有哪些状态&#xff1b; 2&#xff09;简要描述该图所表达的含义&#xff1b; 要求&#xff1a;所绘制的图不得与本文中其它习题一样…