首页查询功能的一次实现过程

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:本次的目的是完成学生选课系统的首页查询功能的实现,具体要求: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循环都没有用到。

总结

这次的首页查询功能,让我更多的了解到了面向对象的思想,但是老师讲出来之后明白了和自己本身就有的还是不一样的。

思想转变不是那么的容易,还需要多加练习。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5与CSS3基础教程(第7版)

HTML5与CSS3基础教程(第7版)

[美] Elizabeth Castro、[美] Bruce Hyslop / 望以文 / 人民邮电出版社 / 2013-1 / 59.00元

代表下一代网页编写技术的HTML5,为网页提供布局和格式的CSS3,这两者构成了Web开发的基石,也是Web程序员和设计师必须熟练掌握的最基本技能。 本书是风靡全球的HTML和CSS最佳入门教程的最新版,上一版单单英文版的销量就超过100万册,被翻译为十多种语言,并长期雄踞亚马逊书店计算机图书排行榜榜首。 最新的第7版秉承前一版直观、透彻、全面、循序渐进的讲授特色,仍然采用独特的双栏图......一起来看看 《HTML5与CSS3基础教程(第7版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具