软件工程课程设计论文.docx
《软件工程课程设计论文.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计论文.docx(33页珍藏版)》请在冰点文库上搜索。
软件工程课程设计论文
湖南农业大学课程论文
学院:
东方科技学院班级:
2010级信工1班
姓名:
唐南银学号:
201041919107
课程论文题目:
学生信息管理系统
课程名称:
软件工程导论
指导老师:
曹晓兰
评阅成绩:
评阅意见:
成绩评定教师签名:
日期:
年月日
学生信息管理系统
学生:
唐南银
(东方科技学院2010级信工1班,学号201041919107)
1引言
1.1课题背景
随着教育事业的不断发展,学校的规模不断扩大,学生数量及其信息量的急剧增加,有关学生的各种信息管理也随之展开,学生信息管理系统应运而生了,它可用来管理学生信息与提高系统管理工作的效率。
学生信息管理系统把Eclipse(前台开发)与SQL数据库(后台管理)有机地结合,并运用SWING等相关技术,完成学生信息的规范管理、科学统计和快速查询,从而可大大减少该管理上的工作量。
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据库存储的效率,保证数据的完整性和一致性。
同时,合理的数据结构也将有利于程序的顺利实现。
1.2系统开发关键技术介绍
本系统采用的是Eclipse开发工具做为开发系统程序,采用SQLsever数据库访问技术完成对数据库信息的规范管理和统计查询。
SQLsever使用更加简单灵活的对象模型,适用于各种程序设计语言。
SQLsever提供执行以下操作方式:
(1)连接到数据源。
(2)指定访问数据源的命令,可以在命令中指定参数。
(3)执行命令,例如一个SELECT语句。
(4)在适当情况下,可以把缓存行的更改内容写回数据库中,更新数据源。
(5)提供常规方法检测错误,错误通常由建立连接或执行命令造成,涉及到SQL的error对象。
2系统分析
2.1总体设计思想及工作流程
用户必须通过已经注册的帐号和密码才能进行对该系统的管理与应用,否则在登录系统前要进行新账号的注册;管理员通过输入密码和帐号可以对数据库的数据进行各种操作,而普通用户仅仅可以进行一部分的操作;用户根据自己的实际情况选择相应的功能来提取自己所需信息。
(1)学生信息管理系统的功能为显示主要操作页面,通过密码验证登陆界面,档案信息处理功能。
通过密码验证登陆,可实现安全登录,方便可靠。
学生信息处理功能包括输入学生信息,显示学生的档案信息,学生档案信息条件查询(分为:
按学生姓名进行查询,按学生学号进行查询),更新学生档案信息。
(2)学生信息管理系统的功能模块有:
系统登陆界面,美观大方,按enter键进入密码验证登陆界面,输入正确密码登陆主菜单选择框架界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。
1.输入学生档案信息。
2.显示学生的档案信息
3.学生档案信息条件查询
4.更新学生档案信息。
0.退出,谢谢使用!
!
!
程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。
2.2业务需求
(1)安全性:
用户必须通过帐号和密码才能进行对该系统的管理。
(2)权限分配:
超级管理员通过输入密码和帐号可以对数据库的数据进行各种操作,而普通用户仅仅可以进行一部分的操作。
(3)易操作性:
可以快速进行查询操作,进行数据的汇总。
2.3数据流图
用户的需求具体体现在各种信息的提供、保存、更新、查询和统计上,这就要求数据库结构应充分满足各种信息的输入和输出。
系统应定义数据结构、收集基本数据以及设置数据处理的流程,组成一份详尽的数据字典,为以后的具体设计打下基础与伏笔。
在仔细分析、调查有关学生信息管理需要的基础上,得到了本系统的流程图:
图3.2总数据流图
图3.3零层数据流图
图3.3一层数据流图
2.2总体设计流程图
图2 总体设计流程图
该流程图为此次学生信息查询系统的总体流程图,用户进入界面以后可以看到登陆密码界面,密码输入正确进入主菜单选择框架界面,1为输入学生信息档案,2为显示学生档案,3为学生信息档案查询,4为更新学生档案,0为退出系统。
用户可以根据自己的需求方便快捷的做出自己的选择。
密码登陆函数流程图:
该函数为密码登陆函数模块,当输入的密码不正确的时候,系统会提示“密码输入错误,请重新输入”,直到输入正确密码为止。
选择框架函数流程图:
进入学生档案管理系统时显示程序名称和选择框架主菜单,提示用户进行选择,完成相应任务。
此代码被main()函数调用。
输入信息函数流程图:
输入学生信息函数模块,用户可以根据提示的信息来进行每一步的输入操作,当输入不当时,系统会自动提示,并让用户进行正确的操作。
在此系统中,要求用户输入的只有字符型和数值型数据,设计了相应的函数来进行数据校验工作,保证数据输入的准确性。
显示信息流程图:
当用户进入查询信息模块时,系统会显示内部存储的内容。
查询信息流程图:
当用户执行此查询任务时,系统会提醒用户进行查询字段的选择,即按学号或姓名进行查询。
若此学生档案信息记录存在,则会显示该省的档案信息。
此函数完成了节点定位的功能。
更新信息流程图:
在更新学生档案信息的操作中,系统会先按输入的学号查询到该生档案信息记录,然后按顺序填入要修改的学生信息。
3系统设计
3.1系统功能结构图
设计数据库系统时应充分满足各种信息的输入和输出。
据此,结学生信息管理系统所需完成的主体任务。
学生信息管理系统主要任务如下:
(1)基本信息的输入。
包括学籍(学生基本)信息,班能、课程和成绩等住处的输入。
(2)基本信息的修改。
包括学籍信息、班级、课程和成绩等信息的修改。
(3)基本信息的查询。
包括学籍信息和成绩信息等的查询。
(4)年级信息及班级信息的设置等。
(5)学校基本课程信息的输入、修改和设置。
基于需求分析及主要任务的表述,可对上述各项功能按照结构化程序设计的要求进行集中、分层结构化,自上而下逐层设置得到系统功能模块结构图:
图3.1系统功能结构图
4系统数据库设计
4.1系统E-R图
概念结构设计就是E-R方法的分析与设计,概念结构设计是整个数据库设计的关键。
在此,将使用实体—联系(E-R)模型来描述系统的概念结构,同时设计出能够满足用户需求的的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
这也实体包括各种具体的实际信息,通过相互之间的作用形成数据的流动。
本程序根据上面的设计规划出的实体有:
学籍实体、班级实体、年级实体、课程实体与成绩实体,学生信息管理系统数据库E-R模型,如下图所示:
图4.1学生信息管理系统E-R模型图
4.2数据表的创建
根据系统特点,由数据模型利用Oracle10g进行数据库的详细设计,学生信息管理系统数据库中各个表格的设计结果如下:
表1:
学籍信息表
表2:
学生成绩信息表
表3:
班级信息表
表4:
年级课程设置表
表5:
课程基本信息表
表6:
系统用户表
4.3存储过程和触发器设计
为了提高该系统的运行环境,后台有关数据的操作部分使用了存储过程和触发器。
1.创建的存储过程进行添加班级信息,代码如下:
createorreplaceprocedureinsertclass
(p_class_noinclass_no%type,
p_gradeingrade%type,
p_directorindirector%type,
p_classroom_noinclassroom_no%type
)
isv_countnumber;
begin
selectcount(*)intov_countfromclass_infowhereclass_no=p_class_no;
ifv_count=0then
insertintoclass_infovalues(p_class_no,p_grade,p_director,p_classroom_no);
else
dbms_output.put_line('班号已经存在,请重新输入班号');
endif;
endinsertclass;
2.存储过程的调用代码:
PrivateSubCommand1_Click()
DimsqlconAsNewADODB.Connection
DimmrcAsADODB.Recordset
DimMsgTextAsString
DimtxtSQLAsString
DimcmdAsNewADODB.Command
DimclassNO,grad,DIRECTO,CLASSROOMNO
sqlcon.Open"Provider=OraOLEDB.Oracle.1;Password=1234;PersistSecurityInfo=True;UserID=CC;DataSource=orcl"
IfNotTesttxt(txtClassno.Text)Then
MsgBox"请输入班号!
",vbOKOnly+vbExclamation,"警告"
txtClassno.SetFocus
ExitSub
EndIf
IfNotTesttxt(comboGrade.Text)Then
MsgBox"请选择年级!
",vbOKOnly+vbExclamation,"警告"
comboGrade.SetFocus
ExitSub
EndIf
IfNotTesttxt(txtDirector.Text)Then
MsgBox"请输入班主任姓名!
",vbOKOnly+vbExclamation,"警告"
txtDirector.SetFocus
ExitSub
EndIf
IfNotTesttxt(txtClassroom.Text)Then
MsgBox"请输入教室房间号!
",vbOKOnly+vbExclamation,"警告"
txtClassroom.SetFocus
ExitSub
EndIf
IfNotIsNumeric(Trim(txtClassno.Text))Then
MsgBox"请输入数字!
",vbOKOnly+vbExclamation,"警告"
ExitSub
txtClassno.SetFocus
EndIf
cmd.ActiveConnection=sqlcon
cmd.CommandText="insertclass"
cmd.CommandType=adCmdStoredProc
SetclassNO=cmd.CreateParameter("@CLASS_NO",adVarChar,adParamInput,50)
cmd.Parameters.Append(classNO)
Setgrad=cmd.CreateParameter("@GRADE",adVarChar,adParamInput,50)
cmd.Parameters.Append(grad)
SetDIRECTO=cmd.CreateParameter("@DIRECTOR",adVarChar,adParamInput,50)
cmd.Parameters.Append(DIRECTO)
SetCLASSROOMNO=cmd.CreateParameter("@CLASSROOM_NO",adVarChar,adParamInput,50)
cmd.Parameters.Append(CLASSROOMNO)
cmd("@CLASS_NO")=txtClassno.Text
cmd("@GRADE")=comboGrade.Text
cmd("@DIRECTOR")=txtDirector.Text
cmd("@CLASSROOM_NO")=txtClassroom.Text
Setmrc=cmd.Execute
cmd.Parameters.Delete("@CLASS_NO")
cmd.Parameters.Delete("@GRADE")
cmd.Parameters.Delete("@DIRECTOR")
cmd.Parameters.Delete("@CLASSROOM_NO")
MsgBox"添加班级信息成功!
",vbOKOnly+vbExclamation,"添加班级信息"
EndSub
3.创建触发器:
createorreplacetriggercourse_info_del
beforedeleteoncourse_info
foreachrow
declare
--localvariableshere
begin
deletefromgradecourse_info;
end;
4.4数据库的连接
配置文件连接数据库的代码:
ConnectString="Provider=OraOLEDB.Oracle.1;Password=1234;PersistSecurityInfo=True;UserID=CC;DataSource=orcl"
5系统实现
根据整个系统的总体设计以及相关子系统的相关模块功能的设计,我们进行了系统的软件开发。
详细设计和功能展示如下:
5.1系统实现工具与支持平台
(1)用户界面
本系统采用MicrosoftVisualBasic6.0设计,用户交互界面采用的是基于Windows的窗口界面。
(2)开发和运行环境
工具软件:
VisualBasic
系统软件:
Oracle10g
开发环境:
WindowsXPProfessional
运行环境:
Windows98\NT\2000\XP\2003
硬件配置:
PentiumⅢ以上CPU、256MB以上的内存、4GB以上的硬盘空间
5.2公用模块的设计
以下为系统主控窗口的界面截图:
图5.1主控窗口
在系统中创建公用模块,存放在整个工程项目中会调用到的函数、变量等。
代码如下:
PublicfMainFormAsfrmMain
PublicUserNameAsString
SubMain()
DimfLoginAsNewfrmLogin
fLogin.ShowvbModal
IfNotfLogin.OKThen
'LoginFailedsoexitapp
End
EndIf
UnloadfLogin
SetfMainForm=NewfrmMain
fMainForm.Show
EndSub
PublicFunctionConnectString()_
AsString
'returnsaDBConnectString
ConnectString="Provider=OraOLEDB.Oracle.1;Password=1234;PersistSecurityInfo=True;UserID=CC;DataSource=orcl"
EndFunction
PublicFunctionExecuteSQL(ByValSQL_
AsString,MsgStringAsString)_
AsADODB.Recordset
'executesSQLandreturnsRecordset
DimcnnAsADODB.Connection
DimrstAsADODB.Recordset
DimsTokens()AsString
OnErrorGoToExecuteSQL_Error
sTokens=Split(SQL)
Setcnn=NewADODB.Connection
cnn.OpenConnectString
IfInStr("INSERT,DELETE,UPDATE",_
UCase$(sTokens(0)))Then
cnn.ExecuteSQL
MsgString=sTokens(0)&_
"querysuccessful"
Else
Setrst=NewADODB.Recordset
rst.CursorLocation=adUseClient
rst.OpenTrim$(SQL),cnn,_
adOpenKeyset,_
adLockOptimistic
'rst.MoveLast'getRecordCount
SetExecuteSQL=rst
MsgString="查询到"&rst.RecordCount&_
"条记录"
EndIf
ExecuteSQL_Exit:
Setrst=Nothing
Setcnn=Nothing
ExitFunction
ExecuteSQL_Error:
MsgString="查询错误:
"&_
Err.Description
ResumeExecuteSQL_Exit
EndFunction
PublicFunctionTesttxt(txtAsString)AsBoolean
IfTrim(txt)=""Then
Testtxt=False
Else
Testtxt=True
EndIf
EndFunction
5.3系统界面设计:
图5.2系统登录界面
图5.3添加课程信息界面
图5.4添加学籍信息界面
图5.5查询学籍信息界面
图5.5设置年级课程信息界面
5.4系统核心代码
(1)添加班级信息是通过存储过程的调用实现的,部分源代码:
sqlcon.Open"Provider=OraOLEDB.Oracle.1;Password=1234;PersistSecurityInfo=True;UserID=CC;DataSource=orcl"
cmd.ActiveConnection=sqlcon
cmd.CommandText="insertclass"
cmd.CommandType=adCmdStoredProc
SetclassNO=cmd.CreateParameter("@CLASS_NO",adVarChar,adParamInput,50)
cmd.Parameters.Append(classNO)
Setgrad=cmd.CreateParameter("@GRADE",adVarChar,adParamInput,50)
cmd.Parameters.Append(grad)
SetDIRECTO=cmd.CreateParameter("@DIRECTOR",adVarChar,adParamInput,50)
cmd.Parameters.Append(DIRECTO)
SetCLASSROOMNO=cmd.CreateParameter("@CLASSROOM_NO",adVarChar,adParamInput,50)
cmd.Parameters.Append(CLASSROOMNO)
cmd("@CLASS_NO")=txtClassno.Text
cmd("@GRADE")=comboGrade.Text
cmd("@DIRECTOR")=txtDirector.Text
cmd("@CLASSROOM_NO")=txtClassroom.Text
Setmrc=cmd.Execute
cmd.Parameters.Delete("@CLASS_NO")
cmd.Parameters.Delete("@GRADE")
cmd.Parameters.Delete("@DIRECTOR")
cmd.Parameters.Delete("@CLASSROOM_NO")
MsgBox"添加班级信息成功!
",vbOKOnly+vbExclamation,"添加班级信息"
EndSub
(2)查询学生成绩模块的部分代码:
PrivateSubcmdInquire_Click()
DimtxtSQLAsString
DimMsgTextAsString
Dimdd(4)AsBoolean
DimmrcAsADODB.Recordset
txtSQL="select*fromRESULT_INFOwhere"
IfCheck1(0).ValueThen
IfTrim(txtSID.Text)=""Then
sMeg="学号不能为空"
MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"
txtSID.SetFocus
ExitSub
Else
IfNotIsNumeric(Trim(txtSID.Text))Then
MsgBox"请输入数字!
",vbOKOnly+vbExclamation,"警告"
ExitSub
txtSID.SetFocus
EndIf
dd(0)=True
txtSQL=txtSQL&"student_ID='"&Trim(txtSID.Text)&"'"
EndIf
EndIf
IfCheck1
(1).ValueThen
IfTrim(txtName.Text)=""Then
sMeg="姓名不能为空"
MsgBoxsMeg,vbOKOnly+vbExclamation,"警告"
txtName.SetFocus
ExitSub
Else
dd
(1)=True
Ifdd(0)Then
txtSQL=txtSQL&"andstudent_Name='"&txtName.Text&"'"
Else
txtSQL=txtSQL&"student_Name='"&txtName.Text&"'"
EndIf
EndIf
EndIf
IfCheck