1、数据库课程设计河南理工大学计算机科学与技术学院实习报告2011 2012学年第 一 学期实习名称 学生选课信息系统 实习地点 计算机楼605 实习日期 2011 .12.262012.1.8 学生姓名 学 号 专业班级 指导教师 2012年 1月 9日目 录一、需求描述 3二、系统分析 32.1 系统功能分析 32.2 E-R图 3三、逻辑结构设计 63.1 E-R图转换 63.2逻辑结构设计 6四、实现 74.1 表结构 74.2 表实例 94.3 表间关系图 11五、功能模块实现 11六、小结 18一、需求描述学生选课系统是学校最常使用的管理系统,拥有广阔的市场前景,为了满足学校的需求,我
2、们开发此系统,方便学生和老师选课。二、系统分析2.1 系统功能分析学生选课系统的主界面里主要包含4个功能模块:系统管理,基本信息设置,选课管理,信息查询。1) . 系统管理是管理员所做的工作,包括对用户管理(添加删除用户,修改密码), 实现用户注销功能,数据库还原与备份,退出系统,修改密码.学生自己也可以修改密码。2). 基本信息设置模块主要是对学生信息,教师信息,课程信息的录入,添加和修改.同时也可以的学生信息,教师信息,课程信息进行查询.3). 选课管理包括学生选课和教师选课,主要实现学生选择自己想要的课程,教师选择自己要交的课程。4). 信息查询模块包括了多种查询方式:我们设置了学生查询
3、和教师查询。学生查询可以查看到个人信息(可以修改一部分),课程信息,教师信息,同学信息。教师查询可以查看个人信息,所教课程信息,所交学生信息。2.2 E-R图图2.2.1 教师信息表E-R图图2.2.2 学生信息表E-R图图2.2.3 课程表E-R图图2.2.4 用户表E-R图图2.2.5 教师选课表E-R图图2.2.6 学生选课表E-R图 m m n n m n图2.2.7 学生、教师、课程表间联系E-R图三、逻辑结构设计3.1 E-R图转换教师信息表(教师号,姓名,性别,职称,电话,住址,备注)学生信息表(学号,姓名,性别,生日,院系,年级,专业,电话,住址,备注)课程信息表(课程号,课程
4、名,学时,学分)教师选课表(教师选课编号,课程号,教师号)学生选课表(学生选课编号,学号,课程号,教师号)用户表(用户名,密码,权限)3.2逻辑结构设计选课系统数据库中各个表格的逻辑结构设计结果如下:字段名类型条件说明SnoCharPrimary key学号SnamecharNot null姓名Ssexchar性别Sbirthdatetime出生日期ScolVarchar院别SgraVarchar年级SspeVarchar专业StelChar联系方式SaddressVarchar地址Sothertext备注表3.2.1学生信息表(student)字段名类型条件说明TnoCharPrimary
5、key教师编号TnameCharNot null教师姓名TsexChar性别Tposvarchar职位Ttelchar联系方式Taddressvarchar地址Tothertext备注表3.2.2教师信息表(teacher)字段名类型条件说明CnoCharPrimary key课程号CnamevarcharNot null课程名CtimeInt学时Cpointint学分表3.2.3课程信息表(course)字段名类型条件说明TCnocharPrimary key教师选课编号CnoChar课程号Tnochar教师编号表3.2.4教师选课表(T-choose)字段名类型条件说明SCnoCharPr
6、imary key学生选课编号SnoChar学生学号CnoChar课程号TnoChar教师编号表3.2.5学生选课表(S_choose)字段名类型条件说明UnameCharPrimary key用户名UpwdCharNot null密码UroleIntNot null权限(1表示管理员,2表示教师,3表示学生,4表示操作员)表3.2.6登录用户表(user_if)四、实现4.1 表结构图4.1.1 user_if表结构图图4.1.2 course表结构图图4.1.3 s_choose表结构图图4.1.4 student表结构图图4.1.5 t_choose表结构图图4.1.6 teacher表
7、结构图4.2 表实例图4.2.1 user_if表实例图图4.2.2 course表实例图图4.2.3 s_choose表实例图图4.2.4 student表实例图图4.2.5 t_choose表实例图图4.2.6 teacher表实例图4.3 表间关系图图4.3.1 表间关系图五、功能模块实现图5.1 查询学生信息Private Sub SmartNetXpButton1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim MsgText As String Dim dd(3) As Boole
8、an Dim mrc As ADODB.Recordset Dim rs As Boolean Dim sMeg As String rs = True On Error Resume Next txtSQL = select * from student where If Check1.Value Then If Trim(Combo1.Text) = Then sMeg = 学号不能为空 MsgBox sMeg, vbOKOnly + vbExclamation, 警告 Combo1.SetFocus Exit Sub Else dd(0) = True txtSQL = txtSQL &
9、 Sno = & Trim(Combo1.Text) & End If End If If Check2.Value Then If Trim(Combo2.Text) = Then sMeg = 姓名不能为空 MsgBox sMeg, vbOKOnly + vbExclamation, 警告 Combo2.SetFocus Exit Sub Else dd(1) = True If dd(0) Then txtSQL = txtSQL & and Sname= & Trim(Combo2.Text) & Else txtSQL = txtSQL & Sname= & Trim(Combo2.
10、Text) & End If End If End If If Check3.Value Then If Trim(Combo3.Text) = Then sMeg = 学生所属年级 MsgBox sMeg, vbOKOnly + vbExclamation, 警告 Combo3.SetFocus Exit Sub Else dd(2) = True If dd(0) Or dd(1) Then txtSQL = txtSQL & and Sgra= & Trim(Combo3.Text) & Else txtSQL = txtSQL & Sgra = & Trim(Combo3.Text)
11、& End If End If End IfIf Check4.Value Then If Trim(Combo4.Text) = Then sMeg = 请输入学生所属学院 MsgBox sMeg, vbOKOnly + vbExclamation, 警告 Combo4.SetFocus Exit Sub Else dd(3) = True If dd(0) Or dd(1) Or dd(2) Then txtSQL = txtSQL & and Scol= & Trim(Combo4.Text) & Else txtSQL = txtSQL & Scol = & Trim(Combo4.T
12、ext) & End If End If End IfIf Not (dd(0) Or dd(1) Or dd(2) Or dd(3) Then MsgBox 请设置查询方式!, vbOKOnly + vbExclamation, 警告 Exit Sub End If If rs = True Then txtSQL = txtSQL & order by Sno Set mrc = MyDB.ExecuteSQL(txtSQL, MsgText) f mrc.RecordCount 0 Then SmartNetXpButton4.Enabled = True Else SmartNetXp
13、Button4.Enabled = False End If With MSFlexGrid1 .Rows = 2 .CellAlignment = 4 .TextMatrix(1, 1) = 学号 .TextMatrix(1, 2) = 姓名 .TextMatrix(1, 3) = 性别 .TextMatrix(1, 4) = 出生日期 .TextMatrix(1, 5) = 院别 .TextMatrix(1, 6) = 年级 .TextMatrix(1, 7) = 专业 .TextMatrix(1, 8) = 联系方式 .TextMatrix(1, 9) = 地址 .TextMatrix(
14、1, 10) = 备注 Do While Not mrc.EOF .Rows = .Rows + 1 .CellAlignment = 4 .TextMatrix(.Rows - 1, 1) = mrc.Fields(0) .TextMatrix(.Rows - 1, 2) = mrc.Fields(1) .TextMatrix(.Rows - 1, 3) = mrc.Fields(2) .TextMatrix(.Rows - 1, 4) = mrc.Fields(3) .TextMatrix(.Rows - 1, 5) = mrc.Fields(4) .TextMatrix(.Rows -
15、1, 6) = mrc.Fields(5) .TextMatrix(.Rows - 1, 7) = mrc.Fields(6) .TextMatrix(.Rows - 1, 8) = mrc.Fields(7) .TextMatrix(.Rows - 1, 9) = mrc.Fields(8) .TextMatrix(.Rows - 1, 10) = mrc.Fields(9) mrc.MoveNext Loop End With mrc.Close End IfEnd Sub图5.2 学生选课Private Sub xian_MouseUp(Button As Integer, Shift
16、As Integer, X As Single, Y As Single) Dim i As Integer Dim k As Integer k = 0 Dim mrcc As ADODB.Recordset Dim txtstring As String Dim a, m, n As String Dim j, p, q As Integer strsql = select cno from course where cname= & List1.Text & Set rs = MyDB.ExecuteSQL(strsql, MsgText) If Not rs.EOF Then a =
17、rs.Fields(0) End If rs.Close strsql = select tno from teacher where tname= & List2.Text & Set rs = MyDB.ExecuteSQL(strsql, MsgText) If Not rs.EOF Then m = rs.Fields(0) End If rs.Close txtstring = select * from S_choose Set mrcc = MyDB.ExecuteSQL(txtstring, MsgText) For i = 0 To List3.ListCount - 1 I
18、f List3.List(i) = List1.Text Then k = 1 Next sqlstr = select * from S_choose,course where S_choose.Cno=course.Cno and Cname= & Trim(List1.Text) & and Sno= & Trim(user_name) & Set rs = MyDB.ExecuteSQL(sqlstr, MsgText) If Not rs.EOF Then k = 1 rs.Close strsql = select count(cno) from s_choose where sn
19、o= & user_name & Set rs = MyDB.ExecuteSQL(strsql, MsgText) f Not rs.EOF Then n = rs.Fields(0) End If rs.Close If k 1 Then If List1.ListIndex -1 And List2.ListIndex -1 Then If n 3 Then mrcc.AddNew mrcc.Fields(1) = user_name mrcc.Fields(2) = a mrcc.Fields(3) = m mrcc.Update MsgBox 贺喜你已经选了这门课程! List3.A
20、ddItem List1.Text List4.AddItem List2.Text mrcc.Close Else MsgBox 你已经超过3门课程,不能再选课, vbInformation + vbOKOnly, 提示 Exit Sub End If ElseIf List1.ListIndex = -1 Then MsgBox 请选中课程, vbInformation + vbOKOnly, 提示If List2.ListIndex = -1 Then MsgBox 请选中教师, vbInformation + vbOKOnly, 提示 End If Else MsgBox 你已经选了该
21、课程,请重选!, vbInformation + vbOKOnly, 提示 Exit Sub End If End Sub图5.3 教师选课Private Sub SmartNetXpButton1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim i As Integer Dim k As Integer Dim sqlstring As String Dim mrcc As ADODB.Recordset Dim ccno As String k = 0 For i = 0 To List2
22、.ListCount - 1 If List2.List(i) = List1.Text Then k = 1 Next sqlstring = select * from T_choose,course where T_choose.Cno=course.Cno and Cname= & Trim(List1.Text) & and tno= & Trim(user_name) & Set mrcc = MyDB.ExecuteSQL(sqlstring, MsgText) If Not mrcc.EOF Then k = 1 mrcc.Close If k 1 Then If List1.
23、ListIndex -1 Then sqlstring = select Cno from course where Cname= & Trim(List1.Text) & Set mrcc = MyDB.ExecuteSQL(sqlstring, MsgText) If Not mrcc.EOF Then ccno = mrcc.Fields(0) End If mrcc.Close txtstring = select * from T_choose Set mrc = MyDB.ExecuteSQL(txtstring, MsgText) mrc.AddNew If Not mrc.EO
24、F Then mrc.Fields(1) = ccno mrc.Fields(2) = user_name End If mrc.Update MsgBox 选课成功, vbOKOnly + vbExclamation, 祝贺 mrc.Close List2.AddItem List1.Text Else MsgBox 请选中你要教的课程, vbInformation + vbOKOnly, 提示 Exit Sub End If Else MsgBox 你已经选了该课程,请重选!, vbInformation + vbOKOnly, 提示 Exit Sub End IfEnd Sub六、小结这次课程设计为期两周,虽然以前也做过课程设计,但我认为这次很特别。通过这次的课程设计,我复习和巩固了VB知识,使自己的编程能力有了很大的提高,同时,也得到了同学们的帮助,在此感谢他们。最后祝老师在新的一年里工作顺利,万事如意!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1