毕业论文 作业上传与批改系统论文

杭州师范大学

Hangzhou Normal University

毕业设计(论文)题目酒店管理系统

学院

专业

学号

学生姓名XXX

指导教师

目录

引言 (4)

第一部分问题定义及内容简介 (5)

1.1问题的定义 (5)

1.2 内容简介 (5)

第二部分研究背景与研究意义 (6)

2.1 研究背景 (6)

2.2 研究意义 (6)

第三部分开发平台与语言简介 (7)

3.1 IIS 简介 (7)

3.2 ASP 简介 (7)

3.3 ADO简介 (7)

3.4 Microsoft SQL Server 2000简介 (7)

第四部份系统需求分析及可行性分析 (9)

4.1 系统需求分析 (9)

4.1.1 系统功能体系图 (9)

4.1.2 目标 (9)

4.1.3 用户的特点 (9)

4.1.4 假定与约束 (9)

4.1.5 基本功能 (9)

4.1.6 对性能的规定 (10)

4.1.7 限制条件 (10)

4.2 系统难点分析 (10)

第五部份总体设计 (10)

5.1 数据库设计 (11)

5.1.1 数据库图 (11)

5.1.2 数据库的约束与关系 (12)

5.2 特殊功能的原理 (12)

5.2.1 管理员添加专业班级的处理原理 (12)

5.2.2 管理员添加教师管理员的原理 (13)

5.2.3 教师发布修改作业的原理 (13)

5.2.4 教师发布修改成绩的原理 (13)

5.2.5 教师批量下载作业的原理 (13)

5.2.6 学生上传下载作业的原理 (13)

5.2.7 实现回车换行与空格的原理 (13)

5.2.8 作业目录的处理原理 (13)

5.3 主要功能的界面及编码 (14)

5.3.2密码找回界面与编码 (18)

5.3.3 DataGrid的编码设计 (22)

5.3.4 管理员添加用户的界面与编码 (23)

5.3.5 教师发布修改作业的界面与编码 (26)

5.3.6 教师批量下载作业的界面与编码 (31)

5.3.7 学生上传作业的界面与编码 (32)

第六部分结束语 (34)

①本系统的优点 (34)

②本系统的不足之处及发展意见 (34)

③在系统设计与实现过程中的收获 (34)

第七部分谢辞 (35)

第八部份参考文献 (35)

参考书籍: (35)

其它数据: (35)

第九部份附录 (36)

(附录一)建立数据库与表的SQL语句 (36)

(附录二)测试数据插入的SQL语句 (38)

引言

作业提交系统2.0是基于b/s结构,在IIS平台上使用ASP与Microsoft SQL 2000开发的,主要目的是解决学校机房管理上机作业的问题。因为传统的对学生作业管理是在服务器上建立一个FTP服务器,然后对学生用户设置一个专门的帐号,只允许对作业进行上传,然后学生将作业上传到服务器里对应的班级文件夹下面,传统方式无法解决的问题有:不能防止学生乱上传作业,不能防止学生找错班级文件夹,不能对作业进行限制如大小,类型,上传时间等,教师布置作业要通过黑板写字,教师打分之后只能记在本子上,不能通过局域网发布出来让学生看,教师下载作业必须到服务器上拷贝。而这套系统正是出于这个目的,为了解决上面的问题而设计的。系统对于复杂的问题都采用程序的方式解决了。系统分了管理员、教师、学生用户,管理员须要的操作只是添加专业,添加班级,添加管理员或教师用户都是通过网页的形式展示出来。而教师无须向以前那样,只需要发布作业,对作业的要求进行限制,不必去服务器上建文件夹来存放你的作业,并且程序自动创建目录。下载作业也只须要点一下就会将作业全部打包下载回来,在局域网内的任何一台计算机都可以进行各种操作。学生则再也不会将作业上传错,上传到别的班级中,也不允许上传非法的文件,对一次未上传完成的作业也可以先上传后下节课再下载回来接着做。系统用程序的方式解决了那些非常复杂的操作,比如对文件夹的创建等,所有的角色只需要简单的几步操作就可以完成,非常简单实用。

第一部分问题定义及内容简介

1.1问题的定义

解决传统的FTP服务器不能够满足作业上传的要求下:

1.教师发布作业必须到服务器上建立文件夹

2.教师发布作业由在黑板上写的形式改为在网页上写再发布

3.教师不能对作业进行限制如大小,类型,过期时间

4.教师下载作业的必须到服务器去下载改为在局域网内任何一台计算机都可以下载

5.教师无法发布成绩改为通过网页发布成绩

6.学生一次未完成的作业可以先上传再下载,完成之后再上传。

7.学生上传作业只须点一个按钮,无须选择要上传的目录

1.2 内容简介

通过网页的形式来完成作业提交的管理。首先讲述开发平台的特点,和所使用的开发语言的简介。再介绍研究的背景与意义并对系统进行需求分析与可行性分析,最后进行详细的设计。通过此文档,可以让读者了解作业上传系统的大至流程,对于其中的功能也有一定的了解,知道作者的实现原理及使用的方法。

第二部分研究背景与研究意义

2.1 研究背景

为学校各位老师提供了一个可靠的软件,更好的让学生提交作业。传统的手工操作方式,容易对自己身体疲劳,统计错误,且速度慢。这套系统可以提高管理效率和水平

2.2 研究意义

网络化教育代表了教育改革的一个发展方向,已经成为现代教育的一个特征,并对教育的发展形

成新的推动力。通过Internet/Intranet来实现网上作业提交,是现代教育技术的一个具体实现,具有很重要的现实意义。可以实现学生在线提交作业的无纸化管理,可以有效利用校园网的软硬件资源,使其发挥最大效力,更好的为学校的教学、科研、管理服务,随时随地的可以让学生联机操作提交。

第三部分开发平台与语言简介

3.1 .NET 简介

“.NET 是Microsoft 的用以创建XML Web 服务(下一代软件)平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。”

“借助于 .NET 平台,可以创建和使用基于XML 的应用程序、进程和Web 站点以及服务,它们之间可以按设计、在任何平台或智能设备上共享和组合信息与功能,以向单位和个人提供定制好的解决方案。”

“.NET 是一个全面的产品家族,它建立在行业标准和Internet 标准之上,提供开发(工具)、管理(服务器)、使用(构造块服务和智能客户端)以及XML Web 服务体验(丰富的用户体验)。.NET 将成为您今天正在使用的Microsoft 应用程序、工具和服务器的一部分,同时,新产品不断扩展XML Web 的服务能力以满足您的所有业务需求。”

.NET为开发人员提供了新的开发平台(.NET框架) ,新的开发语言(ASP) ,新的开发工具(Visual Studio .NET) ,新的开发方式(Web Service) ;为普通用户提供了Windows CE、Windows XP、Stinger、Xbox、Tablet PC、.NET My Services、MSN等产品;为企业提供了bCentral。在未来,最终大多数流行的Microsoft 软件应用程序——包括Office 和Visual Studio .NET——将开始与

XML Web 服务实现交互,并把它们的主要功能作为XML Web 服务公开,以便其他开发人员可以利用。

3.2 ASP 简介

ASP(读作“c-sharp”)作为Microsoft的下一代面向对象的语言产品.能够让开发人员在IIS平台上快速地建立大量的应用程序。按照微软给出的定义,asp是一种源自于c和c++的.简单的、现代的、面向对象的和类型安全的程序设计语言。asp为程序员提供了开发飞速发展的Web应用程序所需的强大而灵活的功能。asp和Java的核心与c++比较有着相同的优势和局限,比起c++,asp将更容易被人们理解和接受,未来大量.NET平台的应用将由ASP开发。

3.3 https://www.360docs.net/doc/0810255809.html,简介

https://www.360docs.net/doc/0810255809.html,是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。

https://www.360docs.net/doc/0810255809.html, 提供对Microsoft SQL Server 等数据源以及通过OLE DB 和XML 公开的数据源的一致访问。数据共享使用者应用程序可以使用https://www.360docs.net/doc/0810255809.html, 来连接到这些数据源,并检索、操作和更新数据。

https://www.360docs.net/doc/0810255809.html, 有效地从数据操作中将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。https://www.360docs.net/doc/0810255809.html, 包含用于连接到数据库、执行命令和检索结果的.NET 数据提供程序。您可以直接处理检索到的结果,或将其放入https://www.360docs.net/doc/0810255809.html, DataSet 对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。https://www.360docs.net/doc/0810255809.html, DataSet 对象也可以独立于.NET 数据提供程序使用,以管理应用程序本地的数据或源自XML 的数据。

3.4 Microsoft SQL Server 2000简介

Microsoft SQL Server 2000是一个高性能的客户端/服务器结构的关系数据库管理系统(RDBMS,Relational Database Management System)。SQL Server 2000是为了支持高容量的事务

处理(比如在线订购录入、存货目录、记帐或制造)以及数据仓库和决策支持系统(比如销售分析应用)而设计的。它运行在Microsoft Windows NT4或Microsoft Windows 2000 Server上——基于intel处理器的网络。可以把SQL Server 2000作为一种个人桌面数据库系统安装在运行Window NT Workstation 4、Windows 2000 Professional、Windows98和Windows Millennium Edition(Me)的机器上。可以使用相同的CD来安装任何一个SQL Server 2000的服务器版本或个人版本。

第四部份系统需求分析及可行性分析

4.1 系统需求分析

4.1.1 系统功能体系图

4.1.2 目标

完成一套网上的作业提交系统,免费提供给学校机房使用,将所有源代码公开,方便别人学习,也希望更多的人参与本系统的开发。

4.1.3 用户的特点

用户是机房管理员,对计算机技术比较了解,学校教师专业教师能很快熟悉系统的使用方法,非专业教师也能很快掌握,学校学生能很快学会使用系统。

4.1.4 假定与约束

1.如果压缩文件夹的功能不能解决,那么只有教师到服务器拷贝文件夹

2.如果学校觉得系统不能满足学生作业上传的需要,那么将不能放在机房,

供学生使用

3.如果遇到一些技术问题无法解决,那么将会加大系统的开发周期

4.如果此系统在离开学期之前都无法开发成功,那么也不能提供给机房使用。

4.1.5 基本功能

1.学生注册

2.学生、教师、管理员密码找回功能

3.不同用户登录进入不同的界面

4.学生作业的查看

5.学生作业成绩的查看

6.学生作业上传

7.教师布置作业

8.教师删除作业

9.教师修改作业

10.教师发布成绩

11.教师修改成绩

12.教师下载作业

13.管理员添加教师用户

14.管理员添加管理员用户

15.管理员添加专业

16.管理员添加班级

17.个人资料的查看

18.个人密码的修改

4.1.6 对性能的规定

1.要求系统支持Microsoft .NET Framework 1.1

2.要求系统支持Microsoft SQL Server数据库

3.要求必须安装IIS

4.1.7 限制条件

1.学生不可以进行教师与管理员的页面

2.教师也不可以进入管理员页面,还有学生页面

3.管理员也不可以进行学生和教师面页

4.每个学生登录进入之后只能看到自己班级的作业,不可以看到别的班级的作业

5.每个教师登录只对自己发布的作业进行管理,不可以对别的教师发布的作业进行管理

6.当学生注册时输入的学号必需与选定的班级匹配。

7.不同的用户使用修改密码都只能修改自己的密码,无法修改他人的

8.不同的用户使用个人数据功能时,也是只可以看到自己的信息不可以看到他们的信息

9.学生上传作业的类型,大小,时间等,受到教师发布作业的约束

4.2 系统难点分析

本系统最大的难点是对作业的压缩及打包下载,因为是在WEB上,无法运行像winrar这样的压缩软件来进行文件夹的压缩,压缩的技术也不是我们现在能现写出来的,因为这个功能需要非常复杂的技术,但是我们可以引用别人开发出来的东西,上网查了很多的数据,找到一个SharpZipLib控件可以实现在线文件夹的压缩,而且他的源代码是开放的,可以在网站

“https://www.360docs.net/doc/0810255809.html,/OpenSource/SharpZipLib/default.asp”中下载其最新版本。

第五部份总体设计

5.1 数据库设计5.1.1 数据库图

注:创建数据库及表的SQL语句及各字段表示什么意思见(附录一)

5.1.2 数据库的约束与关系

管理员表与其它表无关系只是为了存放管理员的帐号与密码等数据

教师表里的xuehao字段为主键用于存放老师的ID

班级表里存放的是班级的全称与班级的代号

学生表与班级表之间存在着外键约束,如果学生表里班级代号字段的值与班级表里面的班级代号值关键。

专业表与其它表无关系

作业表也是最重要的一个表它同时与二个表存在着外键约束,ZY_XueHao字段与教师的代号之间相关联,ZY_class与班级表里面班级代号相关联。

其它各字段的值都是有一些非空的约束,详细情况请见(附录一中的备注)

在新建数据库之后要插入了几条测试数据(见附录二)

5.2 特殊功能的原理

5.2.1 管理员添加专业班级的处理原理

以本系为例子,有十多个专业,当某个专业人数比较多时就会分成几个班,如图形图像一班,图形图像二班,ACCP一班,ACCP二班等,而且还分为2004级图形图像一班,2004级图像图像二班,2005级图形图像一班,2005级图形图像二班等。在程序中,首先应该添加专业,而把“图形图像一

班”视为一个专业,“图形图像二班”视为一个专业。前面的“2004级”“2005级”当作年份。添加专业的时候不用只需要添加专业的名称,在添加班级的时候只须要选择年份和专业,再输入班级的代号就可以添加班级了。

5.2.2 管理员添加教师管理员的原理

管理员可以添加教师用户,教师用户必须由管理员添加,每次当管理员添加教师用户时就会在网站目录下的一个专门用于存放上传作业的目录(up)的根目录下以教师的姓名为目录名新建一个根目录。用于教师布置作业之后,学生上传作业的存放目录。

5.2.3 教师发布修改作业的原理

老师发布作业之后可以修改作业,而且二个功能都是使用的一个界面来完成,通过传递的一个参数来判断用户的操作是发布作业还是修改作业,如果是修改作业而取得一个ID值将数据库里的内容绑定到用户界面。(注:但是在修改作业的时候作业的班级与作业的标题设及到文件的目录所有修改时定为不可以修改)

5.2.4 教师发布修改成绩的原理

教师发布成绩或修改成绩的原理和教师发布修改作业的原理大至一样,都是使用一个页面来完成的,通过一个参数来判断用户的操作是发布还是修改。

5.2.5 教师批量下载作业的原理

教师批量下载作业是将学生上传后的作业全部打包成一个zip的压缩文件,然后从服务器上下载。因为这里面涉及到压缩文件的一些算法,非常复杂。所以我用使用了国外的一个压缩类来完成。下载地址:https://www.360docs.net/doc/0810255809.html,/OpenSource/SharpZipLib/default.asp

5.2.6 学生上传下载作业的原理

学生上传作业的时候,首先应该选择上传那科的作业。例:

学生登录帐号200416140 密码snryang 班级代号是2004161 姓名“杨文兵”作业标题为“实用软件工程方法第一次作业”班级名通过查询班级表得到为“2004级WEB应用程序设计”。网站上传目录设为“C:\inetpub\wwwroot\nxwszuoye\up\”作业的存置教师为“XXX”则学生上传作业的时候则会上传到“C:\inetpub\wwwroot\nxwszuoye\up\XXX\2004级WEB应用程序设计\实用软件工程方法第一次作业\”这个目录下面,下载的时候也会在这个目录下面下载,上传的文件名为姓名加上教师布置作业时的扩展名。如果有重复上传则会覆盖原来上传的文件。

5.2.7 实现回车换行与空格的原理

使用到的页面有发布作业和修改作业和学生查看作业。(因为在发布作业的时候将回车转换成
存入数据库这样在显示数据时才会显示换行,不然无法实现换行,空格也是必须换成“ ”。如果不进行字符的替换,则文本框中的回车与空格将会省去,存入数据库中,通过数据库显示到用户界面的时候就无法区分用户的换车和空格,格式不好看,所以在这里进行了简单的替换实现回车与空格的效果。ASP中的代码为TextContel.Text.Replace("\r\n" , "
").Replace(" "," ")

5.2.8 作业目录的处理原理

在Web.config文件中存放了上传文件的目录默认为(目录一)

“c:\Inetpub\wwwroot\nxwszuoye\up\”。当新建一个教师用户时就会在目录一下面以教师的姓名为目录名建立一个根目录如(目录二)“c:\Inetpub\wwwroot\nxwszuoye\up\XXX”。当老师用户登录

之后发布作业的时候要输入作业的标题,还要先择作业的所属班级。每一次发布作业就会新建目录,在目录二的下面建立如下形式的目录“c:\Inetpub\wwwroot\nxwszuoye\up\XXX\作业的所属班级\

作业的标题\”耐用会将“XXX\作业的所属班级\作业的标题\”存入发布作业的一个字段里面。方便以后目录的查找,也就实现了不同的用户上传的作业存放到不同的文件夹,并进行分类存放,也方便了老师对作业目录的管理,方便的下载作业等。这是本系统的一个核心。

5.3 主要功能的界面及编码

5.3.1 DB类的编码

using System;

using System.Data;

using System.Configuration; //导入的一个命名空间,不然无法读取WEB.config配置文件using System.Data.SqlClient;

using ICSharpCode.SharpZipLib.Zip; //导入压缩文件夹的命名空间

using System.Web;

using System.IO; //用于实现下载文件的命名空间

using System.Threading; //用于实现下载文件的命名空间

namespace nxwszuoye

{

public class db //我自己建立的一个数据访问类,

{

public db()

{

}

//一个静态方法返回web.config配置文件中的数径

public static string zuoyepath()

{

string yang=ConfigurationSettings.AppSettings["FileLuJing"]; //fileLuJing为配置文件

中的值

return yang;

}

//静态方法,返回一个SqlConnection对象

public static SqlConnection conn()

{

string yang=ConfigurationSettings.AppSettings["myconn"]; //myconn为配置文

件中的值

SqlConnection aa = new SqlConnection (yang);

return aa; //建立数据库的连接

}

//静态方法,反回查询是否成功

public static bool ChaZhao(string sql) //判断记录是否重复

{

bool yang=false;

try //捕获异常

{

SqlConnection conn=db.conn();

SqlCommand cmd= new SqlCommand(sql,conn);

conn.Open();

SqlDataReader dr=cmd.ExecuteReader();

if(dr.Read())

{

yang=true;

}

else

{

yang=false;

}

dr.Close();

conn.Close();

}

catch(Exception e)

{

throw(e);

}

return yang;

}

//静态方法,执行SQL语句,返回值是否成功

public static bool Edit(string sql) //对数据库增删改操作{

bool yang=false;

int dr=0;

//对异常进行了捕获

try

{

SqlConnection conn=db.conn();

SqlCommand cmd= new SqlCommand(sql,conn);

conn.Open();

dr=cmd.ExecuteNonQuery();

conn.Close();

}

catch(Exception e)

{

throw(e);

}

finally

{

if(dr>0)

{

yang=true;

}

}

return yang;

}

//返回SQL语句第一行第一列的值

public static string getValue(string sql)

{

string str=null;

try

{

SqlConnection conn=db.conn();

SqlCommand cmd = new SqlCommand(sql,conn);

conn.Open();

str = cmd.ExecuteScalar().ToString();

conn.Close();

}

catch(Exception e)

{

throw(e);

}

return str;

}

//下载文件的静态方法

public static bool ResponseFile(HttpRequest _Request,HttpResponse _Response,string

_fileName,string _fullPath, long _speed)

{

try

{

FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

BinaryReader br = new BinaryReader(myFile);

try

{

_Response.AddHeader("Accept-Ranges", "bytes");

_Response.Buffer = false;

long fileLength = myFile.Length;

long startBytes = 0;

int pack = 10240; //10K bytes

//int sleep = 200; //每秒5次即5*10K bytes每秒

int sleep = (int)Math.Floor(1000 * pack / _speed) + 1;

if (_Request.Headers["Range"] != null)

{

_Response.StatusCode = 206;

string[] range = _Request.Headers["Range"].Split(new char[] {'=', '-'});

startBytes = Convert.ToInt64(range[1]);

}

_Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());

if (startBytes != 0)

{

_Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength-1, fileLength));

}

_Response.AddHeader("Connection", "Keep-Alive");

_Response.ContentType = "application/octet-stream";

_Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(_fileName,System.Text.Encoding.UTF8) );

br.BaseStream.Seek(startBytes, SeekOrigin.Begin);

int maxCount = (int) Math.Floor((fileLength - startBytes) / pack) + 1;

for (int i = 0; i < maxCount; i++)

{

if (_Response.IsClientConnected)

{

_Response.BinaryWrite(br.ReadBytes(pack));

Thread.Sleep(sleep);

}

else

{

i=maxCount;

}

}

}

catch

{

return false;

}

finally

{

br.Close();

myFile.Close();

}

}

catch

{

return false;

}

return true;

}

}

}

5.3.2密码找回界面与编码

重点对panel的应用

图:

以为每一块为一个从左到右从上到下为panel1,panel2,panel3,panel4,panel5。

代号:public static string PW_DaAn=null; //用于存放密码提示答案的变量

private void Page_Load(object sender, System.EventArgs e)

{

if(!this.IsPostBack) //页面初始时显示第一步

{

this.Panel1.Visible=false;

this.Panel2.Visible=false;

this.Panel3.Visible=false;

this.Panel4.Visible=false;

this.Panel5.Visible=true;

}

}

private void Button7_Click(object sender, System.EventArgs e)

{

if(YongHu.SelectedValue.ToString()=="wu") //如果未选择用户的类型则给出提示.

{

Response.Write("");

Response.Write("

language='javascript'>history.go(-1)");

}

else

{

this.Panel1.Visible=true; //显示第二步,其它步骤危隐藏.

this.Panel2.Visible=false;

this.Panel3.Visible=false;

this.Panel4.Visible=false;

this.Panel5.Visible=false;

}

}

private void Button8_Click(object sender, System.EventArgs e)

{

//返回上一步

this.Panel1.Visible=false;

this.Panel2.Visible=false;

this.Panel3.Visible=false;

this.Panel4.Visible=false;

this.Panel5.Visible=true;

}

private void Button2_Click(object sender, System.EventArgs e)

{

//判断帐号是否存在

string sql=null;

//根据选择的不同用户,建立不同的查询语句

switch(YongHu.SelectedValue.ToString())

{

case "Admin":

sql="select * from Admin Where XingMing='"+ZhangHao.Text +"'";

break;

case "Teacher":

sql="select * from Teacher Where XingMing='"+ZhangHao.Text +"'";

break;

case "Student":

sql="select * from Student Where XueHao='"+ZhangHao.Text +"'";

break;

}

SqlConnection conn=db.conn();

SqlCommand cmd=new SqlCommand(sql,conn);

conn.Open();

SqlDataReader dr=cmd.ExecuteReader();

//根据查询语句的结果,查询出密码提示的问题,并将密码提示答案存入一个全局变量

if(dr.Read())

{

https://www.360docs.net/doc/0810255809.html,bel1.Text=dr["Pw_WenTi"].ToString();

PW_DaAn=dr["Pw_DaAn"].ToString();

this.Panel1.Visible=false;

this.Panel2.Visible=true;

this.Panel3.Visible=false;

this.Panel4.Visible=false;

this.Panel5.Visible=false;

}

else

{

Response.Write("");

Response.Write("

language='javascript'>history.go(-1)");

}

dr.Close();

conn.Close();

}

private void Button3_Click(object sender, System.EventArgs e)

{

this.Panel1.Visible=true;

this.Panel2.Visible=false;

this.Panel3.Visible=false;

this.Panel4.Visible=false;

this.Panel5.Visible=false;

}

private void Button1_Click(object sender, System.EventArgs e)

{

//如果用户输入的的密码提示答案不与数据库里的相同,则给出提示,

if(MiMaDaAn.Text==PW_DaAn)

{

this.Panel1.Visible=false;

this.Panel2.Visible=false;

this.Panel3.Visible=true;

this.Panel4.Visible=false;

this.Panel5.Visible=false;

}

else

{

Response.Write("");

Response.Write("

language='javascript'>history.go(-1)");

}

相关文档
最新文档