您的当前位置:首页正文

Windows窗体在学生成绩管理系统中的程序设计与应用

2021-08-25 来源:九壹网
Windows窗体在学生成绩管理系统中的程序设计与应用

董梦雨;王格灵;张彪

【摘 要】随着信息技术在管理上逐渐深入而广泛的应用,管理信息系统在技术上已逐步成熟.学生成绩管理系统是现代化管理的重要组成部分,是推动学生学分管理走向科学化、规范化的必要条件.各大高校都有着庞大的学生源,科学地管理学生的成绩是必要的.因此,开发学生成绩管理系统势在必行.使用Visual Studio 2013,SQL Server 2014实现了学生成绩管理系统,系统分为三个模块:管理员信息管理模块、教师管理模块、学生管理模块.其中教师管理模块可以修改成绩,添加成绩和查询信息.还包括三种权限:管理员、教师、学生.其中管理员拥有最高权限,可以对教师和学生信息进行操作.

【期刊名称】《价值工程》 【年(卷),期】2018(037)032 【总页数】6页(P171-176)

【关键词】Windows窗体;Visual Studio2013;SQL Server 2014;学生成绩管理 【作 者】董梦雨;王格灵;张彪

【作者单位】昆明理工大学质量发展研究院,昆明650093;昆明理工大学航空学院,昆明650093;昆明理工大学质量发展研究院,昆明650093 【正文语种】中 文 【中图分类】TP311.1

0 引言

随着信息技术在管理上深入广泛的应用,管理信息系统技术也逐步走向成熟。管理信息系统是一个不断发展的学科,任何一个要生存发展的单位,都必须构建与自身特点相符合的管理信息系统。目前,学校办学规模的扩大和招生人数的增加,给学校对于学生成绩管理维护造成了压力。因此及时建立一个学生成绩管理系统是学校管理工作中异常重要的一个环节[1],学生成绩管理的计算机化是整个学校教务管理中的必要部分,并占着越来越重要的份量。而且利用学生成绩管理维护系统可以减少学院教学人员的工作量,缩小开支,节省时间,提高工作效率,学生也能够及时查询到自己的考试成绩,以便于及时总结自己在某门课程中学习的不足,从而投入到更好的学习计划。因此,针对这一状况开发出一套学生成绩管理系统非常必要。 美国麻省理工学院最早在20世纪70年代提出了数字化校园的概念,并且经过了多年的努力,建立了一个较成熟的数字化校园平台[2]。目前美国已经有85%的高校可以为学生提供数字化信息管理服务。在欧洲地区,各大高校也陆续建立了信息化管理系统平台。管理信息系统一般采用的模式是集中统一管理全局数据信息的中央数据库模型,软件开发的系统架构也是以C/S,或者B/S模式设计为主的[3],它们从全局的角度统筹管理整个学校的教学资源,用集中数据平台的方式提高学校的管理效率,加快数据流通速度[4]。经过多年的努力尝试,目前国外高校的这种数字化管理模式平台已逐步走向成熟,其运行状况也处于一种比较稳定的阶段。 在我国,随着教育事业的发展,各学校在信息化建设的过程中经历了多年的努力探索,且取得了一些成绩[5]。目前,国内一些学校在吸收借鉴国内外先进的信息管理模式的同时,结合本校的实际情况,设计开发符合自己条件的现代化信息管理系统,譬如学生成绩管理系统等[6]。纵观目前我国信息管理系统的研究现状,在用户信息安全维护和信息更新化方面还存在一定的不足。由于计算机网络的形式多样

性、分布不均匀性等特征,易受病毒、黑客等攻击的现象时常发生,因此,加强高校教务管理系统的安全维护措施就显得尤为重要。

在信息技术高度发达的今天,应用先进的IT技术实现学生信息管理系统的工作已相继开展。实现高校学生成绩管理的信息化,不仅可以提高效率,而且通过对课程及成绩的相关数据进行深入挖掘和分析,能够提高教务管理工作水平。另外,实现学生成绩信息管理系统[7],具有以下优点:①大量的数据存储,可以方便存储历届学生的档案信息;②检索速度快,学生可以通过上网及时地查到各科成绩;③节约劳动力,只需几名信息录入员就可以实现成绩的录入、统计,提高了工作效率;④通过学校信息化的探索,在研发过程中既可积累经验,也可以为将来学校教务管理信息化做好准备。 1 开发平台及环境简介 1.1 Windows应用程序开发

Windows窗体是一个应用于Microsoft Windows应用程序开发基于.NET框架的新平台[8]。此框架可以向用户提供一个有条理的、面向对象的类集,使其能够开发出一个方便高效的Windows应用程序。Windows应用程序中包括如下几个主要文件:①Program.cs主程序文件,是程序的入口:它是一个程序运行时最先运行的地方,这里包含Main()函数,不管是Win form程序还是控制台,都会涉及到这个程序。②Form.cs:窗体文件,是用户对窗体的代码操作,里面通常有窗体事件,在这里设立窗体的操作代码。③Form.Designer.cs:窗体设计文件,其中的代码是Visual Studio自动生成的,里面有对窗体的操作代码,以及窗体的系统规划代码。

1.2 ADO.NET数据库访问技术

数据库系统是在编程中必不可少的应用领域[9]。早在ADO.NET以前,多数的应用程序都是通过ADO提供的软件对象来访问数据库。本系统分析比较了

ADO.NET与ADO技术中的差别,得出了使用ADO.NET进行访问具有更显著的优越性的结论。因此,本系统采用了ADO.NET对数据库进行访问。 1.3 开发工具

①Visual Studio 2013[10]。Visual Studio 2013是在以前版本的基础上,根据后续的更新进展过程构建而成的,它为开发团队提供相应的解决方案,同时在Microsoft平台上支持多种设备和服务。Visual Studio 2013可以帮助开发团队创造新式应用程序,而且可以将现有的应用程序转变为新式应用程序,使得用户在多种设备上能够享受到较好的体验。②SQL Server 2014[11]。通过内置的突破式内存驻留技术,能为要求最高的数据库应用提供关键业务所需的性能内存驻留技术,性能最高提升30倍。开发团队通过使用多样化的工作负载进行全新的性能测试,证明了采用开创性内存计算技术的SQL Server 2014可以为那些对数据库有极高要求的应用程序提供符合需求的数据平台。 2 需求分析 2.1 可行性分析

由于学生成绩管理系统的对象单一,针对在校学生,教务系统的数据量也不断上涨,且每个数据具有较强的关联性,但涉及的计算过程不是很复杂[11]。因此,比较适合采用数据库管理。学校用于学生管理的计算机在存储量、运行速度等方面都不能满足数据库查询等相关程序运行的要求。在技术难度方面,由于此项目具有普遍性,可以适用于众多学校,因此技术上完全可以实现。

由于本学生成绩管理系统设计的对象权限分明,功能明确,且系统建成后可以直接进行相关信息的查询和修改,所以通过对本系统的使用,可以减少相当一部分的人力和物力的使用,因此可以带来一定的经济效益。从经济上分析,本系统是可行的。此外本系统可以提升工作效率,使用时准确方便,可大大改善数据处理速度。而且在其他方面,也可以带来一定的经济效益。

2.2 功能模块需求分析

该系统的目的是实现学校成绩管理优化。随着管理系统信息化的发展,各个学校学生的人数不断增多,对于按照以前的传统方式处理学生成绩的管理已经不能满足现在的要求。因此,构建一个便于学生查询成绩,便于教师成绩管理、便于学生管理个人基本信息的管理系统势在必行。通过本学生成绩管理系统,学校可以更加有效的进行管理工作,包括基本信息,成绩信息等。具体模块功能介绍如下所示:①管理员管理模块:学生成绩管理系统主要用来管理学生成绩,因此系统的运行环境和安全性都显得非常重要。为了实现该目的,本系统需要一个管理员来系统管理教师以及学生的信息。其任务是对教师以及学生的基本信息进行编辑处理以及维护系统的正常运行和安全性设置。②教师管理模块:学校的实际情况是老师所任教的科目及相关的个人信息需要自己及时更新,学生的成绩需要老师及时上传,对出现输入错误的学生成绩,需要及时修改,所以本系统要做到具有教师权限的管理项目,从而实现对教师相关数据的及时更新。所以本系统需要一个管理教师的模块。③学生管理模块:为了方便学校对学生的个人信息情况的管理工作,提高管理效率,因此需要对学生的信息进行管理。同时,学生也可以修改自己的个人信息。并且当学生符合登录本系统后,可以查询自己的成绩。因此本系统需要一个学生权限的管理模块。

3 系统概要设计

基于对于系统需求的分析,本系统确定分为三个模块:管理员管理模块、教师管理模块、学生管理模块。(图1) 3.1 系统功能模块设计

①管理员管理模块:该模块的功能是管理教师以及学生的信息,并且维护系统的正常运行和安全性设置,包括添加用户、修改用户信息、安全登录等等。②教师管理模块:该模块的主要任务是实现对教师的信息管理工作以及学生成绩的管理工作,

包括:教师信息添加、信息修改,学生成绩添加、成绩修改。这两个功能模块各自独立,共同完成教师的管理工作。③学生管理模块:该模块的功能是实现对学生的个人信息的管理工作和学生成绩的查询工作。包括学生个人信息添加、信息查询、信息修改、成绩查询等功能,从而方便学校管理部门快速查询和了解学生的基本信息。

图1 系统功能模块图 3.2 数据库设计

①数据表分析。数据库中各表数据分析:首先做出学生成绩管理系统的整体分析,考虑到系统的实体,学生的成绩是由任课教师按照课程给出的,因此学生、课程成绩、教师组成了这个系统的三个实体。然后再具体分析三个实体之间的关系。首先,三个实体之间存在着相应的联系,学生成绩与教师没有直接联系,教师必须通过任教科目即课程编号才能和学生建立联系。其次,课程与学生两个实体之间是多对多的关系;一名学生要学习多门课程,一门课程也会有多名学生共同学习。而学习成绩是这两个实体(“学生”和“课程成绩”)共有的属性,因此学生与成绩表之间通过课程编号以及学号共同关联。最后,教师与课程两个实体之间是一对多的关系;一位教师可以任教多门课程,而一门课程对于学生成绩来说只能由一位教师给出。另外,管理员用户登录时,需要建立一个管理员的用户表。

②主要实体数据表(表1~表4)。loginID表示用户登录编号、name表示用户名、pwd表示密码。nvarchar是一种用于表示字符数据的数据类型。name表示用户名、pwd表示密码、renjiaokemu表示该老师任教科目、kemuID表示课程编号、email表示该教师的邮箱。ID表示学号、name表示学生姓名、pwd表示密码、gender表示性别、class表示班级、grade表示年级。studnet ID表示学生学号、name表示学生姓名、kemuID表示科目编号、kemu表示科目名称、score表示成绩。

表1 管理员用户表(admin)列名 数据类型 长度 允许空loginID name pwd int nvarchar nvarchar 4 50 50√√

表2 教师表(teacher)4列名 数据类型 长度 允许空ID name pwd

renjiaokemu kemuID email int nvarchar nvarchar nvarchar nchar nvarchar 50 50 50 10 50√√√√√

表3 学生表(student)列名 数据类型 长度 允许空ID name pwd gender class grade int nvarchar nvarchar nchar nchar nchar 4 50 50 10 10 10√√√√√ 表4 学生成绩表(score)列名 数据类型 长度 允许空studentID name kemuID kemu score int nvarchar nchar nvarchar nchar 4 50 10 50 10√√√√ 4 系统详细设计与实现 4.1 系统登录界面

系统登录页面是本项目的第一个页面,登录用的用户名和密码是数据库表中相应的数据。本系统根据不同用户的登录设置了不同的权限,即有管理员登录、教师登录和学生登录。 图2 系统登录主页面

实现该功能的主要代码如下所示:

private void btnLogin_Click(object sender,EventArgs e){ if(CheckInput()) {

string message=string.Empty; if(CheckUser(ref message)) {

if(cmbType.Text.Equals(\"管理员\")) {

FrmAdmin frmAdmin=new FrmAdmin(); frmAdmin.Show(); }

else if(cmbType.Text.Equals(\"学生\")) {

FrmStudent frmStudent=new FrmStudent(); frmStudent.Show(); } else {

FrmTeacher frmTeahcer = new FrmTeacher();frmTeahcer.Show(); } }

登录模块流程为:开始登录→输入用户名和密码→用户名是否存在→进行相应的权限操作→结束。

结果测试:非空验证:如果登录时漏填某项,会出现“请输入XXX”的系统提示;若用户名在数据库中不存在,则登录不成功;最后,通过登录类型的选择,赋予用户相应权限,从而进入相应的界面,即登陆成功。 4.2 管理员管理系统

本界面是本系统的管理员登录后界面,在本界面上显示了管理员作为最高权限本的所有功能,通过一个菜单栏控件(Menu Strip控件)及相应的子菜单项,从而实现了本系统的教师信息管理、学生信息管理等具体的功能,同时,在管理员管理模块中可以完成对本系统的安全性管理。 图3 管理员登录后的界面

①新增学生功能。管理员登录后,点击地址栏中的“学生信息”管理选项,进入如图3所示的界面。点击“新增学生”子菜单项,进入添加学生信息的页面,相应信息填写完毕后,点击“提交”按钮,显示“插入成功!”信息提示。 实现该功能的主要代码如下所示: StringBuilder sb=new StringBuilder(); sb.AppendLine(\"insert into[student]

([ID],[name],[pwd],[gender],[class],[grade])\"); sb.AppendFormat(\"

values({0},'{1}','{2}','{3}','{4}','{5}')\ntClass, grade);

SqlCommand command=new

SqlCommand(sb.ToString(),dbhelper.Connection); Console.WriteLine(sb.ToString()); dbhelper.OpenConnection();

int result=command.ExecuteNonQuery();

结果测试:非空验证:如果登录时漏填某项,会出现“请输入XXX”的系统提示;两次密码输入不同时,出现“两次密码不一致”的系统提示;若运行中数据类型与数据库表中的字段类型不匹配等问题,会出现“插入失败”的系统提示;若各项符合,则操作成功。 图4 添加学生操作成功 while(reader.Read()){

string studentNo=reader[\"ID\"].ToString();string studentName=reader[\"name\"].ToString(); string

gender=reader[\"gender\"].ToString(); string kemu=reader[\"kemu\"].ToString(); string score=reader[\"score\"].ToString(); ListViewItem item = new

ListViewItem(studentNo);item.SubItems.Add(studentName); item.SubItems.Add(gender); item.SubItems.Add(kemu); item.SubItems.Add(score); lvStudent.Items.Add(item); reader.Close(); }

测试结果:查询过程中,若出现体统错误,则提示相应的错误信息;若操作成功,则显示学生的相应信息。(图5) 图5 查询学生信息操作

③修改学生信息功能。点击“修改学生信息”子菜单栏,进入修改信息页面。将需要改的项在此页面上修改后,点击“修改”按钮,出现“更新学生成功!”的信息提示,则数据更新成功。测试结果如图6。

④教师信息管理功能。教师信息管理中各个子菜单项的实现与学生信息管理模块功能相似。故不再详细介绍。另外,点击“退出”菜单,退出该应用程序。 4.3 教师管理模块

本模块是拥有教师权限的教师登录后的界面,从而实现教师自身信息的添加、修改功能,并且能够实现教师对学生所对应的任教科目的成绩的管理功能,包括成绩添加、成绩修改等功能。(图7) 图6 更新学生信息操作

图7 教师登录成功界面

①教师信息管理。该功能与上一节中管理员管理教师信息的功能相同。即拥有教师权限的用户进入教师管理页面后,实现查询信息、增加信息、修改信息等功能。 ②添加学生成绩功能。点击“添加学生成绩”子菜单栏,进入添加成绩页面。正确填写完相应的信息后,点击“添加”按钮,出现“添加成功!”的系统提示信息,并将该学生的成绩更新后显示在页面下方的DataGridView中。 实现该功能的关键代码如下:

StringBuilder sb=new StringBuilder();

sb.AppendLine(\"select [name],[kemu],[score]from[score]\"); sb.AppendFormat (\" where

[studentID]={0}his.ds=new DataSet();

SqlDataAdapter adapterResult=new SqlDataAdapter(sb.ToString(), dbhelper.Connection); if(ds.Tables[\"score\"]!=null) {

ds.Tables[\"score\"].Clear(); }

adapterResult.Fill(ds,\"score\");

this.dgvResult.DataSource=ds.Tables[\"score\"]; 测试结果:(图 8~图 9)

③删除学生成绩功能。点击“删除学生成绩”子菜单栏,进入删除成绩页面。输入学生姓名,点击“查找”按钮,显示该学生各科的成绩。在DataGridView中选中要删除的行,点击“删除”按钮,会出现“是否删除该行数据?”的信息提示,

点击“确定”,若出现“删除成功!”的系统提示信息,则操作成功。 图8 添加成绩功能 图9 显示更新后的成绩

实现该功能的主要代码如下所示: string kemu=

Convert.ToString(dgbScore.SelectedRows[0].Cells[\"kemu\"].Value); DBHelper dbHelper=new DBHelper(); try {

dbHelper.OpenConnection();

string sql=string.Format(\"delete from score where kemu='{0}'\SqlCommand command=new SqlCommand(sql,dbHelper.Connection); int result=command.ExecuteNonQuery(); if(result>0) {

MessageBox.Show(\"删除成功!\操作提示\MessageBoxIcon.Information); SearchScore(); }

测试结果:(图 10~图 11)

④修改学生成绩功能。点击“修改学生成绩”子菜单栏,进入成绩列表页面。输入要修改的学生姓名,选中在DataView中显示的该生的整行信息,点击“修改”按钮,进入修改成绩页面,该生的所有信息都显示在该页中。编辑成绩项的Textbox,填好后点击“修改”按钮,出现“修改成功!”的系统提示,点击“确

定”按钮,页面返回到成绩列表的页面,再次查询,显示更新后的信息,则操作成功。

图10 删除成功 图11 删除后数据更新

实现该功能的主要代码如下所示:

string sql=string.Format(\"update score set score='{0}'where kemu='{1}'and

studentID={2}\stuScore.StuID);

SqlCommand command=new SqlCommand(sql,dbHelper.Connection); int result=command.ExecuteNonQuery(); if(result>0) {

DialogResult r= MessageBox.Show(\"修改成功!\操作提示\MessageBoxButtons.YesNo,MessageBoxIcon.Information); if(r==DialogResult.Yes) {

FrmScoreList fmScoreList=new FrmScoreList(); fmScoreList.Show(); this.Hide(); } }

测试结果:(图 12) 4.4学生管理模块

为了方便学校管理工作的开展,学生登录成功后,若发现自己的基本信息不正确,可以及时修改。对于成绩管理方面,学生只有查询自己成绩的功能,既不能修改,也不能删除。(图13) 图12 学生成绩修改页面 图13 学生登录成功页面

学生成绩查询功能。进入学生登录后的界面,点击“查询成绩”子菜单项,进入学生成绩查询页面。从登录页面将用户名的值传入到查询页面,点击“查找”按钮,若输入的姓名与登录用户名一致,则学生信息将显示在页面下方的DataGridView中,点击“返回”,返回上图。点击“退出”子菜单栏,退出应用程序。 实现该功能的主要代码如下所示:

FrmShowScore frmShowScore=new FrmShowScore(); frmShowScore.student=this.student; frmShowScore.Show();

StringBuilder sb=new StringBuilder();

sb.AppendLine(\"select[studentID],[name],[kemu],[score]\"); sb.AppendLine(\"from[score]\");

sb.AppendFormat(\"where[name]='{0}'\); sb.AppendLine(\"order by[studentId]\");

SqlDataAdapte ataAdapter=new SqlDataAdapter(sb.ToString(), dbhelper.Connection); if(ds.Tables[\"score\"]!=null) {

ds.Tables[\"score\"].Clear(); }

dataAdapter.Fill(ds,\"score\");

this.dgbScore.DataSource=ds.Tables[\"score\"]; 测试结果:图14~图15。

若输入的学生姓名与登录用户名不一致,则出现“对不起,您没有访问权限!”的系统提示信息。即一个学生只能查询自己的成绩。 图14 学生成绩查询 图15 查询失败 5 全文总结

本文首先对学生成绩管理系统进行了准确的需求分析,明确了不同权限对象的主要功能。其次,针对不同对象的管理权限,在数据库设计过程中建立表连接,分析数据库表中的各个字段的关系。另外,在程序设计上,利用相应的函数方法,准确调用函数,实现具体功能,给出了实现某些功能的主要代码。从程序设计和功能需求分析上来看,本文认为在权限维护和个人隐私设计上仍有待完善,以便在实际操作中减少保密性问题。 参考文献:

【相关文献】

[1]李慧文.计算机信息系统及当代信息资源规划[J].北京工业大学出版社,2001. [2]李兰友,杨晓光.Visual C#.NET程序设计[M].北京:北方交通大学出版社,2004. [3]曹衍龙.ASP/ASP.NET数据库开发实用工程案例精选[M].北京:人民邮电出版社,2006.

[4]薛秀琴.B/S模式下学生信息管理系统的设计及安全分析[J].电脑开发与应用,2013,26(12):41-44.

[5]王昊亮,李刚.Visual C#程序设计教程[M].北京:清华大学出版社,2003.

[6]乌日其木格,马恒宇.浅谈高校教务管理系统现状与改进建议[J].内蒙古师范大学学报(教育科学版),2007(09):77-78.

[7]武苍林,罗晃.Web数据库的ASP开发方案[J].计算机工程与科学,1999:21(1):65-68. [8]张建成,李春青.基于.NET环境下ADO.NET访问数据库技术的研究[J].电脑知识与技术,2009,5(22):6102-6104.

[9]刘志成.SQL Server数据库技术与实训[M].北京:科学出版社,2006. [10]萨师煊.数据库系统概论[M].北京:高等教育出版社,2006.

[11]张龙.教务管理信息系统的设计与实现[J].电子设计工程,2016,24(20):36-38,42.

因篇幅问题不能全部显示,请点此查看更多更全内容