
学生选课管理系统
-
2023年3月17日发(作者:无菌操作名词解释)学生选课管理系统
I
学生选课管理系统
摘要
随着社会的发展,学生的人数和课程的种类急速增加,传统的选课
管理模式已经无法满足当前的实际需求,为此,我们开发了学生选课管
理系统。
本人结合学生选课管理的实际需要,完成了对学生选课管理系统的
需求分析、功能模块划分、数据库模式分析等,并由此设计了后台数据
库以及前台应用程序。
文中首先对课题背景,数据库基础理论和SQL语言进行了简单的讨
论;接着,对系统前台开发工具PowerBuilder9.0,学生选课管理系统进
行了详细分析,划分了具体的功能模块;最后,给出了学生选课系统应
用程序的设计过程,以及每个功能模块的核心代码。
系统可以实现学生选课的一些重要功能,如:课程的添加、删除,
信息查询、选课、生成课表,以及学生选课管理人员、用户个人信息的
维护等。
关键词管理系统;数据库;PowerBuilder9.0;SQLServer2000
学生选课管理系统
II
SelectCourse
ManagementSystemofStudents
ABSTRECT
Withthedevelopmentofsociety,notonlythestudent’snumberbut
alsothekindsofcourseincreasedrapidly,thetraditionalmanagement
modehasbeenunabletoadapttoactualneed,sowedeveloptheselect
coursemanagementsystemofstudents.
Accordingtotheactualneedofselectcourse,Ianalyzedthe
demand,dividedfunctionnodule,analyzeddatabasemodeofthesystem.
Then,Idesigneddatabaseofbackstageandapplicationprogramof
stage.
Firstly,Isimplydiscussedthebackgroundofthissubjectandthe
analyzedthedevelopmenttool—PowerBuilder9.0,analyzedindetailto
y,Iprovidedthe
designprocessofthesystemandthekeycodeofeachfunctionnodule.
Thesystemaccomplishedsomeimportantfunctionsofmanagement
systemofbooks,suchas:course’sinput,output,informationinquiry,
selectcourses,createtableofcourse,modifyinformationofthe
administratorsandstudents,etc.
KEYWORDSManagementSystem,Database,PowerBuilder9.0,SQL
学生选课管理系统
III
目录
摘要........................................................I
ABSTRECT.....................................................II
1绪论........................................................1
1.1课题的背景...........................................1
1.2课题的设计...........................................2
1.3本文的结构...........................................2
2相关知识基础...............................................3
2.1数据库的基础知识....................................3
2.2关系型数据库.........................................5
2.3PowerBuilder9.0开发工具简介.......................7
2.4SQL概述..............................................8
2.5本章小结............................................11
3系统分析...................................................13
3.1系统分析............................................13
3.1.1用户要求........................................13
3.1.2业务流程分析....................................13
3.1.3系统实体E-R图分析..............................14
3.2本章小结.............................................15
4系统实现...................................................16
4.1创建一个工作空间和应用程序对象...................16
4.2创建数据库表........................................16
4.3创建主窗口...........................................18
4.4创建主菜单..........................................18
4.5系统管理模块的实现..................................19
学生选课管理系统
IV
4.5.1创建课程查询窗口.................................19
4.5.2创建添加选课窗口................................21
4.5.3创建生成课表窗口................................26
4.5.4创建个人信息窗口................................28
4.5.5生成课表窗口的设计..............................29
4.5.6创建登录窗口....................................31
4.5.7splash界面的实现................................32
结束语.......................................................34
致谢........................................错误!未定义书签。
参考文献.....................................................35
学生选课管理系统
1
1绪论
数据库是数据管理的最新技术,是计算机科学的重要分支。今天,
信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信
息处理要求的行之有效的信息系统也成为一个企业或组织生存和发展的
重要条件。因此,作为信息系统核心和基础的数据库技术得到越来越广
泛的应用。从小型单项事务处理系统到大型信息系统,从联机事务处理
到联机分析处理,从一般企业管理到计算机辅助设计与制造(CAD/CAM)、
计算机集成制造系统(CIMS)、办公信息系统(OIS)等,越来越多新的
应用领域采用数据库存储和处理他们的信息资源。
1.1课题的背景
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,
这正是计算机被广泛应用于信息管理系统的环境。计算机的最到好处在
于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工
作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算
机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管
理的前提。本系统就是为了管理好学生选课信息而设计的。
学生选课作为一种信息资源的集散地,包含很多的信息数据的管理。
由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的
信息管理手段。尽管有的学校有计算机,但是尚未用于信息管理,没有
发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发基本环
境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。造成
了时间上的浪费
基于这个问题,我认为有必要建立一个学生选课系统,使学生选课
信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,
提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选
课情况。
学生选课管理系统
2
1.2课题的设计
本文就学生选课系统的设计与制作展开分析。学生选课系统主要应
用数据库技术开发,先从数据库的基本知识开始介绍,数据库的基本概
念、数据库的发展、数据库的结构,还介绍了开发工具PowerBuilder9.0
和SQL语言。我主要是应用PowerBuilder9.0为前端开发工具,利用SQL
语言实现数据查询。设计系统时,先从系统的数据流程开始分析,设计
系统的业务流程图、系统的数据流程图、系统的E-R图。根据开题报告
的设计要求开始进入系统的总体设计,接着制定系统的设计思想,分析
系统的功能并设计系统的功能模块,这些都是系统制作前的准备工作;
准备工作完成后,开始系统数据库的建立,主要有各个功能窗口的设计,
将设计好的窗口集中到主菜单上,通过用户的用户名和密码的登录可以
进入到主窗口,这样就完成系统的制作。最后,对系统进行调试,性能
分析。
1.3本文的结构
第2章,简单介绍了相关的基础知识(如:数据库的基本概念、数
据库的类型、数据库的结构、开发工具等),为系统的设计进行知识储备。
第3章,详细介绍了系统分析与设计。
第4章,介绍了系统的制作过程,如:建立数据库、设计制作窗口
等。
第5章,对系统进行运行、调试,对系统性能分析和评价。
学生选课管理系统
3
2相关知识基础
2.1数据库的基础知识
2.1.1数据库系统的发展
数据库系统是在文件系统的基础之上发展而来的,经历了层次数据
库、网状数据库和关系数据库三个阶段。由于关系型数据库采用人们比
较容易理解和接受的二维表格来组织数据,发展迅速,已成为数据库产
品的主流。这里介绍的数据库知识都是指的关系数据库。数据库架构如
图2-1所示。
数据库应用
程序
数据库管理系统
DBMS
数据库
DataBase
数据库管理人员
DBA
图2-1数据库应用的架构
2.1.2基本概念
数据库(DataBase,简称DB)是按一定组织方式存储在计算机存储
器中、相互关联的数据集合,数据库的建立独立于程序。所谓关系数据
库就是将数据表示为表的集合,通过建立简单表之间的关系来定义结构
的一种数据库。
数据库管理系统(DBMS)是一个管理数据库的软件系统,为用户提
供了描述数据库、操纵数据库和维护数据库的方法和命令,并且能自动
控制数据库的安全以及数据完整。常见数据库管理系统有:Oracle、
Sybase、MicrosoftSQLServer、MicrosoftAccess、Microsoft
FoxPro、IBMDB2等。
数据库系统(DBS)是一个具有管理数据库功能的计算机系统,它包
括应用软件、数据库(DB)、数据库管理系统(DBMS)和数据库管理人员
(DBA)几部分。图2-1直观地表示了数据库应用的架够。数据库管理人
学生选课管理系统
4
员(DBA)一般是针对大型的数据库应用而言的,主要负责数据库的日常
运行和维护,如数据库备份等工作。
2.1.3数据库及数的研究领域
数据库学科的研究范围十分广泛的,概括地讲可以包括以下三个领
域:
(1)数据库管理系统软件的研制
DBMS[3]是数据库系统的基础。DBMS的研制包括DBMS本身及以DBMS
为核心的一组相互联系的软件系统,包括工具软件和中间件。研制的目
标是提高系统的可用性、可靠性、可伸缩性;提高性能和提高用户的生
产率。
DBMS核心技术的研究和实现是三十余年来数据库领域所取得的主要
成就。DBMS是一个基础软件系统,它提供了对数据库中的数据进行存储、
检索和管理的功能。
(2)数据库设计
数据库设计的主要任务是DBMS的支持下,按照应用的要求,为某一
部门或组织设计一个结构合理、使用方便、效率较高的数据库及其应用
系统。其中主要的研究方向是数据库设计方法学和设计工具,包括数据
库设计方法、设计工具和设计理论的研究,数据建模和数据建模的研究,
计算机辅助数据库设计方法及其软件系统的研究。数据库设计规范和标
准的研究等。
(3)数据库理论
数据库理论的研究主要集中于关系的规范化理论、关系数据理论等。
近年来,随着人工智能与数据库理论的结合、并行计算技术等的发展,
数据库逻辑演绎和知识推理、数据库中的知识发现(KnowledgeDiscovery
fromDatabase,简称KDD[4])、并行算法等成为新的理论研究方向。
计算机领域中其他新兴技术的发展对数据库技术产生了重大影响。
数据库技术和其他计算机技术的互相结合、互相渗透,使数据库中新的
技术内容层出不穷。数据库的许多概念、技术内容、应用领域,甚至某
些原理都有了重大的发展和变化。建立和实现了一系列新型数据库系统,
如分布式数据库系统、并行数据库系统、知识库系统、多媒体数据库系
学生选课管理系统
5
统等。它们共同构成了数据库系统大家族,使数据库技术不断地涌现新
的研究方向。
2.2关系型数据库
关系数据库由表组成。一个关系是由一个二维表来定义的:表的行
保存事物的一组属性数据,表的列定义了事物的属性。
以下是关系型数据库系统[5]的一些特点:
·几乎当今所有的关系型数据库系统都采用SQL语言来操纵数据库
中的数据。SQL语言是在20世纪70年代由IBM发展起来的,后来成为工
业标准。
·最重要的是必须保证数据的完整性。否则,存储在数据库中的数
据就是毫无价值的。关系型数据库系统包括许多特性,目的是阻止不符
和要求的数据进入数据库。
·关系型数据库系统被设计为一个便于修改的系统,因为商业需求
几乎每天都在变化。
·在文件系统阶段,相同的数据常常重复出现在许多记录中,而关
系型数据库系统则会排除大多数的冗余数据。这就减少了对存储空间的
需求,加快了数据访问的速度。
·应用程序可以通过多级的安全检查来限制对数据的访问。
2.2.1数据模型
模型是现实世界特征的模拟和抽象。数据模型(DataModal[6])是对
现实世界中数据特征的抽象。
存在于人们头脑之外的客观世界,称为现实世界。数据库系统中保
存的数据实际上是对现实世界的一种描述,它是采用数据模型对现实世
界进行描述的。数据模型是数据库系统中用于提供信息表示和操作手段
的形式框架,是数据库系统的核心和基础。
数据模型分为两种,一种是概念数据模型,它是用来描述现实世界
中数据及数据之间关系的模型,跟计算机没有关系。这种模型主要描述
高层次的概念,按照用户的观点对数据和信息进行建模,把现实世界中
的客观对象抽象为某种信息结构,如被描述对象的意义、相互关系等。
学生选课管理系统
6
另外一种就是实体数据模型,它是用来描述信息世界中数据及数据之间
的关系及存储、处理特征的模型,主要包括层次模型、网状模型、关系
模型,它是按照计算机的观点对数据建模,主要用于DBMS的实现。
在信息世界中,把客观存在并可相互区别的事物称为实体
(Entity[7]),同型实体的集合称为实体集(EntitySet),实体所具有的
某一特性称为属性(Attribute)。
2.2.2实体之间的联系
在现实世界中,各种事物之间往往有着各种各样的联系,这种联系
必然在信息世界中有所反映。实体之间的联系可以分为两类,一类是实
体内部的联系,如组成实体的属性之间的联系,这种联系往往比较容易
理解。另外一种联系就是实体之间的联系,如学生和班级之间的联系:
一个学生属于某一个班级,而另一个班级有多个学生。
实体完整性规则规定基本关系的所有主属性都不能去空值,而不仅是
主码整体不能取空值。
对于实体完整性规则说明如下:
1.实体完整性规则是针对基本关系而言的,一个基本表通常对应现
实界的一个实体集。例如学生关系对应于学生的集合。
2.现实世界中的实体是可区分的,即它们具有某种唯一性标识。
3.相应地,关系模型中以主码作为唯一性标识。
4.主码中的属性即主属性不能取空值。所谓空值就是“不知道”或
“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,
即存在不可区分的实体,这与第2点相矛盾,因此这个规则称为实体完
整性。
2.2.3规范化设计方法
构造数据库时,必须遵循一定的规则。在关系数据库中,这种规则
就是范式(NormalForm)。或者说,满足一定条件的关系模式,称为范
式。在1971年至1972年,E.F.Codd系统地提出了第一范式(1NF)、
第二范式(2NF)和第三范式(3NF)的概念。1974年Codd和Boyce共同
提出BCNF范式,为第三范式的改进。关系数据库中的关系必须满足一定
学生选课管理系统
7
的要求,即需要满足不同的范式。目前除了前面提到的三种范式,还有
第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。
2.3PowerBuilder9.0开发工具简介
PowerBuilder9.0是Sybase公司2003年推出的新一代4GLPlus数
据库开发工具,它不仅继承了以往版本的各种先进技术,而且适应目前
开放试软件的发展潮流,在快速集成开发环境中增加了构建WebService、
JSPWeb、EJB的功能,满足了在4GLRAD环境中创建完整应用和应用组
件的需求,并使企业应用可以平滑过度到基于浏览器和Web的应用模式
下。同时,PowerBuilder9.0卓越的应用开发效率及强大的Web功能为新
版本增色不少。
完整的应用系统有工作空间、目标、应用对象。窗口上的菜单对象。
数据窗口对象和控件对象,以及这些对象的事件处理程序构成。
(1)工作空间和目标
在以前的版本中,程序员一次只能开发一个应用程序,这样使得应
用程序无法取得多个可用的组件信息,因此在构件复杂应用时会大大增
加难度。
PowerBuilder9.0提供了Workspace功能,这让开发人员同时在多
个应用或组件上进行开发,同时PowerBuilder9.0用Target来描述加到
Workspace中的应用或组件。[11]PowerBuilder中存在三类Target是:
Window客户、EAServer组件和Web站点。在PowerBuilder中,只有打
开Workspace才能更有效地工作,开发者可以在Workspace中定义一个
新的Target或者加入一个已经存在的Target。因此,Workspace已经变
成了PowerBuilder中所有活动的中心。
(2)窗口、控件、事件和程序
在PowerBuilder中,窗口(Window)是主要的用户界面,软件开发人
员往往把各种控制功能(如录入、查询、打印、统计等)做成按扭或其它
控件放在窗口上有用户选择。应用对象、窗口对象、菜单对象,窗口上
的数据窗口控件和其他控件对象都对应着若干个可能发生的事件[12-13],
如应用对象和窗口对象上有Open(打开),Close(关闭)等事件,菜单项
上有Clicked(鼠标左键单击或按回车键)等事件,窗口上的控件有
学生选课管理系统
8
Clicked、DoubleClicked(用鼠标左键双击)Getfocus(得到焦点),Edit
Changed(数据被修改)等事件[14]。PowerBuilder的程序是嵌套在事件中
的,也就是说由事件驱动的,一旦用户选定了控件也就触发了某个事件。
软件开发人员只需为各个控件的事件编写事件处理程序,指定该事件被
触发时要进行的处理,应用系统就这样构造出来了。
事件处理程序用PowerBuilder的专用语言PowerScript语言编写。
PowerScript语言是一种高水准。面向对象的语言,提供了丰富的内置函
数供软件开发人员使用。事件处理程序有PowerScript语句和函数组成,
来响应被触发的事件并做相应的处理。
例如,菜单项上有Clicked事件此事件的处理程序可能是打开另一
个窗口,用户用鼠标左键单击此菜单时,Clicked事件被触发,指定的窗
口被打开。又如窗口上有一个数据窗口和一些按扭,按扭上的文字为“录
入”、“删除”、“存盘”等,这些按扭的功能分别为数据窗口中插入一行,
删除一行,将结果修改存盘,我们只需为这些按扭的Clicked事件编写
相应的程序完成这些功能。
(3)函数
函数是PowerScript语言的重要组成部分,PowerBuilder为软件开
发人员提供了近800个内置函数[15-16],主要用于完成以下工作:访问和
操作数据,操纵对像的数字或文本,进行计算,字符串处理,数据类型
转换,处理日期和时间,文本文件的输入和输出,生成商务图形,打印
数据,与其他窗口的数据通信,处理邮件,Web应用,分布式应用等。此
外,软件开发人员还可以通过建立用户自定义函数来满足某个应用系统
的特殊要求。需要时还可调用Windows的SDK函数和外部DLL函数。
2.4SQL概述
2.4.1SQLServer2000概述
SQLServer2000是一个大型关系数据库管理系统,它是微软公司推
出的新一代数据库产品。它是微软公司在SQLServer7.0版的基础上经
过改进和提高而推出的数据库产品。它的性能、可靠性、质量以及易用
性都比以前的版本大有提高。它提供了许多提高系统运行性能的新功能,
学生选课管理系统
9
并使数据库的管理工作变得更加轻松容易。把SQLServer2000作为
OLTP、数据仓库以及电子商务应用程序的后台数据库是一个不错的选
择。在SQLServer2000关系数据库中,信息被存放在二维表格结构的
表(TABLE)中。数据库中的表之间可以是相互关联的,表之间的这种关
联性是通过主健和外键所体现的参照关系来实现的。数据库中不仅包括
表,还包括其他数据库对象,如:视图、存储过程、索引等。
SQLServer2000采用了客户/服务器计算模型,即中央服务器用来
存放数据库,该服务器可以被多台客户机访问,数据库应用的处理过程
分布在客户机和服务器上。客户/服务器计算模型分为两层的客户/服务
器结构。在两层的客户/服务器系统中,客户机通过网络与运行SQLServer
2000实例的服务器相连,客户机用来完成数据表示和大部分业务逻辑的
实现,服务器完成数据的存储,这种客户机被称为“胖客户机”(thick
client)。在多层的客户/服务器系统中,应用至少要经历三个处理层,
第一层仍是客户机,但是它只负责数据的表示;第二层是业务逻辑服务
器,负责业务逻辑的实现,所有的客户机都可以对它进行访问;第三层
是数据库。这种多层结构中的客户机被称为“瘦客户机”(thinclient)。
Internet应用就是三层结构的一个典型例子。
数据库系统采用客户/服务器结构的好处是,数据集中存储在服务器
上,而不是分开存储在客户机上,使所有用户都可以访问到相同的数据。
业务逻辑和安全规则可以在服务器上定义一次,而后被所有的客户使用。
关系数据库服务器仅返回应用程序所需要的数据,这样可以减少网络流
量。节省硬件的开销,因为数据都存储在服务器上,不需在客户机上存
储数据,所以客户机硬件不需要具备存储和处理大量的数据能力。同样,
服务器不需要具备数据表示的功能。由于数据集中存储在服务器上,所
以备份和恢复起来很容易。
2.4.2SQL语言介绍
SQL是英文StructuredQueryLanguage的缩写,中文意思是结构化
查询语言。SQL是一种介于关系代数与关系演算之间的结构化查询语言,
它是一个通用的、功能极强的关系数据库语言。SQL虽然名为查询语言,
但实际上具有定义、查询、更新和控制等多种功能。从20世纪70年代
学生选课管理系统
10
末起,在推出的关系数据库系统产品ORACLE、SQL/DS、DB2、SYBASE上
都实现了SQL语言。SQL语言是一种非过程化语言,它一次处理一个记录
集合,对数据提供自动导航。SQL语言允许用户在高层的数据结构上工作,
而不对单个记录进行操作。SQL语言不要求用户指定数据的存取方法,而
是使用查询优化器,由系统决定对指定数据存取的最快手段。当设计者
在关系表上定义了索引时,系统会自动利用索引进行快速检索,用户不
需知道表上是否有索引或者有什么类型的索引等细节。
SQL主要组成分成四个部分:数据定义、数据操纵、数据控制、制嵌
入式SQL的使用规定。数据定义(DDL):用于定义SQL模式、基本表、
视图和索引[13-14]。
数据操纵(DML):它分为数据查询和数据更新两类。其中数据更新
又分成插入、删除和修改三种操作。数据控制(DCL):包括对基本表和
视图的授权,完整性规则的描述,事务控制等内容。嵌入式SQL的使用
规定:其内容涉及到SQL语句嵌入在宿主语言程序中使用的规则。
(1)SQL的数据查询
SELECT语句的语法如下:
SELECT目标表的列名或列表达式序列
FROM基本表或视图
[WHERE行条件表达式]
[GROUPBY列名序列
[HAVING分组条件表达式]
[ORDERBY列名[ASC|DESC]…]
句法中[]表示该成分可有,也可无。
整个语句的执行过程如下:
(a)读取FROM子句中基本表、视图的数据,执行笛卡尔积操作。
(b)读取满足WHERE子句中给出的条件表达式的元组。
(c)按GROUP子句中指定的列的值分组,同时提取满足HAVING子句
中分组条件表达式的那些分组。
(d)按SELECT子句中给出的列名或列表达式求值输出。
(e)ORDER子句对输出的目标表进行排序,按附加说明ASC升序排
学生选课管理系统
11
列,或按DESC降序排列。
SELECT语句中,WHERE子句称为“行条件子句”,GROUP子句
称为“分组子句”,HAVING子句称为“分组条件子句”,ORDER子
句称为“排序子句”。
(2)数据插入
数据插入语法如下:
INSERTINTO基本表名(列名表)
VALUES(元组值)
或者INSERTINTO基本表名(列名表)
(table(元组值),
(元组值),
……)
前一种格式只能插入一个元组,后一种格式可以插入多个元组。
(3)数据删除
SQL的删除操作是指从基本表删除元组,其语法如下:
DELETEFROM基本表
[WHERE条件表达式]
其语义是从基本表中删除满足条件表达式的元组。
(4)数据修改
当需要修改基本表中元组的某些列的值时,可以用UPDATE语句实
现,其句法如下:
UPDATE基本表
SET列名=值表达式[,列名=值表达式…]
[WHERE条件表达式]
其语义是:修改基本表中满足条件表达式的那些元组中的列值,需
要修改的列值在SET子句中指出。
2.5本章小结
本章阐述了数据库系统的发展以及数据库的一些基本概念。
本章还详细的介绍了关系数据库的一些基本知识,其中包括数据模
型、实体之间的关系以及规范化设计方法。并且介绍了数据库应用程序
学生选课管理系统
12
的层次结构。包括单层结构、双层结构以及多层结构。简单介绍了关系
数据库标准语言SQL,并通过图形形象的表述了SQL对关系数据库模型的
支持。
学生选课管理系统
13
3系统分析
3.1系统分析
现代的社会是信息化的社会,信息无所不在。在生产领域、流通领
域、各个部门每天都和信息打交道,如何处理如此多的信息成为了一个
重要的课题。学生在学期开始选课是教学活动中的一个重要环节,该环
节如果能管理好,它不仅能加快学生的选课速度,也提高了整个教学活
动的效率。
大学一般都有上千名学生,每学期开始学生都要选课,因而产生了
大量的课程信息。考虑到用户使用的方便和处理的信息量系统要完成录
入,保存,查询,修改和删除课程信息的各种过程,能打印出课程信息
表。所以系统的基本体系结构采用C/S模式。
3.1.1用户要求
系统的主要使用对象是需要选课的学生。学生在选课是要察看各个
课程的详细信息,还要选择一些感兴趣的课程,需要生成课表,在发现
课程有冲突后能够修改先前选择的信息。需要随学生选课的变化,计算
相应的总学分。在全部选定后,打印报表。系统还需要管理员来查看和
修改学生的总体选课情况,课程信息和学生信息。
3.1.2业务流程分析
学生选课前要登录系统,查看所有课程的详细信息,包括课程代号、
授课教师、教室、上课时间、学分、剩余名额等。根据课程代号,学生
可以查询相应的课程,并添加课程。查看课表,并能发现是否存在冲突
课程,如果存在,可以删除该课程,并重新选择。打印课表,包含详细
的课程信息。最后,选课完毕。学生选课的数据基本流程如图3-1所示:
图3-1学生选课流程
学生选课管理系统
14
3.1.3系统实体E-R图分析
经过上述系统功能分析和需求总结,设计如下所示的实体和属性的
定义:
课程信息(课程代号,课程名称,授课教师,教室,剩余名额,上课
时间,学分)
学生信息(学号,姓名,性别,班级,出生年月日,是否已选课)
学生登录信息(学号,用户名,密码,权限代号)
学生选课信息(学号,课程代号,学期,课程成绩)
用户权限(权限名称,权限代号)。
本系统根据上面的设计规划出的实体有:课程信息实体,学生信息
实体,学生登录信息实体,学生选课信息实体,用户权限实体。
实体之间关系的E-R图如图3-2所示。
图3-2系统E-R图
课程信息实体E-R图,如图3-3所示:
图3-3课程信息实体E-R图
学生选课管理系统
15
学生选课实体E-R图,如图3-4所示:
图3-4学生选课实体图
学生信息实体E-R图,如图3-5所示:
图3-5学生信息实体图
登录信息实体E-R图,如图3-6所示:
图3-6登录信息实体图
用户权限实体E-R图,如图3-7所示:
图3-7用户权限实体图
3.2本章小结
学生选课系统主要是为学生选课的管理提供全面、准确、科学的管
理方法,方便快捷地处理选课的管理信息;避免了信息处理错误,提高
了信息管理的工作效率,大大地节省人力和物力的开支。本章主要阐述
了系统的业务流程,根据业务流程画出绘制出了E-R图。
学生选课管理系统
16
4系统实现
4.1创建一个工作空间和应用程序对象
创建一个工作空间(WorkSpace)student,目标(Target)student
和应用(Application)stu,在应用的open事件中写入如下的语句进行
应用与数据库的连接。
//Profilestu_select
="ODBC"
mmit=False
="ConnectString='DSN=stu_select;UID=;PWD='"
connect;
4.2创建数据库表
为了保存学生信息、课程信息、学生选课信息、登录信息、用户权
限信息,数据库设计了学生信息表,课程信息表,学生选课信息表,登
录信息表和用户权限信息表。这些表使得用户对数据的增删改变得非常
方便,数据的冗余不是十分明显。
数据库中的学生信息表结构如表4-1所示:
表4-1学生信息表(stu_inform)
字段名数据类型长度范围是否为空字段说明
学号Char8否
姓名Nvarchar是
性别Char2是
班级Nvarchar是
出生年月日datetime是
是否已选课char是
数据库中的课程信息表结构如表4-2所示:
表4-2课程信息表(course_inform)
学生选课管理系统
17
字段名数据类型长度范围是否为空字段说明
课程代号Char10否
课程名称Nvarchar是
授课教师Nvarchar是
教师Nvarchar是
剩余名额Char3是
上课时间Char20是
学分Int是
数据库中的学生选课信息表如表4-3所示:
表4-3学生选课信息表(stu_select)
字段名数据类型长度范围是否为空字段说明
学号Char8否
课程代号Char10否
学期Char6是
课程成绩Int是
数据库中的登录信息如表4-4所示:
表4-4登录信息表(stu_login)
字段名数据类型长度范围是否为空字段说明
学号Char8否
用户名Nvarchar是
密码Nvarchar是
权限代号Char3是
数据库中的权限信息如表4-5所示:
表4-5权限信息表(user_gl)
字段名数据类型长度范围是否为空字段说明
权限名称Char10是
学生选课管理系统
18
权限代号Char3否
4.3创建主窗口
通过主窗口可以实现信息查询,选择课程,修改选课打印课表等功
能。其主要实现窗口如下图4-1所示:
图4-1主窗口
4.4创建主菜单
创建主菜单主要是方便各种功能的实现,从而实现更好的完成学生
选课,查看课程信息等功能。如图4-2所示:
学生选课管理系统
19
图4-2主菜单
在“课程查询”菜单项的clicked事件中编写代码:
open(w_course_select)
在“选课”菜单项的click事件中编写代码:
open(w_course_add)
在“生成课表”菜单项的click事件中编写代码:
open(w_course_table)
4.5系统管理模块的实现
4.5.1创建课程查询窗口
在主菜单窗口单击“课程查询”即可打开此窗口,使用者可以在此
窗口实现对课程的查询。下图4-3为“课程查询窗口”的主界面。
学生选课管理系统
20
图4-3课程查询窗口
其中一些主要程序代码如下:
(1)open事件代码
dw_nsobject(sqlca)
dw_ve()
(2)“查找”按钮的click事件代码
dw_ter("")
ifsle_=""orsle_="请在此输入查询内容"then
messagebox("错误!","请输入查询内容!")
sle_etfocus()
else
ifrb_d=truethen
//精确查找
choosecaseddlb_
case"课程代号"
dw_ter("课程代号='"+sle_+"'")
case"课程名称"
dw_ter("课程名称='"+sle_+"'")
case"授课教师"
dw_ter("授课教师='"+sle_+"'")
case"上课时间"
学生选课管理系统
21
dw_ter("上课时间='"+sle_+"'")
endchoose
else
//模糊查询
choosecaseddlb_
case"课程代号"
dw_ter("课程代号like"+"'%"+sle_+"%'")
case"课程名称"
dw_ter("课程名称like"+"'%"+sle_+"%'")
case"授课教师"
dw_ter("授课教师like"+"'%"+sle_+"%'")
case"上课时间"
dw_ter("上课时间like"+"'%"+sle_+"%'")
endchoose
endif
endif
//检索数据
dw_ve()
(3)“选课”按钮click事件代码
open(w_course_add)
(4)“查看课表”按钮click事件代码
open(w_course_table)
4.5.2创建添加选课窗口
单击主窗口的“选课”即可打开此窗口界面,在此界面可以实现对
课程信息的选择查看,可以根据课程代号查询相应课程的详细信息,选
择此课程,并计算选课门数和课程总学分。下图4-2为“添加选课窗口”
的主界面。
学生选课管理系统
22
图4-4添加选课窗口
其中一些主要程序代码如下:
(1)open事件代码
dw_nsobject(sqlca)
dw_nsobject(sqlca)
stringuser_name,student_no
//检索用户的学号
SELECTstu_login.学号,
stu_login.用户名
INTO:student_no,
:user_name
FROMstu_login
WHEREstu_login.用户名=:login_name;
学生选课管理系统
23
//根据学号查询用户的详细信息
dw_ter("")
dw_ter("stu_select_学号='"+student_no+"'")
dw_ve()
//显示学生选择课程数,和其学分总数
realscore
intm,n
m=dw_nt()
score=0.0
forn=1tom
score=score+real(dw__inform_学分[n])
next
st_=string(m)
st_=string(score)
(2)查找事件代码如下:
ifsle_=""then
messagebox("错误!","请输入查询课程的代码")
sle_etfocus()
else
dw_ter("")
dw_ter("课程代号='"+sle_+"'")
dw_ve()
cb_t=false
cb_t=true
endif
(3)“确认选择课程”按钮click事件代码
integerrnt
rnt=messagebox("注意!","你是否确定选择该课程?
",Information!,YesNo!)
string
学生选课管理系统
24
user_name,cour_no,student_no,cour_name,cour_sel_leastno
ifrnt=1andsle_""then
//根据登录的用户名,检索出用户的学号
SELECTstu_inform.学号,
stu_login.用户名
INTO:student_no,
:user_name
FROMstu_inform,
stu_login
WHERE(stu_inform.学号=stu_login.学号)and
((stu_login.用户名=:login_name)
);
//查询stu_select表,看是否此学生已经选择这门课程
SELECTstu_select.课程代号
INTO:cour_no
FROMstu_select
WHERE(stu_select.学号=:stu_no)AND
(stu_select.课程代号=:sle_);
SELECTcourse_inform.剩余名额
INTO:cour_sel_leastno
FROMcourse_inform,
stu_select
WHERE(course_inform.课程代号=stu_select.课程代号)and
((course_inform.课程代号=:sle_)
);
ifcour_no""then
messagebox("提示","你已经选择过此门课程")
elseifcour_sel_leastno="0"then
messagebox("提示","该课程的剩余名额为0,请选择其他课程!")
else
学生选课管理系统
25
//插入用户选择课程到stu_select表
INSERTINTOstu_select
(学号,课程代号)
VALUES(:student_no,
:sle_);
messagebox("提示","恭喜你,添加课程成功!");
//学生选定该课程后,在该课程的剩余名额中减少一人
UPDATEcourse_inform
SET剩余名额='剩余名额-1';
dw_ve()
endif
elseifsle_=""then
messagebox("提示","你还没有选课!")
endif
dw_nsobject(sqlca)
stringuser_name1,student_no1
//检索用户的学号
SELECTstu_login.学号,
stu_login.用户名
INTO:student_no1,
:user_name1
FROMstu_login
WHEREstu_login.用户名=:login_name;
//根据学号查询用户的详细信息
dw_ter("")
dw_ter("stu_select_学号='"+student_no1+"'")
dw_ve()
//刷新学生选择课程数,和其学分总数
realscore
学生选课管理系统
26
intm,n
m=dw_nt()
score=0.0
forn=1tom
score=score+real(dw__inform_学分[n])
next
st_=string(m)
st_=string(score)
4.5.3创建生成课表窗口
打开主窗口,单击“生成课表”,即可打开本窗口的维护界面,在本
窗口主要实现学生课程的编排和冲突课程的修改删除,还可以打印课表。
下图为生成课表界面,如图4-5所示
图4-5生成课表主窗口
其中一些主要代码如下:
(1)查看课表事件的代码
dw_nsobject(sqlca)
dw_ter("stu_inform_学号='"+
trim(stu_no)+"'andstu_select_学期='"+trim(sle_)+"'")
dw_ve()
//将课表内的文字清空,主要防止用户再次点击查看时而产生的错误
学生选课管理系统
27
st_1_="";st_1_="";st_1_="";
st_1_="";st_1_=""
intn,m
stringcourse_time,course,course_classroom
n=dw_nt()
//把数据表总行数赋予n
//把课程名称显示在课程表中
form=1ton
course_time=trim(dw__inform_上课时间[m])
course=trim(dw__inform_课程名称[m])
course_classroom=trim(dw__inform_教室[m])
choosecasecourse_time
case"k11"
ifst_1_=""then
st_1_=course+""+course_classroom
else
st_1_=st_1_+"//"+course
messagebox("提示","你的课程有冲突",exclamation!,ok!,2)
endif
……
case"k55"
ifst_5_=""then
st_5_=course+""+course_classroom
else
st_5_=st_5_+"//"+course
messagebox("提示","你的课程有冲突",exclamation!,ok!,2)
endif
endchoose
next
(2)“打印课表”事件的代码如下
学生选课管理系统
28
//定义一个打印工作
longjob
//打开打印设置
job=PrintOpen(string(login_name)+"一份数据文档")
//指定打印数据窗口
PrintDataWindow(job,dw_1)
//关闭打印工作
PrintClose(job)
4.5.4创建个人信息窗口
单击主窗口的“查看学生个人信息”选项后,进入此窗口界面,在本
窗口主要实现对登录学生信息的查看,以验证学生信息是否正确,下图
为个人信息窗口界面,如图4-6所示。
图4-6学生个人详细信息窗口
其中open事件代码如下:
//定义全局变量
stringstu_no
stringlogin_name
stringgl_no
dw_nsobject(sqlca)
学生选课管理系统
29
stringuser_name,student_no
//检索用户的学号
SELECTstu_login.学号,
stu_login.用户名
INTO:student_no,
:user_name
FROMstu_login
WHEREstu_login.用户名=:login_name;
//根据学号查询用户的详细信息
dw_ter("")
dw_ter("stu_inform_学号='"+student_no+"'")
dw_ve()
4.5.5生成课表窗口的设计
单击主窗口“修改登录密码”选项后,即可打开密码修改窗口。本窗
口主要功能是修改学生个人的登录密码,在学生正确填写旧的用户名和
密码后即可成功就该新密码。其主界面如图4-7所示。
图4-7密码修改窗口主界面
其中“确认修改”事件代码如下:
//Profilestu_sel
="ODBC"
mmit=False
="ConnectString='DSN=stu_sel;UID=;PWD='"
connect;
stringls_username,ls_userpassword
学生选课管理系统
30
SELECTstu_login.用户名,
stu_login.密码
INTO:ls_username,
:ls_userpassword
FROMstu_login
WHEREstu_login.用户名=:sle_;
ifls_userpasswordsle_en
messagebox("提示","密码错误,请确认后再输入!")
//elseifsle_=""then
//messagebox("提示","请输入旧密码!")
else
ifsle_""and
sle_""andsle_=sle_en
ls_userpassword=sle_
updatestu_login
set密码=:ls_userpassword
wherestu_login.用户名=:sle_;
messagebox("提示","恭喜你,密码修改成功!")
endif
ifsle_""and
sle_""andsle_sle_en
messagebox("提示","新密码和确认密码不同,请重新输入!")
endif
ifsle_=""orsle_=""then
messagebox("提示","新密码或确认密码不能为空!")
endif
endif
sle_=""
sle_=""
sle_=""
学生选课管理系统
31
sle_=""
4.5.6创建登录窗口
登录窗口主要是用来登录主界面的一个关卡,根据用户的不同设有
不同的权限,其主界面如图4-8所示。
图4-8登录窗口界面
其登录事件代码如下:
//定义两个变量
stringpassword,username
//Profilestu_select
="ODBC"
mmit=False
="ConnectString='DSN=stu_select;UID=;PWD='"
//连接数据库
connect;
//检索用户名和密码记录
SELECTstu_login.学号,
stu_login.用户名,
stu_login.密码,
stu_login.权限代号
INTO:stu_no,
:username,
:password,
学生选课管理系统
32
:gl_no
FROMstu_login
WHEREstu_login.用户名=:sle_;
//判断用户输入的用户名是否正确
ifsle_=""orsle_=""then
messagebox("错误!",
"用户名或密码不能为空!",exclamation!,ok!,2)
else
ifusername=sle_dpassword=sle_en
open(w_main)
close(w_login)
else
messagebox("错误!",
"用户名或密码错误,请重新输入!",exclamation!,ok!,2)
endif
endif
4.5.7splash界面的实现
Splash界面,是在登录窗口之前出现的界面,主要用来显示软件的
版本信息等简略情况,界面如图4-9所示。
学生选课管理系统
33
图4-9splash界面
其主要代码如下:
(1)open事件代码
//设定关闭时间
timer(3,this)
//将Splash窗口置于其他窗口之上
ition(topmost!)
(2)timer事件代码:
close(this)
open(w_login)
(3)clsoe事件代码:
timer(0,this)
学生选课管理系统
34
结束语
随着信息技术的发展,办公自动化已成为社会发展的主要趋势,学
生选课管理因其劳动的复杂性已经无法适应手工操作,所以应用先进的
计算机技术对学生选课进行管理是势在必行的,因此本文采用目前流行
的数据库开发工具之一的PowerBuilder9.0设计了一个小型的学生选课
系统,并对设计结果进行了一定的总结。
(1)学生选课管理因为其日常事务比较繁琐,所以在设计数据库表
之前一定要对系统的设计有一个整体的认识,对学生信息和课程信息进
行整理,设计好各功能模块的E-R图。这样,在后期的设计时,会因前
期工作处理的好而减少许多麻烦,为设计的顺利进行作好了铺垫。
(2)在设计各个功能模块时,要考虑和其他模块的联系,更要结合
实际情况对窗口要放置的空间进行分析,尤其在编制代码是要充分考虑
各种限制条件,对不同的身份规定其不同的登录权限。
(3)在使用学生选课系统后,提高了学生选课的准确性,信息能够
准确无误的输入计算机并在数据库中存储起来。按照规范设定标准代码,
既保证了统计原始数据的准确性,又在分析统计时最大限度的减少了人
为的影响,提高了工作效率。
通过本次的毕业设计,我们不仅掌握了设计的基本步骤,更重要的
是学会了解科学的系统设计方法,加深了我们对软件开发的认识与理解。