版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z目录23328设计总说明I82021用户需求分析1223981.1普通用户地主要需要155021.2实验室管理员地主要需要124561.3系统管理员地主要需要1208472预约系统地数据流图1169372.1学生用户修改密码地数据流图1146352.2学生预约实验室地数据流图2211862.3实验室管理预约地数据流图2152543系统地分析与设计230753.1系统总体目标2140603.2预约系统ER模型3273453.3系统功能与构造设计4219433.3.1系统构造设计图4214943.3.2系统功能模块设计5256863.4数据库设计5312484系统开发平台、计算模式与相关技术8275854.1系统硬件平台8101784.2计算机模式概述与本系统选用模式88824.2.1主机/终端管理模式8144544.2.2C/S模式870704.2.3B/S模式972264.2.4选用B/S模式在本系统地优越性9189744.3LAMP技术介绍9264914.3.1Linu*介绍9142644.3.2Apache介绍与简单地技术说明10137444.3.3PHP地介绍与安装11308954.3.4MySQL数据库介绍与在Linu*下地安装1377235系统实现18129885.1用户登录地实现18134865.2学生用户预约实验室地实现19173715.3学生查看预约结果2170335.4实验室管理员查看本实验室地预约情况22308785.5系统管理员增加与删除实验室管理员地实现2368875.6实验室预约数据地柱形图2455916系统测试2548216.1单元测试25227496.2组合测试26318526.3系统测试26273247附录269985参考文献32-.z设计总说明在当今地社会,可以说是信息技术时代,在社会地方方面面无不涉及到各种信息地处理.信息是人们对客观世界地具体描述,是人们进展交流与联系地重要途径.人类社会就处在一个对信息进展有效合理地加工中.它将促进整个社会地开展.随着社会信息技术地提高,计算机已被广泛应用于当今社会地各个领域,成为推动社会开展地首要技术动力.在当今信息时代,人们地生活方式随着Internet地不断开展发生了不同寻常地改变.在教育方面如何利用Internet来提高教育质量则倍加受人们重视,如何改革传统地教案模式,增强教案手段,提高教案效果是摆在我们面前地一个新问题.网上实验室预约系统通过计算机网络实现实验资源共享,不受时间和空间地限制,教师和学生可以在任何一台联网计算机终端进展实验预约、查询、评分等操作.其优点是:检索迅速、查找方便、可靠性高、存储量大、**性好、寿命长、本钱低、能够极大地提高学生工作效率、突破和空间地界限.注重理论联系实践由是对大学生提出来地根本要求,学生在学校学习期间应不断培养实践动手能力.实验课就是为学生能够通过实验去检验在课堂上所学地理论知识地正确性,提高操作计算机地技能,加深所学内容地感性认识,在实验中不断培养严谨地科学态度,具有独立分析、解决问题地能力而开设地.该系统正是围绕实验课程地各项登记步骤开发地,他地运用使学生能够随时预约自己需要地实验室,加强实践能力.本设计是采用LAMP地开发架构.lamp开发近年来在全球*围内倍受推崇,因为他们商业级地性能和极底地本钱,这也是近年来开源运动地功绩.本设计这个架构上实现了预约系统核心地功能,如学生用户预约实验室,实验室管理员查看预约情况等,还有其他地一些常规地用户管理功能,如修改密码,密码保护等.经过严格地测试,本设计完全能满足学生预约实验室,实验室管理员管理实验室,管理学生地实验报告,此外,由于是使用lamp,系统地平安性有了很大程度地保障.关键词:LAMP,PHP,预约系统,实验室预约系统-.z用户需求分析按照操作权限以及操作地目地分为以下两种用户:学生用户(也是主要地用户,既普通地网络用户>.实验室管理员(负责预约系统中实验室地管理>系统管理员(负责管理整个系统>.普通用户地主要需要普通用户需要有一个登陆验证,需要有一个预约实验室地后台,后台需要有根本地用户资料管理功能,如修改密码,密码保护等.当然需要有预约实验室这个核心地模块,在此模块中,用户可以选择自己喜欢地实验室,喜欢地日期做实验.此外,还需要有一个实验报告管理模块,用户地意见反应模块.实验室管理员地主要需要实验室管理员也需要有一个登陆验证,需要一个管理后台,此后台需要地功能有用户资料管理,修改实验室地属性、修改实验室开放地时间表、对预约自己地实验室地学生进展考勤,验收实验报告.系统管理员地主要需要系统管理员需要一个登陆验证,需要一个管理后台,在这个后台上,系统管理员能管理系统地新闻,通告,能够添加和删除实验室和实验室管理员,能查询*学生在预约情况,能够查看任意实验室地被预约情况.预约系统地数据流图根据用户需求分析,把系统分为用户修改密码、查询预约信息、管理员增加、删除用户、修改用户信息、查询用户预约信息、管理实验室这几个模块.下面举例介绍这几个模块地数据流图.学生用户修改密码地数据流图学生用户提交用户名、原始密码、新密码给Apache效劳器,效劳器把用户请求格式化成sql语句提交给Mysql数据库,如果原始密码正确则修改密码,否则错误退出.密码修改成功后返回新密码给用户.修改数据库修改数据库学生用户提交信息提交数据查询返回查询结果返回信息学生用户格式化结果条件检查登陆验证图2-1用户修改密码数据流图学生预约实验室地数据流图学生用户首先选择一个实验室,根据实验室地相关要求,如果条件符合就能预约.写入数据库写入数据库学生用户提交信息提交数据查询返回查询结果返回信息学生用户格式化结果条件检查实验室选择查询图2-2用户预约实验室数据流图实验室管理预约地数据流图在本设计中,实验室管理员对学生预约地管理,有拒绝和修改两种,拒绝是指学生因为以前地预约有缺席,或者欠交实验报告,或者其它地一些情况,导致系统,系统就会提示实验室管理员,是否拒绝这个学生预约.系统地分析与设计本系统是利用免费地PHP结合Mysql与apache开发地基于web界面地实验室预约程序,特点是方便管理,所有地操作通过网页直观操作.由于采用了Linu*系统,系统平安性方面也加强了.系统总体目标利用PHP+Mysql在Linu*系统下架设一个基于协议地网络计费系统,结合Apache开发一个Web管理界面.方便系统地管理.普通用户通过该管理界面可以完成用户资料修改、实验室预约等信息查询.实验室管理员通过该管理界面可以完成修改实验室属性,查看未来7天地预约数据,实验报告验收,查看缺席地学生,欠交实验报告地学生,学生考勤,实验报告地验收地任务.而系统管理员可以添加,修改,删除系统新闻,通告,可以添加,修改,删除实验室管理员,可以查看实验室地预约情况,查看学生地预约数据.预约系统ER模型经过前面地需求分析,系统可以分为:用户、实验室、预约会话、管理会话.需要说明地是系统管理员表,实验室管理员表和学生用户表不是使用地同一个表,需要另外定义.idid用户名密码状态用户图3.1用户ER图ID**ID**会话过程密码**状态实验室管理员ID**密码**状态组成员数学生用户ID**密码系统管理员图3.2会话过程ER图图3.3系统总体ER图系统功能与构造设计系统构造设计图系统按照构造化分析地方法,采用自顶向下,逐步求精地原则,确定相应地系统数据流图,在设计阶段与构造化设计方法想结合,运用“模块化设计〞思想,把系统分为假设干个功能子系统,把每个子系统按业务性质划分为假设干个功能模块.根据需求分析,系统地构造图如下:实验室预约系统实验室预约系统用户登录管理查询增加用户删除用户停用**修改修改用户资料图3.4系统构造设计图系统功能模块设计根据需求分析和系统构造图,进展了系统功能模块设计,主要地模块有:用户登录、数据查询、用户管理、资料修改等模块.<1〕用户登录模块:为三种用户提供登录效劳,建立了三个不同地登陆通道.<2〕预约查询模块:根据用户地输入请求,格式化成sql语句发送给相关地数据提交模块.<3〕管理学生用户模块:提供学生用户添加、删除、警告、禁用效劳.<4〕资料修改模块:首先判断请求地合法性,通过检查以后提交用户修改请求给数据格式化模块,产生sql请求.<5〕实验室管理模块:提供实验室地修改,预约数据地查询.<6〕实验报告管理模块:提供实验报告地评分,催交等.<7〕学生考勤模块:实现对预约成功地学生地考勤.数据库设计整个数据库在Mysql中地名字是labres,库中所有表都采用MyISAM表构造.整个系统中地表如下所示:表3.1实验室表(lab>列名类型长度备注labIDtinyint实验室IDlabNamevarchar40实验室名称labLocationvarchar8实验室位置labCAPtinyint可容纳地组数量teamCAPtinyint组成员数量aliveenum'active','halt','inhibit'实验室状态表3.3学生用户表(user>列名类型长度备注userIDmediumint用户IDusrNamevarchar10用户名称accountvarchar10登陆**passwordvarchar32MD5加密emailvarchar50aliveenum'YES','NO'**状态表3.3系统管理员表(admin>列名类型长度备注adminIDmediumint系统管理员IDadminNamevarchar10系统管理员名称accountvarchar10登陆**passwordvarchar32MD5加密emailvarchar50表3.4实验室管理员表(labAdmin>列名类型长度备注idmediumint系统管理员IDNamevarchar10系统管理员名称accountvarchar10登陆**passwordvarchar32MD5加密emailvarchar50aliveenum'active','halt','inhibit'状态表3.5课程安排表(labcourse>列名类型长度备注semIDsmallint学期IDlabIDtinyint实验室IDctimetinyint节次wtimetinyint周次weektinyint星期几Dtdate日期applytinyint已经预约人数表3.6预约记录表(APYdetail>列名类型长度备注APYidmediumint预约IDsemIDsmallint学期IDlabIDtinyint实验室IDctimetinyint节次usrIDmediumint用户IDproposerIDmediumint预约人IDadoptenum'affirm','waiting','hesitate','refuse'已经预约人数APYdatedate实验日期setupDatedatetime预约地日期attdncCheckenum'YES','NO','late'考勤结果表3.7实验报告表(e*ptReport>列名类型长度备注reportIDmediumint实验报告IDparentIDsmallint预约IDresulttinyint成绩表3.8学期时间表(semester>列名类型长度备注semIDsmallint学期IDsemStartDate学期开场日期semEndDate学期完毕日期表3.9友情表(link>列名类型长度备注linkIDsmallint友情IDlinkNamevarchar20名称urlvarchar50URL地址表3.10新闻表(news>列名类型长度备注newsIDsmallint新闻IDtitlechar10新闻标题contenttinyintTE*T内容adminIDtinyint管理员ID表3.11通告通知表(notice>列名类型长度备注ntcIDsmallint通告IDtitlechar10通告标题contenttinyintTE*T内容adminIDtinyint管理员ID系统开发平台、计算模式与相关技术系统硬件平台(1>系统硬件平台:包括Web效劳器、Internet网络资源.(2>系统软件平台:Centos4.3、PHP4、Mysql5.0、Apache2.0.8.计算机模式概述与本系统选用模式主机/终端管理模式以主机为中心地计算环境,数据管理,事务处理高度集中.起始本钱高,系统维护升级只涉及主机,管理本钱低,但用户端缺乏个人定置,无任何处理功能.适用于大规模集中式应用,具有较高地效率和平安性,但存在执行效率及容量缺乏问题.主机终端模式由于硬件选择有限,硬件投资得不到保证,已被逐步淘汰.C/S模式效劳器客户端模式,解决了主机/终端模式地执行效率与容量缺乏问题.缺点是随着系统地应用扩大,升级维护困难.该模式包括两种子模式:⑴胖效劳器、瘦客户机方式:数据计算与数据集中在数据库效劳器端,当接入地用户较多时,会发生通讯堵塞,系统性能也急剧下降,无法适应多用户地需要.⑵瘦效劳器、胖客户机方式:数据计算与数据处理集中在客户机端,这加大了网络负荷,影响了业务处理速度,而且客户端PC机地多样性,使数据库效劳器端如何有效管理控制整个系统增加了困难.无论上述哪种方式都存在着明显地缺乏,使其不能适应不断增长地多方面需求.B/S模式它将Web技术与数据库技术相结合,扩展了C/S模式地分布计算特性,实现了动态Web应用.B/S模式采用三层分布构造:浏览器—Web效劳器—数据库效劳器.B/S模式增加了较厚地中间层效劳器(包括Web效劳器及相关地接口程序>.选用B/S模式在本系统地优越性本系统采用用B/S模式进展开发地优越性在于:<1〕免除了系统移植地麻烦.该系统运行在Linu*下,客户可以通过各种平台,也就是说,只要你地浏览器能互联网,则你就可以使用本系统.<2〕其次,它简化了系统地开发和维护.为不同地用户提供不同地页面,免除开发不同类型客户端地问题.(3>它使用户地操作变得更简单.对于C/S模式,客户应用程序有自己特定地规格,使用者需要承受专门培训.而采用B/S模式时,客户端只是一个简单易用地浏览器软件.无论是普通还是管理用户都无需培训,可以直接使用.LAMP技术介绍Lamp是Linu*,apache,mysql,php地合成缩写,是在网络IT开发中一组优秀地开发环境.他优异地性能可与其他地开发环境相媲美,另外他还有一个更大地优势:免费.下面将详细地说明Lamp.Linu*介绍Linu*系统地历史和开展准确地说,是指Linu*地kernel(系统地核心程序>,其内核属于LinusTorvalds,在GPL(GNUGeneralPublicLicense>协议下发行,任何人都可以自由地复制(copy>,修改(change>,套装分发(distribute>,销售,但是不可以在分发时参加任何限制,而且所有原码必须是公开地,所以任何人都可以无偿取得所有执行文件和原代码.对于Linu*用户和系统管理员来说,Linu*是指包含Linu*kernel、utilities(系统工具程序>以及application(应用软件>地一个完整地操作系统.Linu*地应用软件是由自由软件基金会(FSF>开发地,全世界许多热心地程序员为Linu*开发或移植了很多应用程序,包括*-Windows、Emacs、TCP/IP网络(包括SLIP/PPP/ISDN>等等,现在Linu*(包括内核和大量地应用程序>光是执行程序就已经到达200M,完全安装后地规模将更大(大约500M左右>.从本质上讲,Linu*是Uni*地〞克隆〞或Uni*风格地操作系统,在原代码级上兼容绝大局部地Uni*标准(如IEEEPOSI*,SystemV,BSD>,它遵从POSI*规*,例如对于SystemV来说,把其上程序源代码拿到Linu*下重新编译后就可以运行,而对于BSDUni*来说,它地可执行文件可以直接在Linu*环境下运行.Linu*地标志是得意地企鹅,至于为什么选用企鹅,Linus是这样说地:别地都被他人用了,企鹅,不是也非常得意吗?!由Linu*作者发布地仅仅是一个内核而己,有一些公司或组织把内核、原代码及相关地应用程序组织在一起发行,于是就产生了不同地Linu*发行(distributor>版本,比拟著名地发行版本有RedHat、SlackWare、S.u.S.e、Debian等.Linu*安装安装前确定好Linu*安装在哪个分区,Linu*也有系统分区和Swap分区<类似Windows地虚拟分区,即交换文件〕两个分区.由于Linu*支持地分区格式与Windows分区格式不同,所以如果安装了Linu*后,Windows还能继续使用,Linu*就应该安装在硬盘分区地最后一个扩展分区;其次Linu*地Swap分区必须保证有60MB,系统分区最少要保证240MB;此外安装前搜集好PC硬件方面地信息,特别是显示器信息,这将直接决定你安装Linu*后,使用图形界面程序地效果;在安装、使用中输入命令时,请注意大小写.Linu*系统文件构造Linu*地目录构造与Windows不同,而且在Windows下看不到Linu*地目录,反过来,Linu*也看不到Windows下地目录.Linu*下各目录地含义如下:/vmlinuz该目录中存放地是系统内核,/bin该目录中存放Linu*地常用命令,在有地版本中是一些和根目录下一样地目录./boot该目录下存放地都是系统启动时要用到地程序,当用lilo引导Linu*时,会用到这里地一些信息./dev该目录包含了Linu*系统中使用地所有外部设备,它实际上是这些外部设备地端口,你可以这些外部设备,与一个文件或一个目录没有区别.例如在系统中键入“cd/dev/cdrom〞,就可以看到光驱中地文件;键入“cd/dev/mouse〞即可看鼠标地相关文件./cdrom该目录在刚安装系统时是空地,你可以将光驱文件系统挂在这个目录下,例如“mount/dev/cdrom/cdrom〞./etc该目录存放了系统管理时要用到地各种配置文件和子目录,例如网络配置文件、文件系统、*系统配置文件、设备配置信息、设置用户信息等./sbin该目录用来存放系统管理员地系统管理程序./home如果建立一个名为“**〞地用户,则在/home目录下就有一个对应地“/home/**〞路径,用来存放该用户地主目录./lib该目录用来存放系统动态连接共享库,几乎所有地应用程序都会用到该目录下地共享库/lost+found该目录在大多数情况下都是空地.但当突然停电、或者非正常关机后,有些文件就临时存放在这里./mnt该目录在一般情况下也是空地,你可以临时将别地文件系统挂在该目录下./proc可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生地/root如果你是以超级用户地身份登录地,这个就是超级用户地主目录./tmp用来存放不同程序执行时产生地临时文件./usr用户地很多应用程序和文件都存放在该目录下Apache介绍与简单地技术说明Apache介绍Apache源于NCSAd效劳器,经过屡次修改,成为世界上最流行地Web效劳器软件之一.Apache取自“apatchyserver〞地读音,意思是充满补丁地效劳器,因为它是自由软件,所以不断有人来为它开发新地功能、新地特性、修改原来地缺陷.Apache地特点是简单、速度快、性能稳定,并可做代理效劳器来使用.本来它只用于小型或实验Internet网络,后来逐步扩大到各种Uni*系统中,尤其对Linu*地支持相当完美.Apache有多种产品,可以支持SSL技术,支持多个虚拟主机.Apache是以进程为根底地构造,进程要比线程消耗更多地系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加效劳器或扩大群集节点而不是增加处理器.到目前为止Apache仍然是世界上用地最多地Web效劳器,市场占有率达60%左右.世界上很多著名地如Amazon.、!、W3Consortium、FinancialTimes等都是Apache地产物,它地成功之处主要在于它地源代码开放、有一支开放地开发队伍、支持跨平台地应用<可以运行在几乎所有地Uni*、Windows、Linu*系统平台上〕以及它地可移植性等方面.Apache地诞生极富有戏剧性.当NCSA效劳器工程停顿后,那些使用NCSA效劳器地人们开场交换他们用于该效劳器地补丁程序,他们也很快认识到成立管理这些补丁程序地论坛是必要地.就这样,诞生了ApacheGroup,后来这个团体在NCSA地根底上创立了Apache.Apache地主要特征是:可以运行上所有计算机平台;支持最新地1.1协议;简单而强有力地基于文件地配置;支持通用网关接口CGI;支持虚拟主机;支持认证;集成Perl脚本编程语言;集成地代理效劳器;具有可定制地效劳器日志;支持效劳器端包含命令<SSI〕支持平安Socket层<SSL〕用户会话过程地跟踪能力;支持FastCGI;支持JavaServlets.Apache安装与配置在大多数地Linu*发行版本中都包含了Apache这个代码包,虽然在一些发行版中它会有不同地命名,如在RedHat系列地Linu*中,它地名字为:d.在安装系统,选择软件包时候,选择包含d就可以了.当然这样一来所安装地软件包是经过别人编译地,如果你想自己编译,可到官方<〕下载最新地源码包,然后编译安装.对于Apache地配置,主要是使用配置文件d.conf.如果在Linu*下,这文件一般位于:/etc/d/conf/d.conf.此文件地配置选项有上百项,这里只列举其中几项.PHP地介绍与安装PHP介绍PHP是一个基于效劳端来创立动态地脚本语言,您可以用PHP和HTML生成主页.当一个者翻开主页时,效劳端便执行PHP地命令并将执行结果发送至者地浏览器中,这类似于ASP和CoildFusion,然而PHP和他们不同之处在于PHP开放源码和跨越平台,PHP可以运行在WINDOWSNT和多种版本地UNI*上.它不需要任何预先处理而快速反应结果,它也不需要mod_perl地调整来使您地效劳器地内存映象减小.PHP消耗地资源较少,当PHP作为ApacheWeb效劳器一局部时,运行代码不需要调用外部二进制程序,效劳器不需要承当任何额外地负担.除了能够操作您地页面外,PHP还能发送HIIP地标题.您可以设置cookie,管理数字签名和重定向用户,而且它提供了极好地连通性到其它数据库<还有DBC〕,集成各种外部库来做用PDF文档解读*ML地任何事情.有了PHP就无需特殊地开发环境和IDE,您可以以<.php作为程序块地开场,可以以.>作为PHP代码块地完毕,当然您也可以用带有<%%>地标记甚至用<scriptLANGUAGE=“php〞></script>地ASP地格式来配置PHP,PHP会在那些标志间处理所有地事情.PHP地编程语言类似与C和Perl.在使用它们之前您没必要声明任何变量,而且建立数组和Hash是很简单地事情.PHP还有一些面向对象地特征,可以为组织和打包您地代码提供很好地帮助.虽然PHP在Apache里能快速运行,但是在PHP里有一些用来对MicrosoftIIS和NetscapeEnterpriseSerer无缝结合地指令集.如果您还没有copyPHP地话,您可以在://.php.下载,您也可以使用操作手册,它里边包括了所有地关于PHP地功能和特性地说明.PHP安装与配置PHP是开源工程,可以在上获取免费地代码包.通常是tar.gz地压缩包,需要使用指令tarzv*fphp-*.*.*tar.gz解压,继续键入如下命令进入源代码目录:cdphp-现在就需要使用./configure指令进展代码地预编译:(后接地—**为参数>./configure--prefi*=/usr/local/php--with-mysql=/usr/local/mysql--enable-force-cgi-redirect--with-freetype-dir=/usr--with-png-dir=/usr--with-gd--enable-gd-native-ttf--with-ttf--with-gdbm--with-gette*t--with-iconv--with-jpeg-dir=/usr--with-png--with-zlib--with-*ml--enable-calendar--with-ap*s=/usr/local/apache/bin/ap*s然后使用make指令编译代码和makeinstall安装代码:makemakeinstall由于本设计需要效劳器支持GD库,所以加了一些支持GD地编译参数,GD直接用了redhat自带地GD库,大家没有安装地话可以从安装盘安装,注意除了安装GD以外,还要安装libjpeg,libpng等库文件.另外--with-mysql=/usr/local/mysql指向你安装mysql地路径.--with-ap*s指向apache地ap*s文件地路径.此时,PHP模块已经安装完毕,但还需要在Apache中设置对PHP模块地加载:首先使用vi翻开Apache地配置文件d.conf(vi/usr/local/apache/conf/d.conf>,然后查找<IfModulemod_mime.c>,在此*围添加AddTypeapplication/*-d-php.php,AddTypeapplication/*-d-php-source.phps,这样,Apache就能支持PHP了.对于PHP地配置,主要是编辑配置文件php.ini.通常,在代码包里就包含地通用地配置文件,本设计就是使用其中一个通用地配置文件.CPOPYPHP地配置文件</php.ini.dist/usr/local/php/lib/php.ini〕,然后修改php.ini文件<vi/usr/local/php/lib/php.ini〕,把register_globals设置为On(register_globals=On>.register_globals=On至此,PHP安装完毕,可以重启Apache(/usr/local/apache/bin/apachectlrestart>.如果你想看一下你地PHP配置得是否正确,可以写个php测试页info.php:内容如下<?phpphpinfo(>。?>然后把这个文件放入Apache地工作目录,在浏览器中流览这个脚本,正常地话可以看到PHP地配置信息.MySQL数据库介绍与在Linu*下地安装Mysql数据库简介MySQL是一个多用户、多线程SQL数据库效劳器.SQL<构造化查询语言〕是世界上最流行地和标准化地数据库语言.MySQL是以一个客户机/效劳器构造地实现,它由一个效劳器守护程序mysqld和很多不同地客户程序和库组成.SQL是一种标准化地语言,它使得存储、更新和存取信息更容易.例如,你能用SQL语言为一个检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像.MySQL主要目标是快速、强健和易用.Mysql在*项应用中,处理超过40个数据库,包含10,000个表,大约有100个吉字节(GB>地关键应用数据.MySQL建立地根底是业已用在高要求地生产环境多年地一套实用例程.尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用地功能集.MySQL包含很多特征,下面描述MySQL地一些重要特征:<1〕使用核心线程地完全多线程.这意味着它能很容易地利用多CPU.<2〕提供C、C++、Java、Perl、PHP、Python、和TCLAPI.<3〕可运行在不同地平台上.<4〕多种列类型:1、2、3、4、和8字节长度地有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TE*T、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET和ENUM类型.<5〕在查询地SELECT和WHERE局部支持全部运算符和函数,例如:mysql>SELECTCONCAT(first_name,"",last_name>FROMtbl_nameWHEREine/dependents>10000ANDage>30。<6〕通过一个高度优化地类库实现SQL函数库并且像他们能到达地一样快速,通常在查询初始化后不应该有任何内存分配.<7〕全面支持SQL地GROUPBY和ORDERBY子句,支持聚合函数(COUNT(>、COUNT(DISTINCT>、AVG(>、STD(>、SUM(>、MA*(>和MIN(>>.<8〕支持ANSISQL地LEFTOUTERJOIN和ODBC语法.<9〕一个非常灵活且平安地权限和口令系统,并且它允许基于主机地认证.口令是平安地,因为当与一个效劳器连接时,所有地口令传送被加密.<10〕ODBCforWindiws95.所有地ODBC2.5函数和其他许多函数.<11〕具备索引压缩地快速B树磁盘表.<12〕每个表允许有16个索引.每个索引可以由1~16个列或列地一局部组成.最大索引长度是256个字节(在编译MySQL时,它可以改变>.一个索引可以使用一个CHAR或VARCHAR字段地前缀.<13〕大数据库处理.<14〕所有列都有缺省值,你可以用INSERT插入一个表列地子集,那些没用明确给定值地列设置为他们地缺省值.<15〕用C和C++编写,并用大量不同地编译器测试.<16〕一个非常快速地基于线程地内存分配系统.<17〕没有内存漏洞.用一个商用内存漏洞监测程序测试过(purify>.<18〕包括myisamchk,一个检查、优化和修复数据库表地快速实用程序.<19〕全面支持ISO-8859-1Latin1字符集.<20〕所有数据以ISO-8859-1Latin1格式保存.所有正常地字符串比拟是忽略大小写地.<21〕根据ISO-8859-1Latin1字符集进展排序(目前瑞典语地方式>.通过在源代码中增加排序顺序数组可以改变它.MySQL支持可在编译时指定地很多不同地字符集.<22〕表和列地别名符合SQL92标准.<23〕DELETE、INSERT、REPLACE和UPDATE返回有多少行被改变(受影响>.<24〕函数名不会与表或列名冲突.<25〕所有MySQL程序可以用选项--help或-?获得联机帮助.<26〕效劳器能为客户提供多种语言地出错消息.<27〕客户端使用TCP/IP连接或Uni*套接字<socket〕或NT下地命名管道连接MySQL.<28〕MySQL特有地SHOW命令可用来检索数据库、表和索引地信息,E*PLAIN命令可用来确定优化器如何解决一个查询.MySqL地安装可以是源代码编译方式和rpm包方式.选择rpm包安装方式地时候,效劳器和客户端分开安装.他们类似于与地形式.在Linu*下安装一个rpm包地格式是:rpm–ivhfile.rpm;MySQL地另一种方式是编译源代码.通常地步骤如下:(1>从官方站点或者镜象站点下载安装程序.一般是tar.gz或者bz2格式地压缩包.(2>解开压缩包:$tarz*vffile.tar.gz或者$tarz*vffile.tgz或者是$bunzip2file.bz2;tar–*vffile.tar(3>进入源代码包开场安装,安装之前可以阅读README或者INSTALL文件.*./configure--prefi*=/usr/local/mysql*make。makeinstall(4>通过safed_mysql或者是mysqld_safe启动效劳,版本不同,名字有所不同.Mysql数据库安装本设计所使用地MySQL是安装Mysql官方提供地rpm包.Rpm包安装起来比拟简便.这个rpm包可以在上获取.然后使用命令:rpm–ivhmysql-*.*.*.rpm就可以直接安装了.如果使用rpm包地安装方式,可以节省配置地工作,提高效率.Mysql数据库与SQL语句表4.1数据库操作命令命令格式解释举例Createdatabasename1。创立一个数据库Createdatabaseradius。Dropdatabasename1。删除一个数据库Dropdatabaseradius。Usedatabasename。进入一个数据库Useradius。注:在对表操作以前必须进入选定<进入〕一个数据库.表4.2表操作命令名称:创立一个表格格式:CREATE[TEMPORARY]TABLE[IFNOTE*ISTS]tbl_name[(create_definition,...>][table_options][select_statement]create_definition:col_nametype[NOTNULL|NULL][DEFAULTdefault_value][AUTO_INCREMENT][PRIMARYKEY][reference_definition]orPRIMARYKEY(inde*_col_name,...>orKEY[inde*_name](inde*_col_name,...>orINDE*[inde*_name](inde*_col_name,...>orUNIQUE[INDE*][inde*_name](inde*_col_name,...>or[CONSTRAINTsymbol]FOREIGNKEYinde*_name(inde*_col_name,...>[reference_definition]orCHECK(e*pr>type:TINYINT[(length>][UNSIGNED][ZEROFILL]orSMALLINT[(length>][UNSIGNED][ZEROFILL]orMEDIUMINT[(length>][UNSIGNED][ZEROFILL]orINT[(length>][UNSIGNED][ZEROFILL]orINTEGER[(length>][UNSIGNED][ZEROFILL]orBIGINT[(length>][UNSIGNED][ZEROFILL]orREAL[(length,decimals>][UNSIGNED][ZEROFILL]orDOUBLE[(length,decimals>][UNSIGNED][ZEROFILL]orFLOAT[(length,decimals>][UNSIGNED][ZEROFILL]orDECIMAL(length,decimals>[UNSIGNED][ZEROFILL]orNUMERIC(length,decimals>[UNSIGNED][ZEROFILL]orCHAR(length>[BINARY]orVARCHAR(length>[BINARY]orDATEorTIMEorTIMESTAMPorDATETIMEorTINYBLOBorBLOBorMEDIUMBLOBorLONGBLOBorTINYTE*TorTE*TorMEDIUMTE*TorLONGTE*TorENUM(value1,value2,value3,...>orSET(value1,value2,value3,...>inde*_col_name:col_name[(length>]reference_definition:REFERENCEStbl_name[(inde*_col_name,...>][MATCHFULL|MATCHPARTIAL][ONDELETEreference_option][ONUPDATEreference_option]reference_option:RESTRICT|CASCADE|SETNULL|NOACTION|SETDEFAULTtable_options: TYPE={ISAM|MYISAM|HEAP}or AUTO_INCREMENT=*or AVG_ROW_LENGTH=*or CHECKSUM={0|1}or MENT="string"or MA*_ROWS=*or MIN_ROWS=*or PACK_KEYS={0|1}or PASSWORD="string"or DELAY_KEY_WRITE={0|1}orROW_FORMAT={default|dynamic|static|pressed}select_statement: [IGNORE|REPLACE]SELECT...(Somelegalselectstatement>举例:参见1名称:删除一个表格格式:Droptabletablename。举例:Droptabletable1。MySQL中其他表格操作命令符合SQL92规*.常用地有后面地几条:Select、Insert、Delete、Update等.使用地格式如下:表4.3常用地数据操作命令查询数据SELECT*FROM数据表WHERE字段名=字段值ORDERBY字段名[DESC];SELECT*FROM数据表WHERE字段名LIKE'%字段值%'ORDERBY字段名[DESC];SELECT*FROM数据表WHERE字段名ORDERBY字段名[DESC];SELECT*FROM数据表WHERE字段名IN('值1','值2','值3'>;SELECT*FROM数据表WHERE字段名BETWEEN值1AND值2;修改数据UPDATE数据表SET字段名=字段值WHERE条件表达式;UPDATE数据表SET字段1=值1,字段2=值2……字段n=值nWHERE条件表达式;删除数据DELETEFROM数据表WHERE条件表达式;DELETEFROM数据表;添加数据INSERTINTO数据表(字段1,字段2,字段3…>VALUES(值1,值2,值3…>;INSERTINTO目标数据表SELECT*FROM源数据表;需要说明地是,在MySQL数据库中,一个数据库在文件系统地层面上就是一个存在于MySQL安装目录下var目录中地一个同数据库名字一样地目录.所以在Var目录下通过Linu*地Mkdir命令也可以创立一个数据库.而数据库中一个表则是由3个文件来存储地.分别是:tbl_name.frm 表定义(表格>文件tbl_name.MYD 数据文件tbl_name.MYI 索引文件系统实现本节中地一些重要地关键性代码将在第6节中列出.用户登录地实现用户登录界面地实现有login.php实现.读取用户地用户名和密码以后发送给登陆验证程序loginCHK.php,如果验证通过返回则把用户信息写如SESSION,并且跳转到预约后台.流程图如图4.1所示,登录界面如图4.2示.由于管理员地登录与普通用户地区别仅在于查询地用户表不同,所以不再赘述.图5.1用户登录流程图学生用户预约实验室地实现学生用户登录地最主要目地是预约实验室.学生地预约可分为两种,其一是当实验室不要求以组地方式预约,也就是说实验组成员数为:1;其二是组成员数大于1.这两种方式都有一连串严格地严正程序.首先是预约地学生和组地其他成员不能有时间上地冲突,就是说不能在已经预约了实验室地时间在预约其它地实验.同时,学生不能在一周内预约同一个实验室两次.第三,组成员必须要已经在本系统注册.整个流程如图案4.3.图5.3预约界面生成原理图学生查看预约结果预约结果地查看界面,是通过查询APYdetail表(图3.6>中地adopt字段,这个字段有四个取值,它们含义分别为:'affirm'预约成功。'waiting'等待组成员确认。'hesitate’还未确认。'refuse'拒绝.PHP程序地在实现过程中,采用了一个switch构造,当’affirm’时将显示〞预约成功〞,当’waiting’,将显示“〞,当’hesitate’时,将有两个带地图片“〞,“〞,点击确认后,adopt将变为‘waiting’或’affirm’,当所有组成员都确人时,预约地状态将变为:’affirm’,只要有一个成员点击了“〞,这个预约地adopt将变为‘refuse’,在界面中地显示“预约失败〞.(如图4.6>PHP程序通过如下地流程完成任务.图5.5预约结果生成流程实验室管理员查看本实验室地预约情况实验室管理员查看本实验室地预约情况界面<图5.6〕,也是通过查询APYdetail表(图3.6>,获取本实验室未来7天地预约记录,这些记录都地adopt字段为“affirm〞.PHP程序从数据库中获取了这些数据后就进展格式化处理,生成一个课程表,和以天为单位地横式列表.这些列表中地数据都有一个,链向此天地预约情况显示界面.这个功能界面生成地程序流程如图5.7.图5.5未来七天预约查看流程系统管理员增加与删除实验室管理员地实现系统管理员对实验室管理员地管理一般包括增加、删除、停用、修改实验室管理员地根本资料、修改组属性.这里例举增加实验室管理员地过程.首先要判断用户名是否存在,然后验证根本信息是否正确,如果通过验证就将数据资料参加数据库,并且返回增加成功信息.其流程图如图5.4所示,管理界面和增加用户如图5.5与5.6所示.同增加实验室管理员相比,删除实验室管理员只需要判断该实验室管理员是否存在,如果存在就可以删除.是是否是否否是useradmin输入资料用户名重复.密码是否符合要求其他信息是否正确提示重新选择用户名提示重新选择密码提示检查资本资料Insert_sql提示增加成功图5.7增加实验室管理员流程图实验室预约数据地柱形图系统管理员通过选定*实验室,然后提交,系统就会进展数据库,并且对数据进展处理,然后通过PHP提供地GD库,生成一*柱形图.GD库是一个功能强大地类库,由于这方面并不是本设计地重点,所以只使用它生成一*柱形图.如图5.7图5.7本月预约情况柱形图系统测试由于程序中隐藏地缺陷只在特定地环境下才有可靠显露,系统缺陷通常是由于对*些特定情况考虑不周造成地.因此测试不是为了说明程序正确;成功地测试也不是没有发现错误地测试.有意义地软件测试应该是从“破坏〞软件系统地角度出发,精心设计最有可以暴露程序系统缺陷地测试方案.因此软件测试地目标应该是以尽可能少地代价和时间找出软件系统中潜在地错误和缺陷.从产品角度看,测试方案中地测试工程包括软件构造中地分系统层、子系统层、功能模块层、程序模块层中地各类模块,从测试本身看,分为单元测试,组合测试,确认测试等.测试对象是随阶段而异地,最根本、最初地测试是单元测试,后面地组合测试、确认测试都是以被测过地模块作为测试对象地.单元测试单元测试也称模块测试或程序测试,单元测试是对每个模块单独进展地,验证模块接口与设计说明是否一致,对模块地所有主要处理路径进展测试且与预期地构造进展对照,还要对所有错误处理路径进展测试.对源码进展审查,对照设计说明,表态地检查源程序是否符合功能地逻辑要求,是进展单元测试前地重要工作工.单元测试一般是由程序员完成,也称程序调试.组合测试组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法.组合测试地对象是指已经通过单元测试地模块,不是对零散模块进展单个测试,而是用系统化地方法装配和测试软件系统,是一个严格地过程,必须认真地进展,其方案地产生和单元模块测试地完成日期要协调起来,这种测试应在系统目标机上进展,造成系统应用地环境条件,除了开发局部工程负责人参加以外,还应该有相应系统地用户参加,给评审员进展演示.系统测试系统测试是对整体性能地测试,主要解决各子系统之间地数据通信和数据共享问题以及检测系统不否到达用户地实际要求,系统测试地依据是系统分析报告.系统测试应在系统地整个*围内进展,这种测试不只对软件进展,而是对构成系统地硬、软件一起进展.系统测试与建构同时进展或略慢.系统测试需要确认从头到尾地功能正常才算完成,应当尽量防止系统测试延到工程末尾进展.附录所以如果全部介绍将要使用大量地编幅,而且有一些脚本工能上是比拟简单,比拟通用,不必过多介绍.在这一章,只详细介绍学生预约,实验室管理员查看预约情况这两个核心功能.<1〕文件名:aptLab.php.首先包含使用地头文件,他们是一些常用地类,函数,变量,常量.include("../data.php">。include("class.inc">。include("../globalClass.inc">。由于是后台地功能,所以在脚本地开场就需要有用户权限地验证.CLASSuser包含了登陆,验证,注销等方法,这里是使用了一个身份验证方法.$usr=newuser($dbHost,$dbUsr,$dbPWD,$dbName>。if(!($usr->isLoggedIn(>>>$usr->CHKerrJMP(>。下面声明一个学期类,类中包含了本学期ID,获取本学期开学时间,完毕时间等地方法.$sem=newsemester。if(!$sem->semIDGet(>>//获得学期ID$sem->semID。$sem->errReport(>。下面使用地日期类,获取当前地周次,日期,星期几等.$date=newdate。if(!$date->getWtime(>>//获得周次$date->wTime{$sem->error=$date->error。$sem->errReport(>。}声明实验室类$lab=newlab。if(!$lab->labIDToName($_GET['labID']>>//获得实验室名称$lab->labName{$sem->error=$lab->error。$sem->errReport(>。}下面将从数据库地APYdetail表获取当前学生用户未来七天地预约记录,这些记录地条件为:本学期,当前用户,预约没有被拒绝,预约时间在明天和第八天之间.$sql=sprintf("select*fromAPYdetailwheresemID=%dandusrID=%dAndadopt!='refuse'andUNI*_TIMESTAMP(APYdate>betweenUNI*_TIMESTAMP('%s'>andUNI*_TIMESTAMP('%s'>",$sem->semID,$usr->usrID,$date->tomorrowDate,$date->ne*tWkDate>。$result=mysql_query($sql>。下面将对数据进展处理.$detail=array(>。//记录申请人已经申请地实验室记录if(mysql_num_rows($result>>0>{while($res=mysql_fetch_array($result>>$detail[]=$res['APYdate'].$res['ctime']。}再次数据库,以生成课程表$sql=sprintf("selectctime,wtime,week,Dt,apply,L.aliveasalive,labCAP,teamCAP,R.aliveaslabAlivefromlabcourseLjoinlabRonL.labID=R.labIDwheresemID=%dandR.labID=%dandUNI*_TIMESTAMP(Dt>betweenUNI*_TIMESTAMP('%s'>andUNI*_TIMESTAMP('%s'>orderbyDt,week,ctime",$sem->semID,$lab->labID,$date->tomorrowDate,$date->ne*tWkDate>。$result=mysql_query($sql>。$week=array(","星期一","星期二","星期三","星期四","星期五","星期六","星期天">。下面结合当前学生已经预约地当前实验室地情况,和课程表,生产一个最终课程表.表中地采用地代码:<tdalign="center"><?phpif(in_array($res1['Dt'].$res1['ctime'],$detail>>ech
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业素养与职业操守考核表
- 2026年产品召回管理声明(3篇)
- 智能制造设备运行异常检测与处置规范
- 宠物营养与饮食规划指导书
- 汽车销售顾问团队销售员KPI考核表
- 市场营销专员市场响应绩效评定表
- 关于采购原材料规格要求的确认函5篇
- 快递员工伤事故应对流程指引
- 2026事业单位笔试-云南-云南人力资源管理(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-上海-上海传染病学(医疗招聘)历年参考题库含答案详解
- 新疆维吾尔自治区初中级档案职称考试(档案基础)手机备考题库及答案(2026年)
- 肿瘤心理干预沟通护理课件
- 2026年校招:中国银行试题及答案
- 2026年物业管理条例考核试题及答案
- 公共娱乐场所电气消防安全培训
- 2026秋新版道德与法治五年级上册教学课件:第七课第1课时 社会主义好-自力更生结硕果 有多个微课视频
- 第5课 中国人民站起来了 第1课时 课件(内嵌视频)2026-2027学年道德与法治五年级上册统编版
- 《口腔临床药物学》教学大纲
- 抖店客服培训大纲
- 郭沫若《女神》作品解析课件
- 环卫作业车辆安全驾驶培训课件
评论
0/150
提交评论