JAVA程序课程设计_一个简单的学生成绩管理信息系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能组件 4 个按钮、1 个背景、1 个标签文本、1 个面板 功能实现 查询数据、添加数据、删除数据、修改数据 实现过程 对按钮添加监控,共有 4 个监控事件,实现按钮事件为创建对应 得得得得得得得功能的类对象,出现相应的功能窗口。 截图如下:
-4-
1.主界面
3. 算法实现及分析 (内容:要求小四号字体)
-7-
(7)没有退出的按钮,尚未实现退出语句。
5. 设计体会与小结
(内容:要求小四号字体)
选择“一个简单的学生成绩管理系统”作为这一次的课题,是因为这个课题 主要运用的是 Java 与数据库的相关知识,而这个学期,我们正好学习了这两门 课程,在这个课题中 Java 与数据库知识的结合,是对这两个课程理解学习成果 的一个双重考察。
query=new JButton("查询数据"); query.addActionListener(new queryActionPerformed()); query.setBackground(Color.green);
modify=new JButton("修改数据"); modify.setBackground(Color.green); modify.addActionListener(new modifyActionPerformed());
-9-
附录(源代码)
(内容:要求小五号字体)
一、架包
package com.tarena.util;
import java.sql.Connection; import java.sql.DriverManager;
public class ConnectionUtil { public static Connection getConnection()throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/JSD1407"; String user="root"; String password="1234"; Connection conn=DriverManager.getConnection(url,user,password); return conn; } public static void main(String[] args) throws Exception{ System.out.println(getConnection()); }
2.添加数据
3.修改数据
-5-
4.删除数据
5.查询数据 (1)按学号查询 (2)按姓名查询 (3)按班级查询
(4)按课程名称查询
-6-
(5)显示所有信息
4. 运行调试与讨论 (内容:要求小四号字体)
1.运行与调试过程中遇到的如下的问题 (1)数据库的链接出现问题,导致表格找不到。
解决方法重新建表 (2)编译时系统没有提示错误,但是运行的界面中某些接口不能实现。
//s 通过打印看一下是否连接上了 } //将获得连接的方法封装
二、建表语言
create table student( no varchar(10) not null, name varchar(50) not null, class_no varchar(2) not null, chinese double(3,1) not null, math double(3,1) not null, english double(3,1) not null, primary key(no)); desc student; insert into student(no,name,class_no,chinese,math,english) values(120702101,' 陈丽芳',1,66,77,88); select * from student;
扬州大学数学科学学院 java 程序设计实验报告
课 题:一个简单的学生成绩管理信息系统
姓 名:
学 号:
班 级:
指导教师:
时 间:
12 月 20 日
团队完成:
考核结果
-1-
1. 绪论
(内容:要求小四号字体)
此次课题是一个简单的学生管理系统,该课题涉及数据库、Java 等领域。要 求达到以下功能:
1. 能够根据学生姓名 、学号、班级、课程名称查询具体内容。 2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。 3. 能够实现学生信息的插入、删除和修改。 4. 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。 5. 能够查询每个班级某门课程的优秀率(90 分及以上)、不及格率,并进行 排序。 6.能够使用图形界面进行操作。 要实现这些功能需要熟练使用数据库和 Java 编得程语言,并且能够实现数据 库和 Java 的连接。
刚看到这个课题的时候,就先大体确定了整体思路,这个课题要求熟悉数据库, Java 编程。实现过程中我们需要先在数据库中建立好表,再进行好与 Java 的连 接,再运用 myeclipse 编程。
思路有了,但真正实施的时候出现了很多问题。通过相关资料的查询和请教上 一届的学长,在 Java 中建立了架包,建立 ConnectionUtil 类,获得与数据库 JSD1407 的连接,在编程语言环境下写好建表语言,添加包含学生学号、姓名、 班级,语文、数学、英语成绩的数据。与数据库的连接出现了表丢失的现象、要 实现这个学生成绩管理系统,需要一个主类,以及涉及插入,删除,查询,修改
-8-
的子类,在主类中调用,达到效果。 由于对 Java 语句没有很熟悉的掌握,导致很多代码显得累赘繁琐。在界面上,
建立了 4 个按钮、1 个背景、1 个标签文本、1 个面板,
参考文献 (内容:要求五号字体)
1.数据库系统基础教程(第三版) 机械工业出版社 2.Java 程序设计(第三版) 清华大学出版社
学生成绩信息表
类型
空值
文本
not null
文本 文本
长整数 长整数
长整数
约束条件 主键 从键 从简
-2-
·数据库截图
2)利用 Java 实现数据库连接,使其可以调用数据库表格中的内容。 具体截图如下:
3)Java 程序编写思路: 主要编写了 5 个类: 将添加数据、查询数据、删除数据、修改数据四个功能分 别为四个类来实现,此外还有一个主类用于实现面板。 Insert 类: 功能组件 6 个文本域、6 个标签、1 个按钮 功能实现 添加数据 实现过程 对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行 SQL 的 INSERT 语句。 Delete 类: 功能组件 1 个单行文本、1 个标签、1 个按钮、1 个多行文本 功能实现 删除数据 实现过程 与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域中
-3-
的学号信息,并执行 SQL 的 DELETE 语句;不同的是以学号为主键进行查找并将 删除信息输出到文本框中。 Modify 类: 功能组件 6 个单行文本、6 个标签、1 个按钮 功能实现 修改数据 实现过程 与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中 的信息,并执行 SQL 的 UPDATE 语句;不同的是以学号为主键进行查找并更新。 Query 类: 功能组件 5 个按钮、三个单行文本组件、1 个下拉框、1 个多行文本 功能实现 按学号查询、按姓名查询、按班级查询、按课程查询、显示全部 实现过程 对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先获 取文本域中的信息,根据对应查询的要求执行相应的 SQL 的 SELLECT 语句;按课 程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询按钮将 全部信息在多行文本框中输出。 MyFrame 类: 主类,实现面板,可在其上进行对插入、删除、修改、查询等方法的调用,并且 对界面进行了设计和规划。 4)界面设计:
三、Java 编程
MainFrame 类 import javax.swing.*;
- 10 -
import java.awt.*; import java.awt.event.*;
public class MainFrame extends JFrame{
JButton insert,query,delete,modify; JPanel panel,panel1,panel2; public MainFrame() {
2. 设计思路
(内容:要求小四号字体)
1)建立数据库表格:将班级、姓名、学号、成绩等具体信息录入数据库。
·数据库系统设计 成绩查询系统—--
学号 姓名 班级 语文 数学 英语
·系统逻辑结构设计
字段名 学号 姓名 班级 语文 英语 数学
属性 ID name class Chinese English Maths
解决方法:经检查发现是连接数据库的密码错误,改正后可以运行。 2.此程序还存在下列不完善的地方 (1)面板设计较为单调,欠缺调色,还可以在面板上添加制作人等信息。 (2)在添加信息时,光标可以依靠键盘上下移动,不需要鼠标点击,这样可以 更方便快捷。 (3)修改数据的界面比例不是很协调 (4)修改数据的源代码不能实现选择性的修改:例如根据学号修改姓名。 (5)显示信息不能做到数据的对齐,使得界面不美观。 (6)第一次查询用的信息不能自动更新,导致后面的查询给人一种凌乱感:例 如先使用学号 120702119 查询,再使用姓名“张三”查询,此时上一个学号的信 息还保留,并不能更新到“张三”的学号。
在这个过程中,我们遇到了许多问题,如数据库连接不上,程序编译没有错 误,但功能无法实现等,学长都给了我们很大帮助,一次次修改尝试,最终得到 了现在的版本,虽然有许多不足与缺点,但是课题顺利完成仍是给了我们很大的 满足感,也让我们体会到了程序员的辛苦。
通过这次课题的研究,让我充分认识到了自己距离一个合格的程序员还很 远,认识到自己相关知识的的储备量还很少,对现在所学的 Java 及数据库课程 的掌握程度还不够,但是在这个过程中我也学习到了很多相关知识,充分的认识 到要想学好编程语言,就必须勤动手,要经常练习,才能熟练掌握每一种方法, 光靠大脑的记忆是远远不够的,只能是纸上谈兵。在以后的课程学习中,我一定 会更加重视实践练习,养成良好的编程习惯,这样才能做一个合格的程序员。
第一步,我们确定了课程的整体思路。首先在数据库中建好相关表格,然后 将数据库连接到 Java,最后运用 Java 编程实现相关界面与系统功能。
思路确定后,在具体实现过程中,我们遇到了一些问题。首先我们对 Java 连接数据库的相关知识不是特别清楚,其次应用 Java 编程实现相关界面不是很 熟练。为了解决这些问题,顺利完成课题,我们查阅了相关的资料并且请教了上 一届的学长,了解了什么叫做架包,知道了怎么实现数据库与 myeclipse 的连接, 如何在 myeclipse 的环境中使用建表语句以及实现相关界面。有了这些知识作为 基础,我们的课程设计便走上了正轨。首先,我们在数据库中建立了包含学生学 号、姓名、班级,语文、数学、英语成绩的数据的表格,然后 Java 中建立了架 包,建立 ConnectionUtil 类,获得与数据库的连接,最后就是在 myeclipse 环 境下,运用 Java 语句,将添加数据、查询数据、删除数据、修改数据四个功能 分为四个类来实现,另外用一个主类实现面板,可在其上进行插入、删除、修改、 查询等功能,并且对界面进行了设计和规划。
// TODO Auto-generated method stub ImageIcon img=new ImageIcon("1.gif"); JLabel text1,text2,picture=new JLabel(img);
JFrame frame=new JFrame("学生成绩管理系统"); insert=new JButton("添加数据"); insert.setBackground(Color.green); insert.addActionListener(new insertActionPerformed());
-4-
1.主界面
3. 算法实现及分析 (内容:要求小四号字体)
-7-
(7)没有退出的按钮,尚未实现退出语句。
5. 设计体会与小结
(内容:要求小四号字体)
选择“一个简单的学生成绩管理系统”作为这一次的课题,是因为这个课题 主要运用的是 Java 与数据库的相关知识,而这个学期,我们正好学习了这两门 课程,在这个课题中 Java 与数据库知识的结合,是对这两个课程理解学习成果 的一个双重考察。
query=new JButton("查询数据"); query.addActionListener(new queryActionPerformed()); query.setBackground(Color.green);
modify=new JButton("修改数据"); modify.setBackground(Color.green); modify.addActionListener(new modifyActionPerformed());
-9-
附录(源代码)
(内容:要求小五号字体)
一、架包
package com.tarena.util;
import java.sql.Connection; import java.sql.DriverManager;
public class ConnectionUtil { public static Connection getConnection()throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/JSD1407"; String user="root"; String password="1234"; Connection conn=DriverManager.getConnection(url,user,password); return conn; } public static void main(String[] args) throws Exception{ System.out.println(getConnection()); }
2.添加数据
3.修改数据
-5-
4.删除数据
5.查询数据 (1)按学号查询 (2)按姓名查询 (3)按班级查询
(4)按课程名称查询
-6-
(5)显示所有信息
4. 运行调试与讨论 (内容:要求小四号字体)
1.运行与调试过程中遇到的如下的问题 (1)数据库的链接出现问题,导致表格找不到。
解决方法重新建表 (2)编译时系统没有提示错误,但是运行的界面中某些接口不能实现。
//s 通过打印看一下是否连接上了 } //将获得连接的方法封装
二、建表语言
create table student( no varchar(10) not null, name varchar(50) not null, class_no varchar(2) not null, chinese double(3,1) not null, math double(3,1) not null, english double(3,1) not null, primary key(no)); desc student; insert into student(no,name,class_no,chinese,math,english) values(120702101,' 陈丽芳',1,66,77,88); select * from student;
扬州大学数学科学学院 java 程序设计实验报告
课 题:一个简单的学生成绩管理信息系统
姓 名:
学 号:
班 级:
指导教师:
时 间:
12 月 20 日
团队完成:
考核结果
-1-
1. 绪论
(内容:要求小四号字体)
此次课题是一个简单的学生管理系统,该课题涉及数据库、Java 等领域。要 求达到以下功能:
1. 能够根据学生姓名 、学号、班级、课程名称查询具体内容。 2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。 3. 能够实现学生信息的插入、删除和修改。 4. 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。 5. 能够查询每个班级某门课程的优秀率(90 分及以上)、不及格率,并进行 排序。 6.能够使用图形界面进行操作。 要实现这些功能需要熟练使用数据库和 Java 编得程语言,并且能够实现数据 库和 Java 的连接。
刚看到这个课题的时候,就先大体确定了整体思路,这个课题要求熟悉数据库, Java 编程。实现过程中我们需要先在数据库中建立好表,再进行好与 Java 的连 接,再运用 myeclipse 编程。
思路有了,但真正实施的时候出现了很多问题。通过相关资料的查询和请教上 一届的学长,在 Java 中建立了架包,建立 ConnectionUtil 类,获得与数据库 JSD1407 的连接,在编程语言环境下写好建表语言,添加包含学生学号、姓名、 班级,语文、数学、英语成绩的数据。与数据库的连接出现了表丢失的现象、要 实现这个学生成绩管理系统,需要一个主类,以及涉及插入,删除,查询,修改
-8-
的子类,在主类中调用,达到效果。 由于对 Java 语句没有很熟悉的掌握,导致很多代码显得累赘繁琐。在界面上,
建立了 4 个按钮、1 个背景、1 个标签文本、1 个面板,
参考文献 (内容:要求五号字体)
1.数据库系统基础教程(第三版) 机械工业出版社 2.Java 程序设计(第三版) 清华大学出版社
学生成绩信息表
类型
空值
文本
not null
文本 文本
长整数 长整数
长整数
约束条件 主键 从键 从简
-2-
·数据库截图
2)利用 Java 实现数据库连接,使其可以调用数据库表格中的内容。 具体截图如下:
3)Java 程序编写思路: 主要编写了 5 个类: 将添加数据、查询数据、删除数据、修改数据四个功能分 别为四个类来实现,此外还有一个主类用于实现面板。 Insert 类: 功能组件 6 个文本域、6 个标签、1 个按钮 功能实现 添加数据 实现过程 对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行 SQL 的 INSERT 语句。 Delete 类: 功能组件 1 个单行文本、1 个标签、1 个按钮、1 个多行文本 功能实现 删除数据 实现过程 与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域中
-3-
的学号信息,并执行 SQL 的 DELETE 语句;不同的是以学号为主键进行查找并将 删除信息输出到文本框中。 Modify 类: 功能组件 6 个单行文本、6 个标签、1 个按钮 功能实现 修改数据 实现过程 与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中 的信息,并执行 SQL 的 UPDATE 语句;不同的是以学号为主键进行查找并更新。 Query 类: 功能组件 5 个按钮、三个单行文本组件、1 个下拉框、1 个多行文本 功能实现 按学号查询、按姓名查询、按班级查询、按课程查询、显示全部 实现过程 对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先获 取文本域中的信息,根据对应查询的要求执行相应的 SQL 的 SELLECT 语句;按课 程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询按钮将 全部信息在多行文本框中输出。 MyFrame 类: 主类,实现面板,可在其上进行对插入、删除、修改、查询等方法的调用,并且 对界面进行了设计和规划。 4)界面设计:
三、Java 编程
MainFrame 类 import javax.swing.*;
- 10 -
import java.awt.*; import java.awt.event.*;
public class MainFrame extends JFrame{
JButton insert,query,delete,modify; JPanel panel,panel1,panel2; public MainFrame() {
2. 设计思路
(内容:要求小四号字体)
1)建立数据库表格:将班级、姓名、学号、成绩等具体信息录入数据库。
·数据库系统设计 成绩查询系统—--
学号 姓名 班级 语文 数学 英语
·系统逻辑结构设计
字段名 学号 姓名 班级 语文 英语 数学
属性 ID name class Chinese English Maths
解决方法:经检查发现是连接数据库的密码错误,改正后可以运行。 2.此程序还存在下列不完善的地方 (1)面板设计较为单调,欠缺调色,还可以在面板上添加制作人等信息。 (2)在添加信息时,光标可以依靠键盘上下移动,不需要鼠标点击,这样可以 更方便快捷。 (3)修改数据的界面比例不是很协调 (4)修改数据的源代码不能实现选择性的修改:例如根据学号修改姓名。 (5)显示信息不能做到数据的对齐,使得界面不美观。 (6)第一次查询用的信息不能自动更新,导致后面的查询给人一种凌乱感:例 如先使用学号 120702119 查询,再使用姓名“张三”查询,此时上一个学号的信 息还保留,并不能更新到“张三”的学号。
在这个过程中,我们遇到了许多问题,如数据库连接不上,程序编译没有错 误,但功能无法实现等,学长都给了我们很大帮助,一次次修改尝试,最终得到 了现在的版本,虽然有许多不足与缺点,但是课题顺利完成仍是给了我们很大的 满足感,也让我们体会到了程序员的辛苦。
通过这次课题的研究,让我充分认识到了自己距离一个合格的程序员还很 远,认识到自己相关知识的的储备量还很少,对现在所学的 Java 及数据库课程 的掌握程度还不够,但是在这个过程中我也学习到了很多相关知识,充分的认识 到要想学好编程语言,就必须勤动手,要经常练习,才能熟练掌握每一种方法, 光靠大脑的记忆是远远不够的,只能是纸上谈兵。在以后的课程学习中,我一定 会更加重视实践练习,养成良好的编程习惯,这样才能做一个合格的程序员。
第一步,我们确定了课程的整体思路。首先在数据库中建好相关表格,然后 将数据库连接到 Java,最后运用 Java 编程实现相关界面与系统功能。
思路确定后,在具体实现过程中,我们遇到了一些问题。首先我们对 Java 连接数据库的相关知识不是特别清楚,其次应用 Java 编程实现相关界面不是很 熟练。为了解决这些问题,顺利完成课题,我们查阅了相关的资料并且请教了上 一届的学长,了解了什么叫做架包,知道了怎么实现数据库与 myeclipse 的连接, 如何在 myeclipse 的环境中使用建表语句以及实现相关界面。有了这些知识作为 基础,我们的课程设计便走上了正轨。首先,我们在数据库中建立了包含学生学 号、姓名、班级,语文、数学、英语成绩的数据的表格,然后 Java 中建立了架 包,建立 ConnectionUtil 类,获得与数据库的连接,最后就是在 myeclipse 环 境下,运用 Java 语句,将添加数据、查询数据、删除数据、修改数据四个功能 分为四个类来实现,另外用一个主类实现面板,可在其上进行插入、删除、修改、 查询等功能,并且对界面进行了设计和规划。
// TODO Auto-generated method stub ImageIcon img=new ImageIcon("1.gif"); JLabel text1,text2,picture=new JLabel(img);
JFrame frame=new JFrame("学生成绩管理系统"); insert=new JButton("添加数据"); insert.setBackground(Color.green); insert.addActionListener(new insertActionPerformed());