Java程序设计
目 录
1. 前言 1
2. 需求分析 1
3. 概要设计 1
4. 详细设计 2
5. 测试 12
6. 总结 16
参考文献 16
1.前言
Java语言是目前IT行业应用最多,也是最主流的开发语言之一(另一主流是.NET),其应用前景很广。Java语言本身主要用于开发桌面应用程序。与此相对应,JSP、Servlet和JavaBean等是基于Java语言开发Web应用程序的技术。本课程设计的任务就是使用Java或JSP、Servlet和JavaBean等组件开发一套桌面或Web应用程序。
我们准备开发一个全国大学生信息管理系统。系统功能包括如下:
- 添加学生信息
- 查看学生信息
- 修改学生信息
- 删除学生信息
相关技术简介:我们采用java编程技术,用到了数据库,图形化设计等。
2.需求分析
市场需求:主要解决一个管理学生信息的问题,学生学号,班级,成绩之类的问题,旨在为各大高校提供一个开源、自由、免费的简单管理软件。这个问题要求我们提供一个管理学生信息安全的平台,避免学生信息的缺漏。人性化的图形管理界面,加上优美的背景音乐和可爱的开场动画,让管理者可以更加愉悦得对学生信息进行管理。
3. 编程环境:
JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一些Java工具和Java的核心类库(Java API)。不论什么Java应用服务器实质都是内置了某个版本的JDK。采用Eclipse工具,一个开放源代码的、基于Java的可扩展开发平台。
程序模块流程:
4. 详细设计
类设计:
- SplashWindow 开始动画
- LogIn 登陆界面,输入用户名,密码等
- MySound 背景音乐播放
- Student 主界面各种功能
- QueryStudent 学生搜索
- StudentIn 录入学生
- DeleteStudent 学生删除
- StudentInformationBrower 学生概览
- UpdatePassword 修改密码
数据库设计:
学生名 | 学号 | Java | 数据结构 | 概率统计 | 入学时间 |
---|---|---|---|---|---|
龙傲天 | 20151 | 59 | 34 | 47 | 2015 |
余笑 | 201419 | 38 | 24 | 36 | 2014 |
李四 | 201625 | 20 | 69 | 89 | 2016 |
金大牙 | 201513 | 75 | 89 | 96 | 2015 |
郑官圣 | 200615 | 59 | 89 | 79 | 2006 |
鲁方伟 | 20151346081 | 60 | 60 | 80 | 2015 |
详细代码:
代码语言:javascript复制//“删除学生信息”功能类代码
class DeleteStudent implements ActionListener
{
JFrame f;
Container cp;
JPanel jpS,jpanelWest;
JButton jbt1,jbt2,jbt3;//按钮,查询、取消、修改
JLabel label,L; //标签:请输入学号
JTextField tf; //定义文本框
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"学生名","学号","Java","数据结构","概率统计","入学时间"};
Object ar[][] =new Object[80][6];
String sno;
//String count="xx";
DeleteStudent()
{
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jpS=new JPanel();
jpanelWest=new JPanel();
jbt1=new JButton("查询");
jbt2=new JButton("取消");
jbt3=new JButton("删除");
label=new JLabel("<html><font color=#CC00FF size='4'>请输入要删除的学生名:</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
tf=new JTextField(18);
jpS.add(jbt1);
jpS.add(jbt2);
jpS.add(jbt3);
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North");
JPanel jp=new JPanel();
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(400,330);
f.setLocation((screen.width-350)/2,(screen.height-350)/2);/*显示在窗口中央*/
f.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
jbt3.addActionListener(this);
}
int i=0;
public void showRecord(String ql)
{
while(i>=0)
{
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;
try{
Class.forName("com.hxtt.sql.access.AccessDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
Connection con = DriverManager.getConnection("jdbc:Access:/D:/Student.mdb");
Statement sql;
String s="select * from 表book where 学生名='" ql "'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=rs.getString(6);
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i ;
}
f.repaint();
con.close();System.out.println(ar[0][1]);
}catch(SQLException g)
{
System.out.println("E Code" g.getErrorCode());
System.out.println("E M" g.getMessage());
}}
public void deleteRecord(int index)
{
try{
Class.forName("com.hxtt.sql.access.AccessDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
Connection con = DriverManager.getConnection("jdbc:Access:/D:/Student.mdb");
Statement sql;
String ql=(String)(ar[index][1]);
String s="delete from 表book where 学号 ='" ql "'";
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==1)
{JOptionPane.showMessageDialog(null,"删除成功!",
"信息", JOptionPane.YES_NO_OPTION);
}
con.close();
f.repaint();
}catch(SQLException g)
{
System.out.println("E Code" g.getErrorCode());
System.out.println("E M" g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String remember="";
String ql="";
String cmd=e.getActionCommand();
if(cmd.equals("查询"))
{
ql=tf.getText().trim();
remember=ql;
showRecord(ql);
}
if(cmd.equals("删除"))
{
int index=table.getSelectedRow();
if( index==-1)
JOptionPane.showMessageDialog(null,"请选定要删除的表格行",
"输入错误", JOptionPane.YES_NO_OPTION);
else{
deleteRecord(index);
}
}
if(cmd.equals("取消"))
f. dispose();
}
public static void main(String []arg){
DeleteStudent a=new DeleteStudent();
}}
package 大学生信息管理系统;
class QueryStudent implements ActionListener
{
JFrame f3=new JFrame();
Container cp=new JPanel();
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
JPanel jp=new JPanel();
JPanel jpanelWest=new JPanel();;
JButton jbt1=new JButton("确定");
JButton jbt2=new JButton("取消");//按钮,确定、取消
JLabel label; //标签:请输入图书号
JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框
JLabel label1,label2,label3,label4;
QueryStudent()
{
cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框
label=new JLabel("<html><font color=#99ccff size='5'>请输入学生学号:</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
tf=new JTextField(20);
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
tf6=new JTextField(20);
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("学生名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(new JLabel("学号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(new JLabel("java",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(new JLabel("数据结构",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(new JLabel("概率统计",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(new JLabel("入学时间",SwingConstants.CENTER));
pp2.add(tf6);
pp3.add(jbt1);
pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East");
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
f3.setSize(350,330);
f3.setLocation((screen.width-350)/2,(screen.height-350)/2);/*显示在窗口中央*/
f3.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
}
public void showRecord()
{
try{
Class.forName("com.hxtt.sql.access.AccessDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
Connection con = DriverManager.getConnection("jdbc:Access:/D:/Student.mdb");
Statement sql;
String ql=tf2.getText().trim();
String s="select * from 表book where 学号 ='" ql "'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
if(rs.next())
{
String sname=rs.getString(1);
String sno=rs.getString(2);
String java=rs.getString(3);
String DataStructure=rs.getString(4);
String Statistics=rs.getString(5);
String time=rs.getString(6);
tf1.setText(sname);
tf2.setText(sno);
tf3.setText(java);
tf4.setText(DataStructure);
tf5.setText(Statistics);
tf6.setText(time);
}
else
{JOptionPane.showMessageDialog(null,"您输入的学号不存在,请重新输入",
"输入错误", JOptionPane.YES_NO_OPTION);
}
con.close();
}catch(SQLException g)
{
System.out.println("E Code" g.getErrorCode());
System.out.println("E M" g.getMessage());
}
tf1.setEditable(false);
tf2.setEditable(false);
tf3.setEditable(false);
tf4.setEditable(false);
tf5.setEditable(false);
tf6.setEditable(false);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
showRecord();
tf.setText("");
}
else if(cmd.equals("取消"))
f3.dispose();
}
public static void main(String []arg){
QueryStudent a=new QueryStudent();
}}
package 大学生信息管理系统;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.sql.*;
import javax.swing.text.JTextComponent;
class StudentIn implements ActionListener
{
JFrame f3=new JFrame();
Container cp;
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
JPanel jp=new JPanel();
JPanel jpanelWest=new JPanel();
JButton jbt1,jbt2;//按钮:确定、取消、
JLabel label; //标签
JTextField tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框
JLabel label1,label2,label3,label4;
String sno;
StudentIn()
{
cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框
jbt1=new JButton("确定");
jbt2=new JButton("取消");
label=new JLabel("<html><font color=#CC00FF size='4'>录入学生</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
tf6=new JTextField(20);
jp1.add(jbt1);
jp1.add(jbt2);
sno=tf4.getText();
jp1.add(new JLabel("您好" sno "欢迎登陆学生信息系统"));
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("学生名",SwingConstants.CENTER));
pp2.add(tf1);
pp4.add(new JLabel("学号",SwingConstants.CENTER));
pp2.add(tf2);
pp4.add(new JLabel("java",SwingConstants.CENTER));
pp2.add(tf3);
pp4.add(new JLabel("数据结构",SwingConstants.CENTER));
pp2.add(tf4);
pp4.add(new JLabel("概率统计",SwingConstants.CENTER));
pp2.add(tf5);
pp4.add(new JLabel("入学时间",SwingConstants.CENTER));
pp2.add(tf6);
pp3.add(jbt1);
pp3.add(jbt2);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East");
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
f3.setSize(350,330);
f3.setLocation((screen.width-350)/2,(screen.height-350)/2);/*显示在窗口中央*/
f3.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
}
public void insertRecord()
{
if(tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals("")||
tf4.getText().equals("")||tf5.getText().equals("")||tf6.getText().equals(""))
{
JOptionPane.showMessageDialog(f3,"请填写学生资料");
return;
}
try{
Class.forName("com.hxtt.sql.access.AccessDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
Connection con=DriverManager.getConnection("jdbc:Access:/D:/Student.mdb");
Statement sql;
String s="insert into 表book values('" tf1.getText() "','" tf2.getText() "','"
tf3.getText() "','" tf4.getText() "','" tf5.getText() "','" tf6.getText() "');";
String query="select * from 表book where 学号='" tf2.getText() "'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(query);//返回查询结果集
boolean moreRecords=rs.next();//判断结果集是否有数据
if(moreRecords)
{
JOptionPane.showMessageDialog(f3,"学号已经被使用,请重新输入");
con.close();
tf2.setText("");
return;
}
int insert=sql.executeUpdate(s);
if(insert==1)
{
JOptionPane.showMessageDialog(null,"学生信息录入成功!");
tf1.setText("");
tf2.setText("");
tf3.setText("");
tf4.setText("");
tf5.setText("");
tf6.setText("");
}
}catch(SQLException g)
{
System.out.println("E Code" g.getErrorCode());
System.out.println("E M" g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
insertRecord();
}
else if(cmd.equals("取消"))
f3. dispose();
}
public static void main(String []arg){
StudentIn a=new StudentIn();
}
}
package 大学生信息管理系统;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.sql.*;
class StudentInfomationBrower implements ActionListener
{
JFrame f;
Container cp;
JPanel jpS,jpanelWest;
JButton jbt1,jbt2;//按钮,查询、取消、修改
JLabel label,L; //标签
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"学生名","学号","Java","数据结构","概率统计","入学时间"};
Object ar[][] =new Object[80][6];
String sno;
StudentInfomationBrower()
{
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jpS=new JPanel();
jpanelWest=new JPanel();
jbt1=new JButton("确定");
jbt2=new JButton("返回");
label=new JLabel("<html><font color=#CC00FF size='4'>学生情况概览</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
jpS.add(jbt1);
jpS.add(jbt2);
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North");
JPanel jp=new JPanel();
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East");
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(400,330);
f.setLocation((screen.width-350)/2,(screen.height-350)/2);/*显示在窗口中央*/
f.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
}
int i=0;
public void showRecord()
{
while(i>=0)
{
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
ar[i][4]="";
ar[i][5]="";
i--;
}
i=0;
try{
Class.forName("com.hxtt.sql.access.AccessDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
Connection con = DriverManager.getConnection("jdbc:Access:/D:/Student.mdb");
String s="select * from 表book ";
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
{
String sname=rs.getString(1);
String sno=rs.getString(2);
String java=rs.getString(3);
String DataStructure=rs.getString(4);
String Data=rs.getString(5);
String time=rs.getString(6);
ar[i][0]=sname;
ar[i][1]=sno;
ar[i][2]=java;
ar[i][3]=DataStructure;
ar[i][4]=Data;
ar[i][5]=time;
i ;
}
f.repaint();
con.close();
}catch(SQLException g)
{
System.out.println("E Code" g.getErrorCode());
System.out.println("E M" g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
f.dispose();
}
if(cmd.equals("返回"))
f.dispose();
}
public static void main(String []arg){
StudentInfomationBrower a=new StudentInfomationBrower();
a.showRecord();
}
}
package 大学生信息管理系统;
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
class UpdatePassword extends JFrame implements ActionListener
{
JFrame f;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮,确定、取消
JLabel label; //标签:修改密码
JTextField name;
JPasswordField tf1,tf2,tf3; //定义文本框
JLabel label1,label2,label3,label4;
String sno;
UpdatePassword(){}
UpdatePassword(String username)
{
sno=username;
f=new JFrame();
cp=f.getContentPane(); // 初始化
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpanelWest=new JPanel();
jp=new JPanel();
jbt1=new JButton("确定");
jbt2=new JButton("取消");
label=new JLabel("<html><font color=#CC00FF size='4'>修改密码</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
label.setFont(new Font("BOLD",Font.BOLD,15));
name=new JTextField(20);
tf1=new JPasswordField(20);
tf2=new JPasswordField(20);
tf3=new JPasswordField(20);
jp1.add(jbt1);
jp1.add(jbt2);
jp1.add(new JLabel("您好" "xx" "欢迎登陆学生信息系统"));
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(6,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(6,1));
pp4.add(new JLabel("用户名: ",SwingConstants.RIGHT));
pp2.add(name);
pp4.add(new JLabel("原密码: ",SwingConstants.RIGHT));
pp2.add(tf1);
pp4.add(new JLabel(" 新密码: ",SwingConstants.RIGHT));
pp2.add(tf2);
pp4.add(new JLabel("确认密码: ",SwingConstants.RIGHT));
pp2.add(tf3);
pp2.add(new JLabel());
JPanel jpbutton=new JPanel();
jpbutton.add(jbt1);
jpbutton.add(jbt2);
pp2.add(jpbutton);
cp.add(pp4,"West");
cp.add(pp2,"Center");
cp.add(jpane4,"East");
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(350,330); /*取得显示器窗口的高度*/
f.setLocation((screen.width-350)/2,(screen.height-330)/2);/*显示在窗口中央*/
f.setTitle("修改密码");
f.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
}
public void updateM()
{
try{
Class.forName("com.hxtt.sql.access.AccessDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
Connection con = DriverManager.getConnection("jdbc:Access:/D:/Student.mdb");
Statement sql=con.createStatement();
String uname=name.getText().trim();
String queryMima="select * from 表user where 用户名='" uname "'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{
String newMima=tf2.getText().trim();
String s="update 表user set 密码='" newMima "' where 用户名 ='" uname "'";
sql=con.createStatement();
int updateMima=sql.executeUpdate(s);
if(updateMima==1)
{
JOptionPane.showMessageDialog(f,"密码修改成功!");
}
con.close();
f.repaint();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","警告!",
JOptionPane.YES_NO_OPTION);
}
name.setText("");
tf1.setText("");
tf2.setText("");
tf3.setText("");
} catch(SQLException g)
{
System.out.println("E Code" g.getErrorCode());
System.out.println("E M" g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
if(name.getText().equals("")||tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请填写用户的所有信息","提示",
JOptionPane.YES_NO_OPTION);
return;
}
if(tf2.getText().trim().equals(tf3.getText().trim()))
updateM();
}
else if(cmd.equals("取消"))
f.hide();
}
public static void main(String[]args)
{
new UpdatePassword("");
}
}
5.系统实现(包括系统运行界面等)
开始动画:
登录界面,输入用户名,用户密码:
主界面各种功能:
学生搜索:
录入学生:
删除学生:
学生概览:
修改密码:
5.总结
通过这次 Java课程设计,我们感觉大体上良好。碰到的问题还是比较多的,比如资料的寻找,代码的修改、完善,界面的一步步优化等。遇到问题就要解决问题,几个一起上网查阅资料,询问大神解答,由此一来,一步步将这次Java课程完成。Java是一门面向对象编程语言,不仅吸收了C 语言的各种优点,还摒弃了C 里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
参考文献
代码语言:javascript复制 [1]陈国军.Java程序设计基础(第5版)[M].北京:清华大学出版社,2006年
代码语言:javascript复制 [2]毕广吉.Java程序设计实例教程[M]. 北京:冶金工业出版社,2007年
代码语言:javascript复制 [3].王保罗.Java面向对象程序设计[M].北京:清华大学出版社,2003年
代码语言:javascript复制 [4].林邦杰,彻底研究java.北京:电子工业出版社,2006年
代码语言:javascript复制 [5] (美)阿诺德,Ken Arnold,等. Java程序设计语言[M]. 北京:人民邮电出版社,2006年
代码语言:javascript复制 [6] 耿祥义,张跃平. JAVA实用教程[M].清华大学出版社,2005年