毕业论文管理系统的设计与实现

  分类号 论文编号

  本 科 生 毕 业 设 计

  毕业论文管理系统的设计与实现

  姓 名:

  院 系: 信 息 技 术 学 院

  年级专业: 2012级信息与计算科学

  指导教师:

  2016年5月14日

  诚信承诺书

  本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律责任由本人承担。

  作者签名:

  日 期:

  关于学位论文使用授权的声明

  本人完全了解有关保留、使用学位论文的规定,同意学院保留或向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅;本人授权可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其它复制手段保存论文和汇编本学位论文。

  (保密论文在解密后应遵守此规定)

  作者签名:

  导师签名:

  日 期:

  目 录

  摘要

  本科毕业论文写作是本科生在学校的最后一个教学环节,不仅能扩宽学习广度,还能提高动手实践能力。该课题从毕业论文写作过程中的指导教师和学生信息初始化、学生选择导师、学生选题、导师下达任务书、文档上传下载等环节进行管理,解决了当前传统的管理模式中存在的许多不合理之处,实现了毕业论文写作的整个流程的管理。

  毕业论文管理系统的设计采用当下流行的B/S结构,采用了PHP开发语言、MySQL数据库和Apache服务器来实现,开发工具采用了Dreamweaver 8和Photoshop来实现界面开发。该设计主要功能包括导师及学生信息初始化、选择导师、上报题目和审核题目以及选择题目、文档的上传和下载、新闻动态发布,留言等功能,能够保证毕业论文写作期间导师和学生之间信息的互通。

  该课题实现了毕业论文管理工作的信息化、网络化管理,使导师和学生之间能及时沟通交流,及时共享文件,大大提高了我校教学管理质量和水平。

  关键字:毕业论文写作 PHP MySQL Apache

  Abstract

  Undergraduate course graduation thesis writing is a undergraduate student in the school the last teaching link, It can not only widen the study scope, but also can improve the ability of hands-on practice. The topic from the information in the process of writing graduation thesis guidance teachers and students choose initialization, student select teacher, student select subject, teacher give specification, document upload download link to manage, realize the whole process of the graduation thesis writing.

  Xingyi normal university for nationalities graduation thesis management system design USES the current popular B/S structure, using the PHP language and MySQL database and Apache server, development tool to used Dreamweaver 8 and Photoshop interface development. The design of main functions including initialization, selection, teacher and student information subject, subject and auditing reports and tutors, upload and download documents, news release, leave a message, and other functions, to ensure that during the period of graduation thesis writing to communication between teacher and students.

  This subject has realized the management of graduation thesis of informatization, network management, timely communication between teacher and students, and to share files in time, greatly improving the teaching management quality and level in our school.

  Keywords:Graduation thesis writing php MySQL Apache

  第一章 绪论

  1.1 课题来源

  本系统是服务于高校论文管理工作的系统。高校工作中,指导毕业生论文工作占有极其重要的地位,如何解决当前人工管理所造成的效率低下、教师工作量巨大、师生之间沟通不畅、资源浪费等问题已成为当务之急。一般情况下,学生在写毕业论文期间都是临近毕业的一个学期,这时学生面临见习、实习、找工作等任务,在学校时间短,相对集中比较困难[6]。通过毕业论文管理系统,管理员,二级学院秘书,指导教师分工明确,减轻了老师们的工作压力,而对于毕业生而言,选择导师,选择题目不用给老师拨打电话,登录本系统查询导师资料或者题目资料,采用先来后到原则进行选择。本项目就是在这样的背景下提出来的。

  1.2 开发工具的选择

  PHP原始为Personal Home Page的缩写,已经正式更名为 “HP: Hypertext Preprocessor”注意不是“ertext Preprocessor”缩写,这种将名称放到定义中的写法被称作递归缩写。PHP于1994年由“Rasmus Lerdorf”创建,刚刚开始是“Rasmus Lerdorf”为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。这些工具程序用来显示“Rasmus Lerdorf” 的个人履历,以及统计网页流量。后来又用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。

  在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档。并且发布了PHP1.0!在这的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加一些特性。比如循环语句和数组变量等等;在新的成员加入开发行列之后,Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开发布,希望可以透过社群来加速程序开发与寻找错误。这个发布的版本命名为 PHP 2,已经有 PHP 的一些雏型,像是类似 Perl的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。PHP/FI加入了对MySQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI。

  在1997年,任职于 Technion IIT公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,成为 PHP 3 的基础。而 PHP 也在这个时候改称为PHP:Hypertext Preprocessor。经过几个月测试,开发团队在1997年11月发布了 PHP/FI 2。随后就开始 PHP 3 的开放测试,最后在1998年6月正式发布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 发布后开始改写PHP 的核心,这个在1999年发布的剖析器称为 Zend Engine,他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。

  在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式发布,2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个存取数据库的延伸函数库)、以及许多效能上的增强。PHP 4已经不会继续PHP更新,以鼓励用户转移到PHP 5。2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能。

  简单的说,可以把PHP的优势归纳为以下几方面。

  开放源码,所有的PHP源码都可以得到。

  免费性,与其他技术比较,PHP本身是免费的而且是开源的。

  快捷性,上文中已经阐述了它工作高效的原理,而且它学起来简单,实用性很强,很适用于初学者。

  跨平台性,PHP是运行在服务器端的脚本,所以可以运行在UNIX、LINUX、Windows、Mac OS等平台。

  效率极高,因为PHP消耗相当少的系统资源。

  面向对象,在PHP4和PHP5中,面向对象方面都有了很大的改进,代码执行效率更高。

  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

  MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

  与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQ L是开放源码软件,因此可以大大降低总体拥有成本。

  windows作为操作系统,Apache Web 服务器,MySQL 作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“wamp”组合。

  Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“patchy server”,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

  本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

  1.3 开发环境介绍

  1.服务器端

  操作系统:Windows7。

  服务器、PHP、MYSQL数据库、PHPStudy套件。

  开发工具:Dreamweaver 8。

  浏览器:Firefox及IE。

  分辨率:最佳效果1024*768像素。

  2.客户端

  浏览器:Firefox及IE。

  分辨率:最佳效果1024*768像素。

  第二章 系统需求分析与可行性研究

  2.1 系统需求分析

  系统分析和设计是信息系统开发的一个重要环节。本章将主要介绍一个基于WEB的B/S结构的毕业设计管理系统的功能需求、总体框架、以及系统开发原理等做系统的分析研究,并介绍系统所拥有的特点。

  本设计初步调查的方式主要为分析高校毕业生论文管理工作中各个角色所要完成的任务,并了解工作流程和工作具体内容。高校先行的论文管理方式主要是使用传统的人工管理的方式,这种管理方式存在着许多缺点,如:效率低、工作量大、资源浪费、师生沟通困难,在选导师和选题的时候带来的不公平性等,而且长时间这样将产生大量的文件资料,这对于查找、保存和维护都带来了很大的困难。用户数较多,而且地理位置分布上比较分散。

  上述产生的诸多问题,都可以通过开发一个基于PHP+MYSQL+APACHE的论文管理系统来解决,例如:在选择导师阶段,现在的工作方式一般分为两种。一种是由二级学院直接安排毕业生的导师,安排完成后直接通知毕业生。第二种则是辅导员发出选择导师的通知后,学生通过打电话或者发短信的方式向老师了解老师的相关情况,综合各方面情况来选择导师。但这两种方式都有不妥的地方,例如第一种,如果某一位学生对于某一位导师的研究方向十分感兴趣,希望能选择到这位指导老师,论文题目选择一个和他研究方向相近的进行撰写,但如果随机没有安排到他被这位老师指导,这会造成一定的不公平性。而第二种漏洞更大,如果同一时间一位老师的电话被很多同学拨打,但终究只有一位同学能拨通,这也造成了不公平性。综上所述,传统的这些管理方式不合理,而且在某些方面漏洞很大,直接影响到论文工作的的开展。而在本系统中,学生可以登录系统实时查看各位老师的研究方向、老师可以指导的学生人数和已经选择的人数。根据上述分析,可进行可行性研究。

  2.2 可行性研究

  在对系统目标和环境精心分析的基础上,从技术可行性、经济可行性和营运可行性三个方面对本系统进行可行性研究。

  2.2.1 营运可行性

  由于本系统是面向高校毕业论文管理工作中的工作人员和指导教师和毕业生开发的管理系统,尽管这些人员可能没有使用过类似的系统,但是Windows被大众所熟悉的界面和本系统简单的操作界面,可以使涉及到毕业生论文工作的相关人员在专业人员的指导下迅速掌握系统的操作方法。

  2.2.2 技术可行性

  2.2.2.1 开发的软件可行性

  从目前流行的数据库管理软件来看,对于本系统,用基于PHP+MYSQL+APACHE的完美组合开发B/S结构,在数据库方面采用Mysql 5.0 无疑是实际应用中最适合的一种解决方案[7]。

  2.2.2.2 开发的硬件可行性

  本系统对计算机的硬件环境有一定的要求,对计算机的操作系统、内存、主频、外设等都有最低要求,如果低于这个要求将影响到本系统的正常运行。

  2.2.3 经济可行性

  高校毕业生论文管理工作目前还完全处于传统的人工管理方式,耗时多,效率低下,资源浪费,并且极易出现错误。本系统投入使用后将减少纸张的使用,学生和老师也将减少电话在此工作中的使用等。由上述可以看出,本系统的开发时机已经成熟,从多种角度考虑开发此系统都是可行的,并且是十分必要的。

  第三章 系统的总体设计

  3.1 系统功能分析

  根据第三章系统需求分析现已得出系统开发的目标,系统开发需要的技术,还需确定系统的总体结构,给出系统中各个组成模块间的联系,划分功能模块,将功能需求分配给所有单元模块。

  系统主要分为六个模块,如图3-1所示:

  

  图3-1 系统总体模块设计图

  1.系统的功能分析

  经过市场调研、可行性和系统分析,现已总结出毕业论文管理系统的数据流程。该系统完成后将满足如下目标:

  界面简约美观、易于操作。

  权限分明、功能完善。

  能精确控制毕业论文工作中的各个环节并且完成各环节工作。

  能对基础信息进行管理。

  能对网站新闻及相关表格进行及时更新。

  系统稳定,具有良好的防范措施。

  2.系统数据分析与描述

  ①基础信息管理。

  主要包括指导教师及毕业生基本信息管理,其中主要包括的信息有:学号(学生)、工号(老师)、姓名、性别、学院、专业(学生)、班级(学生)、电话号码、入学时间、地址、电子邮箱、毕业时间、头像地址。机构管理包括的主要信息有:机构编号、机构类型、机构名称、年级(班级)、备注信息。流程管理主要包括:流程编号、流程内进行的事项、流程开始时间、流程截止时间。

  ②工作管理

  学生:选择导师、选择题目、提交文档、留言。

  老师:题目管理、指导工作、答疑。

  二级学院秘书:人员管理、题库管理、延迟处理。

  ③网站首页动态管理

  二级学院秘书:所属二级学院文档管理。

  超级管理员:新闻动态管理。

  3实现本系统的方法

  首先要建立一个数据库,作为系统工作后台。接下来将要再建立14个表,作为前台功能展开,以完成各方面操作。最后系统要在友好的界面中,达到预期功能,并要具有良好的可靠性、高速的效率、易使用的界面。在安全性和稳定性前提下,给用户们提供各种方便的操作。

  3.2系统的总体设计

  根据上面的分析设计出系统功能结构图,如图3-2所示。

  

  图3-2 系统功能模块图

  第四章 系统业务流程设计

  4.1 业务流程描述

  4.1.1 管理员流程

  首先,超级管理员登录进入本系统,可以对超级管理员、二级学院秘书进行管理,可以对毕业生论文工作的各个环节进行时间上的控制,也可以对指导教师的指导工作进行查询。但是,超级管理员不可以对自己的登录状态和密码进行操作。

  4.1.2 二级学院秘书流程

  其次,在超级管理员初始化二级学院秘书后,二级学院秘书可以登录本系统对本二级学院的机构进行管理,可以对本二级学院的指导教师和毕业生进行管理,也可以对导师发布或者学生自选的题目进行审核以及延期没进行相关操作的学生进行延期处理。

  4.1.3 指导教师流程

  二级学院秘书初始化指导教师后,指导教师可以登录本系统对自己的信息进行维护,可以上报题目给二级学院秘书审核,查看本小组的毕业生,接收学生发送的各种文档并审核,回答学生在系统上的提问,最后修改自己的密码。

  4.1.4 毕业生流程

  二级学院秘书初始化毕业生后,毕业生登录本系统对自己的信息进行维护,可以在规定的时间内选择指导教师以及在规定时间内选择题目或者上报题目给二级学院秘书审核,可以提交各种文档给导师进行审核,在指导教师离线时通过本系统向老师提问,最后修改自己的密码。

  4.2 业务流程图

  

  图4-1 顶级数据流图

  

  图4-2 次级数据流图

  第五章 系统的详细设计及功能实现

  5.1 数据库设计

  在一个系统设计中,数据库的设计是非常重要的,数据库设计好不仅能保持系统数据的整体性、完整性和共享性,还能避免后期开发过程中反复的更改问题。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。

  5.1.1数据库需求分析

  通过对毕业论文管理工作分析及流程中数据分析,涉及的数据项和数据结构如表5-1所示。

  表5-1 数据项和数据结构

  

  5.1.2 数据库表设计

  根据上述的数据结构和数据项,可得出该系统所用到的数据表如下各表所示。

  文档信息表如表5-2所示

  表5-2 上传文档信息表

  

  文档审核反馈表如表5-3所示

  表5-3 文档审核反馈表

  

  机构信息表如表5-4所示

  表5-4 机构信息表

  

  留言表如表5-5所示

  表5-5 留言信息表

  

  登录信息表如表5-6所示

  表5-6 登录信息表

  

  新闻动态表如表5-7所示

  表5-7 新闻动态表

  

  流程控制表如表5-8所示

  表5-8 流程控制表

  

  关系对应表如表5-9所示

  表5-9 关系对应表

  

  学生详细信息表如表5-10所示

  表5-10 学生详细信息表

  

  教师详细信息表如表5-11所示

  表5-11 教师详细信息表

  

  题目信息表如表5-12所示

  表5-12 题目详细信息表

  

  题目不通过反馈表如表5-13所示

  表5-13 题目不通过反馈表

  

  首页文档信息表如表5-14所示

  表5-14 首页文档详细表

  

  年份表如表5-15所示

  表5-15 年份表

  

  5.2 系统实现

  5.2.1 系统首页设计

  网站首页是整个系统的门面,作为大学所用的系统,它应该给人清爽、简约、大方的感觉,所以首页主色调采用了淡蓝色,同时内容也应该充实。通过本系统首页面,用户可以通过登录板块进入后台进行相关操作,用户也可以查看管理员发布的最新动态,学生还可以下载到二级学院秘书上传的各种表格,例如:审批表、开题报告格式、论文定稿格式等。首页界面设计如图5-1所示:

  

  图5-1 系统首页界面

  5.2.2 后台界面设计

  本系统后台分为四个权限,分别为:超级管理员、二级学院秘书、指导教师、学生。权限不同进入后台所使用的菜单也不同,这里后台界面展示以二级学院秘书权限为例,其他不一一展示。二级学院秘书后台界面设计如图5-2所示:

  

  图5-2 系统后台界面

  5.2.3 基础信息管理模块的实现

  基础信息管理模块包括人员信息维护、导师管理、学生管理、题库管理、专业管理、班级管理、学院管理、流程控制。这里以教师信息维护和毕业生管理为例。

  5.2.3.1 教师信息维护功能实现

  在教师个人信息维护这个功能中,由于工号、学历、职称、可带人数、已选人数、所属学院是不能随意改变的,所以这些数据显示给用户看即可,不能让其修改。教师只可以对自己的姓名、研究方向、联系方式和头像进行维护。如图5-3所示:

  

  图5-3 教师信息维护

  教师信息维护的实现是使用jquery中的$.post请求,把新修改的数据传给JS文件进行验证后传给处理页面,处理页面拿到数据进行处理。代码如下:

  ①JS验证代码

  function update(){

  var id=$('.gonghao1').text();

  var name=$('#name1').val();

  var yjfx=$('#direction1').val();

  var tel=$('#tel1').val();

  var email=$('#email1').val();

  var xueli=$('#xueli1').val();

  var zhicheng=$('#zhicheng1').val();

  if(name==''){

  alert('姓名不能空');

  $('#name1').focus();

  return ;

  }

  if(yjfx==''){

  alert('研究方向不能空');

  $('#direction1').focus();

  return ;

  }

  if(tel==''){

  alert('电话号码不能空');

  $('#tel1').focus();

  return ;

  }

  var telYz=/^1[35678]d{9}$/;

  if(!telYz.test(tel)){

  alert('电话号格式不对');

  $('#tel1').focus();

  return ;

  }

  if(email==''){

  alert('电子邮件不能空');

  $('#email1').focus();

  return ;

  }

  var emailYz=/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;

  if(!emailYz.test(email)){

  alert('电子邮箱格式不对');

  $('#email1').focus();

  return ;

  }

  $.post('/mishu/teacher_mng.php',{'flag':'update','id':id,'name':name,'yjfx':yjfx,'tel':tel,'email':email,'xueli':xueli,'zhicheng':zhicheng},function(r){

  alert(r.msg);

  dialog3.dialog('close');

  getList(page_now);

  },'json');

  }

  ②PHP处理代码

  function edit(){ //教师信息维护函数

  include '/config/config.php';

  $name=$_POST['name'];

  $yjfx=$_POST['yjfx'];

  $tel=$_POST['tel'];

  $email=$_POST['email'];

  $id=$_SESSION['username'];

  $sql="update login set name='$name' where login_name='$id'";

  $r=$link->exec($sql);

  $sql="update teacher_infor set name='$name',yjfx='$yjfx',telephone='$tel',email='$email' where login_name='$id'";

  $r=$link->exec($sql);

  if($r!=0){

  echo json_encode(array('msg'=>'更新成功'));

  $_SESSION['name']=$name;

  }else{

  echo json_encode(array('msg'=>'更新失败,没有改动'));

  }

  $link=null;

  return ;

  }

  5.2.3.2 毕业生管理功能实现

  毕业生管理分为毕业生导入,修改,删除。而导入分为电子表格批量导入和手动录入。这里介绍电子表格批量导入功能,如图5-4所示。

  

  图5-4 毕业生批量导入界面

  $objReader=PHPExcel_IOFactory::createReader('Excel5');

  $objPHPExcel=$objReader->load($uploadFile);

  $sheet=$objPHPExcel->getSheet(0);

  $highestRow=$sheet->getHighestRow();

  $highestColumn=$sheet->getHighestColumn();

  for($j=2;$j<=$highestRow;$j++){

  $str='';

  for($k='A';$k<=$highestColumn;$k++){

  $str.=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'.'; }

  $strs=explode('.',$str);

  $majorId=getMajorId($strs[3]);

  $xyId=getXyId($strs[3]);

  $classId=getClassId($strs[3]);

  $strs[8]=$strs[8].'.com';

  $sql="insert into student_infor(login_name,name,gender,xueyuan,major,class,telephone,rxsj,addr,byTime,email) values(

  '{$strs[0]}',

  '{$strs[1]}',

  '{$strs[2]}',

  '$xyId',

  '$majorId',

  '$classId',

  '{$strs[4]}',

  '{$strs[5]}',

  '{$strs[6]}',

  '{$strs[7]}',

  '{$strs[8]}')";

  if(!$link->exec($sql)){

  //echo '错误一';

  }

  5.2.4 工作模块功能实现

  工作模块包含了选择导师、选择题目、提交文档、留言、题目管理、指导工作、答疑、题库管理、延迟处理。这里详细介绍选择导师以及选择题目。

  5.2.4.1 选择导师功能实现

  在选择导师功能的实现过程中,首先要能够显示教师的信息,特别是研究方向,学历,职称,以及可带人数和已选人数。这里特别说明,可带人数由教师的职称决定,标准是正教授准带8人,副教授准带6人,讲师准带4人,由系统判断教师职称来决定。教师信息显示如图5-5所示:

  

  图5-5 教师详细信息显示界面

  而在学生进行选择之前应该进行三种验证。第一,判断系统现在是否处于选择导师时间段内。第二,判断学生是否已经选择指导教师。第三,判断导师是否已经没有可带名额。例如:系统判断学生已选导师,则禁止选择导师。如图5-6:

  

  图5-6 无法选择导师界面

  此验证核心代码如下所示:

  function panDuan(){

  include '/config/config.php';

  $id=$_SESSION['username'];

  $sql="select start_time,over_time from process where pro_id='2'";

  $rs=$link->query($sql);

  $r=$rs->fetch();

  if(strtotime(date('Y-m-d'))>strtotime($r['start_time'])&&strtotime(date('Y-m-d'))<strtotime($r['over_time'])){

  }else{

  echo json_encode(array('res'=>0,'msg'=>'对不起,系统当前时间未在选择导师规定时间内'));

  return ;

  }

  $sql="select count(1) from relationMap where stu='$id'";

  $rs=$link->query($sql);

  $r=$rs->fetch();

  if($r[0]!=0){

  echo json_encode(array('res'=>1,'msg'=>'对不起,你已选择导师,不能重复选择'));

  return ;

  }

  选择导师功能的核心代码如下:

  function enterSelect(){

  include '/config/config.php';

  $id=$_SESSION['username'];

  $teaId=$_POST['teaId'];

  $sql="select kdrs,yxrs from teacher_infor where login_name='$teaId'";

  $rs=$link->query($sql);

  $r=$rs->fetch();

  $kdrs=$r['kdrs'];

  $yxrs=$r['yxrs'];

  if($yxrs==$kdrs){

  echo json_encode(array('msg'=>'选择人数已满,无法选择'));

  return 0;

  }else if($yxrs>$kdrs){

  echo json_encode(array('msg'=>'系统错误,选择失败'));

  return 0;

  }

  $sql="insert into relationMap values('$id','$teaId','')";

  $r=$link->exec($sql);

  if($r==0){

  echo json_encode(array('msg'=>'选择失败'));

  return ;

  }

  $sql="update teacher_infor set yxrs=yxrs+1 where login_name='$teaId'";

  $r=$link->exec($sql);

  if($r==0){

  echo json_encode(array('msg'=>'选择失败'));

  return ;

  }else{

  echo json_encode(array('msg'=>'选择成功'));

  return ;

  }

  }

  5.2.4.2 选择题目实现

  选择题目功能的实现与选择导师功能的实现有类似的地方,比如,在做选择题目操作时先判断是否处于选择题目时间段内,学生是否选择了题目。而不同的地方是学生与导师是多对一的关系,所以选择导师功能要判断导师所选人数是否已满,而学生与题目则是一对一的关系,在显示题目时,筛选出未选的题目即可,还有判断学生是否已经选择了导师。

  验证是否能选题核心代码如下:

  function chaXunStep(){

  include '/config/config.php';

  $id=$_SESSION['username'];

  $sql="select start_time,over_time from process where pro_id=3";

  $res=$link->query($sql);

  $r=$res->fetch();

  $sTime=$r['start_time'];

  $oTime=$r['over_time'];

  $newTime=date('Y-m-d');

  if(strtotime($newTime)<strtotime($sTime)||strtotime($newTime)>strtotime($oTime)){

  print json_encode(array('res'=>1,'msg'=>'对不起,系统当前时间未在选题规定时间内'));

  return ;

  }

  $sql="select count(1) from relationmap where stu='$id'";

  $res=$link->query($sql);

  $r=$res->fetch();

  if($r[0]==0){

  print json_encode(array('res'=>2,'msg'=>'对不起请先选择指导教师'));

  return ;

  }

  $sql="select title from relationmap where stu='$id'";

  $res=$link->query($sql);

  $r=$res->fetch();

  if($r['title']!=''){

  print json_encode(array('res'=>3,'msg'=>'你已选题'));

  return ;

  }

  }

  确认选题核心代码如下:

  function enterSelected(){

  include '/config/config.php';

  $id=$_POST['id'];

  $stu=$_SESSION['username'];

  $sql="update relationmap set title="$id" where stu='$stu'";

  $res=$link->exec($sql);

  if($res==0){

  print json_encode(array('msg'=>'选择失败'));

  return 0;

  }

  $sql="update titile set selected='1' where titile_id='$id'";

  $res=$link->exec($sql);

  print json_encode(array('msg'=>'选择成功'));

  return 0;

  }

  5.2.5 网站首页动态管理模块

  网站首页动态管理模块包括首页动态的增加、删除。因为在现实的新闻动态宣传中,如果有一条消息中出现了错误,相关部门不会进行修改,而是重新发一条关于XX通知的补充通知,所以本系统这一模块没有设定修改功能。

  新闻管理增加功能界面使用JqueryUi的弹出框加上一个优秀的编辑器CKEDITOR。如图5-7所示

  

  图5-7 发布动态界面

  JS代码如下:

  var dialog=$('#pub_dialog').dialog({

  width:1070,

  autoOpen:false,

  modal:true,

  buttons:{

  '发布':function(){add_news()},

  '取消':function(){$(this).dialog('close')},

  }

  });

  $('#publish').click(function() {

  dialog.dialog('open');

  });

  function add_news(){

  var news_title=$('#news_title').val();

  if(news_title==''){

  $('#tips').html("<font color='red'>*标题不能为空</font>");

  $('#news_title').focus();

  return false;

  }

  var news_content=ck.getData();

  if(news_content==''){

  $('#tips1').html("<font color='red'>*内容不能为空</font>");

  }

  $.post('news_mng.php',{'flag':'add','news_title':news_title,'news_content':news_content},function(res){

  alert(res.msg);

  dialog.dialog('close');

  getList(page_now);

  },'json');

  }

  PHP处理代码如下所示:

  function add_news(){

  include('/config/config.php');

  $publisher=$_SESSION['username'];

  $title=$_POST['news_title'];

  $news_type=1;

  $pub_time=date('Y-m-d h:i:s');

  $content=$_POST['news_content'];

  $sql="insert into news values('','$title',$news_type,'$publisher','$pub_time','$content')";

  $res=$link->exec($sql);

  if($res!=0){

  echo json_encode(array('msg'=>'发布成功!'));

  }else{

  echo json_encode(array('msg'=>'发布失败,未知错误!'));

  }

  $link=null;

  return ;

  }

  第六章 总结

  6.1 问题及解决办法

  ◆ 问题一

  开始做这个毕业设计的时候,数据库知识掌握还不到位,就开始编写代码,后来随着开发的进行,发现数据库冗余数据非常多,大大降低了系统性能,不过这也给了我一个经验,

  当时先暂停了代码编写,把剩下的功能模块了解一遍,数据的流动在脑海里想一遍,把数据库设计好再开发。

  ◆ 问题二

  在进行毕业生导入和指导教师导入时,电子邮箱不能读取.com,查询了发现原因是Excel 会将电子邮件地址转为超级链接导致无法读取。

  在写SQL语句时,在邮箱取值的位置使用“.”连接符,在程序中给它加上.com

  ◆ 问题三

  本系统分为四个权限,刚开始设计时将网站后台主页面和超级管理员菜单放在超级管理员功能文件目录中,超级管理员菜单使用时路径写的是“https://baijiahao.baidu.com/”当前这个目录下的哪个文件,而其他三个权限的菜单分开在其他文件,导致二级学院秘书点击菜单后系统出现404 Not Found错误。

  查询了$.load()相关的资料后,发现就算其他三个权限目录菜单和功能文件放在一起,使用$.load()时要以浏览器地址栏的路径为准,因此二级学院秘书菜单点击时要去寻找的文件路径是“/mishu/”这个目录。

  ◆ 问题四

  在二级学院秘书上传相关文档的功能中,由于存放的文件夹是秘书功能文件的上一级,上传文档的路径是“/wendang/”,在首页面进行附件下载是不能直接下载,因为附件下载文件的再上一级没有wendang这个文件夹,如何解决这个问题困扰了我很久。

  在同寝室同学的提醒下,记起了一个substr()函数,可以用这个函数把第一个“.”截取掉,就变成了“https://baijiahao.baidu.com/wendang”,就是当前这个目录下的wendang文件夹,问题解决。

  6.2 心得体会

  由于面临找工作、实习等诸多事情,没有分配好时间,在没有大量查阅材料、没有掌握足够知识的情况下,就开始程序的编写,开发过程中遇到了很多问题,比如对整个工作流程不了解,导致数据库设计不合理,系统中还存在很多细节上的漏洞。

  总结这两个月来的毕业设计历程,我感触颇深、受益匪浅。最开始的时候就是简单地使用PS画画图,做一点简单的静态页面,一两个小时便觉得烦躁了就停下来,觉得自己也是在写设计的过程中,殊不知后面的工程量才是最大的。

  总以为时间很充足,原理什么的自己都懂,一天做一点,三五星期便做完了。但是到了中期检查的那一周,开始着急啦,系统完成60%,论文一点也没写,甚至有些功能具体怎么写,数据库的数据怎么流动我都不知道,当时就交了一份没完成的系统。那时就意识到时间已经很晚了,自己得加紧,于是,经常挑灯夜战,经常找同学请教。在交了中期检查文档后的第四天,我的设计只剩下一个学生权限的功能没写。

  在毕业设计过程中,问题不断的出现,不断的被解决,我也在不断的学习,不断的进步,或许这就是做毕业设计的用意所在吧!特别是在看了王老师和彭老师所做的真实的项目代码后,自己便学习了jQuery,jQueryUI,在系统中大量地使用对话框,还有$.post请求,这都是以前没接触过的。

  其实,无论做何事,不要管它距离截止时间还有多久,只要是对自己有益的,越早完成,自己获得的知识和经历就会越多,这也将帮助我走好步入社会的第一步。

  参考文献

  [1] 唐四薪. PHP Web程序设计与Ajax技术. 清华大学出版社,2014年;

  [2] 徐辉. PHP Web程序设计教程与实验.清华大学出版社,2008年1月;

  [3] 刘仲英. 管理信息系统(第二版).高等教育出版社,2012年7月;

  [4] 齐治昌,谭庆平,宁洪主编. 软件工程(第三版).高等教育出版社,2012年5月;

  [5] 王珊. 萨师煊. 数据库系统概论(第四版).高等教育出版社,2006年5月;

  [6] 韩广琳. 基于B/S模式的高校毕业论文管理系统的设计与实现[D]. 南开大学, 2006;

  [7] 朱程燕. 基于B/S结构的高校毕业论文管理系统的开发[J]. 科技信息:科学教研, 2008, (21);

  [8] 梁俊杰, 曾显峰, 黄晓君,等. 基于B/S的毕业论文管理系统实现关键技术研究[J]. 现代计算机:专业版, 2015, (07):68-72;

  [10] Paul DuBois,Kim Aldale等,Yan Cailin等译. MySQL5.1中文参考手册. http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/

  [12] jQuery文档.http://blog.jquery.com/, http://www.jquerycn.cn

  致谢

  在做这个毕业设计的过程中,许多老师和同学都给予了我很大的帮助,使我能够顺利地按期完成毕业设计。

  首先感谢我的指导老师王老师。在我们刚选好题目的时候,便让我们去他的办公室,给我们讲解要做好这个系统,我们该学习哪些知识,还给我们拟了学习内容清单。在做系统的过程中,我遇到技术上的问题,和王老师交流的时候,老师都积极地帮我解答,给我提供一些宝贵的意见。

  其次,我要感谢的是教授过我C语言的老师彭老师。虽然他不是我的导师,但是他在技术方面给了我很大的支持。在大四寒假的时候还很热心地为我介绍实习的地方,并亲自带我前往。同时让我加入到他一个项目的开发中去,让我见识了很多的东西,并且这些东西在我做这个设计的过程中起到了很大的作用。

  再次,我要感谢我的辅导员魏老师,尽管她不是我的指导老师,在做本设计的过程中我也没向她请教过什么问题,但是她对我们十分关心,不仅经常了解我们做论文的进程,催促我们完成论文,还经常了解我们找工作的事情,我很感谢她!

  还要感谢的就是兄弟班的徐同学,在It方面,他绝对是我们这一届的佼佼者,但他并不自以为傲,他还是在不断地学习,这一点让我十分钦佩!我最感谢他的是,我和他在实习时,教了我很多美化页面的小技巧,还教了我很多PS的操作,我的设计首页面也是在他的帮助下完成的。

  最后,我想再一次感谢在毕业设计中给予我指导和大力帮助的人,包括我的导师王老师、任过课的老师彭老师、辅导员魏老师、徐同学,感激涕零,无以言表!

  举报/反馈