1、1机电工程学院机电工程学院 吴卓葵吴卓葵工程数据库技术工程数据库技术第第7 7章章 数据库系统设计数据库系统设计7.2“学生主窗体学生主窗体”设计设计“打开窗体打开窗体”时,时,判断用户是否登录,若没有登录,则关闭当前窗体,打判断用户是否登录,若没有登录,则关闭当前窗体,打开开“登录登录”窗体;若用户已经登录,则显示欢迎登录者的信息。窗体;若用户已经登录,则显示欢迎登录者的信息。单击单击“查询选课查询选课”按钮,按钮,则打开则打开“学生查询选课学生查询选课”窗体,关闭窗体,关闭“学生主窗学生主窗体体”窗体窗体单击单击“选课选课”按钮,按钮,判断学生选课数是否达到最大数目判断学生选课数是否达到最
2、大数目4门,若是,弹出对门,若是,弹出对话框提示,否则打开话框提示,否则打开“学生选课学生选课”窗体,关闭窗体,关闭“学生主窗体学生主窗体”窗体。窗体。(1)(1)演示与分析演示与分析窗体窗体标签标签按钮按钮标签标签按钮按钮单击单击“删除选课删除选课”按钮,按钮,则判断学生选课数量是否为则判断学生选课数量是否为0 0,若为,若为0 0,则弹出对话框提示,则弹出对话框提示,否则打开,否则打开“学生删除选课学生删除选课”窗体,关闭窗体,关闭“学生主窗体学生主窗体”窗体。窗体。单击单击“修改密码修改密码”按钮,按钮,则打开则打开“学生修改密码学生修改密码”窗体,关闭窗体,关闭“学生主窗体学生主窗体”
3、窗体窗体。单击单击“返回登录界面返回登录界面”按钮,按钮,则关闭当前窗体,打开则关闭当前窗体,打开“登录登录”窗体。窗体。(1)(1)演示与分析演示与分析按钮按钮按钮按钮按钮按钮(2 2)界面设计)界面设计窗体窗体标签标签按钮按钮按钮按钮标签标签按钮按钮按钮按钮按钮按钮招兵买马(添加控件)招兵买马(添加控件)窗体窗体标签标签按钮按钮按钮按钮标签标签按钮按钮按钮按钮按钮按钮认识新员工,起绰号(给控件命名)认识新员工,起绰号(给控件命名)学生主学生主窗体窗体请选择请选择操作标操作标签签查询选查询选课按钮课按钮返回登录返回登录界面按钮界面按钮欢迎欢迎标签标签选课选课按钮按钮删除选删除选课按钮课按钮按
4、钮按钮员工培训(控件设置)员工培训(控件设置)1)培训窗体)培训窗体取消滚动条取消滚动条取消最大最小化按钮取消最大最小化按钮取消分割线取消分割线取消导航按钮取消导航按钮取消记录选择器取消记录选择器添加背景图片以美化界面(嵌入、拉伸、窗体中心)添加背景图片以美化界面(嵌入、拉伸、窗体中心)(3)创建其他相关窗体)创建其他相关窗体(4)功能实现)功能实现关键代码介绍关键代码介绍(1 1)全局变量全局变量全局变量的意义全局变量的意义 全局变量在整个全局变量在整个ACCESSACCESS系统中都可以使用,其赋系统中都可以使用,其赋值一直有效。值一直有效。定义全局变量的方法定义全局变量的方法Public
5、 username As StringPublic username As StringPublic Public usersnousersno As String As String全局变量写在什么位置?全局变量写在什么位置?定义在模块中。定义在模块中。(2 2)Set Set rsrs=nothing=nothing释放释放rsrs变量变量所占用的所占用的存储空间存储空间。(3 3)Me!Me!欢迎标签欢迎标签.caption=.caption=欢迎您!欢迎您!将名字为将名字为“欢迎标签欢迎标签”的的标签控件标签控件的的显示的内容显示的内容修改修改为为“欢迎您!欢迎您!”(3)Trim(r
6、s(“sn)去掉变量去掉变量rs(“sn”)的空格。的空格。“打开窗体打开窗体”时时,判断用户是否登录,若没有登录,判断用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体,若用户已经登录,则关闭当前窗体,打开登录窗体,若用户已经登录,则显示欢迎登录者的信息。则显示欢迎登录者的信息。难点:怎样判断用户是否登录?难点:怎样判断用户是否登录?设置设置全局变量全局变量,该,该全局变量全局变量在在用户登录成功后赋用户登录成功后赋值值,若,若该值不为空该值不为空,表示,表示用户已经登录用户已经登录,若,若该值为空该值为空,表示,表示用户没有登录用户没有登录。定义定义1 1个全局变量个全局变量usern
7、ameusername,用以保存用户姓名。用以保存用户姓名。在登录成功时,在登录成功时,读出用户的姓名读出用户的姓名,并赋给,并赋给全局变全局变量量usernameusername。问题:第问题:第2 2步操作的代码应该写在什么位置?步操作的代码应该写在什么位置?rs.MoveFirstIf StrComp(rs(password),Me!密码密码,vbBinaryCompare)0 ThenIf MsgBox(密码错误!密码错误!,vbOKOnly,请确定请确定)=vbOK ThenMe!密码密码.SetFocusExit SubEnd IfEnd Ifusername=Trim(rs(SN
8、)usersno=rs(sno)DoCmd.OpenForm 学生主窗体学生主窗体DoCmd.Close acForm,登录登录“打开窗体打开窗体”时,时,判断用户是否登录,若没判断用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体,有登录,则关闭当前窗体,打开登录窗体,若若用户已经登录,则显示欢迎登录者的信息。用户已经登录,则显示欢迎登录者的信息。If username=ThenDoCmd.Close acForm,学生主窗体学生主窗体DoCmd.OpenForm 登录登录Exit SubEnd IfMe!欢迎标签欢迎标签.Caption=欢迎您欢迎您,+username+同学同学!单击
9、单击“返回登录界面返回登录界面”按钮,按钮,则关闭当前窗体,打则关闭当前窗体,打开开“登录登录”窗体。窗体。DoCmd.OpenForm 登录登录DoCmd.Close acForm,学生主窗体学生主窗体单击单击“查询选课查询选课”按钮按钮,则打开,则打开“学生查询选课学生查询选课”窗体,关闭窗体,关闭“学生主窗体学生主窗体”窗体。窗体。DoCmd.OpenForm 学生查询选课学生查询选课DoCmd.Close acForm,学生主窗体学生主窗体单击单击“选课选课”按钮,按钮,则判断学生选课数量是否达到则判断学生选课数量是否达到最大数目最大数目4 4门,若是,弹出对话框提示,否则打开门,若是
10、,弹出对话框提示,否则打开“学学生选课生选课”窗体,关闭窗体,关闭“学生主窗体学生主窗体”窗体。窗体。难点:怎样判断学生选课数目是否等于难点:怎样判断学生选课数目是否等于4 4门?门?思路:思路:以学号为条件查询以学号为条件查询SCSC表,若查到的记录条数等于表,若查到的记录条数等于4 4,则表示该学生的选课数目已满,否则未满。,则表示该学生的选课数目已满,否则未满。select*from sc where sno=S2单击单击“选课选课”按钮,按钮,则判断学生选课数量是否达到则判断学生选课数量是否达到最大数目最大数目4 4门,若是,弹出对话框提示,门,若是,弹出对话框提示,否则打开否则打开“
11、学学生选课生选课”窗体,关闭窗体,关闭“学生操作主界面学生操作主界面”窗体。窗体。Dim rs As ADODB.RecordsetSet rs=New ADODB.RecordsetDim sqlstring As Stringsqlstring=select*from sc where sno=+usersno+rs.Open sqlstring,CurrentProject.Connection,adOpenKeyset,adLockOptimistic单击单击“选课选课”按钮,按钮,则判断学生选课数量是否达到则判断学生选课数量是否达到最大数目最大数目4 4门,若是,弹出对话框提示;门,
12、若是,弹出对话框提示;否则打开否则打开“学学生选课生选课”窗体,关闭窗体,关闭“学生操作主界面学生操作主界面”窗体。窗体。If rs.RecordCount=4 ThenIf MsgBox(您的选课已满!请删除选课后重选您的选课已满!请删除选课后重选,vbOKOnly,请确定请确定)=vbOK ThenSet rs=NothingExit SubEnd IfEnd IfDoCmd.Close acForm,学生主窗体学生主窗体DoCmd.OpenForm 学生选课学生选课单击单击“删除选课删除选课”按钮,按钮,则判断学生选课数量是否则判断学生选课数量是否为为0 0,若为,若为0 0,则弹出对话
13、框提示,则弹出对话框提示,否则打开否则打开“学生删学生删除选课除选课”窗体,关闭窗体,关闭“学生操作主界面学生操作主界面”窗体。窗体。Dim rs As ADODB.RecordsetSet rs=New ADODB.RecordsetDim sqlstring As Stringsqlstring=select*from sc where sno=+usersno+rs.Open sqlstring,CurrentProject.Connection,adOpenKeyset,adLockOptimistic单击单击“删除选课删除选课”按钮,按钮,则判断学生选课数量是否则判断学生选课数量是否
14、为为0 0,若为,若为0 0,则弹出对话框提示,则弹出对话框提示,否则打开否则打开“学生删学生删除选课除选课”窗体,关闭窗体,关闭“学生操作主界面学生操作主界面”窗体。窗体。If rs.RecordCount=0 ThenIf MsgBox(您还没有选课!请先选课您还没有选课!请先选课,vbOKOnly,请确定请确定)=vbOK ThenSet rs=NothingExit SubEnd IfEnd IfDoCmd.Close acForm,学生主窗体学生主窗体DoCmd.OpenForm 学生删除选课学生删除选课单击单击“修改密码修改密码”按钮按钮,则打开,则打开“学生修改密码学生修改密码”
15、窗体,关闭窗体,关闭“学生操作主界面学生操作主界面”窗体。窗体。DoCmd.OpenForm 学生修改密码学生修改密码DoCmd.Close acForm,学生主窗体学生主窗体7.3“学生查询选课学生查询选课”设计设计(1)(1)演示与分析演示与分析窗体窗体“打开窗体打开窗体”时,时,判断用户是否登录,若没有登录,则关闭当判断用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体;若用户已经登录,则显示欢迎登录者的前窗体,打开登录窗体;若用户已经登录,则显示欢迎登录者的信息,然后将显示课程的标签置空,接着读取用户的选课信息使信息,然后将显示课程的标签置空,接着读取用户的选课信息使用标签进行显示
16、。用标签进行显示。标签标签标签标签标签标签标签标签标签标签标签标签标签标签(1)(1)演示与分析演示与分析单击单击“返回返回”按钮,按钮,则关闭当前窗体,打开则关闭当前窗体,打开“学生主窗体学生主窗体”窗窗体。体。单击每个单击每个“课程名课程名”标签,标签,则打开则打开“学生选修课程详细信息学生选修课程详细信息”窗体,关闭窗体,关闭“学生查询选课学生查询选课”窗体。窗体。按钮按钮标签标签标签标签标签标签标签标签(2 2)界面设计)界面设计窗体窗体标签标签标签标签标签标签标签标签标签标签标签标签按钮按钮标签标签招兵买马(添加控件)招兵买马(添加控件)窗体窗体标签标签标签标签标签标签标签标签标签标
17、签标签标签按钮按钮标签标签认识新员工,起绰号(给控件命名)认识新员工,起绰号(给控件命名)学生查学生查询选课询选课提示提示1标签标签提示提示2标签标签选课选课1标签标签选课选课2标签标签选课选课3标签标签选课选课4标签标签返回返回按钮按钮欢迎欢迎标签标签员工培训(界面设置)员工培训(界面设置)1)培训窗体)培训窗体取消滚动条取消滚动条取消最大最小化按钮取消最大最小化按钮取消分割线取消分割线取消导航按钮取消导航按钮取消记录选择器取消记录选择器添加背景图片以美化界面(嵌入、拉伸、窗体中心)添加背景图片以美化界面(嵌入、拉伸、窗体中心)(3)创建其他相关窗体)创建其他相关窗体(4)功能实现)功能实现
18、关键代码介绍关键代码介绍(1 1)将将数据数据从从当前窗体当前窗体传递到传递到下一个窗体下一个窗体的方法的方法DoCmd.OpenForm 学生选修课程详细信息学生选修课程详细信息,Me!选课选课1标签标签.Caption将当前窗体的将当前窗体的名称为名称为“选课选课1标签标签”的标签的的标签的显示内显示内容传递给容传递给将打开的窗体将打开的窗体“学生选修课程详细信息学生选修课程详细信息”。“打开窗体打开窗体”时,时,判断用户是否登录,若没有登录,判断用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体;则关闭当前窗体,打开登录窗体;若用户已经登录,则若用户已经登录,则显示欢迎登录者的信息,
19、然后将显示课程的标签置空,显示欢迎登录者的信息,然后将显示课程的标签置空,接着读取用户的选课信息使用标签进行显示。接着读取用户的选课信息使用标签进行显示。If username=ThenDoCmd.Close acForm,学生查询选课学生查询选课DoCmd.OpenForm 登录登录Exit SubEnd If“打开窗体打开窗体”时,时,判断用户是否登录,若没有登录,判断用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体;则关闭当前窗体,打开登录窗体;若用户已经登录,则若用户已经登录,则显示欢迎登录者的信息,然后将显示课程的标签置空,显示欢迎登录者的信息,然后将显示课程的标签置空,接着读
20、取用户的选课信息使用标签进行显示。接着读取用户的选课信息使用标签进行显示。Me.欢迎标签欢迎标签.Caption=欢迎您,欢迎您,+username+同学同学!Me!选课选课1标签标签.Caption=Me!选课选课2标签标签.Caption=Me!选课选课3标签标签.Caption=Me!选课选课4标签标签.Caption=“打开窗体打开窗体”时,时,判断用户是否登录,若没有登录,判断用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体;若用户已经登录,则则关闭当前窗体,打开登录窗体;若用户已经登录,则显示欢迎登录者的信息,然后将显示课程的标签置空,显示欢迎登录者的信息,然后将显示课程的标
21、签置空,接着读取用户的选课信息使用标签进行显示。接着读取用户的选课信息使用标签进行显示。Dim rs As ADODB.RecordsetSet rs=New ADODB.RecordsetDim SQLstring As StringSQLstring=select cn from s,c,sc where s.sno=sc.sno and o=o and s.sno=+usersno+rs.Open SQLstring,CurrentProject.Connection,adOpenKeyset,adLockOptimistic“打开窗体打开窗体”时,时,判断用户是否登录,若没有登录,判断
22、用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体;若用户已经登录,则则关闭当前窗体,打开登录窗体;若用户已经登录,则显示欢迎登录者的信息,然后将显示课程的标签置空,显示欢迎登录者的信息,然后将显示课程的标签置空,接着读取用户的选课信息使用标签进行显示。接着读取用户的选课信息使用标签进行显示。If rs.RecordCount=0 ThenMe!选课选课1标签标签.Caption=您无选课您无选课Exit SubEnd If“打开窗体打开窗体”时,时,判断用户是否登录,若没有登录,判断用户是否登录,若没有登录,则关闭当前窗体,打开登录窗体;若用户已经登录,则则关闭当前窗体,打开登录窗体;若
23、用户已经登录,则显示欢迎登录者的信息,然后将显示课程的标签置空,显示欢迎登录者的信息,然后将显示课程的标签置空,接着读取用户的选课信息使用标签进行显示。接着读取用户的选课信息使用标签进行显示。rs.MoveFirstFor i=1 To rs.RecordCountIf i=1 Then Me!选课选课1标签标签.Caption=rs(cn)If i=2 Then Me!选课选课2标签标签.Caption=rs(cn)If i=3 Then Me!选课选课3标签标签.Caption=rs(cn)If i=4 Then Me!选课选课4标签标签.Caption=rs(cn)rs.MoveNext
24、Next i单击单击“返回返回”按钮,按钮,则关闭当前窗体,打开则关闭当前窗体,打开“学生主学生主窗体窗体”窗体。窗体。DoCmd.Close acForm,学生查询选课学生查询选课DoCmd.OpenForm 学生主窗体学生主窗体单击每个单击每个“课程名课程名”标签,标签,则打开则打开“学生选修课程详学生选修课程详细信息细信息”窗体,关闭窗体,关闭“学生查询选课学生查询选课”窗体。窗体。1 1)给第)给第1 1个标签个标签“选课选课1 1标签标签”添加单击事件。添加单击事件。为了防止为了防止出错,当给标签内容为空或出错,当给标签内容为空或“您无选课您无选课”时,单击该标时,单击该标签不能进入
25、下签不能进入下1 1个窗体个窗体“学生选修课程详细信息学生选修课程详细信息”;否则否则,单击标签打开下,单击标签打开下1 1个窗体个窗体“学生选修课程详细信息学生选修课程详细信息”,并将该标签的内容(即课程名)传递进下并将该标签的内容(即课程名)传递进下1 1个窗体。个窗体。If Me!选课选课1标签标签.Caption=Or Me!选课选课1标签标签.Caption=您无选课您无选课 Then Exit Sub单击每个单击每个“课程名课程名”标签,标签,则打开则打开“学生选修课程详学生选修课程详细信息细信息”窗体,关闭窗体,关闭“学生查询选课学生查询选课”窗体。窗体。1 1)给第)给第1 1
26、个标签个标签“选课选课1 1标签标签”添加单击事件。添加单击事件。为了防止为了防止出错,当给标签内容为空或出错,当给标签内容为空或“您无选课您无选课”时,单击该标时,单击该标签不能进入下签不能进入下1 1个窗体个窗体“学生选修课程详细信息学生选修课程详细信息”;否则否则,单击标签打开下,单击标签打开下1 1个窗体个窗体“学生选修课程详细信息学生选修课程详细信息”,并将该标签的内容(即课程名)传递进下并将该标签的内容(即课程名)传递进下1 1个窗体,并关个窗体,并关闭当前窗体。闭当前窗体。If Me!选课选课1标签标签.Caption=Or Me.选课选课1标签标签.Caption=您无选课您无
27、选课 Then Exit SubDoCmd.OpenForm 学生选修课程详细信息学生选修课程详细信息,Me!选课选课1标签标签.CaptionDoCmd.Close acForm,学生查询选课学生查询选课2 2)给第)给第2 2个标签个标签“选课选课2 2标签标签”添加单击事件。添加单击事件。为了防止为了防止出错,当给标签内容为空时,单击该标签不能进入下出错,当给标签内容为空时,单击该标签不能进入下1 1个个窗体窗体“学生选修课程详细信息学生选修课程详细信息”;否则,单击标签打开否则,单击标签打开下下1 1个窗体个窗体“学生选修课程详细信息学生选修课程详细信息”,并将该标签的内,并将该标签的
28、内容(即课程名)传递进下容(即课程名)传递进下1 1个窗体,并关闭当前窗体。个窗体,并关闭当前窗体。If Me.选课选课2标签标签.Caption=Then Exit SubDoCmd.OpenForm 学生选修课程详细信息学生选修课程详细信息,Me.选课选课2标签标签.CaptionDoCmd.Close acForm,学生查询选课学生查询选课2 2)给第)给第3 3个标签个标签“选课选课3 3标签标签”添加单击事件。添加单击事件。为了防止为了防止出错,当给标签内容为空时,单击该标签不能进入下出错,当给标签内容为空时,单击该标签不能进入下1 1个个窗体窗体“学生选修课程详细信息学生选修课程详
29、细信息”;否则,单击标签打开否则,单击标签打开下下1 1个窗体个窗体“学生选修课程详细信息学生选修课程详细信息”,并将该标签的内,并将该标签的内容(即课程名)传递进下容(即课程名)传递进下1 1个窗体,并关闭当前窗体。个窗体,并关闭当前窗体。If Me!选课选课3标签标签.Caption=Then Exit SubDoCmd.OpenForm 学生选修课程详细信息学生选修课程详细信息,Me!选课选课3标签标签.CaptionDoCmd.Close acForm,学生查询选课学生查询选课4 4)给第)给第4 4个标签个标签“选课选课4 4标签标签”添加单击事件。添加单击事件。为了防止为了防止出错
30、,当给标签内容为空时,单击该标签不能进入下出错,当给标签内容为空时,单击该标签不能进入下1 1个个窗体窗体“学生选修课程详细信息学生选修课程详细信息”;否则,单击标签打开否则,单击标签打开下下1 1个窗体个窗体“学生选修课程详细信息学生选修课程详细信息”,并将该标签的内,并将该标签的内容(即课程名)传递进下容(即课程名)传递进下1 1个窗体,并关闭当前窗体。个窗体,并关闭当前窗体。If Me!选课选课4标签标签.Caption=Then Exit SubDoCmd.OpenForm 学生选修课程详细信息学生选修课程详细信息,Me!选课选课4标签标签.CaptionDoCmd.Close acF
31、orm,学生查询选课学生查询选课7.4“学生选修课程详细信息学生选修课程详细信息”设计设计(1)(1)演示与分析演示与分析1)打开窗体时)打开窗体时判断用户是否登录,若否,关闭当前窗体,打开登录窗体。判断用户是否登录,若否,关闭当前窗体,打开登录窗体。若用户已经登录,判断是否是经过点击课程名进来,若否,关闭当前窗体,若用户已经登录,判断是否是经过点击课程名进来,若否,关闭当前窗体,打开学生查询选课窗体。打开学生查询选课窗体。若用户已经登录,且是通过点击上一窗体的课程名进来的,则显示欢迎信息若用户已经登录,且是通过点击上一窗体的课程名进来的,则显示欢迎信息和课程详细信息。和课程详细信息。窗体窗体
32、标签标签标签标签标签标签标签标签标签标签标签标签标签标签(1)(1)演示与分析演示与分析按钮按钮2 2)单击)单击“返回返回”按钮,按钮,则关闭当前窗体,打开则关闭当前窗体,打开“学生查询选课学生查询选课”窗体窗体(2 2)界面设计)界面设计窗体窗体标签标签标签标签标签标签标签标签标签标签标签标签标签标签按钮按钮招兵买马(添加控件)招兵买马(添加控件)窗体窗体标签标签标签标签标签标签标签标签标签标签标签标签标签标签按钮按钮认识新员工,起绰号(给控件命名)认识新员工,起绰号(给控件命名)学生选修课学生选修课程详细信息程详细信息课程详细课程详细信息标签信息标签课程号课程号标签标签课程名课程名标签标
33、签学时学时标签标签任课教任课教师师1标签标签任课教任课教师师2标签标签欢迎欢迎标签标签返回返回按钮按钮员工培训(界面设置)员工培训(界面设置)1)培训窗体)培训窗体取消滚动条取消滚动条取消最大最小化按钮取消最大最小化按钮取消分割线取消分割线取消导航按钮取消导航按钮取消记录选择器取消记录选择器添加背景图片以美化界面(嵌入、拉伸、窗体中心)添加背景图片以美化界面(嵌入、拉伸、窗体中心)(4)功能实现)功能实现关键代码介绍关键代码介绍(1 1)将将数据数据从从当前窗体当前窗体传递到传递到下一个窗体下一个窗体的方法的方法DoCmd.OpenForm 学生选修课程详细信息学生选修课程详细信息,Me!选课
34、选课1标签标签.Caption将当前窗体的将当前窗体的名称为名称为“选课选课1标签标签”的标签的的标签的显示内显示内容传递给容传递给将打开的窗体将打开的窗体“学生选修课程详细信息学生选修课程详细信息”。(2 2)读取从上读取从上1 1个窗体传递的数据的方法个窗体传递的数据的方法coursename=Me.OpenArgs通过通过Me.OpenArgs读取上读取上1个窗体传递过来的参数,个窗体传递过来的参数,并赋给变量并赋给变量coursename。1)打开窗体时)打开窗体时判断用户是否登录,若否,关闭当前窗体,打开登录判断用户是否登录,若否,关闭当前窗体,打开登录窗体。窗体。若用户已经登录,判
35、断是否是经过点击课程名进来,若用户已经登录,判断是否是经过点击课程名进来,若否,关闭当前窗体,打开学生查询选课窗体。若否,关闭当前窗体,打开学生查询选课窗体。若用户已经登录,且是通过点击上一窗体的课程名进若用户已经登录,且是通过点击上一窗体的课程名进来的,则显示欢迎信息和课程详细信息。来的,则显示欢迎信息和课程详细信息。If username=ThenDoCmd.OpenForm 登录登录DoCmd.Close acForm,学生选修课程详细信息学生选修课程详细信息Exit SubEnd If1)打开窗体时)打开窗体时判断用户是否登录,若否,关闭当前窗体,打开登录判断用户是否登录,若否,关闭当
36、前窗体,打开登录窗体。窗体。若用户已经登录,判断是否是经过点击课程名进来,若用户已经登录,判断是否是经过点击课程名进来,若否,关闭当前窗体,打开学生查询选课窗体。若否,关闭当前窗体,打开学生查询选课窗体。若用户已经登录,且是通过点击上一窗体的课程名进若用户已经登录,且是通过点击上一窗体的课程名进来的,则显示欢迎信息和课程详细信息。来的,则显示欢迎信息和课程详细信息。If IsNull(Me.OpenArgs)ThenDoCmd.OpenForm 学生查询选课学生查询选课DoCmd.Close acForm,学生选修课程详细信息学生选修课程详细信息Exit SubEnd If1)打开窗体时)打开
37、窗体时判断用户是否登录,若否,关闭当前窗体,打开登录判断用户是否登录,若否,关闭当前窗体,打开登录窗体。窗体。若用户已经登录,判断是否是经过点击课程名进来,若用户已经登录,判断是否是经过点击课程名进来,若否,关闭当前窗体,打开学生查询选课窗体。若否,关闭当前窗体,打开学生查询选课窗体。若用户已经登录,且是通过点击上一窗体的课程名进若用户已经登录,且是通过点击上一窗体的课程名进来的,则显示欢迎信息和课程详细信息。来的,则显示欢迎信息和课程详细信息。Me!欢迎标签欢迎标签.Caption=欢迎您,欢迎您,+username+同学!同学!Dim coursename As Stringcoursen
38、ame=Me.OpenArgsMe!任课教师任课教师2标签标签.Caption=若用户已经登录,且是通过点击上一窗体的课程名进若用户已经登录,且是通过点击上一窗体的课程名进来的,则显示欢迎信息和课程详细信息。来的,则显示欢迎信息和课程详细信息。Dim rs As ADODB.RecordsetSet rs=New ADODB.RecordsetDim SQLstring As StringSQLstring=select o,cn,ct,tn from c,t,tc where o=o and t.tno=tc.tno and cn=+coursecn+rs.Open SQLstring,Cu
39、rrentProject.Connection,adOpenKeyset,adLockOptimisticDim i As IntegerFor i=1 To rs.RecordCountIf i=1 ThenMe!课程详细信息标签课程详细信息标签.Caption=coursecn+课程详细信课程详细信息息Me!课程号标签课程号标签.Caption=课程号:课程号:+rs(cno)Me!课程名标签课程名标签.Caption=课程名:课程名:+coursecnMe!学时标签学时标签.Caption=学时:学时:&rs(ct)Me!任课教师任课教师1标签标签.Caption=任课教师:任课教师:+
40、rs(tn)End IfIf i=2 Then Me!任课教师任课教师2标签标签.Caption=rs(tn)rs.MoveNextNext iSet rs=NothingDoCmd.Close acForm,学生选修课程详细信息学生选修课程详细信息DoCmd.OpenForm 学生查询选课学生查询选课2 2)单击)单击“返回返回”按钮,按钮,则关闭当前窗体,打开则关闭当前窗体,打开“学生查学生查询选课询选课”窗体窗体7.5 “学生选课学生选课”的设计的设计1)打开窗体时)打开窗体时如果用户没有登录,则关闭当前窗体,打开如果用户没有登录,则关闭当前窗体,打开“登录登录”窗体。窗体。如果用户已经
41、登录,但选课已满如果用户已经登录,但选课已满4门,则关闭当前窗体,打开门,则关闭当前窗体,打开“学生主窗体学生主窗体”。如果窗体成功打开,则显示欢迎信息,将课程详细信息标签显示置为空。如果窗体成功打开,则显示欢迎信息,将课程详细信息标签显示置为空。(1 1)演示与分析)演示与分析窗体窗体标签标签标签标签标签标签标签标签标签标签2)组合框的值更新时,)组合框的值更新时,通过读取组合框的值获取到用户选择的课程名,并使通过读取组合框的值获取到用户选择的课程名,并使用该课程名查询课程的详细信息,将查询到的课程详细信息以相应的标签进行用该课程名查询课程的详细信息,将查询到的课程详细信息以相应的标签进行显
42、示。显示。(1 1)演示与分析)演示与分析标签标签标签标签标签标签标签标签组合组合框框3)“确定确定”按钮单击时按钮单击时判断用户是否选择了值,如否,则提示。判断用户是否选择了值,如否,则提示。若用户选择了值,弹出对话框确认用户是否确定要选修课程,若是,则执行若用户选择了值,弹出对话框确认用户是否确定要选修课程,若是,则执行选修操作(写数据库操作)选修操作(写数据库操作)。读取数据库,计算用户还可以选择的选修课程门数,并提示;若已满读取数据库,计算用户还可以选择的选修课程门数,并提示;若已满4门,门,提示并关闭当前窗体,返回学生主窗体。提示并关闭当前窗体,返回学生主窗体。(1 1)演示与分析)
43、演示与分析按钮按钮组合组合框框4)“返回返回”按钮单击时,按钮单击时,关闭当前窗体,返回关闭当前窗体,返回“学生主窗体学生主窗体”。(1 1)演示与分析)演示与分析按钮按钮(2 2)界面设计)界面设计窗体窗体标签标签按钮按钮组合组合框框标签标签标签标签标签标签标签标签按钮按钮标签标签标签标签思考:如何在组合框里放置登录学生没有选修的课程名字思考:如何在组合框里放置登录学生没有选修的课程名字?在查询中写在查询中写1个个SQL语句,查询出登录学生还没有选修的课程名字。语句,查询出登录学生还没有选修的课程名字。SELECT CN FROM C WHERE CNO NOT IN(SELECT DIST
44、INCT CNO FROM SC WHERE SNO=usersno)?该如何在该如何在SQL语句中使用全局变量呢?语句中使用全局变量呢?该如何在该如何在SQL语句中使用全局变量呢语句中使用全局变量呢?1)首先,在模块中定义)首先,在模块中定义1个全局函数,令该函数的返回值为要个全局函数,令该函数的返回值为要使用的全局变量。使用的全局变量。2)其次,将该函数赋给)其次,将该函数赋给SQL语句即可。语句即可。利用向导建立组合框,并将该查询引入为该组合框的数据。利用向导建立组合框,并将该查询引入为该组合框的数据。招兵买马(添加控件)招兵买马(添加控件)窗体窗体标签标签按钮按钮组合组合框框标签标签标
45、签标签标签标签标签标签标签标签按钮按钮标签标签认识新员工,起绰号(给控件命名)认识新员工,起绰号(给控件命名)学生学生选课选课选择选择标签标签确定确定按钮按钮选择选择组合组合框框课程号课程号标签标签课程名课程名标签标签学时学时标签标签任课教师任课教师1标签标签任课教师任课教师2标签标签返回返回按钮按钮欢迎欢迎标签标签员工培训(控件设置)员工培训(控件设置)1)培训窗体)培训窗体取消滚动条取消滚动条取消最大最小化按钮取消最大最小化按钮取消分割线取消分割线取消导航按钮取消导航按钮取消记录选择器取消记录选择器添加背景图片以美化界面(嵌入、拉伸、窗体中心添加背景图片以美化界面(嵌入、拉伸、窗体中心)(
46、4)功能实现)功能实现关键代码介绍关键代码介绍(1 1)如何将记录添加进数据库如何将记录添加进数据库写出插入记录的写出插入记录的SQL语句语句Dim insertstring As Stringinsertstring=insert into sc(sno,cno)values(+usersno+,+selectinsertcoursecno+)执行执行SQL语句语句DoCmd.SetWarnings FalseDoCmd.RunSQL insertstring(2 2)如何读取组合框的值?)如何读取组合框的值?Me!选择组合框选择组合框.Value(3 3)如何设置组合框当前显示的内容)如何
47、设置组合框当前显示的内容 Me!选择组合框选择组合框.Value=请选择请选择(4)如何更新组合框的数据?)如何更新组合框的数据?Me!选择组合框选择组合框.Requery1)打开窗体时)打开窗体时如果用户没有登录,则关闭当前窗体,打开如果用户没有登录,则关闭当前窗体,打开“登录登录”窗体。窗体。如果用户已经登录,但选课已满如果用户已经登录,但选课已满4门,则关闭当前窗体,打开门,则关闭当前窗体,打开“学生主窗体学生主窗体”。如果窗体成功打开,则显示欢迎信息,将课程详细信息标签显如果窗体成功打开,则显示欢迎信息,将课程详细信息标签显示置为空。示置为空。If username=ThenDoCmd
48、.Close acForm,学生选课学生选课DoCmd.OpenForm 登录登录Exit SubEnd If1)打开窗体时)打开窗体时如果用户没有登录,则关闭当前窗体,打开如果用户没有登录,则关闭当前窗体,打开“登录登录”窗体。窗体。如果用户已经登录,但选课已满如果用户已经登录,但选课已满4门,则关闭当前窗体,打开门,则关闭当前窗体,打开“学生主窗体学生主窗体”。如果窗体成功打开,则显示欢迎信息,将课程详细信息标签显如果窗体成功打开,则显示欢迎信息,将课程详细信息标签显示置为空。示置为空。Dim rs As ADODB.RecordsetSet rs=New ADODB.RecordsetD
49、im SQLstring As StringSQLstring=select*from sc where sno=+usersno+rs.Open SQLstring,CurrentProject.Connection,adOpenKeyset,adLockOptimistic1)打开窗体时)打开窗体时如果用户没有登录,则关闭当前窗体,打开如果用户没有登录,则关闭当前窗体,打开“登录登录”窗体。窗体。如果用户已经登录,但选课已满如果用户已经登录,但选课已满4门,则关闭当前窗体,打开门,则关闭当前窗体,打开“学生主窗体学生主窗体”。如果窗体成功打开,则显示欢迎信息,将课程详细信息标签显如果窗体成
50、功打开,则显示欢迎信息,将课程详细信息标签显示置为空。示置为空。If rs.RecordCount=4 ThenMsgBox 您的选课已满您的选课已满4门,不能再选门,不能再选!,vbOKOnly,警告警告Set rs=NothingDoCmd.Close acForm,学生选课学生选课DoCmd.OpenForm 学生主窗体学生主窗体Exit SubEnd If1)打开窗体时)打开窗体时如果用户没有登录,则关闭当前窗体,打开如果用户没有登录,则关闭当前窗体,打开“登录登录”窗体。窗体。如果用户已经登录,但选课已满如果用户已经登录,但选课已满4门,则关闭当前窗体,打开门,则关闭当前窗体,打开“