今天为大家奉上的是我的毕业论文:一款基于PHP和Yii框架技术的班级管理系统。虽然这样的系统已没有什么了新意,但是我的目的不是给大家带来新鲜感,而是和大家一起分享一下Yii技术。Yii框架是后起之秀,又是国外的框架,国内的源码很少,而Yii框架学习对新人来说又相对有难度,所以,写了一个小小的班级管理系统和大家一起共同学习啦。下面附上我论文的全部内容和系统源码,希望对大家有帮助

基于PHP技术的班级管理系统

 

姓名:xxx  学号:xxxxxxxxxxxx   指导老师:xxx

摘要:PHP技术是当今十分流行的web语言,具有免费、安全、易学、跨平台和速度快等优点。本文通过实现一个基于PHP和Mysql数据库技术的班级管理系统,带大家体验一下真实的软件开发流程和强大的PHP技术。本系统运用了YII框架技术,具有简单、易用和可扩展等特性,深受广大PHP编程者厚爱。希望本文的相关内容能够帮助大家更加了解软件开发的相关知识。

关键词:班级管理 软件开发 PHP技术 Yii框架

 

1.引言

1.1设计背景

随着社会经济的发展,人们对教育的重视程度越来越明显。近年来,各地高校不断增加,各高校招生人数也不断攀升。与20世纪50-60年代的班级相比,如今的高校班大、人多,显然手工进行班级管理已不切合实际,而且人工管理具有量大、效率低、易出错、检索信息慢、对学校的管理提供决策信息较为困难等缺点。因此,选择一种更高效,更迅速,更安全,更便捷的班级管理方式已经显得尤为重要了。

计算机的普及给我们的工作、学习、生活都带来巨大的便利和高效,科技的进步让我们领略到智慧的力量,网络的普及更让世界触手可及。在21世纪这样一个信息化的时代,网络化的办公、管理已不是什么稀奇事。作为21世纪的大学生将自己所学知识运用到社会实践生活当中更是责无旁贷。

1.2设计的内容与意义

本文就设计背景中提到的班级管理问题,运用PHP+MYSQL WEB技术设计出一套班级管理系统。全文共分七章,分别阐述了系统的设计背景、设计理论、系统的环境支持、系统理论设计、最终实现过程、系统调试以及小结。其中设计理论部分主要介绍了该系统所用的相关技术及其优势,系统环境支持部分主要介绍了该系统所用软件安装和配置,系统理论设计部分主要介绍了系统的相关功能、根据相关功能进行数据库设计以及页面设计,系统最终实现部分主要介绍了系统的实现过程和具体代码,系统调试部分介绍了本人在实现该系统过程中进行的一些调试信息,小结部分主要分享一下个人的一些思想体会。

实现本系统的意义在于:其一,检验自身大学四年的学习情况,对知识的掌握的扎实程度、灵活运用所学知识的能力。其二、针对当今高校班级大、人数多、难管理的现状、运用当今主流PHP技术,将自身所学知识运用到社会实践中,解决社会实际问题,成为一名社会有用的合格的大学生。

2.设计理论

2.1 PHP脚本语言简介

PHP原本简称 Personal Home Page,是Rasmus Lerdorf 用C语言开发的一些CGI程序集,用以维护个人网页。Rasmus Lerdorf将这些程序和一些窗体解释器集成起来,称作PHP/FI,并于1995年6月8日公开释出,版本命名为PHP2。1997年,Technion IIT 公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的解析器,成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor。PHP3于1998年6月正式释出,释出后Zeev Suraski 和 Andi Gutmans 开始改写 PHP 的内核,并于1999年释出此内核解释器Zend Engine。2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式释出。2004年7月13日释出了PHP 5,PHP 5则使用了第二代的Zend Engine。 2008年PHP 5成为了PHP唯一维护中的稳定版本。2009年PHP 5.3发布,加入了Late static binding、NameSpaces和一些其他的功能强化[1]

2.2 YII框架简介

Yii是一个基于组件、用于开发大型Web应用的高性能PHP框架。它将Web编程中的可重用性发挥到极致,能够显著加速开发进程。Yii(读作“易”),代表简单(easy)、高效(efficient)、可扩展(extensible)。它是由美籍华人“qiang” (他原来是Prado框架的核心开发成员之一,维护该框架超过3年)于2008年1月开始开发,YII框架的设计思想主要来源于Prado,Ruby on Rails,jQuery,Symfony和Joomla。

Yii非常容易学习和使用,您只需要知道PHP和面向对象的编程技术。它几乎拥有了所有的特性:从MVC,DAO/ActiveRecord,到主题化,国际化和地方化,Yii提供了几乎当今WEB2.0应用开发需要的所有特性。不仅如此,Yii还具有高度可重用和扩展性。Yii是纯面向对象的,它的一切部件都是独立且可配置的,重用及扩展非常容易。Yii更让人看重的是它的运行速度极快,除了框架本身的代码只需要极少的代码就可完成很复杂的功能,减少开发时间[2]

2.3 MYSQL数据库简介

Mysql数据库是由瑞典MysqlAB公司开发的一款小型关系数据库管理系统,使用C和C++编写,支持多线程,它优化的SQL查询算法,有效地提高了查询速度。Mysql支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统,它还为C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等编程语言提供了API。Mysql由于其体积小、速度快、源代码开放以及其总体拥有成本低等特点,受到许多中小型网站的亲睐。当然,MySQL也它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度,对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余[3]

2.4 Apache服务器简介

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。它对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、windows、Linux系统平台上)以及它的可移植性等方面[4]

3.系统环境要求及配置

3.1 PHP的安装与配置

3.1.1安装

下载PHP压缩包并将其解压到D盘,命名为PHP5,至此PHP的安装就结束了。

3.1.2 配置

(1)找到PHP配置文件:打开D:\PHP5,找到php.ini-recommended并将其改名为php.ini,这个php.ini就是PHP的配置文件了。

(2)设置PHP扩展组件路径:打开php.ini,在其中加上extension_dir = “D:\php\ext\”,也即设置PHP的扩展组件路径。

(3)开启组件支持:将类似extension=php_mysql.dll这样的语句前的 ;去掉即开启了相应的组件支持,根据需要我们将开启不同的扩展。

3.2 MYSQL的安装与配置

3.2.1安装

(1)下载mysql压缩包并将其解压。

(2)运行压缩包中的“setup.exe”文件,启动mysql安装向导

(3)安装类型有三种:“Typical(默认)”、“Complete(完全)”、“Custom

(用户自定义)”,由于本系统功能及数据量均较小,对数据库也无特殊的配置要求,所以这里我们直接选择Typical方式安装即可。

3.2.2 配置

软件安装完成后,Mysql会自动询问我们是否需要对Mysql进行相关的配置,这里只需配置一点,就是给Mysql数据库的Root用户设置一个密码,以保证整个数据库的安全。

3.3 Apache服务器的安装与配置

3.3.1安装

Apache的安装相对Mysql的安装更要简单,故不再赘述。下载Apache的安装包,启动安装向导,一路NEXT即可。Apache安装完成后会在右下角状态栏出现这个图标。现在你可以在浏览器中键入 http://localhost:80,单击“转到”按钮,如果网页出现“It works!”,那么Apache就安装成功了。接下来就是对Apache进行配置。

3.3.2配置

(1)打开Apache安装目录,找到conf文件夹打开,其中有一个httpd.conf文件就是apache的主配置文件了。

(2)修改网站根目录:打开Apache配置文件,找到DocumentRoot,将其路径修改为DocumentRoot“D:\www”

(3)修改目录权限:查找This should be changed to whatever you set DocumentRoot to,将<Directory “C:/Apache2/.2htdocs”> 改为< Directory “D:/www”>

(4)设置使apache支持.php文件:查找DirectoryIndex index.html ,在其后加上 .php

(5)加载PHP模块:在httpd.conf中加入LoadModule php5_module D:/php5/php5apache2_2.dll

(6)使apache能够解析php文件:查找 AddType application/x-gzip.gz.tgz,在其后加上AddType application/x-httpd-php .php(注意.php前有一个空格)

3.3.3测试

(1)配置完apache后一定要重启apache

(2)在刚才设置的根目录中新建一个test.php文件,文件内代码如下:

<?php>

phpinfo();

<?>

(3)在浏览器中输入http://localhost/test.php回车,页面出现apache的相关配置信息则说明配置成功,否则失败。

4.系统的需求分析

4.1系统整体功能模块图

图1  系统功能模块图

4.2系统功能可行性分析

本系统共有5大模块,其中班级管理、班级成员管理、留言管理和公告管理很多功能都具有相似性,主要就是对信息的增删查改操作,熟练运用sql语句即可顺利完成。登录功能属常规功能,主要是对用户登录信息进行验证,本系统验证过程也很简单,直接将用户的登录名和密码get过来以后与数据库中的用户名密码进行比对,其中密码是通过MD5加密过的。系统日志功能主要是在管理员的操作与数据库有交互时将相关表名和操作写入日志,写入规则也很简单,只要记录操作的表名,操作的SQL语句和操作时间。纵观这几项功能相对来说无技术难点,主要是能够对sql语句熟练运用。

5.系统的设计与实现

5.1数据库设计

5.1.1 数据库实体模型

图2 PowerDesigner建立实体模型

5.1.2数据库关系模型

(1)admin_info(admin_id,admin_name,admin_login_name,admin_login_password,admin_role,college_id);

(2)class_info(class_id,class_name,class_size,college_id,class_grade);

(3)class_message(class_message_id,class_message_title,class_message_content,class_message_time,class_message_comfrom,class_message_examine,class_id);

(4)class_message_reply(class_message_reply_id,class_message_reply_content,class_message_reply_time,admin_id,class_message_id);

(5)class_notice(class_notice_id,class_notice_content,class_notice_time,class_id,admin_id,class_message_type);

(6) college(college_id,college_name,school_id);

(7) log_info(log_id,log_title,log_content,admin_id);

(8) school_info(school_id,school_name);

(9) sys_notice(sysnotice_id,sysnotice_content,sysnotice_time,admin_id);

(10)user_info(user_id,user_name,user_sex,user_class_id,user_is_manager,user_email,user_phone,user_address,user_login_name,user_login_password,user_age,user_nation.user_native,user_remark,user_photo,user_number;

5.1.3数据库表的结构

表1 管理员信息表

字段名 说明
admin_id 管理员ID
admin_name 管理员姓名
admin_login_name 管理员登录名
admin_login_password 管理员登陆密码
admin_role 管理员角色
College_id 学院ID

表2 班级信息表

字段名 说明
class_id 班级ID
class_name 班级名
class_size 班级人数
College_id 学院ID
Class_grade 级别

表3 班级留言表

字段名 说明
class_message_id 留言ID
class_message_title 留言标题
class_message_content 留言内容
class_message_time 留言时间
class_message_comfrom 留言者
class_message_examine 留言审核
class_id 班级ID

表4 班级留言回复表

字段名 说明
class_message_reply_id 回复ID
class_message_reply_content 回复内容
class_message_reply_time 回复时间
admin_id 管理员ID
Class_message_id 留言Id

表5 班级公布表

字段名 说明
Class_notice_id 班级公告ID
Class_notice_content 班级公告内容
Class_notice_time 公告时间
Class_id 班级ID
Admin_id 管理员ID
Class_notice_type 通知类型

表6 学院表

字段名 说明
College_id 学院ID
College_name 学院名
School_id 学校ID

表7 日志表

字段名 说明
Log_id 日志ID
Log_content 日志内容
Log_time 日志时间
Admin_id 管理员ID

表8 学校信息表

字段名 说明
School_id 学校ID
School_name 学校名

表9 系统公告表

字段名 说明
Sysnotice_id 公告ID
Sysnotice_content 公告内容
Sysnotice_time 公告时间
Admin_id 管理员ID

表10 用户表

字段名 说明
user_id 学生ID
user_name 学生姓名
user_sex 学生性别
user_class_id 班级ID
user_is_manager 是否管理员
user_email 学生Email
user_phone 学生电话
user_address 学生家庭住址
user_login_name 登录名
user_login_password 登录密码
User_age 学生年龄
User_nation 学生民族
User_native 学生籍贯
User_remark 备注
User_photo 照片
User_number 学号

5.2程序设计

5.2.1程序文件夹树图概览

图3  程序文件夹树图

Yii创建的应用程序只有一个主入口文件index.php,其中引入了YiiFramework和配置文件main.php,当用户请求页面时Yii先加载YiiBase.php安装autoload方法,为类的实例化做准备。Yii在加载完所有类和配置信息后就开始创建WebApp应用并运行WebApp,运行App时Yii先触发onBeginRequest事件,然后加载request组件和Url管理组件,Url管理组件根据配置文件中的Url配置信息分析出Url.Yii中默认Url方式为:http:// loaclhost/news/index.php?r=class/index,其中r=class/index中class代表控制器ID,index代表控制器中的index方法。

Yii是采用MVC设计模式的框架,所谓MVC即Model(数据模型)、View(用户看到的页面)、Controller(控制器)。其中每个数据表会对应一个Model,每个Controller在views中对应一个文件夹,文件夹中是该控制器控制下的相应页面。在views文件夹下有一个layouts文件夹,默认情况下此文件夹中的main.php页面是所有页面的基页面,其他所有页面内容都将加入到main.php的<?php echo $content; ?>部分。当然,如果有不同页面显示不同模板的需求也是可以配置的。

下面各模块程序就以MVC的模式简单介绍一下,将附上控制器和页面的相关程序并加以解说,数据模型类是根据数据表生成,这里就不加以赘述,详细程序见源码。

5.2.2登陆程序

(1)Model:UserInfo、LoginForm

其中UserInfo是根据数据表user_info生成,LoginForm是由Yii框架自动生成,方便验证用户。

(2)Controller:SiteController

SiteController里主要就两个方法:actionLogin( )和actionLogout( )两个方法,下面详细解说一下登录方法的验证过程。

登录方法中,先实例化一个LoginForm Model,然后判断请求是否是一个Ajax的验证请求,如果是Ajax验证请求,则执行Model中对userName和Password制定的规则进行验证,验证结束则终止程序继续执行;接下来判断是否提交了LoginForm这个Model,也即是否点击了登录按钮,如果用户点击了登录按钮则将表单中的用户名和密码赋给LoginForm的相应属性,然后执行Model里的validate( )和login( )这两个验证方法,如果两个方法均验证通过则说明登录成功,页面跳转到班级管理首页。

(3)View:site (login.php)

因为每个Model中都继承了CactiveRecord这个类,这个类中提供了很便捷的FormWidget,之所以说它便捷是因为使用此物件生成的表单不需要我们自己写一大堆JS去验证用户提交的数据,此物件会根据Model中定义的验证规则去验证用户数据。他不仅提供了JS验证,还提供了Ajax验证,我们需要做的就是开启或关闭这些功能。<?php echo $form->error($model,’username’); ?>此段代码就是对相应字段进行验证并显示错误信息的代码,很简单,就一句。

(4)辅助类 :UserIdentity

此类提供了具体的验证过程以及在验证成功后保存Session信息,以方便会话。

5.2.3班级管理程序

(1)Model: ClassInfo

(2)Controller:ClassController

1ClassController中有5个方法:actionIndex(显示全院班级列表)、actionAddClass(添加班级)、actionView(查看班级信息,也即显示全班成员列表)、actionUpdate(修改班级信息)、actionDelete(删除已毕业班级)。

2actionIndex():这里没有直接去查询班级信息并将其列出,主要是为了后面的搜索。直接实例化ClassInfo(‘search’),其中search表示场景。然后用Model中得search方法去搜索班级,这样就方便我们控制搜索的条件,默认情况下是无条件搜索的,这样就会列出所有班级。下面对search( )方法加以解说。首先通过Session信息找到登录的用户,然后通过用户找到他是哪个学院的管理员,这样就相应的搜索出该学院下的班级。类似criteria->compare(‘class_name’,$this->class_name,true);这样的语句是在搜索(见下面view里的搜索)时将用户提交过来的搜索条件与数据库进行模糊匹配用。传统的搜索程序相当复杂,而Yii的搜索却相当的简单。

3actionAddClass:添加班级当然是先要实例化一个ClassInfo对象,然后就是对ClassInfo中各属性值进行准备。这里主想讲讲如何处理级别的,其他的属性都是用户POST过来的值直接赋予的。在View页面中先获得当前的年份,然后用当前年份分别减1、减2、减3、减4,这样就获得了在校的学生级别,至于之后的那还在高中,之前的已经毕业了。

4actionView:此方法类似MemberController中的index()方法,这里先不简绍,详见下文。

5actionUpdate:此方法和添加班级无本质区别,只是一个先实例化一个ClassInfo类,一个是根据ID查询出一个ClassInfo Model,所以这里不再赘述。

6actionDelete:根据ID查出要删除的记录,执行Model中得delete( )方法即可。

(3)View :class(index.php、searchClass.php、searchMember.php、add.php、view.php、update.php)

1index.php( ):主要运用了Yii提供的一个小物件zii.widgets.grid.CgridView,此物件主要是用table将相关数据以列表的方式显示出来。按照传统的方式只写一个表格,然后加样式就够受的,这里,只要一个小物件就全部解决。’dataProvider’=>$model->search( ),这就体现出上面说的用Model里的search()方法去获取数据,默认是无条件搜索。那用户要求按照他想要的方式去搜索怎么办呢?这里我们就来看看$this->renderPartial(‘searchClass’,array(‘model’=>$model));这段代码的意思是用$model去渲染一个局部页面searchClass.

2searchClass.php:这里还是用了FormWidget这个物件,因为还是表单,需要搜集用户数据。这里搜集到用户提交的搜索条件后赋值给Model里的相应属性,然后用$criteria->compare(‘class_grade’,$this->class_grade,true);去与数据库中的数据进行模糊匹配。

3add.php:主要还是运用了FormWidget物件做一些各式各样的表单以搜集相关数据,这里主要是如何让处理级别的。$LocalDate=getdate( )是获取当前的详细时间,是一个数组,$LocalYear = $LocalDate['year'] 就可以了。

4update.php:和add.php是一样的,这里不再赘述。view.php和searchMember.php和MemberController一样,详见下文。

5.2.4班级成员管理程序

(1)Model:UserInfo

(2)Controller:MemberController

1MemberController中有6个方法:actionIndex(列出学院所有学生信息)、actionAddMember(添加班级成员)、ExcuteImage(上传图片处理方法)、actionUpdate(更新成员信息)、actionView(查看班级成员详细信息)、actionDelete(删除成员)

2这里的actionIndex( )、actionAddMember( )、actionDelete( )与ClassController中的actionIndex( )、actionAddMember( )、actionDelete( ) 原理是一样的,下面的MessageController和NoticeController里的增删查改也是同理,不再赘述。下面将主要介绍控制器中的不同方法。

3ExcuteImage

这里的图片处理采用了网友提供的一个关于Yii框架的图片处理插件,其特点是读取图片一句代码,处理图片一句代码,保存图片一句代码。详细过程是:首先用Yii的CuploadFile中得getInstance方法获取用户上传照片的一些信息(name,type,temp_name,size,error),然后以当前时间的时间戳再加时间戳的方式给图片命名,默认先给它.JPG的后缀。然后通过switch语句判断出图片真正的格式,将后缀换掉。到此,图片处理就完成了。下面是上传并保存图片,就一句代码:$model->user_photo->saveAs(‘photo/original/’.$filename.$sufix);上传完图片后我们需要重新读取图片将它调整大小后重新保存,读取:image = Yii::app()->image->load(‘photo/original/’.$filename.$sufix),这里运用的已不再是Yii自带的功能,而是插件的功能了(插件下文介绍);调整大小:$image->resize(140, 150);就这么短短的一句代码就将上传的图片处理为140pxX150px大小的图片了。

4图片处理插件介绍:

安装:直接将image文件夹放到application下的extentions文件夹下即可,image下文件见图4:

图 4 image文件处理插件

配置:在application的main config的components中添加以下配置

‘image’=>array(

‘class’=>’application.extensions.image.CImageComponent’,

// GD or ImageMagick

‘driver’=>’GD’,

// ImageMagick setup path

‘params’=>array(‘directory’=>’D:/Program Files/ImageMagick-6.4.8-Q16′),

),

调用方法:

$image = Yii::app()->image->load(‘images/test.jpg’);

$image->resize(400,100)->rotate(-45)->quality(75)->sharpen(20);

$image->save(); // or $image->save(‘images/small.jpg’);

(3)View:member(index.php,add.php,view.php,update.php,searchMember.php)

这里的视图文件也是和class中的原理一样,不再赘述。下面主要看看view.php,首先,这个页面我们用的是Html和PHP混编的方式写的,大家可以看看和直接用Yii的组件写是不是代码多了许多呢?其次,我们来看看这段代码:

$css=Yii::app()->clientScript;

$css->registerCssFile(Yii::app()->baseUrl .’/css/viewMember.css’);

之前介绍过,所有view页面的基页面是layout下的main.php(除特殊配置),那么页面的所有CSS和JS也是通过这个文件引入,对所有页面有效。那如果只想单独的页面有特别的CSS该如何做呢,就是上面的代码去注册CSS,该CSS只对member下的view.php起作用。

(4)辅助类:

Image_GD_Driver\Image_ImageMagick_Driver\CimageComponent\Image,这些都是刚才介绍的image文件下插件的类。

5.2.5留言管理程序

(1)Model:ClassMessage。

(2)Controller:MessageController

1MessageController下只有两个方法:actionIndex(列出所有留言)、actionView(查看留言并进行审核和回复)。下面详细介绍一下审核和回复功能。

2actionView()

这里的审核功能有五种状态:未审核、审核中、审核通过、审核未通过、已回复。学生通过前台留言后默认状态是未审核,是不会显示的。当管理员登录后可以对留言进行审核操作,审核中和审核未通过这两种状态都很好界定,管理员直接在下拉框中选择就行了,而审核通过和已回复界定的依据是:当管理员选择了已审核,并且回复内容不是无(默认不回复时是无)时系统会将状态设置为已回复,否则就是已审核。当管理员选择除已审核外的其他状态并回复了内容时系统会默认将回复内容置为无。这里的回复还限定了一条留言只能有一条回复,不管是哪位管理员,留言被其他管理员回复后是不可再回复一条的,只能对回复进行更改。

这个方法中还用到了数据库的事务,所谓事务,就是把两个或以上操作捆绑在一起,同时成功或失败,只要有一个操作失败了,那么将回滚所有操作。数据库的事务主要是保证两个相关联操作数据的一致性。这里用事务是为了保证留言表和留言回复表的相关数据保持一致。

(3)View:message(index.php,view.php、searchMessage.php)

5.2.6公告管理程序

(1)Model:ClassNotice

(2)Controller:NoticeController中只有四个最基本的方法:actionIndex(查看所有公告)、actionAdd(添加公告)、actionUpdate(修改公告)、actionDelete(删除公告),之前均已介绍过原理,不再赘述。

(3)View:notice(index.php、add.php、view.php、update.php、searchNotice.php)

下面主要分析一下add.php里的FCKeditor相关代码。这段代码是一个TEXTAREA表单,用来获取用户填写的公告内容。猛一看这段代码似乎并没有什么特殊的地方,但是它的功能可比普通的TEXTAREA表单功能强大多了,它是目前流行的网页文字编辑器FCKeditor。当然在使用之前需要将FCKeditor引入并进行相关配置。

FCKeditor配置:①下载FCKeditor源码,将其放在application目录下。②下载FCKeditorWidget插件,将其放在application下的extentions文件夹下。这样我们就可以像上面的代码那样使用这个小物件了。

那么FCKeditor到底比正常的textArea功能强大在哪里呢?普通的textArea框只能输入文本数据,而FCKeditor不仅仅支持文本数据,它支持所有网页元素,包括图片、链接、甚至动画、音乐等。

5.2.7日志程序

(1)Model:LogInfo

(2)程序:

日志程序很简单,主要就是在涉及到数据库操作的地方,保存数据成功之后实例化一个日志的Model,写上相关的操作记录、操作表、操作人和操作时间即可。

6.系统调试

由于本系统的特殊性以及本人对软件测试的专业性原因,本系统只进行了简单的功能测试,并未进行严格的测试程序。下面简单介绍本人在边写边测试以及集成测试时发现的一些功能性、易用性、可靠性、兼容性和安全性等方面的一些问题。

功能性:

按照最初的系统需求分析以及系统的可行性分析要求,本系统基本完成了预期功能,实现了登录功能(对管理员身份安全验证)、班级管理功能(对班级的增删改查功能)、班级成员管理系统(对班级成员的增删改查功能)、留言管理功能(对留言的查看、审核、回复功能)、公告管理功能(对公告的增删查改功能)和登出功能。虽然系统功能基本实现,但是由于当时设计的不严谨,造成一些功能的牵强,虽然能同样完成功能,但有些概念的模糊给用户造成不好的体验。

易用性:

本系统虽是一个后台管理系统,但是页面的排版及效果相对还是较美观的,对用户的输入输出均有很明确的提示,增删查改操作结果均给以弹出框的提示,对输入的限制性也很严谨。美中不足的是本系统缺少对输入的解释性说明,有可能造成部分用户对输入内容的模糊。

可靠性:

本系统最让我遗憾的是容错性极低,在系统出现错误时未定义和跳转到相关错误页面,而是直接暴露错误信息。这对整个系统的可靠性是致命的。

兼容性:

本系统页面在IE7、IE8、IE9,火狐、谷歌下均测试通过,不存在兼容性问题,其他浏览器未进行测试。

安全性:

本系统是由Yii框架开发完成,由于Yii框架本身的安全性就很高,所以本系统的安全性也是相对较高的。

7.结束语

虽然本系统规模不大,但也是一个完整的系统,它是严格按照软件开发的流程来实现的。从软件的需求分析到可行性分析,整体架构设计,数据库设计,然后是页面的设计以及代码的实现,到最后的软件测试,这些都是软件开发的必经步骤。从这些步骤中我们能学习到很多有用的知识,也是将书本知识运用到实际应用的有效途径。在一步步实现这些步骤的同时我们难免会遇到许多这样那样的问题,于是我们不得不去想办法、查资料、请教前辈们来解决这些问题,其实,就在我们艰难的解决这些问题的过程中,我们不知不觉的学到了许多我们闻所未闻的新知识,同时也加强了我们的能力,丰富了我们的经验。

参考文献:

[1] 维基百科.PHP[OL]. http://zh.wikipedia.org/wiki/PHP

[2] YiiChina. 关于Yii[OL]. http://www.yiichina.com/about/

[3] 百度百科. mySQL[OL]. http://baike.baidu.com/view/24816.htm

[4] 百度百科. apache[OL]. http://baike.baidu.com/view/28283.htm

[5] LukeWellingLauraThomson著,武欣等译. PHP与mysql web开发[M]. 上海:机械工业出版社,2009:121­-134.

[6] 高洛峰. 细说PHP[M]. 北京:电子工业出版社,2009:497-503.

[7] Alexander Makarov. Yii 1.1 Application Development Cookbook[M]. Birmingham:Packt出版社,2011:37-75.

[8] 温谦. HTML+CSS网页设计与布局从入门到精通[M]. 北京:人民邮电出版社,2008:

171-191.

[9] 陶国荣. Jquery权威指南[M]. 上海:机械工业出版社,2011:42-81.

[10] 科夫勒. mysql5权威指南[M]. 北京:人民邮电出版社.2006:157-163.

[11] 李明树,杨秋松,翟健. 软件过程建模方法研究[J]. 软件学报,2009,20(3):524-545.

 

Class Management System based on PHP Technology

 

Name:xxx   Student Number: xxxxxxxxxxxx   Advisor: xxx

 

Abstract: PHP technology is popular web’s languages. It is free, safe, easy, fast and working on the multi-platform. This paper establishes a class management system based on PHP and Mysql Database. It brings you to feel a real Software development process and PHP technology. This system uses Yii framework. Yii Framework is simple, easy, and extensible. So it is well received to PHP programmers. I hope this paper can help you have better understanding of the software development.

Keywords: class management;software development;PHP technology;Yii Framework

源码下载:

班级管理程序源码下载

班级管理系统数据库下载

部分效果图:

本文固定链接: http://www.wukunfan.com/index.php/php-yii-class.html | 饭饭博客

基于PHP和YII框架技术的班级管理系统 | 饭饭博客相关推荐

  1. 班级管理html注册登录界面代码,基于JSP和SSH框架实现的班级管理系统

    1 系统需求的分析 1.1 需求分析 本项目所开发的班级管理系统完成学校对学生的班级信息的统计与管理,减少数据漏掉的情况,同时也节约人力.物力和财力,告别以往的人工统计.方便学生使用,学生可以在线查看 ...

  2. python制作物联网控制软件下载_基于Python和Django框架的物联网智能设备管理系统的设计与实现...

    论文写作指导:请加QQ229366758 基于Python和Django框架的物联网智能设备管理系统的设计与实现 作者:未知 摘 要:针对目前日益增多的智能设备提出了兼容性好,稳定性高,易于管理的管理 ...

  3. 基于java下Springboot框架实现小区物业管理系统

    基于java下Springboot框架实现小区物业管理系统 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:N ...

  4. Microsoft .NET Compact Framework 开发常见问题解答 - 专注.NET技术及其相关应用开发! - 博客园...

    Microsoft .NET Compact Framework 开发常见问题解答 发布日期: 3/30/2005 | 更新日期: 3/30/2005 Microsoft .NET Compact F ...

  5. 常用iOS、Mac框架和库及常用中文开发博客

    常用iOS.Mac框架和库及常用中文开发博客 文章来源:http://www.th7.cn/Program/IOS/201507/506590.shtml 目录 UI 下拉刷新 模糊效果 AutoLa ...

  6. python 写csv scrapy_scrapy爬虫框架实例一,爬取自己博客

    本篇就是利用scrapy框架来抓取本人的博客,博客地址:http://www.cnblogs.com/shaosks scrapy框架是个比较简单易用基于python的爬虫框架,相关文档:http:/ ...

  7. 项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四)

    系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...

  8. SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

  9. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

  10. java支持html5视频流技术Pseudostreaming – Roden的专栏 – CSDN博客

    文章目录[隐藏] java支持html5视频流技术Pseudostreaming 首页博客学院 下载论坛APP 问答商城活动VIP会员专题招聘ITeyeGitChat 图文课 写博客 消息 登录注册 ...

最新文章

  1. oracle 时间减去一个月_一文看懂教孩子时间问题的进阶过程
  2. 实例62:python
  3. python练手经典100例微盘_20个Python练手经典案例,能全做对的人确实很少!
  4. java数据类型和运算优先级
  5. 静默授权获取unionid_Asp.Net Core 中IdentityServer4 授权中心之自定义授权
  6. 事务方法调用事务方法_实现系统调用的几种方法
  7. 程序员代码面试指南:IT名企算法与数据结构题目 PDF 版
  8. R软件和扩展包的升级及R语言数据对象
  9. 网易邮箱支持手机收发邮件的服务器,[IT博览]网易163/126免费邮箱100%兼容iPhone/iPad邮件收发...
  10. 基于SpringBoot的宠物医院管理系统JAVA MYSQL
  11. Android9怎么剪辑音频,Timbre – 安卓(Android )视频剪辑软件,在手机上对视频、音频进行合并、剪辑、格式转换、分割...
  12. 1 三角函数的正交性
  13. 七月观荷 - 江湖一剑客
  14. Between 的开始日期和结束日期是同一天没有查询结果,附SQL server数据库的日期时间格式转换大全
  15. 问卷调查网站制作-前后端开发
  16. cacti监控及配置
  17. Java利用JNA调用C#的dll
  18. 介绍兴趣爱好的网页html,简历兴趣爱好描述技巧
  19. 【深度】信任区块链?可能时机还未到
  20. wamp集成环境php扩展,redis学习之路:wampserver集成环境安装php redis拓展

热门文章

  1. 爬虫之汽车之家/抽屉新热榜/煎蛋网
  2. Android NDK jint和jstring转换 以及jstring转换成jint的详解
  3. 中国大数据技术大会(BDTC 2022)企业数据智能专题论坛,7月17日淄博见
  4. mysql 5.5.27_MySQL-5.5.27安装图解
  5. 教师招聘面试视频 计算机,怎么准备教师招聘面试试讲?(附视频)
  6. java流程控制试讲_java试讲.ppt
  7. pod2g宣布A5的Sandbox破解成功
  8. 最短剩余时间调度算法_LRTF:最长剩余时间优先调度算法
  9. 360天擎彻底卸载的方法教程
  10. 在哪里看服务器cpu占用率,top命令查看服务器cpu使用情况等