实验八基于图形用户界面的JDBC程序开发
实验四-Java基于图形界面的JDBC程序开发-陈正宁-20151323349

1淮海工学院计算机工程学院实验报告书课程名:面向对象程序设计A实验题目: 基于图形界面的JDBC程序开发班级:软嵌151学号:2015123349姓名:陈正宁一.实验目的(1)进一步理解掌握图形界面设计的步骤和方法;(2)掌握常用GUI组件的属性、方法及事件处理程序的编写;(3)理解常用的布局管理器,如BorderLayout、GridLayout、GridBagLayout、CardLayout、BoxLayout的用法,能够正确使用布局管理器对容器组件进行合理布局。
(4)掌握菜单的设计及其事件处理方法。
(5)掌握消息对话框、确认对话框、颜色对话框的用法。
(6)掌握JDBC的工作原理;(7)掌握通过JDBC-ODBC桥建立数据库连接的方法;(8)理解并能使用基本的SQL语句实现查询和增、删、改操作;(9)掌握Connection、DriverManager、Statement、ResultSet的用法;(10)能够利用JDBC实现对数据库中数据的增、删、改、查操作;(11)了解批处理和事务处理的实现方法。
二. 实验内容及要求(1)首先定义实体类,可以是教师类、学生类、图书类。
要求属性的名称和数据类型定义合理,定义必要的构造方法和若干对属性进行查询和修改的方法;定义toString()方法返回实体类的状态信息。
(2)编写图形界面的程序,合理利用标签、按钮、文本框、组合框、单选钮(或复选框)等常用组件与用户进行交互,完成对象的创建、查询、修改、删除。
要求:操作提示信息通过消息对话框显示;当有修改、删除操作时,通过确认对话框从用户处获得确认。
(3)考虑异常处理,如:当修改对象的某些属性值时,如果传入的值不合理,则拒绝操作并给出异常提示信息。
(4)正确地利用布局管理器对图形界面进行布局三.实验步骤(1)在Access或SQL Server中建立数据库及基础表。
在控制面板中正确配置ODBC数据源,并测试成功。
jdbc编程实验报告

jdbc编程实验报告JDBC编程实验报告JDBC(Java Database Connectivity)是Java语言中用于访问数据库的API。
它提供了一种标准的方法来连接和操作各种类型的数据库,包括关系型数据库和非关系型数据库。
在本次实验中,我们将使用JDBC编程来连接MySQL数据库,并进行一些基本的操作。
实验环境:- 操作系统:Windows 10- 开发工具:Eclipse- 数据库:MySQL 8.0.23实验步骤:1. 下载并安装MySQL数据库,并创建一个名为“test”的数据库。
2. 在Eclipse中创建一个Java项目,并添加MySQL的JDBC驱动jar包。
3. 编写Java代码,连接MySQL数据库,并进行一些基本的操作,如插入、查询、更新和删除数据。
下面是一个简单的示例代码:```javaimport java.sql.*;public class JdbcDemo {public static void main(String[] args) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {// 加载MySQL的JDBC驱动Class.forName("com.mysql.cj.jdbc.Driver");// 连接MySQL数据库conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?ser verTimezone=UTC", "root", "123456");// 创建Statement对象stmt = conn.createStatement();// 插入数据String sql = "INSERT INTO student (name, age, gender) VALUES ('Tom', 18, 'male')";stmt.executeUpdate(sql);// 查询数据sql = "SELECT * FROM student";rs = stmt.executeQuery(sql);while (rs.next()) {System.out.println(rs.getInt("id") + "\t" + rs.getString("name") + "\t" + rs.getInt("age") + "\t" + rs.getString("gender"));}// 更新数据sql = "UPDATE student SET age = 19 WHERE name = 'Tom'"; stmt.executeUpdate(sql);// 删除数据sql = "DELETE FROM student WHERE name = 'Tom'";stmt.executeUpdate(sql);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {try {if (rs != null) rs.close();if (stmt != null) stmt.close();if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}```在上面的代码中,我们首先加载MySQL的JDBC驱动,然后使用DriverManager.getConnection()方法连接MySQL数据库。
基于图形界面的JDBC程序开发

基于图形界面的JDBC程序开发淮海工学院计算机科学系实验报告书课程名: 面向对象程序设计题目 : 基于图形界面的JDBC程序开发姓名 :班级:学号:评语:成绩: 指导教师:批阅时间: 年月日《面向对象程序设计》实验报告 - 1 -实验四基于图形界面的JDBC程序开发实验目的和要求目的:(1)理解JDBC的工作原理,熟悉java.sql包中与数据库访问相关的类及其用法,如DriverManager、 Connection、Statement、ResultSet。
(2)熟悉利用JDBC进行数据库访问的步骤:—加载JDBC驱动程序(Class.forName()—建立数据库连接(DriverManager.getConnection())—发布,,,命令(stmt=Con.createStatement(),stmt.executeQuery())取结果集并处理(ResultSet的next()方法和.get,,,()方法) ——关闭连接,释放对象(close())(3)掌握建立ODBC数据源的方法,会使用JDBC-ODBC Bridge进行数据库访问。
要求:(1) 进行规范的数据库设计~正确地定义关系数据表的结构及表间联系(包括:字段的数据类型、宽度、精度、主键、外键、缺省值)。
(2)要求界面布局紧凑、流畅、美观~实现的功能较为完善(3)本实验分两次完成~第一次可以先做一些准备测试~旨在熟悉,,,, ,,,编程接口中相关类的使用方法~测试中可以先基于字符界面实现功能~再逐步过渡到图形界面实验内容编写图形界面程序~利用JDBC实现图书,同学通讯录,校园卡,团员,教师,学生管理系统。
(任选1题~也可自拟题目~但需指导教师同意:)实验步骤(1)在Access或SQL Server中建立数据库及基础表。
在控制面板中正确配置,,,,数据源~并测试成功。
(2)编写图形界面的Application~利用JDBC-ODBC Bridge进行数据库访问~实现要求的功能。
JDBC实验八 WEB常用设计模式及应用

广州中医药大学医学信息工程学院实验报告课程名称:网络数据库编程专业班级:计算机科学与技术( 2010 )级学生学号:2010081126学生姓名:吕吕实验名称:实验成绩:课程类别:必修□限选 公选□其它□实验八 WEB常用设计模式的应用实验类型:应用性实验实验日期: 2013.04.24[实验目的]1.熟悉J2EE的构架。
2.掌握MVC设计模式的应用3.熟悉JSP+TAG模式的应用[实验内容](可参考示例)(以下为理论题)1.选用一熟悉的基于WEB的管理信息系统,如用MVC设计模式,请分别写出对应的M、V、C模块,并用实例说明如何实现,画出对应的示意图等。
答:MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
目前Web学生信息管理系统都能支持多平台访问与控制,采用分布数据管理方式。
学生可以通过网络实现信息查询、选课、个人信息统计、下载学习资料、上传作业、报告乃至实现网络化学习,该系统主要有如下几个功能模块:基于MVC架构进行开发设计,MVC组件类型和对应的功能模块如下图所示:该学生信息管理系统中,对应的M、V、C模块如下图所示:2.MVC模式与JAVABEAN+Servlet+JSP有什么区别?答:MVC是模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工。
其中Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现;View层用于与用户的交互,通常用JSP来实现;Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
所以说,MVC模式是一种软件设计的典型模式,JA V ABEAN+Servlet+JSP 是MVC实现的具体技术。
JDBC实验报告

实验报告
学院计算机学院班级学号姓名
课程名称Java程序设计实验日期
实验名称数据库应用开发成绩
实验目的:深入理解JDBC数据库驱动程序的概念,掌握JDBC提供的访问数据库相关接口和类的应用,掌握使用JDBC的Java数据库应用程序开发的基本步骤和方法。
实验条件:使用JDK和Eclipse
实验目的
本实验要求学生使用JDBC提供的接口和类编写一个Java应用程序,实现对学生数据信息的查询、删除、插入、更新等操作。
学生数据库(student)在MySQL数据库服务器中创建。
1. 在MySQL中创建学生数据库student,其中一个学生信息表stuinfo结构如下:
图1 stuinfo表结构
2. 设计一个Java程序,界面如图2所示,实现以下功能:
(1)点击“全部检索”按钮,检索stuinfo表的所有记录,显示在上面的JTable组件中;
(2)输入查询学号,点击“查询”按钮,查询该学生信息显示在左边面板中,查询不到时弹出信息提示。
(3)左边面板中输入学生信息,点击“添加”按钮,将此学生信息插入stuinfo表中,弹出插入是否成功的提示框。
(4)点击“删除”按钮,依据上边学号值删除该学生记录,弹出删除是否成功的提示框。
(5)点击“更新”按钮,依据上边学号值更新该学生的其它信息,弹出更新是否成功的提示框。
实验结果
实验总结
每次对学生进行增删改查后,表要实时变化。
我在界面的代码中写了一个refresh函数,每当有有数据变化,它都会将当前表所在的JScrollPane移除,之后TableModel再从数据库中读取数据,重新建立一个表格,再将其添加到新建的JScrollPane中,放到界面中去。
实训项目:用户登录系统(jdbc)

项目名称:用户管理系统开发环境:1. JDK 6.02. Eclipse3.3或MyEclipse6.03. Oracle 10g软件功能:1.注册功能: 用户可以注册成本软件的用户。
(注:权限是普通用户)如下图:2.登录功能: 用户输入用户名和密码。
断用户是否存在存在:提取用户的权限权限如果是:管理员的话则显示如下图权限如果是:普通用户的话则显示如下图:3.普通用户的修改功能普通用户可以修改自己的name ,pass ,mail 不能修改权限和ID。
运行效果如下图:4.普通用户的查询功能普通用户可以查询自己的详细信息运行效果如下图:5.管理员的添加功能管理员的添加和普通用户的注册一样。
Id自动分配。
权限是普通用户:运行效果如图:6.管理员的修改功能:管理员可以修改任何人的信息。
(注:可以把普通用户修改成管理员)根据id 修改某个用户信息运行效果如图:7.管理员的查询功能:管理员可以有三个查询方式:运行效果如图:1.全部查询:运行效果如图:2.根据id查询某一个用户:运行效果如图:3.根据用户名查询:支持模糊查询运行效果如图:8.管理员的删除功能:运行效果如图:工作流程图:import java.sql.Connection;import java.sql.SQLException; import java.sql.Statement;public class administrator { final static connection connect= new connection();final static Connection conn = connect.connectDbByOci();String selectAdminTable = "select *from admintable";String adminTable = "create table admintable(username varchar(20))"; String selectAdmin = "select * from admintable whereusername='admin'"; String insertDefaultAdmin = "insert into admintable(username) values('admin')"; String selectAdminOnUsertable = "select * from usertable where username='admin'";String insertAdminToUsertable = "insert into usertable(username,passwd,usermail)values('admin','1234','admin@1234')";public administrator(){ try { Statement stmt = conn.createStatement(); //stmt.executeUpdate(selectAdmin);stmt.executeUpdate(selectAdminTable);//查看管理员的表是否存在if (stmt!=null) {stmt.close();}}catch(SQLException e){ try { Statement stmt = conn.createStatement(); //stmt.executeUpdate(defaultAdmministator); stmt.executeUpdate(adminTable);//创建管理员表 if (stmt!=null) {stmt.close();用户注册用户登录判断用户是否存存在 普通用户Y esNo判断用户权限 管理员普通用户管理员修改个人信息查询个人信息查询用户添加用户删除用户修改用户查询全部用户 根据ID 查询 根据NAME 查}}catch (SQLException a){a.printStackTrace();}}try{Statement stmt = conn.createStatement();if(stmt.executeUpdate(selectAdmin)==0)//查看有没有admin这个管理员账号{stmt.executeUpdate(insertDefaultAdmin);}if(stmt.executeUpdate(selectAdminOnUsertable)==0){stmt.executeUpdate(insertAdminToUsertable);}if (stmt!=null){stmt.close();}}catch(SQLException e){e.printStackTrace();}}public administrator(String username,String passwd,String usermail)//可提供创建管理员的方法{String insertAdmintable = "insert into admintable(username) values('"+username+"')";String selectAdminuser = "select * from usertable where username='"+username+"'";String insertAdminUser = "insert into usertable(username,passwd,usermail) values('"+username+"','"+passwd+"','"+usermail+"')";try{Statement stmt = conn.createStatement();stmt.executeUpdate(insertAdmintable);if(stmt.executeUpdate(selectAdminuser)==0){stmt.executeUpdate(insertAdminUser);}else{System.out.println("更新失败!请换个管理员用户名");}if (stmt!=null){stmt.close();}}catch (SQLException c){c.printStackTrace();}}}import java.sql.*;public class connection {final static String sDBDriver = "oracle.jdbc.driver.OracleDriver";final static String sConnStr = "jdbc:oracle:oci8:system/manager@ORCLLGG";//oci方法//final static String sConnStr = "jdbc:oracle:thin:@localhost:1521:ORCLLGG";//thin方法连接数据库public connection(){}public Connection connectDbByOci(){Connection conn=null;try{Class.forName(sDBDriver);//conn = DriverManager.getConnection(sConnStr,"sys as sysdba","oracle");conn = DriverManager.getConnection(sConnStr);}catch (Exception e){System.out.println("error:"+e.getMessage());}return conn;}}import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;//import java.util.Scanner;public class CreateUserTable {final static connection connect= new connection();final static Connection conn = connect.connectDbByOci();String createUserinfo = "create table usertable(id number,username varchar(20),passwd varchar(20),usermail varchar(20))";//存放用户信息表String selectUserTable = "select * from usertable";//定义触发器String idSeq = "create sequence user_id start with 1 increment by 1 nomaxvalue";String selectSeq = "select sequence_name from all_sequences where sequence_name='USER_ID'";String idTrigger = "create or replace trigger id_trg before insert on usertable for each row begin if inserting then select user_id.nextval into :new.id from dual;end if;end;";public CreateUserTable(){try{Statement stmt = conn.createStatement();/*if (stmt.executeUpdate(selectMailTable) != 0)//存放用户邮箱的表selectMailTable{stmt.executeUpdate(query);}*/stmt.executeUpdate(selectUserTable);//查看是否有这个用户表if (stmt!=null){stmt.close();}}catch(SQLException e){try{Statement stmt = conn.createStatement();stmt.executeUpdate(createUserinfo);//创建用户表if (stmt!=null){stmt.close();}}catch (SQLException a){a.printStackTrace();}//System.out.println("ssss");}try //为用户表中的id列自动建值,默认管理员的id是1{Statement stmt = conn.createStatement();if(stmt.executeUpdate(selectSeq)==0){stmt.executeUpdate(idSeq);//序列//stmt.executeUpdate(idTrigger);//触发器}//stmt.executeUpdate(idSeq);//序列stmt.executeUpdate(idTrigger);//触发器}catch(SQLException e){e.printStackTrace();}}}public class Main {public static void main (String []args){new CreateUserTable();new administrator();new Outline().welcome();}}import java.util.Scanner;import java.sql.*;public class Outline {final static connection connect= new connection();final static Connection conn = connect.connectDbByOci();void welcome(){Scanner sc = new Scanner(System.in);System.out.println("欢迎使用neusoft的用户管理系统");System.out.println("============================");System.out.println("用户登录--------------------1");System.out.println("用户注册--------------------2");System.out.println("退出程序--------------------3");int InputNu=sc.nextInt();switch (InputNu){case 1:log();break;case 2:regedit();break;case 3:quit();break;default: System.out.println("请输入正确的号码:1|2|3");}}void log(){Scanner sc = new Scanner(System.in);System.out.println("用户登录界面");System.out.println("============================");System.out.println("请输入你的用户名");String oldname=sc.next();System.out.println("请输入你的密码");String oldpasswd=sc.next();String authtication = "select * from usertable where username='"+oldname+"' and passwd='"+oldpasswd+"'";String adminAuthtication = "select * from admintable where username='"+oldname+"'";int adminId = 0;//判断是否是管理员try{Statement stmt = conn.createStatement();if (stmt.executeUpdate(authtication) ==0){System.out.println("用户名或密码错误,请重新登录");log();}else{System.out.println("登录成功");adminId=stmt.executeUpdate(adminAuthtication);//将受影响的语句的行数返回给adminidif (adminId==0){System.out.println(oldname+"你好! "+"你的权限是:管理员");System.out.println("修改自己的信息--------------------1");System.out.println("查询自己的信息--------------------2");System.out.println("退出程序--------------------------3");int number=sc.nextInt();switch (number){case 1:{String userinfo = "select * from usertable where username='"+oldname+"'";System.out.println("你现在的信息是:");try{ResultSet rs = stmt.executeQuery(userinfo);while(rs.next()){System.out.println("用户名"+rs.getString(2)+" 密码"+rs.getString(3)+" 邮箱"+rs.getString(4));}//取查询的结果System.out.println("请输入要修改的姓名");String newname=sc.next();System.out.println("请输入要修改的密码");String newpasswd=sc.next();System.out.println("请输入要修改的邮箱");String newmail=sc.next();String alterUserinfo = "update usertable set username='"+newname+"',passwd='"+newpasswd+"',usermail='"+newmail+"' where username='"+oldname+"'";if(stmt.executeUpdate(alterUserinfo)!=0){System.out.println("修改成功");}else{System.out.println("修改失败");}if(rs!=null){rs.close();}if (stmt!=null){stmt.close();}}catch(SQLException e){e.printStackTrace();}}break;case 2:{String userinfo = "select * from usertable where username='"+oldname+"'";System.out.println("你现在的信息是:");try{ResultSet rs = stmt.executeQuery(userinfo);while(rs.next()){System.out.println("用户名"+rs.getString(2)+" 密码"+rs.getString(3)+" 邮箱"+rs.getString(4));}if (stmt!=null){stmt.close();}}catch(SQLException e){e.printStackTrace();}}break;case 3:quit();break;default: System.out.println("请输入正确的号码:1|2|3");}}else{System.out.println(oldname+"你好! "+"你的权限是:普通用户");System.out.println("添加用户--------------------1");System.out.println("删除用户--------------------2");System.out.println("修改用户--------------------3");System.out.println("查询用户--------------------4");System.out.println("程序退出--------------------5");int number=sc.nextInt();switch(number){case 1://添加用户{System.out.println("请输入用户名");String name=sc.next();System.out.println("请输入密码");String passwd=sc.next();System.out.println("请输入邮箱");String mail=sc.next();String insertUserinfo = "insert into usertable(username,passwd,usermail) values('"+name+"','"+passwd+"','"+mail+"')";String adminauthtication = "select * from usertable where username='"+name+"'";try{if(stmt.executeUpdate(adminauthtication)==0){stmt.executeUpdate(insertUserinfo);System.out.println("用户添加成功");}else{System.out.println("添加失败,用户已存在,请换个用户名");}if (stmt!=null){stmt.close();}}catch(SQLException e){e.printStackTrace();}}break;case 2://删除用户{System.out.println("请输入要删除的用户ID号");int id=sc.nextInt();String deluser="delete from usertable where id='"+id+"'";try{stmt.executeUpdate(deluser);System.out.println("删除用户成功");}catch (SQLException e){e.printStackTrace();}}break;case 3://修改用户{System.out.println("请输入要修改的用户ID");int id=sc.nextInt();System.out.println("请输入要修改的用户名");String newname=sc.next();System.out.println("请输入要修改的密码");String newpasswd=sc.next();System.out.println("请输入要修改的邮箱");String newmail=sc.next();System.out.println("请输入要修改的用户权限(admin/normal)");String newpower=sc.next();String alteruserinfo="update usertable set username='"+newname+"',passwd='"+newpasswd+"',usermail='"+newmail+"' w here id='"+id+"'";String insertadmin="insert into admintable(username) values('"+newname+"')";try{stmt.executeUpdate(alteruserinfo);System.out.println(newpower);if(newpower.equals("admin"))//字符常量的比较{stmt.executeUpdate(insertadmin);System.out.println("普通用户变为管理员用户");}System.out.println("普通用户修改成功");}catch(SQLException e){e.printStackTrace();}}break;case 4://查询用户{System.out.println("查询全部用户--------------------------1");System.out.println("根据ID查询用户------------------------2");System.out.println("根据姓名查询用户----------------------3");int snumber=sc.nextInt();if(snumber==1)//全部{String allinfo="select * from usertable";try{ResultSet rs = stmt.executeQuery(allinfo);while(rs.next()){System.out.println("ID:"+rs.getString(1)+" 用户名:"+rs.getString(2)+" 密码:"+rs.getString(3)+"邮箱:"+rs.getString(4));//可直接输出4列的全部信息}}catch (SQLException e){e.printStackTrace();}}if(snumber==2)//ID{System.out.println("请输入要查询的ID");int idnumber=sc.nextInt();String idinfo= "select * from usertable where id='"+idnumber+"'";try{ResultSet rs = stmt.executeQuery(idinfo);while(rs.next()){System.out.println("ID:"+rs.getString(1)+" 用户名:"+rs.getString(2)+" 密码:"+rs.getString(3)+"邮箱:"+rs.getString(4));//可直接输出4列的全部信息}}catch(SQLException e){e.printStackTrace();}}if(snumber==3)//姓名{System.out.println("请输入要查询的用户名(支持模糊查询)");String name=sc.next();String nameinfo= "select * from usertable where username like '%"+name+"%'";try{ResultSet rs = stmt.executeQuery(nameinfo);while(rs.next()){System.out.println("ID:"+rs.getString(1)+" 用户名:"+rs.getString(2)+" 密码:"+rs.getString(3)+"邮箱:"+rs.getString(4));//可直接输出4列的全部信息}}catch(SQLException e){e.printStackTrace();}}}break;case 5:{quit();break;}default: System.out.println("请输入正确的号码:1|2|3|4|5");}}}if (stmt!=null){stmt.close();}}catch(SQLException e){e.printStackTrace();}//System.out.println(adminId);}void regedit(){Scanner sc = new Scanner(System.in);System.out.println("用户注册界面");System.out.println("=============================");System.out.println("请输入你的用户名");String name=sc.next();System.out.println("请输入你的密码");String passwd=sc.next();System.out.println("请输入你邮箱");String mail=sc.next();String authtication = "select * from usertable where username='"+name+"'";String insertUserinfo = "insert into usertable(username,passwd,usermail) values('"+name+"','"+passwd+"','"+mail+"')";Statement stmt = null;try{stmt = conn.createStatement();if(stmt.executeUpdate(authtication)==0){stmt.executeUpdate(insertUserinfo);System.out.println("用户注册成功");}else{System.out.println("注册失败,用户已存在,请换个用户名");//quit();regedit();//循环调用}if (stmt!=null){stmt.close();}}catch(SQLException e){e.printStackTrace();}}void quit(){System.exit(0);}}。
java实验报告——JDBC与网络编程

2
实验报告
实验解答: 1) 写出数据库名称,及其中的表名称,画出各表的结构,要求给出字段名、类型和 大小。 数据库名称:stu 表:dangan、course、grade dangan: 列名 数据类型 允许 Null 值 num text □ name nchar(10) □ sex nchar(10) □ grade int □ professional nchar(10) □ face nchar(10) □ course: 列名 数据类型 允许 Null 值 cnum text □ cname nchar(10) □ time int □ credit int □ nature nchar(10) □ term int □ grade: 列名 数据类型 允许 Null 值 num text □ cnum text □ chengji float □ 2)设计中使用了几个类,各自的功能是什么?画出各类之间的 UML 图。
实验报告
1)建立的数据库应该包含三张表、档案表、课程表和成绩表,各表中的字段自行定义。 2)数据录入应针对三张表各自设计一个界面进行数据的录入,并提供必要的按钮进行保存、重置和 退出录入等。 3)数据修改应针对三张表中已经录入的数据进行部分或全部进行修改,可以按指定的某学生或课程 进行学生档案或成绩或课程信息修改 4)查询:应提花多种选择,对多表进行查询,如查看学生成绩信息,可以考虑输出的内容为:学号、 姓名、课程名称、成绩。 5)统计:尽可能地提供各种统计功能。 6)显示功能中,尽可能使用表格组件或 Jlist 组件或其他组件展现出要显示的内容 以上内容大家可发挥自己的设计理念,尽量做到简便易用、界面美观等。 要求:1)数据库必须使用 SQL 或 oracle; 2)集中指导 4 学时;课后学时 20 学时。
简述jdbc的开发步骤

简述jdbc的开发步骤
JDBC是Java平台中用于连接关系型数据库的标准API,它允许Java程序直接访问各种关系型数据库。
以下是JDBC的开发步骤:
1. 确定需求:在开发JDBC应用程序之前,需要明确应用程序需要连接的数据库类型、数据库地址和数据库用户名、密码等信息。
2. 下载JDBC驱动程序:从JDBC制造商的官方网站下载适用于操作系统的JDBC驱动程序。
3. 编写JDBC驱动程序的代码:编写JDBC驱动程序的代码,实现与数据库的连接,并执行各种连接和查询操作。
4. 安装和配置JDBC驱动程序:在应用程序中安装和配置JDBC驱动程序,确保它能够正确地与数据库连接。
5. 编写JDBC应用程序代码:使用JDBC API编写Java应用程序代码,实现与数据库的连接,并执行各种连接和查询操作。
6. 测试和调试:测试JDBC应用程序代码,确保它能够正确地连接到数据库并执行各种操作。
如果出现问题,调试代码并解决问题。
JDBC的开发步骤包括确定需求、下载JDBC驱动程序、编写JDBC驱动程序的代码、安装和配置JDBC驱动程序、编写JDBC应用程序代码和测试和调试。
JDBC 驱动程序的编写是连接数据库的关键,需要实现与数据库的连接和查询操作。
应用程序代码的编写则是实现与数据库交互的关键,需要使用JDBC API编写Java 应用程序代码,实现与数据库的连接和查询操作。
在开发JDBC应用程序时,需要特别注意安全问题,例如防止SQL注入和跨站脚本攻击等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4基于图形用户界面的JDBC程序开发 (2)淮海工学院计算机科学系实验报告书课程名:__ Java___________题目:_基于图形用户界面的JDBC程序开发班级:__ ___________学号:__ __________姓名:__ __________ _一、实验目的熟练运用GUI标准组件和布局管理器,正确合理地利用常用AWT和Swing组件进行图形界面的设计;理解Java的事件处理机制,正确运用Java的事件处理机制及事件委托模型编写图形界面组件的事件处理程序;理解Java多线程机制,掌握线程使用方法。
理解JDBC的数据库访问编程原理,正确利用JDBC技术编写以数据库应用为核心的软件系统,并在设计中灵活运用之前所学的Java语言面向对象的编程技术。
二、实验环境操作系统:windows 2000 或 Window XP集成开发环境:JDK1.6及以上版本三、实验学时2学时,必做实验。
四、实验内容(1)进一步熟悉JavaGUI标准组件和布局管理器、正确合理地利用常用AWT和Swing组件进行图形界面的设计;理解Java的事件处理机制,正确运用Java的事件处理机制及事件委托模型编写图形界面组件的事件处理程序;实践程序调试方法、纠错能力及编程规范性等;理解JDBC的数据库访问编程原理,正确利用JDBC技术编写以各种数据库应用;(2)按以下各题目具体要求调试或编写相关算法程序五、实验步骤与结果1 请按照以下功能要求编写并调试相关程序(1) 请定义一个抽象的“科学图书”类,其中包含1个公共的抽象方法:图书介绍;1个属性为:图书类别 (字符串类型);(2) 定义一个“计算机图书”子类(继承于“科学图书”类),其中包括2个域:出版社、定价;2个构造方法:一个为无参构造方法,在该无参构造方法中将“图书类别”设置为“计算机图书”,一个带2个参数(出版社、定价);不少于2个成员方法:分别用来查看出版社、修改定价,图书介绍文字可自编,并编写输出计算机图书全部信息的toString()方法。
(3) 编写一个图形用户界面,用来测试能否正确创建计算机图书类的对象、能否正常调用其方法,参考界面如下。
必须实现的基本功能是:1)单击图中的“新增计算机图书”按钮,则可显示出新增的计算机图书信息(显示信息的控件不限,用文本域、列表框、表格均可),要求添加的计算机图书不少于2本,如下图所示:图1 运行截图——新增计算机图书2)单击图中的“修改定价”按钮,可修改其中某本图书的定价,并在下方显示出修改后的结果请按照实验内容具体要求完成相关设计与编程,实验步骤;(1) 程序代码import java.awt.*;import java.awt.event.*;class CM extends Frame implements ActionListener{CMBook start; //当做链表的开头Panel 操作栏;Label 出版社,定价,显示;TextField 出版社栏,定价栏;Button 新增计算机图书,修改定价;TextArea 显示内容;CM(){super("计算机图书类操作图形用户界面");start=null;显示=new Label();显示内容=new TextArea();显示内容.setSize(80,50);新增计算机图书=new Button("新增计算机图书");修改定价=new Button("修改定价");新增计算机图书.addActionListener(this);修改定价.addActionListener(this);操作栏=new Panel();操作栏.setSize(60,5);出版社=new Label("出版社");定价=new Label("定价");出版社栏=new TextField(10);定价栏=new TextField(5);操作栏.add(出版社);操作栏.add(出版社栏);操作栏.add(定价);操作栏.add(定价栏);操作栏.add(新增计算机图书);操作栏.add(修改定价);setTitle("计算机图书类操作的图形界面");add(操作栏,BorderLayout.NORTH);add(显示内容,BorderLayout.CENTER);add(显示,BorderLayout.SOUTH);setBounds(300,300,500,500);setVisible(true);validate();}public void actionPerformed(ActionEvent e){if(e.getSource()==新增计算机图书){String one=出版社栏.getText();String two=定价栏.getText();if(Integer.parseInt(two)<0){显示.setText("价格不能为负数");}else{CMBook mid=new CMBook(one,Integer.parseInt(two));mid.next=start;start=mid;显示内容.append(mid.toString());}}else if(e.getSource()==修改定价){int pricenew;CMBook point;String one,two,three;one=出版社栏.getText();two=定价栏.getText();point=start;while(true){if(point==null){显示.setText("查找不到该类别");break;}if(point.出版社.equals(one)){point.定价=Integer.parseInt(two);显示内容.append("价格修改完成"+point.toString());break;}else{point=point.next;}}}}}abstract class Book{String 图书类别;abstract String 图书介绍();}class CMBook extends Book{CMBook next; //额外增加一个引用String 出版社;int 定价;String 图书介绍(){return "书籍是人类进步的阶梯";}CMBook(){图书类别="计算机图书";next=null;}CMBook(String 出版社,int 定价){this.出版社=出版社;this.定价=定价;图书类别="计算机图书";next=null;}String 查看出版社(){return 出版社;}void 修改定价(int 定价){this.定价=定价;}public String toString(){return ("类别"+图书类别+"|出版社"+出版社+"|定价"+定价+"图书介绍|书籍是人类进步的阶梯\n");}}public class Bookcdx{public static void main(String args[]){new CM();}}(2) 相应运行结果2、(选做题) 改正以下程序中出现的错误,并进行注释说明import java.applet.applet;import java.awt.*;public class test extends Applet{Label prompt1,prompt2;TextField inputNo1,inputName1Department MyDept1;void init(){ prompt1=new Label("请输入部门的编号:");inputNo1=new TextField(5);prompt2=new Label("请输入部门的名称:");inputName1=new TextField(5);add(prompt1);add(inputNo1);add(prompt2);add(inputName1);MyDept1=new Department ( );inputNo1.addAction(this);}public paint(graphic g){g.drawstring(MyDept1.toString(),20,100);}public void action(ActionEvent e){if(e.getSource==inputNo1)MyDept1.setDeptNo(inputNo1.getText());else if(e.getSource()=inputName1)MyDept1.m_DeptName=new String(inputName1.getText()); repaint();return True;}}final class Department{int m_DeptNo=10;static m_DeptName;String getDeptNo(){return m_DeptNo;}setDeptNo(int newno){if(newno>0){m_DeptNo=newno;return true;}elsereturn false;}public String toString(){return("部门编号:"+getDeptNo()+"; "+"部门名称:" +m_DeptName+"; ");}}改正:import java.applet.*;// 引入包import java.awt.*; // 引入包import java.awt.event.*;//分号public class Test extends Applet implements ActionListener // extend错误{Label prompt1,prompt2;TextField inputNo1,inputName1;//分号Department MyDept1;public void init() //少public{ prompt1=new Label("请输入部门的编号:");inputNo1=new TextField(5);prompt2=new Label("请输入部门的名称:");inputName1=new TextField(5);add(prompt1);add(inputNo1);add(prompt2);add(inputName1);//添加inputName1MyDept1=new Department ( );inputNo1.addActionListener(this);//添加thisinputName1.addActionListener(this);this.setVisible(true);//显示输出}public void paint(Graphics g)// 单词错误Graphics{g.drawString(MyDept1.toString(),20,100); //drawString}public void actionPerformed(ActionEvent e)//action 拼写错误{if(e.getSource()==inputNo1)MyDept1.setDeptNo(Integer.parseInt(inputNo1.getText())); //类型转换成字符else if(e.getSource()==inputName1)//判断是相等用==MyDept1.m_DeptName=new String(inputName1.getText());//repaint();//return True; //返回为空不需要}}class Department //final不需要{int m_DeptNo=10; //分号String m_DeptName; //类型没有给出String getDeptNo() //S{return Integer.toString(m_DeptNo); //类型}boolean setDeptNo(int newno)//返回类型没有给出{if(newno>0){m_DeptNo=newno;return true;}elsereturn false;}public String toString() //S{return("部门编号:"+getDeptNo()+"; "+"部门名称:" +m_DeptName+"; ");}}3、(选做题) 请按照以下功能要求编写并调试相关程序实验内容:(1) 熟练Tomcat安装与配置;(2) 熟练servlet部署、三种开发方式;(3) 练习JDBC连接;(4) 练习基于JDBC与Servlet的数据库查询、更新(添加、删除、修改)(一)实验步骤:熟悉Tomcat安装,servlet部署步骤;(1) 依次创建WEB-INF、classes、lib、web.xml等目录结构(2) 完成相关Servlet程序并调试(二)以继承HttpServlet方式开发Servlet,完成基于Servlet的JDBC连接(数据库选择SQLServer2000以上)和数据查询应用。