题目:个人信息录入
一、语言和环境
A、实现语言
Java
B、环境要求
JBuilder 2005(英文版),SQL Server 2000及其联机帮助文档
二、要求
利用SWING编程,要求如下:
1、程序运行的结果的初始界面如图1所示
图1
框架(JFrame)大小为(400,200)
2、输入姓名,选择性别和输入年龄,点击“确定“按钮后,○1在下面的JTextArea区域内显示输入的内容 ,JTextArea组件的大小为(80,30);○2并且把数据新增至数据库表中(数据库作为考试资源提供学生)。见图2
图2
3、不输入姓名,在下边的提示栏中显示’”姓名不能为空”,个人的信息不在JTextArea里显示,如图3
图3
三、实现步骤(仅作为推荐,不作强制要求)
1、 建立一个JAVA 类PersonInfoRecorder,应当:
A、 继承JFrame
B、 实现ActionListener接口
2、正确定义PersonInfoRecorder类的成员变量
A、定义四个标签(JLabel):用来显示姓名、性别、年龄和提示栏
B、定义两个文本框JTextField,用来输入姓名和年龄
C、定义一个JComboBox变量,用来选择性别
D、定义一个JTextArea变量,用来显示输入的个人信息
E、定义一个确定按钮
F、定义四个JPanel 面板
3、正确实现PersonInfoRecorder类的构造方法
A、 正确调用父类构造函数;
B、 实例化定义的各个变量;
C、正确设置布局管理器为BorderLayout ;
D、正确添加各组件。
提示:将姓名、性别、年龄和确认按钮等相关组件添加到一个面板中,再把这个面板添加到contentPane的北边,确认按钮一定要注册监听器;在contentPane的南边的面板上添加提示栏;将JTextArea组件添加到contentPane的中部
4、正确实现ActionListener接口的事件处理方法actionPerformed(ActionEvent e)
A、 正确获取录入的数据:姓名、性别和年龄的值
B、 正确检验空数据:如果姓名为空,在提示栏标签中提示” 姓名不能为空!”,返回
C、正确显示录入的数据: 将姓名、性别和年龄用逗号分隔显示在JTextArea中;
D、把数据作为一条记录保存进数据库中(数据源名称统一为:Person)
5、编写main方法
A、 创建一个PersonInfoRecorder对象;
B、 设置personInfoRec的大小(400,200);
数据库就要你自己建了.
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class PersonInfoRecorder extends JFrame implements ActionListener{
private JLabel nameLabel,sexLabel,ageLabel,tipLabel;//用来显示姓名、性别、年龄和提示栏
private JTextField nameTextField,ageTextField;//用来输入姓名和年龄
private JComboBox sex;//用来选择性别
private JTextArea info;//用来显示输入的个人信息
private JButton ok;//确定按钮
private JPanel northPanel,centerPanel,bigPanel;
public PersonInfoRecorder(){
super("个人信息录入器");
nameLabel = new JLabel("姓名");
sexLabel = new JLabel("性别");
ageLabel = new JLabel("年龄");
nameTextField = new JTextField(6);
ageTextField = new JTextField(6);
String sexs[] = {"男","女" };
sex = new JComboBox(sexs);
/*sex.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if(event.getStateChange() == ItemEvent.SELECTED){
String fsex = (String)sex.getSelectedItem();
info.setText(fsex);
}
}
});*/
ok = new JButton("确定");
ok.addActionListener(this);
northPanel = new JPanel();
northPanel.add(nameLabel);
northPanel.add(nameTextField);
northPanel.add(sexLabel);
northPanel.add(sex);
northPanel.add(ageLabel);
northPanel.add(ageTextField);
northPanel.add(ok);
info = new JTextArea("输入个人简要信息",5,30);
info.setLineWrap(true);
centerPanel = new JPanel();
JScrollPane scroll = new JScrollPane(info);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
centerPanel.add(scroll);
bigPanel = new JPanel();
bigPanel.add(northPanel);
bigPanel.add(centerPanel);
getContentPane().add(bigPanel);
setSize(400,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if(nameTextField.getText().equals("")){
JOptionPane.showMessageDialog(null, "姓名不能为空!请输入姓名.");
}else{
String inform = info.getText();
if(inform.equals("输入个人简要信息")){
inform = "";
}
info.setText("姓名:" + nameTextField.getText()
+ "\n性别:" + (String)sex.getSelectedItem()
+ "\n年龄:" +
"\n简介:\n" + inform);
try{ //这里的异常处理语句是必需的.否则不能通过编译!
String sqlStr = "insert into Person values(nameTextField.getText(),"+
"(String)sex.getSelectedItem(),ageTextField.getText(),inform)";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Person";
//Person为数据库
String user="sa";
String password="";
Connection con = DriverManager.getConnection(url,user,password);
Statement st = con.createStatement();
st.executeUpdate( sqlStr );
st.close();
con.close();
} catch(ClassNotFoundException exception) {
exception.printStackTrace(System.out);
}
catch(Exception err) {
err.printStackTrace(System.out);
}
}
}
public static void main(String[] args) {
PersonInfoRecorder application = new PersonInfoRecorder();
}
}