软件工程成绩管理系统分析.docx
《软件工程成绩管理系统分析.docx》由会员分享,可在线阅读,更多相关《软件工程成绩管理系统分析.docx(15页珍藏版)》请在冰点文库上搜索。
软件工程成绩管理系统分析
学生成绩管理系统
软件工程课程设计
小组成员:
张凯强
靳丽
和玮
二〇一四年四月
学生成绩管理系统
⏹问题定义
⏹可行性分析
⏹需求分析
⏹系统的概要设计
⏹系统详细设计
系统目标与范围说明书
项目名称:
学生成绩管理系统。
问题:
随着教学体制的不断改革,学生成绩信息日常管理工作日趋繁重复杂,工作量将大幅度增加,使用之前的系统效率显得很低。
项目目标:
建立一个高效率的学生成绩管理系统。
一、问题定义(张凯强)
学生成绩信息管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大、不好管,尤其是随着学校规模的不断扩大,学生数量急剧增长,有关学生的各种信息也成倍增加。
对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。
运用学生成绩信息管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率;通过学生成绩信息管理系统学生能够尽快地知道自己的考试成绩,并合理安排时间,投入新的课程的学习或复习这次没有考过的课程。
系统的开发主要包括后台数据库的建立、维护以及前端应用程序的开发两个方面。
对于前者要求建立数据一致性和完整性强、数据安全性好的数据库。
而对于后者则要求应用程序以尽可能的方便用户使用为宗旨,还要尽可能的实用。
当前学校所用的系统中现有系统资料单独建立,共享性差;
二、可行性分析(张凯强)
技术可行性:
本系统是一个小型开发系统,使用vs2010作为系统开发工具。
vs2010具有可视化集成开发环境,以事件驱动、图形用户界面等为特点,VS2010集成了强大的数据库开发引擎和OLE技术,在设计学生成绩管理系统方面有着独特的优越性。
图书馆里也有很多关于使用VS开发学生成绩信息管理系统实例的图书。
大学期间,我在学习多种程序设计语言的基础之上又学习了VS程序设计技术、SQL数据库技术以及软件工程课程,对数据库的设计、应用及软件开发有一定的认识,具备一定的动手实践能力;我经常使用学校的教务系统查询成绩等信息,并上网了解了不同学校的学生成绩信息管理系统的主要情况,对高校学生成绩信息管理系统功能有较清楚的认识。
三、需求分析(靳丽)
1、由于我们做的是高校学生成绩信息管理系统,就以本校的教务系统为模型参照,把自己作为被调查用户之一。
由于我只能以学生身份进入教务系统,所以实际上我相当于学生用户,进入教务系统以后可以亲身实践作为学生用户所能查看的内容及具有的操作权限,从而了解了学生用户对本系统的需求;通过调查走访及自己的实践,最后确定本系统的各种权限用户需求内容:
有三种用户登陆情况:
教师登陆的用户名是教师的教职工号,学生登录的用户名是学生的学号,登陆密码只有本人可以修改;
教务科相当于管理员,有一般教务管理及信息设置的权利,如:
教师、学生基本信息的录入和修改;学期、学院、专业、班级、课程安排、教师安排等信息的设置;可以查询和统计本校学生成绩信息,并能用Excel表格的形式输出其结果;但没有录入或修改学生成绩的权利,可提供每门课程一个密码给教师让教师有录入或修改学生在自己所授课程上考试成绩的权利;
教师可以查看自己的全部个人信息、修改自己的部分个人基本信息,如联系电话等,可以查看自己所带班级所有学生在自己所授课程上的成绩,期末考试之后教务科(相当于管理员)给教师每门课程一个密码(课程密码),教师进入系统以后可以输入相应课程的密码即可进入成绩录入界面来录入或修改学生在自己所授课程上的成绩。
由于是高校学生成绩信息管理,所以有平时成绩和卷面成绩之分,教师在录入成绩的时候要同时录入平时成绩和卷面成绩,录入完成系统自动按照设置的权重(平时成绩占20%,卷面成绩占80%)核算出每位学生的综合成绩;
学生可以查看自己的全部个人信息、修改自己的部分个人信息,如联系电话等,可以按学期查询自己的成绩(查询到的是平时成绩和卷面成绩经一定的权重折算以后的综合成绩)。
2、系统流程图
根据系统需求分析,画出本系统的系统流程图如图1所示:
图1系统流程图
3、几个主要功能的数据流图
教师录入学生成绩登录数据流图
图2教师录入学生成绩登录数据流图
查询信息数据流图
图3查询信息数据流图
四、系统概要设计(靳丽)
课题开发目标及思路
通过对本校教务管理系统的使用及调查情况,我了解到高校学生成绩信息管理系统应具备的基本功能及各种类型的用户登陆系统后所具有的操作权限,决定设计一个满足基本功能要求的高校学生成绩信息管理系统,使用本系统对学生的成绩信息进行合理管理。
针对前面的分析与构想,为实现系统基本功能需求,本系统的开发大概目标如下:
只有管理员(教务科)可以进行学期、学院、专业、班级、课程等方面设置,进行课程安排、教师安排、教师信息、学生信息等方面管理,从而保证信息的准确性与安全性;
学生某门课程的成绩只能由教此门课程的教师进行录入和修改,从而保证学生成绩信息的准确性与安全性;
按学期、专业、班级、课程导出学生成绩清单,每学期给各科教师打印补考学生名单、重修学生名单,从而减轻学院教学人员的工作量,加快查询速度,提高高校管理学生成绩信息的效率;
系统的界面友好,在操作上简单易行,易学易用,便于维护。
系统内部数据应采用定长格式,以提高系统的运行效率;
具有较高的安全性,运行采用全Windows界面,有很好的容错能力;
系统工作模式为单机多用户模式。
系统模块设计
对于复杂问题,人们习惯首先将该复杂问题分解成若干个子问题,然后对每个子问题进行研究,在充分了解每个子问题的基础上将子问题结合起来达到对整个问题认识的目的。
这种思想实际上就是“各个击破”的思想。
同样的,将软件系统分解成模块可以降低软件设计人员的劳动强度,降低软件的开发成本。
而且采用模块化的原理可以使得软件结构清晰,不仅容易设计而且也容易阅读和理解,模块化使软件容易测试和修改,也有助于软件工程开发的工程管理。
所以,基于上述思想,在参照前面的需求分析情况下,将本系统按功能分为6个主模块,并细化成18个子模块,划分如下:
1、系统维护模块
本模块主要包括用户管理和密码管理两个子模块:
(1)用户管理模块
本模块功能只有管理员权限的用户登陆后才能使用,主要是添加和删除管理员权限的用户
(2)密码管理模块
本模块功能是修改当前操作用户的密码,必须正确输入当前操作用户的旧密码且两次输入的新密码相同,才能成功修改当前操作用户的密码。
从而保证了用户信息的安全性。
2、教务设置模块
本模块只有管理员权限的用户登陆后才能使用,主要负责学期、学院、专业、班级、课程的基本设置,包括以下5个子模块:
(1)设置学期模块
本模块主要是根据实际情况增加或删除某个学期。
(2)设置学院模块
本模块主要是根据高校实际情况增加或删除某个学院。
(3)设置专业模块
本模块主要是根据高校实际情况增加或删除某个专业,所增加的专业必须所属某个学院的。
(4)设置班级模块
本模块主要是根据高校学生人数的实际情况增加或删除某个班级,所增加的班级必须所属某个专业的。
(5)设置课程模块
本模块主要是根据高校实际情况增加或删除某门课程。
3、教务安排模块
本模块只有管理员权限的用户登陆后才能使用,主要是负责课程及教师的安排。
包括以下2个子模块:
(1)课程安排模块
本模块主要是根据学校要求按照学期及专业安排课程。
(2)教师安排模块
本模块主要是根据学校各个专业的课程安排情况,分别按学期为各班级每门课程安排任课教师,并赋予教师在本门课程上一个课程密码,教师在期末考试结束后用此课程密码登陆录入学生成绩界面。
4、信息管理模块
本模块只有管理员权限的用户登陆后才能使用,主要是负责教师基本信息、学生基本信息的管理以及学生成绩查询统计。
主要包括以下3个子模块:
(1)教师信息管理模块
本模块主要是对教师基本信息的添加、修改和删除。
如有新教师来校报到,则需在教师信息表中添加该教师的基本信息;如有教师退休或离职,则需在教师信息表中删除该教师的基本信息等等。
(2)学生信息管理模块
本模块主要是对学生基本信息的添加、修改和删除。
如每年都有新生入学报到,则需根据学生的专业及班级通过Excel表格批量录入该学生的基本信息;如学生毕业离开学校,则需根据学生的专业及班级删除该学生的基本信息等等。
(3)学生成绩查询统计模块
本模块主要实现按学号、姓名、专业、班级、学期、课程名多重条件对高校学生成绩进行查询、补考学生名单查询统计、重修学生名单查询统计,并可通过Excel表格进行输出,以便安排学生补考或重修并通知需要参加补考或重修的学生。
5、学生成绩管理模块
本模块只有教师权限的用户登陆后才能使用,主要负责学生期末成绩录入、学生补考重修成绩录入、学生成绩查询输出。
包括以下3个子模块:
(1)学生期末成绩录入模块
本模块主要实现教师根据学期、所授班级、所授课程对学生期末成绩(包括学生平时成绩和卷面成绩)批量录入或修改。
教师必须正确输入管理员(教务科)给出的课程密码才能登陆录入学生期末成绩界面,从而录入或修改学生成绩。
(2)学生补考重修成绩录入模块
本模块主要实现教师根据学期、所授班级、所授课程对参加补考或重修的学生成绩进行录入。
(3)学生成绩查询输出模块
本模块主要实现教师根据学期对自己所授班级的学生在自己所授课程上的成绩查询、需补考学生名单查询、需重修学生名单查询,并可通过Excel表格输出。
6、系统帮助模块
本模块是公用的,主要是涉及本系统的一些相关信息及退出系统。
包括以下3个子模块:
(1)系统关于模块
本模块主要是关于本系统设计的一些相关信息。
(2)系统帮助模块
本模块主要是对本系统的使用方法的一些简单介绍,不同权限的用户所能看到的帮助内容有所不同。
(3)退出系统模块
本模块主要实现成功退出系统。
系统模块框架图
根据上面的模块划分,得到如下的主模块框架图,如图4所示:
图4主模块框架图
数据库详细设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
合理的数据库结构设计可以提高数据存储的效率、保证数据的完整性和一致性。
同时,合理的数据库结构也将有利于程序的实现。
建立概念数据模型
学生成绩信息管理系统包含着大量的数据和信息,如何更有效、更高效的处理这些数据和信息,建立起一个准确的数据模型是必不可少的。
根据调查研究和前面的需求分析得出高校学生成绩信息管理系统的E-R模型(如图5所示):
图5高校学生成绩信息管理系统E-R模型
数据库逻辑结构设计
根据前面的需求分析和E-R模型的描述,本系统的主要数据库表有以下10个:
学生信息(学号、姓名、性别、籍贯、出生日期、入学时间、所在班级、政治面貌、联系电话、密码、备注)
教师信息(教职工号、姓名、性别、出生日期、入职时间、联系电话、密码、备注)
学期(学期)
学院(学院代码、学院名称)
专业(专业代码、专业名称、所属学院)
班级(班级代码、班级名称、所属专业)
课程(课程号、课程名称、学分)
课程安排信息(学期、专业代码、课程号)
教师安排信息(学期、班级代码、课程号、教职工号、课程密码)
学生成绩信息(学号、学期、课程号、平时成绩、卷面成绩、综合成绩、补考成绩、重修成绩)
关系数据库的规范化设计
规范化理论是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
按关系数据库的设计规范,若遵循过高的范式进行设计,可能增加数据存取时间和次数,但冗余度低是关系数据库的优点,而且还能保证数据的更新一致性和数据完整性。
比如对于学生成绩信息表,如果存储时只写入学号,虽输出成绩时需从学生信息表中取得对应的学生姓名,但冗余度低,节省存储空间;反之,若在学生成绩表中同时存放学号和姓名,虽然打印报表时只需从此表中取数据即可,不需要进行两个表之间的条件连接,查询、打印报表更简单省时,但具有更多的冗余,而且难以保持数据的更新一致性和数据完整性。
完整性约束中的实体完整性和引用完整性可通过定义数据表的主键约束和外键约束来实现。
域完整性可在用户进行前台操作时加入判断语句,确保每次写入的数据都在取值范围即可。
由上述要求,根据概念性模型的建立和数据库逻辑结构的设计结果,对各表进行主键和外键的处理后,得出系统的数据库关系图如图6所示,学生成绩信息表的参照完整性关系属性设置如图7所示。
图6高校学生成绩信息管理系统数据库关系图
图7数据库关系图中学生成绩信息表的参照完整性关系图
五、系统详细设计(和玮)
1、系统窗体设计原则
按上面功能模块的设计结果,一个模块对应一个窗体。
另外由于本系统的操作者基本上不是计算机专业人员,所以界面的开发要本着以下几个原则:
(1)友好的用户界面;
(2)控件的有效性控制;
(3)强壮的出错处理机制。
2、系统部分关键窗体及设计思路介绍
(1)系统登陆窗体及程序流程图
设计思路:
系统登录程序流程图如图9所示
(2)设置课程窗体及设计思路
设计思路:
教务科(即管理员)要通过本窗体实现课程信息的增加和删除功能。
窗体左边List1框中显示课程表中已存在的课程信息,右边“课程号”、“课程名称”、“学分”所对应的文本框名称分别为txtCode、txtName、txtCredit。
在txtCode、txtName、txtCredit文本框中输入相应信息之后,单击“确定”按钮系统即可将所输入的课程信息添加到数据库的课程表中并显示“课程信息增加成功!
”。
(3)学生成绩录入登录窗体及设计思路
设计思路:
不同教师登陆系统后进入的学生成绩录入登陆窗体在班级名称、课程名称的内容选择上有所不同,各个教师登陆此窗体后在combClass控件和combCourse控件里只显示本教师所教班级、所授课程,教师也只有选择了学期、班级名称、课程名称并正确输入教务科所给的本门课程的密码之后,才能进入学生成绩录入界面录入所教班级的学生在所授课程上的平时成绩及卷面成绩
(4)学生成绩录入窗体及设计思路
设计思路:
教师成功登陆学生成绩录入窗体后,在此窗体的txtTerm文本框、txtClass文本框、txtCourse文本框(三个Text文本框的enable属性都设置为False)里自动显示教师刚刚登陆时选择的学期、班级名称及课程名称,此时教师就可以选择录入、修改、保存或查询txtClass文本框中显示的班级的所有学生在txtCourse文本框中显示的课程名称上的成绩。