java课程设计报告_学生学籍管理系统

上传人:痛*** 文档编号:84833746 上传时间:2022-05-04 格式:DOC 页数:17 大小:78KB
返回 下载 相关 举报
java课程设计报告_学生学籍管理系统_第1页
第1页 / 共17页
java课程设计报告_学生学籍管理系统_第2页
第2页 / 共17页
java课程设计报告_学生学籍管理系统_第3页
第3页 / 共17页
点击查看更多>>
资源描述
. -摘要Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。本设计可以帮助同学掌握和应运所学的面向对象程序设计学生学籍信息管理系统的编程内容,培养同学们建立对象模型,处理对象和对象集关系和对图形用回界面设计编程以及文件和流的编程问题的能力,训练同学为解决实际问题而创立较完整的简单面向对象和管理系统编程应运程序的独立编程能力.本设计是一个常见的学生学籍管理系统应运程序.系统实现的功能:界面操作实现学生学籍信息的添加、删除、查询、修改功能,在文本文件中的的信息的动态处理。关键词:学生学籍管理系统;图形用户界面设计;文件和流;java目录一、设计目的1二、设计问题1三、概要设计13.1、主程序面板设计23.2、功能组件的功能实现3四、详细设计64.1图形用户界面设计64.2添加功能的实现94.3重置功能的实现104.4查询功能的实现114.5删除功能的实现124.6修改功能的实现154.7系统的运行18五、设计总结18参考文献19. 优选-. -学生学籍管理系统一、设计目的随着现代社会的快速开展,我们已进入信息化时代,管理系统在人们的生活中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方面。为了适应时代的开展,本次课程设计的主要任务是设计一个学生学籍管理系统并完成一些根本操作。其目的是:(1) 运用已学的java知识编一些简单使用的程序,通过本课程设计使我们加深理解、稳固课堂理论知识和实验知识;(2) 使我们初步具备综合运用所学Java语言根底知识,面向对象程序设计的根本思想、方法与技术,用户界面设计编程和文件编程技术等开发简单应用系统的根本能力;(3) 使理论和实际相结合,真正做到学以致用,并适应时代开展的潮流。二、设计问题学生学籍管理系统要求完成:(1) 学生学籍信息的添加、删除、查询、修改功能(2) 使用界面操作(3) 使用文件完成首先设计面板,然后往面板里添加组件,点击各个组件来实现要求的对学生学籍信息的添加、删除、查询、修改功能。三、概要设计学生信息管理系统的程序文件为AddStudentInformation.java,在AddStudentInformation.java包含名为AddStudent的类。其主要功能为构成学生信息管理系统的主体框架,实现框架上各个组件的事件侦听。主要包括2个模块:图形用户界面的构建:组件监听事件的实现。用例图1表示如下学生信息录入信息添加信息删除信息查询信息修改添加信息重置学籍信息数据文件学生学籍信息显示例图13.1、主程序面板设计:设计主面板如以下图,主面板分为学籍信息输入区、功能操作区和学籍信息显示区。在学生信息输入区里分别有*、*、性别、班级、系别等信息的输入文本框,其数据类型均置为String类型。在功能操作区里有五个按钮分别为:添加、修改、重置、删除、查询。分别实现对文本文件中的的学生信息数据进展添加、修改、删除、查询。其中重置功能按钮为对主程序界面中的信息输入区和信息显示区的文本框中的内容进展去除操作。在学籍信息显示区里使用DefaultTableModel tableModel=newDefaultTableModel(); String titles=*,*, 性别,班级,系别; 定义五个titles用来学籍信息的显示。主程序面板如例图2所示。. 优选-. -例图2学籍信息输入学籍信息显示功能操作. 优选-. -3.2、功能组件的功能实现:在文本框中输入学生信息包括*、*、性别、班级、系别,点击添加按钮弹出对话框如图。该学生信息已成功添加至文件。 如例图3,4. 优选-. -例图3例图4. 优选-. -在*文本框里输入想要查询的*0809010214,在学生信息显示栏显示信息。如例图5:例图5在学生信息输入区输入完整的学生信息,点击修改按钮弹出如下对话框,点击是(Y)按钮,程序自动修改文本文件中的学生信息,如例图6,7。. 优选-. -例图6例图7. 优选-. -翻开te*t1.t*t文件,查找所修改内容,成功修改内容,再查询*为08090104的学生信息为如例图8例图8说明信息修改成功。只需在信息输入区输入所要删除的学生信息的*,点击删除按钮弹出如下对话框例图9点击是(Y)按钮,程序进展执行删除功能,并弹出如下对话框,如例图10例图10点击重置按钮,学籍信息输入区和学籍信息显示区的文本框中的内容都设置为空。四、详细设计4.1图形用户界面设计定义AddStudent类继承JFrame类使用ActionListener, ItemListener接口实现对事件的监听。以下为用户界面的程序代码及分析: 定义String类型的num,name,grade,se*,*ibie,oldStr六个变量;在本系统中默认学籍信息中的*为学生信息的唯一可区分标识。删除、查询和修改时均以*来进展信息的检索和匹配检测。4.5使用JLabel标签类定义lbl_title lbl_num lbl_name lbl_se* lbl_class lbl_department;使用JTe*tField类创立文本框用以学籍信息的输入和显示。使用utton类创立btn_rep btn_*g btn_c* btn_sh btn_add功能按钮。使用addItemListener()和addActionListener()方法功能按钮事件进展监听。使用JRadioButton类创立rb_man rb_woman用以学生学籍信息性别的选择。使用DefaultTableModel类定义五个titles用来学籍信息的显示。使用Container容器类,并使用add()方法添加组件到容器中。使用setBounds()方法对每个组件进展位置的设置,并使界面到达最优化。使用setVisible(true)使界面显示各个组件。class AddStudent e*tends JFrame implements ActionListener, ItemListener public String num,name,grade,se*,*ibie,oldStr;JLabel lbl_title = new JLabel(学生信息);JLabel lbl_num = new JLabel(*:);JLabel lbl_name = new JLabel(*:);JLabel lbl_se* = new JLabel(性别:);JLabel lbl_class = new JLabel(班级:);JLabel lbl_department = new JLabel(系别:); JTe*tField t*t_num = new JTe*tField(); JTe*tField sfzTe*t1 = new JTe*tField() ; JTe*tField bnameTe*t1 = new JTe*tField() ; JTe*tField *bTe*t1 = new JTe*tField() ; JTe*tField dateTe*t1 = new JTe*tField() ; JTe*tField *b = new JTe*tField() ;JTe*tField t*t_name = new JTe*tField(11);JTe*tField t*t_class = new JTe*tField(11);JTe*tField t*t_department = new JTe*tField();utton btn_rep = new utton(重置);utton btn_*g = new utton(修改);utton btn_c* = new utton(查询);utton btn_sh = new utton(删除);utton btn_add = new utton(添加);JRadioButton rb_man = new JRadioButton(男);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, 600);Container con = this.getContentPane();con.setLayout(null);con.add(lbl_title);con.add(lbl_num);con.add(lbl_name);con.add(lbl_se*);con.add(lbl_class);con.add(lbl_department);con.add(t*t_num);con.add(t*t_name);con.add(t*t_class);con.add(t*t_department);con.add(btn_rep);con.add(btn_*g);con.add(btn_c*);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(sfzTe*t1) ; con.add(bnameTe*t1) ; con.add(*bTe*t1) ; con.add(dateTe*t1) ; con.add(*b);lbl_title.setBounds(150, 50, 100, 25);lbl_num.setBounds(100, 100, 50, 25);lbl_name.setBounds(100, 150, 50, 25);lbl_se*.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_*g.setBounds(90, 350, 60, 25);btn_c*.setBounds(300, 350, 60, 25);btn_rep.setBounds(160, 350, 60, 25);t*t_num.setBounds(150, 100, 110, 25);t*t_name.setBounds(150, 150, 110, 25);t*t_class.setBounds(150, 250, 110, 25);t*t_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); sfzTe*t1.setBounds(0,450,80,20) ;bnameTe*t1.setBounds(80,450,80,20) ;*b.setBounds(160,450,80,20) ; *bTe*t1.setBounds(240,450,80,20) ; dateTe*t1.setBounds(320,450,80,20) ; tableModel.setColumnIdentifiers(titles); JTable table=new JTable(tableModel); JScrollPane scr=new JScrollPane(table); con.add(scr); scr.setBounds(0, 430, 400,300);rb_man.addItemListener(this);rb_woman.addItemListener(this);btn_add.addActionListener(this);btn_rep.addActionListener(this);btn_*g.addActionListener(this);btn_sh.addActionListener(this);btn_c*.addActionListener(this);setVisible(true);4.2添加功能的实现 定义addDate()方法实现学籍信息的添加,使用getTe*t()方法获取文本框中的学生学籍信息,并使用PrintWriter(new FileWriter( new File(te*t1.t*t),true)类下的println()方法将信息写入文件te*t1.t*t。其中每个学籍信息之间用|隔开,并换行保存以方便信息的的读取和查询。添加成功之后执行setTe*t()方法使各个文本框中的信息为空以方便其他功能的实现。以下为具体的代码:public void addDate()String se* = null;if(rb_man.isSelected()se*=rb_man.getTe*t(); else se*=rb_woman.getTe*t(); JOptionPane.showMessageDialog(null, *: + t*t_num.getTe*t()+ n*: + t*t_name.getTe*t()+n性别+se* + n班级:+ t*t_class.getTe*t() + n系别: + t*t_department.getTe*t(); PrintWriter mm = null;String fs =t*t_num.getTe*t()+|+t*t_name.getTe*t()+|+se*+|+t*t_class.getTe*t()+|+t*t_department.getTe*t();try mm = new PrintWriter(new FileWriter( new File(te*t1.t*t),true);mm.println(fs); catch (IOE*ception e1) e1.printStackTrace(); mm.close();JOptionPane.showMessageDialog(null, 添加成功, 温馨提示, JOptionPane.INFORMATION_MESSAGE); t*t_num.setTe*t(null);t*t_name.setTe*t(null);t*t_class.setTe*t(null);t*t_department.setTe*t(null);bg.remove(rb_man);bg.remove(rb_woman);rb_man.setSelected(false);rb_woman.setSelected(false);4.3重置功能的实现使用setTe*t()方法使各个文本框中的信息为空,使用JRadioButton 类下的remove()和setSelected(flase)方法使性别单项选择按钮置为未被选定状态。publicvoid repDate()t*t_num.setTe*t(null);t*t_name.setTe*t(null);t*t_class.setTe*t(null);t*t_department.setTe*t(null);bg.remove(rb_man);bg.remove(rb_woman);rb_man.setSelected(false);rb_woman.setSelected(false);bg.add(rb_man);bg.add(rb_woman);sfzTe*t1.setTe*t(); bnameTe*t1.setTe*t(); dateTe*t1.setTe*t(); *b.setTe*t(); *bTe*t1.setTe*t(); infoLab.setTe*t(学生信息);4.4查询功能的实现定义查询方法实现查询功能,首先使用equals方法进展判别*输入区文本框中的内容是否为空,为空的时候则提示用回输入*进展查询,不为空使用类BufferedReader下的readLine()方法正行读取文件te*t1.t*t中的内容,使用类StringTokenizer对读取的整行数据以|进展分割,每个分割点的内容赋值给String类型的num,name,se*,grade,*ibie。再次使用equal方法判断*输入文本框中的内容是否和num一样,假设一样则依次使用setTe*t()方法将学籍信息显示区的文本框内容设置为所查找的文件数据。其中包括文件的异常处理。以下为具体代码:public void CheckDate()if (t*t_num.getTe*t().toString().equals()JOptionPane.showMessageDialog(null, 请输入*, 温馨提示, JOptionPane.INFORMATION_MESSAGE); try BufferedReader in = new BufferedReader(new FileReader(te*t1.t*t); String s;while(s=in.readLine()!=null) StringTokenizer t=new StringTokenizer(s,|); num=t.ne*tToken(); name=t.ne*tToken(); se*=t.ne*tToken(); grade =t.ne*tToken(); *ibie =t.ne*tToken();if(num.equals(t*t_num.getTe*t() sfzTe*t1.setTe*t(num); bnameTe*t1.setTe*t(name); dateTe*t1.setTe*t(*ibie); *b.setTe*t(se*); *bTe*t1.setTe*t(grade); infoLab.setTe*t(查询成功!); catch (IOE*ception e) e.printStackTrace(); 删除功能的实现删除学籍信息时用户只需输入学生的*即可删除文本文件中的该生的学籍信息,其实现是基于查询功能,首先是查询文本文件中的数据,如果输入的*和查询到的信息一样时,提示用户是否要删除该生学籍信息,如果选择是(Y),则删除该学生的所有信息。在实现删除功能时,本系统采用缓冲流StringBufferbuf的相关特性,在信息匹配成功之后,使用readLine()方法自动查找到该学籍信息在文本文件中所在的行,将该行之前的内容使用append()方法追加到缓冲流buf中,而该行数据则设置为空追加至buf中,该行之后的内容则正常追加至buf中,然后再写入文本文件te*t1.t*t中,其中也包括对文件读取写入的异常的处理,从而实现了信息的删除。以下为具体代码:public void deleteDate()if(rb_man.isSelected()se*=rb_man.getTe*t(); else se*=rb_woman.getTe*t(); 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 FileReader(te*t1.t*t); String s; while(s=in.readLine()!=null) StringTokenizer t=new StringTokenizer(s,|); num=t.ne*tToken(); name=t.ne*tToken(); se*=t.ne*tToken(); grade =t.ne*tToken(); *ibie =t.ne*tToken(); if(num.equals(t*t_num.getTe*t() oldStr = num +|+name+|+se*+|+grade+|+ *ibie; catch (IOE*ception e) try File file = new File(te*t1.t*t); 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 = 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 (IOE*ception e) e.printStackTrace(); JOptionPane.showMessageDialog(null, 删除成功, 温馨提示, JOptionPane.INFORMATION_MESSAGE); t*t_num.setTe*t(null); t*t_name.setTe*t(null); t*t_class.setTe*t(null); t*t_department.setTe*t(null); bg.remove(rb_man); bg.remove(rb_woman); rb_man.setSelected(false); rb_woman.setSelected(false); else if(ok=JOptionPane.NO_OPTION) 4.6修改功能的实现修改学籍信息和删除功能实现方法类似,只是在修改的具体过程有些差异,修改学籍信息时需要用户输入完整的学籍信息,点击修改按钮,系统弹出对话框提示是否要删除学生学籍信息,点击是(Y)进展修改学籍信息,首先也是对文本文件的读取和信息匹配检测,以*为标识进展匹配检测。假设*一样,使用readLine()方法自动查找到该学籍信息在文本文件中所在的行,将该行之前的内容使用append()方法追加到缓冲流buf中,而该行数据则设置为从文本框中获取的内容追加至buf中,该行之后的内容则正常追加至buf中,然后再写入文本文件te*t1.t*t中,其中也包括对文件读取写入的异常的处理,从而实现了信息的修改。以下为具体代码:public void editData()if(rb_man.isSelected()se*=rb_man.getTe*t(); else se*=rb_woman.getTe*t(); 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(te*t1.t*t); String s; while(s=in.readLine()!=null) StringTokenizer t=new StringTokenizer(s,|); num=t.ne*tToken(); name=t.ne*tToken(); se*=t.ne*tToken(); grade =t.ne*tToken(); *ibie =t.ne*tToken(); if(num.equals(t*t_num.getTe*t() oldStr = num +|+name+|+se*+|+grade+|+ *ibie; catch (IOE*ception e) e.printStackTrace(); try File file = new File(te*t1.t*t); 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 = st.readLine() != null) buf = buf.append(s); buf = buf.append(n); buf = buf.append(t*t_num.getTe*t()+|+t*t_name.getTe*t()+|+se*+|+t*t_class.getTe*t()+|+t*t_department.getTe*t(); st.close(); PrintWriter pw = new PrintWriter(new FileOutputStream(file); pw.println(buf.toString().toCharArray(); pw.flush(); pw.close(); catch (IOE*ception e) e.printStackTrace(); JOptionPane.showMessageDialog(null, 修改成功, 温馨提示, JOptionPane.INFORMATION_MESSAGE); t*t_num.setTe*t(null); t*t_name.setTe*t(null); t*t_class.setTe*t(null); t*t_department.setTe*t(null); bg.remove(rb_man); bg.remove(rb_woman); infoLab.setTe*t(学生信息); rb_man.setSelected(false); rb_woman.setSelected(false); else if(ok=JOptionPane.NO_OPTION) 4.7系统的运行:编写主函数,创立AddStudent类add_student。以下为主函数代码:publicclass AddStudentInformation publicstaticvoid main(String args) throws IOE*ception AddStudent add_student = new AddStudent(学生学籍系统);add_student.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE);五、设计总结我们刚学习java这门课程,对专业的java编程知识并未有深入的学习和探索。但是当我们查找过一些书籍资料后,在教师的不遗余力的指导下我们还是把课程设计题目顺利的完成了。通过此次学生学籍管理系统的设计,使我们对java编程语言有了更深层次的了解。不过在编写的过程中也存在一些问题,例如在选择适宜的方法实现修改和删除功能的时候,由于对数组的理解还不能满足当前的编程需要,并未选择更加简单的数组来处理数据,以至于当删除指定内容后在文本文件中留有空行,从而导致了在接下来的查询异常和再次修改和删除功能无法正常实现,还需人工删除掉文本文件中的空行以保证程序的正常运行。我们也可以选用其他的更加方便的处理方法使得程序更加优化和简洁。书山有路勤为径,学海无涯苦作舟,我们现今所学的知识还远远不够,在今后的学习过程中我们要进一步学习java的更多的知识,此次课程设计不仅锻炼了我们独立思考和团队合作的能力,而且提高了我们动手的能力。参考文献1美Cay S.Horstmann、Gary Cornell叶乃文、邝劲筠 等译.JAVA2 核心技术卷M.第七版.机械工业,20062 龚永罡、陈昕.Java程序设计M.清华大学,20213 *兆宏、*莉、陈建、罗频捷.Java语言程序设计案例教程M.清华大学,20214 王舜燕、钟珞.Java编程方法学M.邮电大学,2021. 优选-
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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