作者简介:全栈开发工程,从事Java、Python、前端、小程序方面的开发和研究,对大数据应用与开发比较感兴趣,
主要内容:Java项目、前端项目、Python项目、小程序开发、大数据项目、单片机
收藏点赞不迷路 关注作者有好处
文末获取源码
感谢您的关注,请收藏以免忘记,点赞以示鼓励,评论给以建议,爱你哟
项目编号:BS-PHP-001
一,环境介绍
语言环境:PHP
数据库:Mysql: mysql5.7
应用服务器:APACHE
开发工具:IDEA或其它
二,项目简介
2.1 目的和意义
本网上书店是针对目前网上书店的实际需求,从实际工作出发,对过去的网上书店存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,借助php编程语言、php技术、mysql数据库和apache服务器来完成系统的所有功能 。本网上书店主要包括系统用户管理模块、新闻文章管理模块、图书信息管理、商城订单管理、登录模块、和退出模块等多个模块。它帮助网上书店实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了网上书店数据资源,有效的减少了网上书店的经济投入,大大提高了网上书店的效率。
随着现代网上书店的快速发展,可以说网上书店已经逐渐成为现代网上书店过程中最为重要的部分之一。但是一直以来我国传统的网上书店并没有建立一套完善的行之有效的网上书店,传统的网上书店已经无法适应高速发展,无论是从效率还是从效果来看都远远的和预计相差甚多,可以断言,传统的网上书店模式已经不再适应,甚至已经拖累了发展。因此,需要一个操作方便,高效的管理体系。
系统设计的主要意义在于,一方面,对于网站来讲,系统上线后可以带来很大的便利性,网上书店属于非常细致的管理模式,要求数据量大,计算机管理可以提高精确性,更为便利的就是信息的查询,大大的提高了工作效率,改善了管理质量;另一方面,通过系统的设计,自己对软件设计有了更加深入的了解,并且产生了浓厚的学习兴趣,在对问题分析方面有了独特的方式,是进入社会之前一次很好的锻炼机会[3][4]。
针对现存的问题和需要,通过功能需求的分析,特建立了数字化、信息化的网上书店。
2.2 功能介绍
本系统主要包含了等系统用户管理、新闻文章管理、图书信息管理、图书类别管理多个功能模块。下面分别简单阐述一下这几个功能模块需求。
管理员的登录模块:管理员登录系统对本系统其他管理模块进行管理。
用户的登录模块:用户登录本系统,对个人的信息等进行查询,操作可使用的功能。
用户注册模块:游客用户可以进行用户注册,系统会反馈是否注册成功。
添加管理员模块:向本系统中添加更多的管理人员,管理员包括普通管理员和超级管理员。
新闻文章管理模块:
新闻文章列表:将数据库的新闻文章表以列表的形式呈现给管理员。
添加新闻文章:实现管理员添加新闻文章。
修改新闻文章:实现管理员修改新闻文章。
留言管理模块:
添加留言:实现管理员添加留言,应该包括留言。
修改留言:实现管理员修改留言,包括修改留言。
图书信息管理模块:
图书信息列表:进行图书信息列表显示。
图书类别管理模块:
图书类别列表:显示系统的所有图书类别,可以通过关键字查询。
图书类别删除:对输入错误或过期的图书类别删除。
用户模块:
资料管理:用户登录本系统。可以对自己的个人主页进行查看。
系统信息:用户可以查看自己的系统提示信息。
修改资料:用户可以修改自己的账号密码。
信息搜索:用户可以通过关键字搜索站内信息。
密码修改:用户可以修改个人登录密码。
系统管理模块:包括数据备份。
退出模块:
管理员退出:管理员用来退出系统。
用户退出:用户用来退出系统。
2.3 总体设计
总体业务流程:以用户的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,管理系统等功能操作,以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,管理系统等功能操作。
系统的业务流程如下图所示。
图1系统业务流程图
系统主要是分为管理员端设计与用户端设计。用户端模块主要是系统中普通用户在注册、登录系统可以看到自己的基本信息,维护自己的信息;管理员端模块主要是管理员登录后对整个系统相关操作进行处理,可进行管理员的添加和删除,可对系统中的用户进行管理。
系统的功能结构图如下图所示。
- 注册模块:游客用户可以系统进行账号注册,账号注册需要输入的数据,有用户名、密码、确认密码、邮箱、qq等,提交注册信息后,系统通过js代码判断用户输入的注册数据是否符合规格,如果符合规格后,在系统数据库中新增一个用户记录,为了安全性,使用md5加密算法完成密码的加密,然后存储数据库。
- 登录模块:在用户登录过程中,包含用户名、密码和验证码,系统需要先对验证码进行正错判断,若用户登录使用了验证码,则用户登录时除了需要输入用户名和密码外,还要输入验证码。在判断验证码为正确后,判断用户名及密码,由于用户密码是用MD5加密过的,所以在对用户密码判断时应先对密码进行MD5转换后再进行判断,当用户名或密码不正确时,返回登录页面显示错误信息。
- 新闻文章管理模块:设计系统的新闻文章表,管理员对新闻文章数据的管理,如增加、删除、修改、查询等,管理员添加新闻文章时,输入新闻文章后,使用js函数判断输入格式是否正确,判断正确后,则往新闻文章表中插入新闻文章数据。
- 图书类别管理模块:设计系统的图书类别表,管理员对图书类别数据的管理,如增加、删除、修改、查询等,管理员添加图书类别时,输入图书类别后,使用js函数判断输入格式是否正确,判断正确后,则往图书类别表中插入图书类别数据。
- 留言管理模块:设计系统的留言信息表,管理员对留言数据的管理,如增加、删除、修改、查询等,管理员添加留言时,输入留言信息后,使用js函数判断输入格式是否正确,判断正确后,则往留言信息表中插入留言数据。
- 图书信息管理模块:图书信息管理模块包括图书信息录入、图书信息列表、图书信息搜索、图书信息修改、图书信息删除,都是通过sql语句来实现数据库操作,并将数据放置到html界面中。
- 系统管理模块:数据备份功能
2.4 数据库设计
1. 建立最符合客户需求的数据库计划。
2. 对数据库进行规范化处理,避免一些不必要的错误。
3. 数据库完整性。
4. 每个用户权限的要求。
5. 应用程序的性能需求,设计数据库时必须利用mysql中的各个功能来维持运行。
6. 数据库定期的维护。
在服务器上建立名为phpwssdhsg5043a779的数据库,其中包括以下表:
allusers表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | username | 150 | 255 | |||
3 | pwd | 150 | 255 | |||
4 | cx | 150 | 255 | |||
5 | addtime | DateTime | 8 | 19 |
dingdan表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | dingdanhao | 150 | 255 | |||
3 | jine | 150 | 255 | |||
4 | dingdanneirong | 1073741823 | 255 | |||
5 | yonghuming | 150 | 255 | |||
6 | xingming | 150 | 255 | |||
7 | youjidizhi | 1073741823 | 255 | |||
8 | youbian | 150 | 255 | |||
9 | dianhua | 150 | 255 | |||
10 | kuaidileixing | 150 | 255 | |||
11 | kuaidifeiyong | 150 | 255 | |||
12 | addtime | DateTime | 8 | 19 | ||
13 | issh | 1073741823 | 255 | |||
14 | iszf | 6 | 255 |
dx表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 10 | ||
2 | leibie | 1073741823 | 255 | |||
3 | content | 1073741823 | 255 | |||
4 | addtime | DateTime | 8 | 19 |
goumaijilu表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | shangpinbianhao | 150 | 255 | |||
3 | shangpinmingcheng | 150 | 255 | |||
4 | shangpinleibie | 150 | 255 | |||
5 | jiage | 150 | 255 | |||
6 | shuliang | 150 | 255 | |||
7 | jine | 150 | 255 | |||
8 | beizhu | 1073741823 | 255 | |||
9 | goumairen | 150 | 255 | |||
10 | issh | 30 | 255 | |||
11 | addtime | DateTime | 8 | 19 |
liuyanban表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | zhanghao | 150 | 255 | |||
3 | zhaopian | 150 | 255 | |||
4 | xingming | 150 | 255 | |||
5 | liuyan | 150 | 255 | |||
6 | addtime | DateTime | 8 | 19 | ||
7 | huifu | 150 | 255 |
pinglun表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 10 | ||
2 | wenzhangID | 1073741823 | 255 | |||
3 | pinglunneirong | 1073741823 | 255 | |||
4 | pinglunren | 1073741823 | 255 | |||
5 | addtime | DateTime | 8 | 19 | ||
6 | biao | 150 | 255 | |||
7 | pingfen | Int | 4 | 10 |
shangpinleibie表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | shangpinleibie | 150 | 255 | |||
3 | addtime | DateTime | 8 | 19 |
shangpinxinxi表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | shangpinbianhao | 150 | 255 | |||
3 | shangpinmingcheng | 150 | 255 | |||
4 | shangpinleibie | 150 | 255 | |||
5 | zhutu | 150 | 255 | |||
6 | xiangqingmiaoshu | 1073741823 | 255 | |||
7 | jiage | 150 | 255 | |||
8 | xiaoliang | Float | 8 | 15 | ||
9 | pingfen | Float | 8 | 15 | ||
10 | kucun | 150 | 255 | |||
11 | faburen | 150 | 255 | |||
12 | issh | 30 | 255 | |||
13 | addtime | DateTime | 8 | 19 |
shoucangjilu表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 10 | ||
2 | username | 1073741823 | 255 | |||
3 | xwid | 1073741823 | 255 | |||
4 | biao | 1073741823 | 255 | |||
5 | addtime | DateTime | 8 | 19 | ||
6 | ziduan | 1073741823 | 255 |
xinwentongzhi表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | biaoti | 1073741823 | 255 | |||
3 | leibie | 150 | 255 | |||
4 | neirong | 1073741823 | 255 | |||
5 | tianjiaren | 150 | 255 | |||
6 | addtime | DateTime | 8 | 19 | ||
7 | shouyetupian | 150 | 255 | |||
8 | dianjilv | Int | 4 | 10 | ||
9 | zhaiyao | 1073741823 | 255 |
yonghuzhuce表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | zhanghao | 150 | 255 | |||
3 | mima | 150 | 255 | |||
4 | xingming | 150 | 255 | |||
5 | xingbie | 150 | 255 | |||
6 | diqu | 150 | 255 | |||
7 | | 150 | 255 | |||
8 | zhaopian | 150 | 255 | |||
9 | addtime | DateTime | 8 | 19 | ||
10 | issh | 30 | 255 | |||
11 | shouji | 1073741823 | 255 |
youqinglianjie表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | id | Int | 4 | 10 | ||
2 | wangzhanmingcheng | 150 | 255 | |||
3 | wangzhi | 150 | 255 | |||
4 | addtime | DateTime | 8 | 19 | ||
5 | logo | 1073741823 | 255 |
三,系统展示
系统首页:
在系统的前台首页,主要有用户登录页面,以及相关新闻的展示等,在首页的导航栏中可看出,该系统主要有网站首页、用户注册、图书信息、系统简介、新闻资讯等主要模块。
为了确保系统安全性,系统操作员只有在后台登录界面输入正确的用户名、密码、权限以及验证码,单击“登录”按钮后才能够进入本系统的后台管理界面。
用户登录流程图如下所示。
在线留言
用户点击在线留言,提交信息,添加成功信息后,用户管理留言信息,审核留言信息。
留言管理流程图如下所示。
在线购物
用户管理
系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。
新闻管理
新闻文章信息添加功能主要指对其标题、内容等一些基本信息的添加、删除和修改。新闻文章查询能根据标题、内容等多种条件对新闻文章信息进行查询。
图书管理
管理员发布新的图书信息,系统显示图书信息,图书信息添加功能主要指对其编号、姓名等一些基本信息的添加、删除和修改。
四,核心代码展示
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>临时离开</title>
<style type="text/css">
<!--
body {
background-color: #999999;
}
-->
</style></head>
<body>
<script language="javascript">
function sAlert()
{
document.onkeydown = function(){
if(event.keyCode==116) {
event.keyCode=0;
event.returnValue = false;
}
}
document.oncontextmenu = function() {event.returnValue = false;}
var msgw,msgh,bordercolor;
msgw=400;//提示窗口的宽度
msgh=100;//提示窗口的高度
titleheight=25 //提示窗口标题高度
bordercolor="#336699";//提示窗口的边框颜色
titlecolor="#99CCFF";//提示窗口的标题颜色
var sWidth,sHeight;
sWidth=document.body.offsetWidth;//获取窗口宽度
sHeight=screen.height;//获取屏幕高度
var bgObj=document.createElement("div");//关键在这里,原理:在body中创建一个div,并将其宽度与高度设置为覆盖整个窗体,如此一来就无法对其它窗口时行操作
bgObj.setAttribute('id','bgDiv');
bgObj.style.position="absolute";
bgObj.style.top="0";
bgObj.style.background="#777";
bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
bgObj.style.opacity="0.6";
bgObj.style.left="0";
bgObj.style.width=sWidth + "px";
bgObj.style.height=sHeight + "px";
bgObj.style.zIndex = "10000";
document.body.appendChild(bgObj);//设置完此div后将其显示出来
var msgObj=document.createElement('div');//创建一个消息窗口
msgObj.setAttribute("id","msgDiv");
msgObj.setAttribute("align","center");
msgObj.style.background="white";
msgObj.style.border="1px solid " + bordercolor;
msgObj.style.position = "absolute";
msgObj.style.left = "50%";
msgObj.style.top = "50%";
msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
msgObj.style.marginLeft = "-225px" ;
msgObj.style.marginTop = -75+document.documentElement.scrollTop+"px";
msgObj.style.width = msgw+"px";
msgObj.style.height = msgh+"px";
msgObj.style.textAlign = "center";
msgObj.style.lineHeight ="25px";
msgObj.style.zIndex = "10001";
var title=document.createElement("h4"); //创建一个标题,以备放置在消息层
title.setAttribute("id","msgTitle");
title.setAttribute("align","right");
title.style.margin="0";
title.style.padding="3px";
title.style.background=bordercolor;
title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
title.style.opacity="0.75";
title.style.border="1px solid " + bordercolor;
title.style.height="18px";
title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
title.style.color="white";
title.style.cursor="pointer";
title.innerHTML="";
//title.onclick=function()
//{
//document.body.removeChild(bgObj);//移除覆盖整个窗口的div层
//document.getElementById("msgDiv").removeChild(title);//移除标题
//document.body.removeChild(msgObj);//移除消息层
//}
document.body.appendChild(msgObj);
document.getElementById("msgDiv").appendChild(title);
var txt=document.createElement("p");
txt.style.margin="1em 0"
txt.setAttribute("id","msgTxt");
txt.innerHTML="<form action='jiesuo.php' method='post'><table><tr><td align=center>请输入您的密码:<input type='text' name='suopinmima'><input type='submit' name'Submit' value='解锁' /></td></tr></table></form>";
document.getElementById("msgDiv").appendChild(txt);
}
</script>
<?php
if($_GET["js"]=="1")
{
?>
<script language="javascript">
location.href='main.php';
</script>
<?php
}
else
{
?>
<script language="javascript">
sAlert();
</script>
<?php
}
?>
</body>
</html>
<?php
$id=$_GET["id"];
include_once 'conn.php';
$ndate =date("Y-m-d");
$addnew=$_POST["addnew"];
if ($addnew=="1" )
{
$biaoti=$_POST["biaoti"];$leibie=$_POST["leibie"];$neirong=$_POST["neirong"];$shouyetupian=$_POST["shouyetupian"];$dianjilv=$_POST["dianjilv"];$tianjiaren=$_POST["tianjiaren"];
$sql="update xinwentongzhi set biaoti='$biaoti',leibie='$leibie',neirong='$neirong',shouyetupian='$shouyetupian',dianjilv='$dianjilv',tianjiaren='$tianjiaren' where id= ".$id;
mysql_query($sql);
echo "<script>javascript:alert('修改成功!');</script>";
}
$sql="select * from xinwentongzhi where id=".$id;
$query=mysql_query($sql);
$rowscount=mysql_num_rows($query);
if($rowscount>0)
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>修改<?php echo mysql_result($query,$i,leibie);?></title>
<link rel="stylesheet" href="kindeditor-4.1.10/themes/default/default.css" />
<link rel="stylesheet" href="kindeditor-4.1.10/plugins/code/prettify.css" />
<script charset="utf-8" src="kindeditor-4.1.10/kindeditor.js"></script>
<script charset="utf-8" src="kindeditor-4.1.10/lang/zh_CN.js"></script>
<script charset="utf-8" src="kindeditor-4.1.10/plugins/code/prettify.js"></script>
<script>
KindEditor.ready(function(K) {
var editor1 = K.create('textarea[name="neirong"]', {
cssPath : 'kindeditor-4.1.10/plugins/code/prettify.css',
uploadJson : 'kindeditor-4.1.10/php/upload_json.php',
fileManagerJson : 'kindeditor-4.1.10/php/file_manager_json.php',
allowFileManager : true,
afterCreate : function() {
var self = this;
K.ctrl(document, 13, function() {
self.sync();
K('form[name=example]')[0].submit();
});
K.ctrl(self.edit.doc, 13, function() {
self.sync();
K('form[name=example]')[0].submit();
});
}
});
prettyPrint();
});
</script>
<link rel="stylesheet" href="css.css" type="text/css"><script language="javascript" src="js/hsgrili.js"></script>
</head>
<script language="javascript">
function OpenScript(url,width,height)
{
var win = window.open(url,"SelectToSort",'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=no,status=yes' );
}
function OpenDialog(sURL, iWidth, iHeight)
{
var oDialog = window.open(sURL, "_EditorDialog", "width=" + iWidth.toString() + ",height=" + iHeight.toString() + ",resizable=no,left=0,top=0,scrollbars=no,status=no,titlebar=no,toolbar=no,menubar=no,location=no");
oDialog.focus();
}
</script>
<body>
<p>修改<?php echo mysql_result($query,$i,leibie);?>: 当前日期: <?php echo $ndate; ?></p>
<form id="form1" name="form1" method="post" action="">
<table width="100%" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="#00FFFF" style="border-collapse:collapse">
<tr><td>标题:</td><td><input name='biaoti' type='text' id='biaoti' size='50' value='<?php echo mysql_result($query,$i,biaoti);?>' /></td></tr><tr><td>类别:</td><td><input name='leibie' type='text' id='leibie' value='<?php echo mysql_result($query,$i,leibie);?>' /></td></tr><tr><td>内容:</td><td><textarea name="neirong" style="width:700px;height:200px;visibility:hidden;"><?php echo mysql_result($query,$i,neirong);?></textarea></td>
</tr><tr><td>首页图片:</td><td><input name='shouyetupian' type='text' id='shouyetupian' size='50' value='<?php echo mysql_result($query,$i,shouyetupian);?>' /> <a href="javaScript:OpenScript('upfile.php?Result=shouyetupian',460,180)"><img src="Images/Upload.gif" width="30" height="16" border="0" align="absmiddle" /></a></td></tr><tr><td>点击率:</td><td><input name='dianjilv' type='text' id='dianjilv' value='<?php echo mysql_result($query,$i,dianjilv);?>' /></td></tr><tr><td>添加人:</td><td><input name='tianjiaren' type='text' id='tianjiaren' value='<?php echo mysql_result($query,$i,tianjiaren);?>' /></td></tr>
<tr>
<td> </td>
<td><input name="addnew" type="hidden" id="addnew" value="1" />
<input type="submit" name="Submit" value="修改" />
<input type="reset" name="Submit2" value="重置" /></td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
五,项目总结
经过几个月的努力还坚持,网上书店终于完成了,程序功能模块能按照需求来运行,能实现多用户的迸发使用,但是系统由于设计经验以及专业知识的局限性,在本系统的开发过程中,在一些功能方面和业务逻辑方面做得不是很完善,系统还存在一些缺陷。界面的设计从布局到外观,受限于自身的设计功底较低,没能达到自己所要设计的界面要求,另一方面,系统存在一些没有考虑的问题和模块。
在学习的过程中首次进行独立设计工作,编码过程出现了许多问题和困难,原以为正确无误的程序运行过程中不会遇到问题,但是在运行过程中也总会出现各种各样的问题,在调试过程中找不出运行出错的原因。而这些基本问题却都是一些简单的问题,例如标点符号应该是英文状态下的,却因为不好的编程习惯造成了一些中文的符号输入,经过仔细观察和老师的帮组下,还是将问题解决了。
目前系统的功能比较简单,还存在许多瑕疵,这是一份遗憾,也是促进我不断进步的动力。