JAVA课内实验报告 学生成绩管理系统
一. 实验目的及实验环境
实验目的:在如今的高校日常管理当中,学生成绩管理系统就是其中非常重要的一环,特别是当前学生规模大,课程门类多,校区分散等实际情况,学生成绩管理系统更具有非常大的实际应用意义。但是,我们看到,其实我们学校的学生成绩管理系统在很多方面作的不是很完善,功能方面也有欠缺。随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学生成绩管理的工作量。该课程设计旨在设计一个学生成绩的数据库管理系统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的考试成绩。要方便学生进行成绩查询,通过该课程设计,应该达到把java理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。 实验环境:
JAVA开发工具MyEclipse 8.5 Microsoft SQL Server 2005
二. 实验内容
在JAVA开发工具MyEclipse 8.5和Microsoft SQL Server 2005环境下,运用学到的java和数据库理论知识,设计一个具有简单的增加`删除`修改`查询操作的学生成绩管理系统。 三.方案设计
1、系统功能设计要求
此系统实现如下功能 : (1)使得学生的成绩管理工作更加清晰、条理化、自动化。
(2)通过用户名和密码登录系统,查询、删除、修改和增加课程基本资料`学生所选课程`用户密码等功能。 容易地完成学生成绩信息及学生信息的基本操作。 (3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。 2、系统模块设计
学生成绩管理系统大体可以分成两大模块: 一是学生的基本信息模块,里面应该包含学生的各方面的基本信息;二是课程管理模块, 在该模块中应该包含有对学生成绩信息的查询和处理;可以得到的系统流程图如下图2.1所示:
系统启动
学籍管班级管关于系课程设成绩管
管理
图2.1 学生成绩管理系统的系统流程图
3、数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名 称、数据类型、长度、取值能否为空。利用SQL Server 2005建立学生成绩管理系统数据库,其基本表清单及表结构描述如下: 数据库中用到的表,结构如下表3.1所示:
表3.1 数据库中表的信息
数据库表名 关系模式名称 备注 Class 班级 学生班级信息表 Course 课程 课程基本信息表 Result 成绩 学生成绩信息表
Gradecourse 年级课程 年级课程信息表 Student 学生 学生基本信息表 Users 用户 系统用户基本信息表
Class基本情况数据表,结构如下表3.2所示:
表3.2 class表的数据信息
字段名 字段类型 约束控制 说明
班级编Intnot null primary keyclass_No 年级not nullGradeInt
班主Directornot nullchar(10) 教室char(10)classroom_Nonot null
Course基本情况数据表,结构如下表3.3所示: 表3.3 course表的数据信息
字段名 字段类型 约束控制 说明 课程编号 course_No Int not null
课程名varchar (50) course_Name not null 课程类别 course_Type default('必修') char(10) 课程备注 course_Des char(50)
Student基本情况数据表,结构如下表3.4所示: 表3.4 student表的数据信息
字段名 字段类型 约束控制 说明
学生学号primary key not null Int student_ID 学生姓名varchar(50) student_Name not null
学生性别) not null('男'student_Sex or ‘char(2) 女'出生日期 not null born_Date Datetime 班级号class_NO Int
联系电话not null tele_Number varchar(50) 入学年份Datetime not null ru_Date
家庭住址varchar(50) default('地址不详address ') 备注信息varchar(200) comment
Gradecourse基本情况数据表,结构如下表3.5所示: 表3.5 Gradestudent表的数据信息 字段名 字段类型 约束控制 说明 年级char(10) not null Grade 课程名称not null course_Name char(10)
Result基本情况数据表,结构如下表3.6所示: 表3.6 Rsult表的数据信息
字段名 字段类型 约束控制 说明 考试编号not null exam_No char(10) 学生学号 外键 student_ID Int not null 学生姓名varchar(50) not null student_Name 班级编号 外键not null Int class_No
course_Name varchar(50) Float result
not null not null 课程名称 课程成绩 Users基本情况数据表,结构如下表3.7所示: 表3.7 Users表的数据信息 字段名 字段类型 varchar(50) Username Pwd varchar(50) varchar(50) power 约束控制 not null not null not null 说明 用户名 用户密码 用户权限 4.由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:学号、姓名、性别、出生日期、班级编号、联系电话、入学年份、家庭地址,备注信息。
(2)课程基本信息: 课程名、课程号、课程类型、备注信息。
(3)成绩基本信息:考试编号、学生学号、学生姓名、班级号、课程名称、成绩。
(4)班级基本信息:班级编号、年级、班主任、教师编号。 由上述分析可得到系统的E—R图如下图4.1所示:
备注 地址备注 编号 生日 学号 姓名 学生成绩 分数 课程 类型课程名 性别
E—R图 图4.1 学生成绩管理系统5.逻辑和物理结构设计 (1) 由系统E—R图转化而得到的关系模式如下:
学生(学号、姓名、性别、出生日期、班级编号、联系电话、入学年份、家庭地址,备注信息),其主关键字为学生学号; 课程(课程名、课程号、课程类型、备注信息),其中主关键字为课程编号; 成绩(考试编号、学生学号、学生姓名、班级号、课程名称、成绩)。 确定关系模型的存取方法(2).
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面作用。 (3)确定数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。因为该成绩管理系统的数据量小,,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排
四.测试数据及运行结果
1. 正常测试数据(3组)及运行结果; 登陆界面,如下图5.1所示
用户登陆成功界面 图5.1
添加界面,如下图5.2所示
添加课程信息界面 图5.2 所示修改界面,如下图5.3
修改密码界面图5.3
2非正常测试数据(组)及运行结果。2. 6.1用户登录界面,如下图所示(输入不存在的用户信息)
用户登录错误界面 图6.1 6.2所示添加界面,如下图 添加信息输入错误数据类型界面 图6.2
)
用户登录界面重要代码( login_actionPerformed(ActionEvent e) { void username = JOptionPane.showInputDialog(this, 请输入用户名);
String pwd = JOptionPane.showInputDialog(this, 请输入密码);
if (! (username == null && pwd == null)) { 连接数据库,验证用户// {try
com.microsoft.sqlserver.jdbc.SQLServerDriv(Class.forName);
牥( Connection con = DriverManager.getConnection jdbc:sqlserver://localhost:1433;databasename=StudentScor); 獜屡,祜湡浧湥屧e , =
ps,Rescon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE); ultSet.CONCUR_READ_ONLY {
tryselect * from users where .executeQuery(ps rs =
读取数据库 + ??); //獵牥慮敭?岯 +username
五.总结
. 实验过程中遇到的问题及解决办法;1的连接方面的技术,所以sql server和eclipse本次实验因为以前没有接触过以及请教大四的学长上网`刚开始不知道如何操作,后来通过去图书馆查阅资料`连接桥有了初步的了解,在后期的编程中才发现自己平时在课堂上学的jdbc对东西没有很好的实践,在运用时总是有一些小错误,如不知道dispose()这个函数是干什么用的,通过查阅课本和资料了解了它是用来销毁窗口,释放资源的一个函数 2. 对设计及调试过程的心得体会。 这次上机实验,虽然过程中遇到了大大小小的问题,不过后来在自己翻阅资料请教别人的过程中,理论与实践的结合让我可以明显感觉到自己对java知识有了跟深入的掌握及了解,如java环境变量的设置以及参数的返回值问题等一些必
不可少的基础知识都比以前有了更多的了解,同时也让我明白了平时一定要勤加练习,将课本上死的知识变成自己的,实践出真知应该就是这个道理。