剖析学生成绩管理系统设计与实现的重点与难点

2017-12-13 14:55马海珠
电脑知识与技术 2017年33期
关键词:学期管理系统班级

马海珠

摘要:该文的重点是剖析学生成绩管理系统,围绕系统架构、系统功能、数据库设计及系统实现等几方面来说明学生成绩管理系统设计与实现中的难点与重点。

关键词:C#;学生成绩管理系统

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)33-0129-02

Abstract: This article focuses on the analysis of student achievement management system, focusing on the system architecture, system function, database design and system implementation and other aspects to illustrate the difficulties and priorities in the design and implementation of student achievement management system

Key words: C#; Student achievement management system

1 概述

软件技术专业综合实践教学环节是毕业设计。通过毕业设计,能将学生所学的各种理论知识和职业技能联结起来,培养学生的综合能力,为学生走上工作岗位打好基础。我校毕业设计采用以自主选题为主结合给定选题为辅的原则,在选题中,很多学生喜欢选择“学生成绩管理系统”作为自己的研究课题,究其原因学生认为他们对“学生成绩管理系统”这一课题的管理流程比较熟悉,但往往意识不到学生成绩管理系统的复杂性,由于每个学校的应用环境不一样,业务流程不统一,所以许多现成的成绩管理系统不是拿过来就能用的,开发符合自身学校特色的学生成绩管理系统是十分必要。本文以笔者指导的2013级软件技术专业学生开发“基于C#的学生成绩管理系统”为例,剖析系统设计与实现的重点与难点。

2 系统架构剖析

从目前应用系统的发展方向看,学生成绩管理系统理应采用B/S结构,即浏览器/服务器模式,它的特点是通过浏览器来进入工作界面,系统分布性强、维护方便、开发简单且共享性强。但就本次学生毕业设计方向看,笔者指导的软件技术专业是C#WinForm方向,所以学生成绩管理系统的架构定位采用的是C/S结构,即客户机/服务器的模式,它主要应用于局域网中,针对小范围的用户,数据的安全性可以保证,但不能实现真正大范围的信息共享、信息传达和发布。不同的架构技术基本决定了系统服务对象,基于C#的学生成绩管理系统主要的服务对象应该是教师用户和教务管理员用户,这里不考虑学生用户。

3 系统功能剖析

开发一个应用系统的重点是确定系统的功能。这就需要开发者从了解和调研用户的业务流程和用户的需求开始,确定系统的功能。业务流程不同,实现的功能就不同。结合我校实际情况,教务管理员的主要业务是:

1) 每年新生入学需要组建学生信息;2)规划每学期每个班级的课程表;3)安排授课教师;4)学生成绩管理。学生成绩管理主要包括成绩存档及成绩统计。成绩存档主要是收集学生每学期的每一门课程的平时成绩、期中考试和期末考试成绩等信息,并按指定的比例折算出总评成绩。成绩统计包括汇总班级成绩总表、班级补考信息、单科课程的成绩情况(包括计算课程平均分、统计各分数段人数及占比等)及汇总出每学期每个学生的成绩单。

教师主要业务是分阶段递交成绩,负责递交所授课程的学生平时成绩,期中成绩和期末成绩并对缺考等情况作说明,老师应确保上交的成绩信息正确无误。

因此,在功能设计中,教务管理员在系统登录后不仅可以完成学生、教师、系别、班级、学期、课程、授课等信息管理,同时还要完成成绩管理模块的功能,通过选择学期、系别、班级及所授课程等信息后,即完成学生的成绩录入、成绩修改、 成绩删除、成绩统计、成绩打印等功能。

而对于普通授课教师在系统登录后,只能做输入平时成绩、期中成绩、期末成绩及查询各类信息,授课老师一旦提交确认成绩后,不能再对成绩作编辑修改,如果录入的成绩有误,应该联系管理员,由管理员对错误的成绩进行更正。

4 数据库设计剖析

在系统开发中,最难的应该是数据库设计。一方面,系统的功能规模直接影响数据库的设计,另一方面数据库结构设计的好坏又直接影响系统的效率以及实现效果。如何设计合理的数据库结构,保证数据存储效率及方便程序的实现是整个系统设计的难点和关键点。根據前面的功能解析,能够满足用户需求的实体有:管理员、授课教师、学生、班级、学期,课程、授课及成绩。

1) 管理员(用户名和密码)。

2) 教师表(教师名、教师密码)。

3) 系别表(系别编号、系别名称)。

4) 班级表(班级编号、班级名称、系别编号)。

5) 学生表(学号、姓名、性别、入学成绩,班级编号)。

6) 学期表(学期编号、学期名称)。

7) 课程表(课程编号、课程名称、学时)。

8) 授课表(授课编号、教师名、课程号、班级号、学期编号)。

9) 成绩表(成绩编号、授课编号、学号、平时成绩、期中成绩、期末成绩、总评成绩、是否补考、补考成绩、备注)。

为了方便代码编写,可以通过视图方式创建数据表与数据表之间的关系,这里比较重要的视图是成绩处理视图resultView,需要将成绩表、教师表、授课表、学生表、课程表、班级表、学期表和系别表联系起来,方便学生的成绩统计、分析及查询。

5 系统实现剖析

在学生成绩管理系统的实现中,学生信息、教师信息、课程信息等管理的功能基本相似,实现起来比较容易,这里不进行分析讨论。在整个系统实现过程中,不仅要考虑到数据的完整性还要考虑到数据如何获取。

1) 触发器是SQL Server提供给程序员和数据分析员来保证数据完整性的一种方法。教务管理员在安排授课表时,每添加一条授课记录,在成绩表就应该添加与该授课编号相关的班级学生名单,用于记录平时成绩、期中成绩等。为了保证成绩表中学生名单准确无误且与学生信息表名单的完整性,在技术处理上,采用在授课表上需要创建触发器,以实现每添加或删除一条授课记录,成绩表中就批量添加或删除授课班级的学生名单及授课号。基本代码如下:

Create TRIGGER [dbo].[sktrig]

ON [dbo].[skInfo]

AFTER INSERT,DELETE

AS

BEGIN

declare @sIDint,@cidint

if exists ( select * from inserted)

begin

select @sID=sID,@cid=cid from inserted

insert into resultInfo (stuId,sID) select stuid,@sID from stuInfo where cid=@cid

end

else

begin

select @sID=sID from deleted

delete from resultInfo where sID=@sID

end

2) 匯总班级成绩总表是学生成绩管理系统实现中的难点。学期、系别、班级不同所授的课程不同。因为在汇总成绩总表时,每个班级的课程名是动态的。因此在数据汇总的技术处理时,通过编制成绩表的存储过程的来实现,并采用动态交叉表来汇总不同的系别,不同学期,不同班级的学生所学课程的总评成绩,再通过数据绑定技术绑定汇总出来的交叉表,实现界面显示。

Create procedure [dbo].[CrossTable]

@strTableNamevarchar(50)='',—查询的表名

@strColvarchar(50)='',—横向列所在的字段名

@strGroupvarchar(50)='',—分组名

@strNumbervarchar(50)='',—被统计的列

@strComputevarchar(50)='Sum',—运算方式

@intxidvarchar(50),

@intcidvarchar(50)

as

declare @strSql as varchar(1000),@strTempCol as varchar(100)

execute ('DECLARE corss_cursor CURSOR FOR SELECT DISTINCT '+@strCol+' from '+@strTableName+' for read only') —生成游标

begin

setnocount on

set @strSql='select '+@strGroup

opencorss_cursor

while(0=0)

begin

fetch next from corss_cursor

into @strTempCol

if(@@fetch_status<>0) break

set @strSql=@strSql+','+@strCompute+'( case '+@strCol+' when '''+@strTempCol+''' then '+@strNumber +' else 0 end ) as ['+@strTempCol+']'

end

set @strsql=@strSql+','+@strCompute+'('+@strNumber+') as [总成绩]'+' from '+@strTableName+' where cId='+@intcid+ ' and xID='+@intxid+' group by '+@strGroup

print @strSql

execute(@strSql)

if @@error <>0 return @@error

print @@error

closecorss_cursor

deallocatecorss_cursor return 0

end

3) 单科成绩分数段的统计也是学生成绩管理模块中的难点。在数据处理的技术上,需要对成绩处理视图resultView采用复杂查询技术来实现。在界面实现上通过绑定查询的结果进行显示,这里以单科汇总期中成绩为例进行说明。

select kName,(select COUNT(*) from resultView where qzresult<60 and kName=t.kName ) as '不及格',(select COUNT(*)

from resultView where qzresult>=60 and qzresult<70 and kName=

t.kName ) as '60-70',(select COUNT(*) from resultView where qzresult>=70 and qzresult<80 and kName=t.kName) as '70-80',(select COUNT(*) from resultView where qzresult>=80and qzresult<90 and kName=t.kName) as '80-90',(select COUNT(*) from resultView where qzresult >=90 and kName=t.kName ) as '90以上' from resultView t group by kName

6 总结

本学生成绩管理系统是作为学生毕业设计的选题,它在实际应用中有多局限性,许多方面有待进一步改进和完善,通过本系统的设计与开发,学生对所学的软件技术知识进行了系统地回顾和应用,特别是对SQL Server数据库技术、面向对象程序设计、软件工程等课程达到学以致用的目的,剖析学生成绩管理系统设计与实现的重点与难点的目的是给学生成绩管理系统的设计者与研究者提供一点参考和借鉴。

参考文献:

[1] 李春葆,曾平.数据库原理与应用第2版[M].北京:清华大学出版社,2007.

[2] 贾红宇.高校学生成绩管理系统的设计与实现[J]. 教育论坛,2008(9):148,149.

[3] 叶伟.学生成绩管理系统的设计与实现探究[J]. 信息系统工程,2012(4).

猜你喜欢
学期管理系统班级
基于James的院内邮件管理系统的实现
班级“四小怪”
新的学期 新的尝试
期末冲刺高二上学期期末模拟卷
基于LED联动显示的违停管理系统
海盾压载水管理系统
八年级(上学期)期末测试题(D)
不称心的新班级
基于RFID的仓储管理系统实现
ACT和SAT的几个区别