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表的数据信息 字段名 class_No Grade Director classroom_No 字段类型 Int Int char(10) char(10) 约束控制 not null primary key not null not null not null 说明 班级编号 年级号 班主任 教室号 Course基本情况数据表,结构如下表3.3所示:
表3.3 course表的数据信息 字段名 course_No course_Name course_Type course_Des 字段类型 Int varchar (50) char(10) char(50) 约束控制 not null not null default('必修') 说明 课程编号 课程名 课程类别 课程备注
Student基本情况数据表,结构如下表3.4所示:
表3.4 student表的数据信息 字段名 student_ID student_Name student_Sex born_Date class_NO tele_Number ru_Date address comment 字段类型 Int varchar(50) char(2) Datetime Int varchar(50) Datetime varchar(50) varchar(200) 约束控制 primary key not null not null not null(’男’ or ‘女’) not null not null not null default('地址不详') 说明 学生学号 学生姓名 学生性别 出生日期 班级号 联系电话 入学年份 家庭住址 备注信息 Gradecourse基本情况数据表,结构如下表3.5所示:
表3.5 Gradestudent表的数据信息 字段名 Grade course_Name 字段类型 char(10) char(10) 约束控制 not null not null 说明 年级 课程名称 Result基本情况数据表,结构如下表3.6所示: 表3.6 Rsult表的数据信息 字段名 exam_No student_ID student_Name class_No 字段类型 char(10) Int varchar(50) Int 约束控制 not null not null 外键 not null not null 外键 说明 考试编号 学生学号 学生姓名 班级编号
course_Name result varchar(50) Float not null not null 课程名称 课程成绩 Users基本情况数据表,结构如下表3.7所示: 表3.7 Users表的数据信息 字段名 Username Pwd power 字段类型 varchar(50) varchar(50) varchar(50) 约束控制 not null not null not null 说明 用户名 用户密码 用户权限 4.由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:学号、姓名、性别、出生日期、班级编号、联系电话、入学年份、家庭地址,备注信息。
(2)课程基本信息: 课程名、课程号、课程类型、备注信息。
(3)成绩基本信息:考试编号、学生学号、学生姓名、班级号、课程名称、成绩。
(4)班级基本信息:班级编号、年级、班主任、教师编号。 由上述分析可得到系统的E—R图如下图4.1所示:
备注 地址 生日
学号 学生
姓名
性别
编号 备注 成绩 课程 类型 课程名 分数 图4.1 学生成绩管理系统E—R图
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 添加信息输入错误数据类型界面
重要代码(用户登录界面)
void login_actionPerformed(ActionEvent e) {
username = JOptionPane.showInputDialog(this, \"请输入用户名\");
String pwd = JOptionPane.showInputDialog(this, \"请输入密码\");
if (! (username == null && pwd == null)) { try {//连接数据库,验证用户
Class.forName(\"com.microsoft.sqlserver.jdbc.SQLServerDriver\");
Connection con = DriverManager.getConnection(
\"jdbc:sqlserver://localhost:1433;databasename=StudentScore \",\"sa\",\"yangmeng\"); ps =
con.createStatement(ResultSet.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环境变量的设置以及参数的返回值问题等一些必不可少的基础知识都比以前有了更多的了解,同时也让我明白了平时一定要勤加练习,将课本上死的知识变成自己的,实践出真知应该就是这个道理。
因篇幅问题不能全部显示,请点此查看更多更全内容