• 951.00 KB
  • 2022-04-22 13:44:26 发布

学分制下的中学学生成绩管理系统毕业论文.doc

  • 47页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'学分制下的中学学生成绩管理系统毕业论文目录第1章概述1第2章系统分析22.1可性行分析22.1.1技术可行性分析22.1.2经济可行性分析22.2需求分析32.2.1功能需求32.2.2性能需求32.3系统功能分析32.4开发平台选择62.4.1VisualStudio2005简介62.4.2C#语言简介62.4.3SQL简介72.4.4ASP.NET的技术简介8第3章系统设计93.1功能模块设计93.1.1用户登录模块设计93.1.2用户管理模块设计103.1.3成绩查询模块设计113.1.4成绩管理模块设计113.1.5科目管理模块设计123.1.6选课管理模块设计133.1.7学生选课模块设计143.2数据库设计143.2.1数据库逻辑设计14III 3.2.2数据库物理设计153.3组织结构设计18第4章系统实现194.1用户登陆模块实现194.2用户管理模块实现214.3成绩查询模块实现224.4成绩管理模块实现234.5科目管理模块实现254.6选课管理模块实现264.7学生选课模块实现27第5章系统测试295.1测试目标295.2测试项目说明295.3测试评价31结束语32致谢33参考文献34附录35附录A:系统核心代码35附录B:系统使用说明44III 第1章概述在21世纪的科技时代,科学技术突飞猛进,计算机已经不仅是在科技上应用,而且在生活中也同样得到了广泛的应用。一直以来使用传统人工的方式管理文件档案、填写各种表格,这种管理方式存在着许多缺点,如:效率低、保密性差,另外所用的时间长,产生大量的文件与数据,这对于查找、更新与维护都带来了不少的困难,同时地点的限制也带来很大的麻烦。因此开发出一个学生成绩管理系统是必要的。当前各学校正在建立数字化校园,充分利用校园网的有利资源,已经实现了办公无纸化的数字化建设。但是,目前很多学校的电子办公设施并不完善,然而对于学校来说,成绩管理系统是一个学校不可缺少的部分,它的内容对于学校的决策者与管理者来说都至关重要。所以,学生成绩管理系统应该能够为用户提供充足的信息与快捷的查询手段。在现阶段的学校管理工作中,学生成绩管理系统实现了由复杂、重复的人工操作向人机简便操作的转化。它运用计算机完成数据收集、修改、查询、删除以及统计等工作,提高了管理人员的工作效率,避免繁重的业务量造成的人为错误。学校作为教育与科技的先行者,那些先进的、优秀的技术往往会为学校所率先采用,网络技术也不外如此,优秀的学校管理决策者一定会选择或者自主开发一个适合本校校情的学生成绩管理系统。利用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。计算机实现了对学生成绩信息的便捷化、无纸化管理,并且大大缩短了学校管理人员的维护成本与维护周期,提高了学校的办公效率。同时,这也是学校管理的科学化、正规化、与当代世界接轨的重要条件。因此,开发这样一个系统是很必要的事情。而且从2010年秋季高一新生开始,新课程实行学分管理,以学分描述学生的课程修习状况。学生3年中必须获得116个必修学分(包括必须获得研究性学习活动15学分、社区服务2学分、社会实践6学分),在选修I至少获得22学分,在选修II中至少获得6学分,总学分达到144学分方可毕业。本系统就是针对学分制下的中学成绩管理而开发的,它更适应于现在教育的发展趋势,更有实用价值。45 第2章系统分析2.1可性行分析可行性分析的基础是对系统的初步调查,系统的初步调查正确与否关系到可行性的成败。可行性分析实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。2.1.1技术可行性分析技术可行性主要是分析使用现有的技术能不能实现这个系统。本毕业设计所描述的中学学生成绩管理系统是采用ASP.NET作为网络编程框架,SQLServer2000作为数据库编写的一个B/S模式的系统。因为ASP.NET是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.NET的Web应用中。作者可以选择一种最适合作者的语言来编写程序,或者把作者的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript,C++,F++。本论文描述的系统就是使用的C#语言来制作的。因为C#相对比较常用,也比较简单,作者对C#也更加熟悉些,而且C#是.NET独有的语言。SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。SQLServer是一个关系数据库管理系统。2.1.2经济可行性分析经济可行性主要分析这个系统的经济效益能否超过它的开发成本。本系统就是针对现如今的中学新课改而应运而生的。现如今,高中也采用高校的学分制了,新课改改变了过去课程结构单一、缺乏可选择性的弊端。高中新课程由学习领域、科目、模块三个层次和必修、选修两个部分构成。设置了语言与文学、数学、人文与社会、科学、艺术、技术、体育与健康、综合实践活动8个学习领域。各学习领域由课程价值相近的若干科目组成,共包括语文、数学、外语、思想政治、历史、地理、物理、化学、生物、艺术(或音乐、美术)、体育与健康、信息技术、通用技术等14个科目。当前各学校正在建立数字化校园,充分利用校园网的有利资源,已经实现了办公无纸化的数字化建设。本系统符合现在的需求,有继续开发的必要性。45 2.2需求分析2.2.1功能需求本系统通过三种用户类型使用学生成绩管理系统,不同类型用户所使用功能不同,这三种用户类型是学生、教师和管理员。管理员能够使用功能的权限最多,教师在成绩管理中能够使用功能最多。特别是教师登录后,不同的科目的教师的登录身份是与自己所教授的科目相对应的,具体的说就是教师进入系统后只能录入自己所教授科目下学生的成绩。学生的功能最基本。系统功能主要包括以下几个部分:用户登录、用户管理、成绩查询、成绩管理、科目管理、选课管理与学生选课。按照以下不同的用户类型对具体功能进行描述:(1)学生学生在系统的基本功能是对自己所有成绩的查询与个人信息的查看,选择与查看自己想读的课程,以及修改自己的登录密码。(2)教师教师在用户管理中能看到自己信息,修改密码与查看个人信息;在成绩查询中能够按学号或按姓名进行查询,可以查询某班学生的成绩并且成绩以排序成绩显示出来,可以统计某班学生某科成绩的平均分;在成绩管理中能够录入自己教授科目的成绩及修改已录入成绩,但修改成绩时有时间记录。(3)管理员管理员在学生成绩管理系统中在用户管理中能够添加学生与教师,并能为学生、教师重设密码,能够编辑教师与学生信息;在成绩查询中,能够对学生成绩按学号或按姓名进行查询;在成绩管理中能够按学号录入成绩、修改成绩;在科目管理中能够添加科目的相关信息,删除科目。可以录入选课科目的相关信息;可以添加、删除选课科目。2.2.2性能需求整个系统应当操作简便,界面友好,维护简便。数据库要求运行稳定,执行速度快,数据安全性高。系统本身对计算机硬件平台与操作系统平台要求适中。2.3系统功能分析45 该学生成绩管理系统实现了在学分制背景下的中学学生成绩的管理,在系统中存在三种用户类型:学生、教师、管理员。管理员能够使用功能的权限最多,教师在成绩管理中能够使用功能最多。特别是教师登录后,不同的科目的教师的登录身份是与自己所教授的科目相对应的,具体的说就是教师进入系统后只能录入自己所教授科目下学生的成绩。学生的功能最基本。主要有用户登录模块、用户管理模块、成绩查询模块、成绩管理模块、科目管理模块、选课管理模块与学生选课模块构成。如图2.1所示。学生成绩管理系统用户管理成绩查询成绩管理科目管理选课管理用户登录学生选课图2.1系统功能模块图下面具体的描述每个子功能模块的功能:(1)用户登录用户登录模块的功能是:管理员与教师通过工号与密码登录,学生通过学号与密码登录。如果用户名和密码不正确,则提示“用户名或密码不正确”;如果角色不正确,则提示“登录权限不正确”。如图2.2所示。用户登录管理员登录教师登录学生登录图2.2用户登录功能模块(2)用户管理用户管理模块的功能是:管理员能够添加教师与学生用户类型,能够编辑修改密码、个人信息,能够查看用户信息;当其他用户忘记密码时,也可以找管理员查看一下用户表,找出该用户的密码。如图2.3所示。用户管理添加用户信息查看用户信息图2.3用户管理功能模块45 (3)成绩查询成绩查询模块的功能是:教师能够按学号、姓名查询某个学生成绩,教师能够查询某班学生自己教授科目的所有成绩,能够统计某班某科学生的平均成绩。学生界面也有这个模块,学生可以查询自己的所有科目的成绩,如图2.4所示。成绩查询按学号或姓名查询成绩查询某班所有学生成绩查询某班平均成绩图2.4成绩查询功能模块(4)成绩管理成绩管理模块的功能是:教师能够录入自己所教授的科目的学生成绩,当输入了所有的成绩后,点击提交就没法修改了,要修改只能请求管理员创建一个修改成绩的表格,供教师修改学生成绩,还要记录修改的时间。如图2.5所示。成绩管理录入成绩修改成绩图2.5成绩管理功能模块(5)科目管理科目管理模块的功能是:管理员能够添加科目的相关信息,如课程编号、课程名称、学分。管理员也可以删除已添加的科目信息。如图2.6所示。科目管理添加科目删除科目图2.6科目管理功能模块(6)选课管理45 选课管理模块的功能是:管理员能够添加,删除选课信息(选课编号、课程名称、教师名称、课程性质、学年、学期等)以及查看选课信息,每学期选课的时候都由管理员录入相关的选课信息,然后供同学们选课。如图2.7所示。选课管理添加选课信息删除选课信息图2.7选课管理功能模块(7)学生选课学生选课模块的功能是:学生根据自己的具体情况,决定选修哪些课程,但是选修的课程名称不能重复,学生选好课后,点击提交就可以看到自己选了哪些课,如果选错了或不想选某门课了,可以退选。如图2.8所示。学生选课选课退选查看所选课程图2.8学生选课功能模块2.4开发平台选择2.4.1VisualStudio2005简介VisualStudio是微软公司推出的开发环境,VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。VisualStudio2005是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序。VisualBasic、VisualC++、VisualC#和VisualJ#全都使用相同的集成开发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了.NETFramework的功能,通过此框架可使用简化ASPWeb应用程序和XMLWebServices开发的关键技术。2.4.2C#语言简介C#是VisualStudio.NET中包含的一种全新的开发语言。它从C/C++语言发展而来,具有与C/C++语言相似的语法,继承和发扬了C/C++45 语言的优点。同时,由于是Microsoft公司的产品,它又同VisualBasic一样简单,在创建图形用户界面和事件驱动的应用程序方面的容易程度可以媲美VisualBasic。对于Web开发而言,C#又像Java/C++语言一样,具有强大的功能和灵活性,使用起来更加方便和直观。C#语言虽然从C/C++语言发展而来,但是它摈弃了C/C++语言中容易出错的指针、多重继承等概念,是一种完全面向对象、类型安全的语言,与使用新的.NET框架的其他许多语言兼容,允许与具有C/C++语言风格的需要传递指针类型参数的API进行交互操作,允许C#语言组件与其他语言组件间的交互操作。C#是一种完全建立在.NET框架平台之上的高级语言,其所有类型都是从.NETFramework提供的统一类库中派生的,并且所有的功能实现都依赖于这个类库。C#中没有多重继承并且没有模块类。C#中的简单类型仅仅是底层数据类型的直接映射。C#中的类型不是由语言本身确定的,而是由公共类型系统确定的。例如,在C#中,枚举、属性和事件都已内建到语言中,虽然所有面向.NETFramework的语言都可以使用该框架,但C#是完全针对这个框架的,它可以充分使用这个框架所提供的类、接口和对象。C#是一种最新的、面向对象的编程语言,使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务,来最大程度地开发利用计算机与通信领域。正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选—无论是高级的商业对象还是系统级的应用程序。2.4.3SQL简介结构化查询语言(StructuredQueryLanguage,简称SQL)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制4个方面,是一个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言。它是一个综合的、通用的、功能极强、同时又简洁易学的语言。SQL语言集数据查询(DataQuery)、数据操纵(DataManipulation)、数据定义(DataDefinition)和数据控制(DataControl)功能于一体,充分体现了关系数据语言的特点和优点。它的主要优点有综合统一,高度非过程化,面向集合的操作方式,以同一种语法结构提供两种使用方式,语言简洁,易学易用。常用的SQL语句的一般格式:1.定义基本表CREATETABLE<表名>(<列名><数据类型>[列级完整性约束条件]45 [,<列名><数据类型>[列级完整性约束条件]...][,<表级完整性约束条件>]);2.修改基本表ALTERTABLE<表名>[ADD<新列名><数据类型>[完整性约束]][DROP<完整性约束名>][MODIFY<列名><数据类型>];3.删除基本表DROPTABLE<表名>;4.查询数据SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]...FROM<表名或试图名>[,<表名或试图名>]...[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]];5.更新数据1)插入数据INSERTINTO<表名>[(<属性列1>[,<属性列2>]...)]VALUES(<常量1>[,<常量2>]...);2)修改数据UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]...[WHERE<条件>];3)删除数据DELETEFROM<表名>[WHERE<条件>];2.4.4ASP.NET的技术简介ASP.NET是一种强大的Web服务器端技术,与ASP相比,ASP.NET拥有更高的编译特性与缓存机制。其特点包括:与框架.NET紧密结合;将事件模型引入到Web应用程序的开发领域;支持多种语言开发,包括C#、VisualBasic和Jscript等。45 ASP.NET不仅仅是ASP的新版本,也是统一的Web开发平台,用来提供开发人员生成企业级Web应用程序所需的服务。ASP.NET是一个已编译的、基于.NET环境,可以用任何与.NET兼容的语言(包括C#.NET、VisualBasic.NET和Jscript.NET)创作应用程序,而不仅仅是原来ASP采用的Javascript和VBScript。ASP.NET可以无缝的与HTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。ASP.NET利用.NETFramework和公共语言运行库(CLR)中的性能增强功能。所有ASP.NET代码都是可编译的,而不是解释的,这就允许对本机代码采用早期绑定强类型处理,以及实行编译。ASP.NET可方便的分解,即开发人员可以移除那些与自己开发的应用程序不相关的模块。ASP.NET提供丰富的缓存服务(包括内置服务和缓存API两种)。ASP.NET还提供性能计时器和默认授权和验证方案。ASP.NET配置设置存储在基于XML的文件中,这些文件都是可读和可写的。每个应用程序都可以有不同的配置文件,可以扩展配置方案,以适应用户的要求。当应用程序安装在同一台计算机上,但使用不同的.NETFramework版本时,应用是并行运行的。第3章系统设计3.1功能模块设计3.1.1用户登录模块设计45 登录界面的主要功能是对用户的安全性管理,只有通过登录界面才能进入管理系统进行管理,用户信息保存在数据库中的用户表里。如可以用“111111”这个用户名进行登录,密码为“123456”,登录角色为“管理员”。本界面主要是在Visualstudio2005平台上进行设计的,后台编码采用C#语言,背景图片采用Photoshop进行了渐变处理。其中包含的控件主要有TextBox(用于输入用户名和密码)、RadioButton(用于单选)、Button(用于单击触发事件)。界面图如图3.1所示。图3.1登录界面3.1.2用户管理模块设计本模块主要用于添加用户信息,主要用到的控件有Label(为控件提供说明性文字)、TextBox(用于输入用户名和密码)、DropDownList(显示一个下拉列表)、Button(用于单击触发事件)、GridView(与数据库绑定后,用SQL语句来控制显示的数据)。其界面如图3.2所示。45 图3.2用户管理界面3.1.3成绩查询模块设计本模块主要用于教师查询成绩,教师可以通过学号和姓名查询某个学生的自己所教授科目的成绩,也可以通过班级编号查询某班的全部成绩和平均成绩。点击查询按钮后,查询的结果会显示在下面。本模块主要用到的控件有Label(为控件提供说明性文字)、TextBox(用于输入学号、姓名和班级编号)、DropDownList(显示一个下拉列表,主要是选择学年与学期)、Button(用于单击触发事件)、GridView(与数据库绑定后,用SQL语句来控制数据的显示、编辑和删除)。其界面如图3.3所示。图3.3成绩查询界面3.1.4成绩管理模块设计45 本模块主要用于教师管理成绩,包括录入成绩和更新成绩,教师要把所有的成绩都录入完毕,确定无误后,再点击提交按钮,因为提交过后教师就不能修改和删除学生成绩了。如果教师在提交后要修改成绩的话,要找管理员赋予教师修改的权限,并会记录修改的时间。本模块主要用到的控件有Label(为控件提供说明性文字)、TextBox(用于输入学号和成绩)、DropDownList(显示一个下拉列表,主要是选择学年与学期)、Button(用于单击触发事件)、GridView(与数据库绑定后,用SQL语句来控制数据的显示、编辑和删除)。其界面如图3.4所示。图3.4成绩管理界面3.1.5科目管理模块设计本模块主要用于管理员管理课程信息,管理员输入课程名称、课程编号和学分后点击提交,就可以添加课程信息了。如果输错了,可以点击重置按钮。而且点击提交按钮后,可以在下面看到添加的课程信息,也可以修改和删除已添加的课程信息。本模块主要用到的控件有Label(为控件提供说明性文字)、TextBox(用于输入课程信息)、Button(用于单击触发事件)、GridView(与数据库绑定后,用SQL语句来控制数据的显示、编辑和删除)。其界面如图3.5所示。45 图3.5科目管理界面3.1.6选课管理模块设计本模块主要用于管理员管理选课信息,管理员会在每学期选课的时候,录入备选的课程供学生来选。管理员只需要输入课程名称、教师名称、容量、课程性质、学年与学期点击提交即可。选课编号则由后台代码根据输入的信息自动生成。其他的相关信息则通过连表查询并显示出来。本模块主要用到的控件有Label(为控件提供说明性文字)、TextBox(用于输入选课信息)、DropDownList(显示一个下拉列表,主要是选择学年与学期)、Button(用于单击触发事件)、GridView(与数据库绑定后,用SQL语句来控制数据的显示、编辑和删除)。其界面如图3.6所示。图3.6选课管理界面45 3.1.7学生选课模块设计本模块主要用于学生选课,学生选课时不能选修相同的课程,在选定课程后,点击提交按钮,学生就可以看到自己已经选择的课程。如果学生不想选了,可以点击退选。本模块主要用到的控件有Label(为控件提供说明性文字)、DropDownList(显示一个下拉列表,主要是选择学年与学期)、Button(用于单击触发事件)、GridView(与数据库绑定后,用SQL语句来控制数据的显示、编辑和删除)。其界面如图3.7所示。图3.7学生选课界面3.2数据库设计3.2.1数据库逻辑设计一名教师教一门课程,一门课程可以由多名老师来教,因此教师与课程两个之间是一对多的关系,在数据库中为体现一对多的关系,可专门用一张表储存这种一对多的关系。一个学生的一门功课有一个成绩,在成绩表中,主键和外键来自于课程表和学生表,这个间接体现了学生与课程的多对多关系,即一名学生可以学习多门课程,一门功课也可以有多个学生学习。一个学生只属于一个班级,故学生和班级是一对多的关系。图3.8即是本系统的E-R图,即实体-联系图。45 班级学生选修课程教师组成选修讲授课程编号学号分数学分课程名课程编号课程编号班级编号年龄职工号性别姓名班级编号编辑名称班级编号年龄性别姓名学号1M1MMN图3.8系统E-R图3.2.2数据库物理设计一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库,数据表主要用来存放一定格式的记录,数据表的行被称为记录,列被称为字段。创建数据表的过程其实就是定义字段的过程。下面就是各个表的具体结构。(1)用户表(Sysuser)用户表中存储了用户的相关信息,包括用户号,用户名,用户密码和用户角色。表的主键是用户号。表的具体结构如表3.1所示。表3.1用户表字段名称含义数据类型是否主键是否外键是否为空Sysuser_id用户号intYNNSysuser_name用户名charNNNSysuser_mima用户密码charNNYSysuser_role用户角色charNNY(2)学生表(Student)45 学生表用来存储学生的相关信息,包括学生的学号,姓名,性别,年龄,民族,政治面貌,班级编号。其中学号是表的主键,班级编号是表的外键。表的具体结构如表3.2所示。表3.2学生表字段名称含义数据类型是否主键是否外键是否为空Student_id学号charYNNStudent_name姓名charNNYStudent_sex性别charNNYStudent_age年龄charNNYMinzu民族charNNYZzmianmao政治面貌charNNYClass_id班级编号charNYN(1)教师表(Teacher)教师表用来存储教师的信息,包括教师工号,教师姓名,性别,年龄和课程编号。表中的教师工号为表的主键,课程编号为表的外键。表的具体结构如表3.3所示。表3.3教师表字段名称含义数据类型是否主键是否外键是否为空Teacher_id教师工号charYNNTeacher_name教师姓名charNNYTeacher_sex性别charNNYTeacher_age年龄charNNYLesion_id课程编号charNNN(2)课程表(Lession)课程表用来存储课程的信息,包括课程编号,课程名称和学分。课程编号为表的主键。表的具体结构如表3.4所示。表3.4课程表字段名称含义数据类型是否主键是否外键是否为空Lession_id课程编号charYNNLession_name课程名称charNNYLession_credit学分charNNY(3)成绩表(Degree)45 成绩表用来存储学生成绩的相关信息,包括学号,课程编号,成绩,教师工号,学年和学期。其中增加了一个id字段,并将其设为表的主键。表的具体结构如表3.5所示。表3.5成绩表字段名称含义数据类型是否主键是否外键是否为空id自动编号intYNNStudent_id学号charNYNLession_id课程编号charNYNDdegree成绩floatNNYTeacher_id教师工号charNYNXuenian学年charNNYXueqi学期charNNY(1)选课表(Selectlession)选课表记录的是选课的课程相关信息,是由管理员录入的。表中包含了选课编号,课程编号,课程名称,教师姓名,学分等字段。主键是选课编号。表的具体结构如表3.6所示。表3.6选课表字段名称含义数据类型是否主键是否外键是否为空Xuanke_id选课编号charYNNLession_id课程编号charNYNLession_name课程名称charNNYTeacher_name教师姓名charNNYLession_credit学分charNNYRongliang容量intNNYYuliang余量intNNYKechengxz课程性质charNNYXuenian学年charNNYXueqi学期charNNY(2)班级表(Class)班级表中存储的是班级的相关信息,包括班级编号,班级名称和所属年级。其中主键是班级编号。表的具体结构如表3.7所示。45 表3.7班级表字段名称含义数据类型是否主键是否外键是否为空Class_id班级编号charYNNClass_name班级名称charNNYNianji所属年级charNNY(1)学生课程表(Studentlession)学生课程表是存储学生所选的课程的相关信息的,由学生选课后自动生成。主键是编号。选课编号,学号是外键。表的具体结构如表3.8所示。表3.8学生课程表字段名称含义数据类型是否主键是否外键是否为空SL_id编号intYNNXuanke_id选课编号charNYNStudent_id学号charNYN3.3组织结构设计本系统通过三种用户类型使用学生成绩管理系统,不同类型用户所使用功能不同,这三种用户类型是学生、教师和管理员。管理员能够使用功能的权限最多,教师在成绩管理中能够使用功能最多。特别是教师登录后,不同的科目的教师的登录身份是与自己所教授的科目相对应的,具体的说就是教师进入系统后只能录入自己所教授科目下学生的成绩。学生的功能最基本。系统功能主要包括以下几个部分:用户登录、用户管理、成绩查询、成绩管理、科目管理、选课管理与学生选课。作者根据本系统的功能需求将系统的结构设计如图3.9所示。登陆界面有三个登录角色:管理员,教师,学生。当用户名,密码和登录权限都正确的时候,用户就可登录系统,进入对应的首页。不同的用户类型,使用的功能也不相同,例如管理员登录后可以添加用户信息,可以修改密码,可添加班级信息,学生信息,教师信息,科目信息,选课信息等,可以看出,管理员能使用的功能最多;而教师和学生使用的功能就相对于管理员要少一些。可以将系统结构按用户类型分为三大块,管理员登录为一块,教师登录为一块,学生登录为一块。作者在设计的时候,也是这样分解系统的,并且将各个部分的文件放在各自的一个文件夹里,这样便于管理,也便于查看代码,使作者的想法更加清晰。45 登陆界面首页成绩查询密码修改学生全校性选修课学生选课情况查询个人信息教师管理员用户管理学生情况查询成绩查询密码修改成绩管理密码修改首页首页选课管理学生个人信息管理班级管理成绩管理课程管理教师信息管理个人信息图3.9组织结构图45 第4章系统实现4.1用户登陆模块实现用户登录时,需要输入用户名和密码,管理员和教师的用户名就是其工号,学生的用户名是学号。初始密码和用户名相同。登录成功后,用户可以修改个人密码。当用户名和密码正确,而权限不正确时,不能成功登录,但会有提示。模块流程如图4.1所示。输入用户名和密码是否正确登录成功YN开始结束图4.1用户登录模块流程图下面是本模块的部分核心代码,代码中用到的类和方法见附录。protectedvoiddengluanniu_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();stringmima=myrw.ReaderMsg(TextBox1.Text).ToString().Trim();stringpw=TextBox2.Text;stringrole=myrw.ReaderMsg1(TextBox1.Text).ToString().Trim();if(mima==pw){if(RadioButton3.Checked==true&&role=="学生"){Session["name"]=TextBox1.Text;Response.Redirect("student/xszhuye.aspx");}elseif(RadioButton2.Checked==true&&role=="教师"){45 Session["name"]=TextBox1.Text;Response.Redirect("teacher/jszhuye.aspx");}elseif(RadioButton1.Checked==true&&role=="管理员"){Session["name"]=TextBox1.Text;Response.Redirect("Administrator/glyzhuye.aspx");}elseResponse.Write("");}elseResponse.Write("");}4.2用户管理模块实现用户管理只有管理员有这个功能,管理员可以添加和删除用,也可以修改密码。并为用户指定使用权限。当输入的用户名已经存在时则不能重复添加。添加成功时会有提示。模块流程如图4.2所示。输入用户名、密码和使用权限用户名是否已存在添加成功NY开始结束图4.2用户管理模块流程图下面是本模块的部分核心代码,代码中用到的类和方法见附录。protectedvoidPage_Load(objectsender,EventArgse){xuehao.Text=Session["name"].ToString();xingming.Text=Session["name"].ToString();}45 protectedvoidButton1_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();if(myrw.ReaderMsg15(TextBox1.Text)==false){Response.Write("");}else{myrw.AddMsg(TextBox1.Text,TextBox2.Text,DropDownList1.SelectedValue);Response.Redirect("yonghuxinxi.aspx");}}protectedvoidButton2_Click(objectsender,EventArgse){TextBox1.Text="";TextBox2.Text="";}4.3成绩查询模块实现老师可以输入学号或姓名查询某学生的单科成绩,也可以输入班级编号查询某班的平均成绩和某班的详细成绩表。学生可以查询自己所学的科目的所有成绩,也可以查询总学分和总绩点以及平均绩点。管理员可以查看所有学生的所有成绩。本模块流程如图4.3所示。输入学号或姓名或班级编号是否正确显示查询结果YN开始结束图4.3成绩查询模块流程图下面是本模块的部分核心代码,代码中用到的类和方法见附录。protectedvoidPage_Load(objectsender,EventArgse)45 {xuehao.Text=Session["name"].ToString();SQLRWmyrw=newSQLRW();string[]info=myrw.ReaderMsg11(Session["name"].ToString());xingming.Text=info[1];}protectedvoidButton3_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();string[]info=myrw.ReaderMsg11(Session["name"].ToString());Label1.Text=myrw.ReaderMsg12(info[4].Trim()+info[0].Trim(),TextBox1.Text,info[4],info[0]).ToString();}protectedvoidButton5_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();Label5.Text=myrw.ReaderMsg13(TextBox2.Text,Session["name"].ToString()).ToString();}protectedvoidButton11_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();Label6.Text=myrw.ReaderMsg14(TextBox3.Text,Session["name"].ToString()).ToString();}4.4成绩管理模块实现教师在输入学号,成绩,学期,学年后添加,即可添加学生的成绩。添加后,教师可以在下面的表格中看到添加的成绩。还可以修改和删除,如果确定无误后点提交,提交后的成绩,教师就不能修改和删除了,所以教师要确认无误后再提交。本模块流程如图4.4所示。45 是否正确输入学号和成绩显示输入的数据YN开始结束图4.4成绩管理模块流程图下面是本模块的部分核心代码,代码中用到的类和方法见附录。protectedvoidPage_Load(objectsender,EventArgse){xuehao.Text=Session["name"].ToString();SQLRWmyrw=newSQLRW();string[]info=myrw.ReaderMsg11(Session["name"].ToString());xingming.Text=info[1];}protectedvoidButton3_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();string[]info=myrw.ReaderMsg11(Session["name"].ToString());if(TextBox1.Text==""||TextBox1.Text==""){Response.Write("");}else{myrw.AddMsg8(TextBox1.Text,info[4],float.Parse(TextBox2.Text),info[0],DropDownList1.SelectedValue,DropDownList2.SelectedValue);Response.Redirect("chengjiguanli.aspx");}}45 protectedvoidButton4_Click(objectsender,EventArgse){GridView1.Columns[7].Visible=false;}4.5科目管理模块实现管理员在输入课程编号,课程名称和学分后可以添加科目信息,添加后管理员可以在下面的表格中查看所添加的科目信息,也可以修改和删除添加的科目信息。本模块流程如图4.5所示。是否正确输入科目的名称和学分等信息显示输入结果YN开始结束图4.5科目管理模块流程图下面是本模块的部分核心代码,代码中用到的类和方法见附录。protectedvoidPage_Load(objectsender,EventArgse){xuehao.Text=Session["name"].ToString();}protectedvoidButton10_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();if(myrw.ReaderMsg8(TextBox1.Text)==false){Response.Write("");}else{45 myrw.AddMsg7(TextBox1.Text,TextBox2.Text,TextBox3.Text);Response.Redirect("kechengguanli.aspx");}}protectedvoidButton11_Click(objectsender,EventArgse){TextBox1.Text="";TextBox2.Text="";TextBox3.Text="";}4.6选课管理模块实现选课管理模块主要是管理学生选课时的那些课程的相关信息,选课信息由管理员录入,主要录入的信息是课程名称,教师姓名,容量,课程性质,学年和学期等信息。每门备选的课程都有一个唯一的编号,这个编号由后台代码设定。它即是由课程编号和教师工号合起来组成的。这样就可以唯一标示一门备选的课程编号。本模块流程如图4.6所示。是否正确输入选课的相关信息显示输入YN开始结束图4.6选课管理模块流程图下面是本模块的部分核心代码,代码中用到的类和方法见附录。protectedvoidPage_Load(objectsender,EventArgse){xuehao.Text=Session["name"].ToString();}45 protectedvoidButton1_Click(objectsender,EventArgse){SQLRWmyrw=newSQLRW();string[]info=myrw.ReaderMsg9(DropDownList4.SelectedValue);stringid=myrw.ReaderMsg10(DropDownList5.SelectedValue,DropDownList4.SelectedValue).Trim();if(id==""){Response.Write("");}elseif(myrw.ReaderMsg6(info[0].Trim()+id)==false){Response.Write("");}else{myrw.AddMsg2(info[0].Trim(),DropDownList4.SelectedValue,DropDownList5.SelectedValue,info[1],TextBox2.Text,TextBox2.Text,DropDownList1.SelectedValue,DropDownList2.SelectedValue,DropDownList3.SelectedValue,info[0].Trim()+id);Response.Redirect("xuankeguanli.aspx");}}protectedvoidButton2_Click(objectsender,EventArgse){TextBox2.Text="";}4.7学生选课模块实现学生选课模块主要是学生选课,在选课表里的学生可选的课程中,学生可以选择自己想学的课程。选定后点提交,学生可以看到自己已选的课程。每个学生选的课程不能有重复的课。如果不想选某门课了,可以退选。本模块流程如图4.7所示。45 是否提交选择课程显示所选课程YN开始结束图4.7学生选课模块流程图下面是本模块的部分核心代码,代码中用到的类和方法见附录。protectedvoidPage_Load(objectsender,EventArgse){xuehao.Text=Session["name"].ToString();SQLRWmyrw=newSQLRW();xingming.Text=myrw.ReaderMsg2(Session["name"].ToString());}protectedvoidButton7_Click(objectsender,EventArgse){string[]xuanke=newstring[14];inti=0;string[]kecheng=newstring[50];intj=0;foreach(GridViewRowrowinthis.GridView1.Rows){Controlctrl=row.FindControl("CheckBox");if((ctrlasCheckBox).Checked){TableCellCollectioncell=row.Cells;xuanke[i]=cell[1].Text;kecheng[j]=cell[2].Text;i++;45 j++;}}SqlDataSource2.SelectCommand="SELECT[Lession_name],[Teacher_name],[Lession_credit],[Kechengxz],[Xuanke_id],[Xueqi],[Xuenian]FROM[Selectlession]WHEREXuanke_idIN(""+xuanke[0]+"",""+xuanke[1]+"",""+xuanke[2]+"",""+xuanke[3]+"",""+xuanke[4]+"",""+xuanke[5]+"",""+xuanke[6]+"",""+xuanke[7]+"",""+xuanke[8]+"",""+xuanke[9]+"",""+xuanke[10]+"",""+xuanke[11]+"",""+xuanke[12]+"",""+xuanke[13]+"")";}45 第5章系统测试5.1测试目标测试是“为了发现程序中的错误而执行程序的过程”,测试的目标就是在系统使用之前,尽可能多的发现系统中的错误,并解决测试中发现的错误以减少系统维护的费用。5.2测试项目说明在测试过程中,对每个功能逐一测试,测试步骤如下:(1)测试是否能正常登录。登录界面如图5.1所示。图5.1用户登录管理员用户名“111111”,密码“123456”,能够正确登录,并进入正确的页面;教师用户名“110001”,密码“123”,能够正确登录,并进入正确的页面;学生用户名“110110101”,密码“123456”,能够正确登录,并进入正确的页面。当用户名或密码输入错误时,如输入用户名“111111”,密码“123”,则会弹出如图5.1的错误提示。图5.2错误提示45 当登录的角色选择不正确时,如输入用户名“111111”,密码“123456”,但选择的角色是教师,则会弹出如图5.2的提示。图5.3提示(2)测试是否能正常添加用户。用户管理界面如图5.4所示。图5.4用户管理界面当管理员进入用户管理界面后,就可以添加用户信息了。输入用户名和密码并选择使用权限,点击提交按钮即可添加成功。如果输入的用户名已经存在了,则会弹出如图5.5的提示框。图5.5提示框(3)测试其他的功能是否实现管理员在进入管理员界面后,逐一测试管理员的相关功能,如课程管理,班级管理,教师信息管理,选课管理以及修改密码等功能。经过测试,基本功能已实现。45 教师在进入教师界面后,逐一测试管教师的相关功能,如成绩管理,成绩查询,教师信息查询,学生情况查询以及修改密码等功能。经过测试,基本功能已实现。学生在进入学生界面后,逐一测试管学生的相关功能,如选课,选课情况查询,成绩查询,学生个人信息查询以及修改密码等功能。经过测试,基本功能已实现。5.3测试评价(1)测试结果:系统功能基本都能实现。(2)系统能力:经测试证实该系统在各方面的综合能力较好。(3)系统存在的不足:系统有些考虑不周,功能可以进行扩展。(4)测试结论:该系统基本上满足了学分制下的中学学生成绩管理系统的基本功能,且功能基本上可以实现。45 结束语(1)本成绩管理系统实现用户登录(包括管理员登录、教师登录、学生登录),用户管理,成绩管理,成绩查询等功能,为学校管理学生成绩提供了方便,管理员能够添加教师和学生用户。采用的技术是当今流行的ASP.NET+SQL组合方式,实现了动态页面的编程。(2)本课题研究主要对本站的角色管理及总体外观进行了策划与设计,并对网站的背景颜色以及结构框架做了精心的构思与设计,本系统主要采用淡蓝色为背景色,看起来显得沉稳而不浮躁。采用的工具主要是VS2005以及Photoshop等网页制作工具和图片处理软件。(3)本项目的难点是选课信息的管理,成绩查询等方面的设计。用户登录后使用的功能不一样,这在设计上也有一定的难度。经过作者的努力,以及同学和老师的帮助,基本上完成了成绩管理的各个模块的功能。45 致谢在毕业设计即将结束之际,谨向给予无私帮助的老师和同学致以我衷心的感谢! 首先,我要感谢张老师在整个毕业设计过程中给予我的帮助和鼓励,尤其是他严谨治学、精益求精的工作作风更是给我留下了非常深刻的印象,在这半年的时间里,系统和论文的不断修改,我所走的每一步都和张老师的严格是分不开的,而且他也给我们树立了榜样,这将是我今后学习、工作和生活有很多的帮助。 同时,我还要感谢我周围同学给我的无私的帮助。在这毕业设计期间,同学们给我了很大的帮助,让我从中学到了很多的东西。在与他们交流、学习和互相帮助中,我在学习和生活上都取得了很大的进步,并且感受到了兄弟姐妹般的同窗友情。在我们即将毕业,走向各自的人生道路时,我也衷心的祝他们再接再厉,去谱写人生的辉煌。再次,我也要感谢学校给我的舒适的学习和生活的环境,让我在无忧无虑的环境中成长,并从中学到了许多知识。在做毕业设计时,许多同学和老师帮助过我,给了我黑暗中的一丝光明。特别是我的指导老师张老师,在我最困难的时候,在我想偷懒的时候,给我指明了方向,给了我很好的建议,在此我衷心的对张老师说一声“谢谢您!”。 45 参考文献[1]韩海雯.Web程序设计—ASP.NET[M].北京:人民邮电出版社,2008.[2]王珊.数据库系统原理教程[M].北京:清华大学出版社,1998.[3]匡松.C#大学实用教程[M].北京:电子工业出版社,2009.[4]张海藩.软件工程导论[M].北京:清华大学出版社,2008.[5]MSDN在.NET中使用类型化DataSet实现DataTransferObject[EB/OL].http://msdn.microsoft.com/zh-cn/library/ms998529.aspx,2004.04.15.[6]刘波,雷刚要.基于.NET平台通用数据库组件的实现[J].计算机工程与设计,2007,28(6):1415-1417.[7]张超钦,胡光武,甘铮.基于.NET的通用数据访问模型与实现[J].信阳师范学院学报(自然科学版),2009,22(3):454-456.[8]周红安.21天学通C#[M].北京:电子工业出版社.2009.[9]铁军等.Web数据库技术[M].北京:清华大学出版社,2006.[10]周长发.C#面向对象编程[M].北京:电子工业出版社,2007.[11]刘瑞新.C#网络编程及应用[M].北京:机械工业出版社,2004:123-174.[12]郑宇军.C#2.0程序设计教程[M].北京:清华大学出版社,2005.45 附录附录A:系统核心代码publicclassSQLRW{stringconnStr="DataSource=(local);InitialCatalog=xscjglxt;IntegratedSecurity=True";publicSQLRW(){////TODO:在此处添加构造函数逻辑//}publicvoidAddMsg(stringSysuser_name,stringSysuser_mima,stringSysuser_role){//添加用户信息stringsql="INSERTINTOSysuserVALUES(""+Sysuser_name+"",""+Sysuser_mima+"",""+Sysuser_role+"")";SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码conn.Open();cmd.Connection=conn;cmd.CommandType=CommandType.Text;cmd.CommandText=sql;cmd.ExecuteNonQuery();}}publicvoidAddMsg1(stringStudent_id,stringStudent_name,stringStudent_sex,stringStudent_age,stringMinzu,stringZzmianmao,stringClass_id){//添加学生信息stringsql="INSERTINTOStudentVALUES(""+Student_id+"",""+Student_name+"",""+Student_sex+"",""+Student_age+"",""+Minzu+"",""+Zzmianmao+"",""+Class_id+"")";SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码}}publicvoidAddMsg2(stringLession_id,stringLession_name,stringTeacher_name,string45 Lession_credit,stringRongliang,stringYuliang,stringKechengxz,stringXuenian,stringXueqi,stringXuanke_id){//添加选课信息stringsql="INSERTINTOSelectlessionVALUES(""+Lession_id+"",""+Lession_name+"",""+Teacher_name+"",""+Lession_credit+"",""+Rongliang+"",""+Yuliang+"",""+Kechengxz+"",""+Xuenian+"",""+Xueqi+"",""+Xuanke_id+"")";SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码}}publicvoidAddMsg3(stringSysuser_name,stringSysuser_mima){//修改密码stringsql="UPDATESysuserSETSysuser_mima=""+Sysuser_mima+""WHERESysuser_name=""+Sysuser_name+""";SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码}}publicvoidAddMsg4(stringClass_id,stringClass_name,stringNianji){//添加班级信息stringsql="INSERTINTOClassVALUES(""+Class_id+"",""+Class_name+"",""+Nianji+"")";SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码}}publicvoidAddMsg6(stringTeacher_id,stringTeacher_name,stringTeacher_sex,stringTeacher_age,stringLesion_id){//添加教师信息stringsql="INSERTINTOTeacherVALUES(""+Teacher_id+"",""+Teacher_name+"",""+Teacher_sex+"",""+Teacher_age+"",""+Lesion_id+"")";SqlCommandcmd=newSqlCommand();45 using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码}}publicvoidAddMsg7(stringLession_id,stringLession_name,stringLession_credit){//添加课程信息stringsql="INSERTINTOLessionVALUES(""+Lession_id+"",""+Lession_name+"",""+Lession_credit+"")";SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码}}publicvoidAddMsg8(stringStudent_id,stringLession_id,floatDdegree,stringTeacher_id,stringXuenian,stringXueqi){//添加成绩stringsql="INSERTINTODegreeVALUES(""+Student_id+"",""+Lession_id+"",""+Ddegree+"",""+Teacher_id+"",""+Xuenian+"",""+Xueqi+"")";SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(connStr)){//数据库的连接代码}}publicstringReaderMsg(stringSysuser_name){//获取指定用户的密码stringpw="";stringsql="selectSysuser_mimafromSysuserwhereSysuser_name=""+Sysuser_name+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){pw=reader["Sysuser_mima"].ToString();45 }reader.Close();conn.Close();returnpw;}publicstringReaderMsg1(stringSysuser_name){//获取指定用户的使用权限stringrole="";stringsql="selectSysuser_rolefromSysuserwhereSysuser_name=""+Sysuser_name+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){role=reader["Sysuser_role"].ToString();}reader.Close();conn.Close();returnrole;}publicstringReaderMsg2(stringSysuser_name){//获取指定用户的姓名stringname="";stringsql="selectStudent_namefromStudentwhereStudent_id=""+Sysuser_name+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){name=reader["Student_name"].ToString();}reader.Close();conn.Close();returnname;45 }publicstring[]ReaderMsg3(stringSysuser_name){//获取指定用户的信息string[]info;info=newstring[7];stringsql="select*fromStudentwhereStudent_id=""+Sysuser_name+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){info[0]=reader["Student_id"].ToString();info[1]=reader["Student_name"].ToString();info[2]=reader["Student_sex"].ToString();info[3]=reader["Student_age"].ToString();info[4]=reader["Minzu"].ToString();info[5]=reader["Zzmianmao"].ToString();info[6]=reader["Class_id"].ToString();}reader.Close();conn.Close();returninfo;}publicboolReaderMsg4(stringClass_id){//查询班级号是否存在stringsql="selectClass_idfromClasswhereClass_id=""+Class_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();if(reader.Read()!=false){returnfalse;}reader.Close();conn.Close();returntrue;}publicboolReaderMsg5(stringStudent_id)45 {//查询学号是否存在stringsql="selectStudent_idfromStudentwhereStudent_id=""+Student_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();if(reader.Read()!=false){returnfalse;}reader.Close();conn.Close();returntrue;}publicboolReaderMsg6(stringXuanke_id){//查询课程号是否存在stringsql="selectXuanke_idfromSelectlessionwhereXuanke_id=""+Xuanke_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();if(reader.Read()!=false){returnfalse;}reader.Close();conn.Close();returntrue;}publicboolReaderMsg7(stringTeacher_id){//查询教师工号是否存在stringsql="selectTeacher_idfromTeacherwhereTeacher_id=""+Teacher_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();if(reader.Read()!=false){returnfalse;}reader.Close();45 conn.Close();returntrue;}publicboolReaderMsg8(stringLession_id){//查询课程编号是否存在stringsql="selectLession_idfromLessionwhereLession_id=""+Lession_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();if(reader.Read()!=false){returnfalse;}reader.Close();conn.Close();returntrue;}publicstring[]ReaderMsg9(stringLession_name){//获取指定课程的课程编号和学分string[]info;info=newstring[2];stringsql="selectLession_id,Lession_creditfromLessionwhereLession_name=""+Lession_name+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){info[0]=reader["Lession_id"].ToString();info[1]=reader["Lession_credit"].ToString();}reader.Close();conn.Close();returninfo;}publicstringReaderMsg10(stringTeacher_name,stringLession_name){//获取指定教师和课程名称的教师工号stringid="";45 stringsql="selectTeacher_idfromTeacherwhereTeacher_name=""+Teacher_name+""andLesion_id=(selectLession_idfromLessionwhereLession_name=""+Lession_name+"")";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){id=reader["Teacher_id"].ToString();}reader.Close();conn.Close();returnid;}publicstring[]ReaderMsg11(stringSysuser_name){//获取指定教师的信息string[]info;info=newstring[5];stringsql="select*fromTeacherwhereTeacher_id=""+Sysuser_name+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){info[0]=reader["Teacher_id"].ToString();info[1]=reader["Teacher_name"].ToString();info[2]=reader["Teacher_sex"].ToString();info[3]=reader["Teacher_age"].ToString();info[4]=reader["Lesion_id"].ToString();}reader.Close();conn.Close();returninfo;}publicfloatReaderMsg12(stringXuanke_id,stringClass_id,stringLession_id,stringTeacher_id){//老师计算某班某课的平均成绩45 floatid=0.00f;inti=1;floatcj=0.00f;stringsql="SELECTDdegreeFROMDegreewhereStudent_idin(selectStudent_idfromStudentwhereStudent_idin(selectStudent_idfromStudentlessionwhereXuanke_id=""+Xuanke_id+"")andClass_id=""+Class_id+"")andLession_id=""+Lession_id+""andTeacher_id=""+Teacher_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){id=id+float.Parse(reader["Ddegree"].ToString());i++;}cj=id/i;reader.Close();conn.Close();returncj;}publicfloatReaderMsg13(stringStudent_id,stringTeacher_id){//老师通过学号查询学生成绩floatid=0.00f;stringsql="SELECTDdegreeFROMDegreewhereStudent_id=""+Student_id+""andTeacher_id=""+Teacher_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){id=float.Parse(reader["Ddegree"].ToString());}reader.Close();conn.Close();returnid;}45 publicfloatReaderMsg14(stringStudent_name,stringTeacher_id){//老师通过学生姓名查询学生成绩floatid=0.00f;stringsql="SELECTDdegreeFROMDegreewhereStudent_idin(SELECTStudent_idFROMStudentwhereStudent_name=""+Student_name+"")andTeacher_id=""+Teacher_id+""";SqlConnectionconn=newSqlConnection(connStr);conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){id=float.Parse(reader["Ddegree"].ToString());}reader.Close();conn.Close();returnid;}}附录B:系统使用说明首先安装数据库SQLserver2000版本。再将本系统所在的文件夹拷贝到硬盘,在SQLserver数据库中把本系统的数据库xscjglxt(在数据库文件夹下)附加到数据库,使用Windows身份登录,当数据库配置好后,启动数据库服务器。再配置好IIS后,在浏览器的地址栏输入http://localhost/xsglxt/denglujiemian.aspx后回车,即可进入本系统的登录界面了;在系统登录界面上输入正确的用户名和密码,而且选择正确的登录角色,即可进入系统主功能界面,此时用户可根据自身需要选择功能模块完成相应操作。实际操作中用户应注意填写、修改或删除一些信息时的限制条件。如以下所述:1、填写信息时,不能为空;2、学生在选课时,所选的课程不能重复;3、教师在所有学生成绩都录入完后,在点击提交。用户操作结束后,可在界面右上角选择“安全退出”即可退出。本系统操作简单,在具体要求的操作时,只需点击鼠标和键盘即可进行相应功能的选择和操作。45'