第一题、计算器
预测考题,不一定对她没说详细怎么考,刚说考计算器
预测题目
考试会给一个叫math.php的文件,其中会有如下代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
body{
margin:0px;
text-align: center;
}
#reg{
width:370px;
border:1px solid blue;
line-height:40px;
margin:0 auto;
padding-left:100px;
padding-top:15px;
padding-bottom:15px;
text-align:left;
font-size:14px;
}
/* 以下使用的是属性选择器,具体来说是属性值选择器 */
input[type="submit"]{ padding: 10px 15px; margin: 5px; background: #4CAF50; color: white; border: none; border-radius: 4px; }
</style>
</head>
<body>
</body>
</html>
解题步骤
操作如下:在<body></body>中间插入
<form method="post">
<div id="reg">//计算器页面
<div>
数值1:<input type="number" name="num1" placeholder="输入第一个数字" step="any">
</div>
<div>
数值2:<input type="number" name="num2" placeholder="输入第二个数字" step="any">
</div>
<div>
<input type="submit" name="operation" value="+">
<input type="submit" name="operation" value="-">
<input type="submit" name="operation" value="*">
<input type="submit" name="operation" value="/">
</div>
<div>//以下是计算器的计算逻辑
<!-- 注释:?? 仅检查 null,而 ?:(三元运算符)会检查 false、0、' ' 等假值。?? 不会因未定义变量触发 Notice 错误,更安全。 -->
结果:<input type="text" value="<?php
$num1 = isset($_POST['num1']) ? $_POST['num1'] : 0;
$num2 = isset($_POST['num2']) ? $_POST['num2'] : 0;
$operation = isset($_POST['operation']) ? $_POST['operation'] : '';
if (is_numeric($num1) && is_numeric($num2)) {
switch ($operation) {
case '+':
echo $num1 + $num2;
break;
case '-':
echo $num1 - $num2;
break;
case '*':
echo $num1 * $num2;
break;
case '/':
echo $num2 != 0 ? $num1 / $num2 : '除数不能为0';
break;
}
}
?>">
</div>
</div>
</form>
第二题把记录写到文件里,再读出来
注册,注册完后把注册内容写到一个文本文件中,从文本文件中读取出来
考把注册信息往文本文件中写
预测题目
考试会给一个叫registerdata.php的文件,代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<?php
//获取学号
if($_POST['stuno'])
{
$stuno=$_POST['stuno'];
}
else{
$stuno='没有填写' ;
}
//获取姓名
if($_POST['stuname'])
{
$stuname=$_POST['stuname'];
}
else{
$stuname='没有填写' ;
}
//获取密码
if($_POST['pwd'])
{
$password=$_POST['pwd'];
}
else{
$password='没有填写' ;
}
//获取班级
$classname=$_POST['classname'];
//获取性别
$sex=$_POST['sex'];
//获取爱好
if(array_key_exists('hobby',$_POST))
{
$hobby=join(',',$_POST['hobby']);
}else{
$hobby='没有任何爱好 ';
}
//获取手机号
if($_POST['mobile'])
{
$mobile=$_POST['mobile'];
}
else{
$mobile='没有填写' ;
}
//获取邮箱
if($_POST['email'])
{
$email=$_POST['email'];
}
else{
$email='没有填写' ;
}
switch($_FILES['photo']['error'])
{
case 0: //成功上传
$ftypes=['image/gif','image/pjpeg','image/jpeg','image/png'];
$type=$_FILES['photo']['type'];
if(in_array($type,$ftypes)) //上传的文件是指定的类型
{
$fname=$_FILES['photo']['name']; //上传的原始文件名
$tmp=explode('.', $fname);//将文件名以"."分隔成两部分
$newfname=$stuno.'.'.$tmp[1];//新的文件名为学号
$destination='upload/'.$newfname;
move_uploaded_file($_FILES['photo']['tmp_name'], $destination);
}else {$txt='上传文件类型不符合要求';}
break;
case 1: //文件大小超过了PHP默认的限制2MB
$txt='上传文件出错,文件大小超过了限制!';
break;
case 4: //没有选择上传文件
$txt='没有上传照片!';
break;
}
?>
<h1>注册成功,您的注册信息如下:</h1>
学号:<?php echo $stuno ?>
<br>
姓名:<?php echo $stuname ?>
<br>
密码:<?=$password?>
<br>
班级:<?=$classname?>
<br>
性别:<?=$sex?>
<br>
爱好:<?=$hobby?>
<br>
手机:<?=$mobile?>
<br>
邮箱:<?=$email?>
<br>
相片:<?php
if(isset($txt)){
echo $txt; //输出错误提示
}
else{
echo "<img src='$destination' style='width:150px;height:120px;'>";
}
?>
</body>
</html>
解题步骤
1.写入
要在“case 4: //没有选择上传文件”模块后,“<h1>注册成功,您的注册信息如下:</h1>”前添加如下写入代码,且“<h1>注册成功,您的注册信息如下:</h1>模块”可无因为它没有作用
// 获取网站根目录路径
$document_root = $_SERVER['DOCUMENT_ROOT'];
// 打开文件用于追加写入
$file = fopen("$document_root/myweb/info.txt", 'a');
// 构建要写入的字符串
$string = "\r\n"."学号:" . $stuno . "\r\n" .//:用英文
"姓名:" . $stuname . "\r\n" .
"密码:" . $password . "\r\n" .
"班级:" . $classname . "\r\n" .
"性别:" . $sex . "\r\n" .
"爱好:" . $hobby . "\r\n" .
"手机:" . $mobile . "\r\n" .
"邮箱:" . $email . "\r\n" .
"照片:" . $destination . "\r\n";
// 写入文件
fwrite($file, $string);
// 关闭文件
fclose($file);
?>
2.读取
在页面最后添加如下读取代码
<?php
$file = fopen("$document_root/myweb/info.txt", 'r');
//$filesize = filesize("$document_root/students/info.txt");
//$content = fread($file, $filesize);
//echo nl2br($content);
// 逐行读取文件内容
while (!feof($file)) {
$str = fgets($file);
// 检查该行是否包含"照片:"信息
if (strstr($str, '照片:')) {
// 提取照片路径(从第7个字符开始,到倒数第1个字符结束)
$path = substr($str, 7, -1);
// 显示照片路径和图片
echo "照片: <img src='$path' style='width:150px;height:120px;'>";
} else {
// 对其他行使用 nl2br 保持换行格式
echo nl2br($str);
}
}
?>
</body>
</html>
考试可能给注释的三行,不给就全写,写了就改
第三题学生成绩管理系统
第一小题
数据库连接文件conn.php必须得自己会写
<?php
$db=new mysqli('localhost','root','12345678','studentmis');
if($db->connect_errno){
exit('数据库连接失败!');
}
?>
第二小题
会写页头,页脚,即会包含页面
预测在Index.php补
<?php
include 'HeaderNav.html';
?>
<?php
include 'Footer.html';
?>
第三小题
数据库要学会设置表关联、参照完整性、会简单的录两条记录等
账号为root,密码为12345678
1.创建数据库
数据库名为studentmis,在“排序规则”下拉列表中选择“utf8_general_ci”,该规则可以很好地支持中英文。

2.1. 在数据库中创建四张数据//考试可能给你给你就忽略这步
包括表class表、student表、course表以及result表;表结构见教材P136所示。
注意:
- 建表的“存储引擎”使用“InnoDB”
- 各表的主键建立主索引
2.2.给你数据库的情况下就导入//考试给你的情况下

点击导入,选择好文件后点击执行
3. 创建外键
student表的ClassNo字段参照class表的ClassNo字段;
打开student表,点击结构,选择关联视图,字段选择classNo,表选择class,字段选择classno,点击执行

result表的StudentID字段参照student表的StudentID字段;
打开result表,点击结构,选择关联视图,字段选择studentid,表选择student,字段选择studentid,点击执行;
result表的CourseID字段参照course表的CourseID字段。
打开result表,点击结构,选择关联视图,字段选择coursetid,表选择course,字段选择coursetid,点击执行;

4. 添加表数据
点击插入在空值中输入数据,点击执行


第四小题
用户注册页面的下拉列表、单选、多选
即在register.php页面的班级(会从数据库里面读班级信息填入下拉列表中)、性别、爱好会做,保守一点放了一个普通文本框添加方案(学号)
<div>学号:<input type="text" name="stuno"><span class="error">*</span></div>//普通文本框
<div>//下拉列表
班级:<select name="classname">
<?php
require_once 'conn.php';
$db->query('SET NAMES UTF8');
$sql='select * from class';
if($result=$db->query($sql)){//查询是否执行成功
while($row=$result->fetch_assoc()){//是否还能从结果集中获取到数据行
echo "<option value='".$row['classno']."'>".$row['classname']."</option>";
}
}
$result->close();
$db->close();
?>
</select>
</div>
<div>//单选
性别:<input type="radio" name="sex" value="男" >男
<input type="radio" name="sex" value="女" checked>女
</div>
<div> //多选
爱好:<input type="checkbox" name="hobby[]" value="阅读">阅读
<input type="checkbox" name="hobby[]" value="运动">运动
<input type="checkbox" name="hobby[]" value="电影">电影
<input type="checkbox" name="hobby[]" value="音乐">音乐
</div>
<div style="margin-left: 42px;margin-top: -12px;">
<input type="checkbox" name="hobby[]" value="旅游">旅游
<input type="checkbox" name="hobby[]" value="上网">上网
</div>
第五小题
会添加按钮
预测在student.php中添加按钮
if($result=$db->query($sql)){
echo "<form action='upddel.php' method='post'>";//添加的必要东西,但是他只说会添加按钮,不知道这个会不会给你
echo "<input type='submit' name='btndel' value='删除'
onclick='return confirm(\"确定要删除选中的学生信息吗?\")'>";//添加删除按钮
echo "<input type='submit' name='btnupdate' value='编辑'>";//添加编辑按钮
echo "<table class='tb'>
<tr><th></th><th>学号</th><th>姓名</th><th>班级</th><th>性别</th><th>爱好</th><th>手机</th>//为了实现删除的表态代码和复选框而添加的东西不考
<th>邮箱</th><th>照片</th></tr>";
while($row=$result->fetch_assoc()){
echo "<tr><td><input type='checkbox' name='sel[]' value='".$row['studentid']."'>".
"</td><td>".$row['studentid'].///为了实现删除的表态代码和复选框而添加的东西不考
"</td><td>".$row['studentname'].
"</td><td>".$row['classname'].
"</td><td>".$row['sex'].
"</td><td>".$row['hobby'].
"</td><td>".$row['mobile'].
"</td><td>".$row['email'].
"</td><td><img src='".$row['photo']."' width='35px'>".
"</td></tr>";
}
echo "</table>";
echo "</form>";//添加的必要东西,但是他只说会添加按钮,不知道这个会不会给你
$result->close();
}
第六小题
会做update.php页面,由registerdata.php的部分修改而来
操作如下:
1.新建一个update.php页面将代码粘贴进去
要复制的registerdata.php内容如下:
<?php
// 内容类型声明:Content-type: text/html 部分告知浏览器当前传输的内容是HTML格式,需要以网页形式进行解析和渲染
// 字符编码设置:charset=utf-8 部分将页面字符编码设置为UTF-8,确保中文字符及其他多语言字符能够正确显示而不会出现乱码,需要注意的是,等号两侧不能有空格,否则可能导致编码设置失效
header("Content-type:text/html;charset:UTF-8");//告诉浏览器当前页面使用 UTF-8 编码解析,避免中文字符显示为乱码
require_once 'conn.php';
$db->query('SET NAMES UTF8');//确保 PHP 与数据库之间的数据传输使用 UTF-8 编码,防止从数据库读取的中文内容出现乱码
function checkinput($data){
$data=trim($data);
$data=stripslashes($data);
$data=htmlspecialchars($data);
return $data;
}
$stuno=checkinput($_POST['stuno']);
if(empty($stuno)){
echo "<script>alert('学号没有填写');history.go(-1);</script>";
exit();
}
$sql="select * from student where studentid=$stuno";
$result=$db->query($sql);
if($result->num_rows>0){
echo "<script>alert('该学号已存在!');history.go(-1);</script>";
exit();
}
$stuname=checkinput($_POST['stuname']);
if(empty($stuname)){
echo "<script>alert('姓名没有填写');history.go(-1);</script>";
exit();
}
$password=checkinput($_POST['pwd']);
if(empty($password)){
echo "<script>alert('密码没有填写');history.go(-1);</script>";
exit();
}
//获取班级
$classname=checkinput($_POST['classname']);
//获取性别
$sex=checkinput($_POST['sex']);
//获取爱好
if(array_key_exists('hobby',$_POST))
{
$hobby=join(',',$_POST['hobby']);
}else{
$hobby='';
}
// //获取手机号
$mobile=checkinput($_POST['mobile']);
// //获取邮箱
$email=checkinput($_POST['email']);
switch($_FILES['photo']['error'])
{
case 0: //成功上传
$ftypes=['image/gif','image/pjpeg','image/jpeg','image/png'];
$type=$_FILES['photo']['type'];
if(in_array($type,$ftypes)) //上传的文件是指定的类型
{
$fname=$_FILES['photo']['name']; //上传的原始文件名
$tmp=explode('.', $fname);//将文件名以"."分隔成两部分,分别为"php","jpg"
$newfname=$stuno.'.'.$tmp[1];//新的文件名为学号
$destination='upload/'.$newfname;
move_uploaded_file($_FILES['photo']['tmp_name'], $destination);
}else
{echo "<script>alert('上传文件类型不符合要求!');history.go(-1);</script>";
exit();
}
break;
case 1: //文件大小超过了PHP默认的限制2MB
echo "<script>alert('上传文件出错,文件大小超过了限制!');history.go(-1);</script>";
exit();
break;
case 4: //没有选择上传文件
$destination='';
break;
}
$sql="insert into student values('$stuno','$stuname','$password','$classname','$sex',
'$hobby','$mobile','$email','$destination')";
$result=$db->query($sql);
if($result){
echo "<script>alert('注册成功');window.location='students.php';</script>";
}else
{
echo "<script>alert('注册失败!');history.go(-1);</script>";
}
?>
2.删除一些东西
因为不存在学号没填的和重复的情况,所以将如下代码删掉
if(empty($stuno)){
echo "<script>alert('学号没有填写');history.go(-1);</script>";
exit();
}
$sql="select * from student where studentid=$stuno";
$result=$db->query($sql);
if($result->num_rows>0){
echo "<script>alert('该学号已存在!');history.go(-1);</script>";
exit();
}
因为不存在密码,所以将如下代码删掉
$password=checkinput($_POST['pwd']);
if(empty($password)){
echo "<script>alert('密码没有填写');history.go(-1);</script>";
exit();
}
其他不用动
3.对照片字段和最后跳转页面做修改
$destination='';//添加,确定是否动了照片字段
switch($_FILES['photo']['error'])
{
case 0: //成功上传
$ftypes=['image/gif','image/pjpeg','image/jpeg','image/png'];
$type=$_FILES['photo']['type'];
if(in_array($type,$ftypes)) //上传的文件是指定的类型
{
$fname=$_FILES['photo']['name']; //上传的原始文件名
$tmp=explode('.', $fname);//将文件名以"."分隔成两部分,分别为"php","jpg"
$newfname=$stuno.'.'.$tmp[1];//新的文件名为学号
$destination='upload/'.$newfname;
move_uploaded_file($_FILES['photo']['tmp_name'], $destination);
}else
{echo "<script>alert('上传文件类型不符合要求!');history.go(-1);</script>";
exit();
}
break;
case 1: //文件大小超过了PHP默认的限制2MB
echo "<script>alert('上传文件出错,文件大小超过了限制!');history.go(-1);</script>";
exit();
break;
case 4: //没有选择上传文件
$destination=' ';
break;
}

//classno='classname'修改为这个
$result=$db->query($sql);//跳转页面
if($result){
echo "<script>alert('修改成功');window.location='students.php';</script>";//将原“注册成功”替换为修改成功或更新成功,下面修改失败的修改方法同理
}else
{
echo "<script>alert('修改失败!');window.location='students.php';</script>";//不管成功失败都去学生页面看看
}
?>
注意事项
1.考试文件夹可能如下

2.做哪一题将那一题复制到C:\AppServ\www下,做完后再剪切回去做替换
3.数据库文件导入方法上文已写,接下来说导出方法

点击导出,选择导出方式“快速”,然后点击执行,同理直接替换掉考试文件夹中的数据库

Comments 1 条评论