学生选课系统的设计与实现(共48页).doc
精选优质文档-倾情为你奉上防 灾 科 技 学 院毕 业 设 计题目学生选课系统的设计与实现学生姓名涂语楠学号 系 别灾害信息工程系 专 业信息管理与信息系统 班级07302 开题时间 2011 年 1 月 1 日答辩时间2011年06月11日指导教师白灵职 称讲师专心-专注-专业学生选课系统的设计与实现作者:涂语楠指导老师:白灵摘要: 随着我校大学生人数的不断增加,使得教务管理系统的数据量也不断上涨。为了减轻教务处的教务管理工作,以及方便学生选择自己所喜欢的科目。学生选课系统针对这一环节,实现教学资源实体与学生两个集合的协调统一,规避课程分配冲突,更加有效衔接教学管理系统的各子系统的关系。本系统是一个典型的信息管理系统,其开发主要包括后台数据库的建立和维护,以及客户端程序的开发两个方面。本文通过分析客户端/服务器结构的特点并结合选课的实际情况,提出了基于客户端/服务器结构选课系统的基本设计思想,简要介绍了系统需求分析和系统的功能设计、ACCESS数据库设计、C#程序设计及系统实现过程。重点描述了如何利用C#以及ACCESS数据库管理系统相结合的方法来开发基于客户端的选课系统。并在试运行的基础上对系统进一步完善提出了改进方案。通过该系统,使学生可以方便地在局域网内的计算机上安装客户端进行选课。关键词:学生选课,客户端/服务器结构,C#,ACCESS数据库管理系统The Design and Implementation of Student Select Course SystemAuthor:TU Yu-nanInstructor:BAI LingAbstract: 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 目 录引言在信息发展全球化,网络化的今天,校园局域网已成为每所高校所必备的信息基础设施,各种管理信息系统凭借于校园局域网应运而生。在各大高校的教务系统管理过程中,课程表的编排是一项非常复杂的工作。在排课的过程中,除了必须满足大量的制约条件以外,还需要解决很多冲突与矛盾,例如:两位老师不能同一个时间在同一间教室上课,一位教师不能在同一个时间上两门课等等。利用计算机的辅助进行课程表编排工作,不但可以提高排课工作的科学性,还大大减轻了管理人员工作的强度,提高工作效率,使得学校教务管理迈上了一个新的台阶。现在,我国的高等教育事业正在蓬勃发展,高等学校的规模不断的扩大,在此,高等学校的教学改革也在全面的推行,学分制在各大高校全面启动。所谓学分制就是允许学生在计划的指导下,根据自己的条件、能力、兴趣,有选择的支配自己的学习时间和内容。因此,学生选课管理成为了推行实施学分制管理的重要任务。由于学生选课时的制约条件较多、较复杂,工作量也比较大,而且往往需要在很短的时间内完成,因此运用计算机辅助选课,即能实时地检验和统计大量的选课数据,又能十分方便地输出选课结果,同时也避免了在人工处理时产生的错误。学生选课系统是以数据库作为后台,数据库从60年代初发展起来到今天,经过了四十多来年的发展,数据库技术己经逐渐成熟。就数据库应用来说,呈现了多样化的空间,例如数字图书馆、电子出版物、电子商务、远程教育系统等,给数据库技术的发展提出了更多、更高的要求。本文引言部分主要介绍了学生选课的背景,第一章概述,介绍学生选课系统的背景,做这个设计的目标以及意义;第二章介绍该选课系统的需求分析,系统分析和系统结构;第三章主要介绍了系统设计相关的背景,主要包括Visual Studio 2008 Team System开发工具、Access数据库、C#开发语言;第四章系统总体设计的介绍,主要是各模块功能的简介,和面向对象分析;第五章是数据库的详细设计,具体介绍了数据库的设计,物理设计和逻辑设计;第六章是系统各个功能的实现,详细介绍了各个模块实现的功能;论文最后是结论、致谢及参考文献。1.概述1.1课题背景二十一世纪是科学技术竞争与民族素质竞争的时代,其本质就是人才与教育的竞争。教育的历史让我们知道,教育的每次重大改革和发展都与科学技术息息相关,科学技术是第一生产力,也是发展教育的重要动力。随着科学技术的不断进步,计算机科学技术日渐成熟,计算机在各个领域所扮演的角色越来越重要。很长时间以来,人们都在用人工的方式来管理文件档案,这种管理方式存在着很多的缺点,例如:效率低,保密性差,除此之外时间一长,将有大量的文件和数据产生,这对于查询、更新和维护都带来了很大的困难。选课信息管理系统作为计算机应用的一个部分,其优点是手工管理所无法比拟的,例如:查询方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点是学校的科学化、正规化管理的重要条件。选课管理系统属于教学信息管理系统的一个部分。随着高等教育的发展与社会需求,各大高校尽可能多地开设各类课程,使得学生的知识面得到拓展,塑造学生的个性,培养了学生的创造能力,使学生的综合素质有所提高。但是而传统的手工选课方式非常的烦琐与复杂,由学校统一发布可选课程表,让学生事先了解可选的课程和各班选课报名的时间,然后按规定的时间到指定的地方去报名。这种方式存在着明显弊病。主要是:许多学生一起去报名,十分拥挤,很难组织;由于各班选课报名时间不同,排在后面的各班的学生常常选不到理想的课程。传统的选课方式已经不适应现代教务教学的改革和发展,迫切需要一种新的选课方式。为使教学管理工作的科学化、规范化,就必须采用计算机辅助管理。计算机管理使选课更加高效准确,省去了大量的人力劳动,提高了教学管理的信息化水平。因此,学生选课是一项非常重要的工作,主要负责对整个学校学生的选课进行管理,除此之外,还需对学生信息及课程信息进行维护,对学生所选课程的考试成绩进行记录,学生选课是实现高校学分制的一个重要环节。随着学校硬件水平的提高、信息化进程的加快,教务工作急切希望能够抛开原有繁琐的管理方式,希望能够根据学校现状的实际需求开发一套能够系统化、科学、有效、易于掌握的管理软件。现在学院已经基本实现了网络化管理,各部门已有了计算机,原来的计算机管理系统可以实现简单的信息管理,现在需要一个学生选课管理平台。为了切实解决课程管理中存在的诸多问题,提高教务管理的水平和质量,使学院选课的管理更加规范,经过几个月的努力,我设计开发了防灾科技学院选课系统。此系统基本上实现了一些选课相关的功能。1.2课题目标该选课系统的主要目的是实现学生选择课程的公平性和方便性,让他们可以在学校内任一安装客户端的机器上查询课程,选择课程,删除课程;对于课程管理员,可以通过登陆客户端添加、修改、查询、删除课程信息;对于学生管理员,可以通过登陆客户端添加、修改、查询、删除学生信息;对于教学管理部门,能够实现学生信息的管理,对课程信息的管理,以及对这个系统的维护。1.3课题意义选课系统是学校不可或缺的一个部分,它的内容对于学校来说都是非常的重要,所以选课管理系统应该能够为学生用户提供大量的课程信息,方便学生快速的查询。随着科学技术的不断进步,计算机科学也在不断地成熟,其强大的功能已经被人们所深刻的认识,它已经深入到人类社会的各个领域并在这些领域里发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是教学的科学化、正规化管理,与世界接轨的重要条件。开发此系统无论是从课题的研究上还是从技术方面考虑都是很有必要的。本课题的研究开发可以解决以往传统效率低、工作繁琐的人工管理选课方式,省去了大量的人力劳动,并且方便更有效的、更合理的完成教务人员对选课管理的效率。技术运用上也有利于加快学校信息化建设的步伐。实现教育的现代化、科技化,从而提高教学管理的信息化水平。2.需求分析2.1需求分析选课系统需求满足来自三方面的需求,这三个方面分别是学生、管理员和超级用户。学生的需求是查询院系的课程、学生选课情况及学生信息的修改;管理员的功能比较复杂,其中包含三种:学生管理员、课程管理员和管理员;超级用户主要是系统状态的查看、维护。学生可以直接查看选课情况,学生可以根据自己的学号和密码登录学生选课系统,还可以修改查询个人相关的部分信息。一般情况下,学生只能查询和修改自己所选课程的情况还有个人信息,若需要查询和修改其他学生的选课以及成绩查询,就需要知道其他学生的学号和密码。这些是很难得到的,特别是密码,所以不但满足了学生的要求,还保护了学生的个人隐私。管理员分为学生管理员,课程管理员和管理员。学生管理员可根据学校学生的学号,增加学生用户,给新的学生用户建立新的用户名和密码,学生可以通过学生管理员提供的用户名和密码进行登录操作,学生管理员还可以对没有进行选课的学生进行删除操作,数据安全性和保密性要求最高;课程管理员是对课程进行操作,课程的增加、删除,根据学校的规定,安排选课的课时、学分、开课的时间都是由课程管理员执行的;管理员除了能操作学生管理员和课程管理员所有的内容,还能添加、删除学生管理员和课程管理员。超级用户拥有最高权限,是用来系统初步实施的,在此系统中,超级用户可以管理系统中的所有用户,所有操作。本系统的主要功能是完成我校教务管理对学生选课的功能。实现学生在客户端上进行独自的选课,学生能根据自己的意愿来选择自己感兴趣的课程。在教务管理的同时,教务处能全面的管理本学校的学生信息,学生,老师,课程以及上课的时间等。达到学生和老师都有合理的安排。2.2 系统分析在本系统中,有五类用户:超级用户、管理员、学生管理员、课程管理员、学生用户。五种不同的用户所具有的功能。根据要求,从功能上可以分为两个类:一个是通用功能,登录、个人信息管理、切换用户、找回密码、系统帮助和退出是所有用户都具有的功能;另一种是为不同用户定制不同功能。2.2.1 通用功能1、登录功能登录功能是验证登录的用户信息,不同的用户在验证登录信息后,进入主界面会有不同的操作内容。2、个人信息管理个人信息管理是用来查询、修改用户的信息。3、切换用户切换用户功能是用户登录主界面后,需要切换到其他的用户时使用。4、找回密码找回密码是用户忘记自己的登录密码,可以通过找回密码设置的问题,找回自己的登录密码。5、系统帮助系统帮助是用户在不了解系统的使用方法时,可以查看系统帮助。6、退出在用户使用完学生选课系统后,不在进行其他的操作,选择退出即可退出选课系统界面。2.2.2 用户具有的功能1超级用户主要用来系统的初步实施时使用,登录后具有系统所有的功能:1)学生管理:可以添加、修改、查询、删除学生信息。2)课程管理:可以添加、修改、查询、删除课程信息。3)学生选课管理:可以为学生选课及查询、删除学生的选课信息。4)系统用户管理:可以增加及删除管理员、学生管理员、课程管理员用户。2管理员用户登录后,可以进行学生管理、课程管理、系统用户管理。1)学生管理:可以添加、修改、查询、删除学生信息。2)课程管理:可以添加、修改、查询、删除课程信息。3)系统用户管理:可以增加及删除学生管理员、课程管理员用户。3 学生管理员用户登录后,可以进行学生管理。1)学生管理:可以添加、修改、查询、删除学生信息。4课程管理员用户登录后,可以进行课程管理。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体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序,二者可分别称为前台程序与后台程序。一旦服务器程序被启动,就随时等待响应客户程序发来的请求。当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求;服务器程序根据预定的规则做出应答,送回结果,应用服务器运行数据负荷较轻。 3 数据的储存管理功能比较透明 ,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的。对于工作在前台程序上的最终用户是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序并不是非常“瘦小”,并没有将麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。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系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块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管理系统。它具有界面友好、易于学习和使用、开发较为简单、接口灵活等功能,是一个典型的新一代桌面数据库管理系统。其主要特点如下: (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,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等语言。4.系统总体设计4.1功能模块简介在前面的系统的系统功能分析中,将系统划分成9个模块,如下图4.1所示。 用户登录模块学生管理模块课程管理模块学生选课模块个人信息管理模块用户管理模块系统帮助模块数据库模块找回密码功能模块图4.1 系统模块结构图用户登录模块验证用户名和密码,并根据不同的用户类型,进行不同的操作。设置学生信息管理模块是提供给学生管理员增加、修改、删除学生信息。课程管理模块提供给课程管理员,用来增加、修改、删除选课信息。学生选课模块提供给学生用户,用来查询或者删除自己已选的课程。个人信息管理模块提供给学生用户,编辑学生自己的个人信息。用户管理模块用于用户超级管理员,可以对用户管理员经行增加、删除。系统帮助模块包括查看系统帮助信息。找回密码功能是对学生用户在忘记密码是找回密码。4.2面向对象分析根据上面的分析,将模块结构图转换成系统用例图如下图4.2所示。图4.2 系统Use Case图1 系统中包含的类。系统中的类从系统包含的人员及事物开始。学生选课系统中包括对人员有:超级用户、管理员、课程管理员、学生管理员、学生用户。这些人员可以统称为“系统用户”,即系统中应该有一个“系统用户”类。系统包含的事物有:学生、课程。同时学生也是一类系统用户。学生和课程是系统用户的操作对象。因此,系统还应包含“学生”类及“课程”类。2定义类的属性。“系统用户”类主要用于系统登录及系统各个功能的使用,因此应该包含“用户名”和“密码”属性;系统中共有5种类型用户,因此,添加“用户角色”记录用户的类型。“学生”类包括“学号”,“姓名”,“性别”,“年龄”,“所在系”。“课程”类包括“课程编号”,“课程名”,“学分”,“开课学期”,“总学时”。3定义类的方法。初步定义的各个类的方法,各个类都包含添加、删除、修改、获取信息等常规操作,系统用户如若是“超级用户”或“学生用户”的话,还可以进行“选课”及“取消选课”操作。4建立类之间的关系。“学生”和“课程”类为“系统用户”类的操作对象,因此,“学生”和“课程”对象的存在依赖于“系统用户”,同样,“系统用户”本身也可以操作“系统用户”,对用户进行添加、修改、删除等操作,因此本身也是一种依赖关系。“学生”和“课程”之间存在一定的关联。在分析阶段中,系统用户和个人信息之间存在着组合关系,学生和系统用户之间存在着聚合关系。由于在实际实现时,系统将所有的数据存储关系数据库中,现在不一定非要在系统用户和个人信息两个类之间保持组合关系,而只需要在个人信息类中保持其所属用户名就可以了;学生和系统用户类也不用保持聚合关系,学生是一类特殊的系统用户,只需在用户表中保持学生用户的一份拷贝即可,令学号的值为用户名。专业和班级,班级和学生,以及音乐类别和音乐之间的关系也是如此。系统用户在添加一个新的用户的时候要首先判断是否此用户已经添加过,因此,添加“判断某个用户是否存在”方法。系统用户的密码在存储的时候为了安全起见需进行加密处理,因此,添加“加密密码”方法,密码采用MD5哈希算法进行加密,MD5是一种单向加密算法,即能加密但不能进行解密操作。添加某种机制令用户忘了密码的时候可以重新设置密码。机制规则:用户首次登录时提示用户输入一些信息,以后在忘记密码时,通过回答这些信息找回密码;若用户首次登录时没有输入这些信息,可以在以后的时候过程中在输入。因此,“系统用户”类需添加属性“是否首次登录”,添加额外的“个人信息”类记录这些额外的信息。当添加一名学生时,需要判断这名学生是否已经添加过,因此,添加“是否已经存在”方法判断一个学生是否已经添加过。当删除一名学生时,需要保证该名学生没有选过课,然后再进行删除操作,因此,添加“是否选过课”方法。获取学生信息时,有时需要获取全部学生信息,有时需要按照条件获取部分学生的信息,添加 “获取全部学生信息”和“获取部分学生信息”。当添加一门课程时,需要判断这门课程是否已经添加过,因此,增加“是否已经存在”方法判断一门课程是否已经添加过。当删除一门课程时,需要保证此课程没有学生选择,然后再进行删除操作,因此,增加“是否被选过”方法。获取课程信息时,有时需要获取全部课程信息,有时需要按照条件获取部分课程的信息,添加“获取全部课程信息”和“获取部分课程信息”。将对数据库的操作封装成一个类,其他的类对数据库的操作通过此类进行。将上述关系建立一个类图如下图2.3所示。图4.3 系统类图5.系统详细设计5.1数据库设计本系统的数据库实体主要有“学生”、 “课程”。其中“学生”与“课程”存在“选课”联系,一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。“学生”还包括很多的属性,如姓名、性别、年龄、学号、所在系等信息;“课程”也包括很多的属性,如学时、课程学分、课程名、课程号等信息。整个数据库可以用一个E-R图表示,如下图,图5.1所示:学生课程选课学号姓名性别年龄所在系学时成绩课程号课程学分课程名nm图5.1 E-R图5.2数据库逻辑设计数据库逻辑就是指确定数据库的逻辑结构,是将ER图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。转换过程中常见规则有:(1)一个实体型转换为一个关系模式;(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;(4)一个多对多的关系转换成一个关系模式。学生表(学号,姓名,性别,年龄,所在系)课程表(课程号,课程名,课程学分,学时)学生选课表(学号,课程号,成绩)系统用户表(用户名,密码,角色,是否第一次登录)个人信息表(用户名,问题1答案,问题2答案,问题3答案)5.3数据物理设计根据数据库的分析,建立如下五个数据表。学生表(Student),其结构见表5.1所示表5.1 学生表字段数据类型说明Sno文本学号Sname文本姓名Ssex文本性别Sage数字年龄Sdept文本所在系课程表(Course),其结构见表5.2所示表5.2 课程表字段数据类型说明Cno文本课程编号Cname文本课程名称Ccre