内容简介:本次的目的是完成学生选课系统的首页查询功能的实现,具体要求:1.在首页显示当前周的课表。
本次的目的是完成学生选课系统的首页查询功能的实现,
具体要求:
1.在首页显示当前周的课表。
2.显示所有的学生每节课的有无情况。
效果图如下
初始思路:
1.查询当前学期的所有课程
2.查询本周,周几,第几节课的课程id
3.通过课程id查询有那些学生选择了该课程
4.将查询到的学生id设为有课,其余为无课,并将数据传输到V层
依照以上方法,实现的时候才发现很复杂,而且由于多层查询需要用循环套循环的方法,
所以最后代码不但很长,而且出了一点错误就很难改过来,把自己绕了进去
// 获取数据库信息,并传到V层显示。
public function index() {
// 查询当前学期
$term = Term::where('state',1)->find();
// var_dump($term->id);
// 获取当前学期的所有课程
$courseId = Course::where('term_id',$term->id)->column('id');
// var_dump($courseId);
// 获取本周的课程
$classTime = ClassTime::where(['course_id' => $courseId])->select();
// var_dump($classTime);
// var_dump(strtotime(date('Y-m-d')));
// var_dump(strtotime($term[0]['start_time']));
$week = intval((strtotime(date('Y-m-d')) - strtotime($term->start_time))/7/86400);
// var_dump($week);
$classTime = $classTime->where('week',$week);
// var_dump($classTime);
$studentName = Student::where('state',1)->column('name');
// var_dump($studentName);
for ($j=0; $j < 7; $j++) {
for ($i=0; $i < 5; $i++) {
$num = count($studentName);
// var_dump($studentName[0]);
for ($k=0; $k < $num; $k++) {
$home = new Home;
$home->day = $j+1;
$home->period = $i+1;
$home->name = $studentName[$k];
$home->state = 0;
if (!is_null($classTime)) {
$classTime = $classTime->where('day',$j+1);
$classTime = $classTime->where('period',$i+1);
// var_dump($classTime);
// 获取学生Id
$stuCoursId = StudentCourses::where(['courses_id' => $classTime->column('course_id')])->column('student_id');
$stuState = Student::where(['id' => $stuCoursId])->column('state');
// var_dump($home);
// var_dump($stuState[0]);
if (!is_null($stuCoursId) && in_array(1, $stuState)) {
$stuName = Student::where(['id' => $stuCoursId],['state',1])->column('name');
// var_dump($stuName);
// $home->save();
if (!is_null($home->where(['name' => $stuName])->find())) {
$home->where(['name' => $stuName])->find()->state = 1;
}
}
}
$lists[$j][$i][$k] = $home;
}
// var_dump($home);
}
// var_dump($home);
}
$week = ['周一','周二','周三','周四','周五','周六','周日'];
var_dump($lists[0][0][0]);
// var_dump($list);
$this->assign('week',$week);
$this->assign('lists',$lists);
return $this->fetch();
}
这部分代码虽然实现了功能,但是明显不是老师要得效果,主要是没有面向对象的思想,
因此,后面老师讲了一种面向对象的思想
思路如下:
1.首先设立三个数组:周几,第几节,学生。这三个数组分别有一个name一个id属性
2.将数组数据传输到V层,并显示
3.利用这三项数据,调用一个getHasCourse的方法,直接查询学生是否有课,并返回true或faluse
按照以上思路,发现事情变得很简单。
首先,C层的查询和建立两个关于周次和节次的数组
然后,V层显示数据
其中的eq里面就是调用的getHasCourse方法,该方法写在M层里面,传入的参数为学生id,周次id,节次id
经过这么写,发现思路很清晰,每层的功能也能很明白的了解到,而且代码也并不复杂,甚至一个for循环都没有用到。
总结
这次的首页查询功能,让我更多的了解到了面向对象的思想,但是老师讲出来之后明白了和自己本身就有的还是不一样的。
思想转变不是那么的容易,还需要多加练习。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- NideShop 微信小程序商城更新,添加物流查询功能
- MySQL实现排名并查询指定用户排名功能,并列排名功能
- sqltoy-orm 4.15.3 发版,增强非 sql 模式的查询功能
- MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具
- Proxy-Go v8.7 发布,增强 socks5 代理 UDP 功能,DNS 支持 TCP 方式查询!
- 存储过程 – 重新编译后,存储过程运行得很快
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
电商产品经理宝典:电商后台系统产品逻辑全解析
刘志远 / 电子工业出版社 / 2017-10-1 / 49.00元
时至今日,对于产品经理的要求趋向业务型、平台型,甚至产生了细分领域专家。纯粹的前端产品经理(页面、交互)逐渐失去竞争力。而当后台产品经理的视野开始从功能延伸到模块,再延伸到子系统,最后关注整体系统时,就有了把控平台型产品的能力。 《电商产品经理宝典:电商后台系统产品逻辑全解析》围绕“电商后台产品”,从电商的整体产品架构入手,逐步剖析各支撑子系统。通过学习电商产品后台的架构和逻辑,可以让读者从......一起来看看 《电商产品经理宝典:电商后台系统产品逻辑全解析》 这本书的介绍吧!