内容发布更新时间 : 2024/12/23 0:20:05星期一 下面是文章的全部内容请认真阅读。
for (int j = 1; (s = st.readLine()) != null && !s.equals(oldStr);
j++) {
buf = buf.append(s); buf = buf.append(\ }
while ((s = st.readLine()) != null) {
buf = buf.append(s); buf = buf.append(\
}
buf.append(\ st.close();
PrintWriter pw = new PrintWriter(new FileOutputStream(file)); pw.println(buf.toString().toCharArray()); pw.flush(); pw.close();
}
catch (IOException e) { e.printStackTrace(); }
JOptionPane.showMessageDialog(null, \删除成功\\温馨提示\
JOptionPane.INFORMATION_MESSAGE);
txt_num.setText(null);
txt_name.setText(null); txt_class.setText(null); txt_department.setText(null); bg.remove(rb_man); bg.remove(rb_woman); rb_man.setSelected(false);
14
}
rb_woman.setSelected(false);
else if(ok==JOptionPane.NO_OPTION){ }
}
4.6修改功能的实现
修改学籍信息和删除功能实现方法类似,只是在修改的具体过程有些差异,修改学籍信息时需要用户输入完整的学籍信息,点击修改按钮,系统弹出对话框提示是否要删除学生学籍信息,点击是(Y)进行修改学籍信息,首先也是对文本文件的读取和信息匹配检测,以学号为标识进行匹配检测。若学号相同,使用readLine()方法自动查找到该学籍信息在文本文件中所在的行,将该行之前的内容使用append()方法追加到缓冲流buf中,而该行数据则设置为从文本框中获取的内容追加至buf中,该行之后的内容则正常追加至buf中,然后再写入文本文件text1.txt中,其中也包括对文件读取写入的异常的处理,从而实现了信息的修改。以下为具体代码:
public void editData(){
if(rb_man.isSelected()){
sex=rb_man.getText();}
else {
sex=rb_woman.getText(); }
String m=\确定要修改该学生的记录吗?\
ok=JOptionPane.showConfirmDialog(null,m,\
确
认
int
\ if(ok==JOptionPane.YES_OPTION){
try {
15
BufferedReader FileReader(\ String s;
in = new BufferedReader(new
while((s=in.readLine())!=null) {
StringTokenizer t=new StringTokenizer(s,\
num=t.nextToken();
name=t.nextToken(); sex=t.nextToken(); grade =t.nextToken(); xibie =t.nextToken();
if(num.equals(txt_num.getText())){
oldStr = num +\
} catch (IOException e) { }
e.printStackTrace();
}
try {
File file = new File(\ BufferedReader
st
=
new
BufferedReader(new
InputStreamReader(new FileInputStream(file)));
StringBuffer buf = new StringBuffer(); String s=null;
for (int j = 1; (s = st.readLine()) != null && !s.equals(oldStr);
j++) {
buf = buf.append(s); buf = buf.append(\ }
16
while ((s = st.readLine()) != null) {
buf = buf.append(s);
buf = buf.append(\
} buf
=
buf.append(txt_num.getText()+\)+\
st.close();
PrintWriter pw = new PrintWriter(new FileOutputStream(file)); pw.println(buf.toString().toCharArray()); pw.flush(); pw.close();
}
catch (IOException e) { e.printStackTrace(); }
JOptionPane.showMessageDialog(null, \修改成功\\温馨提示\
JOptionPane.INFORMATION_MESSAGE);
txt_num.setText(null); }
txt_name.setText(null); txt_class.setText(null); txt_department.setText(null); bg.remove(rb_man); bg.remove(rb_woman); infoLab.setText(\学生信息\rb_man.setSelected(false); rb_woman.setSelected(false);
else if(ok==JOptionPane.NO_OPTION){
17
}
}
4.7系统的运行:
编写主函数,创建AddStudent类add_student。以下为主函数代码: public class AddStudentInformation {
public static void main(String[] args) throws IOException { AddStudent add_student = new AddStudent(\学生学籍系统\); add_student.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
五、设计总结
我们刚学习java这门课程,对专业的java编程知识并未有深入的学习和探索。但是当我们查找过一些书籍资料后,在老师的不遗余力的指导下我们还是把课程设计题目顺利的完成了。通过此次学生学籍管理系统的设计,使我们对java编程语言有了更深层次的了解。不过在编写的过程中也存在一些问题,例如在选择适宜的方法实现修改和删除功能的时候,由于对数组的理解还不能满足当前的编程需要,并未选择更加简单的数组来处理数据,以至于当删除指定内容后在文本文件中留有空行,从而导致了在接下来的查询异常和再次修改和删除功能无法正常实现,还需人工删除掉文本文件中的空行以保证程序的正常运行。我们也可以选用其他的更加方便的处理方法使得程序更加优化和简洁。
“书山有路勤为径,学海无涯苦作舟”,我们现今所学的知识还远远不够,在今后的学习过程中我们要进一步学习java的更多的知识,此次课程设计不仅锻炼了我们独立思考和团队合作的能力,而且提高了我们动手的能力。
18
参考文献
[1](美)Cay S.Horstmann、Gary Cornell(叶乃文、邝劲筠 等译).JAVA2 核心
技术卷?[M].第七版.机械工业出版社,2006
[2] 龚永罡、陈昕.Java程序设计[M].清华大学出版社,2009
[3] 刘兆宏、郑莉、陈建、罗频捷.Java语言程序设计案例教程[M].清华大学出版社,2008
[4] 王舜燕、钟珞.Java编程方法学[M].北京邮电大学出版社,2008
19