数据库课程设计.docx
- 文档编号:7164710
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:26
- 大小:426.36KB
数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
数据库课程设计
一,设计思想
学生信息管理是该系统的核心,主要实现院系管理、专业管理、程管理、学生管理等,能够学生添加、查询、修改、删除等操作,完成学生信息的管理。
使用VB和SQLSever来完成本次设计。
二,功能模块划分
1.用户管理模块,登录用户。
2.基本信息设置模块,包括院系基本信息管理,专业的管理,课程的管理,学生管理等。
3.查询模块,查询学生信息。
4.添加模块,添加学生信息。
5.修改模块,修改学生信息。
6.删除模块,删除学生信息。
三,设计目的
学生信息管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生错误。
同时学生信息管理具有较强的时间限制,必须严格按照单位规定的时间完成工作。
正是学生信息管理的这种重复性、规律性、时间性,使得学生信息管理计算机化成为可能。
计算机进行学生管理,不仅能够保证信息正确无误、快速输出,而且还可以相关的各种信息进行统计,提高了学生信息的及时性、正确性、全面性。
大大提高了管理水平和管理效率,产生了巨大的经济效益和社会效益。
四,概念结构设计
五,E-R图
六,结构设计
此阶段的任务是把概念结构设阶段设计好的基本E-R图转换为数据模型相符合的逻辑结构,其转换规则如下:
1.对于1:
1的联系可以转换为一个独立的关系模式,也可一与任意一端对应实体合并
2.对于1:
n的联系可以转换为一个独立的关系模式,也可一与
n意一端对应实体合并
3.对于m:
n的联系可以转换为一个独立的关系模式
4.3个或3个以上实体间的一个多元联系可以转换为一个关系模式
5.各实体分别转换为一个关系模式
因此由上一步E-R图可得到学生信息管理系统的关系模型为:
专业(专业编号,专业名称,系别)
学生(学号,姓名,性别,出生日期,系别,专业)
课程(课号,课程名称,学分,学时,先修课程,开课学期)
选修(学号,姓名,课号,课程名称,成绩)
用户(自增长ID,用户名,密码,权限角色)
七、数据库的实施
1.数据库的建立:
在SQL2005中建立学生信息管理系统的数据库‘学生信息管理系统’
2.新建数据库表
主要实现代码:
createtableStudent(
Snochar(12)primarykey,
Snamevarchar(10)notnullunique,
Ssexchar
(2),
Sbirthdaydatetime,
Sdeptchar(4),
Mnochar(6)
);
createtableCourse(
Cnochar(8)primarykey,
Cnamevarchar(40)notnullunique,
Cponchar(8),
Csreditnumeric(3,1),
Choursmallint,
Ctermsmallint,
Foreignkey(Cpon)referencesCourse(Cno)
);
createtableSC(
Snochar(12),
Cnochar(8),
Gradenumeric(3,1),
primarykey(Sno,Cno),
foreignkey(Sno)referencesStudent(Sno),
foreignkey(Cno)referencesCourse(Cno)
);
createtableMajor(
Mnochar(6)primarykey,
Mnamevarchar(40)notnullunique,
Sdeptchar(4)
);
createtableUsers(
idintidentityprimarykey,
usernamevarchar(10)notnullunique,
userpwdvarchar(200),
rolevarchar(10)notnull
);
3.建立学生成绩视图:
主要实现代码:
createviewV_StudentCourseGrade
as
selectStudent.*,Major.Mname,Course.Cno,Course.Cname,SC.Grade
fromStudentleftouterjoinSConSC.Sno=Student.Sno
leftouterjoinCourseonSC.Cno=Course.Cno
leftouterjoinMajoronStudent.Mno=Major.Mno
八、使用VB6.0连接SQLSever2005数据库
主要实现代码:
(1)定义系统中的全局变量
PublicSqlConnAsNewADODB.Connection
PublicSqlRSAsNewADODB.Recordset
PublicSqlCmdAsNewADODB.Command
(2)连接数据库
PublicFunctionDBConn()AsBoolean
Connstr=“Provider=SQLOLEDB.1;DataSource=.\SQLEXPRESS;UserID=sa;Password=12345678;IniyialCatalog=StudentDB”
IfSqlConn.State<>adStateOpenThen
‘SqlConn.ConnectionString=ConnStr
‘SqlConn.Open
SqlConn.OpenConnStr
EndIf
SqlCmd.ActiveConnection=SqlConn
DBConn=Ture
EndFunction
(3)执行SQL语句的函数ExecSQL,可返回结果集,也可以使用没有返回结果集的SQL命令语句。
PublicFunctionExecSQL(ByValsqlAsString)AsADODB.Recordset
IfSqlConn.State<>adStateOpenThen
DBConn
EndIf
SqlCmd.CommandText=sql
SetExecSQL=SqlCmd.Execute
EndFunction
九、学生信息管理系统的实现
1.登录窗口
主要实现代码:
(1)登录系统按钮“确定”
PrivateSubcmdOK_Click()
DimsUserNameAsString
DimsUserPwdAsString
sUserName=Yrim(txtUserName.text)
sUserPwd=Trim(txtUserPwd.Text)
IfsUserName=“”Then
CallMagBox(“请输入用户名!
”,vbOKOnly,“登录提示”)
txtUserName.SetFocus
ExitSub
EndIf
IfSqlConn.State<>adStateOpenThenDBConn
SetSqlRS=ExecSQL(“selectcount(*)numfromUserwhere(username=‘“+sUserName+”’)and(userpwd=‘“+sUserPwd+”’)”)
IfNotSqlRS.EOFThen
IfInt(Trim(SqlRS(“num”)))>=1Then
SqlRS.Close
SetSqlRS=ExecSQL(“selectusername,rolefromUserwhere(username=’“+sUserName+”’)and(userpwd=’“+sUserPwd+”’)”)
IfNotSqlRS.EOFThen
MDIForml.SetRightForRole(Trim(SqlRS(“role”)))
Else
MDIForml.SetRightForRole(“2”)
EndIf
UnIoadMe
MDIForml.Show
Else
CallMsgBox(“用户名或密码错误,请重新登录!
”,vbOKOnly,“登录提示”)
txtUserName.SetFocus
EndIf
EndIf
EndSub
(2)退出关闭按钮“关闭”
PrivateSubcmdClose_Click()
UnloadMe
EndSub
2.系统界面设计
主要实现代码:
菜单栏中选择各个子菜单后出发的时间如下所示:
PrivateSubAddStudent_Click()’学生信息录入
frmStudentInfo.SetOpenStyle(“I”)
frmStudentInfo.Show
frmStudentInfo.ZOrder0
EndSub
PrivateSubUpdataStudent_Click()’学生信息更新
frmStudentInfo.SetOpenStyle(“U”)
frmStudentInfo.Show
frmStudentInfo.ZOrder0
EndSub
PrivateSubSearchStudent_Click()’学生信息查询
frmStudentInfo.SetOpenStyle(“F”)
frmStudentInfo.Show
frmStudentInfo.ZOrder0
EndSub
PrivateSubAddGrade_Click()’学生成绩录入
frmCourseGrade.Show
frmCourseGrade.ZOrder0
EndSub
PrivateSubGradeSearch_Click()’学生成绩查询
frmGradeSearch.Show
frmGradeSearch.ZOrder0
EndSub
PublicSubSetRightForRole(roleAsString)
Ifrole=“2”Then
UpdataStudent.Visible=False
AddGrade.Visible=False
GradeSummary.Visible=False
UserManage.Visible=False
EndIf
EndSub
PrivateSubexitSys_Click()’退出系统
UnloadMe
EndSub
3.学生信息的录入,更新,查询
主要实现代码:
(1)定义执行过程中需要的全局变量
DimstrModeAsString’窗口打开方式
DimstrNoAsString’学生学号
(2)窗口加载时执行代码,完成专业下拉列表框赋值
PrivateSubForm_Load()
SetSqlRS=ExecSQL(“selectMnameformMajororderbyMno”)
WhileNotSqlRS.EOF
cbxMajor.AddItem(SqlRS(“Mname”))
SqlRS.MoveNext
Wend
SqlRS.Close
EndSub
(3)单击“新增”按钮时触发的事件
PrivateSubcmdNew_Click()’新增
txtSno.Enabled=Ture
txtSname.Enabled=Ture
Male.Enabled=Ture
Female.Enabled=Ture
txtBirthday.Enabled=Ture
txtDept.Enabled=Ture
cbxMajor.Enabled=Ture
txtSno.Text=“”
txtSname.Text=“”
Male.Value=False
Female.Value=False
txtBirthday.Text=“”
txtDept.Text=“”
cbxMajor.Text=“”
txtSno.SetFocus
EndSub
(4)单击“保存”按钮时触发的事件
PrivateSubcmdSave_Click()’保存
DimstrSQLAsString
DimstrSexAsString
DimstrMnoAsString
IfTrim(txtSno.Text)=“”Then
txtSno.SetFocus
CallMsgBox(“请输入学生学号!
”,vbOKOnly,“提示”)
ExitSub
EndIf
IfTrim(txtSname.Text)=“”Then
txtSname.SetFocus
CallMsgBox(“请输入学生姓名!
”,vbOKOnly,“提示”)
ExitSub
EndIf
IfMale.value=TureThen
strSex=“男”
ElseIfFemale.Value=TureThen
strSex=“女”
EndIf
SetSqlRS=ExecSQL(“selectMnofromMajorwhereMname=‘”+Trim(cbxMajor.Text)+“’”)
IfNotSqlRS.EOFThen
strMno=Trim(SqlRS(“Mno”))
Else
strMno=“”
EndIf
IfstrMode=“I”Then
SetSqlRS=ExecSQL(“selectcount(*)numfromStudentwhereSno=‘”+Trim(txtSno.Text)+“’”)
IfNotSqlRS.EOFThen
IfInt(Trim(SqlRS(“num”)))>=1Then
SqlRS.Close
CallMagBox(“该学生”+Trim(txtSno.Text)+“已经存在,请检查!
”,vbOKOnly,“提示”)
ExitSub
EndIf
EndIf
SqlRS.Close
strSQL=“INSERTINTOStudent(Sno,Sname,Ssex,Sbirthday,Sdept,Mno)”
strSQL=strSQL+“VALUES(‘“+Trim(txtSno.Text)+“’,’”+Trim(txtSname.Text)+“’,’”+strSex+strSex+“’,’”+Trim(txtBirthday.Text)+“’,’”+Trim(txtDept.Text)+“’,’”+strMno+”’)”
ElseIfstrMode=“U”Then
strSQL=“UPDATAStudentSETSno=‘“+Trim(txtSno.Text)+”’,Sname=‘“+Trim(txtSname.Text)+”’,”
strSQL=strSQL+“Ssex=‘“+strSex+”’,Sbirthday=‘“+Trim(txtBirthday.Text)+”’,Sdept=‘“+Trim(txtDept.Text)+”’,Mno=’“+strMno+”’”
strSQL=strSQL+“whereSno=‘“+strNo+”’”
EndIf
ExecSQL(strSQL)
CallMsgbox(“保存成功!
”,vbOKOnly,“提示”)
IfstrMode=“I”ThencmdNew_click
EndSub
(1)更新实现代码如下:
PublicSubSetOpenStyle(strAsString)
strMode=str
cmdNew.Enabled=False
cmdFind.Enabled=False
cmdChang.Enabled=False
cmdDelete.Enabled=False
cmdSave.Enabled=False
Male.Enabled=False
Female.Enabled=False
txtBirthday.Enabled=False
txtDept.Enabled=False
cbxMajor.Enabled=False
Ifstr=“F”Then
cmdFind.Enabled=Ture
ElseIfstr=“I”Then
cmdNew.Enabled=Ture
cmdSave.Enabled=Ture
txtSno.Enabled=False
txtSname.Enabled=False
ElseIfstr=“U”Then
cmdFind.Enable=Ture
EndIf
EndSub
(2)单击“查询”按钮时触发的事件
PrivateSubcmdFind_Click()’查询
strNo=Trim(txtSno.Text)
IfTrim(txtSno.Text)=“”AndTrim(txtSname.Text)=””Then
CallMsgBox(“请输入学生学号或姓名!
”,vbOKOnly,”提示”)
ExitSub
EndIf
SetSqlRS=ExecSQL(“selectStudent,*,Major.MnamefromStudentleftouterjoinMajoron
Student.Mno=Major.MnowhereStudent.Sno=‘”+Trim(txtSno.Text)+”’orStudent.Sname=‘”+Trim(txtSname.Text)+”’”)
IfNotSqlRS.EOFThen
txtSno.Text=Trim(SqlRS(“Sno”))
strNo=Trim(SqlRS(“Sno”))
txtSname.Text=Trim(SqlRS(“Sname”))
IfSqlRs(“Ssex”)=“男”Then
Male.Value=Ture
ElseIfSqlRS(“Ssex”)=“女”Then
Female.Value=Ture
Else
Male.Value=False
Female.Value=False
EndIf
txtBirthday.Text=SqlRS(“Sbirthday”)
txtDept.Text=Trim(SqlRS(“Sdept”))
IfSqlRS(“Mname”)<>””ThencbxMajor.Text=Trim(SqlRS(“Mname”))
Else
SqlRS.Close
CallMsgBox(“没有此学生信息!
”,vbOKOnly,”提示”)
ExitSub
EndIf
SqlRS.Close
IfstrMode=“U”Then
cmdChang.Enabled=Ture
cmdDelete.Enabled=Ture
cmdSave.Enabled=Ture
EndIf
EndSub
(3)单击“修改”按钮时触发的事件
PrivateSubcmdChang_Click()’更新
IfstrMode=“U”Then
Male.Enabled=Ture
Female.Enabled=Ture
txtBirthday.Enabled=Ture
txtDept.Enabled=Ture
cbxMajor.Enabled=Ture
cmdSave.Enabled=Ture
EndIf
EndSub
(4)单击“删除”按钮时出发的事件
PrivateSubcmdDelete_Click()’删除
IfvbYes=MsgBox(“是否确认删除学号:
””+strNo+””的学生信息?
”,vbYesNo,”询问”)Then
SqlConn.BeginTrans
SqlCmd.CommandText=“deletefromSCwhereSno=‘”+strNo+“’”
SqlCmd.Execute
SqlConn.CommitTrans
txtSno.Text=“”
txtSname.Text=“”
Male.Value=False
Female.Value=False
txtBirthday.Text=“”
txtDept.Text=“”
cbxMajor.Text=“”
cmdNew.Enabled=False
cmdFind.Enabled=False
cmdChang.Enabled=False
cmdDelete.Enabled=False
cmdSave.Enabled=False
Male.Enabled=False
Female.Enabled=False
txtBirthday.Enabled=False
txtDept.Enabled=False
cbxMajor.Enabled=False
txtSno.Enabled=False
EndIf
EndSub
4.学生成绩的录入
主要实现代码:
(1)窗口加载时执行代码,完成专业和课程名下拉列表框赋值
PrivateSubForm_Load()
SetSqlRS=ExecSQL(“selectMnamefromMajororderbyMno”)
WhileNotSqlRS.EOF
cbxMajor.AddItem(SqlRS(“Mname”))
SqlRS.MoveNext
Wend
SqlRS.Close
SetSqlRS=ExecSQL(“selectCnamefromCourseorderbyCno”)
WhileNotSqlRS.EOF
cbxCourse.AddItem(SqlRS(“Cname”))
SqlRs.MoveNext
Wend
SqlRS.Close
EndSub
(2)单击“查询”按钮时触发的事件
PrivateSubcmdFind_Click()
DimstrSQL,sTmpAsString
DimstrSno,sSnoAsString
DimstrSname,sSnameAsString
DimstrMname,sMnameAsString
strSno=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计