毕业设计(论文)基于.NET的在线考试系统的设计与实现.doc
-
资源ID:3978371
资源大小:845KB
全文页数:32页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
毕业设计(论文)基于.NET的在线考试系统的设计与实现.doc
目 录1绪 论11.1选题背景11.2研究意义及主要内容21.3 论文的组织结构32 相关技术介绍32.1 C# 概述32.1.1 VS2005开发环境的功能和特点42.1.2 C#的优越性42.2 SQL Server2000简介42.3使用GridView控件和ObjectDataSource控件显示、更新数据53 系统分析与设计73.1 系统分析73.1.1 需求分析73.1.2 可行性分析73.2系统功能设计83.2.1 管理员模块93.2.2 考生模块93.2.3 教师模块103.3系统采用三层应用程序结构103.4 系统数据库设计103.4.1 数据库表的设计103.4.2 使用ADO.NET链接数据库144 管理员模块的设计154.1 登录模块的设计154.2 系部管理模块的设计164.3 用户信息模块设计174.4 用户试卷管理模块的设计195 考生模块的设计236 教师模块的设计256.1 科目管理模块的设计256.2试卷制定与维护模块的设计256.3 试题类别管理模块的设计277 结束语29参考文献30致 谢311绪 论1.1选题背景在二十一世纪的新时代,随着计算机技术的发展及计算机的日益普及,基于WEB在线考试与无纸化办公一样已成为大势所趋。基于WEB在线考试也越来越成为学校的好帮手,它的优势不但体现在人力上也体现在物力上,基于WEB的在线考试系统的自动评阅、计分、成绩存档功能将有效地避免资源的浪费,有利于环保,减少人员,提高效率。相比传统的考试方式,基于WEB的在线考试系统的主要好处是一方面可以动态地管理各种考试信息,只要准备好足够大的题库,就可以按照要求自动生成各种试卷;另外在线考试的最大特点是阅卷快,系统可以在考试结束后立刻给出客观题考试成绩,计算机阅卷给了考生最大的公平感。本系统讲述了一个基于WEB的在线考试系统的大体实现过程,该系统基本上可以满足学校及现代信息化企业的内部考试要求,可以实现学校或企业的低成本投入,高效率办公的宗旨。例如:一个学校或公司如果使用了本系统,教师或领导即使在外地出差也可以通过访问Internet轻松设置审批考试,考试结束后也不要传统的繁琐的阅卷过程,极大地提高了办公效率。考试的题型可以都是标准化客观题目,但本系统加上了主观题,对于其他类型的题目只要在本文的基础上稍加修改即可。利用C#技术开发的基于WEB的在线考试系统。它具有用户在线考试、动态随机出题、考试时间控制、自动判卷、题库维护、用户管理、分数管理等功能。本系统主要由管理员模块、考生模块、教师模块组成。自动组卷及自动评分的实现是本系统的关键。随着Web技术的发展和电子商务时代的到来,人们不再满足于建立各种静态地发布信息的网站,更多的时候需要能与用户进行交互,并能提供后台数据库的管理和控制等服务的动态网站。C#可以用于管理动态内容、支持数据库、处理会话跟踪,甚至构建整个电子商务站点。它支持许多流行的数据库,包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQ LServer。其语法大部分与C、Java、Perl等语言相似,并形成了自己的独有风格,利用该语言Web程序员可以快速地开发出动态网页。C#在大多数Unix平台、GUN/Linux和微软Windows平台上均可以运行。1.2研究意义及主要内容21世纪是信息化的社会,数据信息应用已进入大规模的服务阶段。考试作为最直接的体现信息化社会中人们的知识水平的一种方式,是目前使用最为广泛的形式之一,传统的考试从出题、组卷、印刷,到试卷的分发、答题、收卷、再到判卷、公布成绩,整个过程都需要人工参与,周期长,工作量大,容易出错,还要有适当的保密工作,使得整个考试的成本较大。所以,实现无纸化、网络化、自动化的在线考试系统,具有深远的现实意义和使用价值。本系统采用B/S模式,采用现在使用广泛的ASP.NET(C#)语言和对数据文件安全保护性极好的SQL Server2000设计开发出一个基于Web的考试管理系统,也就是在线考试系统。该系统具备网上数据传递的功能,主要由管理员模块、考生模块、教师模块组成,管理员模块实现用户信息的管理,系部信息管理和考生试卷管理;考生模块实现考生在线考试、成绩查询功能;教师模块实现考试科目管理,试卷制定维护,考生试卷管理和试题库管理。系统采用三层结构,统一的管理题库,自动组卷,自动判卷,极大的节省了人力、物力,提高了效率。1.3 论文的组织结构 第一部分:绪论。介绍了论文的选题背景、主要内容和研究意义。第二部分:相关技术介绍。第三部分:系统分析与设计。第四部分:管理员模块的设计。第五部分:学生模块的设计。第六部分:教师模块的设计。第七部分:结束语。2 相关技术介绍2.1 C# 概述C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。这种框架使C#组件可以方便地转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet调用它。C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。C#使C/C+程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。2.1.1 VS2005开发环境的功能和特点Microsoft公司推出的Visual Studio 2005提供了一个全新的开发环境,在此环境下,可以用多种语言开发Windows窗体应用程序、ASP.NET网站、移动设备应用程序、组件与控件、数据报表和XML Web服务等多种复杂的系统。VS2005分为Team System版本、Professional版本、Standard版本和Express版本,分别适用于大型软件开发团体、中小型软件开发公司以及业余开发者,是一种全面的、先进的、完全适应当前网络发展的高级软件开发平台。2.1.2 C#的优越性相比C/C+而言,C#的优越性体现在以下几点: (1) 效率与安全性 (2) 支持现有的网络编程新标准 (3) 消除大量程序错误 (4) 对版本的更新提供内在的支持,降低了开发成本 (5) 商业过程和软件实现的更好对应 (6) 扩展交互性2.2 SQL Server2000简介微软的SQL Server 2000界面友好,易学易用且功能强大,与Windows 2000操作系统完美结合,可以构造网络环境数据库甚至分布式数据库,可以满足企业及Internet等大型数据库应用。 以下简单介绍它的功能特性(1) 实现了客户机/服务器模式 客户机/服务器(C/S)模式数据库计算是一种分布式的数据存储、访问和处理技术,它已成为大多数企业计算的标准。Microsoft SQL Server是客户/服务器系统应用的完美的例子。 (2) 与Internet集成 SQL Server 2000数据库引擎提供完整的XML支持。具备构造大型Web站点的数据存储组件所需的可伸缩性、可用性和安全性。 (3) 具备很强的可伸缩性和可用性 SQL Server 2000包含企业版、标准版、开发版和个人版等4个版本,使同一个数据库引擎可以在不同的操作系统平台上使用,从运行Windows 9x的便携式电脑,到运行Windows2000 Data Center Server的大型多处理器的服务器。增强的图形用户界面管理工具,使管理更加方便。 (4) 具备企业级数据库功能 SQL Server 2000关系型数据库引擎支持当今苛刻的数据处理环境所需的功能,可同时管理上千个并发数据库用户,其分布式查询使用户可以引用来自不同数据源的数据,同时具备分布式事务处理系统,保障分布式数据更新的完整性。 (5) 易于安装、部署和使用 SQL Server2000的安装向导可帮助用户方便地实现各种方式的安装,如网络远程安装、多实例安装、升级安装和无人职守安装等。SQL Server 2000还提供了一些管理开发工具,使用户可以快速开发应用程序。 (6) 数据仓库功能 企业在正常的业务运作过程中需要收集各种数据,包含企业的动态历史记录,数据仓库的目的是合并和组织这些数据,以便可对其进行分析并用来支持业务决策。数据仓库是一种高级、复杂的技术。Microsoft SQL Server 2000提供的强大工具,可帮助您完成创建、使用和维护数据仓库的任务。2.3使用GridView控件和ObjectDataSource控件显示、更新数据为了更直观地显示教师、学生、课程等信息,为给操作者提供方便,本系统采用GridView数据绑定控件和ObjectDataSource数据源控件。GridView使用起来非常方便。要将GridView绑定到数据源控件,只需将GridView的DataSourcelD属性设置为数据源控件的ID即可。当使用DataSourcelD属性绑定到数据源时,GridView控件支持双向数据绑定。ObjectDataSource控件可以用来从对象类型的数据源中检索数据,并且可以绑定到各种数据绑定控件以实现对数据执行选择、插入、更新、删除等操作。3 系统分析与设计3.1 系统分析3.1.1 需求分析为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求: (1)系统处理的准确性和及时性:系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对学生信息处理的需求。 (2)系统的开放性和系统的可扩充性:系统在开发过程中,应该充分考虑以后的可扩充性。例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。(3)系统的易用性和易维护性:要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。(4)系统的数据要求:数据录入和处理的准确性和实时性;数据的一致性与完整性;数据的共享与独立性。(5)系统的运行要求在Windows 2000系统下运行:本软件是Win2000+C#+SQL Sever2000的环境下进行的、根据软件工程的原理,结合面向对象方法开发完成。3.1.2 可行性分析 经济性 主要从对项目的经济上进行分析评价,一方面是支出的费用,另一个是取得的收益。这是个小型的系统,从投入的人力,财力与物力来讲是非常小的,只要一台电脑,这个系统就可以做起来。从节省人力方面,可以考虑让教师从繁忙的出卷,阅卷中解脱出来,做更多的工作,提高工作效率。 技术性网络化的考试,使考试更加规范,实现了通过网络对试题的管理以及对试卷的批阅,系统中设置的自动组卷及自动批改部分试题的模块,为教师提供了一个更为方便的管理平台,大大提高了教师的工作效率。根据以上分析可设计出系统的数据流程图如图3·1所示:试题录入试题库题库维护在线考试维护抽取试题原始试题库考生成绩库成绩查询阅卷输入成绩保存答卷维护统计分析图3·1 系统数据流程图3.2系统功能设计整个系统分为三个模块,分别为管理员模块,考生模块和教师模块,各模块中又包含几个子模块,根据系统需要和系统流程图,设计出系统整体框架图,如图3·2所示:用户登录考生模块在线考试成绩查询考试科目管理试卷制定维护考生试卷管理试题类别管理系部信息管理用户信息管理考生试卷管理教师模块管理员模块在线考试系统图3·2系统整体框架图3.2.1 管理员模块 此模块负责用户 (教师、学生)、系部和考生试卷的管理。 (1)用户管理。系统通过用户的权限级别,限制其访问数据的范围:考生:其操作权限仅为参加考试和查询考试成绩,不允许两台或两台以上计算机用同一账号同时登陆;教师:该角色具有考生所没有的权限,即具有考试科目管理、考试题库管理以及试卷信息管理等操作权限;系统管理员:为系统的唯一超级用户,具有最高的权限,负责整个系统的管理和维护。(2)系部管理。管理员可对系部信息进行修改,添加和删除工作。(3)考生试卷管理。可以查看考生试卷信息及考生成绩,对于一些已经考试过的试卷和成绩可以进行删除和清理工作。3.2.2 考生模块只有通过验证的考生,方可进入考试界面。 考生登录后,选择考试科目,进行在线答题;如果未到考试时间,则没有试卷不能进行考试;如果已经考试过,则不能重复再考,并可查看该科成绩。 系统自动计时。进入考试页面开始答题后,自动计时器开始工作。当考试时间到,自动结束考试并保存考卷。考生答题完毕,提交试卷后,对于单选题、多选题、判断题这些客观题,在考生答卷结束后计算机会自动给出分数,并保存在成绩表中;而对于简答题等主观题,在考生答卷结束后其结果将存入考生答案表里,以便为教师对主观题的评分做好准备。3.2.3 教师模块教师模块包括考试科目管理,题库管理、考生试卷管理、组卷和阅卷等功能。教师首先建立试题库,并输人大量试题。同时,还需进行试题维护如试题修改、添加、删除、发布等工作。在考试前,根据考试的科目、数量、分值等特点设计组卷策略,并根据组卷策略随机从试题库中抽取试题组成试卷。教师在考试结束后对主观题进行在线阅卷并评分。对于一些历史上的考生试卷和成绩可以进行删除和清理等工作。3.3系统采用三层应用程序结构本系统采用三层应用程序结构,即表示层、业务层和数据层。表示层用于用户接口的展示,负责直接跟用户进行交互,用于数据录入、数据显示等。业务层用于访问数据层,从数据层取数据、修改数据以及删除数据,并将结果返回给表示层。该层被划分成2个子层:业务逻辑层(BLL)和数据访问层(DAL),BLL在DAL之上, DAL访问 数据并将其转给BLL。数据层是数据库或者数据源。在.NET中,通常它是一个SQL Server或Access数据库。 三层架构优点是显而易见的:不必为了业务逻辑上微小变化而致使整个程序修改;增强了代码可重用性;适合群体开发;便于不同层次开发人员之间合作。另外,使用时不用本地安装、登录方便、交互便捷;客户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。3.4 系统数据库设计3.4.1 数据库表的设计本系统数据库采用SQL Server2000数据库,数据库名称为OnLineExam,一共包含14张表,这里简要介绍几个表。表3·1 用户表Users列名数据类型长度说明UserIDVarchar50用户账号UserNameVarchar50用户名字UserPwdVarchar64密码DepartmentIdInt4系部代码RoleIdInt3角色号表3·2 考试科目表Course列名数据类型长度说明CourseIDInt4科目代码CourseNameVarchar200科目名称表3·3 试卷详细信息表PaperDetail列名数据类型长度说明IDint4编号PaperIDint4试卷号Typevarchar10试题类型TitleIDint4题号Markint4分值表3·4 界面树形图表TreeMenu列名数据类型长度说明NodeIdInt4节点号ParentIdInt4父节点TextVarchar50文字内容UrlVarchar50链接页面Dutyvarchar50页面名表3·5 用户角色表Role列名数据类型长度说明RoleIdInt4角色号RoleNamevarchar50角色名HasDuty_DepartmentManageInt4系部管理权限HasDuty_UserManageInt4用户管理权限HasDuty_RoleManageInt4角色管理权限HasDuty_RoleInt4角色添加权限HasDuty_UserScoreInt4考生成绩管理权限HasDuty_CourseManageInt4科目管理权限HasDuty_PaperSetupInt4试卷制定权限HasDuty_PaperListsInt4试卷管理权限HasDuty_UserPaperListInt4考生试卷管理权限HasDuty_SingleSelectManageInt4单选题管理权限HasDuty_MultiSelectManageInt4多选题管理权限HasDuty_FillBlankManageInt4填空题管理权限HasDuty_JudgeManageInt4判断题管理权限HasDuty_QuestionManageInt4问答题管理权限表3·6 试卷表Paper列名数据类型长度说明PaperIDint4试卷号CourseIDint4科目代码PaperNamevarchar200试卷名PaperStatebit1试卷状态表3·7 单选题信息表SingleProblem列名数据类型长度说明IDInt4编号CourseIDInt4科目代码TitleVarchar1000题目AnswerAVarchar500选项一AnswerBVarchar500选项二AnswerCVarchar500选项三AnswerDVarchar500选项四Answervarchar2答案表3·8 考生成绩表Score列名数据类型长度说明IDInt4编号UserIDVarchar50考生账号PaperIDInt4试卷号ScoreInt4成绩ExamTimeDatetime8考试时间JudgeTimedatetime8批改时间表3·9 考生答题信息表UserAnswer列名数据类型长度说明IDInt4编号UserIDVarchar50用户账号PaperIDInt4试卷号TypeVarchar50试题类型TitleIDInt4题目编号MarkInt4分值UserAnswerVarchar1000考生答案3.4.2 使用ADO.NET链接数据库ADONET是新推出的NET框架中的用于数据访问的组件,是独立于开发工具和开发语言的数据访问接口,它提供了程序开发人员、应用程序实时存取各类数据库的能力,可以轻松地完成对各类数据库的查询,存取等操作。ADO又被称为通用数据访问(UDA),其数据源包括数据库,电子邮件,文件,文本,图形等。使用ADO不仅可以读取 Access和SQL Server数据库,也可以读取其他与ODBC兼容的数据库。ADO对数据库的操作步骤为: 创建数据源名 (DSN) 创建数据库连接(Connection) 创建数据库对象 操作数据库关闭数据库对象和连接。ADONET的主要特点是具有断开式数据结构 ,能够与 XML紧密集成 ,使网络上的不同系统都可以相互运作。在ADONET中通过DataSet 和NET Data Providers来实现对数据源的连接和对数据的操作。通过SqlConnection对象的Connectionstring属性指定连接参数,建立同数据源的连接;对数据的更新、检索、插入、删除等由SqlCommand对象设置相应的SQL令来完成。为了实现与数据库的连接,需要在Web.conIig文件中配置链接字符串,并在配置节<appsettings/>下的子配置节<connectionStrings>添加链接字符串,具体链接字符串的配置如下 : <connectionStrings><add name="ConnectionString" connectionString="Data Source=(local);Initial Catalog=OnLineExam;Integrated Security=SSPI;"providerName="System.Data.SqlClient" /> </connectionStrings>其中 Data Source指定服务器的名称,Initial Catalog属性指定数据库的名称,Integrated Security表示以当前Windows系统用户身份去登录SQL Server服务器。4 管理员模块的设计4.1 登录模块的设计用网页设计的基本技术设计完成系统登录主页面,将教师、管理员和学生的登录集成在一个模块。对于教师、管理员和学生而言,数据库中存在的合法用户在登录页面输入正确账号、密码和验证码通过验证后即可进入系统 (用户名与密码等登录信息都不能为空)。若输入错误账号、密码和身份,则会显示出错信息。其中,涉及到得一些程序代码如下:判断验证码是否正确,若错误,显示出错信息 if (String.Compare(Request.Cookies"yzmcode".Value, Validator.Text, true) != 0) lblMessage.Text = "验证码错误!" 如果验证码正确,再检查用户密码是否正确,在这里用到一个参数cookie, cookie是一个网站在你硬盘上放置的信息,以便你下次访问时,它记住某些东西。典型地,cookie能够记住你在某个网站的参数选择。使用超文本传输协议(HTTP),网页的每个请求与其它请求是独立的,由于这种原因,网页服务器不知道它先前发送给用户的是什么网页,或者说是不知道你之前访问的是什么。cookie基质则允许服务器将它自己的信息储存在用户的电脑上。 if (user.CheckPassword(txtUserID.Text.Trim() if (user.UserPwd = pwd) /输入密码与用户密码相同 if (object.Equals(Request.Cookies"UserID", null) CreateCookie(); else CreateCookie(); Session"userID" = txtUserID.Text.Trim();/存储用户编号 Response.Redirect("Default.aspx");/转向管理员操作界面 else /密码错误,给出提示 lblMessage.Text = "您输入的密码错误!"系统登录页面运行的结果如下:图4·1 考试系统登录界面4.2 系部管理模块的设计管理员进入系统后,可对系部信息进行查询,修改,添加和删除等管理工作,涉及的程序代码如下:运用QueryDepartment方法查询所有系部信息,利用GridView控件指明数据源并绑定数据 DataSet ds = department.QueryDepartment(); GridView1.DataSource = ds; /为GridView控件指名数据源 GridView1.DataBind(); /GridView控件绑定数据要对系部信息进行删除,修改或添加时,需要先取出系部表的主键string departmentid = GridView1.DataKeyse.RowIndex.Values0.ToString(); Department department = new Department();然后,调出相应的存储过程。删除系部为例, if (department.DeleteByProc(departmentid) Response.Write("<script language=javascript>alert('删除成功!')</script>"); elseResponse.Write("<script language=javascript>alert('删除失败!')</script>"); GridView1.EditIndex = -1; GridViewBind();/重新绑定数据系部管理页面运行结果如下所示:图4·2系部管理4.3 用户信息模块设计该模块包括三项内容,用户的基本信息,权限设置和角色管理。其中,用户基本信息中包括用户账号,姓名,密码,系别等内容,管理员可以添加,删除,修改用户的信息。在进行这些操作前,首先用QueryUsers方法查询所有用户,DataGridView控件绑定数据源。下面以修改用户信息为例,介绍一下涉及的程序代码。string userID = GridView1.DataKeyse.RowIndex.Values0.ToString(); Users user = new Users(); user.UserName = (TextBox)GridView1.Rowse.RowIndex.FindControl("tbxName").Text; user.RoleId = Convert.ToInt32(DropDownList)GridView1.Rowse.RowIndex.FindControl("ddlRole").SelectedValue); user.DepartmentId = Convert.ToInt32(DropDownList)GridView1.Rowse.RowIndex.FindControl("ddlDepartment").SelectedValue); if (user.UpdateByProc(userID)/ UpdateByProc方法修改用户信息 GridViewBind(); Response.Write("<script language=javascript>alert('修改成功!')</script>"); else Response.Write("<script language=javascript>alert('修改成功!')</script>"); GridView1.EditIndex = -1; GridViewBind();权限设置部分,可以授予各类用户一定得权限,使其具有访问某些页面的权力。以授权用户考试科目管理的权限为例,使用的代码为if (OnLineExam.DataAccessHelper.GetSafeData.ValidateDataRow_N(dt.Rowsi, "HasDuty_DepartmentManage") = 1)(CheckBox)GV.Rowsi.FindControl("chkDepartmentManage").Checked = true;ht.Add("HasDuty_CourseManage", (CheckBox)row.FindControl("chkCourseManage").Checked = true ? 1 : 0);在角色管理中,管理员可以添加,编辑和删除角色。运行结果如下图所示:图4·3 用户管理图4·4 用户权限管理图4·5 角色管理4.4 用户试卷管理模块的设计该模块的功能可以查询考生试卷,了解试卷是否批改,并可对以批改过的试卷进行删除;对于批改过的试卷可以查看考生的成绩,也可对历史成绩进行删除。为了方便,还可以将考生的成绩表以Excel的形式导出或保存,便于查看。涉及的程序代码如下:对已批改过的考生的试卷进行删除 if (paper.DeleteByProc(UserID, PaperID) Response.Write("<script language=javascript>alert('成功删除!')</script>"); else Response.Write("<script language=javascript>alert('删除失败!')</script>"); InitData();查询考生成绩,生成Excel文件Scores score = new Scores(); DataSet ds = score.QueryScore(); DataTable DT = ds.Tables0;string NewFileName=DateTime.Now.ToString("yyyyMMddHHmmss")+ ".xls" NewFileName = Server.MapPath("Temp/" + NewFileName);File.Copy(Server.MapPath("./Module01.xls"), NewFileName,true); string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + NewFileName + "Extended Properties='Excel 8.0;'" OleDbConnection Conn = new OleDbConnection(strConn); Conn.Open(); OleDbCommand Cmd = new OleDbCommand("", Conn); foreach (DataRow DR in DT.Rows) string XSqlString = "insert into Sheet1$" XSqlString += "(用户姓名,试卷,成绩,考试时间) values(" XSqlString += "'" + DR"UserName" + "'," XSqlString += "'" + DR"PaperName" + "'," XSqlString += "'" + DR"Score" + "'," XSqlString += "'" + DR"ExamTime" + "')" Cmd.CommandText = XSqlString; Cmd.ExecuteNonQuery(); Conn.Close(); System.IO.FileStream Reader = System.IO.File.OpenRead(NewFileName); long Length = Reader.Length; Response.Buffer = false; Response.AddHeader("Connection", "Keep-Alive"); Response.ContentType = "application/octet-stream" Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("学生成绩.xls"); Response.AddHeader("Content-Length", Length.ToString(); byte Buffer = new Byte10000;/存放欲发送数据的缓冲区 int ByteToRead;/每次实际读取的字节数 while (Length > 0) if (Response.IsClientConnected) ByteToRead = Reader.Re