资源描述
实训汇报
实训名称: 学生成绩管理系统
系 (部):
专业班级:
学生姓名:
学 号:
指导老师:
完成日期:
南京铁道职业技术学院
……………………………装……………………………………订…………………………………线……………………………
目 录
目 录 3
1 实训概述 3
2 Java访问并处理数据库课题描述 3
2.1 课题介绍 3
2.2 模块介绍 3
2.3 数据库结构设计 4
2.4系统功效层次图 6
3 系统模块具体设计 6
3.1登录模块设计 6
3.2管理员模块设计 6
3.3学生模块设计 8
4 程序运行和测试 9
5 实训总结 30
Java访问并处理数据库设计和实现
1 实训概述
南京铁道职业技术学院浦口校区级网络L1301班于大二上学期组织了为期一周Java实训,此次实训课题是“学生成绩管理系统”。 经过综合实训,掌握利用Java语言基础知识和技能、 JAVA基础语法和JDBC数据库技术应用;深入熟悉Oracle数据库数据库管理(数据库创建、应用)。表创建、修改、删除,约束及关系等、数据查询处理(insert、update、delete、select语句等技术。
2 Java访问并处理数据库课题描述
2.1 课题介绍
经过分析,我们使用Java开发工具,利用其提供多种面向对象开发工具,Java 技术含有卓越通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大开发者专业社群。使用数据库是Oracle,Oracle数据库功效强大,学习起来也不难,然后,对初始原型系统进行需求迭代,不停修正和改善,直到形成用户满意可行系统。
经过实训,我们掌握利用Java语言知识和技能,利用JAVA基础语法和JDBC数据库技术应用,完成对甲骨文数据库数据库管理、比如表设计(表创建、修改、删除,字段默认值、约束及关系等)、数据查询处理(insert、update、delete、select语句应用)等技术;并能结合数据库应用技术和jdbc进行小型数据库管理系统开发。
2.2 模块介绍
管理员模块功效需求:
管理员身份登陆系统后,能够对学生信息进行添加、修改和查询等操作,对学生进行添加、修改和查询功效操作,还能够修改管理员登录密码。
学生模块功效需求:
学生信息管理系统中需要在学生登录或验证身份后,,能够自行完成学生个人信息查询,也能够进行修改和删除个人信息、修改学生密码等操作。
2.3 数据库结构设计
数据表设计
定义每个表数据类型和字段限制,使数据库达成一定完整性.每个表物理设计以下:
1.表admin保留用户个人信息
用户信息表关键是用来保留管理员用户基础信息,包含管理员ID和管理员登录密码,只有符合这两个字段格式要求,才能登录成功,结构表以下:
表4-2管理员信息表
字段名
类型
空值
约束条件
管理员ID
number(10)
not null
主键
登录密码
varchar2(10)
not null
2.表student保留学生基础信息,结构表以下:
表4-5学生信息表
字段名
类型
空值
约束条件
学号
number(10)
not null
主键
姓名
varchar2(20)
not null
性别
varchar2 (3)
年纪
number(2)
登录密码
varchar2(10)
not null
逻辑结构是独立于任何一个数据模型信息结构。逻辑结构任务是把概念结构设计阶段设计好基础E-R图转化为宜选择DBMS所支持数据模型相符合逻辑结构,并对其进行优化。
步骤图层次设计
图格式以下所表示:
开始
选择要实现按钮1.添加2.查询3.删除
进入登录页面
选择权限
(比如管理员)
添加按钮
查找按钮
删除按钮
返回
添加一个学生信息,包含ID,姓名,年纪,性别
查找数据库中一个学生信息,包含ID,姓名,年纪,性别
删除一个学生信息,包含她ID,姓名,年纪,性别
结束
图1 管理员对学生信息管理系统局部E-R图
数据流图是结构化系统分析关键工具,它表示了系统内部信息流向,并表现系统逻辑处理功效。
2.4系统功效层次图
学生信息管理系统是一个经典数据库开发应用程序,系统是和数据库相结合.,进入系统,有两个用户,分别是一般学生、和管理员。
学生信息管理系统
登陆管理
学生登录
管理员登录
查询信息
增加学生
修改密码
查找学生
删除学生
修改学生
图2 学生信息管理系统功效层次图
3 系统模块具体设计
本学生信息管理系统关键模块,即用户登录模块、用户操作模块。用户操作模块又分为学生操作模块、管理员操作模块。下面将显示系统关键功效模块。
3.1登录模块设计
学生信息管理系统前台登陆模块能够勾选管理员身份信息,代表以管理员身份进入。不勾选即为一般学生身份登录。
3.2管理员模块设计
学生信息管理系统前台登陆模块只有一个登陆窗口分为学生、管理员两个等级登陆,系统在后台程序有自动限制设置,能够自动识别登陆者限制。其系统登陆模块算法以下:
1 判定是否勾选管理员身份;
2 输入用户名和密码;
3 判定用户名和密码是否匹配;
(1)若提醒输入信息错误,则重新输入;
(2)不然以管理员身份进入系统。
添加学生信息功效
学生信息管理系统对学生信息管理很关键,其中对信息录入是系统最为关键地方,以往我们管理学生信息时候全部是手工操作,而随社会不停发展今天计算机应用已全部取带了手工操作方法,利用计算机能够方便录入各类信息,进行高效管理.学生信息录入就是利用计算机经过程序读入数据库,录入学生信息模块算法描述以下:
1.管理员登陆后,录入学生信息管理界面;
2.单击增加学生按钮,键入学生ID;
3.当录入学号已经存在,提醒该学生信息已存在,请重新输入;
4.不然学生信息添加成功。
查找学生信息功效
学生信息管理系统对查询学生信息管理也很关键,方法和增添学生信息类似,也一样是利用计算机经过程序读入数据库,查询学生信息模块算法描述以下:
1.管理员登陆后,点击查询学生;
2.当录入学生信息不存在时,提醒没有该学生信息,重新输入;
3.当录入学生ID已经存在,提醒该学生信息存在,显示学生信息;
删除学生信息功效
学生选课模块关键是给删除学生信息功效,本功效关键由管理员进入数据库,然后学生管理系统,其删除学生信息模块算法描述以下:
1.管理员成功登陆;
2.点击删除学生;
3.输入学生相关信息,如学生ID;
4. 如该学生不存在,则提醒信息不存在,不然删除该学生。
修改学生信息功效
此信息修改模块关键是给学生和管理员建立信息库,方便管理员查询操作,信息修改模块算法描述以下:
1.管理员成功登陆;
2.点击修改学生信息;
3.输入学生编号;
4.编号为空,重新输入;
5.输入不为数字,重新输入;
6.输入正确,进入修改页面进行相关修改。
3.3学生模块设计
查看学生个人信息功效
学生信息管理系统方便了学生查看自己学籍信息,假如学校因为疏忽输入了错误信息,自己能够查看而且立即通知学校管理员,立即修改,降低无须要麻烦.
此信息查询模块关键是方便学生查询操作,信息查询模块算法描述以下:
1 学生成功登陆;
2.点击查询学生信息;
3.输入学生编号;
4.编号为空,重新输入;
5.输入不为数字,重新输入;
6.输入正确,进入信息查询页面进行相关修改。
修改学生登录密码功效
学生能够进入学生管理系统进行登录密码修改
1. 学生成功登陆;
2.单击修改密码;
3.输入旧密码、新密码确定后,若旧密码正确则修改成功,则提醒重新输入旧密码;
4.提交修改完成修改。
4 程序运行和测试
package com.briup.view;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
import com.briup.bean.Admin;
import com.briup.bean.Student;
import com.briup.dao.AdminDao;
//登录窗口
import com.briup.dao.StudentDao;
public class LoginFrame extends JFrame{
private JCheckBox c;
private JButton loginBtn,resetBtn;
private JTextField nameInput;
private JPasswordField pwdInput;
private AdminDao adminDao=new AdminDao();
private StudentDao studentDao=new StudentDao();
public LoginFrame(){
//初始化窗口本身
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
int width=d.width;
int height=d.height;
//设置坐标为400-400 宽为300 高为200
setBounds(width/2-200, height/2-100, 400, 200);
setTitle("登录界面");
//设置窗口为不可缩放
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
event(); }
private void event() {
//为按钮添加事件处理
resetBtn.addMouseListener(new MouseAdapter() {
//监听鼠标单击事件
@Override
public void mouseClicked(MouseEvent e) {
System.exit(0); } });
loginBtn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//获取用户输入值
String username=nameInput.getText().trim();
String password=pwdInput.getText().trim();
//判定是否勾选了管理员多选框
if(c.isSelected()){
//从管理员表中检测数据
Admin a=adminDao.findAdminByName(username);
//假如a不为null说明用户输入管理员是存在
if(a==null){
//说明此管理员不存在
JOptionPane.showMessageDialog(null, "用户名或密码不正确", "提醒信息", JOptionPane.WARNING_MESSAGE);
}else{
//管理员存在 //密码正确 //密码不正确
if(a.getPassword().equals(password)){
//后台保留密码和用户从用户端输入密码是一样 JOptionPane.showMessageDialog(null, "登录成功", "提醒信息", JOptionPane.WARNING_MESSAGE);
//关闭目前登录窗口
LoginFrame.this.dispose();
//开启管理员界面
new AdminFrame(a.getUsername()).go();
}else{
JOptionPane.showMessageDialog(null, "用户名或密码不正确", "提醒信息", JOptionPane.WARNING_MESSAGE);
} }
}else{
//从一般用户表中检测数据
Student s=studentDao.findStudentByStudentId(username);
if(s==null){
JOptionPane.showMessageDialog(null, "用户名或密码不正确", "提醒信息", JOptionPane.WARNING_MESSAGE);
}else{
if(s.getPassword().equals(password)){
JOptionPane.showMessageDialog(null, "登录成功", "提醒信息", JOptionPane.WARNING_MESSAGE);
LoginFrame.this.dispose();
new StudentFrame(s,null).go();
}else{
JOptionPane.showMessageDialog(null, "用户名或密码不正确", "提醒信息", JOptionPane.WARNING_MESSAGE); } } } } });}
public void init(){
//初始化窗口内部组件
Container container=getContentPane();
//组件放到哪个位置由用户自己来制订
container.setLayout(null);
JLabel title=new JLabel("用 户 登 录");
title.setFont(new Font("楷体",0,32));
title.setBounds(110,5,200,33);
container.add(title);
JLabel nameLabel=new JLabel("用户名:");
nameLabel.setBounds(70, 55, 60, 30);
container.add(nameLabel);
nameInput=new JTextField();
nameInput.setBounds(130,60,150,20);
//设置提醒内容
nameInput.setToolTipText("此处写登录用户名");
container.add(nameInput);
JLabel pwdLabel=new JLabel("密 码:");
pwdLabel.setBounds(70, 80, 60, 30);
container.add(pwdLabel);
pwdInput=new JPasswordField();
pwdInput.setBounds(130,85,150,20);
pwdInput.setToolTipText("此处写密码");
container.add(pwdInput);
c=new JCheckBox("管理员");
c.setBounds(68, 115, 70, 30);
container.add(c);
loginBtn=new JButton("登录");
loginBtn.setBounds(140, 115, 60, 30);
container.add(loginBtn);
resetBtn=new JButton("取消");
resetBtn.setBounds(215, 115, 60, 30);
container.add(resetBtn);}
public void go(){
setVisible(true); }
public static void main(String[] args) {
new LoginFrame().go(); }}
package com.briup.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.briup.bean.Admin;
import com.briup.util.ConnectionFactory;
//和管理员相关数据库操作
public class AdminDao {
//依据用户名查找指定管理员
public Admin findAdminByName(String username){
Admin admin=null;
Connection conn=null;
PreparedStatement pstat=null;
ResultSet rs=null;
try {
conn=ConnectionFactory.getConnection();
String sql="select username,password from admin where username=?";
pstat=conn.prepareStatement(sql);
pstat.setString(1, username);
rs=pstat.executeQuery();
//假如查不到任何数据 下方while内部代码不会实施
while(rs.next()){
//假如能实施到这个地方 说明指定管理员是存在
admin=new Admin();
admin.setUsername(username);
admin.setPassword(rs.getString("password")); }
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
ConnectionFactory.close(rs, pstat, conn); }
return admin; }
public static void main(String[] args) {
AdminDao().findAdminByName("admi").getPassword()); }}
package com.briup.view;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.briup.bean.Student;
import com.briup.dao.StudentDao;//添加学生
public class AddStudentFrame extends JFrame{
private AdminFrame admin;
private JPanel p1,p2,p3,p4,p5;
private JLabel idLbl,nameLbl,ageLbl,genderLbl;
private JTextField idInput,nameInput,ageInput,genderInput;
private JButton submitBtn,cancelBtn;
private StudentDao studentDao=new StudentDao();
public AddStudentFrame(AdminFrame admin){
this.admin=admin;
setTitle("添加学生");
setResizable(false);
setBounds(400, 100, 300, 400);
init();
event();}
private void init(){
Container container=getContentPane();
container.setLayout(new GridLayout(5, 1));
p1=new JPanel();
p1.setLayout(null);
idLbl=new JLabel("学籍号:");
idLbl.setBounds(50, 30, 50, 20);
idInput=new JTextField();
idInput.setBounds(100, 30, 120, 20);
p1.add(idLbl);
p1.add(idInput);
container.add(p1);
p2=new JPanel();
p2.setLayout(null);
nameLbl=new JLabel("姓名:");
nameLbl.setBounds(50, 10, 50, 20);
nameInput=new JTextField();
nameInput.setBounds(100, 10, 120, 20);
p2.add(nameLbl);
p2.add(nameInput);
container.add(p2);
p3=new JPanel();
p3.setLayout(null);
ageLbl=new JLabel("年纪:");
ageLbl.setBounds(50, 10, 50, 20);
ageInput=new JTextField();
ageInput.setBounds(100, 10, 120, 20);
p3.add(ageLbl);
p3.add(ageInput);
container.add(p3);
p4=new JPanel();
p4.setLayout(null);
genderLbl=new JLabel("性别:");
genderLbl.setBounds(50, 10, 50, 20);
genderInput=new JTextField();
genderInput.setBounds(100, 10, 120, 20);
p4.add(genderLbl);
p4.add(genderInput);
container.add(p4);
p5=new JPanel();
p5.setLayout(null);
submitBtn=new JButton("确定");
submitBtn.setBounds(130, 10, 60, 20);
cancelBtn=new JButton("取消");
cancelBtn.setBounds(195, 10, 60, 20);
p5.add(submitBtn);
p5.add(cancelBtn);
container.add(p5);}
private void event(){
//设置目前窗口关闭操作
//此处可自定义窗口关闭时所作操作
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//将之前传输过来那个管理窗口设置为可用
if(admin!=null){
admin.setEnabled(true); }
//释放目前窗口
AddStudentFrame.this.dispose(); } });
//取消按钮操作
cancelBtn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(admin!=null){
admin.setEnabled(true); }
AddStudentFrame.this.dispose(); } });
//确定按钮操作
submitBtn.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
//接收用户在用户端输入值
//正则表示式
String studentId=idInput.getText().trim();
String studentName=nameInput.getText().trim();
String age=ageInput.getText().trim();
String gender=genderInput.getText().trim();
Student s=new Student();
//注意别输入了已存在学籍号
s.setStudentid(Long.parseLong(studentId));
s.setStudentName(studentName);
s.setPassword(studentId);
s.setAge(Integer.parseInt(age));
s.setGender(gender);
//将取得值封装成Student对象调用指定方法存放到数据库
boolean result=studentDao.addStudent(s);
if(result){
JOptionPane.showMessageDialog(null, "添加成功!");
if(admin!=null){
admin.setEnabled(true); }
AddStudentFrame.this.dispose();
}else{
JOptionPane.showMessageDialog(null, "添加失败,请检验学籍号是否已存在!"); } } });}
public void go(){
setVisible(true);
}
public static void main(String[] args) {
new AddStudentFrame(null).go();
}
}
package com.briup.view;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.briup.bean.Student;
import com.briup.dao.StudentDao;
public class FindStudentFrame extends JFrame{
private StudentDao studentDao=new StudentDao();
private JLabel idLbl,nameLbl;
private JTextField idInput,nameInput;
private JButton findBtn,cancelBtn;
public FindStudentFrame(){
setTitle("查找学生");
setBounds(405, 100, 200, 390);
setResizable(false);
init();
event(); }
private void init(){
Container container=getContentPane();
container.setLayout(new GridLayout(3, 1));
JPanel p1=new JPanel();
p1.setLayout(null);
idLbl=new JLabel("学籍号:");
idLbl.setBounds(20, 55, 50, 20);
idInput=new JTextField();
idInput.setBounds(73, 55, 100, 20);
p1.add(idLbl);
p1.add(idInput);
container.add(p1);
JPanel p2=new JPanel();
p2.setLayout(null);
nameLbl=new JLabel("姓名:");
nameLbl.setBounds(20, 55, 50, 20);
nameInput=new JTextField();
nameInput.setBounds(73, 55, 100, 20);
p2.add(nameLbl);
p2.add(nameInput);
container.add(p2);
JPanel p3=new JPanel();
p3.setLayout(null);
findBtn=new JButton("搜索");
findBtn.setBounds(60,30,60,20);
cancelBtn=new JButton("取消");
cancelBtn.setBounds(123,30,60,20);
p3.add(findBtn);
p3.add(cancelBtn);
container.add(p3); }
private void event(){
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
FindStudentFrame.this.dispose(); }});
findBtn.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
String idStr=idInput.getText().trim();
String nameStr=nameInput.getText().trim();
Long studentId=null;
String studentName=null;
if(idStr.length()!=0){ //假如id有值
studentId=Long.parseLong(idStr); }
if(nameStr.length()!=0){
studentName=nameStr; }
List<Student> students=studentDao.findStudentByConditions(studentId, studentName);
//将查询结果传输给显示界面
new ShowResultFrame(students).go() } }); }
public void go(){
setVisible(true); }
public static void main(String[] args) {
new FindStudentFrame().go();
// System.out.println(" ".trim().length()); 正则表示式 \s
// System.out.println("\\");
// System.out.println("1 2 ".replaceAll("\\s", "").length()); }}
package com.briup.view;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.e
展开阅读全文