java实验8指导(实训)1.8
更新时间:2024-01-30 08:53:01 阅读量: 教育文库 文档下载
- java实验报告心得体会推荐度:
- 相关推荐
《Java程序设计与应用》实验教学大纲
一、实验目的和要求
1、实验目的
力图通过本实践课程的学习,使学生掌握编写、调试和运行Java程序的基本技巧,熟悉面向对象技术的主要原则和思维方法,借助Java把这些原则和特点融入具体的程序中,建立由感性到理性的深入认识;最后介绍Java编程的必备工具,包括类库、常用算法、GUI、Swing和网络编程,提高解决实际问题的能力。
2、实验要求
实验的编排本着循序渐近、由浅入深的原则,基本覆盖了Java程序设计的主要方面,要求学生实验前认真准备,实验后提供实验报告,给出详细设计结果以及设计依据。
实验报告的格式应采用统一封面,统一的实验报告纸。封面应包括:课程名称、实验序号、名称、专业、班级、姓名、同组实验者、实验时间。实验报告内容应包括:实验名称、目的、内容、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。
二、实验环境介绍
1、硬件设备要求
PC及其联网环境
2、软件设备要求
Windows xp操作系统;
Myeclipse6.5集成开发工具;
三、实验内容和学时分配
1、实验内容
实验一:创建用户类 实验二:重构用户类
实验三:使用集合(数组、向量)构建用户管理类 实验四:递归日志查询
实验五:对集合(数组、向量)进行排序查找 实验六:构建聊天客户端界面 实验七:输入输出流
1
实验八:数据库编程
2、课时分配
总学时:16学时 实验 1 2 3 4
学时数 2 2 2 2 实验 5 6 7 8 学时数 2 2 2 2 四、各实验简述
实验准备:
在E盘建立以自己姓名为名称的文件夹,以便保存实验数据。
2
实验一:创建用户类
1.1实验目的
1) 熟悉Java开发环境 2) 掌握Java语言基础知识
3) 运用基础知识实现聊天程序中的用户类
1.2实验内容
1) 新建一个Hello.java程序,在控制台打印”欢迎使用本聊天系统!”。
2) 新建一个Test类,在test类中打印下面表达式的运算结果,设a=3,b=-5,f=true:
(1) --a % b ++ (2) (a>=1&&a<=12?a:b)
3) 创建聊天程序中的用户类(User),用户拥有自己的名称、出生年份、年龄、密码等信息。其中年龄要通过出生年份计算出来。
1.3实验步骤
1) 在MyEclipse中新建一个Java工程,工程文件保存到E盘自己名字下,新建Hello.java程序
public class Hello {
public static void main(String[] args){ System.out.println(\欢迎使用聊天系统!\); } }
2) 新建Test类测试表达式 1.编写测试程序,打印测试结果
public class Test {
public static void main(String[] args){ } }
int a = 3; int b = -5; boolean f = true;
int c=--a % b ++;//自增,自减测试 System.out.println(c);
2.实验分析:
(1)各表达式的结果是怎么得出来的即表达式的执行顺序? (2)计算表达式的值(a>=1&&a<=12?a:b) ? 3) 创建用户类
3
确定类的属性和方法,定义用户类,模板如下:
//创建一个用户类。记得类名字要用英文书写,首字母大写 import java.util.Date; public class User{
//用户名 记得写注释 代码的排版要美观 String name = “”;//String name = “”; //密码
类型 密码(pwd) = 初值; //年龄
int age = -1; //出生年份 类型 born = -1;
//设置年龄的方法 记得方法名的第一个单词首字母小写,其它大写 private int setAge(){
int y = new Date().getYear()+1900;//获得当前年份
……//通过出生年份设置年龄值 年龄=当前年份(2011) 减去出生年份 }
//通过用户名、密码、出生年份创建一个用户 public User(String name, String pwd,int born){ this.name = name; this.pwd = pwd; this.born = born; this.age = setAge(); }
public static void main(String[] args){
User user = new User(“张三”,”s1234”,1900);
System.out.println(user.name+”的密码是”+user.pwd+”年龄是”+user.age);
} }
运行程序,查看输出结果。
1.4实验报告
把实验内容2和实验内容3写到实验报告上。
实验二:重构用户类
2.1实验目的
运用Java核心知识(接口、抽象、继承、封装、多态等)实现聊天系统中的用户模块;在实现的过程中掌握核心知识。
4
2.2实验内容
1) 定义一个接口类Userable,其中包括一个information方法,这个方法没有形参,返回值为空;
2) 构建一个抽象的用户类User,User继承接口类Userable,User类拥有用户名、密码、出生年份、年龄及用户类型等属性;
3) 在User类中定义一个构造方法,它有三个形参用户名、密码和出生年份,把形参的值赋给相应的属性;
4) 在User定义每个属性的get/set方法,其中年龄只用定义get方法,在修改出生年份时修改年龄大小;
5) 新建一个普通用户类GeneralUser,GeneralUser继承User类,定义一个和User类拥有相同形参的构造方法,在方法中设置用户类型的值为1(1代表普通用户)。在GeneralUser中实现information方法,用information方法打印”abc(用户名)是普通用户20(年龄)岁”;
6) 新建VIP用户类VIPUser,VIPUser继承User, 定义一个和User类拥有相同形参的构造方法,在方法中设置用户类型的值为2(2代表VIP用户)。VIPUser实现information方法打印” abc(用户名)是VIP用户20(年龄)岁”。 7) 利用”package”把这些类封装到” qq.server.user”目录下。
2.3实验步骤
1) 在聊天程序中所有的用户可能都会有一些公共的方法,我们定义一个接口Userable来规定这些方法的形式。下面就使用关键字”interface”定义接口类吧! 2) 新建一个抽象的用户类User,继承接口类Userable,用户类有用户名、密码、出生年份、年龄及用户类型等属性。这里有个模板大家把它完善。
public ___ class User ____ Userable{
protected String name;//记得要写注释哦 protected String pwd;//用户密码
??其它的属性??
} 3)
接着我们在User类中定义一个构造方法,它有三个参数用户名、密码及出生年份。通过构造方法我们就能创建一个特定的对象。
public User(String name , ____,int born){
this.name=name;
_____ //在这里怎么给密码赋值 this.born=born;//给出生年份赋值
//别忘了还要根据出生年份计算年龄
int year = new Date().getYear()+1900;//得到现在是哪一年 __________ //怎么给年龄赋值 }
4) 我们不想让别人直接访问到User的属性和方法,为属性加上get/set方法,记得其中年龄只用定义get方法,在修改出生年份时就得修改年龄大小。
//定义用户名属性及get、set方法
protected String name;//如果是私有属性将无法被继承
5
public String getName() {
}
public void setName(String name) { this.name = name; }
return name;
5) 现在我们可以定义具体的类了,让我们来定义普通用户类GeneralUser,它要继承User类,然后定义一个和User类有相同参数的方法,并实现information方法打印”abc(用户名)是普通用户20(年龄)岁”。大家把模板完善一下:
public class GeneralUser extends User {
public GeneralUser(String name, String pwd,int born) {
_______ //怎么为属性赋值? this.type=1;//设置用户类型是普通用户 }
public void information() {
System.out.println(this.getName()+\是普通用户\+age+\岁\); } }
6) 有了上面的经验,现在我们怎么创建VIP用户类VIPUser了?大家自己完成吧!
7) 现在我们就完成了用户模块的所有用户类了,我们应该把功能相似的类放到同一个目录下。现在我们新建一个包”qq.server.user”,把所有的类剪切进来,在类最前面加上打包代码” package qq.server.user;”。ok,搞定!
8) 最后我们写一个程序类Test代码如下:
package qq.server.user.test;
import qq.server.user.GeneralUser; import qq.server.user.User; import qq.server.user.VIPUser;
public class TestUser {
public static void main(String args[]){ User gerneralUser =new GeneralUser(\ User vipUser =new VIPUser(\ gerneralUser.information(); vipUser.information(); } }
执行TestUser类,看输出结果。 9) 实验分析:
(1) GeneralUser能调用User类的属性吗? (2) GeneralUser类必须实现information方法吗? (3) 在User中实现information方法: public void information(){ System.out.println(name);
};
执行TestUser,程序结果是什么?
6
(4)把TestUser中
User gerneralUser = new GeneralUser(\User vipUser = new VIPUser(\改为:
User gerneralUser = new GeneralUser(\User vipUser = gerneralUser; 执行,程序结果是什么?
(5)把User中protected String name;改为: static protected String name;
执行,程序结果是什么?为什么?
2.4实验报告
写出所有的类,把实验步骤中第八步的输出结果写到报告上,实验分析写前三点
实验三:使用集合(数组、向量)构建用户管理类
3.1实验目的
1)掌握Java中数组的定义及vector的使用 2)使用集合完成聊天系统中的用户管理类
3.2 实验内容
1)定义用户类User,User拥有用户名、密码等属性,可以通过用户名和密码构造一个用户。 2)定义一个用户管理类UserManager.java。UserManager管理聊天系统中的所有用户,有添加用户(用户注册)、查询用户、比较两个用户是否相等、返回当前用户数等功能。 3)使用数组或Vector改写UserManager。
3.3 实验步骤
1)可以用实验二中定义的用户类,也可以自己重新编写一个用户类User.java. (1)定义属性 protected String name;//用户名
//密码
7
protected String pwd;
(2)定义构造函数 public User(String name,String pwd){
}
this.name=name; this.pwd=pwd;
(3)定义get/set方法
2) 定义一个用户管理类。
public class UserManager { }
3) 用户管理类是用来管理用户的,那么它首先得保存所有的用户信息,用什么保存多个用户信息?数组是也。那么我们就在用户管理类中添加一个用户数组了。
public class UserManager { }
//数组大小
private int size = 100;
//注意:数组声明的格式, 必须在创建时制定大小
private User[] userList = new User[size]; //当前用户数
private int index;
4)要管理用户我们得先往集合里面添加用户吧,写一个添加用户的方法。
}
5) 我们往数组里面添加用户了,怎么根据用户名查找用户?定义一个getUserByName
if(index userList[index]=user;//添加用户 index++;//当前用户数+1 return true; return false; public boolean addUser(User user){ }else{ } 的方法。 8 6) 判断用户是否存在(用户的登录名和密码是否正确),这里定义一个方法exist方法 。。。。。。//自己完成 } 7) 定义一个方法返回当前用户数。聪明的你还能定义出其它的方法吗? public boolean exist(String name,String pwd){ } 8) 编写测试类Test.java public static void main(String args[]){ } 9) 实验分析 (1) 实验结果是什么? (2) 打印出当前的用户数 (3) 怎么用Vector类代替数组?用Vector有什么好处? User u1 = new User(\张三\,\); User u2 = new User(\李四\,\); User u3 = new User(\王五\,\); UserManager um = new UserManager(); um.addUser(u1); um.addUser(u2); um.addUser(u3); User user = um.getUserByName(\张三\); System.out.println(user.name+\+ user.pwd); boolean bool=um.exist(\李四\, \); System.out.println(bool); public class Test { 9 实验四:递归日志查询 4.1 实验目的 (1) (2) (3) (4) 了解递归的概念; 阅读并理解递归程序; 掌握递归编程方法; 使用递归完成用户日志的遍历 4.2 实验内容 1)使用递归的方法求1+2+3+….+100的值 2)使用递归的方法列取所有的用户日志,用户日志放在E盘”日志”目录下,在”日志”目录下是以用户名命名的”用户”文件夹,在用户文件夹下存放了用户的所有日志文件。 4.3 实验步骤 1) 求1+2+3+….+100的值 ,有如下定义: f(n)=1+2+…..+n ,n=100 f(1)=1 f(n)=f(n-1)+n 我们可以定义一个函数public int f(int n),表示求1+2+3+…n的和。请大家完成方法体的定义。 10 2)日志存放如下: E盘 日志 李四 张三 王五 其中1.txt和2.txt都是是李四的日志文件,张三和王五也有类似的日志文件,现在用递归的方法遍历日志文件夹,列出所有用户的日志文件名。 知识说明: java.io.File 类:Java中的文件类,通过它可以获得文件信息。 File file = new File(“E://日志”);//创建”日志”文件夹的File对象 file.getName();//返回文件的名称 file.isFile();//判断是否为文件 file.isDirectory();//判断是否为目录 file.listFiles();//如果是目录,通过此方法返回目录下的文件列表集合 代码模板: public static void main(String args[]){ } (1) 实验一的执行顺序是什么样的? (2) 实验二的打印结果是多少? (3) 怎么列出E盘下的所有文件 可选(4) 把日志文件的后缀名改为log,在递归的过程中创建日志对象,日志对象有日志 File file = new File(\日志\); listFile(file); 3) 实验分析 名、所有者等属性 11 实验五:对集合(数组、向量)进行排序查找 5.1 实验目的 掌握排序与查找的概念与方法; 5.2 实验内容 1)定义用户类User,User拥有用户名、密码、年龄等属性,可以通过用户名和密码构造一个用户。 2)定义一个用户管理类UserManager.java。UserManager用一个用户数组保存用户类,当添加一个用户到用户数组里面时,要求按用户年龄对用户进行排序。年龄小的用户排在前面。 3)找出所有处于某一岁数(20岁或25岁)的用户 5.3 实验步骤 } 1) 定义用户类User.java protected String name; //密码 protected String pwd; protected int age; public User(String name,String pwd,int age){ } this.name=name; this.pwd=pwd; this.age=age; public class User { 2) 定义UserManager类,定义用户数组 12 st中的所有用户 User[] list = new User[index]; for(int i=0;i if(index == 0){//添加第一个用户 userList[index]=user;//添加用户 index++;//当前用户数+1 return true; for(int i=0;i //数组中都是比当前用户小的用户 userList[index]=user; index++; return true; return false; User u = userList[i]; if(u.age>user.age){ } //在数组中这个位置插入当前用户 userList[i]=user; for(int j=i+1;j<=index;j++){ userList[j]=_______;//填空 j-1 } index++; return true; list[i]=userList[i]; 3) 定义addUser方法 ,public boolean addUser(User user)。 public boolean addUser(User user){ //创建一个临时的用户数组,保存userLi }else if(index 户的用户 }else{ 13 } } 4) 在UserManager定义toString方法,打印出用户信息 public String toString(){ } for(int i=0;i User u = userList[i]; System.out.println(u.name+\年龄:\+u.age); } return null; 5) 定义Test类 public class Test { } 6) 实验分析 (1) 运行程序,结果是多少?是不是依据年内大小排的序? (2) 多添加一些用户,在运行,看结果. (4) 怎么找出处于某一年龄的所有用户 (5) 能不能更改一下排序方法 public static void main(String args[]){ } User u1 = new User(\张三\,\,21); User u2 = new User(\李四\,\,20); User u3 = new User(\王五\,\,18); UserManager um = new UserManager(); um.addUser(u1); um.addUser(u2); um.addUser(u3); User user = um.getUserByName(\张三\); um.toString(); 实验六:构建聊天客户端界面 5.1 实验目的 1) 了解Java系统图形用户界面的工作原理和界面的设计步骤; 2) 了解图形界面的事件响应机制; 3) 常握图形界面基本组件、布局策略的设计与使用; 5.2 实验内容 1) 构建聊天客户界面,包括消息显示窗口、消息发送窗口、选择好友的选择窗口、发 14 送按钮。 2) 为发送按钮添加事件,把消息显示在消息窗口中。 5.3 实验步骤 我们首先开发一个简单的界面程序ClientChatUI,一个界面首先是一个JFrame对象,即一个窗体;然后我们就可以在窗体上添加组建;最后为组建添加事件。 1) 完成一个拥有窗体的界面 15 } } //显示一个窗体界面的方法 public void showFrame(){ } //设置标题 this.setTitle(\欢迎\ + this.userName); java.awt.FlowLayout fl = new java.awt.FlowLayout(0); this.setLayout(fl); this.setSize(300, 500); this.setDefaultCloseOperation(3); //窗体关闭时程序退出 this.setVisible(true); 2) 定义一个initUI方法,在方法中添加组建。 两个JLabel,一个显示”接收到的消息:”,一个显示”发送给:” 一个显示消息区域JTextArea,一个消息发送窗口JTextField,一个选择用户的选择窗口JComboBox,一个发送按钮JButton。 代码片段: 16 3) 添加发送事件 4) 实验分析 运行程序,看是否得到了预期结果? 服务器界面怎么写? 17 实验七:输入输出流 7.1 实验目的 (1) 了解流式输入输出的基本概念; (2) 熟悉Java.io包中常用的基本输入输出类; (3) 掌握程序与文件之间的基本输入输出操作; 7.2 实验内容 1) 把字符串“20102324,张三,男,25,软件工程”,保存到文件”d:\\\\a.txt” 中,并读取打印a.txt文件中的内容。 2) 把我们在聊天界面中发送的消息保存到日志文件里面,在界面上添加一个历史按钮,当点击历史按钮时读取日志文件内容。 7.3 实验步骤 1)把字符串“20102324,张三,男,25,软件工程”,保存到文件”d:\\\\a.txt” 中,并读取打印a.txt文件中的内容。 (1) 定义变量message,值为“20102324,张三,男,25,软件工程”; (2) 创建指向”D:\\\\a.txt”的文件对象 (3) 创建输出流 (4) 把message写入流(文件)中 (5) 关闭输出流 (6) 创建输入流 (7) 读取文件内容 (8) 打印文件内容 (9) 关闭输入流 2) 把我们在聊天界面中发送的消息保存到日志文件里面,在界面上添加一个历史按钮,当点击历史按钮时读取日志文件内容。 (1) 编写聊天界面,添加发送按钮的鼠标点击事件 (2) 在事件处理方法中把聊天信息写入文件,注意不能覆盖文件里面已有的信息。 File myFile=new File(\); FileOutputStream fout = new FileOutputStream(myFile,true);//不覆盖 (4) 在界面上添加一个”历史”按钮,完成事件处理方法。当点击按钮时,把日志(a.txt) 里面的内容显示到聊天界面中。 18 实验八:数据库编程 8.1 实验目的 1) 掌握sql建表,CRUD常用语法; 2) 掌握jdbc编程技术; 3) 使用JDBC完成用户登陆验证。 8.2 实验内容 1) 使用sql语句在sql server 2008中新建用户表User,表结构如下: 字段名 user_login user_name user_psw 插入以下记录: 用户表(user) 字段类型 约束限制 PK VARCHAR(15) Not null VARCHAR(20) Not null VARCHAR(20) 用户姓名 张三 李四 说明 用户登录名 用户姓名 用户登陆密码 用户登陆密码 111111 111111 用户登录名 张三 lisi 2) 新建登陆界面,完成用户的登陆认证。当用户登陆成功时弹出“登陆成功界面”,失败时弹出”登陆名或密码错误!”。 8.3 实验步骤 1) 在sqlserver2008中新建聊天数据库chat。写出创建用户表user的sql语句,在数据库chat的查询窗口中执行此语句。 2) 使用sql语句往user表中插入用户数据。 3) 新建用户登陆界面,如下图,添加登陆事件。 4) 新建ConnToSqlServer类,实现连接数据库的验证方法。 package user.login; import java.sql.Connection; 19 import java.sql.DriverManager; } } }else{ System.out.println(\没有此用户\ } } catch (Exception e) { System.out.println(\数据库连接失败!\ e.printStackTrace(); } return bool; 5) 在登陆事件的处理方法中调用ConnToSqlServer.connDB方法,返回真显示”登陆成功”,否则显示”登陆失败”。 参考方法: JOptionPane.showMessageDialog(null, \登陆成功!!\弹出一个窗口,显示登陆成功。 20
正在阅读:
java实验8指导(实训)1.801-30
士兵突击袁朗经典语录02-06
2018新鄂教版小学语文三年级下册美丽的槐乡教学设计06-30
TS16949人力资源管理程序05-27
河北太行山区生态旅游可持续开发模式探讨04-11
怎样突破自我做自己想做的人05-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 指导
- 实验
- java
- 1.8
- 白龟山湿地可行性研究报告
- 测量学题库
- 2011年中级经济师-经济基础知识-单选题专项练习(405题)
- 国外著名煤机公司(DBT、JOY、Eickhoff)信息统计
- 苏教版语文四下第一至七单元同音字,成语,古诗文练习
- FDS热融自攻丝铆接系统 - 图文
- 第二十四届江西省青少年科技创新大赛获奖名单
- 俄语动词的支配关系
- 超星尔雅语言与文化公选课
- 实验指导说明
- c语言实现 迷宫问题
- 湖南大学新生入学考试题库
- 消防知识汇编
- 实验室管理题库1
- 顺丰营销微观环境分析
- 关于印发《水体环境风险防控要点》(试行)的通知 - 图文
- 1、小学语文教师论文 关注文章的语言文字形式
- 海南省土石方工程企业名录2018版336家
- 设计工程质量和进度保证措施
- 上汽大众招聘在线测试复习题及参考答案