学分管理系统--数据库课程设计报告Word文件下载.docx
《学分管理系统--数据库课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《学分管理系统--数据库课程设计报告Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
![学分管理系统--数据库课程设计报告Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/010e1c45-2c7a-4858-9e90-77db832d1da7/010e1c45-2c7a-4858-9e90-77db832d1da71.gif)
运用关系型数据库管理系统,实现学生成绩管理系统开发。
具体功能如下:
1、学生基本信息设置:
包括专业、班级、姓名、学号等;
2、学生课程名称和成绩录入;
3、学生基本信息和课程信息的查询及增删改;
4、成绩排名及相应绩点分计算。
三、需求分析
学生基本信息:
包括学生的姓名、学号、性别、系别、班级,可以方便学生信息的查询和更新;
课程基本信息:
包括课程代号、课程名、课程种类、学分,可以方便课程信息的查询与更新;
成绩基本信息:
包括学生的学号、学生选取的课程号、学生的成绩及学分,这可以提高查询效率。
4、概要设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可提高数据存储的效率,保证数据的完整和一致。
同时,合理的数据库结构也将有利于程序的实现。
数据库需求分析
用户的需求具体体现在各种信息的提供、保证、更新和查询,这就要求数据库结构能够充分满足各种信息的输出和输入。
针对一般学生信息管理系统的要求,通过对学生学习过程的内容和数据流程分析,设计如下的数据项和数据结构:
1、学生基本信息包括的数据项有:
学生学号、学生姓名、性别、班级、所在系。
课程名
学分
2、学生选课信息包括数据项有:
学生学号、课程号、考试分数、学分。
3、课程信息有:
课程号、课程名、课程类别。
根据上面的数据结构、数据项和数据流程,进行数据库设计。
5、详细设计
学号
成绩
选取
系别
学生
5.1、E-R图:
姓名
性别
班级
课程号
课程类型
课程
5.2、建立数据库:
学生表:
课程表:
学生选课表:
Sql建表命令:
createtable课程表(
课程号nchar(20)notnullprimarykey,
课程名nchar(20),
学分float,
课程类型char(10)
)
go
createtable学生表(
学号nchar(20)notnullprimarykey,
姓名nchar(5)notnull,
年龄int,
性别nchar
(2)check(性别in('
男'
'
女'
)),
所在系char(20)
createtable学生学分表(课程号nchar(20)notnull,学号nchar(20)notnull,成绩int,
constraints_c_pkprimarykey(学号,课程号)
Go
建立触发器保证完整性:
createtrigger选课插入onscforinsert
asif(selectcount(*)froms,inserted,cwheres.学号=inserted.学号andc.课程号
=inserted.课程号)=0rollbacktransactionGo
createtrigger学生删除onsfordelete
asif(selectcount(*)fromsc,deletedwheresc.学号=deleted.学号)>
0rollbacktransaction
else
deletescfromsc,deletedwheresc.学号=deleted.学号Go
建立一个视图方便查询:
createviewshow
asselects.学号,班级,姓名,c.课程号,课程名,sc.学分,课程类型froms,c,sc
wheres.学号=sc.学号andc.课程号=sc.课程号
5.3、利用Visualbasic6.0设计程序:
定义模块:
登陆界面:
PrivateSubcmdCancel_Click()End
EndSub
PrivateSubcmdOK_Click()
Ifyh.Text="
"
ThenMsgBox("
请输入用户名"
)Ifmm.Text="
请输入密码"
)Ifyh.Text="
admin"
Andmm.Text="
123"
ThenMDIForm1.Show
Me.Hide
Else:
MsgBox("
用户名或密码错误"
)EndIf
学生信息管理界面
Subscls()
Fori=0Tors.Fields.Count-1Text1(i).Text="
NextEndSub
Subdisprecord()
Fori=0Tors.Fields.Count-1Text1(i).Text=rs.Fields(i).ValueNext
PrivateSubCommand1_Click()rs.MovePrevious
Ifrs.BOFThenrs.MoveFirst
MsgBox("
已经移到第一个"
EndIfdisprecordEndSub
PrivateSubCommand2_Click()rs.MoveNext
Ifrs.EOFThenrs.MoveLast
已经移到最后一个"
EndIfdisprecord
PrivateSubCommand3_Click()
DimsqlAsString
sql="
insertintosvalues('
&
Text1(0)&
"
'
Text1
(1)&
Text1
(2)&
&
Text1(3)&
Text1(4)&
Text1(5)&
)"
IfText1(0).Text=rs.Fields(0).ValueAndText1(0)="
学号错误,请重新输入"
Text1(0).Text="
Elsecn.Executesql
添加成功"
)rs.Close
rs.Open"
select*froms"
cn,adOpenDynamic,adLockOptimisticSetDataGrid1.DataSource=rs
disprecordEndIf
PrivateSubCommand4_Click()Fori=0Tors.Fields.Count-1Text1(i).Text="
PrivateSubCommand5_Click()
deletefromswhere学号="
Text1(0).Textcn.Executesql
删除成功"
disprecordEndSub
PrivateSubForm_Load()
DimconstringAsString
constring="
Provider=SQLOLEDB.1;
IntegratedSecurity=SSPI;
PersistSecurityInfo=False;
UserID=sa;
InitialCatalog=学分管理系统;
DataSource=127.0.0.1"
Setcn=NewADODB.Connectioncn.Openconstring
Setrs=NewADODB.Recordset
cn.CursorLocation=adUseClient
录入学分信息:
PrivateSubCommand1_Click()DimsqlAsString
IfText1(0).Text="
Thenmagbox("
请输入完整信息"
Else
insertintoscvalues('
cn.ExecutesqlMsgBox("
录入成功"
select*fromsc"
cn,adOpenDynamic,adLockOptimistic
SetDataGrid1.DataSource=rsEndIf
按学号查询学生学分信息:
PrivateSubCommand1_Click()
Setrs=NewADODB.Recordsetcn.CursorLocation=adUseClient
select学号,姓名,课程名,课程类型,学分fromshowwhere学号="
Text1.Text,cn,adOpenDynamic,adLockOptimistic
SetDataGrid1.DataSource=rsEndSub
按照某类课程的学分高低进行排序:
select姓名,sum(学分)as学分fromshowwhere课程类型='
Text1.Text&
groupby姓名orderby学分asc"
rs.Close
rs.Opensql,cn,adOpenDynamic,adLockOptimisticSetDataGrid1.DataSource=rs
给定学号修改学分信息:
PrivateSubCommand1_Click()IfText1.Text="
Then
请输入要修改的学号"
)Else
DimsqlAsStringDimsql1AsString
updatescset学分="
Text3&
where学号="
Text1&
and课程号="
Text2
cn.Executesql
sql1="
updatescset成绩="
Text4&
cn.Executesql1MsgBox("
修改成功"
EndIfEndSub
判断学生是否能毕业:
6、调试分析
登陆:
主界面:
主界面为MDI界面,设置为父界面,以后的都为子界面。
学生信息管理:
上移到顶时会弹出信息框“已经移到第一个”,下移到最后一个时会弹出信息框
“已经移到最后一个”
添加学生信息:
如果学号有重复会弹出信息框“学号重复,请重新输入”,同时清空学号框
给定班号,显示该班所有学生的学分完成情况:
给定学号,修改该学生的学分信息:
给定学号,对该学生能否毕业进行确定:
七、结果分析、结论与体会:
在这次课程设计中,我遇到的困难很多,在解决它们的同时我又学到了很多,受益匪浅,特别是如何分析、建立、开发一个系统。
在一个系统开发的过程中编码不是重要的,重要的是分析系统、建立起系统模型。
在分析一个系统前,分析人员必须要对将要开发的系统所涉及到的各方面知识有一个认识,然后将系统的模型建立起来。
在程序编写中,我认识到软件要有简便的界面,良好的程序风格。
拥有这
些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。
掌握了SQLServer的功能与特点以及相应的SQL语言,让我们可以很好地运用触发器和存储过程等模块,去解决一些生活中的实际问题,而不光是纸上谈兵;
同时,可以使我们对一个完整数据库系统的设计过程有了更深入的了解和体会
八、附录或参考文献
[1]《学用VisualBasic编程》潭浩 西安电子科技大学出版社
[2]《数据库系统原理及应用教程》苗雪兰刘瑞新著 机械工业出版社
[3]《SQLServer数据库开发入门与范例解析》夏邦贵著北京机械工业出版社
[4]《SQLServer2005应用开发技术指南》彭东著北京清华大学出版社
[5]《VisualBasic案例教程》 艾菊梅宋文琳著 电子工业出版
社
[6]《面向对象程序设计系列教材》 龚沛曾著 高等教育出版社
[7]《VisualBasic6.0数据库开发与专业应用》敬铮著 国防工业出版社
[8]《VisualBasic6.0数据库程序设计高手》温贤发著 科学出版社