当前位置:文档之家› 新媒体类毕业论文

新媒体类毕业论文

浅析实现导师分配及结果提交的方法——以《论文答辩管理系统—为学生分配导师模

块》为例

姓名:董琦琦

班级:2012级网络与新媒体本科四班

学号:2012108211629

项目类型:“新媒体类”管理系统

摘要

为学生分配导师模块主要负责为已经形成组别的学生组分配论文指导老师,主要包含“类型及导师选择”、“jQ to VBS session转换”、“组员列表”、“选择组员”、“提交数据库”这几个单元。

以《论文答辩管理系统—为学生分配导师模块》为例,浅析在系统之中是如何实现导师的分配与结果的提交。运用程序语言中的session对象、函数、循环结构和判断结构等语法,巧妙的将程序简化,共同构建本模块的构架和实现各个单元的需求功能。

本文将主要根据《论文答辩管理系统—为学生分配导师模块》来分析如何巧妙使用程序语言,实现论文答辩管理系统的基本功能。

『关键词』:session对象表单按钮 split()函数 while循环结构

Abstract

Allocation for student module is mainly responsible for group assigned papers for had formed groups of students guidance teacher,mainly include "type and mentor selection" and "jQ to VBS session transformation", "member list", "select group", "submission database" unit.

In the dissertation management system - allocation for student module as an example, analyses in the system is how to realize the distribution of the tutor and submit results. Using the session object, function, circulation in the programming language syntax structure and determine structure etc, clever of simplifying the program, together to build this module architecture and implementation of the demand function of each unit.

This article will mainly according to the thesis - allocation for the student management system module, to analyze how ingenious use of programming languages, realize the basic function of thesis management system.

【Key words】The session object A form button The split () function The while loop structure

目录

前言 (1)

一、项目开发的意义 (2)

二、“为学生分配导师”模块功能简介 (3)

三、实现导师分配的方法 (5)

(一)使用session对象储存变量 (5)

(二)添加查询条件选择或删除同组学生 (7)

(三)满足条件失效的按钮 (8)

(四)禁止F5刷新功能 (12)

四、实现分配结果提交的方法 (13)

(一)使用split()函数进行数据分割 (13)

(二)使用while循环结构多次查询 (14)

结论 (16)

致谢 (17)

参考文献 (18)

附录《论文答辩管理系统—为学生分配导师模块》毕业设计拟定方案《论文答辩管理系统—为学生分配导师模块》毕业设计具体方案

《论文答辩管理系统—为学生分配导师模块》毕业设计修改方案

前言

本文着重从“组员列表”和“提交数据库”两个单元分析为学生分配导师模块是如何实现分配导师与提交数据库两大功能的。

本文主要由四部分组成。

第一部分:项目开发的意义。这一部分主要介绍了本项目的现状和项目开发后可以为学校带来的改变与影响。

第二部分:“为学生分配导师”模块功能简介。该部分介绍了本小组负责开发的“为学生分配导师”模块的操作流程及主要功能。

第三部分:实现导师分配的方法。本部分主要介绍了组员列表单元中为实现导师分配而采用的程序语言。

第四部分:实现分配结果提交的方法。这部分主要介绍了提交数据库单元中为实现将分配结果成功提交数据库而采用的程序语言。

本文秉着实践与理论相结合的原则,在文中融合了ASP开发应用程序的理论与实践,简要介绍了本模块中为实现导师分配与将结果提交数据库两大功能所采用的程序语言。

一、项目开发的意义

随着现在网络时代的来临和各高校校园网的建设,基于互联网的管理系统在日常的生活与工作中发挥着重要的作用。例如,我校已经完成开发并投入使用的控电查询系统、校园一卡通查询和充值系统等等,这些系统都方便了我们的生活,使我校学生实现了足不出户办理校园业务的可能。

据了解所知,我校仍采用人工手动分配的方式将学生组分配给论文指导老师并制成表格进行结果输出,这样无疑对于相关负责老师而言是一项巨大的工作。在这种大批量人工输入的结果中,无论是输入结果的错误率还是制表的效率都是不尽如人意的。作为手握大学生“命门”的论文答辩,更应该方便老师和学生,达到无论距离的远近均可以进行远程电脑端操作的目的。

若开发并使用毕业生论文答辩管理系统,可以省去大量的手工操作,这样不仅可以减少老师的任务工作量,而且更重要的是可以有效降低输入结果的错误率,同时还可以大大提升工作的效率,使教务工作迈上一个新台阶。

二、“为学生分配导师”模块功能简介

因为毕业生论文答辩管理系统是校内的教务工作管理系统,所以要确保该系统的安全性。本模块需要在主页登录进入,若数据库中没有登录身份信息或登录时身份信息验证不成功(即用户名或密码错误)则无法进入本模块。

本模块是毕业生论文答辩管理系统的第二个模块,要将在组队模块中已经形成组别的学生组分配给相应论文指导老师的模块。本模块拟定由三个单元组成,第一单元是“选择论文指导老师”单元,本单元可以限定之后选择的学生组属性;第二单元是“选择学生组”单元,本单元中可以随机选择该论文指导老师可允许带的学生组;第三单元是将结果记录在数据库中,免去人工地输入,方便快捷地将分配结果以表格的形式呈现出来。

本文着重介绍第二单元和第三单元,即主要介绍程序中导师的分配与数据的提交两部分代码撰写的过程。

本模块页面的主要操作流程如下图所示:

三、实现导师分配的方法

实现导师分配单元主要由选择学生组页面和已选择的学生组列表页面两个页面组成。按系统页面操作流程,从本模块的主页先跳转至已选择学生组的页面,之后通过点击“选择学生”按钮进入选择学生组页面。(一)使用session对象储存变量

“S ession对象用来保存与Web应用程序会话的各个用户的信息,从而实现同一用户在整个会话中的不同页面之间进行变量值共享[1]。”session对象是最常见的用于存储用户的对象。session对象存储特定用户在整个系统操作中所需的数据信息。当用户在整个系统程序的各Web页之间跳转时,存储在session对象中的数据信息不会丢失,而是在整个操作浏览过程中一直存在,并可以重新赋值使session对象更新。

在本模块代码设计上大量使用了session对象储存开发过程中需要的数据讯息。在组员列表单元中,通过给session赋值的方式实现本人及小组成员对学生组的删除功能。具体来说,选择的学生组的学生id都叠加形成一个长字符串并赋值在session对象中。在删除程序中,先使用instr()函数定位出要删除学生在字符串中的位置,再将空值使用replace()函数替换要删除学生处的id值,形成一个新的字符串,最后将新的字符串重新赋值给session对象,从而实现删除功能。其中,因为学生id之间需要使用分隔符相离,否则是一串没有意义的字符串。本模块中使用了“,”作为分隔符,即选择学生组之后,session对象中的值为“X1,X2,X3,X4,X5,…,Xn”。多次测试可得,若想最后的结果准确无误,

需要考虑以下两种情况,即要删除的人的id值是否处于第一个的位置。若处于第一个的位置,开发过程中需要将“X1,”的部分删除,否则会出现“,X2,X3,X4,X5,…,Xn”的错误情况;若不处于第一个位置,开发过程中需要将“,X2,X3”的部分删去,否则会出现“X1,,X4,X5,…,Xn”的错误情况。具体的代码撰写如下所示:

dbpath=server.mappath(dbpath)

set conn=server.createobject("adodb.connection")

conn.open "provider=microsoft.jet.oledb.4.0;data source=" & dbpath

querySQL ="select * from 学生 where 分组编号 in(select 分组编号 from 学生 where id=" & request("id") & ")"

Set rs=Server.CreateObject("ADODB.RecordSet")

rs.Open querySQL,conn,1,1

zuhe=rs("id")

rs.movenext

while not rs.eof

zuhe=zuhe & "," & rs("id")

rs.movenext

wend

rs.close

set rs=nothing

conn.close

set conn=nothing

aaa=instr(session("zuyuan"),zuhe)

if aaa=1 then

session("zuyuan")=replace(session("zuyuan"),(zuhe & ","),"")

else

session("zuyuan")=replace(session("zuyuan"),("," & zuhe),"")

end if

if session("zuyuan")=zuhe then

session("zuyuan")=""

end if

(二)添加查询条件选择或删除同组学生

“SELECT语句的主要作用是在数据库中检索相关的内容,可以说SELECT是SQL语言最关键的语句[2]。”SELECT命令基本格式为:Select 字段名 from table [where 条件]。

查询语句是程序对数据表查询、读取、修改、删除的基础语句,在程序中有着重要的位置。

本模块负责的是为已经通过组队模块形成组别的学生组分配导师。因此,本模块针对的对象是以组为单位,而不是个人,若不是以组为单位添加会出现以下两个问题:一、管理操作老师无法得知同组的组员都是哪些学生,二、管理操作老师无法得知某组组员的具体学生数。同时,为了方便操作,开发过程中需要在管理操作者选出一个学生之后将同组的学生都选出并显示在下方的已选组列表中。同理,删除学生组的时候亦需要达到删除一个学生便可删除整组学生的目的。

想要实现同时选择或删除同组学生操作的具体代码撰写的步骤主要是:

(1)获取在选择页面的URL中设置的参数id中的值,一个id代表一个学生,并使用sql查询语句查出该id所代表学生的分组编号。代码撰写如下所示:

select 分组编号 from 学生 where id=request("id")

(2)因为分组编号是唯一的,利用已查询到的分组编号,进行二次查询,查询与该生同一分组的其它学生。具体代码撰写如下所示:querySQL ="SELECT * FROM 学生 WHERE 分组编号 in(select 分组编号 from 学生 where id=" & request("id") & ")"。

(3)再利用<%%>结构在div中输出即可。

(三)满足条件失效的按钮

标记可以用来定义一系列的表单控件,标记通过设置一个属性“type”值的不同,来定义这些个不同的控件,各控件有一些通用的属性,如Name属性,它指定该控件的名称,再将表单信息传递到服务器端时非常有用;Value属性,它指定该控件的默认值;Size属性,

它指定该控件的初始宽度;Readonly属性和disabled属性,它们将控件

设为只读和失效[3]。”标记是Html基础语言中表单标记中的一个

标记。其具有多种属性,在实际操作中可以根据自己的需要选择设置不同

的属性。

在组员列表单元主页面的下方,有三个按钮,分别是全部清除、选择

学生和选择完成。三个按钮链接三个不同的页面,具体的实现方法如下:

“全部清除”按钮链接JQ_VBS_Session页,jQuery不支持session (1)

变量,因此使用JQ_VBS_Session作为中转页,此页只有程序不做显示页

面,并且程序命令跳转的网页是组员列表页面,所以点击本按钮不跳转其

他页面。但最终显示的是将session中已保存的学生id全部清空并在组

员列表内容中显示文本“组内没有成员!”的新的组员列表页。

中代码书写:

jQuery程序中代码书写:

$(".qingchu").click(function(e) {

window.location="JQ_VBS_Session.asp"

});

(2)“选择学生”按钮是跳转至选择学生页面,在操作人为导师分配

学生组时点击该按钮,页面跳转至选择页面,操作人在选择学生页面选择

要分配给该导师的学生。但因为每个导师可带学生数量有限,不可无限制

选择学生,所以需要为该按钮设置失效的条件。

中代码书写:

value="选

择学生">

jQuery程序中代码书写,负责完成页面的跳转:

$(".zuyuan").click(function(e) {

window.location="xuanze.asp"

});

Asp程序中代码书写,使用判断语句,将shixiao1输出至

代码中位置即可在符合条件的情况下将按钮失效。如下所示代码可翻译为“当选择列表中学生总数量已达到选定导师可带的最多学生数时,选择学生按钮变为无法点击状态”。其中session("count")为选定导师可带的最多学生数,(ubound(qiege)+1)表示选择列表学生总数量。具体代码如下:if session("count")-(ubound(qiege)+1)<=0 then

shixiao1="disabled"

else

shixiao1=""

end if

(3)“选择完成”按钮链接着提交页,在操作人为导师分配完学生组后点击该按钮,便可将分配结果提交数据库,但因为提交页不需显示,提交成功后只弹出“提交成功”的弹出窗口,所以并没有页面之间的跳转。在组员列表显示文本信息“组内没有成员!”的时候,并没有内容需要提交数据库,所以此时“选择完成”按钮失效。

中代码书写:

<%=shixiao2%>>

jQuery程序中代码书写,负责完成页面的跳转,confirm()为弹出确定窗口,两个按键:确定和取消。确定键返回true值完成页面跳转,取消键返回false值不执行动作。

$(".wancheng").click(function(e) {

if(confirm("你确认导师分配完成了么?"))

{

return true

}

else

{

return false

}

});

Asp程序中代码书写,shixiao2输出至div代码中所示位置即可在满足条件是将选择完成按钮失效无法点击。如下所示代码可翻译为“当未选择组员时,页面显示‘组内没有成员!’的文本信息,并将选择完成按钮设置为不可点击状态。”。

if session("zuyuan")="" then

list="组内没有成员!"

shixiao2="disabled"

else

shixiao2=""

end if

(四)禁止F5刷新功能

在程序开发过程中发现每按一次F5刷新浏览器页面时,组员列表中已选择的最后一组便会自动添加一组本身的记录。因为每一组都是唯一不重复的,所以开发过程中需要避免这种错误现象的产生。具体的操作是在jQuery程序中添加如下代码,便可禁止本页的F5刷新功能:$(document).bind("keydown", function(e) {

e = window.event || e;

if (e.keyCode == 116)

{

e.keyCode = 0;

return false;

}

});

四、实现分配结果提交的方法

(一)使用split()函数进行数据分割

“split()函数返回一个以零为基数的一维数组,这个数组会包含特定个数的子字符串,语法:

Split(expression[,delimiter[,count[,compare]]])[5]。”其中,expression为必需项,由子字符串及分隔符构成的字符串;delimiter为子字符串之间的分隔符,若省略,则将指定空白字符("")为分隔符;count 表示要被返回的子字符串的个数;compare指定字符串比较的种类。常用语法格式为:Split(expression[,delimiter])。

在本模块中,使用session("zuyuan")储存已选择学生的id和分隔符“,”所组成的字符串。提交数据库的时候需要在每个人的数据信息中都添加指导老师的信息,也就是说提交数据库单元的对象从学生组变成了学生个人。此时,就需要将长字符串用分隔符“,”分隔成组合前的一个个单独的学生id值,才可以向每个学生的数据库信息中提交导师字段的修改信息。具体的代码书写:qiege=split(session("zuyuan"),",")。

其实在模块中多处都使用了qiege=split(session("zuyuan"),",")这条语句。例如,在组员列表单元中,选择组员的判断条件中出现了ubound(qiege),它的意思是指qiege可用的最大下标,即qiege中所含数组的数量。所以在这段程序之前肯定出现了

qiege=split(session("zuyuan"),",")语句,将session("zuyuan")分隔成了一个个独立的学生id值后再加以计数。

(二)使用while循环结构多次查询

“while循环的作用是当满足循环条件时就执行语句[6]。”while循环结构适用于需要进行多次同一程序块操作时使用,有效避免了程序的繁琐冗杂,使得代码简洁明了,操作简便可行性强。语法如下:while 条件式

程序代码块

wend

在本模块中,因为每一个学生组内成员的数量不定,且大部分均不为一人,若分别针对组内每个成员写修改数据库的程序过于繁琐,所以决定使用while循环结构进行多次查询,并依次修改数据信息。循环变量初值为i=0,循环变量的增量i=i+1,循环条件为当循环变量i增长至qiege 的最大下标,当循环变量大于ubound(qiege)时,结束循环结构。当程序为改变数据库中数据表时,原有结构rs.Open querySQL,conn,1,1中最后的1要更改为3,即rs.Open querySQL,conn,1,3。将从首页选择导师时获取的session("daoshi")赋值给rs表中的导师字段,使用rs.update 语句对原有表进行修改。选择对原有表进行修改而不是新建表,是因为新表的文件大小远超对原有表进行修改的文件大小。这样的操作不仅节省了更多的存储空间,同时相关的操作也变得简便直接。

i=0

while i<=ubound(qiege)

querySQL="SELECT * FROM 学生 WHERE id=" & qiege(i)

Set rs=Server.CreateObject("ADODB.RecordSet")

rs.Open querySQL,conn,1,3

rs("导师")=session("daoshi") rs.update

rs.close

set rs=nothing

i=i+1

wend

结论

一个完善成功的系统的诞生,必将经历一段很长的开发测试时间,同时会对传统的人工运作模式产生影响,甚至取而代之。这就要求开发者具有很好的逻辑思维和扎实的程序语法功底。

在确定开发任务之后,本人及小组成员首先根据日常生活中实际操作的流程对本模块进行了基础的流程设计,主要包括单元的划分和页面之间的跳转与衔接。其次,根据需要呈现出来的结果进行各单元的功能设计,使各个单元分工明确并且单元之间衔接流畅。最后,使用程序语言将上述设计实现。开发过程中会遇到很多能力范围以外的问题,这就要求本人及小组成员及时查阅大量相关的资料或请教导师。在不断的测试中发现,前期的设计操作不流畅或较难实现,这时,会对现有程序进行调整,以确保最终生成的程序具有切实的可操作性。

重要的是,通过这次《论文答辩管理系统》的毕业设计,我发现了自己的不足,明白还有很多新的知识等待着我去理解与掌握,一定会在日后的学习和工作中更加刻苦努力的学习。

文本预览
相关文档 最新文档