数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
数据库课程设计
河南理工大学
计算机科学与技术学院
实习报告
2011—2012学年第一学期
实习名称学生选课信息系统
实习地点计算机楼605
实习日期2011.12.26—2012.1.8
学生姓名
学号
专业班级
指导教师
2012年1月9日
目录
一、需求描述3
二、系统分析3
2.1系统功能分析3
2.2E-R图3
三、逻辑结构设计6
3.1E-R图转换6
3.2逻辑结构设计6
四、实现7
4.1表结构7
4.2表实例9
4.3表间关系图11
五、功能模块实现11
六、小结18
一、需求描述
学生选课系统是学校最常使用的管理系统,拥有广阔的市场前景,为了满足学校的需求,我们开发此系统,方便学生和老师选课。
二、系统分析
2.1系统功能分析
学生选课系统的主界面里主要包含4个功能模块:
系统管理,基本信息设置,选课管理,信息查询。
1).系统管理是管理员所做的工作,包括对用户管理(添加删除用户,修改密码),实现用户注销功能,数据库还原与备份,退出系统,修改密码.学生自己也可以修改密码。
2).基本信息设置模块主要是对学生信息,教师信息,课程信息的录入,添加和修改.同时也可以的学生信息,教师信息,课程信息进行查询.
3).选课管理包括学生选课和教师选课,主要实现学生选择自己想要的课程,教师选择自己要交的课程。
4).信息查询模块包括了多种查询方式:
我们设置了学生查询和教师查询。
学生查询可以查看到个人信息(可以修改一部分),课程信息,教师信息,同学信息。
教师查询可以查看个人信息,所教课程信息,所交学生信息。
2.2E-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
nn
mn
图2.2.7学生、教师、课程表间联系E-R图
三、逻辑结构设计
3.1E-R图转换
教师信息表(教师号,姓名,性别,职称,电话,住址,备注)
学生信息表(学号,姓名,性别,生日,院系,年级,专业,电话,住址,备注)
课程信息表(课程号,课程名,学时,学分)
教师选课表(教师选课编号,课程号,教师号)
学生选课表(学生选课编号,学号,课程号,教师号)
用户表(用户名,密码,权限)
3.2逻辑结构设计
选课系统数据库中各个表格的逻辑结构设计结果如下:
字段名
类型
条件
说明
Sno
Char
Primarykey
学号
Sname
char
Notnull
姓名
Ssex
char
性别
Sbirth
datetime
出生日期
Scol
Varchar
院别
Sgra
Varchar
年级
Sspe
Varchar
专业
Stel
Char
联系方式
Saddress
Varchar
地址
Sother
text
备注
表3.2.1学生信息表(student)
字段名
类型
条件
说明
Tno
Char
Primarykey
教师编号
Tname
Char
Notnull
教师姓名
Tsex
Char
性别
Tpos
varchar
职位
Ttel
char
联系方式
Taddress
varchar
地址
Tother
text
备注
表3.2.2教师信息表(teacher)
字段名
类型
条件
说明
Cno
Char
Primarykey
课程号
Cname
varchar
Notnull
课程名
Ctime
Int
学时
Cpoint
int
学分
表3.2.3课程信息表(course)
字段名
类型
条件
说明
TCno
char
Primarykey
教师选课编号
Cno
Char
课程号
Tno
char
教师编号
表3.2.4教师选课表(T-choose)
字段名
类型
条件
说明
SCno
Char
Primarykey
学生选课编号
Sno
Char
学生学号
Cno
Char
课程号
Tno
Char
教师编号
表3.2.5学生选课表(S_choose)
字段名
类型
条件
说明
Uname
Char
Primarykey
用户名
Upwd
Char
Notnull
密码
Urole
Int
Notnull
权限(1表示管理员,2表示教师,3表示学生,4表示操作员)
表3.2.6登录用户表(user_if)
四、实现
4.1表结构
图4.1.1user_if表结构图
图4.1.2course表结构图
图4.1.3s_choose表结构图
图4.1.4student表结构图
图4.1.5t_choose表结构图
图4.1.6teacher表结构图
4.2表实例
图4.2.1user_if表实例图
图4.2.2course表实例图
图4.2.3s_choose表实例图
图4.2.4student表实例图
图4.2.5t_choose表实例图
图4.2.6teacher表实例图
4.3表间关系图
图4.3.1表间关系图
五、功能模块实现
图5.1查询学生信息
PrivateSubSmartNetXpButton1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DimMsgTextAsString
Dimdd(3)AsBoolean
DimmrcAsADODB.Recordset
DimrsAsBoolean
DimsMegAsString
rs=True
OnErrorResumeNext
txtSQL="select*fromstudentwhere"
IfCheck1.ValueThen
IfTrim(Combo1.Text)=""Then
sMeg="学号不能为空"
MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"
Combo1.SetFocus
ExitSub
Else
dd(0)=True
txtSQL=txtSQL&"Sno='"&Trim(Combo1.Text)&"'"
EndIf
EndIf
IfCheck2.ValueThen
IfTrim(Combo2.Text)=""Then
sMeg="姓名不能为空"
MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"
Combo2.SetFocus
ExitSub
Else
dd
(1)=True
Ifdd(0)Then
txtSQL=txtSQL&"andSname='"&Trim(Combo2.Text)&"'"
Else
txtSQL=txtSQL&"Sname='"&Trim(Combo2.Text)&"'"
EndIf
EndIf
EndIf
IfCheck3.ValueThen
IfTrim(Combo3.Text)=""Then
sMeg="学生所属年级"
MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"
Combo3.SetFocus
ExitSub
Else
dd
(2)=True
Ifdd(0)Ordd
(1)Then
txtSQL=txtSQL&"andSgra='"&Trim(Combo3.Text)&"'"
Else
txtSQL=txtSQL&"Sgra='"&Trim(Combo3.Text)&"'"
EndIf
EndIf
EndIf
IfCheck4.ValueThen
IfTrim(Combo4.Text)=""Then
sMeg="请输入学生所属学院"
MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"
Combo4.SetFocus
ExitSub
Else
dd(3)=True
Ifdd(0)Ordd
(1)Ordd
(2)Then
txtSQL=txtSQL&"andScol='"&Trim(Combo4.Text)&"'"
Else
txtSQL=txtSQL&"Scol='"&Trim(Combo4.Text)&"'"
EndIf
EndIf
EndIf
IfNot(dd(0)Ordd
(1)Ordd
(2)Ordd(3))Then
MsgBox"请设置查询方式!
",vbOKOnly+vbExclamation,"警告"
ExitSub
EndIf
Ifrs=TrueThen
txtSQL=txtSQL&"orderbySno"
Setmrc=MyDB.ExecuteSQL(txtSQL,MsgText)
fmrc.RecordCount>0ThenSmartNetXpButton4.Enabled=True
Else
SmartNetXpButton4.Enabled=False
EndIf
WithMSFlexGrid1
.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(1,10)="备注"
DoWhileNotmrc.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-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
EndWith
mrc.Close
EndIf
EndSub
图5.2学生选课
PrivateSubxian_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DimiAsInteger
DimkAsInteger
k=0
DimmrccAsADODB.Recordset
DimtxtstringAsString
Dima,m,nAsString
Dimj,p,qAsInteger
strsql="selectcnofromcoursewherecname='"&List1.Text&"'"
Setrs=MyDB.ExecuteSQL(strsql,MsgText)
IfNotrs.EOFThen
a=rs.Fields(0)
EndIf
rs.Close
strsql="selecttnofromteacherwheretname='"&List2.Text&"'"
Setrs=MyDB.ExecuteSQL(strsql,MsgText)
IfNotrs.EOFThen
m=rs.Fields(0)
EndIf
rs.Close
txtstring="select*fromS_choose"
Setmrcc=MyDB.ExecuteSQL(txtstring,MsgText)
Fori=0ToList3.ListCount-1
IfList3.List(i)=List1.TextThenk=1
Next
sqlstr="select*fromS_choose,coursewhereS_choose.Cno=course.CnoandCname='"&Trim(List1.Text)&"'andSno='"&Trim(user_name)&"'"
Setrs=MyDB.ExecuteSQL(sqlstr,MsgText)
IfNotrs.EOFThenk=1
rs.Close
strsql="selectcount(cno)froms_choosewheresno='"&user_name&"'"
Setrs=MyDB.ExecuteSQL(strsql,MsgText)
fNotrs.EOFThen
n=rs.Fields(0)
EndIf
rs.Close
Ifk<>1Then
IfList1.ListIndex<>-1AndList2.ListIndex<>-1Then
Ifn<3Then
mrcc.AddNew
mrcc.Fields
(1)=user_name
mrcc.Fields
(2)=a
mrcc.Fields(3)=m
mrcc.Update
MsgBox"贺喜你已经选了这门课程!
"
List3.AddItemList1.Text
List4.AddItemList2.Text
mrcc.Close
Else
MsgBox"你已经超过3门课程,不能再选课",vbInformation+vbOKOnly,"提示'"
ExitSub
EndIf
Else
IfList1.ListIndex=-1ThenMsgBox"请选中课程",vbInformation+vbOKOnly,"提示"
IfList2.ListIndex=-1ThenMsgBox"请选中教师",vbInformation+vbOKOnly,"提示"
EndIf
Else
MsgBox"你已经选了该课程,请重选!
",vbInformation+vbOKOnly,"提示"
ExitSub
EndIfEndSub
图5.3教师选课
PrivateSubSmartNetXpButton1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DimiAsInteger
DimkAsInteger
DimsqlstringAsString
DimmrccAsADODB.Recordset
DimccnoAsString
k=0
Fori=0ToList2.ListCount-1
IfList2.List(i)=List1.TextThenk=1
Next
sqlstring="select*fromT_choose,coursewhereT_choose.Cno=course.CnoandCname='"&Trim(List1.Text)&"'andtno='"&Trim(user_name)&"'"
Setmrcc=MyDB.ExecuteSQL(sqlstring,MsgText)
IfNotmrcc.EOFThenk=1
mrcc.Close
Ifk<>1Then
IfList1.ListIndex<>-1Then
sqlstring="selectCnofromcoursewhereCname='"&Trim(List1.Text)&"'"
Setmrcc=MyDB.ExecuteSQL(sqlstring,MsgText)
IfNotmrcc.EOFThen
ccno=mrcc.Fields(0)
EndIf
mrcc.Close
txtstring="select*fromT_choose"
Setmrc=MyDB.ExecuteSQL(txtstring,MsgText)
mrc.AddNew
IfNotmrc.EOFThen
mrc.Fields
(1)=ccno
mrc.Fields
(2)=user_name
EndIf
mrc.Update
MsgBox"选课成功",vbOKOnly+vbExclamation,"祝贺"
mrc.Close
List2.AddItemList1.Text
Else
MsgBox"请选中你要教的课程",vbInformation+vbOKOnly,"提示"
ExitSub
EndIf
Else
MsgBox"你已经选了该课程,请重选!
",vbInformation+vbOKOnly,"提示"
ExitSub
EndIf
EndSub
六、小结
这次课程设计为期两周,虽然以前也做过课程设计,但我认为这次很特别。
通过这次的课程设计,我复习和巩固了VB知识,使自己的编程能力有了很大的提高,同时,也得到了同学们的帮助,在此感谢他们。
最后祝老师在新的一年里工作顺利,万事如意!