学生成绩管理系统项目开发设计文档Ver1.0编制:骆华审核:2014年8月一、项目介绍随着各个学校的规模不断壮大,学生人数逐年增加。关于学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。但人工管理又有着许多缺陷,比如:效率底、易出错、检索信息慢、对学校的管理提供决策信息较为困难等。学校不能完全掌握每一个学生的学习情况,这样对学校的教学工作及其不利,使学校的教学质量一直停滞不前,所以我想借本次毕业设计之际,开发一个不仅适用于各校的通用高校学生成绩管理系统,使学校能够充分掌握学生的学习情况,便于学校教学工作的进行和改革。建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效率和现代化水平。使学校对学生的成绩能够快速并准确的录入、修改和查询,更好地掌握每个学生的各科成绩,便于教师的管理。使学生对个人的学习成绩进行更快的查询。让老师能够更好、更快的了解学生的学习情况,使学校的教学质量进一步的提高。现在我国的一些院校的学生成绩管理水平普遍不高,有的还停留在纸介质基础上,这种管理手段已不能适应时代的进展,因为它浪费了太多的人力和物力。在当今的信息时代,这种传统的管理方法必然被计算机为基础的信息管理系统所取代。如果本系统能被学校所采用,将会改变以往靠手工管理学生成绩的状况,可以树立良好的办学形象,提高工作效率,节省人力和物力。二、项目需求(一)功能需求该学生成绩管理系统具备三方面的功能:一方面是学生用户,学生通过输入学号和密码进入系统后,可以进行一些基础查询(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;一方面老师进入该系统则比学生多一些权限:成绩输入、成绩查询。具体功能的详细描述如下1选择[学生基本维护]菜单命令,即可进入[学生基本维护]功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击[添加]就可以了。需要删除一条信息,则只要选择这条信息再点击[删除]。在搜索条件中输入相关的条件,单击[查询]就可查找信息。2选择[学生信息查询]菜单命令,即可进入[学生信息查询]功能窗体,在其中的下拉列表中选择你要看的信息,则在下面的表格中显示你要的信息。3选择[成绩管理][添加成绩]菜单命令,即可进入[添加成绩]功能窗体,此功能权限只有管理员和教师。4选择[成绩管理][输入成绩]菜单命令,即可进入[输入成绩]功能窗体,此功能权限只有管理员和教师。5选择[成绩管理][修改成绩]界面,此功能规管理员所有。6选择[成绩管理][查询成绩]界面此界面对学生也是可见的,它的权限规所有用户所有。7选择[登陆][重新登陆]则会返回登陆界面,为用户提供方便。8选择[退出]将退出整个系统。(二)性能需求时间特性要求:在软件方面,响应时间有点慢,因为是用MyEclipse做的,它占用内存比较大,更新处理时间比较快而且迅速。安全性:设立口令号和密码验证方式,防止非法用户登录进行操作。也就是用户只有管理员、学生和教师才能进入这个系统,用户凭口令号和密码进入此系统,系统会自动判断用户是那种类型,分别拥有不同的权限。三、涉及主要知识点1.掌握创建一个新的窗口。2.掌握在窗口中添加文本框、按钮、容器。3.对添加的文本框、按钮添加事件监听器。4.掌握构造方法的调用。5.掌握java面向对象。6.掌握java与数据库之间的连接语句。7.Java语言程序设计:布局管理器:BorderLayout、GridLayout8.输入输出流:InputStream、OutputStream9.数据库原理:结构化查询语句:select、insert10.数据库表的设计:定义一个二维数组用于存放查询的数据,在窗体上设置一个表格以便可以用来输出查询的数据11.存储过程的使用四、概要设计1、开发模式:采用C/S架构模式。所谓的C/S架构模式是指:C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。2、模块划分:五、数据库设计5.1确定联系集及E-R图根据前面对系统进行的分析,已经初步了解了学生成绩管理系统的数据处理流程,找出与系统有关的各个实体及其相互联系如下:①、实体集:班级,课程,学生,成绩,教师,专业,用户。②、标示联系集:学生和班级:一个班由多个学生组成,一个学生只能归属于某个班;存在“归属”的关系:N:1学生和课程:一个学生可以选修多门课程,一门课程提供给多个学生选修;存在“选修”的关系:N:M关系Score的主码是{studentNo,courseNo,term}显然同一个学生在同一个学期不允许修读同一门课程多次关系Course的priorCourse属性参照本关系的主码courseNo属性。这里假设一门课程最多只需要定义一门先修课程。③、标示属性集:班级(班级编号,班级名称,专业编号,班级人数)课程(课程号,课程名,学分,理论课时,实践课时)学生(学号,姓名,性别,出生日期,地址,所属班级,联系电话)成绩(学号,课程号,平时成绩,实验成绩,期末成绩,总成绩)用户(用户编号,用户密码,用户类型)教师(教师编号,教师姓名,性别,办公电话,地址,出生年月)专业(专业编号,专业名称)5.2画出E-R图班级信息图如下:图5-1班级实体集的E-R图学生信息图如下:图5-2学生实体集E-R图课程信息图如下:图5-3课程实体集E-R图ClassClassidclassNameSpecialtyidStudentnumberRemarkCourseKcidkcNamecreditPeriodteachingPeriodexpriment成绩信息图如下:图5-4成绩实体集E-R专业信息图如下:图5-5专业实体集E-R教师信息图如下:图5-6教师实体集E-R用户信息图如下:图5-7用户实体集E-R5.3逻辑数据库设计阶段逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。设计学生成绩管理数据库,包括班级,课程,学生,成绩,教师,专业,用户七个关系,其关系模式中对每个实体定义的属性如下:课程信息表ClassInfo:(Classid,Specialtyid,Studentnumber,ClassName,remark)学生信息表StudentInfo:(Sno,Sname,Sex,Birthday,Classid,Tel,Address)课程信息表CourseInfo:(Kcid,Kcname,Periodexpriment,Periodteaching,credit,coursetype)成绩表StuGrade:(Sno,Cno,Gradepeacetime,Gradeexpriment,Gradelast,Grade)教师表TeacherInfo:(Teaid,Teaname,Teasex,Teloffice,Address,TeaBirthday)专业表SpecialtyInfo:(Specialtyid,Specialtymc)用户表UserInfo:(Userid,Userpwd,Userlevel)设计出E-R图后,可将E-R图转换为数据库模式。本系统建立的数据库为“ScoreDB”,运行本系统时在库中所建立的表分别介绍如下:5.4班级信息表(ClassInfo)字段名描述数据类型字段限制Classid班级编号varchar(10)PrimarykeyclassName班级名称varchar(30)NotnullSpecialtyid专业编号varchar(4)NotnullStudentnumber班级人数intnullremark备注Varchar(100)null5.5学生信息表(StudentInfo)字段名描述数据类型字段权限Sno学号varchar(10)PrimarykeySname姓名Varchar(20)NotnullSex性别char(2)NotnullBirthday出生日期DatetimenullClassid班级编号varchar(10)NotnullTel联系电话varchar(20)nullAddress地址varchar(100)null5.6课程信息表(CourseInfo)字段名属性数据类型字段权限Kcid课程号varchar(10)PrimarykeyKcname课程名varchar(50)NotnullPeriodexpriment实验学时intNotnullPeriodteaching理论学时intNotnullcredit学分numericNotnullcoursetype类型Varchar(6)Notnull5.7成绩表(StuGrade)字段名属性数据类型字段权限Sno学号varchar(10)PrimarykeyCno课程号varchar(10)PrimarykeyGradepeacetime平时成绩numericNullGradeexpriment实验成绩NumericNullGradelast期末成绩NumericNullGrade总成绩NumericNull5.8教师表(TeacherInfo)字段名属性数据类型字段权限Teaid教师编号varchar(10)PrimarykeyTeaname教师姓名varchar(20)NotnullTeasex性别Char(2)NotnullTeloffice办公电话Varchar(20)NotnullAddress地址Varchar(100)nullTeaBirthday出生年月Datetimenull5.9专业表(SpecialtyInfo)字段名属性数据类型字段权限Specialtyid专业编号varchar(4)PrimarykeySpecialtymc专业名称varchar(50)Notnull5.10用户表(UserInfo)字段名属性数据类型字段权限Userid用户编号varchar(10)PrimarykeyUserpwd密码varchar(10)NotnullUserlevel类型varchar(10)Notnull六、界面设计本项目的登录界面(1):本项目的主界面采用菜单式:七、类设计本项目包含cclass、course、main、profess、score、student、teacher、以及user8个包,具体设计如下:1、cclass包cclass包主要是设计班级操作的一些相关类,具体设计如下:2、course包course包主要是设计课程操作的一些相关类,具体设计如下:3、main包main包里主要是设计数据库操作类、窗体布局、登录窗体以及主窗体界面,具体设计如下:4、profess包profess包主要是设计专业操作的一些相关类,具体设计如下:5、score包score包主要是设计成绩操作的一些相关类,具体设计如下:6、student包student包主要是设计学生操作的一些相关类,具体设计如下:7、teacher包teacher包主要是设计教师操作的一些相关类,具体设计如下:8、user包user包主要是设计系统用户操作的一些相关类,具体设计如下:八、技术难点、解决方案和关键代码1、对于系统中多窗体层叠排列处理//层叠窗体publicstaticvoidcengdie(JDesktopPanedsp){try{int[]sum={0,50,100,150,200,250,300,350,400,450,500,550,600};JInternalFrame[]interfrane=dsp.getAllFrames();for(inti=0;i