毕业设计(论文)-基于uml的教务管理系统的分析与设计.doc_第1页
毕业设计(论文)-基于uml的教务管理系统的分析与设计.doc_第2页
毕业设计(论文)-基于uml的教务管理系统的分析与设计.doc_第3页
毕业设计(论文)-基于uml的教务管理系统的分析与设计.doc_第4页
毕业设计(论文)-基于uml的教务管理系统的分析与设计.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文本科毕业论文( (设计设计) ) 基于基于 umluml 的教务管理系统的分析与设计的教务管理系统的分析与设计 二级学院二级学院医药信息工程学院医药信息工程学院 专专 业业 信息系统与信息管理(医药信息系统与信息管理(医药 软件工程方向)软件工程方向) 班班 级级20062006 级级 学生姓名学生姓名 xxxxxxxx 学学 号号 06075011300607501130 指导教师指导教师 xxxxxxxx 2010 年 4 月 诚诚 信信 声声 明明 我声明,所呈交的毕业论文(设计)是本人在老师指导下进行的研究工作 及取得的研究成果。据我查证,除了文中特别加以标注和致谢的地方外, 论文(设计)中不包含其他人已经发表或撰写过的研究成果,也不包含为 获得其他教育机构的学位或证书而使用过的材料。我承诺,论文(设计) 中的所有内容均真实、可信。 毕业论文(设计)作者(签名): 年 月 日 基于基于 umluml 的教务管理系统的分析与设计的教务管理系统的分析与设计 【摘要摘要】 随着计算机技术和信息技术的快速发展,教务管理系统已经广 泛运用于学校教务管理中,成为学校信息系统重要组成部分,是学校管理信息 化的基础建设工程之一。但教务管理这个涉及到复杂、琐碎、操作频繁的工作, 仅仅靠传统的手工管理已不适应当前科研迅速发展的要求,走教务管理系统化、 网络化、现代化的管理之路已是必然。 本论文根据现今流行的教务管理网分析教务管理系统的基本元素,把各项 要素汇总并转化为用例图编写在需求分析中;通过需求分析,构建一个基于 uml 的总体架构,同时设计数据库的各个表结构;根据以上内容进行系统的详 细设计,定义各个类及其方法的使用规则。该教务系统主要采用.net 技术、数 据库技术和 uml 建模思想,采用了 vs.net2005 开发平台和 sql server 2005 数据库,并以 iis 作为服务器。本系统分为管理员、教师、学生三种用户 角色,主要涉及教务资源的管理、查询、排课选课、成绩打印等业务。采用了 uml 建模思想和方法是该系统的一大特色,大大提高了系统开发的效率和质量, 且该系统简小易操作,可大大提高教务管理的水平。 【关键词关键词】教务系统;uml;vs.net;sql server2005 the design and analysis of educational management system based on uml abstract with the quick development of the computer technology and information technology, the educational management system has been used widely in the educatianal management. the educational management system is an important part of school information system in the school information infrastructures.but the educational management is involve to the complex,trival work with operates frequently . only depending on the traditional and manual management is not adapt to the fast development demand of current scientific research. it is a inevitable road for the educational management system to become systematization , networking and modernization . it analyed the fashionable educational management system basic element.i collected the elements to take it to the use case diagram ,and write down to the requirement analyzing.building a educational management system model,and designing the database table. basing on that,i design the detail project. this system mainly uses the .net technique, the data bank technology and the uml modelling thought,basing on the development platform of vs.net ,sql server and iis. there are three user roles in the system, who are admin, teacher and student. the main business of this system are about educational resources management, inquiry , printing and so on . has used the uml modelling thought and the method is this systems a big luminescent spot and raised the system development efficiency and the quality greatly .this system is easy to operate, it can enhance the school manage standard and efficiency greatly. keywords educational management system uml vs.net sql server2005 目录目录 1前言前言.1 2绪论绪论.2 2.12.1 系统开发背景系统开发背景 2 2 2.1.1国内外现状和发展趋势.2 2.1.2系统开发目的与意义.3 2.22.2 开发工具开发工具 3 3 3系统需求分析系统需求分析.4 3.13.1 用户用户 4 4 3.23.2 系统功能系统功能 4 4 3.33.3 需求用例图需求用例图 4 4 4详细分析和设计详细分析和设计.7 4.14.1 静态模型设计静态模型设计 7 7 4.24.2 定义对象类定义对象类 7 7 4.2.1建立数据库模型.8 4.2.2建立包图.10 4.34.3 动态行为模型动态行为模型 1212 4.3.1顺序图.12 4.3.2协作图.14 4.3.3状态机图.16 4.3.4活动图.17 4.44.4 物理模型物理模型 1818 4.4.1配置图.18 5系统的页面设计和代码实现系统的页面设计和代码实现.21 5.15.1 公共类公共类 2121 5.25.2 登陆界面登陆界面 2222 5.35.3 教务前台学生管理界面教务前台学生管理界面 2323 5.3.1导航界面.23 5.3.2个人信息界面.25 5.3.3密码修改页面.25 5.3.4课程信息查询页面.26 5.3.5选课信息页面.27 5.3.6成绩查询页面.30 5.45.4 教务后台管理典型页面教务后台管理典型页面 3232 5.4.1导航界面.32 5.4.2增加学生界面.33 5.4.3课程管理界面.34 5.4.4成绩管理界面.36 6系统测试系统测试.41 6.16.1 测试目的测试目的 4141 6.26.2 测试工程测试工程 4141 6.2.1单元测试.41 6.2.2集成测试.42 6.2.3系统测试.42 6.2.4运行阶段测试.42 6.36.3 各个工程阶段的复核各个工程阶段的复核 4343 6.46.4 测试方法测试方法 4343 6.56.5 测试举例测试举例 4343 7结束语结束语.45 参考文献参考文献46 致谢致谢47 1 1 1前言前言 目前比较常见的教务系统模式有两种:c/s 和 b/s,其中 b/s 是 browser/server 指浏览器和服务器端,在客户机端不用安装专门的软件,只要一 个浏览器即可(瘦客户端) ;c/s 是 client/server 指客户机和服务器,在客户机 端必须装客户端软件及相应环境后,才能访问服务器(胖客户端) ,两种模式各 有千秋。但 b/s 最大的优点是客户端不用维护,用户群庞大,这更能满足信息 高速发展的应用需求。 近年来,随着计算机网络技术的发展与普及,软件系统的需求量越来越多, 而且越趋复杂多样,如何更好的开发软件,做好软件工程管理越来越受到软件 行业的青睐,应运而生的 uml 顺理成章成了焦点中的焦点。uml 作为一种模 型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语 言和算法实现。大大提高了开发人员的开发效率和软件的质量。 统一建模语言(uml 是 unified modeling language 的缩写)是用来对软件 密集系统进行可视化建模的一种语言,虽然其中某些概念尚待实践来验证,但 uml 也必然存在一个进化过程,它显示出来的强大的生命力,将在软件工程上 发挥举足轻重的作用5。基于 uml 开发的教务管理系统将能降低开发风险和成 本,也更能满足用户的需求,实现开发者和使用者的双赢。 2 2 2绪论绪论 2.12.1 系统开发背景系统开发背景 2.1.1 国内外现状和发展趋势国内外现状和发展趋势 随着高校改革的深入,招生规模、教职工队伍、校园面积不断扩大,一所学校 有几个校区,系部、学院而且所处分散,学生信息管理、教学评估管理等都极不方 便,而且数据繁琐,一致性低,不便于统计和维护。必须发挥计算机软件系统 的优势,以适应形势发展的需要。 开发软件系统需要一定的方法和技术,传统的结构化开发方法存如下问题: 1.软件重用性差。2.软件可维护性差。3.开发出的软件不能满足用户需要。用这 种方法设计出来的系统结构常常是不稳定的 ,用户需求的变化往往造成系统结 构的较大变化,从而需要花费很大代价才能实现这种变化。 应运而生的面向对象(object oriented, oo)是当前计算机界关心的重点,它 是 90 年代后软件开发方法的主流。因此向对象设计有模块化、抽象、信息隐藏、 低耦合、高内聚等准则使它的概念和应用已超越了程序设计和软件开发,扩展 到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系 统、网络管理结构、cad 技术、人工智能等领域。 统一建模语言 uml 是面向对象软件开发方法的重要技术。它是一种定义 良好、功能强大、普遍适用的建模语言。它溶入了软件工程领域的新思想、新 方法和新技术2。 标准建模语言 uml 的主要特点可以归结为三点: (1) uml 统一了面向对象的 booch、omt 和 oose 等方法中的基本概 念。 (2) uml 还吸取了面向对象技术领域中其他流派的长处,其中也包括非 oo 方法的影响。 (3)uml 在演变过程中还提出了一些新的概念。 因此可以认为,uml 是一种先进实用的标准建模语言,虽然其中某些概 念尚待实践来验证,但 uml 也必然存在一个进化过程,它显示出来的强大的 3 生命力,将在软件工程上发挥举足轻重的作用。基于 uml 开发的教务管理系 统将能降低开发风险和成本,也更能满足用户的需求,实现开发者和使用者的 双赢。 2.1.2系统开发目的与意义系统开发目的与意义 教务管理系统是一个面向学校教务管理人员、教师和学生并为其提供服务 的综合管理系,包括学生信息管理、选课排课管理、教学资源管理和教学计划 管理等,其是一项复杂、琐碎、操作频繁的工作,仅仅靠传统的手工管理已不 适应当前科研技术迅速发展的要求。那么,走教务管理系统化、网络化、现代 化的管理之路已是必然。 uml 作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而 不是选用什么程序语言和算法实现5。大大提高了开发人员的开发效率和提高 系统质量。 统一建模语言(uml 是 unified modeling language 的缩写)是用来对软件 密集系统进行可视化建模的一种语言。uml 是在开发阶段说明、构建和书写一 个面向对象软件密集系统的制品的开放方法,可以贯穿软件开发周期中的每一 个阶段,特别适用于数据建模,业务建模,对象建模,组件建模2。基于 uml 的教务管理系统,在开发上方便了开发人员开发工作和维护工作,在运行上, 实现了教务管理人员、学生、老师等的网上管理数据功能,保证了数据的一致 性、减少了重复繁杂的劳动,使教务管理工作迈上了新的台阶。 2.22.2开发工具开发工具 开发平台: 数据库:sql server 建模工具:rational rose 服务器组件:iis 运行环境:普通的 pc 机,浏览器即可 4 3 3系统需求分析系统需求分析 3.1 用户用户 经过分析和调研,本系统的用户主要有学校教务管理人员、教师和广大学 生。 3.2 系统功能系统功能 标号模块功能 h1学生管理实现学生的查询、添加、删除和编辑 h2教师管理实现教师的查询、添加、删除和编辑 h3班级管理实现班级的查询、添加、删除和编辑 h4课程管理 实现必修和选修课程的查询、添加、删除、编 辑以及课程分配 h5选课管理查询学生选课信息和退选选课学生 h6成绩管理实现成绩的查询、统计、添加、编辑和打印 h7最新资讯发布新资讯和浏览资讯 h8个人信息修改密码 q1最新资讯浏览资讯 q2课程信息浏览课程 q3选课信息浏览选课信息、查看选课情况、注册选课 q4成绩查询 按学年和按课程类型查询,显示各科成绩并统 计出各不同课程类型的中成绩 q5个人信息个人信息的查询和密码维护 3.3需求用例图需求用例图 模型中的活动者代表外部与系统交互的单元,包括学生、教师、教务管理 人员;业务用例框图是对系统需求的描述,表达了系统的功能和所提供的服务2。 系统的主要用例图如下: 5 图 3-1 教务系统主要关联的 use case 图 图 3-2 课程管理的 use case 图 图 3-3 成绩管理的 use case 图 图 3-4 选课管理的 use case 图 6 图 3-5 管理员权限 use case 图 图 3-6 教师权限 use case 图 图 3-7 学生权限 use case 图 7 4 4详细分析和设计详细分析和设计 4.1 静态模型设计静态模型设计 静态逻辑模型描述实例化(类成员关系) 、关联、聚集(整体/部分) 、和一 般化(继承)等关系。这被称为对象模型。一般化关系表示属性和方法的继承 关系。定义对象模型的图形符号体系通常是从用于数据建模的实体关系图导出 的。对设计十分重要的约束,如基数(一对一、一对多、多对多) ,也在对象模 型中表示7。 4.2 定义对象类定义对象类 首先从研究 use case 中发现对象类,确定类的属性和主要操作。 对于系 统可以抽象出以下一些主要的对象类: (1)在人事信息管理方面有“学生”类、 “教师”类和“管理员”类。 (2)在业务处理方面有“课程”类、 “开设课程”类、 “学生登记”类、 “课程登记” 类、 “学生成绩统计类” 、 “成绩统计类” 、 “资讯类”等。 系统的主要类图如下: 图 4-1 成绩管理对象类 8 图 4-2 课程管理对象类 图 4-3 人事管理对象类 4.2.1建立数据库模型建立数据库模型 本教务系统采用关系数据库系统存储和管理数据,在分析和设计系统的静 态结构模型时需要进行数据分析和数据库设计。 (1)系统有 6 个方面的数据需要管理: 人员数据(学生、教师) 班级数据 课程数据 选课注册数据 学生成绩数据 最新资讯数据 (2)经过分析,系统至少应有 8 个数据库表: 学生表、教师表、班级表、课程表、开设课程表、任课表、用户表、资讯 表。这些基本表定义为: 学生(学号、姓名、性别、民族、出生日期、入学时间、专业、生源、备 9 注) 教师(教号、姓名、职称、所属院系) 课程(课号、课程名、学时、学分、课程类型、备注) 开设课程(编号、学号、课程号、成绩、学期) 任课表(编号、教号、课号、班级、学期) 班级(班号、院系、学院、班主任、班级名) 用户表(用户号、密码、权限) 资讯表(编号、题目、发布时间、出处、内容) 对上述的基本表需要进行关系规范化,设计触发器、存储过程等,数据库 模式通常用实体关系模型(erd)表示,下面是数据库的 e-r 图: 资讯 班级 任课开设课程 课程教师 学生 用户 插入 注册选课 查询 插入 发布查询 属于 对应 任教管理 查询设置 分配 查询管理 * 1 1 * * 1 1* 13 * * * * * * * 1 * * 图 4-4 系统数据库 e-r 图 10 学号 姓名 性别 民族 出生日 期 学生 生源 入学时 间 班级 备注 图 4-6 数据表间的关系 4.2.2建立包图建立包图 对于一个大型的复杂的系统,常需要把大量的模型元素用包组织起来,以 方便理解和处理。 本系统虽然不算大,但也可以把系统的对象类组织成包,以便更清楚地了 解系统的结构。 包图表示的是系统的静态结构,但是建立包图应当同时考虑系 统的动态行为。 本系统的包图,如图“教务系统的包图”所示,一共有 5 个包: “教学管理”包、 “用户接口”包、 “数据库”包、 “mfc 类”包、 “出错处理”包。 图 4-5 学生实体 e-r 图 11 图 4-6 教务系统包图 (1)在“用户接口”包中包含了全部接口对象类:“课程信息管理表单”、 “查 询课程表单”、 “查询成绩表单”、 “选课注册表单”、 “开设课程表单”、 “选课统计表单” 、 “成绩信息管理表单”、 “成绩统计表单”、 “注册表单”等。 “教学管理”包中包含了为实现教学管理业务领域任务的全部对象类。 (2)在“数据库”包中包含了实现数据库服务功能的全部对象类。 (3)在“mfc 类”包中包含了支持系统的动态连接库的必要的库函数对象 类。 (4)在“出错处理”包中包含了实现数据库服务功能的全部对象类。 教务管理系统由两个子系统组成: (1)教务后台管理子系统,负责教学资源的配置、规划和查询等管理工作。 (2)教务前台学生子系统,负责学生的教学信息、个人信息成绩等的查询 和选课等工作。 其包图和各子系统的包图如图 4-7: 图 4-7 教务系统与子系统的包图 12 图 4-8 教务后台管理包图 图 4-9 教务前台学生包图 4.3 动态行为模型动态行为模型 类和对象的识别包括找出问题空间中关键的抽象和产生动态行为的重要机 制。开发人员可以通过研究问题域的术语发现关键的抽象。语义的识别主要是 建立前一阶段识别出的类和对象的含义。开发人员确定类的行为(即方法)和 类及对象之间的互相作用(即行为的规范描述) 。该阶段利用状态转移图描述对 象的状态的模型,利用时态图(系统中的时态约束)和对象图(对象之间的互 相作用)描述行为模型。 系统的动态行为模型有交互图(顺序图和协作图) 、状态机图和活动图表达。 在系统的分析和设计中应当对主要的 use case 和对象类绘制这些图形,以便分 析系统的行为,印证和修改系统的静态结构,满足用户的需求,达到系统的目 的12。 13 4.3.1顺序图顺序图 为了绘制顺序图,首先要对一个 use case 编写交互活动的剧本,然后确定 参与交互的活动者和对象,确定交互事件。 图 4-10 学生选课顺序图 例:学生选课顺序图,如图“学生选课顺序图”所示。 其中的交互事件如下: 1登录 学生登录基于 uml 教务管理系统进行选课活动。学生发出登录消息,输 入用户号、密码和角色。 2验证 “用户表单”接口对象响应登录消息,检查用户号、密码和角色。如果正 确无误,则可以进行下一步交互;否则提示用户重新输入用户号、密码和角色, 进行新一轮的身份验证。 3查询 学生发出要求查询已有的课程消息, “课程”接口对象响应该消息,按照输 入的查询条件从数据库中找出相关的课程,在屏幕上显示。 4选课 根据已查询到的课程信息,选择自己要选的课程,并输入相关消息 。 5增加 “课程”接口对象发出选课消息, “开设课程”对象响应消息,并在开设课 程表中增加选课的学生。 14 6取消 不对前面的选课进行任何的操作。 7提交 在完成了课程设置操作后,学生发出请求提交的消息,进行存储选课的操 作。 “课程”接口对象响应请求。 8存储 “课程”接口对象发出“存储消息” , “开设课程”对象响应消息,进行数 据库操作,把选课的结果数据真正存入数据库。 9退出 学生发出退出系统的消息, “用户表单”接口对象响应请求,关闭系统。 同样可以绘制教师添加成绩顺序图和管理员打印成绩顺序图,如下图所示: 图 4-11 教师添加成绩顺序图 15 图 4-12 管理员打印成绩顺序图 4.3.2 协作图协作图 协作图和顺序图相似,两类图所表达的是同一种信息,可以将序列图转换 为协作图,反之也然。但两者是有区别的,顺序图强调的是交互的时间序列, 协作图强调的是交互的语境和参与交互的对象的整体组织2。 协同图用于描述系统的行为是如何由系统的成分实现的。对于基于 uml 教务管理系统也需要绘制主要的 use case 的协同图,以深入了解和表示系统的 行为和各个对象的作用。 下图描述的是上述顺序图对应的协作图。 图 4-13 学生选课协作图 图 4-14 教师添加成绩协作图 16 图 4-15 管理员打印成绩协作图 4.3.3 状态机图状态机图 状态机图表现一个对象(类)的生命史。对于一些实现重要行为动作的对 象应当绘制状态机图。 绘制状态机图需要确定一个对象的生命期可能出现的全 部状态,哪些事件将引起状态的转移,将会发生哪些动作。 例如,对于教务管理系统中的一个学生选课注册的“学生登记”对象,可能 有的状态如下: 1 “初始化”状态 “学生登记”对象一旦被创建就进入“初始化”状态。在本状态的动作时 初始化课程登记和设置初始化参数,即课程数 count=0。 2 “增加课程”状态 当在对象的“初始化”状态或“增加课程”状态时发生了“增加课程”事 件,而且满足条件“countalert(用户名、密码或角色错误);location.href = login.aspx;“); return; else /弹出用户密码为空提示 response.write(“alert(用户名和密码不得为空);location.href = default.aspx;“); return; 5.3 教务前台学生管理界面教务前台学生管理界面 5.3.1 导航界面导航界面 学生用户在使用该导航可以轻松找到自己的目标页面,实现导航用到了 treeview 控件、sitemapdatesourse 控件、sitemap 站点地图等,方便浏览,也为 日后系统二次开发导航的便捷实现提供服务。界面如图 5-2 所示: 24 图 5-2 导航界面 实现代码如下: 在 web.config 中声明 在 stu_nav.sitemap 中 25 5.3.2 个人信息个人信息界面界面 在该页面上显示的是登陆用户的基本信息。界面如图 5-3 所示: 图 5-3 个人信息界面 主要实现代码如下: string st_sqlstr = “select * from st_student where st_student_id=id“; sqlcommand st_comm = new sqlcommand(st_sqlstr, st_conn); st_comm.parameters.add(new sqlparameter(“id“, sqldbtype.varchar, 50); st_comm.parameters“id“.value = session“user_id“.tostring(); st_conn.open(); sqldatareader st_dr = st_comm.executereader(); rp_infor.datasource = st_dr; rp_infor.databind(); st_conn.close(); 5.3.3 密码修改页面密码修改页面 该页面主要是提供用户修改自己的密码,但是不能修改用户名,用户名是学 校统一分配的,不予修改,而且在修改过程中还输入旧密码进行确认,界面如 图 5-4 所示: 图 5-4 密码修改界面 主要实现代码如下: protected void tbx_modify_click(object sender, eventargs e) sqlconnection st_conn=dbutil.sqlconn (); st_conn.open(); 26 string st_sqlstr = “update st_users set st_user_password=“ + tbx_newpwd.text + “ where st_user_id=“ + session“user_id“.tostring() + “; string st_sqlstr1 = “select st_user_password from st_users where st_user_id=“ + session“user_id“.tostring() + “; sqlcommand st_comm1 = new sqlcommand(st_sqlstr1, st_conn); sqldatareader st_dreader1 = st_comm1.executereader(); if (st_dreader1.read() string a = st_dreader1“st_user_password“.tostring(); st_conn.close(); st_conn.open(); sqlcommand st_comm = new sqlcommand(st_sqlstr, st_conn); response.write(a); if (tbx_pwd.text = a) try st_comm.executenonquery(); response.write(“alert(修改成功!)“); catch (sqlexception) response.write(“alert(修改失败)“); else response.write(“alert(请输入正确的原密码!)“); st_conn.close(); 5.3.4 课程信息查询页面课程信息查询页面 课程查询有两种方式,一种是按课程号查询,一种是按课程名查询,如图 5-5 所示: 27 图 5-5 课程查询页面 主要实现代码: protected void btn_search_click(object sender, eventargs e) if (tbx_id.text.trim() = “ else if (tbx_id.text.trim() != “) gv_cour.datasource = dbutil.showall(“course_select1“, tbx_id.text.trim(), “course_id“); gv_cour.databind(); dbutil.sqlconn().close(); else gv_cour.datasource = dbutil.showall(“course_select2“, tbx_name.text.trim(), “course_name“); gv_cour.databind(); dbutil.sqlconn().close(); 5.3.5 选课信息页面选课信息页面 选课流程是选查看了当年的选修课的内容,然后根据课程名,选择任课老 师和学年。可以通过“查看选课情况查”看有多少人选修了这门课程,最后决 定是否选课,其界面如图 5-6 所示: 图 5-6 选课信息页面 主要实现代码如下: protected void tbn_search_click(object sender, eventargs e) 28 if (ddl_courname.selecteditem.text = “) if (tbx_teaname.text = “) st_sqlstr = “select st_course.st_course_name,st_course.st_course_id,st_teacher.st_teacher_name,st_course.s t_course_credit,st_course.st_course_period from st_course,st_teacher,st_teacher_course where st_teacher_course.st_course_year=“ + ddl_tearn.selecteditem.text + “ and st_teacher_course.st_course_id=st_course.st_course_id and st_teacher_course.st_teacher_id=st_teacher.st_teacher_id“; else st_sqlstr = “select st_course.st_course_name,st_course.st_course_id,st_teacher.st_teacher_name,st_course.s t_course_credit,st_course.st_course_period from st_course,st_teacher,st_teacher_course where st_teacher_course.st_course_year=“ + ddl_tearn.selecteditem.text + “ and st_teacher_course.st_course_id=st_course.st_course_id and st_teacher_course.st_teacher_id=st_teacher.st_teacher_id and st_teacher.st_teacher_name=“ + tbx_teaname.text + “; else if (tbx_teaname.text = “) st_sqlstr = “select st_course.st_course_name,st_course.st_course_id,st_teacher.st_teacher_name,st_cou rse.st_course_credit,st_course.st_course_period from st_course,st_teacher,st_teacher_course where st_teacher_course.st_course_year=“ + ddl_tearn.selecteditem.text + “ and st_teacher_course.st_course_id=st_course.st_course_id and st_teacher_course.st_teacher_id=st_teacher.st_teacher_id and st_course.st_course_name=“ + ddl_courname.selecteditem.text + “; else st_sqlstr = “select st_course.st_course_name,st_course.st_course_id,st_teacher.st_teacher_name,st_cou rse.st_course_credit,st_course.st_course_period from st_course,st_teacher,st_teacher_course where st_teacher_course.st_course_year=“ + ddl_tearn.selecteditem.text + “ and st_teacher_course.st_course_id=st_course.st_course_id and st_teacher_course.st_teacher_id=st_teacher.st_teacher_id and 29 st_course.st_course_name=“ + ddl_courname.selecteditem.text + “ and st_teacher.st_teacher_name=“ + tbx_teaname.text + “; sqldataadapter st_da=new sqldataadapter(st_sqlstr,st_conn1); dataset st_ds=new dataset(); st_da.fill(st_ds); gv_sort.datasource=st_ds; gv_sort.databind(); protected void tbn_sort_click(object sender, eventargs e) /在数据库中找出选此课的总人数 string st_sqlstr = “select count(st_student_id) from st_student_course where st_course_id=“ + tbx_courid.text + “ and st_course_year=“ +ddl_tearn.selecteditem.value + “; sqlcommand st_comm1 = new sqlcommand(st_sqlstr, st_conn1); st_conn1.open(); sqldatareader st_dr1 = st_comm1.executereader(); if (st_dr1.read() lbl_all.text = “选此课总人数为:“ + st_dr10.tostring(); else lbl_all.text = “无人选此课“; st_conn1.close(); protected void tbn_chose_click(object sender, eventargs e) if (i =true ) st_sqlstr = “insert into st_student_course(st_student_id,st_course_id,st_course_year) values(student_id,course_id,course_year)“; sqlcommand st_comm = new sqlcommand(st_sqlstr, st_conn1); st_comm.parameters.add(new sqlparameter(“student_id“, sqldbtype.varchar, 50); st_comm.parameters.add(new sqlparameter(“course_id“, sqldbtype.varchar, 50); st_comm.parameters.add(new sqlparameter(“course_year“, sqldbtype.varchar, 50); st_comm.parameters“student_id“.value = session“user_id“.tostring(); st_comm.parameters“course_id“.value = tbx_courid.text; st_comm.parameters“course_year“.value = ddl_year.selecteditem.text; 30 st_conn1.open(); try st_comm.executenonquery(); response.write(“alert(选课成功!)“); catch (sqlexception) response.write(“alert(选课失败!)“); st_conn1.close(); else response.write(“alert(请重新选择!)“); 5.3.6 成绩查询页面成绩查询页面 该页面分按学年查询,全部查询和按课程类型查询,这样可以达到满足 不同用户不同的需求,并可以显示出所查询不同类型成绩的总学分,如图 5-7 所示: 图 5-7 成绩查询页面 按学年查询的数据库查询语句: st_sqlstr = “select st_course.st_course_name,st_student_course.st_course_id,st_course_year,st_student_gra de,st_course_credit,st_course_kind from st_student_course,st_course where st_course_year=“ + ddl_year.selecteditem.text + “ and 31 st_student_course.st_course_id=st_course.st_course_id and st_student_id=“ + session“user_id“.tostring() + “; 全部学年查询的数据库查询语句: st_sqlstr = “select st_course.st_course_name,st_student_course.st_course_id,st_course_year,st_student_gra de,st_course_credit,st_course_kind from st_student_course,st_course where st_student_course.st_course_id=st_course.st_course_id and st_student_id=“ + session“user_id“.tostring() + “; 全部课程类型查询的数据库查询语句: st_sqlstr = “select st_course.st_course_name,st_student_course.st_course_id,st_course_year,st_student_gra de,st_course_credit,st_course_kind from st_student_course,st_course where st_course_kind=“ + ddl_courkind.selecteditem.value + “ and st_student_course.st_course_id=st_course.st_course_id and st_student_id=“ + session“user_id“.tostring() + “; 查询显示函数: public void display() /选出选修课总学分,条件是必须及格 st_sqlstr = “select sum(st_course_credit) from st_course,st_student_course where st_course_year=“ + ddl_year.selecteditem.text + “ and st_student_id=student_id and st_student_course.st_course_id=st_course.st_course_id and st_course_kind=2 and st_student_grade=60 “; sqlcommand st_comm = new sqlcommand(st_sqlstr, st_conn); st_comm.parameters.add(new sqlparameter(“student_id“, sqldbtype.varchar, 50); st_comm.parameters“student_id“.value = session“user_id“.tostring(); st_conn.open(); sqldatareader dr = st_comm.executereader(); if (dr.read() lbl_sort.text = dr0.tostring(); response.write(“wwwww“ + lbl_sort.text); else lbl_sort.text = “0“; response.write(“hhajajfla “ + lbl_sort.text); st_conn.close(); /选出非选修课总学分,条件是必须及格 st_sqlstr1 = “select sum(st_course_credit) from st_course,st_student_course where st_course_year=“ + ddl_year.selecteditem.text + “ and st_student_id=student_id and st_student_course.st_course_id=st_course.st_course_id and st_course_kind=60“; 32 st_comm = new sqlcommand(st_sqlstr1, st_conn); st_comm.parameters.add(new sqlparameter(“student_id“, sqldbtype.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论