java 学生信息系统录入按钮代码问题

筱周 2010-02-25 07:56:25
if (arg0.getSource() == btnAdd) {
String number = txtId.getText();
System.out.println("number" + number);

s1 = new String(txtName.getText() + ";" + txtId.getText() + ";"
+ txtAge.getText() + ";" + txtSex.getText() + ";"
+ txtMobile.getText() + ";" + txtHomeAddress.getText()
+ ";");
File file = new File("D:\\test.txt");
if (number.trim().length() > 0) {
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

br.read();
String s2 = br.toString();

br.close();
isr.close();
fis.close();

if (s2.contains(number)) {
String warning = "该生信息已存在!";
JOptionPane.showMessageDialog(null, warning, "警告",
JOptionPane.WARNING_MESSAGE);
} else {
try {
FileOutputStream fos = new FileOutputStream(
file, true);
OutputStreamWriter osw = new OutputStreamWriter(
fos);
BufferedWriter bw = new BufferedWriter(osw);

String m = "该生信息将被录入!";
int ok = JOptionPane.showConfirmDialog(null, m,
"确认", JOptionPane.YES_NO_OPTION,
JOptionPane.INFORMATION_MESSAGE);
if (ok == JOptionPane.YES_OPTION) {
bw.write(s1);
bw.newLine();
}

bw.flush();
bw.close();
osw.close();
fos.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}

}

} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
} else {
String warning = "必须输入学号!";
JOptionPane.showMessageDialog(null, warning, "警告",
JOptionPane.WARNING_MESSAGE);

}

}
这是一个录入按钮 主要功能是输入学生信息 点击按钮将学生信息写入到TXT文件中!
写入TXT文件中要根据学号Id来判断:
如果没有输入学号 则告警 "必须属于学号";
读取TXT文件中的内容,判断输入的学号在TXT文件中是否存在,存在的话 则告警"该生信息已存在!"
如果TXT文件中不存在输入的学号,则将此学生的信息写入到TXT文件中!
我单步调试的时候发现问题在于程序走 if (number.trim().length() > 0) 这句直接跳到了最后的else,if (number.trim().length() > 0){.. }里面的类容都没走到,请问这是什么原因?
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
千锤_百炼 2010-02-26
  • 打赏
  • 举报
回复
学习下~~~!



up
zhhkangkang 2010-02-26
  • 打赏
  • 举报
回复
UP UP
UP UP
kyo19 2010-02-26
  • 打赏
  • 举报
回复
上面的IO流我不记得关了,重新写了一下

public static void main(String[] args) {
String number = "003";
if (number == null || "".equals(number.trim())) {
System.out.println("学号必须录入");
return;
}
System.out.println("number" + number);

String s1 = new String(number + "AAAA");
File file = new File("D:\\test.txt");
if (number.trim().length() > 0) {
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
fis = new FileInputStream(file);
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);

String s2;

while ((s2 = br.readLine()) != null) {
System.out.println(s2);
if (s2.lastIndexOf(number) > -1) {
String warning = "该生信息已存在!";
System.out.println(warning);
return;
}
}

FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bw = null;
try {
fos = new FileOutputStream(file, true);
osw = new OutputStreamWriter(fos);
bw = new BufferedWriter(osw);

String m = "该生信息将被录入!";
System.out.println(m);
bw.write(s1);
bw.newLine();
bw.flush();

} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
} finally {
if (bw != null)
bw.close();
if (osw != null)
osw.close();
if (fos != null)
fos.close();
}

} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
} finally {

try {
if (br != null)
br.close();
if (isr != null)
isr.close();
if (fis != null)
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
}
kyo19 2010-02-26
  • 打赏
  • 举报
回复
你写的代码明显有问题。
1.你的文档写入后,每一条学生记录是一行,可是你在写入前的读写只有一个br.read(),这是读取单个字符,你就是一个一个的字符从文件中读入,问题是你一个文件中难道只有一个学生或是只有一个字符吗?这里明显需要你用循环去读取文件中的每一行,用来查看是否已经有了学生的记录。

我把你的代码重写了一下,不过,你给的Swing的界面代吗没有放出来,所以我直接把他改了一下用控制台的方式输出

public static void main(String[] args) {
String number = "003";
if (number == null || "".equals(number.trim())) {
System.out.println("学号必须录入");
return;
}
System.out.println("number" + number);

String s1 = new String(number + "AAAA");
File file = new File("D:\\test.txt");
if (number.trim().length() > 0) {
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

String s2;

while ((s2 = br.readLine()) != null) {
System.out.println(s2);
if (s2.lastIndexOf(number) > -1) {
String warning = "该生信息已存在!";
System.out.println(warning);
return;
}
}

br.close();
isr.close();
fis.close();

try {
FileOutputStream fos = new FileOutputStream(file, true);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);

String m = "该生信息将被录入!";
System.out.println(m);
bw.write(s1);
bw.newLine();

bw.flush();
bw.close();
osw.close();
fos.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}

}

catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}

}
}
huangwj20042008 2010-02-26
  • 打赏
  • 举报
回复
有没输入学生id?????????????????????
qqxuexixuexi 2010-02-25
  • 打赏
  • 举报
回复
你的范围没卡好

>0时 分几种情况
<0时 分几种情况


FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

和范围控制在一起的话有点乱,它毕竟和逻辑无关
gao512008 2010-02-25
  • 打赏
  • 举报
回复
System.out.println("number" + number);

输出内容了吗?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧