??1.系統(tǒng)的開發(fā)工具
????1.1 AppServe集成應(yīng)用
????Mysql:MySQL 是一款安全、跨平臺(tái)、高效的,并與 PHP、Java 等主流編程語(yǔ)言緊密結(jié)合的數(shù)據(jù)庫(kù)系統(tǒng)。該數(shù)據(jù)庫(kù)系統(tǒng)是由瑞典的 MySQL AB 公司開發(fā)、發(fā)布并支持,由 MySQL 的初始開發(fā)人員 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。
????Php:PHP是一種嵌入式腳本語(yǔ)言,由于 PHP 簡(jiǎn)單、易用、跨平臺(tái)、開源等特點(diǎn),使其成為主流的網(wǎng)站開發(fā)語(yǔ)言,使用 PHP 開發(fā)的網(wǎng)站遍及各個(gè)行業(yè)。在具體開始學(xué)習(xí) PHP 之前,本章先簡(jiǎn)單介紹一下 PHP 語(yǔ)言和 PHP7 的一些新特性,PHP 的發(fā)展趨勢(shì)以及學(xué)好 PHP 語(yǔ)言的方法等,讓讀者對(duì) PHP 語(yǔ)言有一個(gè)整體的了解,然后再慢慢地學(xué)習(xí)具體內(nèi)容,最后達(dá)到完全掌握 PHP 語(yǔ)言的目的。
????1.2使用VScode編寫html代碼以及php的結(jié)合
在瀏覽器中使用“http://localhost:90”進(jìn)入數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)操作Visual Studio Code(簡(jiǎn)稱“VS Code” )是Microsoft在2015年4月30日Build開發(fā)者大會(huì)上正式宣布一個(gè)運(yùn)行于 Mac OS X、Windows和 Linux 之上的,針對(duì)于編寫現(xiàn)代Web和云應(yīng)用的跨平臺(tái)源代碼編輯器,可在桌面上運(yùn)行,并且可用于Windows,macOS和Linux。它具有對(duì)JavaScript,TypeScript和Node.js的內(nèi)置支持,并具有豐富的其他語(yǔ)言(例如C++,C#,Java,Python,PHP,Go)和運(yùn)行時(shí)(例如.NET和Unity)擴(kuò)展的生態(tài)系統(tǒng)。
??2.系統(tǒng)分析
????2.1 需求分析
本系統(tǒng)包括兩類用戶:管理員用戶和普通用戶。管理員可以使用系統(tǒng)所有功能,普通用戶只能查詢車輛歷史記錄、用戶信息(只限于個(gè)人信息)、查詢計(jì)費(fèi)標(biāo)準(zhǔn)、查詢當(dāng)前在場(chǎng)信息、查詢出入場(chǎng)信息、當(dāng)前可用車位信息。具體模塊劃分為如下模塊:系統(tǒng)管理模塊、信息維護(hù)模塊、信息查詢模塊、車場(chǎng)管理模塊。
①系統(tǒng)管理模塊
管理員注冊(cè) 功能描述:管理員可以在這里添加新的管理員。
用戶注冊(cè) 功能描述:在這里可添加新的用戶(普通用戶)。
②信息維護(hù)模塊
管理員在這里可以修改用戶。這里會(huì)以表的形式顯示所有的用戶信息。管理員點(diǎn)擊相應(yīng)的一行用戶信息,這行信息會(huì)自動(dòng)填充到表下的面板里,用戶可以在面板里修改用戶信息,面板下面有兩個(gè)按鈕,修改、刪除,點(diǎn)擊相應(yīng)的按鈕可以實(shí)現(xiàn)相應(yīng)的功能。
③信息查詢模塊
登錄的管理員可以根據(jù)車牌號(hào)或用戶名查詢用戶信息,登錄的用戶只可以查到自己的信息(進(jìn)出場(chǎng)記錄、收費(fèi)記錄)
④ 車場(chǎng)管理模塊(應(yīng)該分為車輛入場(chǎng)和車輛出場(chǎng)兩部分)
車輛入場(chǎng) 功能描述:車輛進(jìn)入停車場(chǎng)時(shí)進(jìn)行登記,記錄入場(chǎng)時(shí)間并指定車位。
車輛出場(chǎng) 功能描述:車輛開出停車場(chǎng)時(shí)進(jìn)行登記,記錄出場(chǎng)的時(shí)間并進(jìn)行自動(dòng)收費(fèi)。根據(jù)車輛進(jìn)場(chǎng)時(shí)間,出場(chǎng)時(shí)間及收費(fèi)標(biāo)準(zhǔn)自動(dòng)計(jì)算車主應(yīng)該繳納的費(fèi)用。如果停車時(shí)間包含不足一小時(shí)的時(shí)間,超過30分鐘按一小時(shí)計(jì)算,不足三十分鐘不計(jì)算。
⑤當(dāng)前在場(chǎng)信息
用戶可以在這里查詢到當(dāng)前在場(chǎng)的車輛信息,包括車位號(hào),開始停車時(shí)間。
⑥當(dāng)前可用車位信息
在這里用戶可以查詢當(dāng)前可用的車位的信息,包括車位號(hào)
⑦計(jì)費(fèi)標(biāo)準(zhǔn)信息
管理員可以在這里根據(jù)市場(chǎng)價(jià)格變動(dòng)適當(dāng)調(diào)節(jié)停車價(jià)格
??4.系統(tǒng)設(shè)計(jì)
????4.1 界面設(shè)計(jì)
登陸與注冊(cè)界面如圖4.1所示
????????????????????????????????????????????圖4.1登錄與注冊(cè)界面
管理員信息界面(可進(jìn)行增刪查改)如圖4.2
????????????????????????????????????????????圖4.2管理員信息界面
管理員信息增加界面如圖4.3所示
????????????????????????????????????????????圖4.3 管理員信息增加
用戶信息界面(可進(jìn)行增刪查改)如圖4.4所示
????????????????????????????????????????????圖4.4用戶信息
用戶信息增加界面如圖4.5所示
????????????????????????????????????????????圖4.5 用戶信息增加
停車記錄界面如圖4.6所示
????????????????????????????????????????????圖4.6 停車記錄
車費(fèi)繳納界面如圖4.7所示
????????????????????????????????????????????圖4.7 車費(fèi)繳納
費(fèi)用價(jià)格定價(jià)界面如圖4.8所示
????????????????????????????????????????????圖4.8 費(fèi)用價(jià)格定價(jià)
車位狀態(tài)管理界面如圖4.9所示
????????????????????????????????????????????圖4.9 車位狀態(tài)管理
????4.2 內(nèi)容設(shè)計(jì)
①登錄與注冊(cè) 實(shí)現(xiàn)管理員和用戶的注冊(cè)與登錄,將得到的數(shù)據(jù)添入數(shù)據(jù)庫(kù)并保存下來
②管理員信息界面 實(shí)現(xiàn)管理員的添加、刪除、修改以及查詢
③用戶信息界面 實(shí)現(xiàn)用戶的添加、刪除、查詢以及修改
④停車記錄管理 可對(duì)停入停車場(chǎng)的車輛進(jìn)行記錄,有車主、電話、車牌號(hào)、停車時(shí)間,車輛離開后會(huì)有時(shí)間記錄,顯示總時(shí)長(zhǎng)和應(yīng)繳金額。管理員對(duì)停車記錄也可進(jìn)行增刪查改。
⑤車輛管理界面 對(duì)停入車輛的車主、電話、車牌號(hào)、停留時(shí)間、離開時(shí)間以及是否繳費(fèi)都會(huì)有記錄,繳費(fèi)狀態(tài)會(huì)隨是否繳費(fèi)而進(jìn)行變化。車費(fèi)修改界面是由管理員對(duì)當(dāng)下經(jīng)濟(jì)變動(dòng)進(jìn)行合理的修改。
⑥車位狀態(tài)管理界面 此界面可隨停車記錄的變動(dòng)而變動(dòng),在停車記錄里有車輛停入并記錄下來時(shí),車位狀態(tài)管理會(huì)隨之減少相應(yīng)的車位剩余數(shù),反之增加相應(yīng)的車位剩余數(shù)。
????4.3 技術(shù)難點(diǎn)
①數(shù)據(jù)庫(kù)的建立,有些字段的屬性使用場(chǎng)景不同,需要適當(dāng)改變
②前端HTML的美化需要用到JavaScript,不是很熟練
③ Php未學(xué),現(xiàn)下學(xué),很多語(yǔ)法使用不當(dāng),對(duì)數(shù)據(jù)的顯示很多時(shí)候都會(huì)出錯(cuò)
④停車場(chǎng)計(jì)費(fèi)管理中,需要對(duì)車輛停入時(shí)間和駛出時(shí)間進(jìn)行計(jì)算,最后通過單價(jià)計(jì)算出所需繳納費(fèi)用,所以TIMESTAMPIFF的運(yùn)用也是個(gè)難點(diǎn)。
⑤對(duì)于車輛停入后來駛出,再次停入的記錄,避免車牌號(hào)重復(fù)的記錄是個(gè)難點(diǎn)
????4.4 問題解決
①場(chǎng)景不同所創(chuàng)建的數(shù)據(jù)表也有所變化
管理員數(shù)據(jù)表:SELECT adid
, adname
, adpsw
FROM administrator
WHERE 1;用戶數(shù)據(jù)表:SELECT usid
, usname
, uslpn
, ustel
FROM users
WHERE 1;停車記錄表:SELECT prid
, prname
, prtel
, prlpn
, prstart
, prend
, prtimes
, prmoney
, prpay
FROM prpayment
WHERE 1;計(jì)費(fèi):SELECT pmoney
FROM money
WHERE 1等。
②網(wǎng)上查找JavaScript的相關(guān)知識(shí),結(jié)合課本修飾美化頁(yè)面
<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進(jìn)行數(shù)據(jù)庫(kù)連接,網(wǎng)絡(luò)上查找
<?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('數(shù)據(jù)庫(kù)連接失??!');
}
④TIMESTAMPIFF函數(shù)的運(yùn)用
l
e
a
v
e
2
=
m
y
s
q
l
i
q
u
e
r
y
(
leave2=mysqli_query(
leave2=mysqliq?uery(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]”);//計(jì)算時(shí)間
⑤判斷停車場(chǎng)內(nèi)的車輛是否駛出,可否可插入
l
e
a
v
e
1
=
m
y
s
q
l
i
q
u
e
r
y
(
leave1=mysqli_query(
leave1=mysqliq?uery(link,“update prpayment set prend=(now()) where prid=$row[0]”);//離開時(shí)間
l
e
a
v
e
2
=
m
y
s
q
l
i
q
u
e
r
y
(
leave2=mysqli_query(
leave2=mysqliq?uery(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]”);//計(jì)算時(shí)間
l
e
a
v
e
3
=
m
y
s
q
l
i
q
u
e
r
y
(
leave3=mysqli_query(
leave3=mysqliq?uery(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]”);//計(jì)算費(fèi)用
??5.系統(tǒng)實(shí)施
????5.1 數(shù)據(jù)庫(kù)連接
<?php
$link=mysqli_connect('localhost','root','12345678','park');
if(!$link){
exit('數(shù)據(jù)庫(kù)連接失??!');
}else{
echo "數(shù)據(jù)庫(kù)連接成功!";
}
????5.2信息注冊(cè)
<?php
$link=mysqli_connect('localhost','root','12345678','park');
if(!$link){
exit('數(shù)據(jù)庫(kù)連接失敗!');
}else{
echo "數(shù)據(jù)庫(kù)連接成功!";
}
mysqli_set_charset($link,"utf8");
$aname=$_POST['adname'];
$apsw=$_POST['adpsw'];
if(isset($_POST['login'])){//注冊(cè)
$result1=mysqli_query($link,"select adname from administrator where adname='$aname'");
if(mysqli_num_rows($result1)==true){
echo '
<script>
alert("用戶已存在,請(qǐng)重新注冊(cè)!");
location.href="denglu.html";
</script>
';
}
$result=mysqli_query($link,"insert into administrator(adname,adpsw) values ('$aname','$apsw')");
if($result){
echo '
<script>
alert("注冊(cè)成功!");
// location.href="Ad.hph";
</script>
';
header('location:Ad.php');
}
else{
echo '
<script>
alert("注冊(cè)失敗,請(qǐng)?jiān)俅巫?cè)!");
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("登錄失敗,用戶名或密碼錯(cuò)誤!");
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('數(shù)據(jù)庫(kù)連接失敗!');
}
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>編號(hào)</th><th>車主</th><th>電話</th><th>車牌號(hào)</th><th>停車時(shí)間</th><th>離開時(shí)間</th>
<th>總時(shí)長(zhǎng)</th><th>費(fèi)用<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);//價(jià)錢
if(!$link){
exit('數(shù)據(jù)庫(kù)連接失??!');
}
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]");//離開時(shí)間
$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]");//計(jì)算時(shí)間
$leave3=mysqli_query($link,"update prpayment set prmoney=prtimes*$m1[0] where prid=$row[0]");//計(jì)算費(fèi)用
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='確認(rèn)'/>
<input type='submit' name='upadbc$row[0]' value='取消'/></td>";
echo '</tr>';
}
if(!empty($_POST["upadbs$row[0]"])){//確認(rèn)修改
$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>"';//修改信息后更新數(shù)據(jù)
// 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='確認(rèn)'/>
<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>編號(hào)</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.系統(tǒng)調(diào)試
????6.1 管理員登錄與注冊(cè)
管理員登錄與注冊(cè)如圖6.1
????????????????????????????????????????????圖6.1 管理員登錄與注冊(cè)
????6.2 用戶登錄與注冊(cè)
用戶登錄與注冊(cè)如圖6.2
????????????????????????????????????????????圖6.2 用戶登錄與注冊(cè)
????6.3 停車記錄管理及停車?yán)U費(fèi)
停車記錄管理及停車?yán)U費(fèi)如圖6.3
????????????????????????????????????????????圖6.3 停車記錄管理及收費(fèi)
????6.4 管理員修改停車價(jià)格
管理員修改停車價(jià)格如圖6.4
文章來源:http://www.zghlxwxcb.cn/news/detail-436635.html
????????????????????????????????????????????圖6.4 管理員修改停車價(jià)格文章來源地址http://www.zghlxwxcb.cn/news/detail-436635.html
到了這里,關(guān)于停車場(chǎng)收費(fèi)系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!