PHP自学之路---雇员管理系统(1)
前面已经介绍了Zend studio工具的使用以及软件开发的基本阶段,下面就是我们第一个练习,雇员管理系统,从设计到实现来简单介绍下:
开发环境:
服务器:基于Linux 2.618环境下配置PHP服务器
Ide : Zend studio
下面是基本的框架图:
1、首先设计数据库
设计数据库
Admin
Create table admin(
Id int primary key,
Name varchar(32) not null,
Password varchar(128) not null
);
Emp 雇员表
Create table emp(
Id int primary key auto_increment,
Name varchar(64) not null,
Grade tinyint,
Email varchar(64) not null,
Salary float
)
添加用户
insert into admin(id,name,password) value('124','admin',md5('admin')); insert into emp(name,grade,email,salary) value('admin',’80’,’3789131@163.com’,10);
2、代码实现
<!-- login.php --> <html>
<head>
<meta http-equiv="content-tpe" content="text/html;charset-utf-8"/> </head>
<h1>管理员登陆系统</h1>
<form action="loginProcess.php" method="post">
<table>
<tr><td>用户ID:</td><td><input type="text" name="id"/></td></tr>
<tr><td>密 码:</td><td><input type="text" name="password"/></td></tr>
<tr><td><input type="submit" value="用户登录"/></td>
<td><input type="reset" value="重新填写"/></td></tr>
</table>
</form>
<?php
if(!empty($_GET['errno'])){
$errno=$_GET['errno'];
if($errno==1){
echo "</br><font color='black' size='3px'>你的用户名或者密码输入错误 </font> ";
}else{
echo "hello";
}
}
?>
</html>
<!-- loginProcess.php -->
<?php
/**
*
* @author jsh
* @version
*/
//接受用户数据
$id=$_POST['id'];
$password=$_POST['password']; //到数据库进行验证
//链接数据库
$mysql_con=mysql_connect("192.168.1.110:3306","root","");
if(!$mysql_con){
die("connect error");
}
//选择数据库
mysql_select_db("manage",$mysql_con); //验证
$sql="select * from admin where id=$id";
$res=mysql_query($sql,$mysql_con); if(($row = mysql_fetch_assoc($res)) != ""){
if(md5($password) == $row['Password']){
$name = $row['Name'];
header("Location:https://192.168.1.110/myphp/manage/empManage.php?name=$name");
exit();
}else{
header("Location:https://192.168.1.110/myphp/manage/login.php?errno=1");
// //如果登陆不成 功,需要提示对话框显示用户名或者密码错误
exit();
}
} else {
header("Location:https://192.168.1.110/myphp/manage/login.php?errno=1");
// //如果登陆不成 功,需要提示对话框显示用户名或者密码错误
exit();
}
mysql_free_result($res); // //简单验证
// if($id == "jsh" && $password == "1234567a"){
// header("Location:https://192.168.1.110/myphp/manage/empManage.php");
// exit();
// }else{
// //非法用户,跳转到登陆页面
// header("Location:https://192.168.1.110/myphp/manage/login.php?errno=1");
// //如果登陆不成 功,需要提示对话框显示用户名或者密码错误
// exit();
// } ?>
<!-- empManage.php -->
<html>
<head>
<meta http-equiv="content-tpe" content="text/html;charset-utf-8"/>
</head> <?php
$name=$_GET['name'];
echo "欢迎".$name."进入";
echo " <a href='login.php'>返回登陆界面</a></br>"
?>
<h1>主界面</h1>
<a href='empList.php'>管理用户</a></br>
<a href=''>添加用户</a></br>
<a href=''>查询用户</a></br>
<a href=''>退出系统</a></br>
</html>
下面是关于分页技术的介绍:
在分页中有几个变量是必须的:
$pageNow :显示第几页:用户输入
$pageCount:共有几页[]
$rowCount:共有多少条记录[数据库获取]
$pagesize:每页显示几条记录[人为定义]
计算pageCount 算法
<?php
$pageCount=ceil($rowCount/$pagesize);
?>
select * from emp limit 1,3;
查找有多少行SQL语句
Select count(Id) from emp;
<!-- emplist.php -->
<html>
<head>
<meta http-equiv="content-tpe" content="text/html;charset-utf-8"/>
<title>雇员管理列表</title>
</head> <?php
$mysql_con=mysql_connect("192.168.1.110:3306","root","");
if(!$mysql_con){
die("connect error");
}
//选择数据库
mysql_select_db("manage",$mysql_con); /*
$pageNow :显示第几页:用户输入
$pageCount:共有几页[]
$rowCount:共有多少条记录[数据库获取]
$pagesize:每页显示几条记录[人为定义]
*/ $pagesize = 3;
//获取共有多少记录
$sql="select count(Id) from emp";
$res=mysql_query($sql,$mysql_con);
if($row=mysql_fetch_array($res)){
$rowCount=$row[0];
}
mysql_free_result($res);
$pageCount = ceil($rowCount/$pagesize);
if(!empty($_GET['pageNow'])){
$pageNow = $_GET['pageNow'];
} else {
$pageNow = 1;
} //验证'
$sql="select * from emp limit ".($pageNow-1)*$pagesize.",$pagesize";
$res=mysql_query($sql,$mysql_con);
echo "<h1>雇员管理系统</h1>";
echo "<table width='700px' border='1px'>";
echo "<tr><th>Id</th><th>Name</th><th>Grade</th><th>Email</th><th>Salary</th><th>删除用户</th><th>修改用户</th></tr>"; while(($row=mysql_fetch_assoc($res)) != ""){
echo "<tr><th>{$row['Id']}</th><th>{$row['Name']}</th><th>{$row['Grade']}</th>".
"<th>{$row['Email']}</th><th>{$row['Salary']}</th><th><a href=''>删除用户</a></th>".
"<th><a href=''>修改用户</a></th></tr>";
}
echo "</table>";
/*
//打印出页码的链接
for($i=1;$i<=$pageCount;$i++){
echo "<a href='empList.php?pageNow=$i'><$i></a>";
}
*/
//显示上一页和下一页
if($pageNow>1){
$prepage = $pageNow - 1;
echo "<a href='empList.php?pageNow=$prepage'>上一页</a>";
}
if($pageNow<$pageCount){
$nextpage = $pageNow + 1;
echo "<a href='empList.php?pageNow=$nextpage'>下一页</a>";
}
//显示当前页和共有多少页
echo " 当前页{$pageNow}/共{$pageCount}页"; //指定跳转到某页
?>
<form action="empList.php" method="get"> 跳转到:<input type="text" name="pageNow"/>
<input type="submit" value="GO"/>
</form> <?php
mysql_free_result($res);
?> </html>
这里我们必须提到,在软件开发中有几个重要的开发模式
1、Model1 模式
2、分层模式(界面、业务逻辑分离)
3、Mvc 模式
Model1模式最重要的特点就是没有分层的概念,也就是说界面显示和业务逻辑的处理放在一个文件中来完成。
缺点:
1)、表现层和业务逻辑层混合在一起(乱!)
2)、在开发中,不利于多人的协同开发
3)、不利于后期的维护
优点:
简单、开发速度比较快
比较适合开发小的项目
分层模式 基本概念是:把界面和业务分层-〉结构清晰,利于分工开发
Mvc模式,基本概念:强制把数据的输入,数据的处理,数据的显示
下面章节将介绍 分层模式及Mvc模式实现!
PHP自学之路---雇员管理系统(1)的更多相关文章
- PHP自学之路---雇员管理系统(2)
这个章节将讲解分层模式对雇员管理系统的系统,首先看下基本的流程图设计: 下面是具体的代码: 1.login.php(参照上节) 2.loginProcess.php <?php /** * * ...
- 【转】JAVA自学之路
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
- 我的.NET自学之路
我第一门语言接触的并不是.net,而是php刚学php感觉还好,但是一学到后面就有一点头晕乎乎的,我感觉没有一个好的编写php代码的编辑器.而且php是弱类型语言,感觉起来没有像c,java,c#这些 ...
- EMS-Demo 雇员管理系统演示
做了一个小小的雇员管理系统,主要使用了JTable,然后比较得意的地方是实现了拼音搜索,感觉很高大上其实只要引入一个Jpinyin.jar就可以了(网上到处都有下载或者去我的git项目的lib中下载) ...
- [php笔记]项目开发五个阶段/雇员管理系统
zend 公司,管理PHP版本的升级. 功能强大, 官方推荐. (开发一个PHP项目) 软件开发的五个阶段. 1.创建一个项目(工程)2.设置该项目的路径3.创建一个文件test.php ***使用Z ...
- 聊聊我的 Java 自学之路
最近经常在知乎收到类似『没基础,java 如何自学』.『怎么才能掌握编程』等等问题,再加上发现高中同学也在自学.有感而发,讲讲我的自学之路. 1.1. 大学 高考没正常发挥,考入一所二流的学校,当时分 ...
- 一个「学渣」从零开始的Web前端自学之路
从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...
- 【我的前端自学之路】【HTML5】.html和.htm的区别
以下为自学笔记内容,仅供参考. 转发请保留原文链接:https://www.cnblogs.com/it-dennis/p/10508171.html .htm 和 .html 的区别 .htm 和 ...
- 【转】Java自学之路——by马士兵
作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...
随机推荐
- python类中的私有方法
假设有如下一个python类: class Foo(object): def __a(self): print "Bet you can't see me..." def bar( ...
- git —— 标签
标签:为分支添加一个可读标识. 1.创建标签 操作步骤: 切换到需要打标签的分支上 $ git branch $ git checkout master 为当前分支新增一个标签 $ git tag v ...
- Javascript之对象的创建
面向对象语言有一个非常显著的标志,那就是它们都有类的概念,通过类之间的继承就可以达到任意创建具有相同属性方法的对象.而在ECMAScript中并没有类的概念,它把对象定义为:无序属性的集合,其属性包含 ...
- 耗时任务DefaultEventExecutorGroup 定时任务
一. 耗时任务 static final EventExecutorGroup group = new DefaultEventExecutorGroup(16); // Tell the pipel ...
- 【转】Python验证码识别处理实例
原文出处: 林炳文(@林炳文Evankaka) 一.准备工作与代码实例 1.PIL.pytesser.tesseract (1)安装PIL:下载地址:http://www.pythonware.com ...
- (一)问候MyBatis3
第一节:MyBatis简介 百度百科 第二季:Mybatis版HolleWorld实现 例子: mybatis-config.xml: <?xml version="1.0" ...
- Python学习笔记:个税起征点上调至5000,算一算少交多少税?
一.旧税率表与新税率表比较 以前起征点是3500,2018年10月1日起起征点正式修改为5000,下面我们用Python来分别计算新旧个人所得税分别为多少? 二.旧的个人所得税 import sys ...
- Entity Framework Code First 在Object Join Linq查询时出现全表查询的语句。
最近一个项目,使用微软的Entity Framework的ORM框架的项目,部署到现场后,出现了系统缓慢,多个客户端的内存溢出崩溃的问题. 打开了SQL Server Profiler(SQL Ser ...
- hdu 3537 翻硬币 每次能翻1个 或2个 或3个
N 枚硬币排成一排,有的正面朝上,有的反面朝上.我们从左开始对硬币按1 到N 编号. 第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面. 第二,谁不能翻谁输. ...
- 【LOJ】#2062. 「HAOI2016」地图
题解 我对莫队真是一无所知 这个东西显然可以用圆方树转成一个dfs序列 然后呢,用莫队计算每个询问区间的每个数出现的次数,从而顺带计算每个数字的奇偶性 但是我们要查的数字也用一个范围,可以直接用分块维 ...