1.系统的开发工具
1.1 AppServe集成应用
Mysql:MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。
Php:PHP是一种嵌入式脚本语言,由于 PHP 简单、易用、跨平台、开源等特点,使其成为主流的网站开发语言,使用 PHP 开发的网站遍及各个行业。在具体开始学习 PHP 之前,本章先简单介绍一下 PHP 语言和 PHP7 的一些新特性,PHP 的发展趋势以及学好 PHP 语言的方法等,让读者对 PHP 语言有一个整体的了解,然后再慢慢地学习具体内容,最后达到完全掌握 PHP 语言的目的。
1.2使用VScode编写html代码以及php的结合
在浏览器中使用“http://localhost:90”进入数据库进行数据操作Visual Studio Code(简称“VS Code” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。
2.系统分析
2.1 需求分析
本系统包括两类用户:管理员用户和普通用户。管理员可以使用系统所有功能,普通用户只能查询车辆历史记录、用户信息(只限于个人信息)、查询计费标准、查询当前在场信息、查询出入场信息、当前可用车位信息。具体模块划分为如下模块:系统管理模块、信息维护模块、信息查询模块、车场管理模块。
①系统管理模块
管理员注册 功能描述:管理员可以在这里添加新的管理员。
用户注册 功能描述:在这里可添加新的用户(普通用户)。
②信息维护模块
管理员在这里可以修改用户。这里会以表的形式显示所有的用户信息。管理员点击相应的一行用户信息,这行信息会自动填充到表下的面板里,用户可以在面板里修改用户信息,面板下面有两个按钮,修改、删除,点击相应的按钮可以实现相应的功能。
③信息查询模块
登录的管理员可以根据车牌号或用户名查询用户信息,登录的用户只可以查到自己的信息(进出场记录、收费记录)
④ 车场管理模块(应该分为车辆入场和车辆出场两部分)
车辆入场 功能描述:车辆进入停车场时进行登记,记录入场时间并指定车位。
车辆出场 功能描述:车辆开出停车场时进行登记,记录出场的时间并进行自动收费。根据车辆进场时间,出场时间及收费标准自动计算车主应该缴纳的费用。如果停车时间包含不足一小时的时间,超过30分钟按一小时计算,不足三十分钟不计算。
⑤当前在场信息
用户可以在这里查询到当前在场的车辆信息,包括车位号,开始停车时间。
⑥当前可用车位信息
在这里用户可以查询当前可用的车位的信息,包括车位号
⑦计费标准信息
管理员可以在这里根据市场价格变动适当调节停车价格
4.系统设计
4.1 界面设计
登陆与注册界面如图4.1所示
图4.1登录与注册界面
管理员信息界面(可进行增删查改)如图4.2
图4.2管理员信息界面
管理员信息增加界面如图4.3所示
图4.3 管理员信息增加
用户信息界面(可进行增删查改)如图4.4所示
图4.4用户信息
用户信息增加界面如图4.5所示
图4.5 用户信息增加
停车记录界面如图4.6所示
图4.6 停车记录
车费缴纳界面如图4.7所示
图4.7 车费缴纳
费用价格定价界面如图4.8所示
图4.8 费用价格定价
车位状态管理界面如图4.9所示
图4.9 车位状态管理
4.2 内容设计
①登录与注册 实现管理员和用户的注册与登录,将得到的数据添入数据库并保存下来
②管理员信息界面 实现管理员的添加、删除、修改以及查询
③用户信息界面 实现用户的添加、删除、查询以及修改
④停车记录管理 可对停入停车场的车辆进行记录,有车主、电话、车牌号、停车时间,车辆离开后会有时间记录,显示总时长和应缴金额。管理员对停车记录也可进行增删查改。
⑤车辆管理界面 对停入车辆的车主、电话、车牌号、停留时间、离开时间以及是否缴费都会有记录,缴费状态会随是否缴费而进行变化。车费修改界面是由管理员对当下经济变动进行合理的修改。
⑥车位状态管理界面 此界面可随停车记录的变动而变动,在停车记录里有车辆停入并记录下来时,车位状态管理会随之减少相应的车位剩余数,反之增加相应的车位剩余数。
4.3 技术难点
①数据库的建立,有些字段的属性使用场景不同,需要适当改变
②前端HTML的美化需要用到JavaScript,不是很熟练
③ Php未学,现下学,很多语法使用不当,对数据的显示很多时候都会出错
④停车场计费管理中,需要对车辆停入时间和驶出时间进行计算,最后通过单价计算出所需缴纳费用,所以TIMESTAMPIFF的运用也是个难点。
⑤对于车辆停入后来驶出,再次停入的记录,避免车牌号重复的记录是个难点
4.4 问题解决
①场景不同所创建的数据表也有所变化
管理员数据表:SELECT adid
, adname
, adpsw
FROM administrator
WHERE 1;用户数据表:SELECT usid
, usname
, uslpn
, ustel
FROM users
WHERE 1;停车记录表:SELECT prid
, prname
, prtel
, prlpn
, prstart
, prend
, prtimes
, prmoney
, prpay
FROM prpayment
WHERE 1;计费:SELECT pmoney
FROM money
WHERE 1等。
②网上查找JavaScript的相关知识,结合课本修饰美化页面
<script src="JQuery.js"> </script>
<script type="text/javascript">
$(function () {
$("ul.accordion li span").on('click', function ()
{
$(this).parent().siblings().removeClass('selected').find('div').hide();
$(this).parent().addClass('selected');
$(this).next().slideDown(500);
});
});
</script>
③Php进行数据库连接,网络上查找
<?php
session_start();//开启缓存
if(isset($_SESSION['yes'])){
echo '<p align="center">'.$_SESSION['yes'].'</p>';
unset($_SESSION['yes']);
}
$link=mysqli_connect('localhost','root','12345678','park');
if(!$link){
exit('数据库连接失败!');
}
④TIMESTAMPIFF函数的运用
l
e
a
v
e
2
=
m
y
s
q
l
i
q
u
e
r
y
(
leave2=mysqli_query(
leave2=mysqliquery(link,“update prpayment set prtimes =ceil((select * from(select timestampdiff(minute,prstart,prend) from prpayment where prid=
r
o
w
[
0
]
)
a
s
p
r
)
/
60
)
w
h
e
r
e
p
r
i
d
=
row[0])as pr )/60) where prid=
row[0])aspr)/60)whereprid=row[0]”);//计算时间
⑤判断停车场内的车辆是否驶出,可否可插入
l
e
a
v
e
1
=
m
y
s
q
l
i
q
u
e
r
y
(
leave1=mysqli_query(
leave1=mysqliquery(link,“update prpayment set prend=(now()) where prid=$row[0]”);//离开时间
l
e
a
v
e
2
=
m
y
s
q
l
i
q
u
e
r
y
(
leave2=mysqli_query(
leave2=mysqliquery(link,“update prpayment set prtimes =ceil((select * from(select timestampdiff(minute,prstart,prend) from prpayment where prid=
r
o
w
[
0
]
)
a
s
p
r
)
/
60
)
w
h
e
r
e
p
r
i
d
=
row[0])as pr )/60) where prid=
row[0])aspr)/60)whereprid=row[0]”);//计算时间
l
e
a
v
e
3
=
m
y
s
q
l
i
q
u
e
r
y
(
leave3=mysqli_query(
leave3=mysqliquery(link,“update prpayment set prmoney=prtimes*
m
1
[
0
]
w
h
e
r
e
p
r
i
d
=
m1[0] where prid=
m1[0]whereprid=row[0]”);//计算费用
5.系统实施
5.1 数据库连接
<?php
$link=mysqli_connect('localhost','root','12345678','park');
if(!$link){
exit('数据库连接失败!');
}else{
echo "数据库连接成功!";
}
5.2信息注册
<?php
$link=mysqli_connect('localhost','root','12345678','park');
if(!$link){
exit('数据库连接失败!');
}else{
echo "数据库连接成功!";
}
mysqli_set_charset($link,"utf8");
$aname=$_POST['adname'];
$apsw=$_POST['adpsw'];
if(isset($_POST['login'])){//注册
$result1=mysqli_query($link,"select adname from administrator where adname='$aname'");
if(mysqli_num_rows($result1)==true){
echo '
<script>
alert("用户已存在,请重新注册!");
location.href="denglu.html";
</script>
';
}
$result=mysqli_query($link,"insert into administrator(adname,adpsw) values ('$aname','$apsw')");
if($result){
echo '
<script>
alert("注册成功!");
// location.href="Ad.hph";
</script>
';
header('location:Ad.php');
}
else{
echo '
<script>
alert("注册失败,请再次注册!");
location.href="denglu.html";
</script>
';
}
}
if(isset($_POST['register']))//登录
{
$result1=mysqli_query($link,"select adname,adpsw from administrator where adname='$aname' and adpsw='$apsw' ");
if(mysqli_num_rows($result1)==true){
echo '
<script>
alert("登录成功!");
location.href="Ad.php";
</script>
';
}
else
echo '
<script>
alert("登录失败,用户名或密码错误!");
location.href="denglu.html";
</script>
';
}
mysqli_close($link);
?>
5.3 信息添加
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理员信息新增</title>
<style>
#sub{
margin-left:48px;
margin-right:50px;
}
#sub1{
margin-left:10px;
}
</style>
</head>
<body>
<h1 align="center">新增管理员信息记录</h1>
<form action="" method="post" name="inf">
<p align="center">名称:<input type="text" name="an"/></p>
<p align="center">密码:<input type="text" name="ap"/></p>
<p align="center">
<input type="submit" name="insub" value="提交" id="sub">
<input type="submit" name="insub1" value="取消" id="sub1">
</p>
</form>
<?php
session_start();
$link=mysqli_connect('localhost','root','12345678','park');
if(!$link){
exit('数据库连接失败!');
}
if(!empty($_POST["insub"])){
$an=$_POST['an'];
$ap=$_POST['ap'];
mysqli_query($link,"insert administrator (adname,adpsw) values ('$an','$ap')");
$_SESSION['yes']='添加成功!';
header('location:Ad.php');
}
if(!empty($_POST["insub1"])){
header('location:Ad.php');
}
?>
</body>
</html>
5.4 信息修改
<form action="" method="post" name="pr">
<p align="center">
<input type="text" name="sel"/> <input type="submit" value="搜索" name="selsub"/>
<input type="button" value="新增" name="inbut" onclick="location.href='prinsert.php'"/>
</p>
<table align="center" border="1px" cellspacing="0px" width="900px" bordercolor="black">
<tr align="center">
<th>编号</th><th>车主</th><th>电话</th><th>车牌号</th><th>停车时间</th><th>离开时间</th>
<th>总时长</th><th>费用<th>操作</th>
</tr>
<?php
session_start();//开启缓存
$link=mysqli_connect('localhost','root','12345678','park');
$m=mysqli_query($link,"select pmoney from money limit 1 ");
$m1=mysqli_fetch_array($m);//价钱
if(!$link){
exit('数据库连接失败!');
}
if(empty($_POST["selsub"])){
$res=mysqli_query($link,"select * from prpayment order by prid asc ");
}else{
$sel=$_POST["sel"];
$res=mysqli_query($link,"select * from prpayment where prlpn like '%$sel%' or prname like '%$sel%'");
}
while($row=mysqli_fetch_array($res)){
echo '<tr align="center">';
echo "<td>$row[0]</td><td>$row[1]</td><td>$row[2]</td>
<td>$row[3]</td><td>$row[4]</td><td>$row[5]</td>
<td>$row[6]</td><td>$row[7]</td>
<td>
<input type='submit' name='upleave$row[0]' value='离开'/>
<input type='submit' name='upadb$row[0]' value='修改'/>
<input type='submit' name='deladb$row[0]' value='删除'/>
</td>";
echo '</tr>';
if(!empty($_POST["upleave$row[0]"]))//离开
{
// $m= $_SESSION['money'];
$leave1=mysqli_query($link,"update prpayment set prend=(now()) where prid=$row[0]");//离开时间
$leave2=mysqli_query($link,"update prpayment set prtimes =ceil((select * from(select timestampdiff(minute,prstart,prend) from prpayment where prid=$row[0])as pr )/60) where prid=$row[0]");//计算时间
$leave3=mysqli_query($link,"update prpayment set prmoney=prtimes*$m1[0] where prid=$row[0]");//计算费用
mysqli_query($link,"update pstatus set rpspace=(select rpspace from (select rpspace from pstatus) as p)+1");
echo'"<script> location.href="mpay.php";</script>"';
}
if(!empty($_POST["upadb$row[0]"])){//修改
echo '<tr align="center">';
echo "<td>$row[0]</td>
<td><input type='text' name='uppn' value='$row[1]'/></td>
<td><input type='text' name='uppt' value='$row[2]'/></td>
<td><input type='text' name='uppl' value='$row[3]'/></td>
<td><input type='text' name='upps' value='$row[4]'/></td>
<td><input type='text' name='uppe' value='$row[5]'/></td>
<td><input type='text' name='upall' value='$row[6]'/></td>
<td>
<input type='submit' name='upadbs$row[0]' value='确认'/>
<input type='submit' name='upadbc$row[0]' value='取消'/></td>";
echo '</tr>';
}
if(!empty($_POST["upadbs$row[0]"])){//确认修改
$uppn=$_POST['uppn'];
$uppt=$_POST['uppt'];
$uppl=$_POST['uppl'];
$upps=$_POST['upps'];
$uppe=$_POST['uppe'];
$upall=$_POST['upall'];
mysqli_query($link,"update prpayment set prname='$uppn',prtel='$uppt',prlpn='$uppl',prstart='$upps',prend='$uppe',prtimes='$upall'where prid=$row[0]");
echo'"<script> location.href="precord.php";</script>"';//修改信息后更新数据
// header("location:Ad.php");
}
if(!empty($_POST["upadbc$row[0]"])){//取消修改
header('location:#');
}
if(!empty($_POST["deladb$row[0]"])){//删除
// $_SESSION['del_if']=$row[0];
// echo "$row[0]";
echo '<script>
if(confirm("是否删除?")==true){
location.href="precord.php";
}
</script>';
mysqli_query($link,"delete from prpayment where prid=$row[0]");
header('location:precord.php');
}
}
?>
</table>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
5.5 信息删除
if(empty($_POST["selsub"])){
$res=mysqli_query($link,"select * from users order by usid asc ");
}else{
$sel=$_POST["sel"];
$res=mysqli_query($link,"select * from users where usid like '%$sel%' or usname like '%$sel%' or uslpn like '%$sel%'or ustel like '%$sel%'");
}
while($row=mysqli_fetch_array($res)){
echo '<tr align="center">';
echo "<td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td>$row[3]</td>
<td>
<input type='submit' name='upadb$row[0]' value='修改'/>
<input type='submit' name='deladb$row[0]' value='删除'/>
</td>";
echo '</tr>';
if(!empty($_POST["upadb$row[0]"])){//修改
echo '<tr align="center">';
echo "<td>$row[0]</td>
<td><input type='text' name='upun' value='$row[1]'/></td>
<td><input type='text' name='upul' value='$row[2]'/></td>
<td><input type='text' name='uput' value='$row[3]'/></td>
<td><input type='submit' name='upadbs$row[0]' value='确认'/>
<input type='submit' name='upadbc$row[0]' value='取消'/></td>";
echo '</tr>';
}
5.6信息查询
<form action="" method="post" name="ad">
<p align="center">
<input type="text" name="sel"/> <input type="submit" value="搜索" name="selsub"/>
<input type="button" value="新增" name="inbut" onclick="location.href='Adinsert.php'"/>
</p>
<table align="center" border="1px" cellspacing="0px" width="800px" bordercolor="black">
<tr align="center"><th>编号</th><th>管理员名称</th><th>密码</th><th>操作</th></tr>
if(empty($_POST["selsub"])){
$res=mysqli_query($link,"select * from administrator order by adid asc ");
}else{
$sel=$_POST["sel"];
$res=mysqli_query($link,"select * from administrator where adid like '%$sel%' or adname like '%$sel%' or adpsw like '%$sel%'");
}
6.系统调试
6.1 管理员登录与注册
管理员登录与注册如图6.1
图6.1 管理员登录与注册
6.2 用户登录与注册
用户登录与注册如图6.2
图6.2 用户登录与注册
6.3 停车记录管理及停车缴费
停车记录管理及停车缴费如图6.3
图6.3 停车记录管理及收费
6.4 管理员修改停车价格
管理员修改停车价格如图6.4
文章来源:https://www.toymoban.com/news/detail-436635.html
图6.4 管理员修改停车价格文章来源地址https://www.toymoban.com/news/detail-436635.html
到了这里,关于停车场收费系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!