主要介绍学生成绩管理系统项目开发的背景、目的、对象以及研究内容。
1.1项目背景
1.2编写目的
开发出一个操作简便、界面友好、灵活实用、安全可靠的学生成绩管理系统。该系统的开发以任课教师和学生服务为对象,能够提高学校对学生成绩的统计分析效率,减轻教务管理人员对学生成绩管理和统计的负担,能提高学校对学生成绩的规范化管理。 该成绩系统能够及时对学生成绩进行收集整理,使学校相关部门及时获取可靠的学生成绩信息,便于管理。方便各任课教师记录,统计所带班级学生成绩,提高工作效率,减轻负担,提高教学质量。实现快速方便地处理大量成绩数据信息,完成成绩的录入、修改、删除、查询等处理要求。方便学生查询自己各科目成绩。
1.3软件定义
学生成绩管理系统是记录了学生成绩的系统,可以实现查询、更新、插入、删除等功能。根据不同用户设置不同的权限,来确保学生成绩信息的安全行和完整性。
1.4开发环境
windows10操作系统,mysql5.6.17数据库服务器,Eclipse4.12.0,Navicat。
由于本系统管理的对象单一,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。
2.1经济可行性分析
随着科学技术的不断发展与创新,计算机作用的日益突显,计算机软件成为人们解决问题的一个有效手段,当然,它的作用也越来越重要。在当今信息时代,国民经济和国防建设、社会发展、人民生活都离不开软件,软件也无处不在。软件产业也是一个新兴产业,尽管起步晚,但是发展迅速,已经成为增长最快的产业,是具有高投入/高产出、无污染、低能耗的绿色产业。学生成绩管理系统是一个基于教务处数据库的一个管理系统,对已经使用的类似的系统进行调查分析、类比,本课题具有的特点:开发工作量小,可以有两个人合作开发或一个人独立开发,开发周期短,有熟练的开发人员一个月就可以完成系统的开发与测试。
2.2技术可行性分析
从技术方面来说,Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。可以利用所学的Java知识进行编程,再与数据库连接,通过SQL语句即可轻松查询和更新后台数据库中的数据。
3.1功能要求
根据用户需求,系统需向用户提供以下功能: 1、系统登录功能:根据教师、学生两种身份设计不同用户的操作权限和登录方式。 2、班级管理功能:班级的添加、修改、删除功能。 3、成绩管理功能:录入、修改、删除、查询、统计学生成绩,能一次性录入某班全部学生成绩。 4、信息管理功能:添加、修改、删除、查询学生基本信息,能一次性导入某班全部学生信息。 5、成绩查询功能:每个学生可以查询自己所有课程的成绩。教师可以查询所带班级的成绩,可以对成绩进行排序和统计。 图3-1-1 学生成绩管理系统功能结构图
3.2性能要求
1、易操作性:所开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。 2、可维护性:系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要。 3、可靠性:系统在运行中要不发生或极少发生故障,在偶然事故及操作失误时,系统应具有较强的出理能力,而不应造成信息的丢失或破坏。 4、安全性:保证系统的物理安全、数据存储和获取的安全与保密,做好使用人员的授权管理。 5、实用性:系统的设计应最大限度发挥计算机的高速处理、海量存储能力。 6、开放性:系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接,不会因外部系统的不同面要做在量的修改工作。
4.1 数据库需求分析
数据库对系统操作和处理的数据具有综合管理的作用,在具有信息管理的系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的执行效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。 数据库需求分析就是分析用户的需求,根据用户的需求,分析确定该系统会操作处理那些数据,对确定好的数据根据它们之间的关联关系进行结构设计。需求分析结果直接反映客户的要求,需求分析结果是否准确将直接影响到后面各个阶段的设计结果是否合理和正确。因此做好数据库的需求分析是非常重要的环节。 数据库需求分析的任务就是通过详细调查现实中要处理的对象,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。 针对该系统的要求,对该系统的数据库需求做了详细的分析。基于学生成绩管理系统的数据库功能主要体现在多用户登录信息、学生基本信息、教师基本信息、学生成绩信息的管理上。
4.2用户对系统的要求
4.2.1信息要求
老师能查询所有成绩相关信息,包括某一学生的学号、成绩等详细信息,学生能查到关于自己具体的信息,包括每门课的成绩,学院,专业,班级等
4.2.2处理要求
1、需查询学生相关信息时能进行查询; 2、学生成绩信息发生变更时,能进行修改、插入、删除等; 3、学生的信息发生变更时,能进行更新、删除。
4.2.3安全性与完整性要求
安全性要求: 1、系统应设置访问用户的标识以鉴别是否为合法用户,并设置密码,保证用户身份不被盗用; 2、对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容; 3、对不同用户设置不同的权限,区分不同用户,如学生、成绩管理员。
4.3数据需求描述
数据流图:
图4-3-1 顶层数据流图
数据字典: ①学生Student(学号Sno、姓名Sname、性别Sex、专业号Mno、班号Cnum) 属性名 字段类型 长度 主键或外键 说明 SNO INT 5 主键 学号 SNAME CHAR 20 姓名 SEX CHAR 2 性别 MNO INT 5 外键 专业号 CNUM INT 5 外键 班号
②教师Teacher(职工号Tno、姓名Tname、职称Title) 属性名 字段类型 长度 主键或外键 说明 TNO INT 5 主键 职工号 TNAME CHAR 20 姓名 TITLE CHAR 5 职称
③课程Course(课程号Cno、课程名Cname、学分Credit) 属性名 字段类型 长度 主键或外键 说明 CNO INT 5 主键 课程号 CNAME CHAR 30 课程名 CREDIT CHAR 2 学分
④班级Class(班号Cnum、人数Num) 属性名 字段类型 长度 主键或外键 说明 CNUM INT 5 主键 班号 NUM INT 5 人数
⑤系Depart(系号Dno、系名Dname) 属性名 字段类型 长度 主键或外键 说明 DNO INT 5 主键 系号 DNAME CHAR 30 系名
⑥专业Major(专业号Mno、专业名Mname、系号Dno) 属性名 字段类型 长度 主键或外键 说明 MNO INT 5 主键 专业号 MNAME CHAR 20 专业名 DNO INT 5 外键 系号 ⑦选课CV(学号Sno、课程号Cno、成绩Result) 属性名 字段类型 长度 主键或外键 说明 SNO INT 5 学号 CNO INT 5 课程号 RESULT CHAR 5 成绩
⑧学生—教师ST(学号Sno、职工号Tno、课程号Cno) 属性名 字段类型 长度 主键或外键 说明 SNO INT 5 学号 TNO INT 5 职工号 CNO INT 5 课程号
4.4逻辑结构设计
关系模式表: ①学生Student(学号Sno、姓名Sname、性别Sex、专业号Mno、班号Classno) 学号->姓名,学号->性别,学号->专业号,班号->专业号; ②教师Teacher(职工号Tno、姓名Tname、职称Title) 职工号->姓名,职工号->职称; ③课程Course(课程号Cno、课程名Cname、学分Credit) 课程号->课程名,课程号->学分; ④班级Class(班号Cnum、人数Num) 班号->人数; ⑤系Depart(系号Dno、系名Dname) 系号->系名; ⑥专业Major(专业号Mno、专业名Mname、系号Dno) 专业号->专业名,专业号->系号; ⑦选课CV(学号Sno、课程号Cno、成绩Result) 学号、课程号->成绩; ⑧学生—教师ST(学号Sno、职工号Tno、课程号Cno) 学号、职工号->课程号
其中①为第三范式,②③④⑤⑥⑦⑧均为BCNF范式
4.5 物理设计
4.5.1索引设计:
CREATE TABLE ( CHAr(20), INT(5), CHAr(2), INT(5), INT(5), PRIMARY KEY (), Index Student1(Sno) ); CREATE TABLE ( INT(5), CHAr(20), CHAr(5), Index Teacher1(Tno) ); CREATE TABLE ( CHAr(20), INT(5), CHAr(2), Index Course1(Cno) ); CREATE TABLE ( INT(5), INT(5), Index Class1(Cnum) ); CREATE TABLE ( CHAr(20), INT(5), Index Depart1(Dno) ); CREATE TABLE ( CHAr(20), INT(5), INT(5), Index Major1(Mno) ); CREATE TABLE ( INT(5), INT(5), CHAr(5), Index CV1(Sno,Cno) ); CREATE TABLE ( INT(5), INT(5), INT(5), Index ST1(Sno,Tno) );
4.5.2触发器设计:
1、删除课程表中的课程号,相应删除选课表和学生-教师表中的课程号: DELIMITER %% Create trigger deletorder after delete on Course for each row begin delete from CV where Cno=old.Cno; delete from ST where Cno=old.Cno; end %% DELIMITER %%
4.6数据库实施
4.6.1用户模式设计
视图设计: 1、成绩查询 Create view Rselect As Select cnum,CV.sno,sname,cno,result From Student,CV Where Student.sno=CV.sno; 2、学生所学课程及学分统计 Create view Total As Select Sno,CV.Cno,Cname,Credit From Course,CV Where Course.Cno=CV.Cno; 3、学生总成绩、平均成绩 Create view sum As Select CV.Sno 学号,sname 姓名,sum(result) 总成绩,avg(result) 平均成绩 From Student,CV Where Student.Sno=CV.Sno;
存储过程设计: 1、修改成绩 DELIMITER DELIMITER ; 2、查询总学分 DELIMITER DELIMITER ;
4.6.2安全性设计
新建表 create table user(username varchar(10),passw1 varchar(40),passw2 varchar(40)); insert into user values (‘user1’,MD5(‘110’),SHA1(‘110’)); insert into user values (‘user2’,MD5(‘120’),SHA1(‘120’)); insert into user values (‘user3’,MD5(‘112’),SHA1(‘112’));
Create user ‘cu1’@‘localhost’ identified by ‘110’; Create user ‘cu2’@‘localhost’ identified by ‘120’; Create user ‘cu3’@‘localhost’ identified by ‘112’;
给@ 授权,即管理员的权限 Grant all on Stu.Student to ‘cu1’@‘localhost’ with grant option; Grant all on Stu.Teacher to ‘cu1’@‘localhost’ with grant option; Grant all on Stu.Course to ‘cu1’@‘localhost’ with grant option; Grant all on Stu.Depart to ‘cu1’@‘localhost’ with grant option; Grant all on Stu.Major to ‘cu1’@‘localhost’ with grant option; Grant all on Stu.CV to ‘cu1’@‘localhost’ with grant option; Grant all on Stu.ST to ‘cu1’@‘localhost’ with grant option;
给@ 授权,即学生的权限 Grant select on Stu.CV to ‘cu2’@‘localhost’ with grant option;
给@ 授权,即教师的权限 Grant select,update on Stu.CV to ‘cu3’@‘localhost’ with grant option;
4.6.3事务设计
1、修改某一门课程的学分: Delimiter // Create Procedure BB(IN Cno1 INT(5),IN Cname1 CHAr(20),IN Credit1 CHAr(2)) Begin declare t_err int default 0; declare ConTINUE HANDLER FOR SQLEXCEPTION SET t_err = 1;
Start Transaction; Select Cno修改前的课程号 from Course where Cno=Cno1; Select Cname修改前的课程名 from Course where Cname=Cname1; Select Credit修改前的学分 from Course where Cno=Cno1; do sleep(20);/暂停20秒/ Update Course set Credit = Credit1 where Cno=Cno1; Select Credit 修改后的学分 from Course where Cno=Cno1; if t_err =1 then Rollback; end if; end //
Delimiter ;
2、修改成绩: Delimiter // Create Procedure BC(IN Sno1 INT(5),IN Cno1 INT(5),IN Result1 CHAr(5)) Begin declare t_err int default 0; declare ConTINUE HANDLER FOR SQLEXCEPTION SET t_err = 1;
Start Transaction; Select sum(Result)修改成绩前的总分 from CV where Sno=Sno1; Select avg(Result)修改成绩前的平均分 from CV where Sno=Sno1; Select Result查询需要修改的课程号的成绩 from CV where Sno=Sno1 and Cno=Cno1; do sleep(20);/暂停20秒/ Update CV set Result = Result1 where Sno=Sno1 and Cno=Cno1; Select Result查询修改后的课程号的成绩 from CV where Sno=Sno1 and Cno=Cno1; Select sum(Result)修改成绩后的总分 from CV where Sno=Sno1; Select avg(Result)修改成绩后的平均分 from CV where Sno=Sno1;
end //
Delimiter ;
5.1登陆界面
图5-1-1 登陆界面
图5-1-2 登陆成功界面
5.2学生成绩查询界面
图5-2-1 学生成绩查询界面图
5.3教师界面
图5-3-1 教师界面图
图5-3-2 新增学生信息界面图
图5-3-3 更新学生信息界面图
图5-3-4 删除学生信息界面图
通过学生成绩管理系统项目设计,加深了对数据库设计的理解,对于设计一个数据库项目的流程有了一定的概念。在这次项目设计中,回顾了以前很多的知识点,但是也发现了很多问题,最终解决了,所以也收获了很多。 此次项目的设计让我们对Mysql数据库的了解更加深入,了解到了更多的知识点,也对Navicat软件有了一定的了解。在整个设计过程中,通过把各个管理信息连接起来的分析,锻炼了我们对事情的分析能力,通过怎么解决过程中遇到的问题,提高了我们查找文献的能力,对网络资源利用的能力与同学交流的能力。 项目最终开发出来的程序实现的功能比较简单,但也基本达到了项目设计的要求,可以看出设计程序的组员是花了不少心思的。 最重要的是,这次数据库项目的设计,为我们以后程序开发的道路打下了扎实的基础。