实训报告书
实训名称: 基础项目实训
系 (部):专业班级: 网络工程12-1 学生姓名: 芦志强 学 号: 201223010117 指导教师: 王鸽 完成日期: 2014/12/14
山东科技大学
课程实训报告书
……
……
……
……目 录 目 录............................................................................................................................................... 3 1 实训概述 ....................................................................................................................................... 3 2 Java访问并处理数据库的课题描述 ........................................................................................ 3 ……
…装
…
……
…3
…
……
……
…4
…
…5
……
订……………………
……
……
…线
……
……
…
……
……
……
3 2.1 课题简介 ......................................................................................................................... 3 2.2 模块简介 ......................................................................................................................... 3 2.3 数据库结构设计 ............................................................................................................. 4 2.4系统功能层次图 ................................................................................................................ 6 系统模块的详细设计 ................................................................................................................. 6 3.1登录模块设计 ............................................................................................................. 6 3.2管理员模块设计 ......................................................................................................... 6 3.3学生模块设计 ............................................................................................................. 8 程序运行与测试 ......................................................................................................................... 9 实训总结 ................................................................................................................................... 30
课程实训报告书
Java访问并处理数据库的设计与实现
1 实训概述
山东科技大学泰安校区2012级网络工程专业于大三上学期组织了在北京中关村为期一周的以及Java实训,本次实训的课题是“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 模块简介
管理员模块功能需求:
管理员身份登陆系统后,可以对学生信息进行添加、修改和查询等操作,对学生进行添加、修改和查询功能操作,还可以修改管理员的登录密码。
学生模块功能需求:
学生信息管理系统中需要在学生登录或验证身份后,,可以自行完成学生个人信息的查询,也可以进行修改和删除个人信息、修改学生密码等操作。
1
2.3 数据库结构设计
数据表设计
定义每个表的数据类型以及字段限制,使数据库达到一定的完整性.每个表的物理设计如下:
1.表admin保存用户的个人信息
用户信息表主要是用来保存管理员用户的基本信息,包括管理员的ID和管理员的登录密码,只有符合这两个字段的格式要求,才能登录成功,结构表如下:
表4-2管理员信息表
2.表student保存学生基本信息,结构表如下:
表4-5学生信息表
逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
流程图层次设计
图的格式如下所示:
图1 管理员对学生信息管理系统局部E-R图
数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表现系统的逻辑处理功能。
2.4系统功能层次图
学生信息管理系统是一个典型的数据库开发应用程序,系统是和数据库相结合.,进入系统,有两个用户,分别是普通学生、和管理员。
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);
1
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.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import com.briup.bean.Student;
import com.briup.dao.StudentDao;
public class ShowResultFrame extends JFrame {
private List<Student> students; private StudentDao studentDao=new StudentDao(); public ShowResultFrame(List<Student> students) { setTitle("查询结果"); if (students.size() > 0) { setBounds(100, 100, 300, 60 * students.size()); } else { setBounds(100, 100, 300, 150); } this.students = students; init();} private void init() { Container container = getContentPane(); container.setLayout(new GridLayout(students.size(), 2)); // 遍历集合 将集合中的每一条数据显示到当前容器里面 if (students.size() == 0) { container.add(new JLabel("暂无记录!")); } else { for (Student stu : students) { JLabel l = new JLabel(stu.getStudentName()); final Student s = stu; l.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getClickCount()>=2){ new StudentFrame(s, null).go(); } }}); l.setBorder(BorderFactory.createLineBorder(new Color(253, 253,187))); JButton b = new JButton("删除"); final Long studentId = stu.getStudentid(); b.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) {
int choose=JOptionPane.showConfirmDialog(null, "确定删除?"); //判断用户点击的是否是确定按钮 if(choose==JOptionPane.OK_OPTION){ ShowResultFrame.this.dispose(); students.remove(s); new ShowResultFrame(students).go(); studentDao.deleteStudentById(studentId); }); } } }} container.add(l); container.add(b); } private void event() { this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { ShowResultFrame.this.dispose(); } setVisible(true); } }); } public void go() { public static void main(String[] args) { }}
package com.briup.view;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField; import javax.swing.JTextField;
import com.briup.bean.Student;
import com.briup.dao.StudentDao;
public class StudentFrame extends JFrame{
private JPanel p1,p2,p3,p4,p5,p6; private JLabel idLbl,pwdLbl,nameLbl,ageLbl,genderLbl; private JTextField idInput,nameInput,ageInput,genderInput; private JPasswordField pwdInput; private Student student; private JButton modifyPwdBtn,submitBtn,exitBtn; private String nPassword; private StudentDao dao=new StudentDao(); //student记录当前登录的用户 nPassword记录修改以后的密码 public StudentFrame(Student s,String nPassword){ this.student=s; this.nPassword=nPassword; //初始化的时候获取当前用户的密码 setTitle("学生信息"); setResizable(false); setBounds(400, 100, 300, 400); //默认关闭行为 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); init(); event(); }
public void go(){ setVisible(true);} private void init(){ Container container=getContentPane(); container.setLayout(new GridLayout(6, 1)); p1=new JPanel(); p1.setLayout(null); idLbl=new JLabel("学籍号:"); idLbl.setBounds(50, 30, 50, 20); idInput=new JTextField(); //需要将数字类型转换为字符串类型 +"" //字符串类型---》数字类型 parseInt parseLong idInput.setText(student.getStudentid()+""); //设置学籍号不可修改
idInput.setEnabled(false);
idInput.setEditable(false);
idInput.setDisabledTextColor(new Color(255, 255, 255)); idInput.setDisabledTextColor(Color.black);
idInput.setBounds(100, 30, 120, 20);
p1.add(idLbl);
p1.add(idInput);
container.add(p1);
p2=new JPanel();
p2.setLayout(null);
pwdLbl=new JLabel("密 码:");
pwdLbl.setBounds(50, 30, 50, 20);
pwdInput=new JPasswordField();
if(nPassword==null){
//代表从登录界面过来的 pwdInput.setText(student.getPassword());
// //
}else{ //如果有新密码 说明是从修改密码那个窗口跳回来的 pwdInput.setText(nPassword);} pwdInput.setEditable(false); pwdInput.setDisabledTextColor(Color.black); pwdInput.setBounds(100, 30, 120, 20); modifyPwdBtn=new JButton("修改"); modifyPwdBtn.setBounds(225, 30, 60, 20); p2.add(pwdLbl); p2.add(pwdInput); p2.add(modifyPwdBtn); container.add(p2); p3=new JPanel(); p3.setLayout(null); nameLbl=new JLabel("姓 名:"); nameLbl.setBounds(50, 30, 50, 20); nameInput=new JTextField(); nameInput.setText(student.getStudentName()); nameInput.setBounds(100, 30, 120, 20); p3.add(nameLbl); p3.add(nameInput); container.add(p3); p4=new JPanel(); p4.setLayout(null); ageLbl=new JLabel("年 龄:"); ageLbl.setBounds(50, 30, 50, 20); ageInput=new JTextField(); ageInput.setText(student.getAge()+""); ageInput.setBounds(100, 30, 120, 20); p4.add(ageLbl);
p4.add(ageInput); container.add(p4); p5=new JPanel(); p5.setLayout(null); genderLbl=new JLabel("性 别:"); genderLbl.setBounds(50, 30, 50, 20); genderInput=new JTextField(); genderInput.setText(student.getGender()); genderInput.setBounds(100, 30, 120, 20); p5.add(genderLbl); p5.add(genderInput); container.add(p5); p6=new JPanel(); p6.setLayout(null); submitBtn=new JButton("确认"); submitBtn.setBounds(150, 30, 60, 20); exitBtn=new JButton("取消"); exitBtn.setBounds(215, 30, 60, 20); p6.add(submitBtn); p6.add(exitBtn); container.add(p6); } private void event(){ modifyPwdBtn.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { //设置之前的窗口无效 StudentFrame.this.setEnabled(false); //弹出修改密码窗口 new ModifyPwdFrame(StudentFrame.this).go(); }}); exitBtn.addMouseListener(new MouseAdapter() {
}); //关闭当前窗口 返回登录窗口 submitBtn.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { String newPassword=pwdInput.getText().trim(); String newName=nameInput.getText().trim(); String newAgeStr=ageInput.getText().trim(); String newGender=genderInput.getText().trim(); //获取用户修改的信息 Student newStudent=new Student(); newStudent.setAge(Integer.parseInt(newAgeStr)); newStudent.setPassword(newPassword); newStudent.setStudentName(newName); newStudent.setStudentid(student.getStudentid()); newStudent.setGender(newGender); //newStudent里面存储着修改以后的学生信息 dao.updateStudentById(newStudent); StudentFrame.this.dispose(); if(student.getPassword().equals(newPassword)){ new StudentFrame(newStudent,null).go(); }else{ //如果旧密码和新密码不相同 就重新登录 JOptionPane.showMessageDialog(null, "密码已被更改,请重新登录!"); new LoginFrame().go(); }}});} public Student getStudent(){ return student; } public static void main(String[] args) {
new StudentFrame().go();}} //
5 实训总结
本系统是采用Java技术开发的,由于在这个阶段中,基本是处于边学习边实践的状态,基础知识还不是很牢靠,加之自身水平原因,程序还是有许多不足之处。,比如界面模块做的不够好、实现的功能不够完整、界面需要更精确的美化。
经过这一段时间的努力,收获了很多,在收获的同时也发现了很多的不足,回首论文的写作过程,得到了许多人的帮助,尤其是我的实训老师,在我论文的完成过程中给予了我许多的帮助和鼓励。在系统开发的两个月里,我受到了指导
老师的细心指导,甄磊老师老师严谨的指导态度与深厚的理论知识都让我受益非浅,让我学到了很多的东西,无论是理论还是实践都使我的知识有很大的提高。通过本次实训,我掌握了Java编程技能,对Oracle数据库有了较深的理解。比较全面的巩固了编程思想.也通过本次实训,使我懂得在在编程工作中,程序员的工作态度以及良好的习惯的重要性