java课程设计_学生学籍管理系统1(17页).doc

上传人:1595****071 文档编号:35411409 上传时间:2022-08-21 格式:DOC 页数:17 大小:331.50KB
返回 下载 相关 举报
java课程设计_学生学籍管理系统1(17页).doc_第1页
第1页 / 共17页
java课程设计_学生学籍管理系统1(17页).doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《java课程设计_学生学籍管理系统1(17页).doc》由会员分享,可在线阅读,更多相关《java课程设计_学生学籍管理系统1(17页).doc(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-java课程设计_学生学籍管理系统1-第 14 页摘要Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。本设计可以帮助同学掌握和应运所学的面向对象程序设计学生学籍信息管理系统的编程内容,培养同学们建立对象模型,处理对象和对象集关系和对图形用回界面设计编程以及文件和流的编程问题的能力,训练同学为解决实际问题而创建较完整的简单面向对象和管理系统编程应运程序的独立编程能力.本设计是一个常见的学生学籍管理系统应运程序.系统实现的功能:界面操作实现学生学籍信息的添加、删除、查询、修改功能,在文本文件中的的信息的动态处理。关键词:学生学籍管理系统;图形用户

2、界面设计;文件和流;java目录一、设计目的1二、设计问题1三、概要设计1、主程序面板设计2、功能组件的功能实现3四、详细设计6图形用户界面设计6添加功能的实现9重置功能的实现10查询功能的实现11删除功能的实现12修改功能的实现15系统的运行18五、设计总结18参考文献19学生学籍管理系统一、设计目的随着现代社会的快速发展,我们已进入信息化时代,管理系统在人们的生活中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方面。为了适应时代的发展,本次课程设计的主要任务是设计一个学生学籍管理系统并完成一些基本操作。其目的是:(1) 运用已学的java知识编一些简单使用的程序,通过本课程设计使我

3、们加深理解、巩固课堂理论知识和实验知识;(2) 使我们初步具备综合运用所学Java语言基础知识,面向对象程序设计的基本思想、方法与技术,用户界面设计编程和文件编程技术等开发简单应用系统的基本能力;(3) 使理论和实际相结合,真正做到学以致用,并适应时代发展的潮流。二、设计问题学生学籍管理系统要求完成:(1) 学生学籍信息的添加、删除、查询、修改功能(2) 使用界面操作(3) 使用文件完成首先设计面板,然后往面板里添加组件,点击各个组件来实现要求的对学生学籍信息的添加、删除、查询、修改功能。三、概要设计学生信息管理系统的程序文件为AddStudentInformation.java,在AddSt

4、udentInformation.java包含名为AddStudent的类。其主要功能为构成学生信息管理系统的主体框架,实现框架上各个组件的事件侦听。主要包括2个模块:图形用户界面的构建:组件监听事件的实现。用例图1表示如下学生信息录入信息添加信息删除信息查询信息修改添加信息重置学籍信息数据文件学生学籍信息显示例图13.1、主程序面板设计: 设计主面板如图所示,主面板分为学籍信息输入区、功能操作区和学籍信息显示区。在学生信息输入区里分别有学号、姓名、性别、班级、系别等信息的输入文本框,其数据类型均置为String类型。在功能操作区里有五个按钮分别为:添加、修改、重置、删除、查询。分别实现对文本

5、文件中的的学生信息数据进行添加、修改、删除、查询。其中重置功能按钮为对主程序界面中的信息输入区和信息显示区的文本框中的内容进行清除操作。在学籍信息显示区里使用DefaultTableModel tableModel=new DefaultTableModel(); String titles=学号,姓名, 性别,班级,系别; 定义五个titles用来学籍信息的显示。主程序面板如例图2所示。例图2学籍信息输入学籍信息显示功能操作 3.2、功能组件的功能实现:添加学生信息在文本框中输入学生信息包括学号、姓名、性别、班级、系别,点击添加按钮弹出对话框如图。该学生信息已成功添加至文件。 如例图3,4例

6、图3例图4查询学生信息在学号文本框里输入想要查询的学号0809010214,在学生信息显示栏显示信息。如例图5:例图5修改学生信息在学生信息输入区输入完整的学生信息,点击修改按钮弹出如下对话框,点击是(Y)按钮,程序自动修改文本文件中的学生信息,如例图6,7。例图6例图7打开text1.txt文件,查找所修改内容,成功修改内容,再查询学号为08090104的学生信息为如例图8例图8说明信息修改成功。删除学生信息只需在信息输入区输入所要删除的学生信息的学号,点击删除按钮弹出如下对话框例图9点击是(Y)按钮,程序进行执行删除功能,并弹出如下对话框,如例图10例图10重置信息点击重置按钮,学籍信息输

7、入区和学籍信息显示区的文本框中的内容都设置为空。四、详细设计定义AddStudent类继承JFrame类使用ActionListener, ItemListener接口实现对事件的监听。以下为用户界面的程序代码及分析: 定义String类型的num,name,grade,sex,xibie,oldStr六个变量;在本系统中默认学籍信息中的学号为学生信息的唯一可区分标识。删除、查询和修改时均以学号来进行信息的检索和匹配检测。使用JLabel标签类定义lbl_title lbl_num lbl_name lbl_sex lbl_class lbl_department;使用JTextField类创

8、建文本框用以学籍信息的输入和显示。使用JButton类创建btn_rep btn_xg btn_cx btn_sh btn_add功能按钮。使用addItemListener() 和addActionListener()方法功能按钮事件进行监听。使用JRadioButton类创建rb_man rb_woman用以学生学籍信息性别的选择。使用DefaultTableModel类定义五个titles用来学籍信息的显示。使用Container容器类,并使用add()方法添加组件到容器中。使用setBounds()方法对每个组件进行位置的设置,并使界面达到最优化。使用setVisible(true)使

9、界面显示各个组件。class AddStudent extends JFrame implements ActionListener, ItemListener public String num,name,grade,sex,xibie,oldStr;JLabel lbl_title = new JLabel(学生信息);JLabel lbl_num = new JLabel(学号:);JLabel lbl_name = new JLabel(姓名:);JLabel lbl_sex = new JLabel(性别:);JLabel lbl_class = new JLabel(班级:);JL

10、abel lbl_department = new JLabel(系别:); JTextField txt_num = new JTextField(); JTextField sfzText1 = new JTextField() ; JTextField bnameText1 = new JTextField() ; JTextField xbText1 = new JTextField() ; JTextField dateText1 = new JTextField() ; JTextField xb = new JTextField() ;JTextField txt_name =

11、new JTextField(11);JTextField txt_class = new JTextField(11);JTextField txt_department = new JTextField();JButton btn_rep = new JButton(重置);JButton btn_xg = new JButton(修改);JButton btn_cx = new JButton(查询);JButton btn_sh = new JButton(删除);JButton btn_add = new JButton(添加);JRadioButton rb_man = new J

12、RadioButton(男);JRadioButton rb_woman = new JRadioButton(女); DefaultTableModel tableModel=new DefaultTableModel(); String titles=学号,姓名, 性别,班级,系别; String a,b,c,d,f; private JLabel infoLab = new JLabel(学生信息管理) ;ButtonGroup bg = new ButtonGroup();AddStudent(String s) super(s);this.setBounds(500, 50, 390

13、, 600);Container con = this.getContentPane();con.setLayout(null);con.add(lbl_title);con.add(lbl_num);con.add(lbl_name);con.add(lbl_sex);con.add(lbl_class);con.add(lbl_department);con.add(txt_num);con.add(txt_name);con.add(txt_class);con.add(txt_department);con.add(btn_rep);con.add(btn_xg);con.add(bt

14、n_cx);con.add(btn_sh);con.add(btn_add);con.add(rb_man);con.add(rb_woman);bg.add(rb_man);bg.add(rb_woman);con.add(infoLab);con.add(sfzText1) ; con.add(bnameText1) ; con.add(xbText1) ; con.add(dateText1) ; con.add(xb);lbl_title.setBounds(150, 50, 100, 25);lbl_num.setBounds(100, 100, 50, 25);lbl_name.s

15、etBounds(100, 150, 50, 25);lbl_sex.setBounds(100, 200, 50, 25);lbl_class.setBounds(100, 250, 50, 25);lbl_department.setBounds(100, 300, 50, 25);btn_add.setBounds(20, 350, 60, 25);btn_sh.setBounds(230, 350, 60, 25);btn_xg.setBounds(90, 350, 60, 25);btn_cx.setBounds(300, 350, 60, 25);btn_rep.setBounds

16、(160, 350, 60, 25);txt_num.setBounds(150, 100, 110, 25);txt_name.setBounds(150, 150, 110, 25);txt_class.setBounds(150, 250, 110, 25);txt_department.setBounds(150, 300, 110, 25);rb_man.setBounds(150, 200, 50, 25);rb_woman.setBounds(220, 200, 50, 25);infoLab.setBounds(0,410,100,25); sfzText1.setBounds

17、(0,450,80,20) ;bnameText1.setBounds(80,450,80,20) ;xb.setBounds(160,450,80,20) ; xbText1.setBounds(240,450,80,20) ; dateText1.setBounds(320,450,80,20) ; tableModel.setColumnIdentifiers(titles); JTable table=new JTable(tableModel); JScrollPane scr=new JScrollPane(table); con.add(scr); scr.setBounds(0

18、, 430, 400,300);rb_man.addItemListener(this);rb_woman.addItemListener(this);btn_add.addActionListener(this);btn_rep.addActionListener(this);btn_xg.addActionListener(this);btn_sh.addActionListener(this);btn_cx.addActionListener(this);setVisible(true); 定义addDate()方法实现学籍信息的添加,使用getText()方法获取文本框中的学生学籍信息

19、,并使用PrintWriter(new FileWriter( new File(text1.txt),true)类下的println()方法将信息写入文件。其中每个学籍信息之间用|隔开,并换行保存以方便信息的的读取和查询。添加成功之后执行setText()方法使各个文本框中的信息为空以方便其他功能的实现。以下为具体的代码:public void addDate()String sex = null;if(rb_man.isSelected()sex=rb_man.getText(); else sex=rb_woman.getText();JOptionPane.showMessageDia

20、log(null, 学号: + txt_num.getText()+ n姓名: + txt_name.getText()+n性别+sex + n班级:+ txt_class.getText() + n系别: + txt_department.getText(); PrintWriter mm = null;String fs =txt_num.getText()+|+txt_name.getText()+|+sex+|+txt_class.getText()+|+txt_department.getText();try mm = new PrintWriter(new FileWriter(

21、new File(text1.txt),true);mm.println(fs); catch (IOException e1) e1.printStackTrace();mm.close();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.re

22、move(rb_woman);rb_man.setSelected(false);rb_woman.setSelected(false);使用setText()方法使各个文本框中的信息为空,使用JRadioButton 类下的remove()和setSelected(flase)方法使性别单选按钮置为未被选定状态。public void repDate()txt_num.setText(null);txt_name.setText(null);txt_class.setText(null);txt_department.setText(null);bg.remove(rb_man);bg.re

23、move(rb_woman);rb_man.setSelected(false);rb_woman.setSelected(false);bg.add(rb_man);bg.add(rb_woman);sfzText1.setText(); bnameText1.setText(); dateText1.setText(); xb.setText(); xbText1.setText(); infoLab.setText(学生信息);定义查询方法实现查询功能,首先使用equals方法进行判别学号输入区文本框中的内容是否为空,为空的时候则提示用回输入学号进行查询,不为空使用类BufferedRe

24、ader下的readLine()方法正行读取文件text1.txt中的内容, 使用类StringTokenizer对读取的整行数据以“|“进行分割,每个分割点的内容赋值给String类型的num,name,sex,grade,xibie。再次使用equal方法判断学号输入文本框中的内容是否和num相同,若相同则依次使用setText()方法将学籍信息显示区的文本框内容设置为所查找的文件数据。其中包括文件的异常处理。以下为具体代码:public void CheckDate()if (txt_num.getText().toString().equals()JOptionPane.showMes

25、sageDialog(null, 请输入学号, 温馨提示, JOptionPane.INFORMATION_MESSAGE); try BufferedReader in = new BufferedReader(new FileReader(text1.txt); String s;while(s=in.readLine()!=null) StringTokenizer t=new StringTokenizer(s,|); num=t.nextToken(); name=t.nextToken(); sex=t.nextToken(); grade =t.nextToken(); xibi

26、e =t.nextToken();if(num.equals(txt_num.getText() sfzText1.setText(num); bnameText1.setText(name); dateText1.setText(xibie); xb.setText(sex); xbText1.setText(grade); infoLab.setText(查询成功!); catch (IOException e) e.printStackTrace();删除功能的实现删除学籍信息时用户只需输入学生的学号即可删除文本文件中的该生的学籍信息,其实现是基于查询功能,首先是查询文本文件中的数据,如

27、果输入的学号和查询到的信息相同时,提示用户是否要删除该生学籍信息,如果选择是(Y),则删除该学生的所有信息。在实现删除功能时,本系统采用缓冲流StringBufferbuf的相关特性,在信息匹配成功之后,使用readLine()方法自动查找到该学籍信息在文本文件中所在的行,将该行之前的内容使用append()方法追加到缓冲流buf中,而该行数据则设置为空追加至buf中,该行之后的内容则正常追加至buf中,然后再写入文本文件text1.txt中,其中也包括对文件读取写入的异常的处理,从而实现了信息的删除。以下为具体代码:public void deleteDate()if(rb_man.isSe

28、lected()sex=rb_man.getText(); else sex=rb_woman.getText();String m=确定要删除该学生的记录吗? n请检查文本文件中的数据格式确保每行数据之间和文本最后无空行; int ok=JOptionPane.showConfirmDialog(null,m,确认,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try BufferedReader in = new BufferedReader(new FileRe

29、ader(text1.txt); String s; 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 +|+name+|+sex+|+grade+|+ xibie; catch (IOException e)

30、 try File file = new File(text1.txt); 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(n); while (s =

31、 st.readLine() != null) buf = buf.append(s); buf = buf.append(n); 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, 删除成

32、功, 温馨提示, 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); rb_woman.setSelected(false); else if(ok=JOptionPane.NO_OPTION)修改学籍信息和删除功能实现方法类似,只是在修改的具体

33、过程有些差异,修改学籍信息时需要用户输入完整的学籍信息,点击修改按钮,系统弹出对话框提示是否要删除学生学籍信息,点击是(Y)进行修改学籍信息,首先也是对文本文件的读取和信息匹配检测,以学号为标识进行匹配检测。若学号相同,使用readLine()方法自动查找到该学籍信息在文本文件中所在的行,将该行之前的内容使用append()方法追加到缓冲流buf中,而该行数据则设置为从文本框中获取的内容追加至buf中,该行之后的内容则正常追加至buf中,然后再写入文本文件text1.txt中,其中也包括对文件读取写入的异常的处理,从而实现了信息的修改。以下为具体代码:public void editData(

34、)if(rb_man.isSelected()sex=rb_man.getText(); else sex=rb_woman.getText();String m=确定要修改该学生的记录吗?; int ok=JOptionPane.showConfirmDialog(null,m,确认,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try BufferedReader in = new BufferedReader(new FileReader(text1.txt);

35、 String s; 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 +|+name+|+sex+|+grade+|+ xibie; catch (IOException e) e.printStackTra

36、ce(); try File file = new File(text1.txt); 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(n); while

37、 (s = st.readLine() != null) buf = buf.append(s); buf = buf.append(n); buf = buf.append(txt_num.getText()+|+txt_name.getText()+|+sex+|+txt_class.getText()+|+txt_department.getText(); st.close(); PrintWriter pw = new PrintWriter(new FileOutputStream(file); pw.println(buf.toString().toCharArray(); pw.

38、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.setT

39、ext(学生信息); rb_man.setSelected(false); rb_woman.setSelected(false); else if(ok=JOptionPane.NO_OPTION)编写主函数,创建AddStudent类add_student。以下为主函数代码:public class AddStudentInformation public static void main(String args) throws IOException AddStudent add_student = new AddStudent(学生学籍系统);add_student.setDefaul

40、tCloseOperation(JFrame.EXIT_ON_CLOSE);五、设计总结我们刚学习java这门课程,对专业的java编程知识并未有深入的学习和探索。但是当我们查找过一些书籍资料后,在老师的不遗余力的指导下我们还是把课程设计题目顺利的完成了。通过此次学生学籍管理系统的设计,使我们对java编程语言有了更深层次的了解。不过在编写的过程中也存在一些问题,例如在选择适宜的方法实现修改和删除功能的时候,由于对数组的理解还不能满足当前的编程需要,并未选择更加简单的数组来处理数据,以至于当删除指定内容后在文本文件中留有空行,从而导致了在接下来的查询异常和再次修改和删除功能无法正常实现,还需人

41、工删除掉文本文件中的空行以保证程序的正常运行。我们也可以选用其他的更加方便的处理方法使得程序更加优化和简洁。“书山有路勤为径,学海无涯苦作舟”,我们现今所学的知识还远远不够,在今后的学习过程中我们要进一步学习java的更多的知识,此次课程设计不仅锻炼了我们独立思考和团队合作的能力,而且提高了我们动手的能力。参考文献1(美)Cay S.Horstmann、Gary Cornell(叶乃文、邝劲筠 等译).JAVA2 核心技术卷M.第七版.机械工业出版社,20062 龚永罡、陈昕.Java程序设计M.清华大学出版社,20093 刘兆宏、郑莉、陈建、罗频捷.Java语言程序设计案例教程M.清华大学出版社,20084 王舜燕、钟珞.Java编程方法学M.北京邮电大学出版社,2008

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com