资源描述
摘要
本汇报关键介绍了利用JAVA基础语言、面向对象程序设计、图形用户界面编程、访问数据库等知识所设计开发出小型学生信息管理系统。共分为课题概述、数据库设计过程、系统设计和实现、取得结果、总结和体会、关键参考文件、附录(原程序代码、注释)六大部分。
每一部分全部对此次课程设计过程及结果进行了具体介绍。比如:在课题概述中,读者可了解到课程设计关键任务及要求;在取得结果中,展示了所实现界面效果;在总结和体会中,可了解到在课程设计中所需注意事项等内容。
关键字: JAVA 数据库 课程设计
目录
一、课题概述 - 3 -
1.1任务 - 3 -
1.2目标 - 3 -
1.3要求 - 3 -
二、数据库设计过程 - 3 -
2.1 需求分析 - 3 -
2.2 概念结构设计 - 4 -
2.3 逻辑结构设计 - 4 -
2.4 物理结构设计 - 5 -
2.5 数据库实施和运行维护 - 6 -
三、系统设计和实现 - 7 -
3.1 系统设计 - 7 -
3.1.1该系统实现大致功效 - 7 -
3.1.2 开发环境和软件 - 7 -
3.2设计思绪 - 7 -
3.2.1 系统模块图 - 7 -
3.3 采取方案 - 8 -
3.3.1登录界面 - 8 -
3.3.2注册界面 - 8 -
3.3.3管理员界面 - 8 -
3.4 学生主页 - 9 -
3.5 老师主页 - 9 -
四、取得结果 - 9 -
4.1 登录界面 - 9 -
3.2 管理员界面 - 10 -
3.3 学生主页 - 11 -
3.4 老师主页 - 11 -
3.3 录入界面 - 12 -
3.4 查询界面 - 13 -
3.5 修改/删除界面 - 13 -
五、总结和体会 - 14 -
六、关键参考文件 - 15 -
七、附录(部分原程序代码、注释等) - 15 -
6.1 登录 - 15 -
6.2 课程信息维护界面 - 19 -
一、课题概述
1.1任务
依据所学JAVA及SQL Server数据库知识,设计出符合要求学生信息管理系统。本系统可实现管理系统中登录、注册及增、删、改、查等功效,以实现前台对后台数据库管理。
1.2目标
1、经过此次课程设计实践操作,巩固和加深对高级语言程序设计课程基础知识了解和掌握,掌握java语言编程和程序调试基础技能;
2、利用java语言进行基础软件设计,提升利用java语言处理实际问题能力;
3、充足掌握面向用户界面中各组件及布局利用;
4、深入训练自顶向下逐步求精策略,并应用于实际问题;
1.3要求
要求利用JAVA及SQL数据库等方面知识,对学生信息管理系统开发,在功效上实现管理系统中增、删、改、查;在界面上注意设计美观程度。并能够经过登陆系统进入主界面,然后经过主界面管理学生信息。
二、数据库设计过程
2.1 需求分析
(1) 用户需求
此学生成绩管理系统用户分为管理员,老师和学生,其中管理员能够实现对学生和课程基础信息增、删、查、改等操作;而学生只能查看基础信息和成绩信息,所以合理分配用户权限显得十分关键。以用户登录用户名和密码来查对确定用户,管理好这些用户对系统安全有十分关键影响。
(2) 功效需求
① 登录模块:关键分为老师,管理员和学生,对于登录后,根据各自需求深入进行。
② 基础信息管理模块:管理员实现对学生信息增、删、查、改等操作;学生能够查看基础信息和成绩信息。
2.2 概念结构设计
2.3 逻辑结构设计
将概念设计阶段E-R图转换成关系模式,设计出“学生管理系统”逻辑结构,并依据程序需要设计视图。
1)关系设计
数据库关系图:
学生(学号,密码,姓名,性别,年级,专业)
老师(老师号,密码,姓名,性别,院系)
课程(课程号,课程名,学分,课时)
管理员(管理员账号,密码)
学生选课(学号,课程号,成绩)
将关系模式转换成为具体RDBMS中支持关系数据模型(表结构)。本系统在SQL Server 数据库管理系统中共设计5个表,分别为学生表、老师表、课程表、学生选课表、管理员表,表结构图所表示。
2)视图1:可用于管理员查询每门课选修人数;
视图2可用于管理员查询每门课平均成绩。
2.4 物理结构设计
索引查询
1)
2)
2.5 数据库实施和运行维护
在SQL Server中创建数据库“教学库”,创建其中5个表,并为表创建索引然后向表中添加数据,创建2个视图。再依据程序功效设计一个存放过程和一个表值函数。
1)存放过程teacherQElect,用于实现老师查询学生选课情况
create PROCEDURE teacherQElect @课程号 varchar(6)
As
if(SELECT COUNT(*) FROM 学生,学生选课
where 学生.学号=学生选课.学号 and 课程号=@课程号)>0
SELECT 学生.学号,姓名,年级,专业 from 学生,学生选课
where 学生.学号=学生选课.学号 and 课程号=@课程号 order by 专业,年级
else
select 0 as 选课人数
return
结果:
2)一个表值函数stuscore,用于实现学生查询考试成绩。
三、系统设计和实现
3.1 系统设计
3.1.1该系统实现大致功效
1.用户登录界面。该界面能够进行管理员、老师、学生登录。用户经过验证经过后方可进入管理系统。一定程度上确保了信息安全性,预防她人未经许可篡改学生信息;
2. 注册新用户界面。该界面可创建新用户信息,完成注册;
3.学生主页。经过学生账号登录后,进入此界面进行课程查询及个人信息修改;
4.管理员主页。管理员能够经过此界面进行学生信息及课程信息;
5.老师主页。老师能够经过此界面进行学生成绩录入及个人信息修改。
3.1.2 开发环境和软件
(1)操作系统:Windows XP
(2)数据库软件:SQL Server
(3)Java开发工具:Eclipse
3.2设计思绪
学生信息管理系统,可用于学生信息管理、查询、更新和维护,使用方便,图形界面清楚明了。该系统利用java语言编写,用SQLServer数据库作为后台数据库进行信息存放,用SQL语句完成添加、查询、修改、删除操作。用JDBC驱动实现前台Java和后台SQL Server数据库连接。Java语言跨平台性强,能够在windows,linux,ubuntu等多个系统下使用,方便简单,安全性强。SQLServer数据库高效安全,二者结合可相互利用各自优势。
3.2.1 系统模块图
3.3 采取方案
3.3.1登录界面
1、先新建一个框架,在框架上添加所需标签(“欢迎使用学生信息管理系统”,“登录人员”,“用户名”,“密码”)、文本框和按钮(“登录”,“重置”,“注册”)。
2、点击“登录”后,依据所选择登录人员,对登录信息进行判定。若用户名和密码输入正确,登录到主界面;若输入错误,提醒“登录失败”。点击“重置”时,文本框清空。点击“注册”时,弹出“注册新用户”界面。
3.3.2注册界面
用户按要求输入信息,注册界面上包含有两个按钮(“注册”,“取消”),点击注册按钮,注册成功,新数据添加到数据库“用户表”中。点击“重置”后,文本框清空。
3.3.3管理员界面
此界面中添加有菜单(包含学生信息录入、修改或删除、查询及退出等菜单项)、工具条(添加有包含学生信息录入、修改或删除、查询及退出等按钮)和四个面板。
1、打开主界面,显示第一个面板“欢迎进入学生信息管理系统”。
2、经过点击学生信息录入菜单项或按钮,显示第二个面板。面板上添加有“添加”,“重置”,“返回”三个按钮。点击添加按钮,可将信息添加到数据库“student”表中;点击“重置”按钮,将文本框中信息清空;点击“返回”,返回到第一面板。
3、点击学生信息查询菜单项或按钮,显示第三个面板。面板上添加有文本框及下拉列表中。输入查询条件,选择查询项目,所需信息便显示在列表中。
4、点击学生信息修改/删除菜单项或按钮,显示第四个面板。面板上添加有查询、修改、删除三个按钮。点击查询,文本框中显示满足学号条件学生信息;点击修改,信息修改成功;点击删除,表中信息被删除。
5、点击退出按钮,退出主界面。
3.4 学生主页
此界面中添加有菜单(包含课程信息查询、个人资料修改及退出等菜单项)、工具条(添加有包含课程信息查询、个人资料修改及退出等按钮)。
3.5 老师主页
此界面中添加有菜单(包含学生成绩录入、个人信息修改及退出等菜单项)、工具条(添加有包含学生成绩录入、个人信息修改及退出等按钮)。
四、取得结果
4.1 登录界面
设计并开发出了满足试验要求“学生信息管理系统”,用户能够经过登录界面进入系统对数据进行管理,深入对数据进行录入、修改和查询。登录界面以下图所表示:
若用户不存在,则需要进入注册界面进行用户注册。注册界面以下图所表示:
3.2 管理员界面
课程信息维护:
学生信息维护:
3.3 学生主页
3.4 老师主页
如上述界面所表示,用户可经过工具栏按钮进行信息管理。另外,也可经过菜单栏进入,以下:
3.3 录入界面
在信息录入时,用户需依据要求,各项数据不可为空,若为空,系统将提醒用户。在各项数据输入完成后,点击“添加”,便可将新数据录入到已链接好数据库中。若已输入数据有误,用户可点击“重置”按钮,对数据进行清除。点击“返回”按钮,可使系统回到主界面。录入界面以下图所表示:
3.4 查询界面
在进行信息查询时,用户能够经过学号、姓名和所在系,并依据所需查询条件将所需信息显示出来,或直接点击学号,可显示全部信息,界面简练明了。查询界面以下图所表示:
3.5 修改/删除界面
在信息修改、删除功效中,界面效果是录入界面和查询界面结合,但在这一功效中,不可对学号进行编辑。信息修改完成后,点击“确定”,就实现了对原始信息修改。修改/删除界面以下图所表示:
五、总结和体会
课程设计是培养学生综合利用所学知识,发觉、提出、分析和处理实际问题,锻炼实践能力关键步骤,是对学生实际工作能力具体训练和考察过程。经过两个星期课程设计,利用JAVA和SQL数据库相关知识,设计并开发出了“学生信息管理系统”。并实现了登录、注册、增加、修改、删除、查询信息等功效,完成了试验任务。
另外,在设计过程中,因为对知识掌握程度不够,碰到了部分问题,
1、包引入。在设计早期设置颜色时,未引入颜色包,造成对“Color”无法识别问题;
2、在实现事件功效时,需要加连接数据库语句( con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=test","sa","123456"); ),以获取数据库中数据;
3. 在向主界面添加组件时,不能够将同一组件添加到多个面板中,不然会造成界面空白,组件无法显示;
4. 在注册用户时,系统提醒“INSERT 语句和 FOREIGN KEY 约束‘FK_用户_ student’冲突。该冲突发生于数据库‘test’,表‘student’,Column‘学号’”。此问题错在,用户中用户名和‘student’存在外键关系,插入对应字段值需要在‘student’中存在。所以,需要先将信息添加到‘student’表中,再添加到‘用户’表中;
5.在运行代码后,出现了组件不显示问题。在添加完组件后写入“validate();”,便可处理此问题;
6. 在设置背景颜色时,发觉面板不能够设置背景颜色,需要先在面板上添加一个设置好标签,再向标签上添加组件。
经过两个星期课程设计,总体感觉自己在面向对象程序设计方面有了一定提升。也让我深刻认识到部分事情:
1.编写程序时需目标明确,思绪清楚。
2.代码书写要规范,养成正确书写良好习惯,以避免更多错误发生。
3.编程时要充足利用学过知识,熟练掌握,融汇贯通,将理论和实践相结合。
另外,感谢老师能给出这次课程设计,让我们意识到,对于知识要一步一个脚印,多加练习。
六、关键参考文件
[1] 耿祥义.JSP基础编程[M].清华大学出版社,.55-162
[2] 萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,1998.
[3] 刘慧琳.Java程序设计教程(第二版)[M].人民邮电出版社,.
七、附录(部分原程序代码、注释等)
6.1 登录
import java.awt.Choice;
import java.awt.Color;
import java.awt.Font;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
public class 登录 implements ActionListener,ItemListener{
private JFrame frame;
private JLabel l1,l2,l3,l4,l5;
private TextField t1;
private TextField t2;
private JButton button1,button2,button3;
Connection con;
Statement sql;
ResultSet rs;
Choice c=new Choice();
public 登录(){
frame = new JFrame();
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(200,100,672,420);
frame.setLayout(null);
l1 = new JLabel();
ImageIcon icon = new ImageIcon("die.jpg");
l1.setIcon(icon);
frame.add(l1);
l1.setBounds(0,0,672, 420);
l1.setLayout(null);
Font font1 = new Font("楷体_GB2312",1,30) ;
Font font2 = new Font("幼圆",0,18) ;
l5=new JLabel("登录人员");
l5.setFont(font2) ;
l5.setForeground(Color.WHITE);
c.add("管理员"); //添加下拉表
c.add("老师");
c.add("学生");
c.addItemListener(this);
l1.add(l5);
l5.setBounds(155, 100, 200, 50);
l1.add(c);
c.setBounds(250, 120, 200, 50);
l2=new JLabel("欢迎使用学生信息管理系统");
l2.setFont(font1) ;
l2.setForeground(Color.MAGENTA);
l1.add(l2);
l2.setBounds(125, 50, 400, 50);
l3=new JLabel("用户名");
l3.setFont(font2) ;
l3.setForeground(Color.WHITE);
l1.add(l3);
l3.setBounds(155, 151, 100, 50);
l4=new JLabel("密 码");
l4.setFont(font2) ;
l4.setForeground(Color.WHITE);
l1.add(l4);
l4.setBounds(155, 209, 100, 50);
t1 = new TextField();
t2 = new TextField();
t2.setEchoChar('*');
l1.add(t1);
l1.add(t2);
t1.setBounds(250, 170, 200, 23);
t2.setBounds(250, 220, 200, 23);
button1 = new JButton("登录",new ImageIcon("星星.jpg"));
button1.addActionListener(this);
l1.add(button1);
button1.setBounds(125, 270,100,30);
button2 = new JButton("重置",new ImageIcon("星星.jpg"));
button2.addActionListener(this);
l1.add(button2);
button2.setBounds(260, 270,100,30);
button3 = new JButton("注册",new ImageIcon("星星.jpg"));
button3.addActionListener(this);
l1.add(button3);
button3.setBounds(395, 270,100,30);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==button1)
{if (t1.getText().toString().equals(""))
{ JOptionPane.showMessageDialog(null, "请输入登录名", "温馨提醒", JOptionPane.INFORMATION_MESSAGE);
return; }
else if (t2.getText().toString().equals(""))
{ JOptionPane.showMessageDialog(null, "请输入密码", "温馨提醒", JOptionPane.INFORMATION_MESSAGE);
return; }
try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}
catch(ClassNotFoundException se){}
try { con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=教学库","sa","123456");
Statement stmt=con.createStatement();
sql=con.createStatement();
String n1=c.getSelectedItem(); //下拉列表
String queryMima;
if(n1.equals("管理员"))
{
queryMima="select * from 管理员 where 管理员账号 ='"+t1.getText().trim()+"' and 密码 ='"+t2.getText().trim()+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{JOptionPane.showMessageDialog(null,"登录成功!","温馨提醒",JOptionPane.INFORMATION_MESSAGE);
new 管理员界面();
con.close();
frame.hide(); }
else
{
JOptionPane.showMessageDialog(null,"登录失败!","温馨提醒",JOptionPane.INFORMATION_MESSAGE);
t1.setText("");
t2.setText(""); }}
if(n1.equals("老师"))
{queryMima="select * from 老师 where 老师号 ='"+t1.getText().trim()+"' and 密码 ='"+t2.getText().trim()+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{
JOptionPane.showMessageDialog(null,"登录成功!","温馨提醒",JOptionPane.INFORMATION_MESSAGE);
new 老师主页();
con.close();
frame.hide(); }
else {
JOptionPane.showMessageDialog(null,"登录失败!","温馨提醒",JOptionPane.INFORMATION_MESSAGE);
t1.setText("");
t2.setText("");
} }
else if(n1.equals("学生"))
{
queryMima="select * from 学生 where 学号 ='"+t1.getText().trim()+"' and 密码 ='"+t2.getText().trim()+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{JOptionPane.showMessageDialog(null,"登录成功!","温馨提醒",JOptionPane.INFORMATION_MESSAGE);
new 学生主页();
con.close();
frame.hide(); }
else
{
JOptionPane.showMessageDialog(null,"登录失败!","温馨提醒",JOptionPane.INFORMATION_MESSAGE);
t1.setText("");
t2.setText("");
}
}
sql.close(); }
catch (SQLException se) { se.printStackTrace();} }
if(e.getSource()==button3)
{ new 用户注册(); }
else if(e.getSource()==button2)
{ t1.setText("");
t2.setText("");
} }
public static void main(String[] args){
new 登录(); }
public void itemStateChanged(ItemEvent arg0) {
}
}
6.2 课程信息维护界面
import java.awt.*;
import javax.swing.*;
import javax.swing.ImageIcon;
import java.awt.event.*;
import java.sql.*;
import java.util.EventObject;
class 课程信息维护 extends JFrame implements ActionListener,ItemListener
{
Frame f;
JLabel l1,l2,l3,l4,l5,l6,lb1,lb2,lb3,lb4,lb5,lb8,lb9,lb10,lb11,lb12,lb13,lb16;
Panel p,p1,p2,p3,p4,p5,p6,p7; //p5为查询界面最下方面板
MenuBar mb1=new MenuBar();
Menu me1 =new Menu("文件");
JButton b1,b2,b3,b4,b5,b6,b7,bu1,bu2,bu3;
JToolBar toolBar=new JToolBar();
CardLayout myCard = new CardLayout();
JTable table1;
Object a[][],b[][];
Object name[]={"课程号","课程名","学分","课时","老师号"};
java.sql.Connection con;
Statement sql;
ResultSet rs;
Choice c=new Choice();
TextField tx1=new TextField();
TextField tx2=new TextField();
TextField tx3=new TextField();
TextField tx4=new TextField();
TextField tx5=new TextField();
TextField tx6=new TextField();
TextField tx7=new TextField();
TextField tx8=new TextField(20);
TextField tx9=new TextField();
TextField tx10=new TextField();
TextField tx11=new TextField();
TextField tx12=new TextField();
TextField tx13=new TextField();
TextField tx14=new TextField();
TextField tx15=new TextField();
TextField tx16=new TextField(20);
public 课程信息维护()
{
f=new Frame("学生信息管理系统");
f.setSize(600,550);
f.setLocation(400,100);
f.setBackground(Color.white);
f.setVisible(true);
f.setMenuBar(mb1);
f.validate();
l1=new JLabel("欢迎进入学生信息管理系统");
l2=new JLabel();
ImageIcon icon = new ImageIcon("lv.jpg");
l2.setIcon(icon);
l3=new JLabel();
ImageIcon icon1 = new ImageIcon("hu.jpg");
l3.setIcon(icon1);
l4=new JLabel();
ImageIcon icon2 = new ImageIcon("q.jpg");
l4.setIcon(icon2);
l5=new JLabel();
ImageIcon icon3 = new ImageIcon("a.jpg");
l5.setIcon(icon3);
l6=new JLabel();
ImageIcon icon4 = new ImageIcon("s.jpg");
l6.setIcon(icon4);
bu1=new JButton("添加");
bu2=new JButton("重置");
bu3=new JButton("返回");
lb1=new JLabel("课 程 号");
lb2=new JLabel("课 程 名");
lb3=new JLabel("学 分");
lb4=new JLabel("课 时");
lb5=new JLabel("教 师 号");
lb8=new JLabel("查询条件");
lb9=new JLabel("课 程 号");
lb10=new JLabel("课 程 名");
lb11=new JLabel("学 分");
lb12=new JLabel("课 时");
lb13=new JLabel("教 师 号");
lb16=new JLabel("查询条件");
//菜单设置
mb1.add(me1);
me1.add(new MenuItem("课程信息录入"));
me1.add(new MenuItem("课程信息查询"));
me1.add(new MenuItem("课程信息修改/删除"));
me1.addSeparator();
me1.add(new MenuItem("退出"));
me1.addActionListener(this);
//按钮设置
b1=new JButton("课程信息录入");
b2=new JButton("课程信息查询");
b3=new JButton("课程信息修改/删除");
b4=new JButton("退出");
b6=new JButton("查询");
b6.addActionListener(this);
b5=new JButton("修改");
b5.addActionListener(this);
b7=new JButton("删除");
b7.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
//工具条
toolBar.add(b1);
toolBar.add(b2);
toolBar.add(b3);
toolBar.add(b4);
//面板设置
p=new Panel(myCard );
p1=new Panel();
p1.setLayout(null);
p2=new Panel();
p2.setLayout(null);
p3=new Panel(new BorderLayout());
p4=new Panel(new BorderLayout());
p5=new Panel();
p5.setLayout(null);
f.add(toolBar,"North"); //给框架添加工具条
f.add(p,"Center"); //给框架添加总面板
p.add("p1",p1);
展开阅读全文