基于php的成绩管理设计(含源文件)

欢迎添加微信互相交流学习哦!

二维码

项目源码:https://gitee.com/oklongmm/biye

 
1、开发背景
90年代中期,由于Internet 的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。企业信息管理系统在此基础上延伸、扩展,使之上下、内外全面贯通。随着Internet技术的兴起,对C/S结构(客户机和服务器结构)的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构(浏览器/服务器模式),主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。
2、系统描述
经过调研及分析讨论,学生成绩管理系统主要完成以下功能:
(1)学生个人信息维护:主要是完成学生个人信息的修改,学生用户只能对自己的信息操作。
(2)学生成绩检索:主要是完成学生个人成绩的查询,学生用户只能对自己的成绩进行检索。
(3)老师个人信息维护:主要是完成老师个人信息的修改,老师用户只能对自己的信息操作。
(4)学生成绩维护: 主要是完成老师对任课课程的学生成绩进行检索、添加、修改,老师用户只能对自己任课课程的成绩进行操作。

3、数据分析
3.1、数据流图
通过需求分析,得出学生成绩管理系统的教师业务处理数据流如图1所示。
 
图1 教师业务数据流图
3.2、数据字典
(1)数据流的描述
数据流编号: D01
数据流名称: 用户名和密码
      简述:教师输入用户名和密码验证
数据流来源:教师
数据流去向:P01教师信息判断
数据流组成:用户名和密码
数据流量:50/天
高峰流量:50/天
    
(2)处理逻辑的描述 

处理逻辑编号:P01
处理逻辑名称:教师登录权限判断
        简述:判断教师登录权限的合法性
输入的数据流:教师的用户名和密码
处理描述: 根据教师提供的同户名和密码,验证教师信息,验证通过则进入主页面,验证不通过则返回给教师信息指明为非法用户。

处理逻辑编号:P02
处理逻辑名称:教师个人信息查询
        简述:查询并显示教师个人基本信息 
处理描述:根据cookies传出的教师ID在数据库中查找出该教师的个人基本信息,打印到该页面。

处理逻辑编号:P03
处理逻辑名称:教师任课课程学生成绩查询
        简述:查询并显示教师任课课程的学生成绩 
处理描述:根据cookies传出的教师ID,然后再在数据库中跨表查询出该教师的任课科目的所有学生成绩,打印到该页面。

处理逻辑编号:P04
处理逻辑名称:验证用户当前密码,提供修改密码权限
        简述:教师可以通过该页面修改自己的账号的登录密码。
处理描述:从数据库中查询出该教师的当前密码并比较输入的当前密码,比较两次输入的新密码。

    处理逻辑编号:P05
处理逻辑名称:教师修改个人信息
        简述:教师修改个人的基本信息 
处理描述:根据cookies传出的教师ID在数据库中查找出该教师的个人基本信息,打印到该页面,同时提供了几项可以修改的选项,教师可以并保持,正确提交后,将修改的信息提交到数据库中。

处理逻辑编号:P06
处理逻辑名称:录入学生成绩
        简述:录入该教师任课课程的学生成绩 
处理描述:从数据库中查出该教师任课的课程,并由学生的姓名和id确定唯一学生,并录入学生的考试成绩,保存到数据库中。

处理逻辑编号:P07
处理逻辑名称:修改该教师任课课程的学生成绩
        简述:查询并显示学生的成绩,提供修改权限 
处理描述:查询出已经录入成绩的学生的成绩,允许教师修改学生的成绩,提交后保存到数据库。

处理逻辑编号:P08
处理逻辑名称:修改教师用户登录密码
        简述:验证教师用户当前密码,提供修改密码的权限
处理描述:验证当前密码和新密码的合法性,合法则提交到数据库,非法则跳到p02。


    处理逻辑编号:P09
处理逻辑名称:退出系统
        简述:教师用户退出系统 
处理描述:教师用户安全退出系统,跳转到登录页面。


(3)数据存储的描述

数据存储编号:F01
数据存储名称:教师用户验证信息
        简述:教师用户的用户名和密码
        数据存储组成:用户名+用户类型+密码+用户ID
关键字:用户ID
相关联的处理:P01、P04

数据存储编号:F02
数据存储名称:教师个人基本信息
        简述:查询出教师用户的基本个人信息
数据存储组成:教师姓名+年龄+教师ID+教师密码 +教师电话号码+教师性别+教师照片+教师职称
关键字:教师ID
相关联的处理:P02、P05
            
数据存储编号:F03
数据存储名称:读取学生成绩
        简述:由学号查询该学生的学生成绩
数据存储组成: 学生id+学生姓名+课程名称+学生成绩+授课老师
关键字:课程ID+学生ID
相关联的处理:P03
        
数据存储编号:F04
数据存储名称:存储修改的信息
        简述:存储修改的信息
数据存储组成: 包括学生成绩块+用户密码块+用户个人信息块
关键字:教师ID+学生ID+课程ID
相关联的处理:P04、P05、P06、P07、P08

(4)外部实体的描述
外部实体编号:S01
外部实体名称:教师用户
简        述:登录系统的教师用户
输入的数据流:D002
输出的数据流:D001
4、概念模型设计
4.1E-R图
 
图2 系统E-R图
5. 逻辑模型设计及优化
5.1数据库表:
表1 学生个人信息表(student_info表)

字段名    数据类型    长度    备注
stu_id    mediumint    8    primary key
stu_name    varchar    20    
stu_person_id    varchar    30    
stu_password    varchar    20    
stu_age    tinyint    3    
stu_sex    varchar    1    
stu_tel    varchar    30    
stu_major    varchar    20    
stu_grade    varchar    20    
stu_class    varchar    20    
stu_photo    varchar    40    
stu_entrance    date        

表2学生成绩表(stu_score表)
字段名    数据类型    长度    备注
stud_id    mediumint    8    primary key
course_id    mediumint    8    primary key
score    tinyint    3    

表3课程表(course表)
字段名    数据类型    长度    备注
course_id    mediumint    8    primary key
course_name    Varchar    20    
teacher_id    mediumint    8    primary key


表4教师个人信息表(teacher_info表)
字段名    数据类型    长度    备注
teacher_id    mediumint    8    primary key
teacher_name    varchar    20    
teacher_password    varchar    20    
course_id    mediumint    8    
teacher_tel    varchar    20    
professional    varchar    20    
teacher_age    tinyint    3    
teacher_sex    varchar    1    
teacher_photo    varchar2    20    
表5课程表(course_info表)
字段名    数据类型    长度    备注
course_id    mediumint    8    primary key
course_name    varchar    20    
6、应用程序设计
 
图3系统登录界面

 
图4教师个人信息页面
 

图5修改个人信息页面
 
图6查看学生成绩页面

 
图7录入学生成绩页面

 
图8修改学生成绩页面

 
图9修改个人密码页面

7、课程设计心得体会
本次数据库课程设计收获很大,当然也花了好多的心思和时间,首先,我们为团队合作,共同开发这个项目,团队意识真的很重要,我们就在团队合作上出了些小问题,经过交流得到了解决,问题导致了我们的项目完成时间的推迟,这让我们意识到团队的合作是很不容易的,首先是对项目的认识必须统一,当我们对项目的需求没有统一理解时,这将为失败埋下伏笔,这样注定失败,至少是在代码组合时无法兼容,更严重可能会要全部返工。团队合作的第二个重点是:合理分工,合理的分工能让项目完成的更快更好,合作更加的愉快,不合理的分工会导致大家的心态不一,出现分歧,出现问题,出了问题就无法继续项目的开发了。我们本次分工上也出现了一些问题,主要原因是团队每个人技术特长不一,最后还是进行了合理的安排。完成了项目的基本功能。
在实际开发的过程中给了我很多的实践经验,课程设计跟平时的理论课程有很大的区别,就是动手能力要求高,同时也提高我们的动手能力,课堂上的理论,我们通过项目得到了实际的应用。当然也发现了很多自己以前未能发现的知识上的不知,实践是检验真理的唯一标准,也是检验自己知识掌握程度的机会,在动手编码的过程中,我发现了很多数据库知识上的缺陷,也发现了自己编码的不良之处,通过和同学老师的交流得到了改正,并收获了很多的实践经验。


参考文献
[1] 王珊 萨师煊 .数据库系统概论(第4版).高等教育出版社2006
[2] 卓越科技 .零起点网页制作培训教程.电子工业出版社.2009


附录:
PHP数据库连接源代码
package com.hnwl.util;
       //设置字符编码
    header('Content-Type:text/html;charset=utf-8');=
    //转换硬路径常量
    define('ROOT_PATH',substr(dirname(__FILE__),0,-8));
    //创建一个自动转义的状态常量    
    //拒绝php低版本
    if(PHP_VERSION<'4.1.0')
    exit('PHP Version is to Low!');
    //引入函数库
    require ROOT_PATH.'includes/global.func.php';
    require ROOT_PATH.'includes/mysql.func.php';
    //数据库连接
        define("DB_USER","root");
        define("DB_PWD","root");
        define("DB_HOST","localhost");
        define("DB_NAME","stu_grade_info");
 //初始化数据库 用 函数实现
        _connect();//数据库连接
        _select_db();//选择指定的数据库
        _set_names();  //设置字符集
        
PHP前台页面源代码(登陆页部分)
<?php
require dirname(__FILE__).'/includes/common.inc.php';//转换成硬路径速度快
if($_GET['action']=='login'){
      include ROOT_PATH.'includes/login.func.php';
        $_clean=array();
        $_clean['user_id']=_check_username($_POST['user_id'],2,20);
        $_clean['password']=_check_password($_POST['password'],3);
        $_clean['level']=$_POST['level'];
        $_clean=_mysql_string($_clean);
        
    if($_clean['level']==1){
        //学生
        if(!!$_rows=_fetch_array("select stu_id,stu_name from stu_info where stu_id='{$_clean['user_id']}' and stu_password='{$_clean['password']}'  limit 1")){
             _setcookies($_rows['stu_id'],$_clean['level']);
            _close();//关闭数据库
            _location(null,'manage.php');
        }else{
            _alert_back('用户名或密码不正确!');
        }
    }else if($_clean['level']==2){
        //教师
       if(!!$_rows=_fetch_array("select teacher_id,teacher_name from teacher_info where teacher_id='{$_clean['user_id']}' and teacher_password='{$_clean['password']}'  limit 1")){
             _setcookies($_rows['teacher_id'],$_clean['level']);
            _close();//关闭数据库
            _location(null,'manage.php');
        }else{
            _alert_back('用户名或密码不正确!');
        }
    }else{
        _alert_back('非法操作!');
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>成绩信息管理系统</title>
<link rel="stylesheet" type="text/css" href="style/basic.css"/>
<link rel="stylesheet" type="text/css" href="style/index.css"/>
</head>
<body>
<div id="main">
    <h2 class="top">您好,欢迎登陆学生成绩信息管理系统!</h2>
    
    <div id="login">
        <p class="header">学生成绩信息管理系统</p>
        <img src="images/logo.png"/>
        <form action="index.php?action=login" method="post">
            <dl>
                <dd> &nbsp;用 户 ID:<input type="text"  name="user_id" /></dd>
               <dd>密  码:<input type="password"  name="password" /></dd>
               <dd>身份登陆:<input type="radio" name="level" value="1" checked="checked" class="radio"/>学生 <input type="radio" name="level" class="radio" value="2" />教师 </dd>
               <dd><input type="submit"  name="submit" value="登陆" class="submit" /> <input type="reset"  name="reset" value="重置" class="reset"/></dd>
            </dl>
        </form>
    </div>
  

</div>

   <div id="footer">
        <p>版权所有 翻版必究</p>
        <p>本程序由<span>再飘一会儿</span>提供 源代码可以任意修改或发布(c) 429354764@qq.com </p>
    </div>
</body>
</html>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值