新書推薦:
《
人生解忧:佛学入门四十讲
》
售價:HK$
107.8
《
东野圭吾:分身(东野圭吾无法再现的双女主之作 奇绝瑰丽、残忍又温情)
》
售價:HK$
64.9
《
浪潮将至
》
售價:HK$
86.9
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:HK$
57.2
《
斯大林格勒:为了正义的事业(格罗斯曼“战争二部曲”的第一部,《生活与命运》前传)
》
售價:HK$
184.8
《
日内交易与波段交易的资金风险管理
》
售價:HK$
85.8
《
自然信息图:一目了然的万物奇观
》
售價:HK$
140.8
《
经纬度丛书·州县之民:治乱之间的小民命运
》
售價:HK$
96.8
|
內容簡介: |
PHP语言是当今使用最为频繁的网络编程语言之一,一直在Web开发领域占据重要的地位。本书通过12个综合实例的实现过程,详细讲解了PHP语言在实践项目中的综合运用过程。这12个实例包括大学图书馆管理系统、在线考试系统、贝斯会客间、四公里社区网、电子相册管理系统、新春许愿墙、图书馆管理系统、典型企业网站、电子商务网站、开心斗地主、在线微博系统和OA在线办公系统。在具体讲解每个实例时,都遵循项目的进度来讲解,从接到项目,到具体开发,再到最后的调试和发布。书中内容循序渐进,并穿插了学习技巧和职场生存法则,可引领读者全面掌握PHP语言。
本书不但适用于PHP语言的初学者,也适用于有一定PHP语言基础的读者,甚至可以作为有一定造诣的程序员的参考书。
|
目錄:
|
目 录
第1章 大学图书馆管理系统1
1.1 赢在起点2
1.1.1 赢在起点——程序员的职业
规划2
1.1.2 赢在起点——做好项目分析2
1.2 系统介绍4
1.2.1 背景介绍4
1.2.2 系统需求分析4
1.2.3 系统功能模块4
1.3 系统运行流程5
1.4 文件夹组织结构6
1.5 数据库设计6
1.5.1 数据库分析6
1.5.2 数据库概念设计7
1.5.3 创建数据库及数据表7
1.6 具体编码9
1.6.1 系统首页9
1.6.2 管理员设置模块13
1.6.3 图书档案管理模块19
1.6.4 图书借还模块22
1.6.5 图书借阅查询模块34
第2章 在线考试系统39
2.1 修炼自身40
2.1.1 “码农”和“高大上”40
2.1.2 赢在自身——快速提升
自身修为40
2.2 系统介绍41
2.2.1 背景介绍41
2.2.2 系统开发的目的和意义42
2.3 系统分析42
2.3.1 可行性分析43
2.3.2 需求分析43
2.4 系统设计43
2.4.1 系统的总体设计43
2.4.2 数据库架构44
2.5 系统结构设计45
2.5.1 系统功能结构45
2.5.2 系统流程图45
2.6 数据库设计46
2.6.1 数据库分析46
2.6.2 数据库概念设计46
2.6.3 数据库物理设计47
2.7 系统配置实现49
2.8 前台详细设计与实现49
2.8.1 前台首页49
2.8.2 考生信息模块51
2.8.3 在线考试模块55
2.9 后台详细设计与实现68
2.9.1 考生信息管理模块69
2.9.2 考题信息添加及管理模块71
2.10 系统测试73
第3章 贝斯会客间75
3.1 程序员职场生存秘籍76
3.1.1 程序员的生存现状76
3.1.2 赢在职场——修炼程序员
职场秘籍76
3.2 新的项目77
3.3 系统概述和总体设计78
3.3.1 系统需求分析78
3.3.2 系统运行流程79
3.4 数据库设计79
3.4.1 数据库结构设计79
3.4.2 数据库配置信息80
3.4.3 操作数据的常用方法81
3.5 前台设计82
3.5.1 前台首页82
3.5.2 首页中调用的页面85
3.5.3 签写留言页面88
3.5.4 验证码91
3.6 后台设计91
3.6.1 后台登录首页92
3.6.2 管理留言页面94
3.6.3 编辑回复留言页面95
3.6.4 系统设置页面98
3.6.5 修改密码页面100
3.7 设置留言规则103
3.8 系统测试104
第4章 四公里社区网107
4.1 部门沟通之“钥”108
4.1.1 开发公司部门现状108
4.1.2 赢在公司——探讨部门
沟通之道109
4.2 新的项目110
4.3 系统概述和总体设计110
4.3.1 系统需求分析110
4.3.2 系统运行流程111
4.4 数据库设计111
4.4.1 数据库结构设计111
4.4.2 数据库配置信息113
4.5 首页设计113
4.5.1 系统首页114
4.5.2 顶部页面114
4.5.3 底部页面115
4.5.4 左侧页面115
4.6 免费供求信息发布模块118
4.6.1 免费信息发布118
4.6.2 免费信息检查120
4.6.3 免费信息处理121
4.7 信息检索模块122
4.8 后台管理126
4.8.1 登录页面126
4.8.2 后台首页127
4.8.3 后台首页中调入的页面128
4.8.4 付费信息发布133
4.8.5 付费信息管理134
4.8.6 付费信息审核137
4.8.7 付费信息删除137
第5章 电子相册管理系统139
5.1 体验代码之美140
5.1.1 程序员经常忽视的问题140
5.1.2 赢在代码本身——体现
程序之美140
5.2 新的项目141
5.3 系统概述和总体设计142
5.3.1 系统需求分析142
5.3.2 总体设计142
5.4 数据库设计143
5.4.1 数据库结构设计143
5.4.2 数据库配置信息144
5.4.3 系统配置信息144
5.5 前台设计145
5.5.1 系统首页145
5.5.2 首页涉及的代码146
5.5.3 关于页面处理的基类150
5.5.4 显示相册列表152
5.5.5 进行图片处理154
5.5.6 显示最新上传的图片156
5.5.7 显示热门图片157
5.6 后台设计158
5.6.1 后台首页158
5.6.2 后台管理页面161
5.6.3 创建相册163
5.6.4 编辑相册164
5.6.5 设置相册165
5.6.6 上传图片172
5.6.7 图片的后台展示177
5.7 为相册建立模型181
5.7.1 上传功能的模型181
5.7.2 设置系统的模型184
5.7.3 图片的模型186
5.8 系统测试187
第6章 新春许愿墙189
6.1 软件项目的可扩展性190
6.1.1 成熟软件的完善是一个
不断更新的过程190
6.1.2 赢在项目质量——让程序
具有更好的可扩展性190
6.2 新的项目191
6.3 系统概述和总体设计192
6.3.1 系统需求分析192
6.3.2 系统运行流程193
6.4 数据库设计193
6.4.1 数据库结构设计193
6.4.2 数据库配置信息193
6.4.3 建立一个数据库类196
6.5 前台设计200
6.5.1 前台首页200
6.5.2 前台首页涉及的代码204
6.5.3 许愿页面205
6.6 后台设计210
6.6.1 登录页面210
6.6.2 管理页面212
6.6.3 退出管理214
第7章 图书馆管理系统215
7.1 模块化编程思想216
7.1.1 现实中的模块化编程216
7.1.2 赢在面向对象——实现
高内聚和低耦合代码216
7.2 新的项目217
7.3 系统概述和总体设计218
7.3.1 系统需求分析218
7.3.2 系统运行流程219
7.4 数据库设计221
7.4.1 数据库结构设计221
7.4.2 数据库配置信息224
7.5 首页设计224
7.5.1 权限判断224
7.5.2 借阅排行榜226
7.6 管理员设置模块227
7.6.1 管理员登录227
7.6.2 查看管理员230
7.6.3 添加管理员232
7.6.4 设置管理员权限233
7.6.5 删除管理员234
7.7 图书档案管理模块234
7.7.1 查看图书列表235
7.7.2 添加图书信息237
7.7.3 修改图书信息240
7.7.4 删除图书信息241
7.8 图书借还模块241
7.8.1 图书借阅241
7.8.2 图书续借244
7.8.3 图书借阅查询247
7.8.4 借阅到期提醒250
7.9 读者管理252
7.9.1 读者类型管理252
7.9.2 读者档案管理253
第8章 典型企业网站257
8.1 程序的可移植性258
8.1.1 什么是可移植性258
8.1.2 赢在技术——通过可移植性
实现跨平台项目258
8.2 新的项目259
8.3 系统概述和总体设计259
8.3.1 系统需求分析260
8.3.2 系统运行流程260
8.4 数据库设计261
8.4.1 数据库结构设计261
8.4.2 数据库配置信息265
8.5 系统框架设计265
8.5.1 新闻中心265
8.5.2 图片中心268
8.5.3 在线反馈275
8.5.4 基本模块277
8.6 后台管理287
8.6.1 后台登录页面287
8.6.2 产品中心管理288
第9章 电子商务网站297
9.1 提高程序的健壮性298
9.1.1 一段房贷代码引发的深思298
9.1.2 赢在高质量——提高程序
的健壮性298
9.2 新的项目299
9.3 系统概述和总体设计300
9.3.1 系统需求分析300
9.3.2 系统运行流程300
9.4 数据库设计301
9.4.1 数据库结构设计301
9.4.2 数据库配置信息303
9.4.3 数据库编程305
9.5 前台设计307
9.5.1 用户注册和登录管理308
9.5.2 产品展示315
9.5.3 购物车316
9.5.4 产品分类管理319
9.6 后台管理321
9.6.1 添加新产品321
9.6.2 修改产品信息322
9.6.3 删除产品323
9.6.4 管理产品目录327
9.7 数据备份和恢复328
9.7.1 数据备份328
9.7.2 数据恢复331
第10章 开心斗地主335
10.1 做好项目管理者336
10.1.1 软件工程师到项目经理到
管理者之路336
10.1.2 赢在管理——运转一个
健步如飞的团队336
10.2 新的项目338
10.3 使用MVC设计思想338
10.3.1 MVC设计思想介绍339
10.3.2 MVC设计模式的实现339
10.3.3 MVC设计模式的扩展和
优缺点340
10.4 系统概述和总体设计341
10.4.1 系统需求分析341
10.4.2 系统运行流程342
10.5 数据库设计343
10.5.1 数据库结构设计343
10.5.2 数据库配置信息345
10.5.3 常用的数据库程序345
10.6 用户管理模块346
10.6.1 用户登录346
10.6.2 用户注册349
10.6.3 用户退出350
10.7 房间管理设计351
10.7.1 游戏大厅351
10.7.2 选择房间353
10.8 游戏模块354
10.8.1 邀请朋友354
10.8.2 建立游戏规则357
第11章 在线微博系统365
11.1 算法是程序的灵魂366
11.1.1 何谓算法366
11.1.2 赢在技术沉淀——计算机
中的算法366
11.1.3 赢在技术沉淀——表示
算法的方法367
11.2 新的项目369
11.3 系统概述和总体设计370
11.3.1 系统需求分析370
11.3.2 系统运行流程370
11.4 编写标准项目计划书371
11.4.1 可行性分析371
11.4.2 编写项目计划书372
11.5 数据库设计374
11.5.1 数据库结构设计374
11.5.2 数据库配置信息375
11.6 系统配置信息375
11.6.1 站点配置信息376
11.6.2 用户信息376
11.7 前台设计377
11.7.1 系统首页377
11.7.2 首页配置页面378
11.7.3 评论页面380
11.7.4 关注页面382
11.8 建立各种类383
11.8.1 分页类383
11.8.2 数据库类386
11.8.3 微博类389
11.9 后台管理391
11.9.1 后台登录页面392
11.9.2 账号管理393
11.9.3 微博设置395
11.9.4 同步更新397
11.9.5 RSS订阅398
11.9.6 关注管理400
11.10 系统测试401
第12章 OA在线办公系统403
12.1 走向架构师之路404
12.1.1 什么是架构师404
12.1.2 赢在架构——如何成为
一名架构师404
12.1.3 赢在架构——何种架构
才算是一个“美丽”的架构405
12.1.4 赢在架构——如何打造
一个美丽的架构405
12.2 新的项目406
12.3 系统概述和总体设计407
12.3.1 系统需求分析407
12.3.2 系统运行流程407
12.4 数据库设计408
12.4.1 数据库结构设计408
12.4.2 数据库配置信息410
12.4.3 系统配置信息411
12.5 系统框架设计411
12.5.1 验证码412
12.5.2 用户注册413
12.5.3 办公文件上传414
12.5.4 系统首页417
12.5.5 登录管理420
12.6 日常办公常用功能的实现423
12.6.1 网络硬盘423
12.6.2 短信箱428
12.6.3 日程安排431
12.6.4 通讯录434
12.6.5 课表查询440
12.6.6 发表文章443
12.7 基本管理功能的实现446
12.7.1 部门、组别、学科和
班级管理446
12.7.2 栏目操作457
12.7.3 用户管理459
12.7.4 学生成绩管理460
12.7.5 分页设置463
|
內容試閱:
|
2.8 前台详细设计与实现
光盘:视频\第2章\前台详细设计与实现.avi
对于动态在线Web系统来说,整个页面可以分为前台展示页面和后台管理页面两大部分。其中前台展示页面供互联网用户浏览,后台管理页面供站点管理员管理并维护这个站点。本节将介绍本项目前台页面的具体实现过程。
2.8.1 前台首页
在线考试系统的前台首页如图2-13所示,其中包括“考生注册”、“考生登录”、“修改密码”、“成绩查询”、“进入考场”和“退出信息”6个导航链接。
图2-13 前台首页
前台首页主要实现了考生登录功能,页面中涉及的重要表单元素如表2-1所示。
表2-1 前台首页中的表单元素
名 称元素类型重要属性含 义
form1
online_number
online_pass
Submit
Submitform
text
password
Submit
Submitmethod="post" action="denglu_ok.php"
id="online_number" size="20"
id="online_pass" size="20"
value="提交"
value="清空"表单
准考证号码
密码
“提交”按钮
“清空”按钮
考生在页面中输入准确的准考证号和密码后,单击“提交”按钮,系统提交表单信息到数据处理页面,应用mysql_query函数检索考生是否能够成功登录。如果查询结果为真,则将准考证号存储在session变量中;否则弹出提示信息。相应代码如下:
?php session_start;
include"connconn.php";
$online_number=isset$_POST["online_number"];
$online_pass=isset$_POST["online_pass"];
$sql="select * from tb_user where online_number=''{$online_number}'' and online_pass=''{$online_pass}''";
mysql_query$sql;
$result=mysql_affected_rows;
if$result1{
echo "scriptalert准考证号码或密码错误'';history.go-1;script";
} else{ session_register"online_number";
echo "scriptalert''登录成功!''; window.location.href=''index.php?online=进入考场'';script";
}
?
首页会根据用户的登录状态显示不同的内容,如果用户没有登录,则显示用户注册界面;如果用户已经登录,则显示“修改密码”、“成绩查询”等操作链接,具体实现代码如下:
td height="350" align="center" valign="top" bgcolor="#FFFFFF"?php
switch$online{
case "用户注册":
include"zhuce.php";
break;
case "用户登录":
include"denglu.php";
break;
case "修改密码":
include"xgmm.php";
break;
case "成绩查询":
include"cjcx.php";
break;
case "进入考场":
include"ksgz.php";
break;
case "选择考题":
include"jrkc.php";
break;
case "开始考试":
include"ksks.php";
break;
case "":
include"denglu.php";
break;
}
?td
2.8.2 考生信息模块
考生信息模块主要包括考生注册、考生登录、修改密码三个功能。考生首先要注册为网站用户,然后才能登录网站进行一系列的操作;登录后考生还可以修改自己的密码。考生信息模块的系统流程如图2-14所示。
考生信息模块中会应用到Ajax无刷新技术,以获取考生的准考证号码和密码。在介绍该功能的实现过程之前,先对Ajax技术中的XMLHttpRequest对象的属性和方法进行详细的讲解。XMLHttpRequest对象是Ajax技术的核心,有关该对象的属性和方法的详细介绍如表2-2和表2-3所示。
表2-2 XMLHttpRequest对象的属性
属 性描 述
readyState
onreadystatechange
status
responseText
ResponseBody
ResponseXML返回当前的请求状态
当readyState属性改变时就可以读取此属性值
返回http状态码
将返回的响应信息用字符串表示
返回响应信息正文,格式为字节数组
将响应的document对象解析成XML文档并返回
表2-3 XMlHttpRequest对象的方法
方 法描 述
Open
Send
GetAllReponseHeaders
GetResponseHearder
SetRequestHeader
Abort初始化一个新请求
发送请求
返回所有Http头信息
返回指定的Http头信息
添加指定的Http头信息
停止当前的Http请求
考生注册页面zhuce.php用于实现考生注册信息的提交,并通过Ajax 的页面无刷新技术获取考生的准考证号和密码。zhuce.php文件中的关键代码如下:
script type="textjavascript" src="jszhuce_js.js"script
input type="button" name="Submit" value="注册" onClick="process"
div id="divMessage"
在zhuce_js.js文件中先定义一个createXmlHttpRequestObject对象,并获取XMLHttp- Request对象,然后定义xmlHttp 用来存储将要使用的XMLHttpRequest对象。关键代码如下:
定义XMLHttpRequest对象
var xmlHttp=createXmlHttpRequestObject;
获取XMLHttpRequest对象
function createXmlHttpRequestObject{
用来存储将要使用的XMLHttpRequest对象
var xmlHttp;
如果在Internet Explorer下运行
ifwindow.ActiveXObject{
try{
xmlHttp=new ActiveXObject"Microsoft.XMLHTTP";
}catche{
xmlHttp=false;
}
}else{
如果在Mozilla或其他的浏览器下运行
try{
xmlHttp=new XMLHttpRequest;
}catche{
xmlHttp=false;
}
}
返回创建的对象或显示错误信息
if!xmlHttp
alert"返回创建的对象或显示错误信息";
else
return xmlHttp;
}
使用XMLHttpRequest对象创建异步HTTP请求
function process{
ifform1.username.value==""{
alert"请输入姓名!";
form1.username.select;
returnfalse;
}
ifform1.tel.value==""{
alert"请输入电话号码!";
form1.tel.select;
returnfalse;
}
ifcheckphoneform1.tel.value!=true{
alert"您输入的电话号码的格式不正确!";
form1.tel.select;
returnfalse;
}
ifform1.address.value==""{
alert"请输入联系地址!";
form1.address.select;
returnfalse;
}
在xmlHttp对象不忙时进行处理
ifxmlHttp.readyState==4 || xmlHttp.readyState==0{
获取用户在线表单中输入的姓名
names = document.getElementById"username".value;
tels = document.getElementById"tel".value;
addresss =document.getElementById"address".value;
在服务器端执行quickstart.php
xmlHttp.open"GET","zhuce_ok.php?online_user="+names+" online_tel="+tels+" online_address="+addresss,true;
定义获取服务器端响应的方法
xmlHttp.onreadystatechange=handleServerResponse;
向服务器发送请求
xmlHttp.sendnull;
}else
如果服务器忙,1秒后重试
setTimeout''process'',1000;
}
当收到服务器端的消息时自动执行
function handleServerResponse{
在处理结束时进入下一步
ifxmlHttp.readystate==4{
状态为200表示处理成功结束
ifxmlHttp.status==200{
获取服务器端发来的XML信息
xmlResponse=xmlHttp.responseXML;
获取XML中的文档对象根对象
xmlDocumentElement=xmlResponse.documentElement;
获取第一个文档子元素的文本信息
helloMessage=xmlDocumentElement.firstChild.data;
使用从服务器端发来的消息更新客户端显示的内容
document.getElementById"divMessage".innerHTML=''i''+helloMessage+''i'';
重新开始
setTimeout''process'',1000;
}else{
如果HTTP的状态不是200,表示发生错误
alert"There was a problem accessing the server:"+xmlHttp.statusText;
}
}
}
验证电话号码的格式是否正确
function checkphonetel{
var str=tel;
var Expression=^\d{3}-\d{8}$|^\d{4}-\d{7}$|^\d{4}-\d{8}$|^\d{11}$;
var objExp=new RegExpExpression;
ifobjExp.teststr==true{
return true;
}else{
return false;
}
}
|
|