推广 热搜: page  红书  小红  数据  论文  数据分析  关键词  哪些  搜索  考试 

(附源码)PHP学生成绩管理系统 计算机毕设48726

   日期:2024-12-29     移动:https://sicmodule.kub2b.com/mobile/quote/15369.html
  • 3 章 学生成绩管理总体设计

在分析了项目开发的背景、意义以及其开发的可行性后,接下来就是探讨项目的功能划分,以及具体实现的时候对项目数据库各种表的设计,在本章会做一个系统的介绍。

    1. 系统功能模块设计

系功能模块的设计就是把系统具体要实现哪些功能,功能如何划分做一个系统的架构,以模块图的方式展示出来,方便我们进行功能得罗列以及涉及。在系统的功能方面,项目分成了管理员+教师+学生三个模块,每个模块登录进去对应相应的功能,具体的功能模块图如图3.1所示。

图3.1 学生成绩管理功能模块图

    1. 数据库设计

数据库的设计承载者系统的各种数据,在一个系统中各种数据都需要一个专门的容器,数据库就是这个容器,在建立数据库的时候,主要是数据库模型的设计以及各个数据库表的设计两部分。

      1. 数据库概念结构设计

下面是整个学生成绩管理中主要的数据库表总E-R实体关系图。

图3.2 学生成绩管理总E-R关系图

      1. 数据库逻辑结构设计

通过前面E-R关系图可以看到项目需要创建很多个数据表。以下是项目中的主要数据库表的关系模型

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

average_data_id

int

10

0

N

Y

平均值数据ID

2

title

varchar

64

0

Y

N

标题

3

account_name

varchar

64

0

Y

N

科目名称

4

class_name

varchar

64

0

Y

N

班级名称

5

total_score_of_grades

int

10

0

Y

N

0

成绩总分

6

number_of_students

int

10

0

Y

N

0

学生人数

7

average_value

varchar

64

0

Y

N

平均值

8

remarks

varchar

64

0

Y

N

备注

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

course_information_id

int

10

0

N

Y

课程信息ID

2

course_name

varchar

64

0

Y

N

课程名称

3

cover

varchar

255

0

Y

N

封面

4

class

varchar

64

0

Y

N

上课班级

5

class_time

datetime

19

0

Y

N

上课时间

6

teacher_no

int

10

0

Y

N

0

教师编号

7

teacher_name

varchar

64

0

Y

N

教师姓名

8

course_introduction

longtext

2147483647

0

Y

N

课程介绍

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_id

int

10

0

N

Y

学生ID

2

student_no

varchar

64

0

N

N

学生学号

3

full_name

varchar

64

0

Y

N

姓名

4

gender

varchar

64

0

Y

N

性别

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

recommend

int

10

0

N

N

0

智能推荐

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_grades_id

int

10

0

N

Y

学生成绩ID

2

student_no

int

10

0

Y

N

0

学生学号

3

full_name

varchar

64

0

Y

N

姓名

4

class_name

varchar

64

0

Y

N

班级名称

5

professional_name

varchar

64

0

Y

N

专业名称

6

teacher_no

int

10

0

Y

N

0

教师编号

7

account_name

varchar

64

0

Y

N

科目名称

8

subject_grades

int

10

0

Y

N

0

科目成绩

9

annotation_notes

varchar

64

0

Y

N

标注说明

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_information_id

int

10

0

N

Y

学生信息ID

2

student_no

int

10

0

Y

N

0

学生学号

3

full_name

varchar

64

0

Y

N

姓名

4

gender

varchar

64

0

Y

N

性别

5

class_name

varchar

64

0

Y

N

班级名称

6

professional_name

varchar

64

0

Y

N

专业名称

7

department_name

varchar

64

0

Y

N

院系名称

8

teacher_no

int

10

0

Y

N

0

教师编号

9

teacher_name

varchar

64

0

Y

N

教师姓名

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

teacher_id

int

10

0

N

Y

教师ID

2

teacher_no

varchar

64

0

N

N

教师编号

3

teacher_name

varchar

64

0

Y

N

教师姓名

4

gender

varchar

64

0

Y

N

性别

5

teaching_subjects

varchar

64

0

Y

N

授业科目

6

department_name

varchar

64

0

Y

N

院系名称

7

examine_state

varchar

16

0

N

N

已通过

审核状态

8

recommend

int

10

0

N

N

0

智能推荐

9

user_id

int

10

0

N

N

0

用户ID

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

  • 4 章 关键模块的设计与实现
    1. 登录模块

管理员、教师和学生在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员、教师和学生的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其主界面展示如下图4.1所示。

图4.1 登录界面图

登录系统主要代码如下。

public function login()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->login($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空";

        }

        return json_encode($data);

    }

public function login($request=[],$table_name = ''){

        $username = $request['username'];

        $password = $request['password'];

        $bol = $this->where(['username'=>$username])->find();

        if ($bol){

            $password = md5($password);

            if ($request['password']==$bol['password']) {

                //添加token信息

                $access_token['create_time'] = date('Y-m-d H:i:s');

                $access_token['update_time'] = date('Y-m-d H:i:s');

$access_token['info'] = json_encode($bol);

                // $access_token['info'] = $bol;

                $access_token['token'] = md5(date('Y-m-d H:i:s'));

                $bol_token = Db::name('AccessToken')->insert($access_token);

                if ($bol_token){

                    $data['obj'] = $bol;

                    $data['obj']['token'] = $access_token['token'];

                    return ['result' => $data];

                }else{

                    return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];

                }

            } else {

                return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];

            }

        }else{

            return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];

        }

    }

    1. 注册模块

注册模块满足学生这部分,当学生想要进行学生相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好注册信息,添加提交,注册的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录,其主界面展示如下图4.2所示。

图4.2 注册界面图

注册逻辑关键代码如下所示。

public function register()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');

            $request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->register($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空";

        }

        return json_encode($data);

    }

public function register($request=[],$table_name = ''){

        $username = $request['username'];

        $bol = $this->where(['username'=>$username])->find();

        if (!$bol){

            $result = self::allowField(true)->save($request);

            if ($result) {

                return ['result' => 1];

            } else {

                return ['error' => ['code' => 3000, 'message' => '注册失败']];

            }

        }else{

            return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];

        }

    }

    1. 系统用户管理模块

管理员可以对系统中所有的用户角色进行管控,包含了管理员、学生以及教师这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户,这里以学生用户为例。界面如下图4.3所示。

图4.3 系统用户管理界面图

系统用户管理代码如下。

public function get_list($request=[],$table_name = '',$table_id = ''){

        $page = 1;

        $size = $table_name == "auth" ? 100 : 10;

        $where = [];

        $order = $table_id.'_id desc';

        $field = '*';

//        echo $order;exit;

        $columns = Db::query( "show COLUMNS FROM `".$table_name."`");

        foreach($columns as $key=>$val){

            $field_name = $val['Field'];

            if(isset($request['like'])){

                if ($request['like']==true){

                    //字段模糊查询

                    if(isset($request[$field_name])){

                        $where[] = [$field_name, '=', $request[$field_name]];

                    }

                }else{

                    //字段模糊查询

                    if(isset($request[$field_name])){

                        $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                    }

                }

            }else{

                //字段模糊查询

                if(isset($request[$field_name])){

                    $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                }

            }

            //范围查询

            if(isset($request[$field_name.'_min'])){

                $where[] = [$field_name, '>=', $request[$field_name.'_min']];

            }

            if(isset($request[$field_name.'_max'])){

                $where[] = [$field_name, '<=', $request[$field_name.'_max']];

            }

        }

        //分页

        if (isset($request['page'])){

            $page = $request['page'];

        }

        if (isset($request['size'])){

            $size = $request['size'];

        }

        //排序

        if (isset($request['order'])){

            $order = $request['order'];

        }

        //查询字段

        if (isset($request['field'])){

            $field = $request['field'];

        }

        //模糊查询

        $list= $this->where($where)->order($order)->field($field)->page($page, $size)->select()->toArray();

        foreach($list as &$l){

         foreach($l as &$o){

         if(strpos($o,$_SERVER['HTTP_HOST']) === false){

         $o = str_replace('upload','http://'.$_SERVER['HTTP_HOST'].'/upload',$o);

         }

         }

        }

        return $list;

    }

    1. 课程信息模块

管理员和学生点击“课程信息”这个按钮可以查看到系统中的课程信息,支持通过课程名称或者上课班级进行查询课程信息,如果想要添加新的课程信息,点击“添加”按钮然后根据提示输入课程信息,点击“提交”后,在课程信息界面就会显示新增的课程信息,可以点击某一课程信息查看课程信息的详情,也可以直接点击“删除”进行删除课程信息。界面如下图4.4所示。

图4.4 课程信息界面图

课程信息逻辑代码如下所示。

public function add()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');

            $request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

if($this->table == 'user'){

$request['password'] = md5($request['password']);

}

$res = $this->add_before($request, $this->table, $this->table_id);

if($res['code'] == 200){

$result = $this->model->add($request, $this->table, $this->table_id);

$this->add_after($this->table);

$data = $result;

}else{

$data['error'] = $res;

}

            }

        } else {

            $data['error']['code'] = 30000;

            $data['error']['message'] = "field的值不能为空";

        }

        return json_encode($data);

    }

    1. 学生信息模块

点击“学生信息”这个菜单,可以查看到系统中所有添加的学生信息,支持通过学生学号或者姓名或者性别对学生信息进行查询,如果想要了解某一学生的详细信息,点击后面的“详情”会进入详情界面,教师和管理员如果想要选择某一学生,点击“发布成绩”按钮,根据提示填写对应的信息,点击“提交”按钮,信息没有错误在数据库就会提交成功,发布成绩成功。界面如下图4.5所示。

图4.5 学生信息界面图

    1. 学生成绩模块

点击“学生成绩”这个按钮可以查看到自己所有的学生的成绩,支持通过学生学号或者班级名称进行查询学生成绩信息,管理员和教师可以对所添加的学生成绩进行删除。界面如下图4.6所示。

图4.6 学生成绩界面图

学生成绩逻辑代码如下所示。

public function del()

    {

        $request = Request::param();

        $result = $this->model->del_data($request, $this->table, $this->table_id);

        $data = $result;

        return json_encode($data);

}

    1. 平均值数据模块

点击“平均值数据”这个菜单,可以查看到系统中所有添加的平均值数据信息,支持通过学生学号或者姓名或者班级名称对平均值数据信息进行查询,只有管理员用户可以添加新的平均值数据,点击“添加”按钮,根据提示输入平均值数据信息,点击“提交”按钮,新的平均值数据信息就在系统中显示出来了,也可以对添加的平均值数据信息进行删除。界面如下图4.7所示。

本文地址:https://sicmodule.kub2b.com/quote/15369.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号