package com;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.swing.JOptionPane;
/**
* 在生活中,我们很多时候会遇到数据的格式化,比如将表单数据录入数据库,
* 将表单数据读入到Excel,将数据库数据格式化到Excel表格......
因为考虑到大家的水平高低,因而将该题按难易程度分为以下几种:
1、将网页表单内容(含用户名、密码、性别、邮箱)按提交时能将里面的数据直接格式化到一个
Excel表格中!(本题在客户端需对表单内容进行校验,用户名5--8位,由数字和字母组成,
不能以0开头;密码只能是数字、字母、_,7--15位;邮箱也需进行格式验证)------总分12分
2、将数据库中的内容格式化到Excel中,数据库直接使用XML,数据内容同上;------总分8分
3、如果以上知识都没学到,可以使用java基础的知识直接做数据的录入,将数据格式化到Excel中,
如果录入到Excel中不会的,可以选择录入到word中(采用此种方式做的,
用图形界面或录入到Excel与不使用图形界面或直接录入到word中都会有分值的差别,大家注意录入后的格式)------总分5分
注:
1、大家做的项目在提交时都以自己的真实姓名命名,否则在得分基础上扣2分,
在自己的项目中用“说明.txt”文档写明自己做的是上面3中模式中的哪一种,
并简要说明自己几个项目中的几个主类及其作用,以及自己已经达到的效果和自身项目的缺陷;
2、不论采用上面的那种模式,数据均为用户名、密码、性别、邮箱四项,并有以下要求,用户名5--8位,
由数字和字母组成,不能以0开头;密码只能是数字、字母、_,7--15位;邮箱也需进行格式验证!
3、之所以将一个题目分为3种类型,就是考虑到大家的水平高低,最后希望大家都能踊跃的参与进来,拿自己实力应得的分数!!!
提示:录入到Excel大家可以参考POI组件!
评分标准:功能实现、设计思想、代码体现、文中注释!
* @author wjw
*
*/
public class Title_12 {
private Frame frame;
private Label lab_name,lab_password,lab_sex,lab_email;
private TextField tf_name,tf_password,tf_sex,tf_email;
private Button b_submit,b_clear;
private Map<String,String> map=new HashMap<String,String>();//定义HashMap集合用来存储输入进来的数据
public Title_12(){
init();
}
//页面初始化
public void init(){
frame=new Frame("wjw_java版的数据存储------------Excel");
frame.setSize(400,200);
frame.setResizable(false);//设定窗体大小固定,不可随便改变大小
frame.setVisible(true);
//获取屏幕尺寸
Dimension screensize=Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((int)(screensize.getWidth()/2)-200,(int)(screensize.getHeight()/2)-175);
frame.setLayout(new FlowLayout());
//四个Label标签实例化
lab_name=new Label("-------->>用 户 名:");
lab_password=new Label("-------->>密 码:");
lab_sex=new Label("-------->>性 别:");
lab_email=new Label("-------->>邮箱地址:");
//四个输入框实例化
tf_name=new TextField(30);
tf_password=new TextField(30);
tf_sex=new TextField(30);
tf_email=new TextField(30);
//提交按钮实例化
b_submit=new Button("提交数据");
//清空数据
b_clear=new Button("清空数据");
//依次添加到Frame上
//用户名
frame.add(lab_name);
frame.add(tf_name);
//密码
frame.add(lab_password);
frame.add(tf_password);
//性别
frame.add(lab_sex);
frame.add(tf_sex);
//邮箱
frame.add(lab_email);
frame.add(tf_email);
//添加提交按钮
frame.add(b_submit);
frame.add(b_clear);
event();
}
//添加事件
public void event(){
//窗体添加关闭按钮事件
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
//验证用户名
tf_name.addFocusListener(new FocusAdapter(){
//当获取焦点时
public void focusGained(FocusEvent e){
// if(!"".equals(str)){
// str="";
// }
// JOptionPane.showMessageDialog(frame,"用户名不能为空");
}
//当失去焦点时
public void focusLost(FocusEvent e) {
String str=tf_name.getText();
String regex="[a-zA-Z1-9][a-zA-Z0-9]{4,7}";
if(!"".equals(str)){
if(str.matches(regex)){
map.put("用户名",str);//把用户名放入HashMap
}else{
JOptionPane.showMessageDialog(frame,"用户名格式错误,请按照\"用户名5--8位,由数字和字母组成,不能以0开头\"格式填写");
tf_name.setText("");//把错误的数据置空
// tf_name.requestFocus();//获取焦点
}
}
}
});
//验证密码
tf_password.addFocusListener(new FocusAdapter(){
//当获取焦点时
public void focusGained(FocusEvent e){}
//当失去焦点时
public void focusLost(FocusEvent e) {
String str=tf_password.getText();
String regex="[a-zA-Z1-9_]{7,15}";
if(!"".equals(str)){
if(str.matches(regex)){
map.put("密 码",str);//把密码放入HashMap
}else{
JOptionPane.showMessageDialog(frame,"密码格式错误,请按照\"只能是数字、字母、_\"格式填写");
tf_password.setText("");//把错误的数据置空
}
}
}
});
//验证性别
tf_sex.addFocusListener(new FocusAdapter(){
//当获取焦点时
public void focusGained(FocusEvent e){}
//当失去焦点时
public void focusLost(FocusEvent e) {
String str=tf_sex.getText();
if(!"".equals(str)){
if(str.equals("male")){
map.put("性 别",str);//把性别放入HashMap
}else if(str.equals("female")){
map.put("性 别",str);//把性别放入HashMap
}else{
JOptionPane.showMessageDialog(frame,"性别格式错误,请按照\"male或者female\"格式填写");
tf_sex.setText("");//把错误的数据置空
}
}
}
});
//验证邮箱
tf_email.addFocusListener(new FocusAdapter(){
//当获取焦点时
public void focusGained(FocusEvent e){}
//当失去焦点时
public void focusLost(FocusEvent e) {
String str=tf_email.getText();
String regex="^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
if(!"".equals(str)){
if(str.matches(regex)){
map.put("邮 箱",str);//把邮箱放入HashMap
}else{
JOptionPane.showMessageDialog(frame,"邮箱格式错误,请按照\"邮箱\"格式填写");
tf_email.setText("");//把错误的数据置空
}
}
}
});
//提交按钮
b_submit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String str="";
if(tf_name.getText().equals("")||tf_password.getText().equals("")||tf_sex.getText().equals("")||tf_email.getText().equals("")){
JOptionPane.showMessageDialog(frame,"用户名或者密码或者性别或者邮箱为空,请填写");
}else{
File f=new File("c:/wjw_java/data.xls");
if(!f.getParentFile().exists()){//判断上级目录是否存在
f.getParentFile().mkdir();//如果不存在就创建目录
}
BufferedWriter bw=null;
try {
bw = new BufferedWriter(new FileWriter(f));
Set<Entry<String,String>> set=map.entrySet();
for (Entry<String, String> entry : set) {
str=entry.getKey()+":"+entry.getValue();
try {
bw.write(str);
bw.newLine();//添加换行
bw.flush();//刷新
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println(entry.getKey()+":"+entry.getValue());//打印到控制台
}
}catch (IOException e2) {
JOptionPane.showMessageDialog(frame,"文件已打开,程序不能操作文件,请关闭data.xls文件");
throw new RuntimeException("文件已打开,程序不能操作文件,请关闭data.xls文件");
}finally{
try {
if(null!=bw){
bw.close();//关闭输出流
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
JOptionPane.showMessageDialog(frame,"数据已经传入到\"c:/wjw_java/data.xls\"路径下,请查看");
}
}
});
//清空数据
b_clear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
tf_name.setText("");
tf_password.setText("");
tf_sex.setText("");
tf_email.setText("");
}
});
}
public static void main(String[] args) throws IOException {
new Title_12();//匿名实例化本类
}
}