1、基于PHP+MySql的学生选课系统的设计与实现中文摘要 针对高等院校在校学生众多,使用传统的选课方式效率低下,并且课程安排,地点安排,学生选课等过程中非常容易出错,造成课程时间冲突或者地点冲突,同时,教务员对选课的统计也十分麻烦,所消耗的人力巨大。所以,借助先进的的互联网技术,按需开发网络选课系统。 本系统属于web应用,前台采用前端框架bootstrap,后台采用php的CodeIgniter框架,数据库采用MySql,服务器软件使用Apache。管理员通过管理员操作平台对学校课室,学生信息,课程,班级等进行在线管理;学生通过学生操作平台进行在线选课;教师通过教师操作平台查看课表,已选自己
2、课程的学生名单。通过在线操作,减少手工操作带来的失误,同时便于管理员对数据进行统计。 关键词:选课系统,PHP,MySql,bootstrap,CodeIgniter,Apache0Abstract For many students of universities,it is inefficient to select course with traditional way.For the arrangement of time and location,it is easy to make mistake when students select course,and the senate
3、 staff are put to trouble when they collect statistics.The traditional way to select course may cost too much.So,with the advanced internet technology,we are able to develop a network system for selecting course according to the need.This system is a web application.We use the bootstrap to develope
4、the front,and Codeigniter,a frame of PHP for the backstage,and we choose MySql for the database and the apache for server software .The admins of this system are able to manage all the informations of admins,teachers,students,courses,classroom and so on.Students have the right to select course,and t
5、eachers can know the curriculum of himself.Through online operations,it will play an important role in reducing errors caused by manual operation,and it make collecting statistics more convenient. Key words: courseselection system,PHP,MySql,bootstrap,CodeIgniter,Apache1目录中文摘要1Abstract2目录3第1章 引言51.1
6、引言5第2章 系统功能分析52.1 系统介绍52.2 系统面向的用户群体52.3 系统功能需求52.4 系统非功能性需求62.5 系统开发环境7第3章 可行性分析73.1 技术可行性73.2 时间、硬件设备可行性7第4章 系统工具介绍74.1 HTML74.2 DIV+CSS84.2 Apache84.3 PHP84.4 MySql84.5 bootstrap94.6 CodeIgniter9第5章 数据库设计95.1 数据库命名规范95.2 数据库逻辑设计95.3 数据库物理设计145.3.1 数据库表总汇14第6章 系统结构设计196.1 系统总体结构图196.2 约束条件设计19第7章
7、系统界面设计197.1 登陆页面197.2 管理员模块界面207.3 教师模块界面257.4学生模块界面26第8章 编码298.1 系统软件架构模式298.2 CodeIgniter框架298.3 模型设计298.4 视图308.5 控制器设计31参考文献32致谢333第1章 引言1.1 引言随着计算机科学技术的不断发展,计算机科学强大的计算功能已经让人们深刻认识到,计算机已经进入人类社会的各个领域,并且发挥着越来越重要的作用。它的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算
8、机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。高等院校作为一种信息资源的集散地,更是作为重要的社会人才培养基地,学生和课程繁多,计算机成为高校教学管理中不可或缺的工具。我国高校实习学分制,允许学生自由选课,而学生选课,管理员对课程管理等相互制约因素大,业务流程复杂,工作量很大。传统的信息管理方式主要是基于表格,文本的纸质手工处理,对于选课情况的统计也是基于人工的检查,人工计算学生选课权限,选课代号,数据信息的处理量特别大,而且由于限制条件太多,业务流程比较复杂,容易出错,而且数据繁多,查找困难。利用计算机互联网技术对信息进行管理是时代的趋势。国外的教学软件发展时间较早
9、,相对于国内来说比较成熟。美国威斯康星大学在1892年最初提出“远程教育”这个名词,远程教育就是通过先进的互联网技术,实现资源共享,资源管理等,学生在线选课系统也是其中的一小部分。学生选课系统为用户提供充分的信息管理和方便查询功能,能够为老师,学生和教务管理员提供很大的方便,避免传统选课效率低、易出错、更新维护困难的缺点。随着互联网的普及,网上选课已不再是神话,相信会有更多的用户对网上选课改变认识。第2章 系统功能分析2.1 系统介绍 本系统定位于高等院校,用户群体为高等院校在校学生、教师和教务管理员。系统包含三个模块,分别是管理员模块,教师模块,学生模块。2.2 系统面向的用户群体本系统定位
10、于高等院校,用户群体为高等院校在校学生、教师和教务管理员。2.3 系统功能需求 2.3.1 管理员模块表2-1 系统管理员模块功能表编号功能名称功能说明1资讯管理添加新资讯,查看、修改、删除已发表的资讯2专业课程管理添加课程,查看、修改、删除已添加的课程,并且可以添加对应课程的班级3班级管理修改、删除已添加班级信息4学生账号管理添加学生信息,查看、修改、删除学生信息5教师账号管理添加教师信息,查看、修改、删除教师信息6管理员账号管理添加管理员信息,查看、修改、删除管理员信息7课室管理添加课室,查看、修改、删除课室信息8专业管理添加专业,查看、修改、删除专业信息9修改密码修改当前登录用户的密码
11、2.3.2 教师模块表2-2 系统教师模块功能表编号功能名称功能说明1资讯查看资讯2教师课表查看当前登录教师的课表信息3修改密码修改当前登录用户的密码 2.3.3 学生模块表2-3 系统学生模块功能表编号功能名称功能说明1资讯查看资讯2本专业选课选择本专业课程或者退选已选课程3课表查询查看课表4修改密码修改当前登录用户的密码2.4 系统非功能性需求 界面:简洁,易用,美观,大气,一定兼容性。 环境:服务器环境:windows+Apache+PHP+MySql。 质量:易用性,稳定性,可拓展性。 2.5 系统开发环境 前端页面开发环境用dreamweaver,它是是一个可视化的网页设计和网站管理
12、工具,支持最新的web技术,例如检查HTML,HTML的格式控制,图像编辑,ftp,可视化网页编程等。 PHP开发环境用的是Zend Studio,它是专业的开发人员使用的一套php集成开发环境。 Zend Studio具有专业和企业开发者开发、配置、调试和管理关键商务PHP应用的易使用性、可伸缩性、可靠性和扩展性。数据库管理工具使用的是Navicat for MySQL。Navicate for mysql为mysql数据库管理,开发和维护提供了强大的图形界面。可以连接任何本机或者远程的mysql服务器,支持大部分的功能,比如表,视图,函数,事件或过程等。它主要的功能包括sql创建工具,编辑
13、器,数据模型工具,命令行工具,数据传输,数据同步,导入导出功能,报表功能能等。第3章 可行性分析3.1 技术可行性我在对计算机的学习过程中,很好地掌握了计算机的基础知识,并且能熟练地使用PHP+Mysql开发中小型网站。对系统的数据库设计,能够按照需求提取系统中的实体,建立E-R图,数据库服务器环境搭建并且创建数据库。系统分析与设计上,非常清楚该选课系统的需求,通过绘制系统总体结构图,更加直观地发现整个系统如何一步一步地实现,并且跟踪整个开发进度,把握开发的时间成本。开发工具上,该选课系统是属于web应用项目,有过web项目的开发经验,对于前端,后台,数据库的选择都有直观的认识,保证编码的过程
14、中不会出现大问题。对于系统的后期维护上,由于采用的开发中选择互联网中应用开发中被广泛应用的MVC思想开发,而且工具选择上采用成熟的框架进行敏捷开发,对系统的修改扩展都可以很容易地实现。因此,该学生选课系统的实现在技术上是可行的。3.2 时间、硬件设备可行性该选课系统的开发耗时大概一个月左右,所以时间很充分。硬件设备上,开发过程中使用自己的计算机,可以在自己的机子上搭建web服务器跟数据库服务器环境,编码测试等操作都可以实现。系统完成开发之后,可以将系统部署到专用的服务器上,专用服务器是托管至机房,有专门的人负责管理,保证系统7*24小时的运行,提高用户的体验。第4章 系统工具介绍4.1 HTM
15、L 该选课系统是一个在线的web应用,它的前端页面应用到HTML开发。HTML(超文本标记语言)英文名为Hyper Text Markup Language,它是为“网页创建和其他可在浏览器看到的信息”设计的标记语言,被广泛用来构建web应用前端。HTML可以结构化信息,比如标题,段落,表格等,在一定程度上也描述文档的外观和语义。1982年由蒂姆伯纳斯-李创建,由IETF用简化的SGML(标准通用标记语言)语法进行进一步发展的HTML,后来成为国际标准,由万维网联盟(W3C)维护。HTML文件的后缀名为.html,但是有一些比较旧的系统文件拓展名最多只能是三位,所以.htm也被允许使用,如今,
16、基本上都是用.html作为后缀名。可以使用任何的文本编辑器编辑html文件,例如记事本,Notepad 等,或者使用“所见即所得”的专业的HTML编辑器。4.2 DIV+CSS 4.2.1 介绍DIV是HTML语言中的一个标签。CSS是层叠样式表(Cascading Style Sheets), 用来定义HTML元素的表现,是W3C推出的格式化网页内容的标准技术。DIV+CSS被用来设计网页的布局。 4.2.2 DIV+CSS布局和表格布局的比较传统的网页布局采用表格(table)布局的方式。对于一个比较复杂的页面,使用表格布局会增加table的嵌套数量,不管是维护还是开发,都会带来巨大的成本
17、。 对于CSS+DIV布局的方式,CSS样式可以共用,减少垃圾代码量,并且它实现了结构与表象的分离,对于网站的维护和扩展,查看源代码时,很容易看出网页的结构,修改页面的结构就会变得直观方便。4.2 ApacheApache HTTP Server是Apache软件基金会的一个开源的网站服务器,是非常流行的网站服务器端软件,因为它快速、可靠,还可以通过简单的API扩展,被广泛地应用到web应用作为服务器软件。Apache通过编译模块的实现从而支持许多的特性。一些通用的语言接口支持perl,python,php等。因为Apache是开源的,所以任何人在都可以修改项目源代码,定制自己的网站服务器,更
18、好地为自己的项目服务。4.3 PHPPHP全称Hyper Preprocessor(超文本处理器),是一种被广泛用来开发动态网页的服务器端脚本语言,底层使用了C语言。它是一种开源的计算机脚本语言,所以它是完全免费的,任何人都可以使用它开发自己的动态网站。 一般来说,PHP是运行在服务器端,而且它可以运行在不同的服务器,操作系统平台上,并且还可以跟不同的数据库系统结合使用。4.4 MySql MySql是一个开放源代码的免费的关系型数据库,所以任何人没有许可的情况下可以使用它。它使用的是著名的数据库语言SQL的标准形式,它的作品在多种操作系统上,有许多种语言,包括php,perl,c,c+,ja
19、va等。因为MySql性能高,成本低,可靠性好,被广泛用在各种大中型的网站建设中,相对于DB2,oracle等大型数据库来说,MySql有它的不足之处,例如规模小功能有限等,但是对于中小型的网站来说,使用MySql已经绰绰有余。4.5 bootstrap Bootstrap是Twitter开源的一整套前端解决方案,是一个用来快速开发Web应用程序的工具包。它是CSS跟Html的结合,使用了最新的浏览器技术,封装了一整套的组件,给网页提供时尚的元素,比如按钮,表单,列表,网格等,该系统选用的是用bootstrap制作的一个免费的管理员后台模板charisma,通过对这个模板的重新布局,制作选课系
20、统的前端页面。4.6 CodeIgniter后台框架用PHP的CodeIgniter框架。CodeIgniter是一个小巧的轻量级框架,采用单一入口,采用了MVC思想,一般用来开发中小型的网站项目。图4-1 应用程序流程图 其中,index.php是整个应用的入口文件,它负责初始化应用程序所需要的资源。Routing负责检查http请求,以确定谁负责处理请求。如果缓存文件存在,则绕过系统的一般执行程序,直接从缓存中获取数据,直接发送给浏览器。应用程序控制器装在所有数据之前,http请求和用户提交的数据都将被过滤。控制器接收用户请求的数据,并装载模型、辅助函数、核心库,以及处理其他特定请求的资源
21、。最后视图渲染发送到web浏览器的内容。第5章 数据库设计5.1 数据库命名规范 数据库名称:cs。 数据表命名规范:cs_作为所有表名的前缀。5.2 数据库逻辑设计实体:管理员,教师,学生,课程,教室,上课时间,新闻,专业 关系:管理员:新闻 = 1:n 教师:专业 = n:1 学生:专业 = n:1 教师:课程 = m:n图5-1 管理员E-R图图5-2 课室E-R图图5-3 课程E-R图图5-4 新闻E-R图图5-5 学生E-R图图5-6 专业E-R图图5-7 教师E-R图图5-8 时间E-R图图5-9 选课系统E-R图5.3 数据库物理设计5.3.1 数据库表总汇表5-1 数据库表总汇
22、编号名称说明1cs_admin系统管理员信息表2cs_student学生信息表3cs_teacher教师信息表4cs_course课程信息表5cs_news新闻资讯表6cs_subject专业信息表7cs_time上课时间表8cs_courseteacher教师与课程关系对应表,也即是班级表9cs_chooseinfo学生选课信息表10cs_classroom课室信息表 5.3.2 数据库表字段总汇表5-2 cs_admin字段名称数据类型长度说明a_idint主键a_usernamevarchar255用户名a_passwordvarchar40密码a_righttext权限a_addtim
23、eint添加时间表5-3 cs_student字段名称数据类型长度说明s_idint主键s_usernamevarchar255学生姓名s_passwordvarchar40密码s_gradevarchar5年级s_classvarchar10班级s_subjectint专业s_addtimeint添加时间表5-4 cs_teacher字段名称数据类型长度说明t_idint主键t_usernamevarchar255教师姓名t_passwordvarchar40密码t_subjectint专业t_addtimeint添加时间表5-5 cs_course字段名称数据类型长度说明c_idint主键
24、c_coursenamevarchar255课程名称c_subjectint课程所属专业c_creditsmallint课程学分c_describetext课程介绍c_addtimeint添加时间表5-6 cs_news字段名称数据类型长度说明n_idint主键n_titlevarchar255新闻标题n_contenttext新闻内容n_adminint发布人n_addtimeint发布时间表5-7 cs_subject字段名称数据类型长度说明su_idint主键su_subjectnamevarchar255专业名称su_addtimeint添加时间表5-8 cs_time字段名称数据类型
25、长度说明ti_idint主键ti_startvarchar15开始时间ti_endvarchar15结束时间ti_jieint第几节ti_addtimeint添加时间表5-9 cs_classroom字段名称数据类型长度说明cl_idint主键cl_classroomnamevarchar255课室名称cl_seatint课室容量cl_addtimeint添加时间表5-10 cs_courseteacher字段名称数据类型长度说明ct_idint主键ct_course_idint课程编号ct_teacher_idint教师编号ct_classroom_idint课室编号ct_weekint星期
26、几ct_time_idint上课时间ct_numberint课程班级容量ct_addtimeint添加时间表5-11 cs_chooseinfo字段名称数据类型长度说明ch_idint主键ch_studentint学生编号ch_courseint课程编号ch_courseteacherint班级编号ch_weekint星期几ch_time_idint上课时间ch_addtimeint添加时间第6章 系统结构设计6.1 系统总体结构图图6-1 系统结构图6.2 约束条件设计一、 管理员增加课程班级的时候,同一个教师不能在同一个时间上不同的课程;二、 管理员增加课程班级的时候,同一个教室同一时间不
27、能有两个或两个以上的班级上课;三、 学生选课的时候,同一时间不能选择不同的课程;第7章 系统界面设计7.1 登陆页面系统的三个模块共用一个登陆页面。输入账户名跟密码,不同的用户选择不同的身份,验证身份登陆之后分别跳转到不同的界面。图7-1 登陆页面7.2 管理员模块界面 7.2.1 管理员身份进入系统之后,跳转到管理员模块首页,即是资讯管理页,可以查看已经发布的资讯,点击“添加”按钮发布资讯,同时可以在每条资讯后面点击“删除”来删除资讯,或者点击“修改”来修改资讯信息。图7-2 资讯管理界面 7.2.2 点击左键的导航栏中的“管理员账户管理”,跳转到管理员账户管理界面。可以查看当前系统的所有管
28、理员信息,点击“管理员添加”按钮可以添加管理员,点击“删除”可以删除管理员,点击“修改”可以修改管理员信息。图7-3 管理员账户管理界面 7.2.3 点击左键的导航栏中的“教师账户管理”,跳转到教师账户管理界面。可以查看所有的教师信息,点击“教师账号添加”按钮可以添加教师信息,点击“删除”可以删除教师,点击“修改”可以修改教师信息。图7-4 教师账号管理界面 7.2.4 点击左键的导航栏中的“学生账户管理”,跳转到学生账户管理界面。可以查看所有的学生信息,点击“学生账号添加”按钮可以添加学生信息,点击“删除”可以删除学生信息,点击“修改”可以修改学生信息。图7-5 学生账号管理界面 7.2.5
29、 点击左键的导航栏中的“专业管理”,跳转到专业管理界面。可以查看已添加的所有的专业信息,点击“专业添加”按钮可以添加专业,点击“删除”可以删除专业信息,点击“修改”可以修改专业信息。图7-6 专业管理界面 7.2.6 点击左键的导航栏中的“专业课程管理”,跳转到专业课程管理界面。可以查看所有的课程信息,点击“课程添加”按钮可以添加课程信息,点击“删除”可以删除课程信息,点击“修改”可以修改专业课程信息,点击“添加班级”可以添加当前课程的班级信息。图7-7 专业课程管理界面 7.2.7 点击左键的导航栏中的“班级管理”,跳转到班级管理界面。可以查看所有的班级信息,点击“删除”可以删除班级信息,点
30、击“修改”可以修改班级信息。图7-8 班级管理界面 7.2.8 点击左键的导航栏中的“课室管理”,跳转到课室管理界面。可以查看所有的课室信息,点击“课室添加”按钮可以添加课室,点击“删除”可以删除课室,点击“修改”可以修改课室信息。图7-9 课室管理界面 7.2.9 点击左键的导航栏中的“修改密码”,跳转到修改密码界面。修改密码之前必须输入原密码。图7-10 修改密码界面7.3 教师模块界面 7.3.1 以教师身份登陆成功之后跳转到教师管理界面首页,即是“资讯”页面。首页显示资讯的标题,点击标题之后进入对应资讯的详细页。图7-11 教师模块资讯界面 7.3.2 点击导航栏的“教师课表”跳转到教
31、师课表页面。教师可以看到自己的课程安排,点击“查看名单”可以查看已经选择该课程的学生名单。图7-12 教师模块教师课程表界面 7.3.3 点击左键的导航栏中的“修改密码”,跳转到修改密码界面。修改密码之前必须输入原密码。图7-13 教师模块修改密码界面7.4学生模块界面 7.4.1 以学生身份登陆成功之后跳转到学生管理界面首页,即是“资讯”页面。首页显示资讯的标题,点击标题之后进入对应资讯的详细页。图7-14 学生模块资讯界面 7.4.2 点击导航栏的“本专业选课”跳转到学生选课界面。本专业界面首先显示的是本专业的课程列表,点击“选课”跳转到对应课程的班级,学生选择唯一一个该课程的班级。点击“
32、退选”之后,退选对应的课程。图7-15 学生模块本专业选课界面 7.4.3 点击导航栏的“课表查询”跳转到学生课程表查询界面。学生可以查看已经选择的课程,以及上课时间、地点、课程学分以及课程老师。图7-16学生模块课表查询界面7.4.4 点击左键的导航栏中的“修改密码”,跳转到修改密码界面。修改密码之前必须输入原密码。图7-17 学生模块修改密码界面第8章 编码8.1 系统软件架构模式 本系统的编码实现采用MVC的设计思想。MVC英文即是Model-View-Controller,通过这种思想将应用的逻辑和表现分离,实际上分为三层,即模型层,视图层和控制层。 视图(View)即是和用户交互的界
33、面。对于类似该学生选课系统的WEB应用来说,视图即是一些HTML界面。MVC的设计模式对视图的处理仅限制于数据的采集和处理,以及用户请求,不包括业务逻辑的处理。 控制器(Controller)是系统处理所有用户请求的最初入口点。控制器接收、截取用户请求,对请求数据完成必要的处理之后,把请求委托给分发者类,分发者类负责视图的管理,它将选择哪个视图提供给用户。 模型(Model)用于封装跟业务逻辑相关的数据以及对数据的处理,所以它有权直接访问数据,比如数据库。模型不依赖于控制器和视图,也就是说模型不关心数据会被如何处理和显示。8.2 CodeIgniter框架CodeIgniter提供了一套丰富的
34、标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。并且使用了MVC的编程思想,使得系统的开发过程和后期维护或者功能扩展上变得方便可行。8.3 模型设计 考虑到该系统的数据库表比较多,而且不同模块可能调用同一类型的数据,所以,设计该系统的模型时,选择一个数据表对应一个模型的方法,模型对应的文件名为data_表名。表8-1 模型总汇模型说明data_admin对管理员表的增删查改操作data_chooseinfo对学生班级关系表(即学生选课表)的增删查改操作data_classroom对课室表的增删查改操作data_course对课程表的增删查改操作data_coursete
35、acher对教师课程关系表(即班级表)的增删查改操作data_news对资讯表的增删查改操作data_student对学生表的增删查改操作data_subject对专业表的增删查改操作data_teacher对教师表的增删查改操作data_time对时间表的增删查改操作8.4 视图该学生选课系统一共分为三个模块,所以在应用视图下,将视图文件细分为三个模块,分别是admin,student和teacher。表8-2 管理员模块视图视图说明admin_add.php管理员帐号添加页面admin_manage.php管理员账号管理页面admin_change.php管理员信息修改页面article_
36、change.php资讯修改页面article_detail.php资讯详细页面article_add.php资讯添加页面change_password.php修改密码页面class_add.php班级添加页面class_change.php班级信息修改页面class_manage.php班级页面管理页面classroom_change.php课室信息修改页面classroom_manage.php课室管理页面classroom_add.php课室信息添加页面course_add.php专业课程添加页面course_change.php专业课程信息修改页面footer.php所有页面页尾hea
37、der.php所有页面页首index.php首页,即是资讯管理页面student_add.php学生账号添加页面student_manage.php学生账号管理页面student_change.php学生信息修改页面subject.php专业课程管理页面subject_add.php专业添加页面subject_change.php专业修改页面subject_manage.php专业管理页面teacher_manage.php教师账号管理页面teacher_add.php教师账号添加页面teacher_change.php教师信息修改页面表8-3 教师模块视图视图说明article_detail
38、.php资讯详细页index.php首页,即是资讯列表页change_password.php修改密码页面header.php页首footer.php页尾student_show.php课程学生显示页teacher_course.php教师课表显示页表8-4 学生模块视图视图说明index.php首页,即是资讯列表页header.php页首footer.php页尾article_detail.php资讯详细页be_selected.php学生课表显示页change_password.php修改密码页subject.php本专业选课页select.php课程班级选择页8.5 控制器设计 跟视图一
39、样,在控制器下再细分为admin,student和teacher三个模块。因为三个模块用的是同一个登陆页面,所以增加一个user控制器单独处理用户的登录,注销操作。表8-5 管理员模块控制器控制器说明main主控制器表8-6 教师模块控制器控制器说明main主控制器表8-7 学生模块控制器控制器说明main主控制器表8-8 用户控制器控制器说明user用户登录,注销参考文献 1 Luke Welling,Laura Thomson,PHP和MySQL Web开发,机械工业出版社,2009 2 Ben Forta,MySQL必知必会,人民邮电出版社,2009年1月 3 吴津津,田睿,李云,刘昊,PHP与MySQL权威指南,机械工业出版社华章公司,2011年10月4 王珊、萨师煊 ,数据库系统概论,高等教育出版社,2006年5月致谢 首先,要衷心感谢我的指导老师老师的精心指导。在李老师的指导下,我才得以顺利完成我的毕业设计。不管是在技术上,还是在精神上,在遇到问题寻求解答的过程中,李老师都给予了我很大的帮助,最终帮助我顺利完成毕业论文的撰写,谢谢。其次,感谢在我完成毕业设计过程中帮助过我的同学们。我自己个人能力有限,在编码,调试过程中,是在老师和同学的帮助下我才能完成毕业设计,在这里衷心地感谢他们。32