系统详细配置方法.doc

JSP自动排课系统(源代码+论文+开题报告)

收藏

资源目录
跳过导航链接。
JSP自动排课系统源代码论文开题报告.rar
JSP自动排课系统(源代码+论文+开题报告)
JSP027自动排课系统
系统详细配置方法.doc---(点击预览)
readme.txt
sqlserver-driver.rar
排课系统.sql
数据库文件
paike
paike_Data.MDF
paike_Log.LDF
源文件
论文+开题
运行文件
压缩包内文档预览:
预览图 预览图 预览图
编号:149932495    类型:共享资源    大小:1.69MB    格式:RAR    上传时间:2021-10-10 上传人:好资料QQ****51605 IP属地:江苏
20
积分
关 键 词:
JSP 自动 系统 源代码 论文 开题 报告
资源描述:
JSP自动排课系统(源代码+论文+开题报告),JSP,自动,系统,源代码,论文,开题,报告
内容简介:
系统详细配置方法1、 安装jdk1.6.02、 如果是B/S结构程序,请复制jakarta-tomcat-5.0.28这个文件夹下的 所有文件到你的E盘根目录下(不是固定的)3、 配置环境变量:(1) 我的电脑右键属性高级环境变量系统变量新建,变量名:JAVA_HOME ,注意为大写,变量值:你所安装JDK的根目录,如:C:Program FilesJavajdk1.5.0;(2) 我的电脑右键属性高级环境变量系统变量新建,变量名:CLASSPATH ,注意为大写,变量值:你所安装JDK的根目录下的lib文件夹,如:C:Program FilesJavajdk1.5.0libtools.jar;.注意后面以分号和一个点结尾;(3) 修改path变量:我的电脑右键属性高级环境变量系统变量选择path,点编辑,在变量名最后增加一个分号,增加你安装的JDK的根目录下的bin文件夹:C:Program FilesJavajdk1.5.0bin;(4) 如果是B/S结构程序,我的电脑右键属性高级环境变量系统变量新建,变量名:TOMCAT_HOME ,注意为大写,变量值:你所安装jakarta-tomcat-5.0.28的根目录,如:E:jakarta-tomcat-5.0.28;4、 复制sqlserver-driver文件夹下的所有文件到C:Program FilesJavajdk1.5.0jrelibext目录下,否则重装;5、 在命令行分别输入java 、javac,如无错误提示,安装完成;6、 如果是B/S结构程序,双击E:jakarta-tomcat-5.0.28binstartup.bat,如果出现黑色TOMCAT界面,安装成功,否则重装;7、 安装SQLServer2000数据库,一路默认,注意不要选择域用户,设置sa用户的密码为123;8、 安装SQLServer2000数据库SP3补丁,当提示已成功传递文件之后,找到安装的目录,双击setup.bat,看提示安装,基本默认;9、 附加数据库:打开开始程序Microsoft SQLServer服务管理器,启动数据库,开始程序Microsoft SQLServer企业管理器,在左侧树状菜单,选择数据库-右键-所有任务-附加数据库,点击浏览,选择你的文件夹下的.MDF文件,确定;10、 如果是C/S结构程序,安装你的程序,OK;11、 如果是B/S结构程序,复制你的网站文件到E:jakarta-tomcat-5.0.28webapps下,启动E:jakarta-tomcat-5.0.28binstartup.bat,在IE中输入http:/localhost:8080/你的网站名,OK;12、 如果需要配置数据源,开始-控制面板-管理工具-数据源ODBC-添加-SQLServer-完成,名称填写readme.txt文件里的数据源名,描述为空,服务器填写“.”就可以,下一步-下一步-更改默认的数据库为你的附加数据库-下一步-完成-测试数据源,如提示“测试成功”,一路确定,否则重装;如果以上都不行,那也有办法,把显示器从8楼扔下去,把主机用锤子砸碎开题报告选课排课系统设计与实现学号:200502331136姓名: 题目指导教师: 一、 题目摘要题目简要说明: 选排课系统功能的设计上,选排课系统可以分为登录、排课和选课3个子系统。登录子系统区分排课者(也即系统的管理者)、教师和学生这三者的不同身份,给出不同的权限,在页面中根据身份判断其相应具有的功能来使用这套系统。排课子系统主要供排课者使用,排课者可以在这里进行一切与排课有关的活动。选课系统主要供学生选课使用,在这里可以进行与选课有关的活动;教师可在教师反馈系统中对排课者提出反馈意见,供排课者在排课时可参考使用。二、 题目背景1、国内国外发展随着Internet的逐步发展,网络不仅仅是科研部门学术交流的平台,在其他的方面上也得到了很大的发展,尤其是在校园网的分支教务管理上,同时在教务管理的主要分之选课排课系统的应用上得到了较大的发展,国外针对此问题展开的研究较早。1963年C C Gotlieb 在他的文章The Construction of Class-Teacher Time-Tables中提出了课表编排的数学模型。这篇文章引起了人们对于选排课问题的重视。1976年S Even在其论文The Complexity of Timetable And Multi Commodity Flow Problem 中,第一次证明了课表问题是NP完全的。S Even的论证进一步地将人们对课表问题复杂性的认识提高到理论高度。而国内对排课问题的研究较晚。1984年,清华大学在清华大学学报上发表了林漳希和林尧瑞在该课题上的实验性研究成果人工智能技术在课表编排中的应用。如今国内软件市场上也有很多通用型的排课软件,例如“排课无忧” 、“排课高手”等等。这些通用软件往往无法满足学校的某些特殊要求。因此,针对学校的一些特殊要求,我设计并开发了基于校园网之子系统选排课系统。2、需求背景分析 网上选排课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等学校开始实行的是学生的自主选课模式,而传统的教学模式:学生按照学校安排好的课程上课已经不能适应新型的教学方式,如果按照传统方式宣科,一方面浪费了大量的人力和物力;另一方面浪费时间以及在人为的统计过程中不可避免出现的差错的情况。从教师的角度来说,由于教师提出代课申请完成课程发布的工作,因此通过网上进行课程发布能大幅度的减少教师的工作量,减少错误的发生几率。作为教师,只要通过自己的电脑来操作即可,不必于奔波在教务处和办公室之间。基于此等原因从而提出网上选排课系统的研究进行实施与探讨。3、主要技术JSP语言和Oracle数据库JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 在传统的网页HTML文件中加入Java程序片段(Script let)和JSP标记(tag),就构成了JSP网页(扩展名为.jsp)。Oracle数据库相对于其他数据库也有很多优点:(1) 无范式要求,可根据实际系统需求构造数据库。 (2) 采用标准的SQL结构化查询语言。(3) 具有丰富的开发工具,覆盖开发周期的各阶段。(4) 支持大型数据库,数据类型支持数字、字符、大至4GB的二进制数据,为数据库的面向存储提供数据支持。(5) 具有第四代语言的开发工具(SQL*formS、SQL*REPORTS、SQL*MENU等)。 (6) 具有字符界面和图形界面,易于开发。(7) 通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的 运行状态,调整数据缓冲区的大小。 (8) 分布优化查询功能。(9) 具有数据透明、网络透明,支持异种网络、异构数据库系统。并行 处理采用动态数据分片技术。(10) 支持客户机/服务器体系结构及混合的体系结构(集中式、分布式、 客户机/服务器)。(11) 实现了两阶段提交、多线索查询手段。正因于此,所以采用此数据库编程语言。 4、 题目所采用的主要技术服务器系统为Linux系统,前台采用JSP语言,后台采用sqlserver2000/Oracle数据库。5、 所应用技术的难点(1) 选课系统设计根据功能的不同可以将本系统划分为三个主模块,九个子模块:选课系统用户登录子系统学生选课子系统课程管理子系统学生教师查询课程信息查询课程管理员选课和退课课表查询选课确认进入排课系统一、用户登录子系统操作对象:学生、教师、管理员。用户登录子系统功能:用户登录时,首先要选择自己登录的类型,才能实现自己所需求的服务功能。即用不同身份登录系统会拥有不同的权限。用户登录操作流程:首先用户应先输入账号(学号、教师号、管理员号)和密码,再选择登录的类型,如果相应的账号和密码正确,则顺利进入系统,如果账号或密码不正确,则提示用户登录失败。二、学生选课子系统操作对象:学生。学生选课子系统功能:学生可以查询课表、查询课程详细信息(课程,教师)、选课和退课等操作。学生选课操作流程:学生登录验证成功后,进入学生选课子系统,点击相应的课程号就可以直接选课。如果输入课程号或教师号,可以进行可选课程查询,同时,自己的选课表会显示出来,在选课版面还可以进行密码修改,退出系统。除此之外,学生还可以进入课表查询、课程查询和选课查询版面进行相应操作。三、课程管理子系统操作对象:管理员。课程管理子系统功能:管理员可以进入排课系统,还可以进行课表查询、课程查询、选课查询,但不具有学生拥有的选课功能。管理员操作流程:管理员登录验证成功,进入系统,即可以进行相应的操作,如进入排课系统,可以进行排课、发布选课信息、对学生的选课信息进行确认。(2)排课系统编码与实现首先,排课时设置了排课优先级:优先级最高的是公共课,因为公共课一般合班上课的班级个数较多,最容易产生时间冲突,优先级次之的是每周平均课时最多的课程,同样,因为平均课时多,选择时间时进行排课冲突的机会就大,最后是总课时最多的课程。其次,产生的时间是在教师和所有上课的班级共同的空闲时间集合中产生,并且尽量保证时间选择上的均匀性,防止一周几次课集中于某一段时间。再次,对教师的选择,一方面考虑到教师的时间限制(由教师确定一学期中第几周,每周哪天哪节课没空),另一方面,对教师设置排课级别,随着排课时间的增多,级别值就增大,从而再次被选择排课的几率就减小(此时要求同一门课程有多个教师讲授)。最后,教室也设置了排课级别,同教师类似,这样便可以保证教室资源会得到合理而均匀有效地利用。流程图如下:排课子系统教师信息管理课程信息管理信息维护教室信息管理课程安排排课管理信息维护信息维护课程安排智能排课排课结果信息录入信息录入信息录入(3)设计及连接数据库数据库设计是本系统的起点,它的分析结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。它的基本任务是回答“系统必须做什么”的问题。至此,本阶段的主要任务有明确系统的开发目的,分析系统功能的具体要求,由此画出系统的数据库的E-R图。学生表课程时间教师表课程班级教室学号开始时间班级号教室号容纳人数人数结束时间课程号课程名姓名教师号姓名教室名课程号年级系别课程名教学周课时排课属于讲授安排课程对应关系:学生与班级: n:1 教师与课程: n:1班级与课程: n:m班级与课程时间:n:m课程与课程时间:n:m课程时间与教室:n:m 数据库连接对动态网站来说是最为重要的部分,在与后端数据库连接时可以采用ODBC或JDBC技术。虽然ODBC作为传统的连接数据库的手段是一种选择,但是ODBC有以下致命缺陷,从而使它无法胜任JSP的请求。三、题目任务1、 主要要求 开发一个校园网门户网站其中一个子系统之学生选课排课系统,由选课信息、教室信息根据排课原则生成。选课信息数据库中包含:学生姓名、课程名称、每周所需课时、所在班级、任课教师姓名 教室信息数据库包含:教室名称、教室容纳人数 要求生成的课程表需要包含:班级名称、课程名称、上课时间、教室名称、任课教师姓名 2、 时间要求3月12日至3月16日。提交开题报告。 3月16日至5月中旬,完成毕业设计。六、题目需求分析1、功能需求分析A、根据学生的所学专业、学校的教学大纲(开设的课程)、生成每个学生的选课信息;B、学生的选课信息要求符合课程体系的实际需求,即先开课没有选修完成时,不允许选修后序课程,选修课程在专业方向上要根据专业类别设置课程的连带关系;C、学生在累积有5门课,没拿到学分时,不允许选择新课。D、学生未缴纳学费超过两门次时,不允许选课;E、排课系统要根据教室情况、学生人数、每个学生选课的情况、教师的授课情况等条件自动排课、手动排课、半自动排课;可以设置不同的排课优先级。2、 生成结果标准有良好的交互界面1) 新用户可以成功注册(以学号注册)2) 用户可以成功登陆3) 用户可以成功进行相关操作(选课操作)4) 管理员可以成功登陆管理员界面(及相关操作)3、 所需开发工具JSP语言(掌握程度一般)Eclipse,JBuild (熟练掌握) Oracle数据库SQL语言(一般了解)Linux系统web服务器(初步了解)4、 需要的主要测试条目(1)用户登录界面(题目:学生选课排课系统) (2)学生登录功能 (3)管理员登录功能 (4)学生选课功能 (5)管理员对学生选课信息进行修改与删除功能 (6)管理员上传选课信息 (7)根据选课信息进行排课 七、题目计划安排1、 开发进度,以周为单位进行安排。(只需安排系统开发阶段的内容,论文写作不算在内)开发时间开发内容完成情况第一周(3.123.18)开题报告第二周(3.193.25)需求分析、概要设计、数据库设计第三周(3.264.1)总体设计开始第四周(4.24.8)(选课系统实现阶段)用户登录模块第五周(4.94.15)(选课系统实现阶段)学生选课子系统第六周(4.164.22)(选课系统实现阶段)课程管理子系统第七周(4.234.29)(排课系统实现阶段) 教师管理子系统第八周(4.305.6)(排课系统实现阶段)教室管理子系统第九周(5.75.13)(排课系统实现阶段)课程安排子系统第十周(5.145.20)(排课系统实现阶段)排课管理子系统第十一周(5.215.27)测试第十二周(5.286.3)论文2、 测试计划(测试内容条目,时间,测试结果)测试条目时间测试结果用户登录模块学生选课子系统课程管理子系统教师管理子系统教室管理子系统课程安排子系统排课管理子系统八、参考文献1、主要的参考书籍和资料 JSP动态网站开发JAVA面向对象编程tomcat与java Web开发技术详解数据库原理及Oracle应用2、主要参考的网站和网络资料 清华大学网() 北大大学网() 北京航空航天大学网() 辽宁大学网()辽宁广播电视大学开放教育试点软件开发与应用专业(专科)毕业设计报告设计题目 排课管理系统 电大分校: 学生姓名: 学 号: 指导教师: 完成日期: 目 录引 言3第一章 系统概述411排课管理系统概述412排课管理系统的目的和意义4第二章 系统分析521 编程环境选择522设计大纲7第三章 设计内容931实现功能1032功能与模块的设计1033数据库设计1034数据表设计11第四章 系统流程图设计与分析1441登陆系统流程图1442主界面中课表生成部分流程图14421班级管理流程图14422班级课程处理流程图15423课表生成部分流程图16424报表输出功能1743其它模块设计说明18第五章 设计进程19第六章 结论和总结20致谢22参考文献:23附件:程序清单引 言计算机已经成为我们学习和工作的得力助手:今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以节省许多资源;第三,计算机可以大大的提高人们的工作效率;第四,计算机可以使敏感文档更加安全,等等。 在中小学中用计算机管理排课的意义现在我国的中小学校中排课的管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。我作为一个计算机应用的大专生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过科学技术是第一生产力,我希望能用我三年的所学编制出一个实用的程序来帮助中小学进行更有效的课程管理。第一章 系统概述11 排课管理系统概述排课管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以排课管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件排课,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对排课信息进行管理,具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高排课管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。12排课管理系统的目的和意义终上所述,开发这样一套排课管理软件成为很有必要的事情。我们所开发的这排课管理软件归纳起来,好处大约有以下几点:1 可以存储历届的排课,安全、高效;2 只需一到二名排课录入员即可操作系统,节省大量人力;3 可以按照录入人员的输入来自动生成课程表,并尽量减少冲突等情况发生。 排课系统的设计分析根据实际情况,我们使用原型法(Rapid Prototyping)即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。第二章 系统分析2.1 编程环境选择 编程环境的选择微软公司的Jsp是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。Jsp提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统VB是一个相对较好的选择。 关系型数据库的实现Sqlserver2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Sqlserver 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Sqlserver 允许创建自定义报表用于打印或输出数据库中的信息。Sqlserver也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Sqlserver 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Sqlserver 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。 二者的结合(DBA)微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及Jsp 来访问数据库并对其进行各种操作。Jsp、Sqlserver以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。当今的微软对数据库中的ADO比较注视,并在.net上使用了ADO.net技术,鉴于ADO在很多程序里的广泛应用,使用ADO来连接数据库将是最为适用的,并且在定义了ADO的连接模块后,对于将来的升级也会很方便,只要修改一下连接源,就可以轻松的更换后台。在使用Jsp语言进行编程时还有有如下的优点:Jsp应用程序不同于其他语言开发的单一性程序。使用Jsp编程时,必须首先确定应用程序如何与用户交互,如鼠标单击,用户必须编写代码控制这些事件的响应方法。使用Jsp开发数据库应用程序的一般步骤如下所示:(1) 建立数据库(2) 建立用户界面(3) 编写代码(4) 调试运行(5) 编译应用程序(6) 发布应用程序界面设计(1) 控件的位置(2) 界面元素的一致性(3) 保持界面的简明(4) 使用颜色和图像:增加视觉的感染力(5) 图像和图标:增加应用程序的视觉上的趣味(6) 选取字体Jsp应用程序的结构: 由于Jsp应用程序是基于对象的,所以应用程序的代码结构就是该程序在屏幕上物理表示的模型。根据定义,对象包含数据和代码。在屏幕上看到的窗体代表属性,这些属性定义了窗体的外观和内在特性。本设计主要是运用ADO来连接和操作数据库。附: ADO技术简介ADO是Microsoft目前主要的数据存取技术,从1997年Microsoft推出ADO的第一个版本之后, ADO的整体架构并没有太大的改变。不过在每一个新的ADO版本之中,Microsoft不断地改善ADO的执行效率,提供更多的功能,持续增加ADO的稳定性,并且让ADO能够存取更多种类的数据源。ADO是Microsoft提出的各种数据存取技术的演化结果,因为随着数据日益复杂,数据存取技术也必须不断地进步以适应应用系统的需求。目前,虽然ADO是Windows平台存取数据的标准技术,不过ADO也将会继续演变。要了解ADO为什么会成为目前的标准,可以从Windows平台数据存取技术的进化而得知。1. ODBC1992年Microsoft和Sybase、Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库。随后ODBC便获得了许多数据库厂商和Third-Party的支持而逐渐成为标准的数据存取技术。ODBC以当时的业界标准规范X/Open Call-Level Interface(CLI)和ISO / IEC9075-3 Call-Level Interface(SQL/CLI)为涵盖的范围,因而支持了广阔的数据库。虽然ODBC在初期的版本中执行效率不佳,而且功能有限,因此也为人们所贬低。但是,随着Microsoft不断地改善ODBC,使ODBC的执行效率不断增加,ODBC驱动程序的功能也日渐齐全。到目前,ODBC已经是一个稳定并且执行效率良好的数据存取引擎。不过ODBC仅支持关系数据库,以及传统的数据库数据类型,并且只以C / C + +语言API形式提供服务,因而无法符合日渐复杂的数据存取应用,也无法让脚本语言使用。因此Microsoft除了ODBC之外,也推出了其他的数据存取技术以满足程序员不同的需要。2. DAO1993年Microsoft为了让程序员能够存取Sqlserver数据库,使用OLE Automation技术封装了Jet Engine。这些使用Jet Engine存取Sqlserver数据库的OLE Automation Object便称为Data Sqlserver Object(DAO)。DAO能够存取x Base的数据库以及Excel文件,并且能够结合ODBC存取关系数据库。但是DAO毕竟主要的设计目的是存取Sqlserver数据库,因此DAO在存取Sqlserver数据库时非常有效率,但是在存取其他的数据源时却表现得不怎么好。目前DAO已经慢慢接近维护的状态。3. RDO由于DAO在结合ODBC存取关系数据库时表现得并不好,因此在1995年Microsoft同样以OLE Automation技术直接封装ODBC API,让程序员能够存取关系数据库。这种数据存取技术便称为Remote Data Object(RDO)。Microsoft之所以推出RDO,是因为ODBC API是非常复杂的API,许多程序员无法直接使用ODBC API来开发应用程序,因此Microsoft以简化的RDO对象让程序员能够较为简单存取数据。此外,通过RDO,VB和脚本语言也能够存取各种关系数据库。不过目前RDO也已经逐渐地被放弃了。4. OLE-DB随着数据源日益复杂化,现今的应用程序很可能需要从不同的数据源取得数据,加以处理,再把处理过的数据输出到另外一个数据源中。更麻烦的是这些数据源可能不是传统的关系数据库,而可能是Excel文件,Email或Internet/Intranet上的电子签名信息。Microsoft为了让应用程序能够以统一的方式存取各种不同的数据源,在1997年提出了Universal Data Sqlserver(UDA)架构。UDA以COM技术为核心,协助程序员存取企业中各类不同的数据源。UDA以OLE-DB (属于操作系统层次的软件)作为技术的骨架。OLE-DB定义了统一的COM接口作为存取各类异质数据源的标准,并且封装在一组COM对象之中。藉由OLE-DB,程序员就可以使用一致的方式来存取各种数据。5. ADOADO(ActiveX Data Object)是微软新近推出的新一代数据访问规范,其使用简便功能强大,在Delphi 中其地位等同于一个和BDE并列的数据库引擎。ADO是MDAC的应用程序设计接口,从它的字面意思上可以看出,ADO和Active X技术密不可分,而Active X技术又和OLE,COM(组件对象模型,也由微软提出,旨在实现软件组件化)等技术有深厚的历史渊源。OLE DB 则是系统级的接口,定义了一套从关系数据库及文件系统访问数据的COM接口。2.2设计大纲 经过慎重考虑,并尽量使排课的速度加快,因此对各位教师和各班级都建立一个占用表,首先计算当前要排课程的老师的已排课程占用情况,将其与排课班级的占用表进行对比,获取有用空间,即得到的空间都会适合,这样使用随机推举的方式来自动生成一个新位置,达到排课效果,并且不会造成冲突等情况的发生。排课作为系统的主要重点,在编写中就要尽量避免各种各样的冲突和错误发生,因此也需要经过投入长时间的测试与使用才能使程序的功能达到最好,速度最快。 在课程表输出方面,将采用目前最常用的报表形式来进行输出,并且同时使用VB中操作EXECL的方法将课程表输出到EXECL自制的课程表模板文件中,并且同时可以实现打印,这样用户如果在认为报表输出的格式并不能让您满意的话,就可以根据自己的需要来修改EXECL的模板,达到课程表的完美输出。第三章 设计内容3.1实现功能1 掌握学校所有的课程和教师的信息。包括每门课程的时间、班级以及任课老师的姓名等。 2 针对不同的人员授予不同的权限。提供灵活的浏览、查询功能。可以查看某个系、某个班级所有课程的信息。3 可以对一个或多个班级进入课程管理与排课表管理,可以不限次的生成该班级课程表。 4 可以对课程进行变动管理。既可以手工排课,又可以实现自动排序功能。 5 帮助系统维护可以实现:操作日志、重新登录、打印设置(包括统计各种报表及打印等)、退出等操作。 6 提供一种或多种课程表输出功能,并使用活动的模板输出功能,输出样式可以由用户自定义。 7 实现功能全面化,由于每个学校或班级的每天课程数目或时间都不太一样,实现智能计算总课程数目和管理对应的时间段,并且根据每门课程的独立分布式来进行排列(例如:大学语文自动排列的分布方式可以是周一至周六,那么系统就会自动将其平均分布在周一至周六这些天里) 8用户管理:设置两个级别用户:管理员和普通用户,管理员有权限操作系统中的所有数据,普通用户只能以执行查询,输出之类的功能,无法对系统进行实质性的操作,用户使用本系统之前必须先通过身份认证(用户级别、用户名和密码,密码输入有次数限制,连续三次输入错误密码则锁定该用户)3.2功能与模块的设计 3.2.1 设计思想 本系统采用各班级独立划分管理,所有教师均可为任何班级服务,各班级根据每天课程数目来进行自动排序,同时各教师允许教学多门课程,因此为了每名教师配置了时间占用表,只要与班级对应的时间空间表未被占用,都可以参与排课,并根据用户定义的要求排出课程。 数据管理类:由于班级,时间,教师,课程等信息都需要一个活动的管理过程,因为在节省资源的情况下,将各数据所需要的代码合并在一起进行编写和使用。 系统启动画面 系统认证排课系统主画面3.2.2 各模块设计与分析 此处中各模块的设计与分析在以下各模块数据流图与程序中同步讲解。3.2.3 系统ER图 系统E -R图说明: 本系统是一个排课管理系统,主要是根据班级为单位,利用班级与课程来进行排课。 班级与课程是一对多的关系,班级不能重复,但是课程可以随意出现任何班级。 班级与班级课程信息之间也是一对多的关系,一个班级,可以有很多不同的课程。 班级与临时生成课表是一对多的关系,一个班级,只能有一个课程表,而排列的方式都同样由班级获得。 其余的数据库建立都是在让系统方便使用的基础上建立的,还有一个无需用户手动添加数据的,做为内部参数来使用的表,这里就不用标出的了。 3.2.4 数据字典数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实完善的。明确地需求收集和分析作为数据库设计的第一阶段是十分重要的。这一阶段收集到的基础数据(用数据字典来表达)和一组数据流程图(Data Flow Diagram,简称DFD)是下一步进行概念设计的基础。以下是本系统的数据结构,因实现使用方便的特点,数据库中的各字段列表直接用中文来表示,所以数据字典在以下数据库设计中已经没有什么太大的必要。详见数据库的设计:3.3数据库设计 数据库的概念数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(relational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,像记录、域等。新建一个数据库创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。创建一个数据库的大体思路如下:1 标识需要的数据;2 收集被标识的字段到表中;3 标识主关键字字段;4 绘制一个简单的数据图表;5 规范数据;6 标识指定字段的信息;7 创建物理表。 3.2修改已建的数据库数据库的修改分为:添加、编辑和删除记录。这三种操作均可由Jsp 创建的程序来完成,下面的章节将详细描述实现的具体方法。 实现数据库之间的联系数据库之间的关系指明两个库之间共享一个共同的关键字值。一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。一个更高级的连接形式称为自连接。这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中由重复数据的组合字段。数据库中有三种不同类型的关键字:主关键字、组合关键字和外关键字。在表中使用的关键字类型用于描述数据库表示什么以及在数据库中如何与其它的库建立关系。在众多的数据库中,Microsoft的Sqlserver是操作最简单,使用最为广泛的一种数据库软件,在单机上运行有着方便、实用、操作员要求低等特点。在这里,我选择了使用Sqlserver数据库管理系统,来开发一个小型的销售管理系统。在系统的数据库设计中,应遵守以下的原则:数据结构的合理性。即数据文件的合理组织,数据元素的合理归类和划分,以及数据项的合理描述。数据存储的安全性。提高安全性的最为有效的措施是增加数据的冗余,而数据的大量冗余往往为维护数据的一致性带来了困难。对此,根据实际需要进行合理取舍,在尽量降低冗余的前提下,确保数据的安全性和可靠性。维护和管理方便。存储结构的设计,首先应保证对数据进行管理和维护上的方便,它是提高系统运行效率的基础。3.4数据表设计在使用Sqlserver创建“排课管理系统”数据库系统中需要建立的数据表有:1 登陆字段数据类型字段大小必填字段索引允许为空用户名文本50是无否密码文本50否有(无重复)否权限文本50是无否2 课程名字 段数据类型字段大小必填字段索引允许为空课程名文本4否有(无重复)是教师姓名文本50是无否 3 课程信息表字 段数据类型字段大小必填字段索引允许为空课程名文本50否有(无重复)否课节数数字长整型是无是每周课数数字长整型是无否需要周数数字长整型是有(有重复)否任课老师文本50否无否两节课累排文本50否无否课程分布文本50否无否所属班级文本50否无否4 临时生成表 字段数据类型字段大小必填字段索引允许为空时间段文本50是无是星期一文本50否无是星期二文本50否无是星期三文本50否无是星期四文本50否无是星期五文本50否无是星期六文本50否无是星期日文本50否无是所属班级文本50否无是自动编号自动编号是无否5 课程占用表字段数据类型字段大小必填字段索引允许为空班级文本50是无否占用文本50否有(无重复)否6 系统日志字段数据类型字段大小必填字段索引允许为空用户名文本50是无否时间文本50否无否操作记录文本255否无否7 系统设定字段数据类型字段大小必填字段索引允许为空每天课数数字长整型是无否8 占用字段数据类型字段大小必填字段索引允许为空教师姓名文本50是无否占用文本50否无否第四章 系统流程图设计与分析4.1登陆系统流程图 设计说明:进入主界面后,等待操作用户输入用户名和密码,在输入之后按确定进入,验证用户名和密码,实现流程: (1) 检测数据库中有无管理员帐号,如果有,则等待用户输入用户名和密码,否则按程序本身自动执行插入命令,新建一个管理员用户,并等待用户输入. (2) 验证用户名和密码是否正确,错误次数不能超过三次,超过三次则退出系统登陆界面(3) 当验证通过后,检测该登陆用户的管理权限,并设置变量传值给主窗体.4.2 主界面中课表生成部分流程图 4.2.1 班级管理流程图 模块设计说明:班级的操作部分是排课程序正常执行的重要部分,班级的添加不允许有同名的班级出现,而修改也不能做到修改班级名,班级名称将作为不可修改的数据部分,而删除部分,在删除之前必须保证该班级的课表是否已经生成,如果是,则需要注销课程表,这样做是让该班级生成的课表占用教师空间的部分全部返回,这样不会使教师的空间被反复占用,而最终导致错误发生。4.2.2 班级课程处理流程图 模块设计说明:课程数据的添加,修改或删除都会影响到已生成课程表的返回,因为在操作之前必要保证课程表属于未生成状态,如果当前为生成状态,则需要注销课程表,这样才可以继续操作。注:已生成课程表的返回:由于课程表排列好后,对应的课程后教师的排课占用表都会有标记标明,如果这时修改了某此数据后,这教师的占用表并没有恢复到未生成状态,这样就会导致不可预知的错误发生。4.2.3 课表生成部分流程图模块设计说明:此处将执行的数据分成很多小部分来执行,这样做可以在测试中便如发现问题,因为排课系统的要求非常高,所以在程序实现方面是以由简到繁的过程。(1)排课中要求的每周课程数相加不能超出定义的课表范围,否则也将会出现死循环。(2)列出对应课程教师的未被占用的排课列表和班级的课程占用表。(3)穷举法列出以上两者之间的共通点,可用点。(4)最后通过循环随机选择来实现课程的定位与排列。(5)课程定位中不允许每天有相同的课程重复,并按规定来执行按什么样的格式来排列,例如两节连排,也就是说可以把该课程在同一天排在一起,可以实现两节课连上,这是大学课表里最常用的一个功能。4.2.4 报表输出功能 模块设计说明:此处采用了两种输出方式,第一种是普通的报表方式输出,可以实现一般的打印预览等功能,第二种则是采用模板功能,用户可以自由修改模板,前提是不可以更改数据位,其它的部分无论如何修改都没有关系。4.3其它模块设计说明(用户管理模块,时间段模块,课程管理模块) 此处几个模块是经过资源优化将其与班级管理整合在一起的,此处工作流程基本上与班级管理的流程相同。4.4 调课功能实现及设计说明 由系统自动排课生成的并不一定能完全达到用户所想需要的效果,虽然在程序中解决了系统冲突的出现,但是因为某些原因而出现临时的原因都需要进行调课,因此排课系统中除了自动生成课表还必须有很灵活的调课功能才能让系统更完整,也便如使用.此处调课是事先获取系统有用资源空间,并在图表中进行背景色变色显示,提示用户该门课程可以调动至变色显示的地方,主要是通过班级的课程占用与该教师的排课占用情况进行对比,寻找有利和适用的位置,并等待用户进行调课操作.执行调课:在进行以上操作后,计算机自动等待用户选择系统列出的调课点,在选择某调课点后,系统自动清除数据库的中该课程的教师与当前班级该处资源占用情况,并同时清除图表中的资料,将其重新放置到新位置,并修改新地点的资源占用情况,最后将图表的可调位置背景色还原回正常状态.第五章 设计进程3月13日:获得毕业设计课题与论文规范3月14日:构思后台数据库的内容,前台操作界面与实现大体的功能3月16日:创建数据库后台,建立连接数据库的模块,创建主界面窗体,并初步使用数据处理3月17日:构思资源优化,对排课必须的功能进行归纳并构思采用排课方式3月21日:构思采用教师与班级之间的资源占用表来进行穷举法排列,并通过随机生成取得理想排课位置。3月24日:完成生成课表部分代码,并进行反复测试,寻找系统错误部分,并加以修改。3月26日:开始加入班级课程添加,删除,修改等代码,并加以调试3月28日:为防止系统崩溃,加入系统还原代码,注销课程表代码3月29日:开始编写班级管理与用户管理等部分的代码,并加以整合4月1日: 设计报表的输出功能,并采用了EXECL电子表格作为模板的输出功能4月3日: 加入防错代码,并进行大范围测试,减少程序出错机率4月5日: 后期进行美化效果处理4月8日: 引用论文规范的模板,着手论文的完成4月14日:完成论文第六章 结论和总结确定了本系统的实用价值后,选用了目前最常用也最简便的sqlserver数据库做为后台,鉴于ADO在很多程序里的广泛应用,使用ADO来连接数据库将是最为适用的,并且在定义了ADO的连接模块后,对于将来的升级也会很方便,只要修改一下连接源,就可以轻松的更换后台,sqlserver适用于单机版,当想转换为网络版的SQL数据库时,就很容易做到为了减少系统的数据资源,选用了目前最方便的将数据交给后台处理的方法,即使用SQL的语句将数据库交给SQLSERVER后台,由后台来处理,这样系统的执行会加快,也使用程序本身变得简单1. 本程序使用了新型控件flexcell,此控件的双色表格与单元格的特殊赋值功能不但能带给用户最好的视觉感受,同时在操作时大大减少了手动输入操作,因此也为非计算机人员的可操作性带来很大的方便。2. 采用独特的资料占用排除方法来生成所需要的课程表,使课程表生成速度加快。3. 支持很方便的课程,用户等模块的添加,修改,删除等过程。4. 使用定位查询,只要选择对应的班级,就可以找到对应的内容,班级就是一个整体,通过班级来寻找所想要的数据会实现的更为简便。5. 特殊的课程表输出功能,大大减少了课程表输出时的格式局限性,只要修改EXECL中的模板,就可以打印出你想要的效果来。程序的不足:(1)对排课来说,各个学校都有着不太相同的排列方法,有每天的课节数,允许课程连排数,时间段等等,而这些方法转换为计算机语言时,往往会因为这样那样的限制而造成死循环或者程序速度缓慢,因为排课系统要适应大部分学校使用,所以这里提供的一些要求是不能够满足大部分人的。(2)由于排课实现功能复杂,程序中也许有不可预知的错误未测试出来,所以这也需要长时间的进行测试才能发现并修复问题。(3)受开发条件和开发时间的限制,本系统只利用了本地数据库Sqlserver,它同应用程序处于同一系统中,能存储的数据量也有一定限制,并没有发挥出JSP其数据库方面的优势。致 谢在本次毕业设计中,我从指导老师李志强老师身上学到了很多东西。李老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。 另外,在系统开发过程中田立鹏老师也给于我很大的帮助,帮助解决了不少的难点,特别是在SQL查询方面给我解决了大部分的难点,使得系统能及时开发完成,还有同组的同学同样给与我不少帮助,这里一并表示感谢。 参考文献1 Jsp 使用指南 作者:Bob Reselman , Richard Peasley , Wayne Pruchniak.出版社:电子工业出版社2 中文版Microsoft Office 2000 自学通作者:Ned Snell出版社:机械工业出版社3 Jsp 中文版控件大全作者:Microsoft出版社;电子工业出版社4 中文Sqlserver 2000 24学时教程 作者:Craig Eddy ,Timothy Buchanan出版社:机械工业出版社附录:1. 连接数据库Public cnn As New ADODB.ConnectionPublic kc1 As New ADODB.Recordset Public kc2 As New ADODB.Recordset Public kc3 As New ADODB.Recordset -以上代码用以定义数据源与记录集Sub Main()tkOpenSqlserverDB App.Path & base.mdb 通过过程连接数据库If kc1.State = adStateOpen Then 检测表的状态,是否打开或关闭kc1.CloseEnd Ifkc1.Open select * from , cnn, adOpenStatic, adLockReadOnly, adCmdTextIf kc1.RecordCount = 0 ThenSet kc1 = cnn.Execute(insert into values(admin,admin,)End If-以上代码用以检测表内是否有初始登陆帐号,如果没有,将执行添加用户语句nknumber = 6Form1.ShowEnd SubPrivate Sub tkOpenSqlserverDB( _ 此处为连接数据库过程 tkFileName As String, _ Optional tkUserID As String, _ Optional tkPassword As String _ ) On Error GoTo tkFinish cnn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source= & tkFileName & ; & _ Mode=Share Deny None; & _ Extended Properties=; & _ Jet OLEDB:System database=; & _ Jet OLEDB:Registry Path=; & _ Jet OLEDB:Database Password=; & _ Jet OLEDB:Engine Type=5; & _ Jet OLEDB:Database Locking Mode=1; & _ Jet OLEDB:Global Partial Bulk Ops=2; & _ Jet OLEDB:Global Bulk Transactions=1; & _ Jet OLEDB:New Database Password=; & _ Jet OLEDB:Create System Database=False; & _ Jet OLEDB:Encrypt Database=False; & _ Jet OLEDB:Dont Copy Locale on Compact=False; & _ Jet OLEDB:Compact Without Replica Repair=False; & _ Jet OLEDB:SFP=False; & _ tkUserID, _ tkPassword Exit SubtkFinish: MsgBox Err.Description End End Sub2. 登陆界面与代码Private Declare Sub ReleaseCapture Lib user32 () APIPrivate Declare Function SendMessage Lib user32 Alias SendMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub Form_Load()Me.Picture = LoadPicture(App.Path & imageslogin.jpg)Text1.BackColor = RGB(83, 82, 132)Text2.BackColor = RGB(83, 82, 132)End SubPrivate Sub Image1_Click()On Error GoTo finishSet kc1 = cnn.Execute(select * from where = & Text1.Text & and = & Text2.Text & )If kc1.EOF = True Then If pnum 2 Then pnum = pnum + 1 MsgBox !, vbInformation, & pnum Text1.Text = Text2.Text = Text1.SetFocus Exit Sub Else MsgBox , vbInformation, End End IfElse If kc1.Fields(2) = Then admin = True Else admin = False End If Unload Me formmain.ShowEnd IfExit Subfinish: MsgBox Err.DescriptionEnd SubPrivate Sub Image2_Click()EndEnd SubPrivate Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ReleaseCapture SendMessage Me.hwnd, &HA1, 2, 0&End SubPrivate Sub Text2_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenCall Image1_ClickEnd IfEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenCall Image1_ClickEnd IfEnd Sub3. 排课系统主界面Dim Classprint As New OpenRs Dim xlApp As New Excel.ApplicationDim sendsql As StringPrivate Sub gridcs() gridOn Error GoTo finishSelect Case Grid1.Cell(hang, 7).Text Case Grid2.Cols = 5 * nknumber + 1 Grid3.Cols = 5 * nknumber + 1 Case Grid2.Cols = 6 * nknumber + 1 Grid3.Cols = 6 * nknumber + 1 Case Grid2.Cols = 7 * nknumber + 1 Grid3.Cols = 7 * nknumber + 1End SelectGrid2.Range(1, 1, Grid2.Rows - 1, Grid2.Cols - 1).ClearTextGrid3.Range(1, 1, Grid3.Rows - 1, Grid3.Cols - 1).ClearTextSet kc2 = cnn.Execute(select from where = & Grid1.Cell(hang, 5).Text & )For i = 1 To Grid2.Cols - 1Grid2.Cell(1, i).Text = Mid(kc2.Fields(0), i, 1)NextGrid3.Range(1, 1, Grid3.Rows - 1, Grid3.Cols - 1).Alignment = cellCenterCenterSet kc2 = cnn.Execute(select from where = & XPCombo1.Text & )For i = 1 To Grid3.Cols - 1Grid3.Cell(1, i).Text = Mid(kc2.Fields(0), i, 1)NextExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub grid4hq() On Error GoTo finishGrid4.Rows = 1Dim m As IntegerFor i = 1 To Grid2.Cols - 1 Step n If Grid2.Cell(1, i).Text = 0 Then If Grid3.Cell(1, i).Text = 0 Then Grid4.Rows = Grid4.Rows + 1 Grid4.Cell(Grid4.Rows - 1, 1).Text = i End If End If Next Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub asPopup1_Click(Cancel As Boolean)kctable = Form6.Caption = Form6.Show 1End SubPrivate Sub asPopup10_Click(Cancel As Boolean)kctable = Form6.Caption = Form6.Show 1End SubPrivate Sub asPopup2_Click(Cancel As Boolean)kctable = Form5.Caption = Form5.Show 1End SubPrivate Sub asPopup3_Click(Cancel As Boolean)EndEnd SubPrivate Sub asPopup4_Click(Cancel As Boolean)kctable = Form5.Caption = Form5.Show 1End SubPrivate Sub asPopup5_Click(Cancel As Boolean)Dim vyes As Stringvyes = MsgBox(, vbQuestion + vbYesNo, )If vyes = vbYes ThenSet kc2 = cnn.Execute(update set =000000000000000000000000000000000000000000)Set kc2 = cnn.Execute(update set =000000000000000000000000000000000000000000)End IfEnd SubPrivate Sub delbutton_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End Ifword_validateIf vde = False Then MsgBox , vbInformation, Exit SubEnd IfIf kcdel = False ThenMsgBox !, vbInformation, Exit SubEnd IfIf hang = 0 ThenExit SubEnd IfDim delok As StringIf Grid1.Cell(hang, 1).Text = ThenExit SubEnd Ifdelok = MsgBox( & Grid1.Cell(hang, 1).Text & , vbQuestion + vbOKCancel, :)If delok = vbOK Thensql = delete from where & kc1.Fields(0).Name & = & Grid1.Cell(hang, 1).Text & and = & XPCombo1.Text & Set kc2 = cnn.Execute(sql)MsgBox !, , Call XPButton3_ClickEnd IfExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub editbutton_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End Ifword_validateIf vde = False Then MsgBox , vbInformation, Exit SubEnd IfIf kcedit = False ThenMsgBox !, vbInformation, Exit SubEnd IfDim delok As Stringdelok = MsgBox(, vbQuestion + vbOKCancel, )If delok = vbOK Thenhang = 1 Do While hang = Grid1.Rows - 1 If Grid1.Cell(hang, 1).Text = Then MsgBox !, , Exit Sub End If If Grid1.Cell(hang, 3).Text 2 And Grid1.Cell(hang, 6).Text = 1 Then MsgBox & hang & !, vbInformation, Exit Sub End If sql = update set For j = 1 To Grid1.Cols - 2 sql = sql & kc1.Fields(j - 1).Name & = & Grid1.Cell(hang, j).Text & , Next sql = sql & kc1.Fields(j - 1).Name & = & Grid1.Cell(hang, j).Text & where & kc1.Fields(0).Name & = & Grid1.Cell(hang, 1).Text & and = & XPCombo1.Text & Set kc2 = cnn.Execute(sql) kc2, hang = hang + 1 Loop MsgBox !, , Call XPButton3_Click End If Exit Subfinish:MsgBox Err.DescriptionEnd SubFunction word_validate() Set kc2 = cnn.Execute(select count() from where = & XPCombo1.Text & )If kc2.Fields(0) = 0 Then vde = True Else vde = False End IfEnd FunctionPrivate Sub finddkd_Click()On Error GoTo finishIf admin = False ThenMsgBox , vbInformation, Exit SubEnd IfIf XPCombo1.Text = Or Grid5.Cell(hang1, ne1).Text = Or hang1 = 0 Or ne1 = 0 ThenMsgBox !, vbInformation, Exit SubEnd IfSet kc1 = cnn.Execute(select , from where = & Grid5.Cell(hang1, ne1).Text & and = & XPCombo1.Text & )Select Case kc1.Fields(2) Case Grid2.Cols = 5 * nknumber + 1 Grid3.Cols = 5 * nknumber + 1 Case Grid2.Cols = 6 * nknumber + 1 Grid3.Cols = 6 * nknumber + 1 Case Grid2.Cols = 7 * nknumber + 1 Grid3.Cols = 7 * nknumber + 1End SelectIf kc1.Fields(1) = 1 Thenn = 2Elsen = 1End IfGrid2.Range(1, 1, Grid2.Rows - 1, Grid2.Cols - 1).ClearTextGrid3.Range(1, 1, Grid3.Rows - 1, Grid3.Cols - 1).ClearTextSet kc2 = cnn.Execute(select from where = & kc1.Fields(0) & )For i = 1 To Grid2.Cols - 1Grid2.Cell(1, i).Text = Mid(kc2.Fields(0), i, 1)NextGrid3.Range(1, 1, Grid3.Rows - 1, Grid3.Cols - 1).Alignment = cellCenterCenterSet kc2 = cnn.Execute(select from where = & XPCombo1.Text & )For i = 1 To Grid3.Cols - 1Grid3.Cell(1, i).Text = Mid(kc2.Fields(0), i, 1)NextGrid4.Rows = 1Dim m As IntegerFor i = 1 To Grid2.Cols - 1 Step n If Grid2.Cell(1, i).Text = 0 Then If Grid3.Cell(1, i).Text = 0 Then Grid4.Rows = Grid4.Rows + 1 Grid4.Cell(Grid4.Rows - 1, 1).Text = i End If End If Next -Dim X, Y As Integerjehang = hang1jene = ne1For i = 1 To Grid4.Rows - 1 X = Round(Grid4.Cell(i, 1).Text / nknumber) If X Grid4.Cell(i, 1).Text / nknumber Then X = X + 1 End If Y = Grid4.Cell(i, 1).Text Mod nknumber For j = 1 To nknumber If Grid5.Cell(j, X).Text Grid5.Cell(hang1, ne1).Text Then If j = nknumber Then Grid5.Cell(Y, X).BackColor = RGB(255, 255, 255) End If Else If X = ne1 Then Grid5.Cell(Y, X).BackColor = RGB(255, 255, 255) End If Exit For End If Next Next Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub Form_Load()On Error GoTo finishGrid1.SetRegisterInformation CNwinndy, WvyY-nonvk-unty-Zbl_e-hms Me.Picture = LoadPicture(App.Path & imagesbgmain.jpg)Grid1.AllowUserResizing = True Grid1.DisplayFocusRect = False Grid1.ExtendLastCol = True Grid1.Appearance = Flat Grid1.FixedRowColStyle = Flat Grid1.ScrollBarStyle = Flat Grid1.DefaultFont.Name = Tahoma Grid1.DefaultFont.Size = 8 Grid1.BackColorFixed = RGB(148, 167, 178) Grid1.BackColorFixedSel = RGB(148, 167, 178) Grid1.BackColorBkg = RGB(148, 167, 178) Grid1.BackColorScrollBar = RGB(148, 167, 178) Grid1.BackColor1 = RGB(148, 167, 178) Grid1.BackColor2 = RGB(148, 167, 178) Grid1.Column(0).Width = 0 Grid1.Column(1).Width = 120 Grid1.Column(2).Width = 60 Grid1.Column(3).Width = 60 Grid1.Column(4).Width = 60 Grid1.Column(5).Width = 100 Grid1.Column(6).Width = 80 Grid1.Column(7).Width = 187 XPCombo1.Clear Set kc2 = cnn.Execute(select from ) Do While Not kc2.EOF XPCombo1.AddItem kc2.Fields(0) kc2.MoveNext Loop Grid1.Visible = False Grid1.Column(4).Locked = True - grid2pz grid3pz Grid4.RowHeight(0) = 0 Grid4.Column(0).Width = 0 Grid4.Column(1).Width = 20 -grid5Grid5.Visible = TrueFor i = 1 To 7Grid5.Column(i).Width = 80Grid5.RowHeight(0) = 18NextGrid5.Column(0).Width = 107For i = 1 To 6Grid5.RowHeight(i) = 18NextGrid5.Cell(0, 1).Text = Grid5.Cell(0, 2).Text = Grid5.Cell(0, 3).Text = Grid5.Cell(0, 4).Text = Grid5.Cell(0, 5).Text = Grid5.Cell(0, 6).Text = Grid5.Cell(0, 7).Text = Grid5.Range(0, 0, 0, 7).FontSize = 10 With Grid5.Range(0, 0, Grid5.Rows - 1, Grid5.Cols - 1) .Alignment = cellCenterCenter .BackColor = RGB(148, 167, 178) .ForeColor = RGB(255, 252, 0) .WrapText = True End WithGrid5.BackColorBkg = RGB(148, 167, 178) Set kc2 = cnn.Execute(select * from order by asc) i = 1 If kc2.EOF = True Then MsgBox 66, vbInformation, kctable = Form5.Show 1 End If Do While Not kc2.EOF Grid5.Cell(i, 0).Text = kc2.Fields(0) i = i + 1 kc2.MoveNext Loop XPPbr1.Visible = False If admin = False Then XPButton2.Enabled = False XPButton4.Enabled = False XPButton1.Enabled = False XPButton6.Enabled = False savebutton.Enabled = False editbutton.Enabled = False delbutton.Enabled = False asPopup5.Enabled = False asPopup10.Enabled = False asPopup4.Enabled = False asPopup2.Enabled = False asPopup1.Enabled = False End If Exit Subfinish:MsgBox Err.Description End SubPrivate Sub grid2pz()On Error GoTo finishGrid2.ReadOnly = TrueGrid2.Column(0).Width = 0Grid2.RowHeight(0) = 0Grid2.Cols = (7 * nknumber) + 1For i = 1 To Grid2.Cols - 1Grid2.Column(i).Width = 20NextGrid2.Range(1, 1, Grid2.Rows - 1, Grid2.Cols - 1).BackColor = RGB(90, 158, 214)Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub grid3pz()On Error GoTo finishGrid3.ReadOnly = TrueGrid3.Column(0).Width = 0Grid3.RowHeight(0) = 0Grid3.Cols = (7 * nknumber) + 1For i = 1 To Grid3.Cols - 1Grid3.Column(i).Width = 20NextGrid3.Range(1, 1, Grid3.Rows - 1, Grid3.Cols - 1).BackColor = RGB(90, 158, 214)Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub kcmge()On Error GoTo finish kctable = numberkc = 7 Set kc1 = cnn.Execute(select * from & kctable & where = & XPCombo1.Text & order by asc) For i = 1 To numberkc Grid1.Cell(0, i).Text = kc1.Fields(i - 1).Name Next i = 1 Grid1.Rows = 1 Do While Not kc1.EOF Grid1.Rows = Grid1.Rows + 1 For j = 1 To numberkc If Not kc1.Fields(j - 1) Is Nothing Then Grid1.Cell(i, j).Text = kc1.Fields(j - 1) Else Grid2.Cell(i, j).Text = End If Next kc1.MoveNext i = i + 1LoopExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub Grid1_CellChange(ByVal Row As Long, ByVal Col As Long)On Error GoTo finishIf kcsave = False Then savebutton.Enabled = FalseElse savebutton.Enabled = TrueEnd IfIf kcedit = False Then editbutton.Enabled = FalseElse editbutton.Enabled = TrueEnd IfIf kcdel = False Then delbutton.Enabled = FalseElse delbutton.Enabled = TrueEnd IfIf Grid1.Cell(Row, 2).Text And Grid1.Cell(Row, 3).Text And Row 0 ThenGrid1.Cell(Row, 4).Text = Int(Grid1.Cell(Row, 2).Text) / (Grid1.Cell(Row, 3).Text)End IfExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub Grid1_RowColChange(ByVal Row As Long, ByVal Col As Long)On Error GoTo finishhang = RowIf Grid1.Cell(Row, 1).Text ThenGrid1.ComboBox(5).ClearSet kc2 = cnn.Execute(SELECT DISTINCT FROM where = & Grid1.Cell(Row, 1).Text & )Do While Not kc2.EOFGrid1.ComboBox(5).AddItem kc2.Fields(0)kc2.MoveNextLoopEnd IfExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub Grid5_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)If dkyesno = True And Button = 2 ThenPopupMenu dkEnd IfEnd SubPrivate Sub Grid5_RowColChange(ByVal Row As Long, ByVal Col As Long)hang1 = Rowne1 = ColEnd SubPrivate Sub playwz_Click()If admin = False ThenMsgBox , vbInformation, Exit SubEnd IfDim Y As IntegerIf Grid5.Cell(hang1, ne1).BackColor RGB(255, 255, 255) ThenMsgBox Else Dim kcstr As String Dim str1, str2 As String kcstr = Grid5.Cell(jehang, jene).Text Select Case jene Case 1 str1 = Case 2 str1 = Case 3 str1 = Case 4 str1 = Case 5 str1 = Case 6 str1 = Case 7 str1 = End Select For i = 1 To nknumber If Grid5.Cell(i, jene).Text = kcstr Then Grid5.Cell(i, jene).Text = Y = jene * nknumber - nknumber + i Set kc2 = cnn.Execute(select from where = & kcstr & and = & XPCombo1.Text & ) Set kc3 = cnn.Execute(select from where = & kc2.Fields(0) & ) str2 = Mid(kc3.Fields(0), 1, Y - 1) & 0 & Mid(kc3.Fields(0), Y + 1) Set kc3 = cnn.Execute(update set = & str2 & where = & kc2.Fields(0) & ) Set kc3 = cnn.Execute(select from where = & XPCombo1.Text & ) str2 = Mid(kc3.Fields(0), 1, Y - 1) & 0 & Mid(kc3.Fields(0), Y + 1) Set kc3 = cnn.Execute(update set = & str2 & where = & XPCombo1.Text & ) Set kc3 = cnn.Execute(update set & str1 & = where = & XPCombo1.Text & and = & Grid5.Cell(i, 0).Text & ) End If Next Select Case ne1 Case 1 str1 = Case 2 str1 = Case 3 str1 = Case 4 str1 = Case 5 str1 = Case 6 str1 = Case 7 str1 = End Select Y = ne1 * nknumber - nknumber + hang1 Grid5.Cell(hang1, ne1).Text = kcstr Set kc2 = cnn.Execute(select from where = & kcstr & and = & XPCombo1.Text & ) Set kc3 = cnn.Execute(select from where = & kc2.Fields(0) & ) str2 = Mid(kc3.Fields(0), 1, Y - 1) & 1 & Mid(kc3.Fields(0), Y + 1) If n = 2 Then Grid5.Cell(hang1 + 1, ne1).Text = kcstr str2 = Mid(kc3.Fields(0), 1, Y - 1) & 11 & Mid(kc3.Fields(0), Y + 2) End If Set kc3 = cnn.Execute(update set = & str2 & where = & kc2.Fields(0) & ) Set kc3 = cnn.Execute(select from where = & XPCombo1.Text & ) str2 = Mid(kc3.Fields(0), 1, Y - 1) & 1 & Mid(kc3.Fields(0), Y + 1) If n = 2 Then str2 = Mid(kc3.Fields(0), 1, Y - 1) & 11 & Mid(kc3.Fields(0), Y + 2) End If Set kc3 = cnn.Execute(update set = & str2 & where = & XPCombo1.Text & ) Set kc3 = cnn.Execute(update set & str1 & = & kcstr & where = & XPCombo1.Text & and = & Grid5.Cell(hang1, 0).Text & ) Set kc3 = cnn.Execute(update set & str1 & = & kcstr & where = & XPCombo1.Text & and = & Grid5.Cell(hang1 + 1, 0).Text & )Grid5.Range(0, 0, Grid5.Rows - 1, Grid5.Cols - 1).BackColor = RGB(148, 167, 178)End IfEnd SubPrivate Sub savebutton_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End Ifword_validateIf vde = False Then MsgBox , vbInformation, Exit SubEnd IfIf kcsave = False ThenMsgBox , vbInformation, Exit SubEnd IfFor i = 1 To Grid1.Rows - 1 If Grid1.Cell(i, 1).Text Then Set kc1 = cnn.Execute(select from where = & Grid1.Cell(i, 1).Text & and = & XPCombo1.Text & ) If kc1.EOF = False Then MsgBox & i & , vbInformation, Grid1.Cell(i, 1).SetFocus Exit Sub End If End IfNextFor i = 1 To Grid1.Rows - 1 For n = 1 To Grid1.Cols - 1 Select Case n Case 1, 2, 3, 4, 5, 7 If Grid1.Cell(i, 1).Text Then If Grid1.Cell(i, n).Text = Then MsgBox & i & - & Grid1.Cell(0, n).Text & -!, vbInformation, Grid1.Cell(i, n).SetFocus Exit Sub End If If Grid1.Cell(i, 3).Text 2 And Grid1.Cell(i, 6).Text = 1 Then MsgBox & i & !, vbInformation, Exit Sub End If ElseIf i = 1 Then MsgBox , vbInformation, Exit Sub End If End Select Next If Grid1.Cell(i, 1).Text Then sql = insert into values( For j = 1 To Grid1.Cols - 1 sql = sql & Grid1.Cell(i, j).Text & , Next sql = sql & XPCombo1.Text & ) Set kc1 = cnn.Execute(sql) End IfNextMsgBox !, vbInformation, Call XPButton3_ClickExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub XPButton1_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End Ifword_validateIf vde = False Then MsgBox , vbInformation, Exit SubEnd IfGrid1.Visible = True kctable = numberkc = 7 Set kc1 = cnn.Execute(select * from & kctable) For i = 1 To numberkc Grid1.Cell(0, i).Text = kc1.Fields(i - 1).Name Next Grid1.Rows = 1Grid1.Rows = 8gridcenterGrid1.Cell(1, 1).SetFocusgriddisposekcsave = Truekcedit = Falsekcdel = FalseExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub gridcenter()If Grid1.Rows 1 ThenGrid1.Range(1, 1, Grid1.Rows - 1, Grid1.Cols - 1).Alignment = cellCenterCenterEnd IfEnd SubPrivate Sub griddispose()On Error GoTo finishGrid1.Column(1).CellType = cellComboBoxGrid1.Column(5).CellType = cellComboBoxGrid1.Column(6).CellType = cellCheckBoxGrid1.Column(7).CellType = cellComboBoxGrid1.ComboBox(1).ClearSet kc2 = cnn.Execute(SELECT DISTINCT FROM )Do While Not kc2.EOFGrid1.ComboBox(1).AddItem kc2.Fields(0)kc2.MoveNextLoopGrid1.ComboBox(7).ClearGrid1.ComboBox(7).AddItem Grid1.ComboBox(7).AddItem Grid1.ComboBox(7).AddItem Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub XPButton2_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End IfCall XPButton3_ClickXPPbr1.Visible = Truekbreturn Dim nnum As IntegerSet kc2 = cnn.Execute(select count() from where = & XPCombo1.Text & )If kc2.Fields(0) = 0 ThenMsgBox , vbInformation, XPPbr1.Visible = FalseExit SubEnd IfSet kc2 = cnn.Execute(select sum() from where = & XPCombo1.Text & )XPPbr1.Max = kc2.Fields(0)XPPbr1.Min = 1XPPbr1.Value = 0nnum = 30Set kc2 = cnn.Execute(select count() from where = & XPCombo1.Text & and =)nnum = nnum + kc2.Fields(0) * 2Set kc2 = cnn.Execute(select count() from where = & XPCombo1.Text & and =)nnum = nnum + kc2.Fields(0) * 4If kc2.Fields(0) nnum ThenMsgBox Exit SubEnd IfSet kc2 = cnn.Execute(delete from where = & XPCombo1.Text & )pkzx XPPbr1.Visible = FalseExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub pkzx() Second(Time)On Error GoTo finishDim weizi, X, Y, j1, j2 As IntegerGrid5.Range(1, 1, Grid5.Rows - 1, Grid5.Cols - 1).ClearTextFor hang = 1 To Grid1.Rows - 1 Select Case Grid1.Cell(hang, 6).Text Case 1 n = 2 Case 0 n = 1 End Select For i = 1 To Grid1.Cell(hang, 3).Text / n gridcsgrid4hq If Grid4.Rows = 1 Then Exit Sub End If weizi = Int(Grid4.Rows * Rnd() Do While weizi = 0 weizi = Int(Grid4.Rows * Rnd() Loop X = Round(Grid4.Cell(weizi, 1).Text / nknumber) If X 4 Then Grid5.Cell(Y, X).Text = Grid1.Cell(hang, 1).Text Grid2.Cell(1, Grid4.Cell(weizi, 1).Text).Text = 1 Grid3.Cell(1, Grid4.Cell(weizi, 1).Text).Text = 1 XPPbr1.Value = XPPbr1.Value + 1 Else Y = 5 If Grid5.Cell(Y, X).Text = Then Grid5.Cell(Y, X).Text = Grid1.Cell(hang, 1).Text weizi = nknumber * X - 1 Grid2.Cell(1, weizi).Text = 1 weizigrid2 Grid3.Cell(1, weizi).Text = 1 XPPbr1.Value = XPPbr1.Value + 1 Else i = i - 1 End If End If End Select Dim gsql1, gsql2 As String gsql1 = gsql2 = For j1 = 1 To nknumber * 7 If j1 Grid2.Cols - 1 Then gsql1 = gsql1 & 0 Else gsql1 = gsql1 & Grid2.Cell(1, j1).Text End If Next Set kc2 = cnn.Execute(update set = & gsql1 & where = & Grid1.Cell(hang, 5).Text & ) For j2 = 1 To nknumber * 7 If j2 Grid3.Cols - 1 Then gsql2 = gsql2 & 0 Else gsql2 = gsql2 & Grid3.Cell(1, j2).Text End If Next Set kc2 = cnn.Execute(update set = & gsql2 & where = & XPCombo1.Text & ) End If Next NextNextDim gsql3 As StringFor i = 1 To Grid5.Rows - 1 gsql3 = insert into (,) values( For j = 0 To Grid1.Cols - 1 gsql3 = gsql3 & Grid5.Cell(i, j).Text & , Next gsql3 = gsql3 & XPCombo1.Text & ) Set kc3 = cnn.Execute(gsql3)NextExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub XPButton3_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End IfGrid1.Visible = Truekcsave = Falsekcedit = Truekcdel = TruegriddisposekcmgegridcenterExit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub kbreturn()On Error GoTo finishCall XPButton8_ClickDim js, str1 As Integerjs = 0XPPbr1.Max = (Grid5.Rows - 1) * (Grid5.Cols - 1)XPPbr1.Min = 1For i = 1 To Grid5.Cols - 1 For j = 1 To Grid5.Rows - 1 js = js + 1 XPPbr1.Value = XPPbr1.Value + 1 If Grid5.Cell(j, i).Text Then Set kc2 = cnn.Execute(select from where = & Grid5.Cell(j, i).Text & and = & XPCombo1.Text & ) Set kc3 = cnn.Execute(select from where = & kc2.Fields(0) & ) Dim str2 As String str1 = Len(kc3.Fields(0) str2 = Mid(kc3.Fields(0), 1, js - 1) & 0 & Mid(kc3.Fields(0), js + 1) Set kc3 = cnn.Execute(update set = & str2 & where = & kc2.Fields(0) & ) End If NextNextSet kc2 = cnn.Execute(update set =000000000000000000000000000000000000000000 where = & XPCombo1.Text & )Set kc2 = cnn.Execute(delete from where = & XPCombo1.Text & )Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub XPButton4_Click()If XPCombo1.Text = ThenMsgBox , vbInformation, End IfCall XPButton3_ClickkbreturnEnd SubPrivate Sub XPButton5_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End IfSet xlApp = CreateObject(Excel.Application)EXCELxlApp.Visible = False EXCELstrDestinationEXCEL Dim strSource, strDestination As String strSource = App.Path & Excelsbak.xlsRegisterFee.xls strDestination = App.Path & Excelstemp.xls FileCopy strSource, strDestination Set xlbook = xlApp.Workbooks.Open(strDestination) Set xlSheet = xlbook.Worksheets(1) sendsql = select , from where = & XPCombo1.Text & order by asc Set kc2 = cnn.Execute(sendsql) xlSheet.Cells(1, 1) = XPCombo1.Text & For i = 5 To 8 For j = 1 To 8 xlSheet.Cells(i, j) = kc2.Fields(j - 1) Next kc2.MoveNext Next For i = 10 To 13 If kc2.EOF = True Then Exit For End If For j = 1 To 8 xlSheet.Cells(i, j) = kc2.Fields(j - 1) Next kc2.MoveNext Next xlbook.Save Dim vyes As String vyes = MsgBox(, vbQuestion + vbYesNo, ) If vyes = vbYes Then If Printers.Count = 0 Then MsgBox , , xlApp.Quit Exit Sub End If xlSheet.PrintOut End If xlApp.Quit Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub XPButton6_Click()If kcsave = True ThenGrid1.Rows = Grid1.Rows + 1ElseMsgBox , vbInformation, End IfEnd SubPrivate Sub XPButton7_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End Ifsendsql = select , from where = & XPCombo1.Text & order by ascMDIForm1.WindowState = 2Classprint.rsDK1 sendsqlClassReport.ShowSet ClassReport.DataSource = Classprint.rs1Exit Subfinish:MsgBox Err.DescriptionEnd SubPrivate Sub XPButton8_Click()On Error GoTo finishIf XPCombo1.Text = ThenMsgBox , vbInformation, End Ifdkyesno = True Grid5.Range(1, 1, Grid5.Rows - 1, Grid5.Cols - 1).ClearText sendsql = select , from where = & XPCombo1.Text & order by asc Set kc2 = cnn.Execute(sendsql) If kc2.EOF = True Then Exit Sub End If For i = 1 To 6 For j = 1 To 7 Grid5.Cell(i,
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:JSP自动排课系统(源代码+论文+开题报告)
链接地址:https://www.renrendoc.com/paper/149932495.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!