《毕业设计(论文)高校学生管理系统设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)高校学生管理系统设计与实现.doc(31页珍藏版)》请在三一办公上搜索。
1、第一章 概 述1.1 PHP的概念PHP: Hypertext Preprocessor (超文本预处理器) 的缩写,它是一种服务器端的 HTML 脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言PHP是一种功能强大的脚本语言。PHP将击败PERL/Python并取而代之。PHP是下一代的PERL/Python脚本。PHP可以胜任任何PERL/Python做的工作,并且做的更多,更好,更简洁! 1.2 PHP在网络编程方面的优越性1995年时,Rasmus在用PHP写他的个人主页;今天,PHP成为风靡全球的脚本语言,越来
2、越多的站点选择使用PHP,连Yahoo都放弃了自己的脚本而改用PHP支持它的网站。可以说,PHP是一个奇迹。我一直认为,任何奇迹背后都有它的原因。现在,就让我们透过这个奇迹,来看看PHP的成功之道。1 简单易用PHP的入门门槛很低,它对使用者的要求微乎其微。学过C语言的人,使用PHP几乎不需要什么时间。它们的语法是如此相似,以至于我常常想,是不是在C语言变量前加个$就能改成PHP。这使得大量C程序员在网络脚本中选择了PHP。另外,比起ASP的组件系统和Java庞大的类库来,PHP的函数库要好学多了。在编程风格上,PHP更是自由,你可以使用N种风格来写你的脚本程序。这些特性使得PHP成为初学者的
3、首选语言。抢占初学者市场是很重要的策略。如同任何人都会对自己的初恋记忆犹新一样,人们往往会对最初学习的语言有很深的感情。即使后来自己成长了,改用其他语言了,还是会时时记起最初学习的语言。在这点上,PHP做得很出色。2 剪裁得当PHP开发组是最了解网络的一群人,他们非常清楚用户要的是什么。PHP就是要做一个出色的网络脚本语言,而且,它只是要做一个网络脚本语言。PHP提供的函数集在网络方面相当强大,而且重点均专注于网络应用。像PHP中的无组件文件上传,超多数据库支持等特性都表现出这个特点。顺便说一句,PHP甚至支持ACCESS数据库。专注使得PHP在网络上表现出极其优秀的性能。有失才能有得。3 支
4、持强大PHP有强大的OpenSource团体支持,在网络上有数以万计的开源代码。你可以整合几个现有程式来实现你的应用,也可以分析大师级的代码来得到提高。PHP还有很多扩展性的项目来增强PHP在某个方面的功能。像注重编程规范化和代码重用的PEAR,提供可编译模板技术的Smarty,甚至开发桌面程序的GTK。分析完这几个理由,我们可以看出,PHP的成功得益于PHP开发组的战略眼光。PHP提供了一个最小工作集,使用户能用最简单的方式高效地完成自己需要的应用。这正是初学者需要的。然后它通过方便的扩展来提供各个方面的解决方案,这样,你只需要学你要用到的那个领域的东西。当你涉及的领域越来越多时,你的水平也
5、随之提高,当你熟悉了大多领域时,回头看看,会发现不知不觉已到山腰。PHP也提供了我们一种学习态度。1.3系统开发环境一、 操作系统Windows xp本系统使用的操作系统为Windows xp作为底层操作系统,界面友好,性能稳定。二、 数据库MYSQLMySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同
6、时MySQL也足够快和灵活以允许你存储记录文件和图像。MySQL主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。自1996年以来,我们一直都在使用MySQL,其环境有超过40个数据库,包含10,000个表,其中500多个表超过7百万行,这大约有100个吉字节(GB)的关键应用数据。MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。三、 务器平台APACHEApache 伺服器则是目前最
7、多 WWW 网站所采用伺服器。您可以至 http:/www.apache.org 下载最新版的程式及相关文件,若您觉得从国外下载要很久的话,也可以用它的 Mirror 站台下载。 PHP 则可以去它的官方网站 下载所需要的程式。 虽然目前 WindowsNT 或者 Windows98 等 Win32 的作业平台也能安装 PHP 及 Apache 伺服器,不过这似乎没什么道理,因为 PHP 和 Apache 在 UNIX下可以跑得更快更好。 当然,若想使用商业化的作业平台,SUN、IBM、HP、DEC、SGI、NEC 等公司都有提供相关的 UNIX 或者是 WindowsNT 的作业平台。加上高
8、安全性调整过后的 Apache 伺服器:Stronghold 或是其它支援 SSL 的 Apache 版本。这种组合,相信能满足商业化的需求。而 PHP 就扮演着快速方便的 CGI 角色,让客户对站台的服务品质更加满意。四、 发语言PHPPHP是一种简单的,面向对象的,解释型的,健壮的,安全的,性能非常之高的,独立于架构的,可移植的,动态的脚本语言。PHP具有和JAVA类似的Class关键字。因为不需要虚拟机,以致速度比JAVA快5倍。PHP正迅速变成一种标准的,多用途的,面向对象的脚本语言。PHP不仅可用来开发Web应用程序,也可以开发普通应用程序。 PHP是一种功能强大的脚本语言。PHP将
9、击败PERL/Python并取而代之。PHP是下一代的PERL/Python脚本。PHP可以胜任任何PERL/Python做的工作,并且做的更多,更好,更简洁! PHP是Hypertext Pre-Processor(超文本预处理器)的缩写,它是一种服务器端的HTML脚本/编程语言。PHP语法上与C相似,可运行在Apache, Netscape/iPlanet, 和 Microsoft IIS Web 服务器上。PHP作为一种工具,可以让你创建动态的Web页面。应用PHP的网页与常规的HTML页面并无二致,你可以用同样的方式来创建、编辑它们。PHP允许你直接在HTML文件里写入简单的脚本,这一
10、点与Javas cript非常相似。而不同的是,PHP不依赖于浏览器,是服务器端的语言,而Javas cript却是一种客户端的嵌在HTML中的语言。概念上,PHP与Netscape的LiveWire Pro产品,Microsoft的ASP以及SunMicrosystem 的JSP相似。 PHP不仅可以用来创建Web应用程序,也可以用来开发普通的单机应用程序。 PHP的强劲之处在于: PHP是一项最优秀的技术。其它技术,如PERL,Python, Tcl, VB s cript, ASP 相对来说,都是陈旧低劣的。即使是Java/JSP,也在PHP之下。 开放源码 广泛的数据库连接 大量的扩展
11、库 作为一种多用途的脚本语言,比PERL,VB s cript, ASP, JSP都要优秀第二章 系统的需求分析2.1 系统需求分析需求分析的基本任务是准确的回答“ 系统必须做什么?”这个问题。在需求分析这个阶段,需要仔细的研究系统所实现的功能,并进一步将他们具体化。1任务概述u 目标将学生考勤、平时成绩的评定、以及成绩查询的大量业务,用计算机系统操作完成,对它进行全面现代化管理,以便提高信息管理效率。u 运行环境软件:Microsoft Windows 2000 Server及Windows 2000 SPI 或更高版本 IE5.5以上硬件:64 MB RAM 鼠标或其他定点设备u 系统要完
12、成的任务 实现学生安全登录 实现网上签到 通过技术手段,避免学生冒名签到。 统计学生平时成绩。 实现网上成绩的查询。2.功能需求系统必须完成的功能包括:c 注册与登录功能该功能主要实现学生与老师的安全登录。c 签到功能该功能主要实现学生上课网上签到,以减少老师点名签到的时间,提高上课效率。 c 统计功能系统中的统计功能可以根据学生签到次数,统计学生的平时成绩。c 查询功能该功能从不同的角度进行查询,多层次地满足老师及学生对总成绩及个人成绩的查询要求。2.2 总体设计 1本课题研究的内容本论文从网站设计的基本原理出发,使用php+mysql技术,PHP是一个类似微软ASP的服务器端的嵌入式超文本
13、处理语言,是建立动态网站的强大工具。MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysql和很多不同的客户程序和库组成。由于其源码的开放性及稳定性,且与网站流行编徎语言PHP的完美结合,现在很多站点都利用其当作后端数据库,使其获得了广泛应用。而MySQL是一个轻型SQL数据库服务器,可运行在多种平台上,包括Windows NT和Linux,它还有一个GPL版本,MySQL被认为是建立数据库驱动的动态网站的最佳产品。PHP、MySQL和Apache是Linux平台网站的最佳拍档。通过对公共课网上系统的分析、设计与具体实
14、施,从而具体介绍了基于Internet/Intranet的网站应用系统的分布式架构模式及实现机理。最后采用了PHP+MYSQL,设计并实现了公共课网上系统系统设计模型2此系统共分为六个较大的模块:(一). 注册模块 (二). 身份验证模块 (三).学生查询模块 (四)、学生签到模块 (五)、教师控制台模块 (六)、学生出勤统计模块 在这七个模块当中共完成19项功能,分别如下:(一) 注册模块i. 新用户注册(教师或学生)ii. 用户登陆(教师或学生)登录界面Index.php教师注册t_signup.php学生注册s_signup.php教师身份验证t_infor.php学生身份验证s_inf
15、or.php 图2-1 流程示意(二) 身份验证模块i. 教师注册身份验证ii. 学生注册身份验证iii. 回答信息库中的个人信息 超级用户管理模块s_answer.php通过验证 s_success.php验证失败 s_fail.php图2-2 流程示意(三)学生查询模块iv. 用户输入学号v. 用户出勤信息查看学生查询模块s_infor.php查找s_infor.php数据库查询结果sss_infor.php图2-3流程示意(三) 学生签到模块i. 个人信息提取ii. 签到结果查看学生信息显示ss_infor.php填加信息ss_infor.php数据库插入信息s_infor.asp图2-
16、4流程示意(四)教师控制台模块iii. 开始学生签到iv. 停止学生签到v. 查看本次签到信息 教师控制台t_infor.php开始签到数据库停止签到流程示意图2-5(五)师期末统计模块vi. 统计专业vii. 统计年级viii. 点名次数ix. 每次点名分数学生出勤统计模块last.php统计输入输入界面Last.php统计查看界面Tttlast.php流程示意图2-6学生(表间关系) 主键签到信息表出勤统计表教师注册信息表学生信息表学号姓名性别年龄学历政治面貌专业电话家庭地址母亲名父亲名爱好年级学号姓名专业用户帐号用户密码学号姓名专业出勤次数缺席次数平时分学号姓名专业年级签到时间签到主机图
17、2-7教师信息表编号姓名性别年龄专业学历政治面貌电话毕业院校家庭地址母亲名父亲名爱好教师注册信息表表编号姓名用户帐号用户密码图2-8 第三章 设计与实施3.1系统数据库设计表1 学生信息表(s_infor)中文名称字段类型Null默认学号s_sno varchar(10)否姓名s_name varchar(20)否性别s_sex varchar(2)否学历s_xueli varchar(10)否政治面貌s_mianmao varchar(10)否专业s_pro varchar(30)否电话s_pho varchar(11)否家庭地址s_addr text否母亲名s_mname varchar(
18、20)否父亲名s_fname varchar(20)否爱好s_love varchar(30)否年级s_gra varchar(50)是NULL表2 教师信息表(t_infor)中文名称字段类型Null默认编号t_sno varchar(10)否姓名t_name varchar(20)否性别t_sex varchar(2)否专业t_pro varchar(30)否学历t_xueli varchar(20)否政治面貌t_mianmao varchar(10)否电话t_pho varchar(11)否毕业院校t_gra varchar(30)否家庭地址t_addr text否母亲名t_fname
19、varchar(20)否父亲名t_mname varchar(20)否爱好t_love varchar(30)否表3 学生签到信息表(s_login)中文名称字段类型Null默认学号s_sno varchar(10)否姓名s_name varchar(20)否专业s_pro varchar(30)否年级s_gra varchar(10)否签到时间s_time date否0000-00-00签到主机ip text是NULL表4 学生注册信息表(s_signup)中文名称字段类型Null默认学号s_sno varchar(10)否姓名s_name varchar(20)否专业s_pro varch
20、ar(30)否用户帐号s_zh varchar(10)否用户密码s_pasw varchar(16)否表5 教师注册信息表(t_signup)中文名称字段类型Null默认编号t_sno varchar(10)否姓名t_name varchar(20)否用户帐号t_zh varchar(10)否用户密码t_pasw varchar(10)否表6 学生出勤统计表(Statistic)中文名称字段类型Null默认学号num varchar(11)是NULL姓名name varchar(30)是NULL专业pro varchar(40)是NULL出勤次数pre_times varchar(20)是NU
21、LL缺席次数absen_times varchar(20)是NULL平时分scores varchar(20)是NULL表7 签到控制表(t_control)中文名称字段类型Null默认标志位falg char(2)是NULL表8 替名签到信息查看表(t_view)中文名称字段类型Null默认学号s_sno varchar(10)否姓名s_name varchar(20)否专业s_pro varchar(30)是NULL年级s_gra varchar(20)否签到时间s_time date否0000-00-00签到主机s_ip text否3.2系统基本流程1.注册(1)下面是学生注册页:图3-
22、1(2)学生注册验证页:通过提出随机问题,实现用户安全注册。防止他人注册。图3-2如果问题回答正确,显示“您已成功通过验证” 返回主页。如果问题回答错误,显示“请仔细检查您的确认密码和学号是否正确”。如果帐号已被注册,显示“此用户帐号已经被注册了,您无法再次进行注册”。2登录(1)用户登录页图3-3注册后,系统将用户的帐号和密码插入数据库,用户正确输入帐号和密码,即可登录。若输入的帐号和密码不正确。显示“你输入的帐号或密码不正确,请重新输入”。教师登录,进入教师控制台图3-4学生登录如果教师点击开始签到,学生登录进入签到页。如果教师点击停止签到,学生登录进入成绩查询页。3签到(1)学生签到页图
23、3-5通过ip防止冒名签到,限定每个ip再同一节课只能有一个人签到,并且通过对时间的限制防止同一人在同一节课多次签到。(2)冒名签到页 如果有人冒名签到,教师可以在冒名签到页中查看到,IP地址出现相同的,证明学生曾试图在一台电脑上给两个人签到。图3-64统计每签到一次,系统记录在数据库中。期末教师输入每次签到的分数, 分数*统计次数=平时成绩图3-75.查询教师输入专业,查询整个专业的成绩。图3-86学生输入学号,查询个人的成绩。图3-93.3系统主要功能模块的实现下面将对以上六个模块中的14项功能的实现做具体详细地阐述。(二)主要功能:(1) 新用户来访须知,简介系统将为用户提供本系的基本介
24、绍;(2) 新用户注册,为新用户建立一个信息输入环境,同时系统将保存新的用户个人资料;(3) 检验身份,是用来检验用户的身份,防止别人冒名注册;(三) 实现方式u 用户初访须知:这是一个版面,即告诉每一个新来到本系统访问的用户,怎样进行注册,能让学生和老师一目了然,正确注册个人信息。我在这里用一个名称为index.php的页面来简单地介绍了本系的一些概况和信息。第一, 选择自己的身份,老师或者学生第二, 登录用户名和登录密码为进入系统的必添资料第三, 如果没有进行注册,需在这里进行注册u 新用户注册:这是一个为新用户提供输入个人资料的界面窗口,同时,根据学校信息库的特点,为每一个用户设计了准确
25、的个人信息。在这里这些个人资料将输入到数据库(ts_signup)中的用户记录表(t_singup或s_signup)当中。在设计过程当中,使用了t_signup和s_signup两个文件来完成此项功能,它们的执行步骤如下:教师填写如下个人资料(t_signup.php)填写项目填否填写说明教师编号必填用户名称不能少于2个字符。建议:请用英文和数字键真实姓名必填用于老师之间相互识别密码必填最少六位数字或字母 确认密码必填验证信息正确性学生填写如下个人资料(s_signup.php)填写项目填否填写说明学号必填用户学号11个字符。真实姓名必填用于学生之间相互识别专业必填用于学生之间进行相互区分密
26、码必填最少六位数字或字母密码必填最少六位数字或字母确认密码必填验证信息正确性(四) 程序解析:(1) 学生用户注册(s_signup.php):在此系统当中,自始自终都是以php技术当中服务器的表单变量作为操作的标识,而且,在不同的功能当中,通过它来实现参数的传递,完成特定的功能。系统只有通过它才能调用,但我们可以对使用的系统变量进行定义和初始化,具体实现如下:$s_sno 为学生的学号,在这里它是唯一可以标示某一个人的身份; $s_name 注册者姓名; $s_pro 注册者专业$s_zh 注册者帐号;$s_pasw 注册者密码;$textfield 注册者的确认密码 页面进行分析:i. 用
27、户个人资料填写(s_signup.jsp)在此页面当中,主要由两部分组成,一部分是显示输入信息界面,另一部分为函数控制部分,由javascript语言实现。function sub()语句主要是控制注册者填写的内容不能为空。例如下:function sub()if(document.form1.s_name.value=)window.alert(请填写你的登录名!);window.form1.id.focus();return false;if(document.form1.s_pasw.value=)window.alert(请填写密码!);window.form1.pwd.focus()
28、;return false;余下的内容为HTML的设计页面。例如下:关键的语句在与取得表单输入信息,语句如下: ii. 注册表单输入(s_answer.php)在此页面,主要完成数据向数据库中的操作:选择数据库表(s_signup),填加一条记录,即新用户生成,返回主页面。重名用户的控制,即注册用户的用户名称如果在系统中存在,那么将返回信息告诉用户重新填写用户名称。实现此功能,首先,从数据库中确认申请的用户名称是否重复,代码如下 0)echo 此学号已经被注册了,您无法再次进行注册;else mysql_select_db($database_conn, $conn);$query_Recor
29、dset2 = SELECT * FROM s_signup where s_sno=$s_zh;$Recordset2 = mysql_query($query_Recordset2, $conn) or die(mysql_error();$row_Recordset2 = mysql_fetch_assoc($Recordset2);$totalRows_Recordset2 = mysql_num_rows($Recordset2);if($totalRows_Recordset20)echo 此用户帐号已经被注册了,您无法再次进行注册;其次是将数据输入输入库中:$insert_que
30、ry=insert into s_signup values($field1,$field2,$field3,$field4,$field5); mysql_query($insert_query, $conn);3 身份验证模块(一) 主要功能(1) 防止他人冒名注册个人帐户;(2) 不同的用户具有不同的管理功能(3) 输入成功后,具有返回的功能;(二)实现方式u 身份验证$row=mysql_fetch_row($Recordset1); $i=mt_rand(7,11); if($i=7) print 请准确回答你的电话号码 ?; else if($i=8) print 请准确回答你的家
31、庭地址 ?; else if($i=10) print 请准确回答你的父亲名 ?; else if($i=9) print 请准确回答你的母亲名 ?; else if($i=11) print 请准确回答你的个人爱好 ?;$field=$row$i;$field1=$s_sno;$field2=$s_name;$field3=$s_pro;$field4=$s_zh;$field5=$s_pasw; else header(Location:s_fail.php);? 成绩输入存储模块(cjsr_ok.jsp)第一,查找的信息不能为空,否则视为无效。第二,连接数据库(chengji),输入信息
32、。如果有信息正确,写入。代码如下:String asql=SELECT * FROM chengji where id=+id+;ResultSet RS=connben.executeQuery(asql);(id,name,rgzn,hbyy,jkjs,sjjg,sjksj,java,xhxt,dmtjs) Values(+id+,+name+,+rgzn+,+hbyy+,+jkjs+,+sjjg+,+sjksj+,+java+,+xhxt+,+dmtjs+);u 成绩修改输入模块(cjsrup.jsp)第一, 输入要修改学生的学号和姓名等待系统确认后,将进入修改主页面。第二,将要修改是成
33、绩输入到表单中,由表单提交到数据库中。name=id 为了建立不同的纪录而设定的代号,在这里它是唯一可以标示某一个学生的身份; name=pwd 学生密码; name=rgzn 代表课程人工智能;name=hbyy 代表课程汇编语言 name=jkjs 代表课程接口技术;name=sjjg 代表课程数据结构;name=sjksj 代表课程数据库设计;name=java 代表课程java语言;name=xhxt 代表课程信号系统;name=dmtjs 代表课程多媒体技术;function sub()定义到表中姓名和学号不能为空。例子如下:function sub()if(document.for
34、m1.id.value=)window.alert(请填写你的学号!);window.form1.id.focus();return false;4学生查询模块(一)主要功能(1) 查询功能是面向全体用户的查询功能;(2) 查找的对象主要包括数据库中签到信息表(s_login)中的全部内容。(3) 查找对象与数据库匹配的字符,如不相符不予以查找。(4) 查询的结果显示在查询结果页面(sss_infor.php)上。(二)实现方式u 成绩查询模块(sss_infor.php) 查找学生学号(sss_infor.php)第一, 要求输入学生的学号,这部分由标准的HTML代码生成;第二, 关键的语句
35、在与取得数据库信息,语句如下:。u 显示成绩模块(sss_infor.php)第一, 连接数据库,查找信息。如果有正确的信息显示出来 mysql_select_db($database_conn, $conn);$query_Recordset1 = SELECT * FROM s_login where s_sno=$field ;第二, 把要显示的信息输入出来 $maxRows_Recordset1 = 20;$pageNum_Recordset1 = 0;$query_Recordset1 = SELECT * FROM s_login where s_sno=$field ;$quer
36、y_limit_Recordset1 = sprintf(%s LIMIT %d, %d, $query_Recordset1, 5学生签到模块(一)主要功能(1) 根据用户帐号,从数据库中学生信息表中提取数据;(2) 将提取的信息放到签到信息页上;(二)实现方式u 根据用户帐号提取个人信息 mysql_select_db($database_conn, $conn);$query_Recordset2 = SELECT s_infor.* FROM s_infor ,s_signup where s_infor.s_sno= s_signup.s_sno and s_signup.s_zh=
37、$s_zh;u 实现签到第一, 连接数据库,查找信息。如果有正确的信息输入进去mysql_select_db($database_conn, $conn);$query= insert into s_login values($s_sno,$s_name,$s_pro,$s_gra,$cc,$ip);$Recordset1 = mysql_query($query, $conn) or die(mysql_error();header(location: pp.php?flag=2);第二,把要显示的信息转到s_infor.php页面输出来 6教师控制台模块(一)主要功能(1)教师允许签到,设
38、置数据库(t_control)中控制标志位;(2)停止签到,设置数据库中(t_control)控制标志为;(二) 实现方式u 设置标志为 第一, 教师允许签到if(!strcmp($button,开始) /使标志位值为1 开始签到$query_Recordset1 = insert into t_control(falg) values(1);$Recordset1 = mysql_query($query_Recordset1, $conn) or die(mysql_error();第二, 停止签到 if (!strcmp($button,停止)/清除标志位$query_Recordset1 = delete from t_control where falg=1;$Recordset1 = mysql_query($query_Recordset1, $conn) or die(mysql_error();u 使其他学生下次正常签到$query_R