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