当前位置:文档之家› 【最新版】软件工程毕业课程设计论文

【最新版】软件工程毕业课程设计论文

课程设计说明书

课程名称:软件开发技术

设计题目:学生信息管理系统

专业:计算机科学与技术班级: 0801 指导教师:何频捷

湖南工业大学科技学院教务部制

2011年 12 月 10 日

1 引言(或绪论)

1.1 课题背景

随着教育事业的不断发展,学校的规模不断扩大,学生数量及其信息量的急剧增加,有关学生的各种信息管理也随之展开,学生信息管理系统应运而生了,它可用来管理学生信息与提高系统管理工作的效率。学生信息管理系统把Eclipse(前台开发)与SQL数据库(后台管理)有机地结合,并运用SWING等相关技术,完成学生信息的规范管理、科学统计和快速查询,从而可大大减少该管理上的工作量。

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据库存储的效率,保证数据的完整性和一致性。同时,合理的数据结构也将有利于程序的顺利实现。

1.2 系统开发关键技术介绍

本系统采用的是Eclipse开发工具做为开发系统程序,采用SQL sever数据库访问技术完成对数据库信息的规范管理和统计查询。SQL sever使用更加简单灵活的对象模型,适用于各种程序设计语言。SQL sever提供执行以下操作方式:

(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.创建的存储过程进行添加班级信息,代码如下:

create or replace procedure insertclass

(p_class_no in class_no%type,

p_grade in grade%type,

p_director in director%type,

p_classroom_no in classroom_no%type

)

is v_count number;

begin

select count(*) into v_count from class_info where class_no=p_class_no;

if v_count=0 then

insertinto class_info values(p_class_no,p_grade,p_director,p_classroom_no );

else

dbms_output.put_line('班号已经存在,请重新输入班号');

end if;

end insertclass;

2.存储过程的调用代码:

Private Sub Command1_Click()

Dim sqlcon As New ADODB.Connection

Dim mrc As ADODB.Recordset

Dim MsgText As String

Dim txtSQL As String

Dim cmd As New ADODBmand

Dim classNO, grad, DIRECTO, CLASSROOMNO

sqlcon.Open "Provider=OraOLEDB.Oracle.1;Password=1234;Persist Security Info=True;User ID=CC;Data Source=orcl"

If Not Testtxt(txtClassno.Text) Then

MsgBox "请输入班号!", vbOKOnly + vbExclamation, "警告"

txtClassno.SetFocus

Exit Sub

End If

If Not Testtxt(comboGrade.Text) Then

MsgBox "请选择年级!", vbOKOnly + vbExclamation, "警告"

comboGrade.SetFocus

Exit Sub

End If

If Not Testtxt(txtDirector.Text) Then

MsgBox "请输入班主任姓名!", vbOKOnly + vbExclamation, "警告"

txtDirector.SetFocus

Exit Sub

End If

If Not Testtxt(txtClassroom.Text) Then

MsgBox "请输入教室房间号!", vbOKOnly + vbExclamation, "警告"

txtClassroom.SetFocus

Exit Sub

End If

If Not IsNumeric(Trim(txtClassno.Text)) Then

MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告"

Exit Sub

txtClassno.SetFocus

End If

cmd.ActiveConnection = sqlcon

cmdmandText = "insertclass"

cmdmandType = adCmdStoredProc

Set classNO = cmd.CreateParameter("@CLASS_NO", adVarChar, adParamInput, 50)

cmd.Parameters.Append (classNO)

Set grad = cmd.CreateParameter("@GRADE", adVarChar, adParamInput, 50)

cmd.Parameters.Append (grad)

Set DIRECTO = cmd.CreateParameter("@DIRECTOR", adVarChar, adParamInput, 50)

cmd.Parameters.Append (DIRECTO)

Set CLASSROOMNO = 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

Set mrc = cmd.Execute

cmd.Parameters.Delete ("@CLASS_NO")

cmd.Parameters.Delete ("@GRADE")

cmd.Parameters.Delete ("@DIRECTOR")

cmd.Parameters.Delete ("@CLASSROOM_NO")

MsgBox "添加班级信息成功!", vbOKOnly + vbExclamation, "添加班级信息"

End Sub

3.创建触发器:

create or replace trigger course_info_del

before delete on course_info

for each row

declare

-- local variables

delete from gradecourse_info;

end ;

4.4 数据库的连接

配置文件连接数据库的代码:

ConnectString = "Provider=OraOLEDB.Oracle.1;Password=1234;Persist Security Info=True;User ID=CC;Data Source=orcl"

5 系统实现

根据整个系统的总体设计以及相关子系统的相关模块功能的设计,我们进行了系统的软件开发。详细设计和功能展示如下:

5.1系统实现工具与支持平台

(1) 用户界面

本系统采用Microsoft Visual Basic 6.0设计,用户交互界面采用的是基于Windows 的窗口界面。

(2) 开发和运行环境

工具软件:VisualBasic

系统软件:Oracle 10g

开发环境:Windows XP Professional

运行环境:Windows 98\NT\2000\XP\2003

硬件配置:PentiumⅢ以上CPU、256MB以上的内存、4GB以上的硬盘空间

5. 2公用模块的设计

以下为系统主控窗口的界面截图:

图5.1 主控窗口

在系统中创建公用模块,存放在整个工程项目中会调用到的函数、变量等。

代码如下:

Public fMainForm As frmMain

Public UserName As String

Sub Main()

Dim fLogin As New frmLogin

fLogin.Show vbModal

If Not fLogin.OK Then

'Login Failed so exit app

End

End If

Unload fLogin

Set fMainForm = New frmMain

fMainForm.Show

End Sub

Public Function ConnectString() _

As String

'returns a DB ConnectString

ConnectString = "Provider=OraOLEDB.Oracle.1;Password=1234;Persist Security Info=True;User ID=CC;Data Source=orcl"

End Function

Public Function ExecuteSQL(ByVal SQL _

As String, MsgString As String) _

As ADODB.Recordset

'executes SQL and returns Recordset

Dim cnn As ADODB.Connection

Dim rst As ADODB.Recordset

Dim sTokens() As String

On Error GoTo ExecuteSQL_Error

sTokens = Split(SQL)

Set cnn = New ADODB.Connection

cnn.Open ConnectString

If InStr("INSERT,DELETE,UPDATE", _

UCase$(sTokens(0))) Then

cnn.Execute SQL

MsgString = sTokens(0) & _

" query successful"

Else

Set rst = New ADODB.Recordset

rst.CursorLocation = adUseClient

rst.Open Trim$(SQL), cnn, _

adOpenKeyset, _

adLockOptimistic

'rst.MoveLast 'get RecordCount

Set ExecuteSQL = rst

MsgString = "查询到" & rst.RecordCount & _ " 条记录"

End If

ExecuteSQL_Exit:

Set rst = Nothing

Set cnn = Nothing

Exit Function

ExecuteSQL_Error:

MsgString = "查询错误: " & _

Err.Description

Resume ExecuteSQL_Exit

End Function

Public Function Testtxt(txt As String) As Boolean If Trim(txt) = "" Then

Testtxt = False

Else

Testtxt = True

End If

End Function

5. 3系统界面设计:

图5.2 系统登录界面

图5.3添加课程信息界面

图5.4添加学籍信息界面

图5.5查询学籍信息界面

图5.5设置年级课程信息界面

5. 4系统核心代码

(1) 添加班级信息是通过存储过程的调用实现的,部分源代码:

sqlcon.Open "Provider=OraOLEDB.Oracle.1;Password=1234;Persist Security Info=True;User ID=CC;Data Source=orcl"

cmd.ActiveConnection = sqlcon

cmdmandText = "insertclass"

cmdmandType = adCmdStoredProc

Set classNO = cmd.CreateParameter("@CLASS_NO", adVarChar, adParamInput, 50)

cmd.Parameters.Append (classNO)

Set grad = cmd.CreateParameter("@GRADE", adVarChar, adParamInput, 50)

cmd.Parameters.Append (grad)

Set DIRECTO = cmd.CreateParameter("@DIRECTOR", adVarChar, adParamInput, 50)

cmd.Parameters.Append (DIRECTO)

Set CLASSROOMNO = 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

Set mrc = cmd.Execute

cmd.Parameters.Delete ("@CLASS_NO")

cmd.Parameters.Delete ("@GRADE")

cmd.Parameters.Delete ("@DIRECTOR")

cmd.Parameters.Delete ("@CLASSROOM_NO")

MsgBox "添加班级信息成功!", vbOKOnly + vbExclamation, "添加班级信息" End Sub

(2) 查询学生成绩模块的部分代码:

Private Sub cmdInquire_Click()

Dim txtSQL As String

Dim MsgText As String

Dim dd(4) As Boolean

Dim mrc As ADODB.Recordset

txtSQL = "select * from RESULT_INFO where "

If Check1(0).Value Then

If Trim(txtSID.Text) = "" Then

sMeg = "学号不能为空"

MsgBox sMeg, vbOKOnly + vbExclamation, "警告"

txtSID.SetFocus

Exit Sub

Else

If Not IsNumeric(Trim(txtSID.Text)) Then

MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告"

Exit Sub

txtSID.SetFocus

End If

dd(0) = True

txtSQL = txtSQL & "student_ID = '" & Trim(txtSID.Text) & "'"

End If

End If

If Check1(1).Value Then

If Trim(txtName.Text) = "" Then

sMeg = "姓名不能为空"

MsgBox sMeg, vbOKOnly + vbExclamation, "警告"

txtName.SetFocus

Exit Sub

Else

dd(1) = True

If dd(0) Then

txtSQL = txtSQL & "and student_Name = '" & txtName.Text & "'"

Else

txtSQL = txtSQL & "student_Name = '" & txtName.Text & "'"

End If

End If

End If

If Check1(2).Value Then

If Trim(txtCourse.Text) = "" Then

sMeg = "课程不能为空"

MsgBox sMeg, vbOKOnly + vbExclamation, "警告"

txtCourse.SetFocus

Exit Sub

Else

dd(2) = True

If dd(0) Or dd(1) Then

txtSQL = txtSQL & "and course_Name = '" & txtCourse.Text & "'"

Else

txtSQL = txtSQL & "course_Name = '" & txtCourse.Text & "'"

End If

End If

End If

If Not (dd(0) Or dd(1) Or dd(2) Or dd(3)) Then

MsgBox "请设置查询方式!", vbOKOnly + vbExclamation, "警告"

Exit Sub

End If

txtSQL = txtSQL & " order by student_ID "

Set mrc = ExecuteSQL(txtSQL, MsgText)

With myflexgrid

.Rows = 2

.CellAlignment = 4

.TextMatrix(1, 0) = "考试编号"

.TextMatrix(1, 1) = "学号"

.TextMatrix(1, 2) = "姓名"

.TextMatrix(1, 3) = "班号"

.TextMatrix(1, 4) = "课程名称"

.TextMatrix(1, 5) = "分数"

Do While Not mrc.EOF

.Rows = .Rows + 1

.CellAlignment = 4

.TextMatrix(.Rows - 1, 0) = mrc.Fields(0)

.TextMatrix(.Rows - 1, 1) = mrc.Fields(1)

.TextMatrix(.Rows - 1, 2) = mrc.Fields(2)

.TextMatrix(.Rows - 1, 3) = mrc.Fields(3)

.TextMatrix(.Rows - 1, 4) = mrc.Fields(4)

.TextMatrix(.Rows - 1, 5) = mrc.Fields(5)

mrc.MoveNext

Loop

End With

mrc.Close

End Sub

(3) 修改课程信息部分代码:

Private Sub cancelCommand_Click()

If Not mcclean Then

Frame2.Enabled = True

firstCommand.Enabled = True

previousCommand.Enabled = True

nextCommand.Enabled = True

lastCommand.Enabled = True

txtCourseno.Enabled = False

txtCoursename.Enabled = False

comboCoursetype.Enabled = False

txtCoursedes.Enabled = False

mrc.Bookmark = myBookmark

Call viewData

Else

MsgBox "什么都没有修改,不需要取消!", vbOKOnly + vbExclamation, "警告"

End If

End Sub

Private Sub deleteCommand_Click()

myBookmark = mrc.Bookmark

str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")

If str2$ = vbOK Then

mrc.MoveNext

If mrc.EOF Then

mrc.MoveFirst

myBookmark = mrc.Bookmark

mrc.MoveLast

mrc.Delete

mrc.Bookmark = myBookmark

Call viewData

Else

myBookmark = mrc.Bookmark

mrc.MovePrevious

mrc.Delete

mrc.Bookmark = myBookmark

Call viewData

End If

Else

mrc.Bookmark = myBookmark

Call viewData

End If

End Sub

Private Sub editCommand_Click()

mcclean = False

Frame2.Enabled = False

firstCommand.Enabled = False

previousCommand.Enabled = False

nextCommand.Enabled = False

lastCommand.Enabled = False

txtCourseno.Enabled = True

txtCoursename.Enabled = True

comboCoursetype.Enabled = True

txtCoursedes.Enabled = True

comboCoursetype.AddItem "必修"

comboCoursetype.AddItem "考查"

myBookmark = mrc.Bookmark

End Sub

Private Sub firstCommand_Click()

mrc.MoveFirst

Call viewData

End Sub

Private Sub previousCommand_Click()

mrc.MovePrevious

If mrc.BOF Then

mrc.MoveLast

End If

Call viewData

End Sub

Private Sub updateCommand_Click()

Dim txtSQL As String

Dim MsgText As String

Dim mrcc As ADODB.Recordset

If mcclean Then

MsgBox "请先修改课程信息", vbOKOnly + vbExclamation, "警告"

Exit Sub

End If

If Not Testtxt(txtCourseno.Text) Then

MsgBox "请输入课程编号!", vbOKOnly + vbExclamation, "警告"

txtCourseno.SetFocus

Exit Sub

End If

相关主题
文本预览
相关文档 最新文档