防 灾 科 技 学 院
毕 业 设 计
题 目 学生姓名 系 别 班 级
学生选课系统的设计与实现
涂语楠 灾害信息工程系
07302
学 号
*******
专 业 信息管理与信息系统
2011年06月11日
讲师
开题时间 2011 年 1 月 1 日 答辩时间 指导教师
白灵
职 称
I
学生选课系统的设计与实现
作者:涂语楠 指导老师:白灵
摘要: 随着我校大学生人数的不断增加,使得教务管理系统的数据量也不断上涨。
为了减轻教务处的教务管理工作,以及方便学生选择自己所喜欢的科目。学生选课系统针对这一环节,实现教学资源实体与学生两个集合的协调统一,规避课程分配冲突,更加有效衔接教学管理系统的各子系统的关系。本系统是一个典型的信息管理系统,其开发主要包括后台数据库的建立和维护,以及客户端程序的开发两个方面。
本文通过分析客户端/服务器结构的特点并结合选课的实际情况,提出了基于客户端/服务器结构选课系统的基本设计思想,简要介绍了系统需求分析和系统的功能设计、ACCESS数据库设计、C#程序设计及系统实现过程。重点描述了如何利用C#以及ACCESS数据库管理系统相结合的方法来开发基于客户端的选课系统。并在试运行的基础上对系统进一步完善提出了改进方案。通过该系统,使学生可以方便地在局域网内的计算机上安装客户端进行选课。
关键词:学生选课,客户端/服务器结构,C#,ACCESS数据库管理系统
I
The Design and Implementation of Student Select Course System
Author:TU Yu-nan Instructor:BAI Ling
Abstract: With the increasing number of college students, the amount of data continue to rise greatly in educational system. In order to reduce the work of office of Academic Affairs , and make each student to better select their own favorite subjects ,this paper designs a student select course system.Elective for students in this part of the system achieve a credit system management entity-based teaching resources and student correspondence. The system is a typical information management system, which mainly includes the establishment and maintenance of back-end database, and the client development.
This analyzes the C/S architecture combined with the characteristics of the actual situation of course selection which is proposed based on C/S architecture,a brief description of the system functional requirements analysis ,and system design, database design, ASP.NET design and system implementation process. How to use ASP.NET and the database management system develop client-based enrollment system is the focuse. And on the basis of the trial operation of the system,the proposed improvements are further improved. Students can easily install it on a computer within the LAN client courses.
Key words: Student Select Coure System, C/S, C #, Access DBMS
II
目 录
引言 ........................................................................................................................................................................... 1 1.概述 ....................................................................................................................................................................... 2
1.1课题背景 ........................................................................................................................................................ 2 1.2课题目标 ........................................................................................................................................................ 3 1.3课题意义 ........................................................................................................................................................ 3
2.需求分析 ............................................................................................................................................................ 4
2.1需求分析 ........................................................................................................................................................ 4 2.2 系统分析 ....................................................................................................................................................... 4 2.2.1 通用功能 ............................................................................................................................................ 5 2.2.2 用户具有的功能 .............................................................................................................................. 5 2.3系统结构 ........................................................................................................................................................ 6
3.相关技术背景 ................................................................................................................................................. 8
3.1 VISUAL STUDIO 2008 TEAM SYSTEM开发工具 ................................................................................... 8 3.2 ACCESS数据库 ............................................................................................................................................. 8 3.3 C#开发语言 ................................................................................................................................................. 10 3.4 MD5加密算法 ........................................................................................................................................ 11
4.系统总体设计 ............................................................................................................................................... 12
4.1功能模块简介 ............................................................................................................................................ 12 4.2面向对象分析 ............................................................................................................................................ 13
5.系统详细设计 ............................................................................................................................................... 16
5.1数据库设计 ................................................................................................................................................. 16 5.2数据库逻辑设计 ........................................................................................................................................ 16 5.3数据物理设计 ............................................................................................................................................. 17
6.系统实现 .......................................................................................................................................................... 19
6.1客户端登录界面实现 .............................................................................................................................. 19 6.2主界面的实现及权限管理 ..................................................................................................................... 19 6.3学生信息管理的实现 .............................................................................................................................. 20 6.4课程管理的实现 ........................................................................................................................................ 20 6.5学生选课信息管理的实现 ..................................................................................................................... 21 6.6个人信息的实现 ........................................................................................................................................ 22 6.7系统用户管理的实现 .............................................................................................................................. 23 6.8系统帮助的实现 ........................................................................................................................................ 24
I
6.9找回密码的实现 ........................................................................................................................................ 24
结论 ......................................................................................................................................................................... 26 致谢 ......................................................................................................................................................................... 27 参考文献 .............................................................................................................................................................. 28 附录 ......................................................................................................................................................................... 30
II
防灾科技学院毕业设计(论文、综合实践报告) 引言
在信息发展全球化,网络化的今天,校园局域网已成为每所高校所必备的信息基础设施,各种管理信息系统凭借于校园局域网应运而生。在各大高校的教务系统管理过程中,课程表的编排是一项非常复杂的工作。在排课的过程中,除了必须满足大量的制约条件以外,还需要解决很多冲突与矛盾,例如:两位老师不能同一个时间在同一间教室上课,一位教师不能在同一个时间上两门课等等。利用计算机的辅助进行课程表编排工作,不但可以提高排课工作的科学性,还大大减轻了管理人员工作的强度,提高工作效率,使得学校教务管理迈上了一个新的台阶。现在,我国的高等教育事业正在蓬勃发展,高等学校的规模不断的扩大,在此,高等学校的教学改革也在全面的推行,学分制在各大高校全面启动。所谓学分制就是允许学生在计划的指导下,根据自己的条件、能力、兴趣,有选择的支配自己的学习时间和内容。因此,学生选课管理成为了推行实施学分制管理的重要任务。由于学生选课时的制约条件较多、较复杂,工作量也比较大,而且往往需要在很短的时间内完成,因此运用计算机辅助选课,即能实时地检验和统计大量的选课数据,又能十分方便地输出选课结果,同时也避免了在人工处理时产生的错误。
学生选课系统是以数据库作为后台,数据库从60年代初发展起来到今天,经过了四十多来年的发展,数据库技术己经逐渐成熟。就数据库应用来说,呈现了多样化的空间,例如数字图书馆、电子出版物、电子商务、远程教育系统等,给数据库技术的发展提出了更多、更高的要求。
本文引言部分主要介绍了学生选课的背景,第一章概述,介绍学生选课系统的背景,做这个设计的目标以及意义;第二章介绍该选课系统的需求分析,系统分析和系统结构;第三章主要介绍了系统设计相关的背景,主要包括Visual Studio 2008 Team System开发工具、Access数据库、C#开发语言;第四章系统总体设计的介绍,主要是各模块功能的简介,和面向对象分析;第五章是数据库的详细设计,具体介绍了数据库的设计,物理设计和逻辑设计;第六章是系统各个功能的实现,详细介绍了各个模块实现的功能;论文最后是结论、致谢及参考文献。
1
防灾科技学院毕业设计(论文、综合实践报告) 1.概述
1.1课题背景
二十一世纪是科学技术竞争与民族素质竞争的时代,其本质就是人才与教育的竞争。教育的历史让我们知道,教育的每次重大改革和发展都与科学技术息息相关,科学技术是第一生产力,也是发展教育的重要动力。随着科学技术的不断进步,计算机科学技术日渐成熟,计算机在各个领域所扮演的角色越来越重要。很长时间以来,人们都在用人工的方式来管理文件档案,这种管理方式存在着很多的缺点,例如:效率低,保密性差,除此之外时间一长,将有大量的文件和数据产生,这对于查询、更新和维护都带来了很大的困难。选课信息管理系统作为计算机应用的一个部分,其优点是手工管理所无法比拟的,例如:查询方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点是学校的科学化、正规化管理的重要条件。
选课管理系统属于教学信息管理系统的一个部分。随着高等教育的发展与社会需求,各大高校尽可能多地开设各类课程,使得学生的知识面得到拓展,塑造学生的个性,培养了学生的创造能力,使学生的综合素质有所提高。但是而传统的手工选课方式非常的烦琐与复杂,由学校统一发布可选课程表,让学生事先了解可选的课程和各班选课报名的时间,然后按规定的时间到指定的地方去报名。这种方式存在着明显弊病。主要是:许多学生一起去报名,十分拥挤,很难组织;由于各班选课报名时间不同,排在后面的各班的学生常常选不到理想的课程。传统的选课方式已经不适应现代教务教学的改革和发展,迫切需要一种新的选课方式。为使教学管理工作的科学化、规范化,就必须采用计算机辅助管理。计算机管理使选课更加高效准确,省去了大量的人力劳动,提高了教学管理的信息化水平。因此,学生选课是一项非常重要的工作,主要负责对整个学校学生的选课进行管理,除此之外,还需对学生信息及课程信息进行维护,对学生所选课程的考试成绩进行记录,学生选课是实现高校学分制的一个重要环节。随着学校硬件水平的提高、信息化进程的加快,教务工作急切希望能够抛开原有繁琐的管理方式,希望能够根据学校现状的实际需求开发一套能够系统化、科学、有效、易于掌握的管理软件。
现在学院已经基本实现了网络化管理,各部门已有了计算机,原来的计算机管理系统可以实现简单的信息管理,现在需要一个学生选课管理平台。为了切实解决课程管理中存在的诸多问题,提高教务管理的水平和质量,使学院选课的管理更加规范,经过几个月的努力,我设计开发了防灾科技学院选课系统。此系统基本上实现了一些选课相关的功能。
2
防灾科技学院毕业设计(论文、综合实践报告) 1.2课题目标
该选课系统的主要目的是实现学生选择课程的公平性和方便性,让他们可以在学校内任一安装客户端的机器上查询课程,选择课程,删除课程;对于课程管理员,可以通过登陆客户端添加、修改、查询、删除课程信息;对于学生管理员,可以通过登陆客户端添加、修改、查询、删除学生信息;对于教学管理部门,能够实现学生信息的管理,对课程信息的管理,以及对这个系统的维护。 1.3课题意义
选课系统是学校不可或缺的一个部分,它的内容对于学校来说都是非常的重要,所以选课管理系统应该能够为学生用户提供大量的课程信息,方便学生快速的查询。
随着科学技术的不断进步,计算机科学也在不断地成熟,其强大的功能已经被人们所深刻的认识,它已经深入到人类社会的各个领域并在这些领域里发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是教学的科学化、正规化管理,与世界接轨的重要条件。
开发此系统无论是从课题的研究上还是从技术方面考虑都是很有必要的。本课题的研究开发可以解决以往传统效率低、工作繁琐的人工管理选课方式,省去了大量的人力劳动,并且方便更有效的、更合理的完成教务人员对选课管理的效率。技术运用上也有利于加快学校信息化建设的步伐。实现教育的现代化、科技化,从而提高教学管理的信息化水平。
3
防灾科技学院毕业设计(论文、综合实践报告) 2.需求分析
2.1需求分析
选课系统需求满足来自三方面的需求,这三个方面分别是学生、管理员和超级用户。学生的需求是查询院系的课程、学生选课情况及学生信息的修改;管理员的功能比较复杂,其中包含三种:学生管理员、课程管理员和管理员;超级用户主要是系统状态的查看、维护。
学生可以直接查看选课情况,学生可以根据自己的学号和密码登录学生选课系统,还可以修改查询个人相关的部分信息。一般情况下,学生只能查询和修改自己所选课程的情况还有个人信息,若需要查询和修改其他学生的选课以及成绩查询,就需要知道其他学生的学号和密码。这些是很难得到的,特别是密码,所以不但满足了学生的要求,还保护了学生的个人隐私。
管理员分为学生管理员,课程管理员和管理员。学生管理员可根据学校学生的学号,增加学生用户,给新的学生用户建立新的用户名和密码,学生可以通过学生管理员提供的用户名和密码进行登录操作,学生管理员还可以对没有进行选课的学生进行删除操作,数据安全性和保密性要求最高;课程管理员是对课程进行操作,课程的增加、删除,根据学校的规定,安排选课的课时、学分、开课的时间都是由课程管理员执行的;管理员除了能操作学生管理员和课程管理员所有的内容,还能添加、删除学生管理员和课程管理员。
超级用户拥有最高权限,是用来系统初步实施的,在此系统中,超级用户可以管理系统中的所有用户,所有操作。
本系统的主要功能是完成我校教务管理对学生选课的功能。实现学生在客户端上进行独自的选课,学生能根据自己的意愿来选择自己感兴趣的课程。在教务管理的同时,教务处能全面的管理本学校的学生信息,学生,老师,课程以及上课的时间等。达到学生和老师都有合理的安排。 2.2 系统分析
在本系统中,有五类用户:超级用户、管理员、学生管理员、课程管理员、学生用户。五种不同的用户所具有的功能。
根据要求,从功能上可以分为两个类:一个是通用功能,登录、个人信息管理、切换用户、找回密码、系统帮助和退出是所有用户都具有的功能;另一种是为不同用户定制不
4
防灾科技学院毕业设计(论文、综合实践报告) 同功能。 2.2.1 通用功能
1、登录功能
登录功能是验证登录的用户信息,不同的用户在验证登录信息后,进入主界面会有不同的操作内容。
2、个人信息管理
个人信息管理是用来查询、修改用户的信息。 3、切换用户
切换用户功能是用户登录主界面后,需要切换到其他的用户时使用。 4、找回密码
找回密码是用户忘记自己的登录密码,可以通过找回密码设置的问题,找回自己的登录密码。
5、系统帮助
系统帮助是用户在不了解系统的使用方法时,可以查看系统帮助。 6、退出
在用户使用完学生选课系统后,不在进行其他的操作,选择退出即可退出选课系统界面。
2.2.2 用户具有的功能
1.超级用户主要用来系统的初步实施时使用,登录后具有系统所有的功能: 1)学生管理:可以添加、修改、查询、删除学生信息。 2)课程管理:可以添加、修改、查询、删除课程信息。
3)学生选课管理:可以为学生选课及查询、删除学生的选课信息。
4)系统用户管理:可以增加及删除管理员、学生管理员、课程管理员用户。 2.管理员用户登录后,可以进行学生管理、课程管理、系统用户管理。 1)学生管理:可以添加、修改、查询、删除学生信息。 2)课程管理:可以添加、修改、查询、删除课程信息。
3)系统用户管理:可以增加及删除学生管理员、课程管理员用户。 3. 学生管理员用户登录后,可以进行学生管理。 1)学生管理:可以添加、修改、查询、删除学生信息。 4.课程管理员用户登录后,可以进行课程管理。
5
防灾科技学院毕业设计(论文、综合实践报告) 1)课程管理:可以添加、修改、查询、删除课程信息。 5.学生用户登录后,可以进行选课管理。
1) 选课管理:可以选择各个学期开设的课程,查看自己所有已经选上的课程,删除已选课程。 2.3系统结构
本系统应用Visual Studio 2008 Team System开发工具,使用ACCESS作为数据库。 系统采用的是基于客户端的三层C/S(Client/Server,客户端/服务器)结构,它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问到新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。即界面层、业务逻辑层和数据处理层。界面层是一个建立在windows平台上应用程序界面;数据处理层包含访问后台数据库,提供后台数据库支持,同时包括与数据存储的接口。
第一层为界面层,客户机为校园网上的任何一台计算机,没有特殊要求,只需具有windows平台即可。学生通过客户端查看相关的选课信息,并进行选课操作。客户端把学生的数据交给业务实体实例化,再将实例化的对象交给业务接口。
第二层为业务逻辑层,业务逻辑层是封装商业逻辑,提供校验、逻辑实现,处理业务逻
辑,实现业务逻辑处理方法,处理逻辑后交给数据层(调用数据接口)处理数据。
第三层为数据层,数据最终处理的地方,首先定义数据加工处理方法(调用数据工厂) ,
处理数据加工方式,实现数据加工处理方法,加工后交给数据服务层提交数据库,常用的SqlHelper.cs 。
选用这样的结构模型主要出于以下几方面的考虑:
1. C/S模式一般都建立在专用的网络上,小范围的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务,一般面向相对固定的用户群,对信息安全的控制能力很强,一般高度机密的信息系统采用C/S 结构较为适宜,而仅通过C/S发布部分可公开信息,程序更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。
2.应用服务器运行数据负荷较轻,最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序,二者可分别称为前台程序与后台程序。一旦服务器
6
防灾科技学院毕业设计(论文、综合实践报告)
程序被启动,就随时等待响应客户程序发来的请求。当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求;服务器程序根据预定的规则做出应答,送回结果,应用服务器运行数据负荷较轻。
3. 数据的储存管理功能比较透明 ,数据的储存管理功能,是由服务器程序和客户应用程序分别进行的。对于工作在前台程序上的最终用户是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序并不是非常“瘦小”,并没有将麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能真正成为公共、专业化的仓库,它受到的专门管理。
7
防灾科技学院毕业设计(论文、综合实践报告) 3.相关技术背景
3.1 Visual Studio 2008 Team System开发工具
微软公司推出Visual Studio开发环境可以用来创建 Windows 操作平台下的 Windows 应用程序和网络应用程序,同时网络服务、智能设备应用程序和 Office 插件也可以用Visual Studio来创建。目前,windows操作平台应用程序开发环境要数Visual Studio最流行。
Microsoft Visual Studio 2008是为Windows Vista、Office 2007、Web 2.0或更高发展的下一发工具,代号“Orcas”。 VS2008中推出超过250种新功能,融合了对象、关系型数据、XML的访问方式,更加简洁了语言。使用Visual Studio 2008可以高效开发Windows应用。设计器中的变更可以实时的反映出来,XAML中智能感知功能使得开发效率得以提高。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了AJAX 1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。
Visual Studio 2008 提供了高级的开发工具、调试功能、数据库功能和创新功能,有助于在各种平台上迅速的建立一个当前最先进的应用程序。
Visual Studio 2008 包含了各种增强功能,例如可视化设计器(使用 .NET Framework 3.5 加速开发)、大幅改善Web 开发工具,以及能够加速开发和处理所有类型数据的语言增强功能。Visual Studio 2008提供了所有相关的工具和框架支持为开发人员使用,引人注目的、令人印象深刻的帮助创建,并且支持 AJAX 的 Web 应用程序。
利用这些大量的客户端和服务器端框架的优势,开发人员能够轻松的构建以客户为中心的 Web 应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问 ASP .NET应用程序服务和 Microsoft 平台。
Visual Studio 2008 提供了帮助开发团队改进协作的扩展的和改善的服务项目,包括帮助将数据库专业人员和图形设计人员加入到开发流程的工具。 3.2 Access数据库
Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS,即Relational Database Management System),是Office系列应用软件之一。它提供了
8
防灾科技学院毕业设计(论文、综合实践报告) 表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。
Access/Jet、Microsoft SQL Server、Oracle(甲骨文软件公司),或者任何 ODBC 兼容数据库内的资料都能够被Access所存取。熟练的软件设计者或者资料分析者利用Access来开发应用软件,而一些不熟练的程序员和非程序员的“进阶用户”同样能使用Access来开发简单的应用软件。Access不能成为一种完整的面向对象开发工具,因为它只支持部份面向对象(OO)技术。
Microsoft Access在很多地方得到广泛的应用,例如小型企业,大公司的部门,或者开发人员利用它来制作处理数据的桌面系统。简单的WEB应用程序也常用来它来开发。这些应用程序主要使用ASP技术在Internet Information Services运行,较为复杂的WEB应用程序则使用PHP/MySQL或者ASP/Microsoft SQL Server。
Access为初级程序员的使用方便程度和强大的设计工具提供了很多功能。不过,这种易于使用可能使人产生误解。这样的开发者基本上都是没有在应用或者数据设计方面经过训练的办公室工作人员。因此,很多人认为这样的开发人员能够创建一个可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。
Access 用作快速应用开发被一些较为专业的应用程序开发者使用,尤其是给街道上的推销员制作一个早型或单独应用程序的工具。但是,如果是通过网络访问数据的话,Access 的访问可扩放性并不高。因此当使用者较多使用此程序时,他们往往选择倾向于一些客户端-服务器为主的方案,例如 Oracle、DB2、Microsoft SQL Server、Windows SharePoint Services、PostgreSQL、MySQL、Alpha Five、MaxDB,或者Filemaker。在任何情况下,数据库的后期应用很多使用Access 的功能(表单,报告,序列和VB代码),例如 JET(档案为主的数据库引擎,Access 缺省使用)、Microsoft SQL Server、Oracle和任何其他跟ODBC兼容的产品。
对本开发系统选用Access2000作为后台数据库。数据库在信息管理系统中有着相当重要的地位,作为信息管理系统的后台,数据库存储着所有的信息,而数据库的设计直接影响到整个系统运行的效率。良好的数据库设计,可以有效提高数据信息的存储,从而保证数据信息的完整性和一致性。
美国Microsoft公司于1994年推出的Access管理系统。它具有界面友好、易于学习和使用、开发较为简单、接口灵活等功能,是一个典型的新一代桌面数据库管理
9
防灾科技学院毕业设计(论文、综合实践报告) 系统。其主要特点如下:
(1) 各种数据库对象得到了完善的管理,具有强大的数据组织、用户管理、安全检查等功能。
(2)数据处理能力极其强大,在网络环境下的一个工作组级别,使用Access开发的多用户数据库管理系统具有传统的XBASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户端服务器(Cient/Server)结构和相应的数据库安全机制,Access具备了许多先进的大型数据库管理系统所具备的特征,如事务处理/出错回滚能力等。
(3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。 (4)作为Office套件的一部分,可以与Office集成,实现无缝连接。 (5)能够利用Web检索和发布数据,实现与Internet的连接。 Access主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。 3.3 C#开发语言
C#(C Sharp)是微软(Microsoft)为.NET Framework量身订做的程序语言,C#拥有C/C++的强大功能以及Visual Basic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言
微软c#语言的定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点。C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义)。但它还太不成熟, C#还需要进化成一种开发者能够接受和采用的语言。
类是C#从JAVA继承而来的特点,在C#中类的申明与Java很相似。这是因为Java模型工作得很好。C#的关键字import已经被替换成using,它起到了同样的作用。一个类开始执行的起点是静态Main()方法。
C#从C和C++继承而来的两个特点:一个是编译,一个是结构体。编译,程序直接编译成标准的二进制可执行形式。例如一个Hello World程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序; 结构体,一个C#的结构体与C++的结构体是相似的,因为它能够包含数据声明和方法。但是,不象C++,C#结构体与类是不同的而且不支持继承。但是。与Java相同的是,一个结构体可以实现界面。
C#最引人入胜的地方是它和Java的不同,而不是相似的地方。C#拥有比C,C++或者Java更广泛的数据类型。这些类型是bool,byte,ubyte,short,ushort,int,
10
防灾科技学院毕业设计(论文、综合实践报告) uint,long,ulong,float,double和decimal。象Java一样,所有这些类型都有一个固定的大小。又象C和C++一样,每个数据类型都有有符号和无符号两种类型。与Java相同的是,一个字符变量包含的是一个16位的Unicode字符。C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字。
C#对Windows程序最大的优点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术。实际上,最终有可能在任何.NET语言里编写COM客户和服务器端。C#编写的类可以子类化一个已存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件。这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用任何.NET语言子类化。 3.4 MD5加密算法
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),它是由MD2、MD3和MD4发展而来得一种单向加密算法,也就是哈希(HASH)算法,是由国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上世纪90年代初开发出来的。
加密算法一般有两种,即单向加密算法和双向加密算法。双向加密是加密算法中最常用的,它将可以直接理解的明文数据加密为不可直接理解的密文数据,在需要的时候,又可以使用一定的算法将这些加密以后的密文数据解密为原来的明文数据,双向加密适合于隐秘通讯。
双向加密既可以加密,又可以解密。而单向加密则刚好相反,它只能对明文数据进行加密,而不能对加密了的密文数据再解密成原来的明文数。在实际应用中,对软件系统数据库中的系统用户信息(如用户密码)以及银行账号信息(如银行账号密码)加密,例如:当用户注册一个新的账号或者使用银行账号时,这些绝密信息不是直接保存到数据库,而是经过单向加密后再保存,这样,及时这些绝密信息被泄露,别人也不能得到相应的明文数据,当然也就达不到盗窃账号的目的。
MD5算法就是单向加密的加密算法。它有两个很重要的特征,第一是任意两段明文数据,加密以后的密文数据一定不是相同的;第二是任意一段明文数据,经过加密以后,其密文数据永远是相同的。
由于MD5算法的可靠性,已经被广泛应用于项目实践中。经过许多程序员的努力,MD5算法已经被各种语言实现,.asp,.php,.java ,c,c#,vb,vc++,delphi等语言。
11
防灾科技学院毕业设计(论文、综合实践报告) 4.系统总体设计
4.1功能模块简介
在前面的系统的系统功能分析中,将系统划分成9个模块,如下图4.1所示。
用户登录模块 学生管理模块 课程管理模块 学生选课模块 个人信息管理模块 用户管理模块 系统帮助模块 找回密码功能模块 数据库模块 图4.1 系统模块结构图
用户登录模块验证用户名和密码,并根据不同的用户类型,进行不同的操作。设置学生信息管理模块是提供给学生管理员增加、修改、删除学生信息。课程管理模块提供给课程管理员,用来增加、修改、删除选课信息。学生选课模块提供给学生用户,用来查询或者删除自己已选的课程。个人信息管理模块提供给学生用户,编辑学生自己的个人信息。用户管理模块用于用户超级管理员,可以对用户管理员经行增加、删除。系统帮助模块包括查看系统帮助信息。找回密码功能是对学生用户在忘记密码是找回密码。
12
防灾科技学院毕业设计(论文、综合实践报告) 4.2面向对象分析
根据上面的分析,将模块结构图转换成系统用例图如下图4.2所示。
学生管理课程管理选课管理超级用户个人信息管理学生管理员系统用户管理课程管理员登录切换用户管理员找回密码学生系统帮助 图4.2 系统Use Case图
1. 系统中包含的类。
系统中的类从系统包含的人员及事物开始。学生选课系统中包括对人员有:超级用户、管理员、课程管理员、学生管理员、学生用户。这些人员可以统称为“系统用户”,即系统中应该有一个“系统用户”类。
系统包含的事物有:学生、课程。同时学生也是一类系统用户。学生和课程是系统用户的操作对象。因此,系统还应包含“学生”类及“课程”类。
2.定义类的属性。
“系统用户”类主要用于系统登录及系统各个功能的使用,因此应该包含“用户名”和“密码”属性;系统有5种类型用户,因此,添加“用户角色”记录用户的类型。
“学生”类包括“学号”,“姓名”,“性别”,“年龄”,“所在系”。
“课程”类包括“课程编号”,“课程名”,“学分”,“开课学期”,“总学时”。 3.定义类的方法。
初步定义的各个类的方法,各个类都包含添加、删除、修改、获取信息等常规操作,系统用户如若是“超级用户”或“学生用户”的话,还可以进行“选课”及“取消选课”操作。
4.建立类之间的关系。
13
防灾科技学院毕业设计(论文、综合实践报告) “学生”和“课程”类为“系统用户”类的操作对象,因此,“学生”和“课程”对象的存在依赖于“系统用户”,同样,“系统用户”本身也可以操作“系统用户”,对用户进行添加、修改、删除等操作,因此本身也是一种依赖关系。“学生”和“课程”之间存在一定的关联。
在分析阶段中,系统用户和个人信息之间存在着组合关系,学生和系统用户之间存在着聚合关系。由于在实际实现时,系统将所有的数据存储关系数据库中,现在不一定非要在系统用户和个人信息两个类之间保持组合关系,而只需要在个人信息类中保持其所属用户名就可以了;学生和系统用户类也不用保持聚合关系,学生是一类特殊的系统用户,只需在用户表中保持学生用户的一份拷贝即可,令学号的值为用户名。专业和班级,班级和学生,以及音乐类别和音乐之间的关系也是如此。
系统用户在添加一个新的用户的时候要首先判断是否此用户已经添加过,因此,添加“判断某个用户是否存在”方法。
系统用户的密码在存储的时候为了安全起见需进行加密处理,因此,添加“加密密码”方法,密码采用MD5哈希算法进行加密,MD5是一种单向加密算法,即能加密但不能进行解密操作。
添加某种机制令用户忘了密码的时候可以重新设置密码。机制规则:用户首次登录时提示用户输入一些信息,以后在忘记密码时,通过回答这些信息找回密码;若用户首次登录时没有输入这些信息,可以在以后的时候过程中在输入。因此,“系统用户”类需添加属性“是否首次登录”,添加额外的“个人信息”类记录这些额外的信息。
当添加一名学生时,需要判断这名学生是否已经添加过,因此,添加“是否已经存在”方法判断一个学生是否已经添加过。
当删除一名学生时,需要保证该名学生没有选过课,然后再进行删除操作,因此,添加“是否选过课”方法。
获取学生信息时,有时需要获取全部学生信息,有时需要按照条件获取部分学生的信息,添加 “获取全部学生信息”和“获取部分学生信息”。
当添加一门课程时,需要判断这门课程是否已经添加过,因此,增加“是否已经存在”方法判断一门课程是否已经添加过。
当删除一门课程时,需要保证此课程没有学生选择,然后再进行删除操作,因此,增加“是否被选过”方法。
获取课程信息时,有时需要获取全部课程信息,有时需要按照条件获取部分课程的信息,添加“获取全部课程信息”和“获取部分课程信息”。
14
防灾科技学院毕业设计(论文、综合实践报告) 将对数据库的操作封装成一个类,其他的类对数据库的操作通过此类进行。 将上述关系建立一个类图如下图2.3所示。
个人信息----+-+++++用户名提示问题1答案提示问题2答案提示问题3答案: string: string: string: string: bool: bool: int: int: int: DataSet: bool学生-----+++++++学号姓名性别年龄所在系: string: string: string: int: string: int: bool: int: int: bool: DataSet: DataSet数据库操作: int: int: void: void: string: bool: bool: int: int: DataSet-----+++++++课程编号课程名称学分开课学期总学时-数据库连接字符串: string+++++课程: string: string: int: int: int: int: bool: int: int: bool: DataSet: DataSet查询 ()更新 ()删除 ()插入 ()获取字段值 (): DataSet: int: int: int: int判断是否存在 ()设置个人信息 ()添加个人信息 ()删除个人信息 ()修改个人信息 ()获取个人信息 ()回答个人信息问题 ()系统用户----++++++++++用户名密码用户角色是否首次登录: string: string: string: string添加 ()是否选过课 ()删除 ()修改 ()是否已经存在 ()获取所有学生信息 ()获取部分学生信息 ()添加新用户 ()删除已有用户 ()设置密码 ()修改密码 ()加密密码 ()登录 ()判断某个用户是否存在 ()选课 ()取消选课 ()获取部分用户信息 ()添加 ()是否被选过 ()删除 ()修改 ()是否已经存在 ()获取所有课程信息 ()获取部分课程信息 () 图4.3 系统类图
15
防灾科技学院毕业设计(论文、综合实践报告)
5.系统详细设计
5.1数据库设计
本系统的数据库实体主要有“学生”、 “课程”。其中“学生”与“课程”存在“选课”联系,一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。“学生”还包括很多的属性,如姓名、性别、年龄、学号、所在系等信息;“课程”也包括很多的属性,如学时、课程学分、课程名、课程号等信息。整个数据库可以用一个E-R图表示,如下图,图5.1所示:
性别 姓名 学号 年龄 学生 n 成绩 所在系 选课 m 课程 课程号 学时 课程学分 课程名 图5.1 E-R图
5.2数据库逻辑设计
数据库逻辑就是指确定数据库的逻辑结构,是将E—R图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。转换过程中常见规则有:
(1)一个实体型转换为一个关系模式;
(2)一个一对一的联系可转换成一个的关系模式,也可与任意一端对应的关系模式合并;
(3)一个一对多的联系可以转换成一个的关系模式,也可与多的那一端对应的关系模式合并;
(4)一个多对多的关系转换成一个关系模式。
16
防灾科技学院毕业设计(论文、综合实践报告) 学生表(学号,姓名,性别,年龄,所在系) 课程表(课程号,课程名,课程学分,学时) 学生选课表(学号,课程号,成绩)
系统用户表(用户名,密码,角色,是否第一次登录) 个人信息表(用户名,问题1答案,问题2答案,问题3答案) 5.3数据物理设计
根据数据库的分析,建立如下五个数据表。 学生表(Student),其结构见表5.1所示
表5.1 学生表
字段 Sno Sname Ssex Sage Sdept 数据类型 文本 文本 文本 数字 文本 说明 学号 姓名 性别 年龄 所在系
课程表(Course),其结构见表5.2所示
表5.2 课程表
字段 Cno Cname Ccredit Csemester CHours 数据类型 文本 文本 数字 数字 数字 说明 课程编号 课程名称 学分 开课学期 总学时
17
防灾科技学院毕业设计(论文、综合实践报告) 学生选课表(SelectCourse),其结构见表5.3所示
表5.3 学生选课表
字段 Sno Cno grade 数据类型 文本 文本 数字 说明 学号 课程号 成绩 系统用户表(User),其结构见表5.4所示
表5.4 系统用户表
字段 userName userPwd Role firstLogin 数据类型 文本 文本 文本 文本 说明 用户名 密码 角色 是否第一次登录 个人信息表(Informatian),其结构见表5.5所示
表5.5 个人信息表
字段 userName Answer1 Answer2 Answer3
数据类型 文本 文本 文本 文本 说明 用户名 问题1答案 问题2答案 问题3答案 18
防灾科技学院毕业设计(论文、综合实践报告) 6.系统实现
6.1客户端登录界面实现
登录模块是系统不可缺少的模块,登录模块还可以保证系统的可靠性和安全性。登录模块提供用户登录界面,登录时,若输入的用户名和密码都正确,则登录成功,进入系统的主窗体,然后可以选择进入相应的子系统。
本系统,设计了5种系统用户类型:超级用户、管理员、课程管理员、学生管理员和学生用户。用不同的身份,登录成功后,可在主界面选择使用系统不同的功能模块。
客户端的登陆界面如图6.1所示。
图6.1 登录界面
6.2主界面的实现及权限管理
主界面在用户登录后进入学生选课系统后,可以选择不同的子系统,其中包括选课管理、系统管理和系统三个部分,其中选课管理包括学生管理、课程管理和选课管理,系统管理包括个人信息管理、系统用户管理和切换系统用户,系统包括系统帮助和退出。
超级用户可以使用全部的子系统;管理员只有选课管理系统不能使用;课程管理员能使用的系统有课程管理、个人信息管理、切换系统用户、系统帮助和退出;学生管理员能使用的系统有学生管理、个人信息管理、切换系统用户、系统帮助和退出;学生用户能使用的系统有选课管理、个人信息管理、切换系统用户、系统帮助和退出。
主界面如图6.2所示:
19
防灾科技学院毕业设计(论文、综合实践报告)
图6.2 主界面图
6.3学生信息管理的实现
学生信息管理模块主要用于管理学生的基本信息,包括学号、姓名、性别、年龄和所在系,能对学生信息进行添加、删除、修改和查询等操作。
并且,在添加或删除学生信息时,同时需要在系统用户表中注册或删除相应的“学生用户”。在本系统中,设定默认用户名为学生号,密码也设定为学生学号。
学生管理的界面如图6.3所示。
图6.3 学生管理界面图
6.4课程管理的实现
课程信息管理模块主要用于管理课程信息,包括课程号、课程名、学分、开学学期和总学时,能对课程信息进行添加、删除、修改和查询等操作。
20
防灾科技学院毕业设计(论文、综合实践报告) 课程管理界面如图6.4所示:
图6.4 课程管理界面图
6.5学生选课信息管理的实现
选课信息管理模块主要用于管理学生选课信息,以记录的形式表示学生的选课情况,每条记录都包括选课学生的学号、学生的姓名、所选课程的课程号、课程名称、开课学期和该课程的考试成绩。选课信息管理模块提供了选课和选课信息查询等功能。
以“超级用户”身份登录,可以为所有学生选课;以“学生用户”身份登录,可以为自己选课。
学生选课的界面分为“超级用户”(如图6.5所示 )和“学生用户”(如图6.6所示)两种。
21
防灾科技学院毕业设计(论文、综合实践报告)
图6.5 超级用户选课界面图
图6.5 学生用户选课界面图
6.6个人信息的实现
个人信息管理模块主要用于管理系统用户的个人信息,包括设置找回密码问题的答案,修改用户密码等。在本系统中,“管理员”是由“超级用户”注册的,“课程管理用户”
22
防灾科技学院毕业设计(论文、综合实践报告) 和“学生管理用户”是由“超级用户”或者“管理员”注册的,而“学生用户”是在添加学生信息时注册的,所以注册用户时无法为用户提供设置“找回密码问题”答案的功能。而又因为系统中的用户密码是用MD5加密后存储的,为了能够在忘记密码的情况下,通过提供“找回密码问题”的答案来修改用户密码,这就需要用户在初次登录系统时提示用户设置“找回密码问题”的答案,否则一旦忘记用户密码,将无法找回。
个人信息的界面如图6.7所示。
图6.7 个人信息图
6.7系统用户管理的实现
用户管理模块主要用于管理(注册和删除)系统用户。注册和删除用户的权限分配规则是:“超级用户”可以注册和删除“管理员”、“课程管理员”和“学生管理员”,“管理员”可以注册和删除“课程管理员”和“学生管理员”,“课程管理员”、“学生管理员”和“学生用户”则不具有本子系统的使用权限,即不能进行注册和删除系统用户的操作。
用户管理的界面如图6.8所示。
23
防灾科技学院毕业设计(论文、综合实践报告)
图6.8 系统用户图
6.8系统帮助的实现
帮助模块用于给用户提供一些帮助信息,如软件版本、作者联系方式、系统使用说明等信息
系统帮助的界面如图6.9所示。
图6.9 系统帮助图
6.9找回密码的实现
找回用户密码模块用于提供“找回”用户密码功能。因为系统用户密码是用MD5加密算法加密再存储的,故用户一旦忘记密码,系统将无法知道用户的当前密码。设计本模块的目的就是当用户忘记密码的时候,可以通过本模块提供“找回密码问题”的答案来重设用户密码。
找回密码的界面如图6.10所示:
24
防灾科技学院毕业设计(论文、综合实践报告)
图6.10找回密码界面图
25
防灾科技学院毕业设计(论文、综合实践报告) 结论
本系统从学生选课的需求设计、功能的设计以及数据库的设计等几个方面探讨了学生选课系统的设计与实现,最终采用了基于Client / Server结构应用c#和Access数据库相结合的方法实现学生选课系统,该系统在Windows操作系统上运行,可以方便快捷完成以往需要大量人力的繁杂工作,极大地方便了教学管理。此系统是针对防灾科技学院的实际情况开发的。
本系统基本上达到了最初设计的目的,由于知识上还有一些不足,有些地方还有少许的错误,但是系统所需的九大模块已经完成,能够实现不同的用户使用不同的系统子功能,可满足不同的用户在安装有客户端的机器上进行不同的操作。本系统在正常运行中需要对学生信息、课程信息进行管理,利用学生系统及时了解各个关节中信息的更变,有利于提高管理。
26
防灾科技学院毕业设计(论文、综合实践报告) 致谢
紧张而忙碌的毕业设计就要结束了,在完成了系统的功能设计后,我感到由衷的喜悦和自豪。在我做毕业设计期间,许多老师、同学和朋友给了我无私的关怀和帮助。在此,我要向他们表示衷心的感谢。
首先非常感谢防灾科技学院给予我人生中最宝贵四年的培养,感谢学院各位老师,老师们治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的学习氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,不仅使我接受了全新的思想观念,领会了基本的思考方式,掌握了灵活的学习方法,而且还明白了许多待人接物与为人处世的道理。
我得特别感谢白灵老师在毕业设计期间给了我悉心的关怀与帮助,并且给了我许多关键的、建设性的指导。在毕业设计中,我得到了导师白老师大量的理论和实践指导。老师渊博的知识、严谨的作风、诲人不倦的态度和学术上精益求精的精神让我受益终生。在此论文完成之际,首先向我的导师白灵老师表示衷心的感谢,感谢他让我能够更好地完成毕业设计。
其次,我要深深地感谢大学四年来的所有老师,是他们教给了我们很多有用的知识以及学习新知识的方法,激发了我们学习的热情。这次的毕业设计让我受益匪浅。在理论课的学习中,我掌握了基础课和专业课的理论知识,感谢大学四年来所有的老师,为我们打下专业知识的基础。
另外,还要感身边朋友的热心帮助,感谢他们在设计过程中无私的对我大力帮助,感谢他们对我的信任和支持,没有他们的支持与关心,就没有我今天的毕业设计
最后,我要特别感谢我的爸爸妈妈。我的父亲母亲对我影响至深,一直默默地支持我的成长道路,对我的学习也给予了极大的鼓励与帮助。可怜天下父母心,今后我将竭尽所能,加倍补偿这份一辈子也还不清的深情。
27
防灾科技学院毕业设计(论文、综合实践报告) 参考文献
[1]孙铁鑫编著,浅谈B/S和C/S结构的对比[J], 今日科苑,2007.
[2]吴毅杰,张志明编著,C/S与B/S的比较及其数据库访问技术[J],舰船电子工程,2003. [3]周晓娟,王法能,毛劲松编著,基于B/S的WEB数据库技术[J],航空计算技术,2005. [4]王鑫编著,基于B/S模式的学生选课系统的设计与实现[J] ,天津大学,2009.
[5]李志中,谢云,魏菊霞编著,Visual C#2008数据库编程实训教程[M] ,清华大学出版社,2010. [6]张海藩编著,软件工程导论[M] ,清华大学出版社,2003.
[7]萨师煊,王 珊编著,数据库系统概论[M] , 高等教育出版社,2000.
[8]陈玉明,邱桃荣编著,基于C/S与B/S国家高新技术考试管理信息的设计与实现[J],上海第二工业大学学报,2004.
[9]黄朝辉编著,基于C/S和B/S结构的高校图书馆管理系统[J],松辽学刊(自然科学版),2002. [10]侯宗浩编著,集成C/S、B/S机构的物资采供系统研究[D],西安理工大学,2000. [11]翁健红编著,基于C#的ASP.NET程序设计[M] ,机械工业出版社.
[12]单维锋,白灵编著,ASP.NET Web应用程序设计教程[M] ,清华大学出版社,2010.1. [13]刘振岩编著,基于.NET的Web程序设计[M] ,ASP.NET标准教程,电子工业出版社. [14]张志学编著,.NET框架开发人员参考手册[M] ,清华大学出版社,2001. [15]常永英编著, ASP.NET程序设计教程上机指导与习题解答[M] ,机械工业出版社. [16]宁德琼编著,VB下学生选课系统的设计方法[J] ,曲靖师范学院学报,2005.06. [17]姚晓春,郑文清编著,Java编程技术教程[M] ,清华大学出版社,1999. [18]吴逸贤,吴目诚编著,Java2程序设计[M] ,科学出版社,2003.
[19]飞思科技产品研发中心编著, Jsp应用开发详解[M],北京:电子工业出版社,2006. [20]张文静,林琪译编著,JSP程序设计[M],北京:人民邮电出版社,2006.
[21]汪孝宜,刘中兵,徐佳晶等编著,JSP数据库开发实例精粹[M] ,电子工业出版社,2005. [22]冀振燕编著,系统分析设计与应用案例[M] ,人民邮电出版社.2003.
[23]肖春连编著,毕业设计管理系统[J] ,设计有色冶金设计与研究,2000,21(1) . [24]杨红杰编著,销售毕业设计管理系统研究[J],潍坊高等专科学校,2001(1) .
[25]周竞涛,赵寒,王明微,等编著,Eclipse完全手册[M],北京:电子工业出版社,2006. [26]赵韶平,罗海燕编著,PowerDesigner系统分析与建模[M] ,清华大学出版社,2004. [27]吴伟敏编著,UML建模工具的比较——ROSE,Visio和PowerDesigner[J] ,现代计算机,2001. [28]陈渝,秦开大,田亮编著,基于PowerDesigner的信息系统数据模型建设[J] ,昆明理工大学学报,
28
防灾科技学院毕业设计(论文、综合实践报告) 2004.
[29]林弘之编著,.数据库设计工具PowerDesigner 的研究与实践[J] ,计算机应用与软件,2004. [30]白尚旺编著,PowerDesigner 软件分析设计与技术[M] ,电子工业出版社,2002.6.
29
防灾科技学院毕业设计(论文、综合实践报告) 附录
附录A 部分代码如下: 1. 登陆界面
FrmPassword ob_FrmPassword; public FrmLogin() {
InitializeComponent(); }
private void btnLogin_Click(object sender, EventArgs e) { try {
User.userName = txtUserName.Text.Trim();
User.SetUserPwd(txtUserPassword.Text.Trim()); if (User.Login()) {
FrmMin ob_FrmMain = new FrmMin(); ob_FrmMain.Show(); this.Hide(); } }
catch (Exception ex) {
MessageBox.Show(ex.Message, \"登录异常\"); txtUserName.Text = \"\"; txtUserPassword.Text = \"\"; txtUserName.Focus(); } }
private void btnCancel_Click(object sender, EventArgs e) {
Application.Exit(); }
private void FrmLogin_FormClosed(object sender, FormClosedEventArgs e) {
Application.Exit(); }
private void lblForgetPassword_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
if (ob_FrmPassword == null || ob_FrmPassword.IsDisposed) {
ob_FrmPassword = new FrmPassword();
30
防灾科技学院毕业设计(论文、综合实践报告) ob_FrmPassword.Show(); } else
ob_FrmPassword.Activate(); }
2. 主界面
this.Text=User.userName + \"-----\" +User.userRole + \欢迎您使用选课系统\"; if (User.userRole == \"管理员\") {
menuSelectCourse.Enabled = false; return; }
if (User.userRole == \"学生用户\") {
menuStudent.Enabled = false; menuCourse.Enabled = false; menuUser.Enabled = false; return; }
if (User.userRole == \"学生管理员\") {
menuCourse.Enabled = false; menuUser.Enabled = false; menuSelectCourse.Enabled = false; return; }
if (User.userRole == \"课程管理员\") {
menuStudent.Enabled = false; menuUser.Enabled = false; menuSelectCourse.Enabled = false; return; }
if (User.firstLogin == \"是\") {
if (MessageBox.Show(\"首次登录,请进行个人信息设置,以便忘记密码后找回\提示\MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes) {
ob_FrmInformation = new FrmInformation(); ob_FrmInformation.MdiParent = this; ob_FrmInformation.Show(); }
User.firstLogin = \"否\"; User.ModifyLoginStatus(); } }
31
防灾科技学院毕业设计(论文、综合实践报告)
3. 学生管理
void ObjOpen() {
txtNo.Enabled = true; txtName.Enabled = true; txtAge.Enabled = true; cmbSex.Enabled = true; txtDept.Enabled = true; txtNo.Focus(); }
void ObjClose() {
txtNo.Enabled = false; txtName.Enabled = false; txtAge.Enabled = false; cmbSex.Enabled = false; txtDept.Enabled = false; }
void ClearAll() {
txtNo.Text = \"\"; txtName.Text = \"\"; txtAge.Text = \"\";
cmbSex.SelectedIndex = -1; txtDept.Text = \"\"; }
void RefreshData() {
DataSet ds = Student.SearchAllStudents(); if (ds != null) {
dgrdvStudent.DataSource = ds.Tables[0];
dgrdvStudent.Columns[0].HeaderText = \"学生学号\"; dgrdvStudent.Columns[0].Width = 168;
dgrdvStudent.Columns[1].HeaderText = \"学生姓名\"; dgrdvStudent.Columns[1].Width = 159;
dgrdvStudent.Columns[2].HeaderText = \"学生性别\"; dgrdvStudent.Columns[2].Width = 88;
dgrdvStudent.Columns[3].HeaderText = \"学生年龄\"; dgrdvStudent.Columns[3].Width = 88;
dgrdvStudent.Columns[4].HeaderText = \"所在系\"; dgrdvStudent.Columns[4].Width = 238; dgrdvStudent_RowHeaderMouseClick(null,null); } else
32
防灾科技学院毕业设计(论文、综合实践报告) dgrdvStudent.DataSource = null; }
4. 课程管理
void ObjOpen() {
txtNo.Enabled = true; txtName.Enabled = true; txtCredit.Enabled = true; cmbSemester.Enabled = true; txtHours.Enabled = true; txtNo.Focus(); }
void ObjClose() {
txtNo.Enabled = false; txtName.Enabled = false; txtCredit.Enabled = false; cmbSemester.Enabled = false; txtHours.Enabled = false; }
void ClearAll() {
txtNo.Text = \"\"; txtName.Text = \"\"; txtCredit.Text = \"\";
cmbSemester.SelectedIndex = -1; txtHours.Text = \"\"; }
void RefreshData() {
DataSet ds = Course.SearchAllCourses(); if (ds != null) {
dgrdvCourse.DataSource = ds.Tables[0]; dgrdvCourse.Columns[0].HeaderText = \"课程号\"; dgrdvCourse.Columns[0].Width = 168;
dgrdvCourse.Columns[1].HeaderText = \"课程名\"; dgrdvCourse.Columns[1].Width = 309;
dgrdvCourse.Columns[2].HeaderText = \"课程学分\"; dgrdvCourse.Columns[2].Width = 88;
dgrdvCourse.Columns[3].HeaderText = \"开课学期\"; dgrdvCourse.Columns[3].Width = 88;
dgrdvCourse.Columns[4].HeaderText = \"总学时\"; dgrdvCourse.Columns[4].Width = 88;
dgrdvCourse_RowHeaderMouseClick(null, null); }
33
防灾科技学院毕业设计(论文、综合实践报告) else
dgrdvCourse.DataSource = null; }
bool No(string no) {
int n = dgrdvCourse.Rows.Count; for (int i = 0; i < n - 1; i++) {
if (no == dgrdvCourse.Rows[i].Cells[0].Value.ToString().Trim()) return false; } return true; }
5. 学生选课管理
void RefreshCanSelectData() {
string sqlStr; DataSet ds;
if (User.userRole == \"学生用户\") {
sqlStr = \"where Csemester=\" + cmbSemester.Text.Trim(); ds = Course.SearchSomeCourse(sqlStr); if (ds != null) {
dgrdvCanSelect.DataSource = ds.Tables[0]; dgrdvCanSelect.Columns[0].HeaderText = \"课程号\"; dgrdvCanSelect.Columns[0].Width = 130;
dgrdvCanSelect.Columns[1].HeaderText = \"课程名\"; dgrdvCanSelect.Columns[1].Width = 268;
dgrdvCanSelect.Columns[2].HeaderText = \"课程学分\"; dgrdvCanSelect.Columns[2].Width = 88;
dgrdvCanSelect.Columns[3].HeaderText = \"开课学期\"; dgrdvCanSelect.Columns[3].Width = 88;
dgrdvCanSelect.Columns[4].HeaderText = \"总学时\"; dgrdvCanSelect.Columns[4].Width = 88; } else
dgrdvCanSelect.DataSource = null; } else {
sqlStr = \"where Csemester=\" + cmbSemesterInfo.Text.Trim(); ds = Course.SearchSomeCourse(sqlStr); if (ds != null) {
dgrdvCourse.DataSource = ds.Tables[0];
34
防灾科技学院毕业设计(论文、综合实践报告) dgrdvCourse.Columns[0].HeaderText = \"课程号\"; dgrdvCourse.Columns[0].Width = 100;
dgrdvCourse.Columns[1].HeaderText = \"课程名\"; dgrdvCourse.Columns[1].Width = 156; } else {
dgrdvCourse.DataSource = null; } } }
void RefreshSelectedData() {
string sqlStr;
DataSet ds = new DataSet(); if (User.userRole == \"学生用户\") {
sqlStr = \"select
tbl_SelectCourse.Sno,tbl_student.Sname,tbl_SelectCourse.Cno,tbl_course.Cname,tbl_course.Csemester,tbl_selectcourse.grade from\" +
\" tbl_student inner join(tbl_Course inner join tbl_selectCourse on tbl_Course.Cno=tbl_selectCourse.Cno) on \" +
\"tbl_Student.Sno=tbl_selectCourse.Sno where tbl_SelectCourse.Sno='\" + User.userName + \"'\";
ds = DataBaseOper.ExecuteSelectSql(sqlStr);; if (ds != null) {
dgrdvSelected.DataSource = ds.Tables[0];
dgrdvSelected.Columns[0].HeaderText = \"学生学号\"; dgrdvSelected.Columns[0].Width = 108;
dgrdvSelected.Columns[1].HeaderText = \"学生姓名\"; dgrdvSelected.Columns[1].Width = 108;
dgrdvSelected.Columns[2].HeaderText = \"课程号\"; dgrdvSelected.Columns[2].Width = 108;
dgrdvSelected.Columns[3].HeaderText = \"课程名\"; dgrdvSelected.Columns[3].Width = 222;
dgrdvSelected.Columns[4].HeaderText = \"开课学期\"; dgrdvSelected.Columns[4].Width = 78;
dgrdvSelected.Columns[5].HeaderText = \"成绩\"; dgrdvSelected.Columns[5].Width = 68; } else {
dgrdvSelected.DataSource = null; } }
35
防灾科技学院毕业设计(论文、综合实践报告) else {
sqlStr = \"select tbl_SelectCourse.Sno,tbl_Student.Sname,tbl_SelectCourse.Cno,\" +
\"tbl_Course.Cname,tbl_Course.Csemester,tbl_SelectCourse.grade from tbl_Student inner join\" + \"(tbl_Course inner join tbl_SelectCourse on tbl_Course.Cno=tbl_SelectCourse.Cno) on tbl_Student.Sno=\" +
\"tbl_SelectCourse.Sno\";
ds = DataBaseOper.ExecuteSelectSql(sqlStr); if (ds != null) {
dgrdvSelectCourse.DataSource = ds.Tables[0];
dgrdvSelectCourse.Columns[0].HeaderText = \"学生学号\"; dgrdvSelectCourse.Columns[0].Width = 108;
dgrdvSelectCourse.Columns[1].HeaderText = \"学生姓名\"; dgrdvSelectCourse.Columns[1].Width = 108;
dgrdvSelectCourse.Columns[2].HeaderText = \"课程号\"; dgrdvSelectCourse.Columns[2].Width = 108;
dgrdvSelectCourse.Columns[3].HeaderText = \"课程名\"; dgrdvSelectCourse.Columns[3].Width = 213;
dgrdvSelectCourse.Columns[4].HeaderText = \"开课学期\"; dgrdvSelectCourse.Columns[4].Width = 78;
dgrdvSelectCourse.Columns[5].HeaderText = \"成绩\"; dgrdvSelectCourse.Columns[5].Width = 68; } else
dgrdvSelectCourse.DataSource = null; } }
6. 个人信息管理
private void FrmInformation_Load(object sender, EventArgs e) { try {
if (pi.IsExist()) {
pi.SetPersonInfo();
txtAnswer1.Text =pi.Answer1; txtAnswer2.Text = pi.Answer2; txtAnswer3.Text = pi.Answer3;
btnSetInformation.Text = \"修改个人信息\"; } }
catch (Exception ex) {
MessageBox.Show(ex.Message); }
36
防灾科技学院毕业设计(论文、综合实践报告) }
private void btnSetInformation_Click(object sender, EventArgs e) { try {
if (txtAnswer1.Text.Trim() == \"\") {
MessageBox.Show(\"请输入第一个问题的答案\"); txtAnswer1.Focus(); return; }
if (txtAnswer2.Text.Trim() == \"\") {
MessageBox.Show(\"请输入第二个问题的答案\"); txtAnswer2.Focus(); return; }
if (txtAnswer3.Text.Trim() == \"\") {
MessageBox.Show(\"请输入第三个问题的答案\"); txtAnswer3.Focus(); return; }
pi.Answer1 = txtAnswer1.Text.Trim(); pi.Answer2 = txtAnswer2.Text.Trim(); pi.Answer3 = txtAnswer3.Text.Trim(); if (!pi.IsExist()) {
pi.AddPersonInfo();
MessageBox.Show(\"设置个人信息成功\"); } else {
pi.ModifyPersonInfo();MessageBox.Show(\"修改个人信息成功\"); } }
catch (Exception ex) {
MessageBox.Show(ex.Message); } }
private void btnDeleteInformation_Click(object sender, EventArgs e) { try {
if (MessageBox.Show(\"删除个人信息后,一旦忘记用户密码,将无法找回,确定要删除吗?\删除个人信
37
防灾科技学院毕业设计(论文、综合实践报告) 息\ {
pi.DelPersonInfo(); txtAnswer1.Text = \"\"; txtAnswer2.Text = \"\"; txtAnswer3.Text = \"\";
MessageBox.Show(\"删除个人信息成功\"); txtAnswer1.Focus(); } }
catch (Exception ex) {
MessageBox.Show(ex.Message); } }
private void btnChangePassword_Click(object sender, EventArgs e) { try {
if (txtOldPassword.Text.Trim() == \"\") {
MessageBox.Show(\"请输入原密码!\"); txtOldPassword.Focus(); return; }
if (txtNewPassword1.Text.Trim() == \"\") {
MessageBox.Show(\"请输入新密码!\"); txtNewPassword1.Focus(); return; }
if (txtNewPassword2.Text.Trim() == \"\") {
MessageBox.Show(\"请再次输入新密码\"); txtNewPassword2.Focus(); return; }
if (txtNewPassword2.Text.Trim() != txtNewPassword1.Text.Trim()) {
MessageBox.Show(\"两次输入的新密码不相同,请重复输入!\"); txtNewPassword2.Focus(); return; }
pi.Answer1 = txtOldPassword.Text.Trim(); pi.Answer2 = txtNewPassword1.Text.Trim(); if (User.IsExist(User.userName, pi.Answer1))
38
防灾科技学院毕业设计(论文、综合实践报告) {
pi.ModifyPersonPwd();
MessageBox.Show(\"设置密码成功!\"); } else{
MessageBox.Show(\"原始密码输入不正确!\"); }
//if(User.IsExist(txtOldPassword.Text.Trim())) //{
// User.ModifyPwd(txtNewPassword1.Text.Trim()); // MessageBox.Show(\"设置个人密码成功!\"); //}
//pi.ModifyPersonPwd(); } catch (Exception ex) {
MessageBox.Show(ex.Message); } }
7. 用户管理
void ClearAll() {
txtUserName.Text = \"\"; txtPassword.Text = \"\"; cmbRole.Text = \"一般用户\"; }
void ObjOpen() {
txtUserName.Enabled = true; txtPassword.Enabled = true; cmbRole.Enabled = true; txtUserName.Focus(); }
void ObjClose() {
txtUserName.Enabled = false; txtPassword.Enabled = false; cmbRole.Enabled = false; }
void SetHeaderText() {
dgrdvUser.Columns[0].HeaderText = \"用户名\"; dgrdvUser.Columns[0].Width = 66;
dgrdvUser.Columns[1].HeaderText = \"用户权限\"; dgrdvUser.Columns[1].Width = 88; }
39
防灾科技学院毕业设计(论文、综合实践报告) void RefreshData() {
DataSet ds ; string sqlStr = \"\";
if (User.userRole == \"超级用户\") {
cmbRole.Items.Clear();
cmbRole.Items.Add(\"学生管理员\"); cmbRole.Items.Add(\"课程管理员\"); cmbRole.Items.Add(\"管理员\"); cmbRole.SelectedIndex = 0;
sqlStr = \"select username,role from tbl_User where role='管理员' or role='学生管理员' or role='课程管理员'\";
ds = User.SearchSomeUsers(sqlStr); if (ds != null) {
dgrdvUser.DataSource = ds.Tables[0]; SetHeaderText(); } else {
dgrdvUser.DataSource = null; } return; }
if (User.userRole == \"管理员\") {
cmbRole.Items.Clear();
cmbRole.Items.Add(\"学生管理员\"); cmbRole.Items.Add(\"课程管理员\"); cmbRole.SelectedIndex = 0;
sqlStr = \"select username,role from tbl_user where role='学生管理员' or role='课程管理员'\"; ds = User.SearchSomeUsers(sqlStr); if (ds != null) {
dgrdvUser.DataSource = ds.Tables[0]; SetHeaderText(); }
8. 系统帮助
public FrmHelp() {
InitializeComponent(); }
private void FrmHelp_Load(object sender, EventArgs e) { }
40
防灾科技学院毕业设计(论文、综合实践报告) private void llblEmail_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
System.Diagnostics.Process.Start(\"mailto:********************\"); }
private void btnHelp_Click(object sender, EventArgs e) {
if (btnHelp.Text == \"查看系统帮助信息\") {
btnHelp.Text = \"隐藏系统帮助信息\"; this.Height = 560; } else {
btnHelp.Text = \"查看系统帮助信息\"; this.Height = 168; } }
private void btnClose_Click(object sender, EventArgs e) {
this.Close(); } }
9. 找回密码
private void btnGetPassword_Click(object sender, EventArgs e) { try {
if (txtUserName.Text.Trim() == \"\") {
MessageBox.Show(\"用户名不能为空\提示\"); txtUserName.Focus(); return; }
if (!User.IsExist(txtUserName.Text.Trim())) {
MessageBox.Show(\"您输入的用户名不存在\提示\"); txtUserName.Text = \"\"; txtUserName.Focus(); return; }
PersonInfo pi = new PersonInfo(User.userName); if (!pi.IsExist()) {
MessageBox.Show(\"用户不存在或未进行个人信息设置\"); return; }
41
防灾科技学院毕业设计(论文、综合实践报告) if (!pi.AnswerQstn(txtAnswer1.Text.Trim(), txtAnswer2.Text.Trim(), txtAnswer3.Text.Trim())) {
MessageBox.Show(\"问题回答错误\请重新回答\"); txtAnswer1.Focus(); return; } else {
txtUserName.Enabled = false; txtAnswer1.Enabled = false; txtAnswer2.Enabled = false; txtAnswer3.Enabled = false; btnGetPassword.Enabled = false; txtNewPassword1.Enabled = true; txtNewPassword2.Enabled = true; btnChangePassword.Enabled = true;
MessageBox.Show(\"回答正确,请设置新的用户密码\恭喜\"); txtNewPassword1.Focus(); } }
catch (Exception ex) {
MessageBox.Show(ex.Message); } }
private void btnChangePassword_Click(object sender, EventArgs e) { try {
if (txtNewPassword1.Text.Trim() == \"\" || txtNewPassword2.Text.Trim() == \"\") {
MessageBox.Show(\"密码不能为空\提示\"); txtNewPassword1.Focus(); return; }
if (txtNewPassword1.Text.Trim() != txtNewPassword2.Text.Trim()) {
MessageBox.Show(\"两次输入的密码不一致\提示\"); txtNewPassword1.Text = \"\"; txtNewPassword2.Text = \"\"; txtNewPassword1.Focus(); return; }
User.ModifyPwd(txtNewPassword1.Text.Trim()); }
42
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务