《高级程序设计》课程设计报告.docx
《《高级程序设计》课程设计报告.docx》由会员分享,可在线阅读,更多相关《《高级程序设计》课程设计报告.docx(15页珍藏版)》请在冰豆网上搜索。
《高级程序设计》课程设计报告
《高级程序设计》课程设计报告
本课程设计报告包括一下几个部分:
一:
课程设计目的
二:
课程设计要求
三:
软件功能分析
四:
数据库设计用到的主要的代码
五:
程序的设计用到的主要的存储过程
六:
程序的设计用到的主要的代码
七:
课程设计的心得体会
一:
课程设计目的
通过课程设计使本学期学习的知识掌握的更加的牢固,并且能熟练的应用自己在过去的一年当中学习过的VISUALBASIC6.0和SQLSERVER2000数据库管理与开发的知识进行实际当中的项目的开发,进一步的掌握可视化数据库编程的基本思想和方法。
在实践当中更加的灵活的运用所学知识。
锻炼自己的分析问题,解决问题的能力,为将来自己能够开发大型的软件奠定基础。
二:
课程设计要求
1:
上机前做好充分准备,包括程序模块图,程序界面方式,源程序清单,调试步骤,测试方法,运行结果的分析等。
2:
课程设计具体要求如下:
(1)设计说明:
用来说明程序模块功能、结构、主要包括程序名、功能、原理计算说明,主要用于符号说明。
(2)调试说明:
便于学生总结经验,提高编程及调试能力,包括调试情况,如对数据库操作时遇到的问题及解决方法,对程序设计技巧的总结及分析等。
对运行结果的分析、课程设计心得体会等。
(3)使用说明:
程序提供给用户时必须做出的说明,使用方法、操作步骤等。
三:
软件功能分析
为了提高对学生档案的管理,设计合理有效的学生档案管理系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少不必要的时间和人力等方面的工作量。
系统开发的总体任务是使学生档案当中的各个表更加的规范,更加的系统,更加的条理清楚。
本次课程设计所要求达到的功能分析具体如下:
1:
学籍的各项基本的信息的输入,如学生的高考用的考试号,在学校的所在的班级,所学的基本的课程信息,考试成绩等。
2:
学生的基本的信息的查询,如学生的学号,姓名,班级,所属的专业,学习的基本的课程,学生的考试成绩。
3:
学生信息的修改。
4:
学校的专业和所对应课程的输入。
5:
学校的专业和所对应课程的查询。
6:
学校的专业和所对应课程的修改。
7:
对不同的用户的权限的设置使不同的用户能实现不同的功能,进行在系统管理员所赋予的权限的范围内进行操作。
8:
报表统计模块:
实现数据的统计、打印等功能。
四:
数据库设计用到的主要的代码
--创建数据库
usemaster
ifexists(selectnamefromsysdatabaseswherename='学生档案管理')
dropdatabase学生档案管理
createdatabase学生档案管理
onprimary
(name=studentgl,
filename='d:
\学生档案管理\student_gl.mdf',
size=1,
maxsize=10,
filegrowth=10%)
logon
(name=studenlog,
filename='d:
\学生档案管理\student_log.ldf',
size=1,
maxsize=10,
filegrowth=10%)
--创建用户表
go
use学生档案管理
ifexists(selectnamefromsysobjectswherename='用户表'andtype='U')
droptable用户表
createtable用户表
(用户名varchar(20)notnull,
密码varchar(20),
级别varchar(5)notnulldefault1)
--插入一个数据记录
insert用户表values('系统管理员','0','0')
use学生档案管理
--创建数据表
ifexists(selectnamefromsysobjectswherename='数据表'andtype='U')
droptable数据表
createtable数据表
(学号varchar(20)notnull,
姓名varchar(20)notnull,
班级varchar(20)notnull,
性别varchar(5)notnull,
出生日期datetimenotnull,
政治面貌varchar(5)null,
专业名称varchar(20)null,
家庭地址varchar(20)null)
--创建成绩表
ifexists(selectnamefromsysobjectswherename='成绩表'andtype='U')
droptable成绩表
createtable成绩表
(学号varchar(20)notnull,
姓名varchar(20)notnull,
班级varchar(20)notnull,
专业名称varchar(20)notnull,
科目名称varchar(20)null,
成绩intnull)
--创建班级表
ifexists(selectnamefromsysobjectswherename='班级表'andtype='U')
droptable班级表
createtable班级表
(班级名称varchar(20)notnull,
专业名称varchar(20)notnull)
--创建科目表
ifexists(selectnamefromsysobjectswherename='科目表'andtype='U')
droptable科目表
createtable科目表
(科目名称varchar(20)notnull,
专业名称varchar(20)notnull)
--创建专业表
ifexists(selectnamefromsysobjectswherename='专业表'andtype='U')
droptable专业表
createtable专业表
(专业名称varchar(20)notnull)
五:
程序的设计用到的主要的存储过程
use学生档案管理
--按学号和姓名查询
ifexists(selectnamefromsysobjectswherename='numnameselect'andtype='p')
dropprocedurenumnameselect
go
createprocedurenumnameselect@numasvarchar(20),@nameasvarchar(20)
as
ifexists(selectnamefromsysobjectswherename='查询_1'andtype='U')
droptable查询_1
select*into查询_1from数据表where@numin(学号,'')and@namein(姓名,'')
go
--按综合条件查询
ifexists(selectnamefromsysobjectswherename='zongheselect'andtype='p')
dropprocedurezongheselect
go
createprocedurezongheselect@nameasvarchar(20),@sexasvarchar(20),@zhuanyeasvarchar(20),@banjiasvarchar(20)
as
ifexists(selectnamefromsysobjectswherename='查询_2'andtype='U')
droptable查询_2
select*into查询_2from数据表where@namein(姓名,'')and@banjiin(班级,'')and@zhuanyein(专业名称,'')and@sexin(性别,'')
go
--按姓名和班级查询
ifexists(selectnamefromsysobjectswherename='namebanjicx'andtype='p')
dropprocedurenamebanjicx
go
createprocedurenamebanjicx@nameasvarchar(20),@banjiasvarchar(20)
as
ifexists(selectnamefromsysobjectswherename='查询_8'andtype='U')
droptable查询_8
select*into查询_8from成绩表where@namein(姓名,'')and@banjiin(班级,'')
go
--成绩范围查询
ifexists(selectnamefromsysobjectswherename='fanweicx'andtype='p')
dropprocedurefanweicx
go
createprocedurefanweicx@kemuasvarchar(20),@banjiasvarchar(20),@beginscoreasint,@endscoreasint
as
ifexists(selectnamefromsysobjectswherename='查询_9'andtype='U')
droptable查询_9
select*into查询_9from成绩表where@kemuin(科目名称,'')and@banjiin(班级,'')and成绩>=@beginscoreand成绩<=@endscore
go
--printscore窗体的存储过程
ifexists(selectnamefromsysobjectswherename='fanweiprint'andtype='p')
dropprocedurefanweiprint
go
createprocedurefanweiprint@kemuasvarchar(20),@banjiasvarchar(20),@beginscoreasint,@endscoreasint
as
ifexists(selectnamefromsysobjectswherename='查询_10'andtype='U')
droptable查询_10
select*into查询_10from成绩表where@kemu=科目名称and@banji=班级and成绩>=@beginscoreand成绩<=@endscore
go
六:
程序的设计用到的主要的代码
软件的主窗体:
登陆窗体及其主要的代码:
ConstmaxlogintimesAsInteger=3
DimconnAsADODB.Connection
DimrsAsADODB.Recordset
PrivateSubcmdok_Click()
DimstrSQlAsString
DimstrDSNAsString
StaticintlogintimesAsSingle
'登陆的最大的次数
intlogintimes=intlogintimes+1
strSQl="select*from用户表"
strDSN="PROVIDER=MSDASQL;driver={SQLServer};server=(local);uid=;pwd=;database=学生档案管理;"
IfCombo1.Text=""Then
MsgBox"用户名不能为空,请输入用户名!
",vbOKOnly+vbCritical,"信息提示"
ExitSub
EndIf
'****************连接数据库并且返回值********************
Setconn=NewADODB.Connection
Setrs=NewADODB.Recordset
conn.CursorLocation=adUseClient
conn.OpenstrDSN
'adOpenStatic使用静态的游标打开记录集
'adLockPessimistic指定在编辑一个记录的时候立即锁定它
rs.OpenstrSQl,conn,adOpenStatic,adLockPessimistic
rs.MoveFirst
rs.Find"用户名='"&Combo1.Text&"'"
IfTrim(Text2.Text)<>Trim(rs.Fields("密码"))Then
Ifintlogintimes>3Then
MsgBox"你已经超过了允许的登录验证次数!
"&vbCr&"应用程序将结束",vbCritical,"登录验证"
End
EndIf
MsgBox"用户密码不对,请重新输入!
",vbOKOnly+vbCritical,"信息提示"
Text2.SetFocus
Else
username=Combo1.Text
userpassword=Text2.Text
userjibie=Trim(rs.Fields("级别"))
MsgBox"欢迎使用学生档案管理系统",vbOKOnly+vbInformation,"登录成功!
"
UnloadMe
sysmain.Show
EndIf
EndSub
PrivateSubcmdquit_Click()UnloadMe
EndSub
PrivateSubForm_Load()
DimstrSQlAsString
DimstrDSNAsString
Combo1.Text=""
strSQl="select用户名from用户表"
strDSN="PROVIDER=MSDASQL;driver={SQLServer};server=(local);uid=;pwd=;database=学生档案管理;"
Setconn=NewADODB.Connection
Setrs=NewADODB.Recordset
conn.CursorLocation=adUseClient
conn.OpenstrDSN
rs.OpenstrSQl,conn,adOpenStatic,adLockOptimistic
Ifrs.RecordCount>0Then
rs.MoveFirst
WhileNotrs.EOF
Combo1.AddItem(rs.Fields("用户名"))
rs.MoveNext
Wend
EndIf
Setrs=Nothing
Setconn=Nothing
EndSub
在数据库编程的编程中,查询是非常重要的。
如:
DimconnAsADODB.Connection
Dimconn_zhuanyeAsADODB.Connection
Dimconn_banjiAsADODB.Connection
DimrsAsADODB.Recordset
Dimrs_zhuanyeAsADODB.Recordset
Dimrs_banjiAsADODB.Recordset
PrivateSubCommand1_Click()
DimstrDSNAsString
strDSN="PROVIDER=MSDASQL;driver={SQLServer};server=(local);uid=;pwd=;database=学生档案管理;"
Setconn=NewADODB.Connection
Setrs=NewADODB.Recordset
conn.CursorLocation=adUseClient
conn.OpenstrDSN
rs.Open"zongheselect('"&Text1.Text&"','"&Combo1.Text&"','"&Combo3.Text&"','"&Combo2.Text&"')",conn,adOpenStatic,adLockOptimistic
rs.Open"select*from查询_2",conn,adOpenStatic,adLockOptimistic
Ifrs.RecordCount=0Then
MsgBox"表中不存在满足条件的记录,请重新输入条件!
",vbOKOnly+vbCritical,"信息提示"
dataselect.Show
EndIf
SetDataGrid1.DataSource=rs
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
数据库的数据的备份和还原在数据库的操作中是非常重要的。
如:
PrivateSubCommand1_Click()
DimstrDSNAsString
DimconnAsADODB.Connection
Setconn=NewADODB.Connection
DimrsAsADODB.Recordset
Setrs=NewADODB.Recordset
strDSN="PROVIDER=MSDASQL;driver={SQLServer};server=(local);uid=;pwd=;database=学生档案管理;"
conn.ConnectionString=strDSN
conn.CursorLocation=adUseClient
conn.Open
OnErrorGoTonext1
IfInStr(1,Text2.Text,".bak")=0Then
Text2.Text=Trim(Text2.Text)&".bak"
EndIf
str1="backupdatabase学生档案管理todisk='"&Trim(Text1.Text)&"\"&Trim(Text2.Text)&"'withinit"
conn.Executestr1
MsgBox"数据备份成功!
",vbOKOnly+vbInformation
UnloadMe
ExitSub
next1:
MsgBoxErr.Description,vbOKOnly+vbCritical,"操作失败"
Setconn=Nothing
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
PrivateSubDir1_Change()
Text1.Text=Dir1.Path
File1.Path=Dir1.Path
Text2.Text=""
EndSub
PrivateSubDrive1_Change()
Dir1.Path=Drive1.Drive
Text1.Text=Drive1.Drive
Text2.Text=""
EndSub
PrivateSubFile1_Click()
Text2.Text=File1.FileName
EndSub
PrivateSubForm_Load()
Dir1.Path=App.Path
Drive1.Drive=App.Path
Me.Top=0
Me.Left=0
EndSub
七:
课程设计的心得体会
(一):
通过为期一周的课程设计,对本学习的高级程序设计有了更加深刻的体会,也使自己的信心有了非常大的提高,在实践当中更加牢固的掌握了VISUALBASIC6.0和SQLSERVER2000。
(二):
这次课程设计也存在非常多的不足和缺陷。
由于在学期刚开始的时候,在建立数据库的时候在表的结构上的设计的失误,使自己的软件在编写中遇到了意想不到的困难,前期的准备工作没有做好,导致了不必要的麻烦!
(三):
缺点:
由于时间非常的紧张,有许多原来的想法没有实现,非常的可惜,例如,原来打算把查询出的数据进行图标形式的展示,使学生的分数段的显示能更加的明了,成绩的汇总统计的,各个分数段的汇总统计,等等。
非常多的以前设想的功能都泡汤了,留下了不小的遗憾,计划在寒假时完成其余的工作,使自己的软件的功能更加的强大实用,运行的更加可靠。