java课程方案设计书学生学籍管理系统_第1页
java课程方案设计书学生学籍管理系统_第2页
免费预览已结束,剩余21页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、封面作者:PanHonPanHon gliaglia ngng仅供个人学习课程设计(论文)任务书学院理学院专业信息与计算科学学生姓名许岩班级学号0809010214课程名称Java 程序设计课程设计课程设计(论文)题目学生学籍管理系统设计题目:学生学籍管理系统,用 java 语言编程知识和 Eclipse 软件实现学生学籍管理系 统程序。设计目的:1) 复习、巩固 Java 语言的基础知识,进 步加深对 Java 语言的理解和掌 握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的 理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提 高学生适应实际,实践编程

2、的能力;3)培养学生在工程开发中的团队合作精神、创新意识及能力。计划与进度安排:周一全天:设计解决问题方法、周三 14 节;调试程序周一全天:调试程序周三 14 节:完成论文、答辩。成绩:指导教师(签字):2010 年 7 月 8 日专业负责人(签字):2010 年 7 月 18 日主管院长(签字):2010 年 7 月 19 日摘要Java 语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。本设计可以帮助同学掌握和应运所学的面向 对象程序设计学生学籍信息管理系统的编程内容,培养同学们建立对象模型,处理 对象和对象集关系和对图形用回界面设计编程以及文件和

3、流的编程问题的能力,训练同学为解决实际问题而创建较完整的简单面向对象和管理系统编程应运程 序的独立编程能力 .本设计是一个常见的学生学籍管理系统应运程序 . 系统实现的功能 :界面操作实现学生学籍信息的添加、删除、查询、修改功能,在文本文件中 的的信息的动态处理。关键词:学生学籍管理系统;图形用户界面设计;文件和流; java目录一设计目的. 1二设计问题. 1三概要设计. 13.1主程序面板设计.23.2功能组件的功能实现. 添加学生信息 ..2 查询学生信息 ..3 修改学生信息 ..4 删除学生信息.53.2.53.

4、2.5 重置学生信息 .5四详细设计. 54.1图形用户界面设计.54.2添加功能的实现.94.3重置功能的实现 .104.4查询功能的实现 .104.5删除功能的实现 .124.6修改功能的实现 .154.7系统的运行.18五设计总结. 18参考文献. 19致谢19学生学籍管理系统、设计目的随着现代社会的快速发展,我们已进入信息化时代,管理系统在人们 的生活中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方 面。为了适应时代的发展,本次课程设计的主要任务是设计一个学生学籍 管理系统并完成一些基本操作。其目的是:(1) 运用已学的 java 知识编一些简单使用的程序,通过本课程设计使我

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

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

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

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

9、输入所要删除的学生信息的学号,点击删除按钮弹出如下 对话框例图 9 9点击是(Y)按钮,程序进行执行删除功能,并弹出如下对话框,如例图10例图 10103.2.5 重置信息 点击重置按钮,学籍信息输入区和学籍信息显示区的文本框中的内容都设置 为空。四、详细设计4.1 图形用户界面设计定义 AddStudent 类继承 JFrame 类使用ActionListener, ItemListener接口实 现对事件的监听。以下为用户界面的程序代码及分析:定义 String 类型的 num,name,grade,sex,xibie,oldStr 六个变量;在本系统中 默认学籍信息中的学号为学生信息的唯

10、一可区分标识。删除、查询和修改时均 以学号来进行信息的检索和匹配检测。使 用 JLabel 标 签 类 定 义 lbl_title lbl_num lbl_name lbl_sex lbl_classlbl_department ;使用 JTextField 类创建文本框用以学籍信息的输入和显示。使用 JButton 类创建 btn_rep btn_xg btn_cx btn_sh btn_add 功能按钮。 使用addItemListener() 和 addActionListener() 方法功能按钮事件进行监听。 使用JRadioButton 类创建 rb_man rb_woman 用以

11、学生学籍信息性别的选择。 使用DefaultTableModel 类定义五个 titles 用来学籍信息的显示。使用 Container 容器类,并使用 add() 方法添加组件到容器中。使用 setBounds() 方法对每个组件进行位置的设置,并使界面达到最优化。 使用setVisible( true ) 使界面显示各个组件。classAddStudent extendsJFrameimplementsActionListener, ItemListener publicString num,name,grade,sex,xibie,oldStr。JLabel lbl_title = ne

12、w JLabef 学生信息)。JLabel lbl_num = new JLabelf 学号:)。JLabel lbl_name = new JLabef 姓名:)。JLabel lbl_sex = new JLabel(性别:)。JLabel lbl_class = new JLabel(班级:)。JLabel lbl_department = new JLabelf 系别:)。JTextField txt_num = new JTextField()。JTextField sfzText1 = new JTextField() 。JTextField bnameText1= new JTe

13、xtField() 。JTextField xbText1 = new JTextField() 。JTextField dateText1 = new JTextField() 。JTextField xb = new JTextField() 。JTextField txt_name = new JTextField(11)。JTextField txt_class = new JTextField(11)。JTextField txt_department = new JTextField()。JButton btn_rep = new JButto n(” 重置)。JButton bt

14、n_xg = new JButto n(” 修改)。JButton btn_cx = new JButto n(” 查询)。JButton btn_sh = new JButto n(删除)。JButton btn_add = new JButto n(” 添加)。JRadioButton rb_man = new JRadioButto n( 男)。JRadioButton rb_woman = new JRadioButto n( 女)。DefaultTableModel tableModel=new DefaultTableModel()。String titles=学号,姓名,性别,班

15、级,系别。String a,b,c,d,f。private JLabel infoLab = new JLabelf 学生信息管理)。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_sex)。 c

16、on.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(btn_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

17、(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.setBounds(100, 150, 50, 25。) lbl_sex.setBounds(100, 200, 50, 25。)lbl_class.setBounds(100, 250, 50, 25。) lbl_department.setBounds(

18、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(160, 350, 60, 25。)txt_num.setBounds(150, 100, 110, 25。) txt_name.setBounds(150, 150, 110, 25。)txt_class.setBounds(150, 250,

19、 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(0,450,80,20)。bnameText1.setBounds(80,450,80,20)。xb.setBounds(160,450,80,20)。 xbText1.setBounds(240,450,80,20)。dateText1.se

20、tBounds(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

21、(this)。btn_xg.addActionListener(this)。btn_sh.addActionListener(this)。 btn_cx.addActionListener(this)。setVisible(true)。4.2 添加功能的实现定义 addDate() 方法实现学籍信息的添加,使用 getText() 方法获取文本框中的 学生学籍信息, 并使用 PrintWriter(new FileWriter( new File(text1.txt),true) 类下 的 println()方法将信息写入文件 text1.txt 。其中每个学籍信息之间用 | 隔 开,并换行保

22、存以方便信息的的读取和查询。添加成功之后执行 setText() 方 法使各个文本框中的信息为空以方便其他功能的实现。以下为具体的代码: public void addDate()String sex = null。if(rb_man.isSelected()sex=rb_man.getText()。else sex=rb_woman.getText()。JOptio nPan e.showMessageDialog( null,学号:+ txt_num.getText()+n 姓名:+ txt_name.getText()+n 性别+sex + n 班级:+ txt_class.getTex

23、t() + n 系别 : + txt_department.getText()。PrintWriter mm = null 。String=txt_num.getText()+|+txt_name.getText()+|+sex+|+txt_class.getText()+|+txt_department.getText()。try mm = new PrintWriter(new FileWriter( newFile(text1.txt),true) 。mm.println(fs) 。 catch (IOException e1) e1.printStackTrace()。mm.close

24、()。JOptionPane.showMessageDialog(null, 添 加 成 功 , 温 馨 提 示 ,JOptionPane.INFORMATION_MESSAGE) 。txt_num.setText(null)。txt_name.setText(null)。txt_class.setText(null)。txt_department.setText(null)。fsbg.remove(rb_man)。bg.remove(rb_woman)。rb_man.setSelected(false。)rb_woman.setSelected(false。)4.3 重置功能的实现使用 se

25、tText()方法使各个文本框中的信息为空,使用JRadioButton 类下的remove()和 setSelected(flase 方法使性别单选按钮置为未被选定状态。publicvoid repDate()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.setSelectedf(alse)。rb_woman.setSelectedf(alse)。bg.a

26、dd(rb_man)。 bg.add(rb_woman)。sfzText1.setText( )。 bnameText1.setText( )。 dateText1.setText( )。xb.setText()。 xbText1.setText()。infoLab.setText( 学生信息 )。4.4 查询功能的实现定义查询方法实现查询功能,首先使用 equals 方法进行判别学号输入区文 本框中的内容是否为空,为空的时候则提示用回输入学号进行查询,不为空使 用类BufferedReader 下的 readLine() 方法正行读取文件 text1.txt 中的内 容,使用类StringT

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

28、ionPane.INFORMATION_MESSAGE)。try BufferedReader in = new BufferedReader(new FileReader(text1.txt)。) Strings。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.ge

29、tText()sfzText1.setText(num)。bnameText1.setText(name。)dateText1.setText(xibie。)xb.setText(sex。 ) xbText1.setText(grade。 )infoLab.setText(查询成功!”)。 catch (IOException e) e.printStackTrace()。4.5删除功能的实现删除学籍信息时用户只需输入学生的学号即可删除文本文件中的该生的学 籍信息,其实现是基于查询功能,首先是查询文本文件中的数据,如果输入的 学号和查询到的信息相同时,提示用户是否要删除该生学籍信息,如果选择是

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

31、e 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 FileReader(text1.txt)。)String s。whil

32、e(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) try File file = new File(text1.txt) 。

33、BufferedReader st = new BufferedReader(newInputStreamReader(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.appe

34、nd(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, 删除成 功, 温馨 提示,JOptionPane.INFORMATION_MESSAGE) 。t

35、xt_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)4.6 修改功能的实现修改学籍信息和删除功能实现方法类似,只是在修改的具体过程有些差异,修改学籍信息时需要用户输入完整的学籍信息,点击修改按钮,系统弹出

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

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

38、Line()!=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.printStackTrace()。try File file = new File(te

39、xt1.txt) 。BufferedReader st = new BufferedReader(newInputStreamReader(new FileInputStream(file)。StringBuffer buf = new StringBuffer() 。String s=null。for (int j(sst.readLine() != null& !s.equals(oldStr) 。 j+) buf = buf.append(s)。buf = buf.append(n)。while (s = st.readLine() != null) buf = buf.appe

40、nd(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.flush()。pw.close()。catch (IOException e) e.prin

41、tStackTrace(。)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)。in foLab.setText(” 学生信息)。 rb_man.setSelected(false。)rb_woman.

42、setSelected(false。)else if(ok=JOptionPane.NO_OPTION)4.7 系统的运行:编写主函数,创建 AddStudent 类 add_studen。以下为主函数代码:publicclassAddStudentInformation publicstaticvoidmain(String args) throws IOException AddStudent add_student =new AddStudent(学生学籍系统)。add_student.setDefaultCloseOperation(JFramEe.XIT_ON_CLOSE)。五、设计

43、总结我们刚学习 java 这门课程,对专业的 java 编程知识并未有深入的学习和 探索。但是当我们查找过一些书籍资料后,在老师的不遗余力的指导下我们还 是把课程设计题目顺利的完成了。通过此次学生学籍管理系统的设计,使我们 对 java 编程语言有了更深层次的了解。不过在编写的过程中也存在一些问题, 例如在选择适宜的方法实现修改和删除功能的时候,由于对数组的理解还不能 满足当前的编程需要,并未选择更加简单的数组来处理数据,以至于当删除指 定内容后在文本文件中留有空行,从而导致了在接下来的查询异常和再次修改 和删除功能无法正常实现,还需人工删除掉文本文件中的空行以保证程序的正 常运行。我们也可以选用其他的更加方便的处理方法使得程序更加优化和简 洁。“书山有路勤为径,学海无涯苦作舟”,我们现今所学的知识还远远不 够,在今后的学习过程中我们要进一步学习 java 的更多的知识,此次课程设计 不仅锻炼了我们独立思考和团队合作的能力,而且提高了我们动手的能力。参考文献21(美)Cay S.Horstmanr、Gary Cornell (叶乃文、邝劲筠 等译)JAVA 核心技术卷M.第七版.机械工业出版社,20062

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论