JAVA深入编程课内实验指导书

  • 格式:doc
  • 大小:913.50 KB
  • 文档页数:21

北京理工大学珠海学院 计算机学院 共21页第1页 北京理工大学珠海学院 计算机学院

《Java深入编程》课内实验指导书

任课教师: 赵卓君 2012年2月北京理工大学珠海学院 计算机学院 共21页第2页 目 录

实验一:泛型和泛型接口............................................................................................ 3 实验二:序列化和反序列化........................................................................................ 6 实验三:GUI图形用户界面编程 ............................................................................... 8 实验四:JDBC数据库编程 ......................................................................................... 9 实验五:多线程.......................................................................................................... 13 实验六:Socket网络编程.......................................................................................... 16 实验七:C/S架构应用程序开发实例....................................................................... 18 北京理工大学珠海学院 计算机学院

共21页第3页 实验一:泛型和泛型接口

一、 实验目的 熟悉泛型类(接口)的定义和使用,能够灵活使用java集合框架中的泛型类(接口);掌握泛型方法的定义和调用;掌握通配符的应用。

二、 实验要求 1. 编写一个学生成绩管理系统,要求用泛型机制来实现以下功能 2. 学生参加课程考试的成绩需要记录下来 3. 所有的学生应该保存在一个集合里,所有的课程也保存在一个集合,所有学生各课程的成绩也应该保存在一个集合里 4. 学生应该有学号和姓名属性 5. 课程应该有课程编号和课程名称属性 6. 成绩应该有学号、课程编号和成绩等属性 7. 输出时,根据学号到学生集合中查找学生的姓名,根据课程编号到课程集合中查找课程名称 8. 最后还需要输出每门课程学生的平均分

三、 运行效果

四、 程序结构 import java.util.*; class Student{ } //学生类 class Course { } //课程类 class Grade { } //成绩类 public class GradeManagement { public static void main (String[] args) { //实例化几个学生对象并在泛型集合对象中保存学生的信息 //实例化几个课程对象并在泛型集合对象中保存课程的信息 //实例化几个成绩对象并在泛型集合对象中保存成绩的信息 //根据成绩泛型集合中的学号和课程编号查询学生集合和课程集 北京理工大学珠海学院 计算机学院 共21页第4页 合得到学生姓名和课程名称 //输出每个学生各科的成绩 //统计每课参加考试的人数和总分 //计算并保存每门课程的平均分 //打印各科平均分 } } 1、 实验提示 如何根据学号获得学生的姓名?

…… for(Grade g:vGrade){ for(Student s:vStu){ if(g.stuID.equals(s.stuID)){ //若找到了,则输出学号和姓名 System.out.print (g.stuID+"\t"+s.stuName); } } } …… 如何统计每门课的参考人数并计算总分? int[] count=new int[vCourse.size()]; //保存各科参考人数 int[] sums=new int[vCourse.size()]; //保存各科成绩总分 //统计学生人数和总分 for(int i=0;ifor(int j=0;jif(vCourse.get(i).courseID.equals(vGrade.get(j).courseID)){ count[i]++; //参考人数+1 //累计求和 sums[i]=sums[i]+vGrade.get(j).score; } } } 如何计算和保存课程的平均分? //实例化TreeMap集合用于保存课程编号和平均分 TreeMap total = new TreeMap(); //计算平均分 for(int i=0;iif(sums[i]>=0){ //计算平均分 sums[i]=sums[i]/count[i]; //保存到集合中 total.put(vCourse.get(i).courseID,sums[i]); } }

学生成绩集合 学生集合 北京理工大学珠海学院 计算机学院

共21页第5页 (建议完成时间:90分钟) 北京理工大学珠海学院 计算机学院

共21页第6页 实验二:序列化和反序列化 一、 实验目的: 熟练掌握序列化和反序列化的使用方法以及序列化和反序列化的规则。 二、 实验要求: 1. 电影城每天放映好几部电影,每部电影也有好几个放映场次,每场电影供应一定数量的电影票 2. 电影类型为枚举类型,有爱情片、喜剧片、动作片、科幻片。 3. 电影类有电影名称、电影类型属性 4. 电影放映场次类有放映厅、放映时间属性 5. 电影票座位类有行、座位属性 6. 电影票类有电影、放映场次、座位属性 7. 最后还需要输出每门课程学生的平均分

三、 运行效果:

四、 程序结构 import java.io.*; import java.util.*; //电影类型 enum MovieType implements Serializable{ } //电影 北京理工大学珠海学院 计算机学院 共21页第7页 class Movie implements Serializable{ } //电影放映时间段 class MovieSchedule implements Serializable{ } //座位 class Seat implements Serializable{ } //电影票 class Ticket implements Serializable{ public void printTicket(){ //打印票的详细信息 } } } public class SerializationDemo { public static void main (String[] args) { } } (建议完成时间:90分钟) 北京理工大学珠海学院 计算机学院

共21页第8页 实验三:GUI图形用户界面编程 一、 实验目的: 掌握Java图形用户界面的设计,和Java的事件处理机制。 二、 实验要求: 1. 设计一个如下左图所示的系统注册界面。用户输入姓名、性别、生日、爱好、电邮、学历信息,然后单击“注册”按钮,则会弹出如下右图所示的系统注册成功界面,并显示该用户的注册信息。

2. 设计一个如下图所示的计算器界面,并实现连续加、减、乘、除的功能 (建议完成时间:180分钟) 北京理工大学珠海学院 计算机学院

共21页第9页 实验四:JDBC数据库编程 一、 实验目的: 掌握JDBC数据库访问技术,包括对数据库里的数据的增删改查,并开发一个图书信息管理系统。

二、 实验要求: 三、 在SQLServer里新建一个名为BookDB的图书数据库,并创建Book、Reader、Borrow三张表,表中字段的设计如下表 表名 字段 数据类型 说明

Book(图书) BookID varchar(20) 图书编号(主键) BookName varchar(100) 图书名称 Author varchar(50) 作者 Press varchar(50) 出版社 PressDate datetime 出版日期 Status char(4) 图书在库的状态(在库或借出)

Reader(读者) ReaderID varchar(20) 读者编号(主键) ReaderName varchar(50) 读者姓名 Sex char(2) 性别 Phone varchar(20) 联系电话 Address varchar(20) 联系地址

Borrow(借阅) BorrowID int 借阅编号(自动增长标识列,主键) BookID varchar(20) 图书编号(外键,引用Book表中的BookID) ReaderID varchar(20) 读者编号(外键,引用Reader表中的ReadaerID) BorrowDate datetime 借阅时间 ReturnDate datetime 还书时间 Memo text 备注 三张表之间的关系如下图: