资源描述
德州学院信息管理学院
课程设计报告
实习名称 数据库课程设计
设计题目 基于Java+MySQL的学生成绩管理系统的设计与实现
实习时间 2013.6. 17-2013.6.30
专业班级 2011级计算机网络技术专
指导老师 王丽丽
教学单位(盖章)
小组分工情况:
学号
姓名
分工
201111007034
徐晴
代码编写
201111007017
梁庆美
代码编写
201111007014
赵玉翠
文档编写
201111007030
郭文晓
文档编写
201111007018
张翠萍
PPT设计
201111007005
铁文娇
PPT设计
二〇一三 年 六 月 三十 日
目 录
摘要…………………………………………………………………………………………….1
1 引言 1
1.1 问题的提出 1
1.2国内外研究的现状 1
1.3目的与分析 1
2 程序的主要功能 2
2.1添加功能 2
2.2删除功能 2
2.3显示功能 2
2.4查找功能 2
2.5修改功能 2
3 程序运行平台 2
4 总体设计 2
5 数据库设计 3
5.1数据库概念设计 3
5.2表结构 4
5.3视图 5
6 模块分析 5
6.1 添加模块 5
6.2 显示模块 7
6.3 修改模块 9
6.4 查找模块 11
6.5 删除模块 13
6.6 登陆模块 17
7 界面设计 20
7.1登陆界面 21
7.2学生信息添加界面 21
7.3学生成绩查询界面 22
7.4学生成绩修改界面 23
8 系统测试 24
9 结论 29
10参考文献…………………………………………………………………………………..29
德州学院学生成绩管理系统的设计与实现
摘 要:学生成绩管理系统主要用于各类大学院校在教学这一部分的管理,是针对于教务处对课程、对学生、对学生成绩进行合理地安排以及统筹计划,以便让教务处以最短的工作时间内把学生的成绩核算出来,提高教务处的办事效率。同时,能够随时对学生基本信息、学生成绩进行各种查询,以便及时很好地对需要了解的信息得到相应的反馈,能有效的帮助教务处的工作,可使学院教职工减轻工作压力,比较系统地对、教务教学上的各项服务和信息进行管理。
本系统是针对学生成绩管理进行设计的,主要用户为学校教务管理老师,但学生也可参与对自己信息的核对确认。主要采用的开发工具是JAVA和MYSQL。在开发过程中利用面向对象的程序思想和严格按照软件工程的开发过程来进行分析和设计。本系统所要完成以下几个主要功能,其中有学生成绩管理、学生基本信息管理等等,实现对学生基本信息和成绩进行录入、修改、删除、查询等操作。
系统基本满足了学生成绩管理的功能需要,确实为学校对学生的管理提供了便利。本系统界面友好、操作简单,对学生基本情况和成绩加快了查询速度、加强了管理,使各项管理更加规范化。
关键词:模块化;数据库;数据库管理系统
III
1 引 言
1.1 问题的提出
在我国,各大中小学校的各类信息管理系统并非一个新的课题。大多数学校信息管理系统不完善,甚至有的学校根本就没有任何信息管理系统,所有的管理工作几乎都是靠手工完成。特别是在西部贫困地区,学校的信息管理都依然靠手工操作,这十分落后,效率极低,成本很大,而且极易出错。随着计算机技术不断地日新月异地发展,信息化是社会进程的必然趋势,学校的信息管理只有快,精,准,才能发挥其作用。从人工操作改为计算机的自动化系统,人工操作必将被计算机代替。
1.2国内外研究的现状
信息技术的日益发展深入到社会的各个角落,学生宿舍管理也不例外,尤其作为高等院校的宿舍管理工作,是高校各项工作的一个重要组成部分,其管理水平的高低将直接影响到人才培养的质量。随着高等教育的发展、高校规模的扩大、学生人数增加、学生宿舍各种信息的汇总、统计和分析等管理工作面临着诸多困难,管理工作也越来越繁重和琐碎。因此宿舍管理的信息化、网络化越来越受到人们的重视,它既可以大大提高学生宿舍管理的绩效,也可以为学生解决后顾之忧。同时随着计算机技术的普及和发展,管理的自动化已成为必然趋势。因此,为了提高高校的整体管理水平,计算机在高等院校宿舍管理中的应用日益普及,这使得学生宿舍管理自动化的实现成为高校管理环节中的重要一环。
1.3目的与分析
本课题主要的目的是学生成绩管理系统,主要任务为建立学生信息管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。高校学生的成绩管理工作量大、繁杂,人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
2程序的主要功能
2.1添加功能
添加一个学生的基本信息,包括student_ID,student_Name, born_Date,math_Grade,English_Grade。
2.2删除功能
能够对一个学生的信息进行删除按student_ID进行删除。
2.3显示功能
显示所有学生的主要信息包括student_ID,student_Name,born_Date,math_Grade,English_Grade。
2.4查找功能
根据你键入的student_ID,显示其详细信息!
2.5修改功能
对学生的信息和成绩进行修改。
3 程序运行平台
编程工具:eclipse
编程语言: JAVA
数据库:MYSQL
具体操作如下:具体操作如下:新建SutGradeManage项目,然后再编写相应的java文件,再编译,链接,执行等,用户就可登录进该系统进行相应的操作。
4 总体设计
主 函 数
添加信息
删除信息
登陆系统
修改信息
显示信息
查找信息
图4.1 系统总体框架图
5 数据库设计
数据库设计是要在一个给定的应用环境(DBMS)中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式、子模式,建立数据库和设计应用程序,满足用户的各种信息需求。
5.1数据库概念设计
在数据库设计中,先要对系统分析所得的数据字典中的数据存储进行分析,然后得出系统的关系模式,可以采用实体——联系图(简称E——R图)的方法进行数据结构的描述。E——R图由实体、属性、联系三部分组成。
登录表
用户名
密码
图<5.1.1> 登录信息E-R图
学生
student_Name
born_Date
English_Grade
math_Grade
Student_ID
图<5.1.2> 学生信息E-R图
5.2表结构
表1 dbo.users表
字段
类型
约束
默认值
说明
userName
VARCHAR2(20 CHAR)
PK
用户名
userPwd
VARCHAR2(20 CHAR)
not null
密码
表2 dbo.student表
字段
类型
约束
默认值
说明
student_ID
CHAR(10 BYTE)
PK
学号
student_Name
VARCHAR2(20 CHAR)
not null
姓名
born_Date
CHAR(11 BYTE)
出生日期
math_Grade
CHAR(4 CHAR)
数学成绩
English_Grade
CHAR(4 CHAR)
英语成绩
5.3视图
表3 dbo.vi视图
字段
类型
是否可空
insertable
updatable
deletable
说明
math_Grade
CHAR(4 CHAR)
Yes
YES
YES
YES
数学成绩
English_Grade
CHAR(4 CHAR)
Yes
YES
YES
YES
英语成绩
student_ID
CHAR(10)
No
YES
YES
YES
学号
student_Name
VARCHAR2(80)
No
YES
YES
YES
姓名
born_Date
CHAR(11BYTE)
Yes
Yes
Yes
Yes
出生日期
6 模块分析
6.1 添加模块
学生信息添加部分代码: class charu extends JFrame implements ActionListener {
JFrame frame = new JFrame("添加数据");
JPanel imagePanel;
ImageIcon bg;
Button sure;
TextField input1, input2, input3, input4, input5;
TextArea show;
Box box1, box2, box3, box4;
int k, s1, j;
Connection con;
Statement sql;
ResultSet rs;
charu() {
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.getImage("tubiao.jpg");
frame.setIconImage(img);
input1 = new TextField(10);
input2 = new TextField(10);
input3 = new TextField(10);
input4 = new TextField(10);
input5 = new TextField(10);
box2 = Box.createVerticalBox();
box2.add(input1);
box2.add(Box.createVerticalStrut(8));
box2.add(input2);
box2.add(Box.createVerticalStrut(8));
box2.add(input3);
box2.add(Box.createVerticalStrut(8));
box2.add(input4);
box2.add(Box.createVerticalStrut(8));
box2.add(input5);
box1 = Box.createVerticalBox();
box1.add(new Label("学号:"));
box1.add(Box.createVerticalStrut(8));
box1.add(new Label("姓名:"));
box1.add(Box.createVerticalStrut(8));
box1.add(new Label("生日:"));
box1.add(Box.createVerticalStrut(8));
box1.add(new Label("数学:"));
box1.add(Box.createVerticalStrut(8));
box1.add(new Label("英语:"));
box3 = Box.createHorizontalBox();
box3.add(box1);
box3.add(Box.createHorizontalStrut(1));
box3.add(box2);
show = new TextArea(6, 43);
sure = new Button("确定");
box4 = Box.createHorizontalBox();
Label label1 = new Label("请输入数据");
label1.setFont(new Font("宋体", Font.BOLD, 20));
label1.setForeground(Color.blue);
box4.add(label1);
box4.add(Box.createHorizontalStrut(1));
box4.add(sure);
sure.addActionListener(this);
bg = new ImageIcon("cru.jpg");
JLabel label = new JLabel(bg);
label.setBounds(0, 0, bg.getIconWidth(), bg.getIconHeight());
imagePanel = (JPanel) frame.getContentPane();
imagePanel.setOpaque(false);
imagePanel.setLayout(new FlowLayout());
show.setEditable(false);
imagePanel.add(box4, BorderLayout.NORTH);
imagePanel.add(box3, BorderLayout.CENTER);
imagePanel.add(show, BorderLayout.SOUTH);
frame.getLayeredPane().setLayout(null);
frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(bg.getIconWidth(), bg.getIconHeight());
frame.setBounds(700, 200, 540, 440);
frame.setResizable(false);
frame.setVisible(true);
validate();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
}
public void actionPerformed(ActionEvent ee) {
String s1, s2, s3, s4, s5, insert1, recode, name, date, number;
int m1, m2, math, english;
s1 = input1.getText();
s2 = input2.getText();
s3 = input3.getText();
s4 = input4.getText();
s5 = input5.getText();
number = s1;
name = s2;
date = s3;
m1 = Integer.parseInt(s4);
math = m1;
m2 = Integer.parseInt(s5);
english = m2;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException eee) {
System.out.println("" + eee);
}
try {
con = DriverManager.getConnection("jdbc:odbc:sun", "gxy", "123");
sql = con.createStatement();
recode = "(" + "'" + number + "'" + "," + "'" + name + "'" + ","
+ "'" + date + "'" + "," + math + "," + english + ")";
insert1 = "INSERT INTO chengjibiao VALUES " + recode;
sql.executeUpdate(insert1);
show.setText("你插入了:");
show.append("学号:" + number + " 姓名:" + name + " 出生:" + date
+ " 数学 " + math + " 英语 " + english);
show.append("\n");
} catch (SQLException e) {
System.out.println(e);
JOptionPane.showMessageDialog(this, "你输入的学号已存在,请核对重新输入!");
}
}
}
6.2 显示模块
显示模块将输出所有学生的主要信息;
主要代码为:class chuangkou extends JFrame implements ActionListener {
JFrame frame = new JFrame("选择窗口");
JPanel imagePanel;
ImageIcon bg;
Button button1, button2, button3, button4, button5, button6;
Box box;
Label label;
Panel p1;
chuangkou() {
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.getImage("tubiao.jpg");
frame.setIconImage(img);
p1 = new Panel();
label = new Label("欢迎使用成绩管理系统", Label.CENTER);
label.setFont(new Font("隶书", Font.BOLD, 30));
label.setBackground(Color.green);
p1.add(label);
button1 = new Button("添加");
button2 = new Button("删除");
button3 = new Button("修改");
button4 = new Button("查询");
button5 = new Button("返回");
button6 = new Button("退出");
box = Box.createHorizontalBox();
box.add(button1);
box.add(Box.createHorizontalStrut(8));
box.add(button2);
box.add(Box.createHorizontalStrut(8));
box.add(button3);
box.add(Box.createHorizontalStrut(8));
box.add(button4);
box.add(Box.createHorizontalStrut(8));
box.add(button5);
box.add(Box.createHorizontalStrut(8));
box.add(button6);
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
bg = new ImageIcon("ckou.jpg");
JLabel label = new JLabel(bg);
label.setBounds(0, 0, bg.getIconWidth(), bg.getIconHeight());
imagePanel = (JPanel) frame.getContentPane();
imagePanel.setOpaque(false);
imagePanel.setLayout(new FlowLayout());
imagePanel.add(p1, BorderLayout.NORTH);
imagePanel.add(box, BorderLayout.CENTER);
frame.getLayeredPane().setLayout(null);
frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭后状态
frame.setSize(bg.getIconWidth(), bg.getIconHeight());
frame.setBounds(200, 200, 500, 300);
frame.setResizable(false);//设置窗口大小不可改变
frame.setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button6) {
System.exit(0);
}
if (e.getSource() == button1) {
new charu();
}
if (e.getSource() == button2) {
new shanchu();
}
if (e.getSource() == button3) {
new xiugai();
}
if (e.getSource() == button4) {
new chaxun();
}
if (e.getSource() == button5) {
new denglu();
frame.dispose();
} else {
}
}
}
6.3 修改模块
首先由用户输入要修改的学生的成绩
主要代码:class xiugai extends JFrame implements ActionListener {
JFrame frame = new JFrame("修改成绩");
JPanel imagePanel;
ImageIcon bg;
Button xiug;
TextField input1, input2, input3;
TextArea show;
Box box1, box2, box3;
Panel p1, p2;
int k, s1, j;
Connection con;
Statement sql;
int sum = 0;
ResultSet rs;
xiugai() {
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.getImage("tubiao.jpg");
frame.setIconImage(img);
p1 = new Panel();
p2 = new Panel();
xiug = new Button("修改");
input1 = new TextField(10);
input2 = new TextField(10);
input3 = new TextField(10);
show = new TextArea(6, 43);
Font f=new Font("宋体",Font.BOLD,15);
Label l1=new Label("输入学号");
l1.setFont(f);
l1.setForeground(Color.blue);
p1.add(l1);
p1.add(new Label("学号:"));
p1.add(input1);
box1 = Box.createVerticalBox();
box1.add(Box.createVerticalStrut(8));
box1.add(new Label("数学:"));
box1.add(Box.createVerticalStrut(8));
box1.add(new Label("英语:"));
box2 = Box.createVerticalBox();
box2.add(input2);
box2.add(Box.createVerticalStrut(8));
box2.add(input3);
box3 = Box.createHorizontalBox();
box3.add(box1);
box3.add(Box.createHorizontalStrut(1));
box3.add(box2);
Label l2=new Label("输入成绩");
l2.setFont(f);
l2.setForeground(Color.blue);
p2.add(l2);
p2.add(box3);
xiug.addActionListener(this);
show.setEditable(false);
bg = new ImageIcon("cru.jpg");
JLabel label = new JLabel(bg);
label.setBounds(0, 0, bg.getIconWidth(), bg.getIconHeight());
imagePanel = (JPanel) frame.getContentPane();
imagePanel.setOpaque(false);
imagePanel.setLayout(new FlowLayout());
imagePanel.add(p1);
imagePanel.add(p2);
imagePanel.add(xiug);
imagePanel.add(show);
frame.getLayeredPane().setLayout(null);
frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(bg.getIconWidth(), bg.getIconHeight());
frame.setBounds(720, 220, 450, 390);
frame.setResizable(false);//设置窗口大小不可改变
frame.setVisible(true);
validate();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
}
public void actionPerformed(ActionEvent ee) {
String s1, s2, s3, insert1, number;
;
int m2, m3, math, english;
s1 = input1.getText();
number = s1;
s2 = input2.getText();
s3 = input3.getText();
m2 = Integer.parseInt(s2);
math = m2;
m3 = Integer.parseInt(s3);
english = m3;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException eee) {
System.out.println("" + eee);
}
try {
con = DriverManager.getConnection("jdbc:odbc:sun", "gxy", "123");
sql = con.createStatement();
insert1 = "UPDATE chengjibiao SET math =" + math + ",english="
+ english + " WHERE number = " + "'" + number + "'";
sql.executeUpdate(insert1);
show.setText("你将了:");
show.append("学号为 " + s1 + " 的学生 数学成绩更改为:" + math + " 英语成绩更改为:"
+ english);
show.append("\n");
} catch (SQLException e) {
System.out.println(e);
}
}
}
6.4 查找模块
首先由用户输入要查找的学生学号等,然后查找数据库中的该学生信息
主要代码:class chaxun extends JFrame implements ActionListener {
JFrame frame = new JFrame("查询记录");
JPanel imagePanel;
ImageIcon bg;
Button xunzhao;
TextField input;
TextArea show;
Box box;
String s;
Connection con;
Statement sql;
ResultSet rs;
chaxun() {
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.getImage("tubiao.jpg");
frame.setIconImage(img);
xunzhao = new Button("查找");
input = new TextField(10);
show = new TextArea(6, 43);
xunzhao.addActionListener(this);
show.setEditable(false);
box = Box.createHorizontalBox();
Label l1=new Label("输入学号");
l1.setFont(new Font("宋体",Font.BOLD,15));
l1.setForeground(Color.blue);
box.add(l1);
box.add(Box.createHorizontalStrut(8));
box.add(input);
box.add(Box.createHorizontalStrut(8));
box.add(xunzhao);
bg = new ImageIcon("chaxun.jpg");
JLabel label = new JLabel(bg);
label.setBounds(0, 0, bg.getIconWidth(), bg.getIconHeight());
imagePanel = (JPanel) frame.getContentPane();
imagePanel.setOpaque(false);
imagePanel.setLayout(new FlowLayout());
imagePanel.add(box, BorderLayout.NORTH);
imagePanel.add(show, BorderLayout.CENTER);
frame.getLayeredPane().setLayout(null);
frame.getLayeredPane().add(label, new Integer(Inte
展开阅读全文