学生成绩管理系统er图+流程图+组织结构图课程设计.docx
《学生成绩管理系统er图+流程图+组织结构图课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统er图+流程图+组织结构图课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统er图+流程图+组织结构图课程设计
学生成绩管理系统ER图+流程图+组织结构图-课程设计
学生成绩管理系统分析与设计
一、 系统概述
1.1、现状分析
目前在中小学中,学生的成绩管理主要以班级为单位,由各班班主任以表格的形式直接输入电脑中,故就整个学校而言对于学生成绩的管理较为分散,涉及的人员较多且不利于相关的统计工作,学生的成绩信息也得不到长久的保存。
现行系统业务流程图如下:
1.2、系统目标
总体目标:
实现学校对所有班级、学生的成绩信息进行系统的管理,便于操作,便于查询。
具体目标:
1、管理员能够方便地对信息进行添加、编辑、删除、查询等操作。
2、教务人员可以方便地查询所需的成绩信息,并得到相应的统计报表。
3、简化现有系统的流程,使之更加便捷、高效。
1.3、系统开发方法
客户端采用VisualBasic.NET,后台采用SQLserver2000。
1.4、开发计划
1、 初步调查:
以询问、查询资料的形式,对学校现行的学生成绩管理方式进行调查,确定现行方式所存在的问题以及相关需求并进行分析。
2、 可行性分析:
根据初步调查的情况,从技术上、经济上、管理上进行开发的可能性和必要性分析。
3、 详细调查:
详细了解情况并绘制组织结构图和业务流程图。
4、 系统的设计:
根据对所调查情况的分析,进行系统的各种设计。
二、 系统分析
2.1、系统需求分析
功能需求简述:
为了掌握学生的各门课程的成绩情况,将信息保存在一个本地的数据库中,并通过一定的统计功能,实现对全部学生成绩的统计分析,满足教务人员对成绩信息的管理和查询需求,提供一个电子化的成绩管理平台。
系统目标:
对于本系统,我们需要实现以下一些基本功能:
1、 掌握每位学生每一门课程的成绩信息,并记录在数据库中。
2、 可以按不同的方式对成绩进行管理
(1)、按课程,对学习每门课程的每位学生进行添加、删除和修改。
(2)、按学生,对每位学生学习的每门课程的成绩进行添加、删除和修改。
3、 可以针对不同的需求,提供相关的报表打印功能。
2.2、业务流程分析
2.3、数据流程分析
第一层数据流程图:
信息数据库 成绩单
相关信息
第二层数据流程图:
信息数据库
成绩单
学生信息2.5、系统测试计划
1、 硬件测试:
检测计算机是否提供了相应的配置。
2、 网络测试:
若是单机环境,不需要检测网络;若是在局域网或在广局域网运行,需测试网络设备,然后与硬件、软件等一起进行系统测试:
网络设备的外观检查、硬件测试、网络连同测试。
3、 软件测试:
(1)、单元测试:
对源程序中的每一个程序清单进行测试,验证每个模块是否满足系统设计说明书的要求。
(2)、组装测试:
将已测试过的模块组合成子系统,重点测试各模块之间的接口和联系。
(3)、确认测试:
对整个软件进行验收,根据系统说明书来考察软件是否满足要求。
(4)、系统测试:
将软件、硬件、网络等系统各个部分连接起来,对整个系统进行总的功能、性能等方面的测试。
三、 系统设计
3.1、模块结构设计
(1)组织结构图
学生成绩管理系统分析与设计的组织结构图:
系统名称:
学生成绩管理系统
3.2、代码设计
1、代码设计原则:
在数据库中的关键字数据元素通常其代码都有特定含义,必要时还带有校验码。
例如成绩表中学号编码,由8个字符组成,前四个字符表示入学年份,后四个是按顺序递增的流水号。
2、校验码计算公式:
对每一个带有校验码的关键字代码,都要有一张代码设计说明书,校验码计算公式可以相通,也可以不同。
3.3、数据库设计
1、数据库总体结构
本系统采用关系型数据库模式,因此数据库由若干个二维表(数据文件)组成,每个数据文件均设计成第三范式。
表名用含有实际意义的大写拼音首字母表示,如学生成绩表:
chengji
2、数据库结构
每一个数据文件均有一张定义表:
成绩表(chengji)
字段名 字段说明 类型 字段大小
xuehao 学号 文本 8
xingming 姓名 文本 10
kemubianhao 科目编号 文本 4
kemufenshu 科目分数 文本 3
banjimingcheng 班级名称 文本 20
ID ID号 自动编号 长整型
学生表(xuesheng)
字段名 字段说明 类型 字段大小
xuehao 学号 文本 8
xingming 姓名 文本 10
xingbie 性别 文本 2
banji 班级 文本 20
nianling 年龄 文本 2
dianhua 电话 文本 18
zhuzhi 住址 文本 40
班级表(banji)
字段名 字段说明 类型 字段大小
banjibianhao 班级编号 文本 6
banjimingcheng 班级名称 文本 20
科目表(kemu)
字段名 字段说明 类型 字段大小
kemumingcheng 科目名称 文本 20
kemubianhao 科目编号 文本 4
3.4、输入输出设计323
输入输出设计在信息系统中占据重要地位,因为输入和输出是用户与系统的接口,是用户与系统关系最密切的两部分,它对于保证今后用户使用系统的方便性及系统的安全可靠性来说十分重要。
系统设计时,应先进行输出设计,再进行输入设计,因为输入信息只有根据输出要求才能确定。
1、输出设计
输出设计的目的是使系统能输出满足用户需求的有用信息,用户所需要的各种管理业务和经营决策等方面的信息都是由系统的输出部分完成的。
(1)输出方式
本系统采用屏幕输出和打印机打印输出。
(A)屏幕显示输出:
学生登录系统查询成绩时用人机对话方式在显示屏上输出信息,以及用户通过功能按钮、输入组合条件等方式让系统显示信息,该种方式的优点是实时性强,但输出的信息不能保存。
(B)打印机输出:
需要统计分析成绩时输出的信息需要长期保存或在较广泛的范围内传递时,将信息打印输出。
(2)输出介质
本系统输出设备有显示终端、打印机等,介质是纸张。
2、输入设计
输入设计的根本任务就是确保数据快速、正确地输入系统,本系统选用键盘输入
3.5、模块测试计划
1、测试内容:
教务人员进入系统后对信息的录入、修改、删除及学生成绩的关联查询
2、进度安排:
数据库表结构设计好就设计相应测试用例,待相应模块代码编完随即测试。
3、测试所需的环境和设备:
本系统开发版基于单机WindowsXP,后台数据库采用SQLServer2000,测试人员由开发者本人兼任。
4、实施测试
5、生成测试报告
四、系统实现
4.1、开发工具
本系统代码采用VisualBasic.NET编写,后台数据库使用SQLserver2000。
4.2、软件相关界面
4.2.1用户启动界面
4.2.2关于界面
4.2.3课程管理界面
4.2.4学生管理界面
4.3、系统测试结果
通过相关测试,结果满足设计要求,测试正常。
五、收获和体会
通过对学生成绩管理系统的分析和设计,充分了解了开发一个系统的主要流程,即系统需求分析、系统功能设计、系统模块设计、数据库设计、系统详细设计、系统调试等,体会到开发一个系统的真正目的是为了满足用户的需求。
关键代码程序清单:
学生成绩管理系统
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimmyviewAsDataView
myview=NewDataView(DataSet31.chengji,"kemubianhao='"&ComboBox1.Text&"'","xuehao",DataViewRowState.CurrentRows)
DimrowindexAsInteger=myview.Find(TextBox1.Text)
Ifrowindex=-1Then
MsgBox("数据库中未找到与此纪录重复的数据,可以存入!
")
DimstrAsString="insertintochengji(xuehao,xingming,kemubianhao,kemufenshu,banjimingcheng)values(@xuehao,@xingming,@kemubianhao,@kemufenshu,@banjimingcheng)"
DimcomAsOleDbCommand=NewOleDbCommand(str,mycon)
com.Parameters.Add("@xuehao",OleDbType.VarChar).Value=TextBox1.Text
com.Parameters.Add("@xingming",OleDbType.VarChar).Value=TextBox2.Text
com.Parameters.Add("@kemubianhao",OleDbType.VarChar).Value=ComboBox1.Text
com.Parameters.Add("@kemufenshu",OleDbType.VarChar).Value=TextBox3.Text
com.Parameters.Add("@banjimingcheng",OleDbType.VarChar).Value=ComboBox2.Text
mycon.Open()
com.ExecuteNonQuery()
mycon.Close()
MessageBox.Show("信息已成功存入数据库","恭喜",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)
DataSet31.Clear()
OleDbDataAdapter3.Fill(DataSet31)
Else
Beep()
MsgBox("数据库中次纪录已存在,请重新输入!
")
EndIf
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
ComboBox1.ResetText()
ComboBox2.ResetText()
EndSub
}
//个人信息录入代码
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
IfTextBox1.Text=""OrTextBox2.Text=""OrTextBox2.Text=""Then
MessageBox.Show("必填项目不得为空!
","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning)
ExitSub
EndIf
DimmyviewAsDataView
myview=NewDataView(DataSet51.xuesheng,"","xuehao",DataViewRowState.CurrentRows)
DimrowindexAsInteger=myview.Find(TextBox1.Text)
Ifrowindex=-1Then
Beep()
MsgBox("数据库中未找到与此记录重复的数据,可以存入!
")
Dimstr1,str2AsString
str1="insertintoxuesheng(xuehao,xingming,xingbie,banji,nianling"
str2="values('"&TextBox1.Text&"','"&TextBox2.Text&"','"&ComboBox1.Text&"','"&ComboBox2.Text&"','"&TextBox3.Text&"'"
IfTextBox4.Text<>""Then
str1=str1&",dianhua"
str2=str2&",'"&TextBox4.Text&"'"
EndIf
IfTextBox5.Text<>""Then
str1=str1&",zhuzhi"
str2=str2&",'"&TextBox5.Text&"'"
EndIf
str1=str1&")"&str2&")"
Try
DimcomAsNewOleDbCommand(str1,mycon)
mycon.Open()
com.ExecuteNonQuery()
mycon.Close()
MessageBox.Show("信息已成功存入数据库","恭喜",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)
DataSet51.Clear()
OleDbDataAdapter2.Fill(DataSet51)
Catch
mycon.Close()
MessageBox.Show(Err.Description,"",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)
EndTry
TextBox1.Text=""
TextBox2.Text=""
TextBox3.Text=""
TextBox4.Text=""
TextBox5.Text=""
ComboBox1.ResetText()
ComboBox2.ResetText()
Else
MsgBox("数据库中此记录已存在,请重新输入!
")
EndIf
EndSub
EndClass
成绩打印代码
PrivateSubComboBox1_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesComboBox1.SelectedIndexChanged
Label2.Text="科目编号为"&ComboBox1.Text&"的课程全体学生的成绩为:
"
WithMe.CrystalReportViewer2
IfMe.ComboBox1.SelectedItem(0)IsSystem.DBNull.ValueThen
.SelectionFormula="isnull({chengji.kemubianhao})"
Else
.SelectionFormula="{chengji.kemubianhao}='"&Me.ComboBox1.SelectedItem(0)&"'"
EndIf
.RefreshReport()
EndWith
EndSub