课程管理系统一、系统功能分析课程管理系统是教务管理的主要工作之一,系统开发的目的是管理全校开设课程的基本信息,安排各班级的课程及上课时间和上课教室,管理各课程的考试成绩,并能实现对考试成绩的查询和统计。
系统的使用对象包括教务处工作人员、校院系领导、班主任、教师等。
通过对日常课程管理工作的分析,可以将课程管理系统的功能概括成如下几个方面: 课程的设置和课程基本信息的录入、修改、删除等管理;班级课程的安排,包括上课教室、上课时间的安排、修改等管理; 课程安排的查询,查询课程的安排情况;班级课表的查询,查询班级开设课程的安排情况; 考试成绩的录入和管理,包括输入、修改、删除等;考试成绩的分析和查询,包括班级考试成绩分析、学生成绩单的查询与统计等。
考虑系统的安全性,需要对用户等。
进行安全认证,因此还需要实现系统用户的管理功能:用户登录认证;用户用户管理,包括添加用户、删除用户、修改用户信息二、系统功能模块设计根据系统所要实现的功能,按照结构化程序设计的原则,可以将整个系统划分为若干个功能模块。
三、操作流程图课程管理系统 课程管理考试成绩管理系统用户管理班级课表查询 课程安排查询 课程安排课程库管理 用户管理考试成绩管理 班级成绩分析 学生成绩查询 用户登录认证四.数据库设计以下为程管理系统所需的数据项和数据结构:学生信息:学号、姓名、性别、出生日期、籍贯、所属班级等;班级设置:班级编号、班级名称、班级创建时间、班级描述、所属院系、班主任、班主任联系方式等;课程信息:课程编号、课程名称、学分、学时数、任课教师、课程说明等; 课程安排信息:课程编号、选课班级编号、上课地点、上课时间等; 考试成绩信息:课程编号、学号、考试成绩等; 用户信息:用户名、用户口令、用户真实姓名等。
根据课程管理系统的E-R 图,通过简单的优化,可以设计5个数据表来存储所有的信息。
这5个表分别是:学生信息表、班级信息表、课程信息表、选课表和考试成绩表。
另外还登录认证班级成绩分析 成绩库管理课程安排 课程库管理 课程安排查询用户管理 学生成绩查询 班级设置库课程信息库用户信息库学生信息库课程安排库启动系统考试成绩库教师课表班级课表查询班级课表成绩单学生成绩单需要设计一个数据表存放用户信息。
五、初始数据的录入学生信息和班级信息直接使用“学生信息管理系统”中录入的数据,如果没有数据,需要事先输入一些数据。
另外需要为用户信息表添加一个默认的用户,否则无法登录到系统中,六.主窗体的创建一、创建工程文件系统中需要使用表格来显示数据,为此需要给工程添加表格部件。
单击【工程】→【部件】菜单项,打开“部件”对话框,在“控件”选项卡的列表框中勾选“Microsoft DataGrid Control 6.0 (OLEDB)”前面的方框,然后单击【确定】按钮,相应的控件就会被添加到工具箱上。
保存工程,将窗体文件命名为FormMain,将工程文件命名为CourseMIS。
四 .分程序的实现这里先实现退出功能,单击主窗体的“退出系统”菜单项,系统自动生成相应事件的过程框架,并切换到代码窗口,添加代码,完整的过程事件代码如下。
Private Sub mntSysQuit_Click()EndEnd Sub五、主控模块的设计为了提高系统的安全性,用户必须通过登录认证才能使用本系统。
程序运行后首先显示的是登录窗体,用户输入正确的用户名和口令才能启动主窗体。
为了实现这个功能,一种可选方案是将登录窗体设为启动模块,另一种方案是将启动模块设置为Main过程,在main 过程中显示登录模块进行登录认证,根据认证结果确定是否显示主窗体。
采用第二种方案。
单击【工程】→【添加模块】,为工程添加一个新模块,将“模块名称”属性设置为mdlMain,并保存为mdlMain.bas。
在模块中添加如下代码:Option ExplicitPublic ConnString$, UserName$, UserID$Sub Main()ConnString = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=“ConnString = ConnString & App.Path & "\CourseMIS.mdb"frmMain.ShowEnd Sub模块中定义了3个全局的公用变量,其中ConnString用于定义数据库连接字符串,UserName和UserID用于存储用户名和用户真实姓名。
Main过程是一个特殊的过程,一般位于标准模块中,可以作为工程的启动模块,在这个过程中,可以完成系统的初始化工作。
首先对ConnString进行初始化,指定ADO方式访问数据库文件的连接字符串,然后显示主窗体(frmMain)。
其中App.Path用于获取程序文件的运行路径,这样就可以通过相对路径访问数据库文件,提高系统的灵活性登录模块的创建本模块验证用户输入的用户名和口令。
本节内容包括如下几个方面:*模块功能分析;*窗体的创建;*模块用户界面的设计;*模块功能的实现。
1.功能分析在窗体上放置两个文本框和相应按钮,接收用户的输入,当用户单击【确定】按钮后,在数据库的用户数据表中查找满足该用户名和口令的记录,如果找到,则认为用户身份正确,否则提示用户重新输入。
有很多可行的办法将认证的结果传递给Main过程。
本章采用在模块中设置标志的方法,在登录模块中设置一个布尔型变量LoginSucceeded,如果用户通过验证就将其设置为True。
为了Main过程中能访问本模块中的变量LoginSucceeded,验证完成以后本模块不自己卸载。
2.功能的实现⏹变量定义和初始化为了标识用户验证是否成功,定义一个布尔型公共变量LoginSucceeded,在窗体的加载时将其初始化为False。
代码如下:Public LoginSucceeded As BooleanPrivate Sub Form_Load()LoginSucceeded = FalseEnd Sub⏹退出按钮功能的实现当用户按退出按钮时关闭整个系统,代码如下:Private Sub cmdCancel_Click()EndEnd Sub首先进行变量的定义。
在输入As后自动出现提示中如果没有出现ADODB,则说明引用对象库没有设置好,请参考上一节中引用对象的设置。
然后对用户输入的数据进行规格化和非空验证。
最后调用ADO对象验证用户名和口令。
静态变量Count记录用户输入的次数,如果连续3次登录验证失败,则退出整个系统。
ADO对象的使用应注意,在定义变量后,还必须使用New方法创建相应对象的实例,实例使用完毕后要释放它。
语句如下:Set ADO对象 = Nothing在本模块中不要调用Unload Me卸载窗体,否则在Main过程不能访问变量LoginSucceeded。
调用Me.Hide隐藏窗体,窗体的卸载在Main过程中通过frmLogin.Unload 卸载。
§登录模块设计完成后,修改标准模块中的Main过程,调用登录模块。
打开mdlMain模块,修改Main过程,修改后的完整代码如下:Sub Main()ConnString = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=“ConnString = ConnString & App.Path & "\CourseMIS.mdb"frmLogin.Show vbModalIf frmLogin.LoginSucceeded ThenfrmMain.ShowUnload frmLoginElseMsgBox "无权登录本系统", , "登录"End ‘ 退出整个系统End IfEnd SubfrmLogin必须通过模态形式显示,否则不能正确地验证口令。
运行程序,系统首先显示登录窗体,只有输入正确的用户名和口令后才能打开主窗体。
(初始化数据输入时已经输入了一个用户名为“Admin”、口令为“Admin”的用户信息,可以使用这个用户测试系统的运行。
)课程管理模块课程管理模块实现课程信息的输入、浏览、修改、删除等功能。
本节内容包括如下几个方面:*模块分析;*窗体的创建;*模块用户界面的设计;*模块功能的实现。
1.功能分析*实现思路课程信息保存在Course数据表中,通过ADO的Recordset对象从数据表中取出记录,并通过DataGrid表格将数据显示在数据表上,实现数据的浏览。
由于是单表操作,可以通过Recordset对象的AddNew、Delete、Update等方法可以实现添加、删除和修改功能。
课程管理模块1.用户界面的设计在窗体上添加若干标签、文本框、按钮、组合框,并添加一个日期选择框、一个数据表格控件、两个数据控件。
窗体布局如下图所示:其中dtpBeginDate是日期选择框。
数据表格dbgClass的设置可以参考“院系设置模块”中对dbgDepart的操作4个导航按钮(cmdFirst、cmdPrevious、cmdNext、cmdLast)的字体比较特殊,采用Webdings字体在按钮上显示四种箭头图案。
dgDepart是数据表格控件(DataGrid),该控件在工具箱窗口的图标为,如果看不到该控件,请前面所述相关操作。
在该控件上单击右键,选择【属性】菜单项,打开属性对话框。
在“通用”选项卡中设置表格标题,去掉AllowUpdate选项,如图13-12所示。
去掉AllowUpdate选项的目的是禁止用户通过数据表格直接修改数据,从而通过程序更好地控制数据的有效性和数据库的完整性,其他各项的设置可以根据需要设置2.功能的实现⏹窗体卸载过程在窗体的卸载过程中完成以下功能:⇐断开数据表格和数据集的绑定;⇐关闭打开的数据集;⇐断开模块和数据库的连接;⇐释放ADO对象实例。
代码如下:Private Sub Form_Unload(Cancel As Integer)Set dgCourse.DataSource = Nothingrs.CloseConn.CloseSet rs = NothingSet Conn = NothingEnd Sub⏹数据浏览功能的实现通过四个导航按钮实现对数据库的浏览。
代码如下:Private Sub cmdFirst_Click()If rs.RecordCount > 0 Then rs.MoveFirstEnd SubPrivate Sub cmdLast_Click()If rs.RecordCount > 0 Then rs.MoveLastEnd SubPrivate Sub cmdNext_Click()If Not rs.EOF Then rs.MoveNextIf rs.EOF And rs.RecordCount > 0 Thenrs.MoveLastEnd IfEnd SubPrivate Sub cmdPrevious_Click()If Not rs.BOF Then rs.MovePreviousIf rs.BOF And rs.RecordCount > 0 Thenrs.MoveFirstEnd IfEnd Sub⏹记录添加功能的实现界面上的文本框没有和数据集绑定,在里面输入数据并不影响数据集里面的记录。