版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计(论文)任务书学院理学院专 业信息与计算科学学生姓名许岩班级学号0809010214课程名称Java程序设计课程设计课程设计(论文)题目学生学籍管理系统设计题目:学生学籍管理系统,用java语言编程知识和Eclipse软件实现学生学籍管理系统程序。设计目的:1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3)培养学生在项目开发中的团队合作精神、创新意识及能力。计划与进度安排:周一全天:设计解决问
2、题方法、周三14节;调试程序周一全天 :调试程序周三14节:完成论文、答辩。成绩:指导教师(签字): 2010年7月8日 专业负责人(签字):2010年7月18日主管院长(签字): 2010年7月19日摘要Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。本设计可以帮助同学掌握和应运所学的面向对象程序设计学生学籍信息管理系统的编程内容,培养同学们建立对象模型,处理对象和对象集关系和对图形用回界面设计编程以及文件和流的编程问题的能力,训练同学为解决实际问题而创建较完整的简单面向对象和管理系统编程应运程序的独立编程能力.本设计是一个常见的学生学籍管理
3、系统应运程序.系统实现的功能:界面操作实现学生学籍信息的添加、删除、查询、修改功能,在文本文件中的的信息的动态处理。关键词:学生学籍管理系统;图形用户界面设计;文件和流;java目 录一 设计目的1二 设计问题1三 概要设计13.1 主程序面板设计23.2 功能组件的功能实现33. 2.1添加学生信息33.2.2查询学生信息43.2.3修改学生信息43.2.4删除学生信息53.2.5重置学生信息5四 详细设计54.1图形用户界面设计54.2添加功能的实现94.3重置功能的实现104.4查询功能的实现104.5删除功能的实现124.6修改功能的实现154.7系统的运行18五 设计总结18参考文献
4、19致谢19学生学籍管理系统一、设计目的随着现代社会的快速发展,我们已进入信息化时代,管理系统在人们的生活中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方面。为了适应时代的发展,本次课程设计的主要任务是设计一个学生学籍管理系统并完成一些基本操作。其目的是:(1) 运用已学的java知识编一些简单使用的程序,通过本课程设计使我们加深理解、巩固课堂理论知识和实验知识;(2) 使我们初步具备综合运用所学Java语言基础知识,面向对象程序设计的基本思想、方法与技术,用户界面设计编程和文件编程技术等开发简单应用系统的基本能力;(3) 使理论和实际相结合,真正做到学以致用,并适应时代发展的潮流。
5、二、设计问题学生学籍管理系统要求完成:(1) 学生学籍信息的添加、删除、查询、修改功能(2) 使用界面操作(3) 使用文件完成首先设计面板,然后往面板里添加组件,点击各个组件来实现要求的对学生学籍信息的添加、删除、查询、修改功能。三、概要设计学生信息管理系统的程序文件为AddStudentInformation.java,在AddStudentInformation.java包含名为AddStudent的类。其主要功能为构成学生信息管理系统的主体框架,实现框架上各个组件的事件侦听。主要包括2个模块:图形用户界面的构建:组件监听事件的实现。用例图1表示如下学生信息录入信息添加信息删除信息查询信息
6、修改添加信息重置学籍信息数据文件学生学籍信息显示例图13.1、主程序面板设计:设计主面板如图所示,主面板分为学籍信息输入区、功能操作区和学籍信息显示区。在学生信息输入区里分别有学号、姓名、性别、班级、系别等信息的输入文本框,其数据类型均置为String类型。在功能操作区里有五个按钮分别为:添加、修改、重置、删除、查询。分别实现对文本文件中的的学生信息数据进行添加、修改、删除、查询。其中重置功能按钮为对主程序界面中的信息输入区和信息显示区的文本框中的内容进行清除操作。在学籍信息显示区里使用DefaultTableModel tableModel=new DefaultTableModel();
7、String titles="学号","姓名", "性别","班级","系别" 定义五个titles用来学籍信息的显示。主程序面板如例图2所示。4例图2学籍信息输入学籍信息显示功能操作 3.2、功能组件的功能实现:3.2.1添加学生信息在文本框中输入学生信息包括学号、姓名、性别、班级、系别,点击添加按钮弹出对话框如图。该学生信息已成功添加至文件。 如例图3,4例图3例图43.2.2查询学生信息在学号文本框里输入想要查询的学号0809010214,在学生信息显示栏显示信息。如例图5:例图53.2.
8、3修改学生信息在学生信息输入区输入完整的学生信息,点击修改按钮弹出如下对话框,点击是(Y)按钮,程序自动修改文本文件中的学生信息,如例图6,7。例图6例图7打开text1.txt文件,查找所修改内容,成功修改内容,再查询学号为08090104的学生信息为如例图8例图8说明信息修改成功。3.2.4删除学生信息只需在信息输入区输入所要删除的学生信息的学号,点击删除按钮弹出如下对话框例图9点击是(Y)按钮,程序进行执行删除功能,并弹出如下对话框,如例图10例图103.2.5重置信息点击重置按钮,学籍信息输入区和学籍信息显示区的文本框中的内容都设置为空。四、详细设计4.1图形用户界面设计定义AddSt
9、udent类继承JFrame类使用ActionListener, ItemListener接口实现对事件的监听。以下为用户界面的程序代码及分析:定义String类型的num,name,grade,sex,xibie,oldStr六个变量;在本系统中默认学籍信息中的学号为学生信息的唯一可区分标识。删除、查询和修改时均以学号来进行信息的检索和匹配检测。使用JLabel标签类定义lbl_title lbl_num lbl_name lbl_sex lbl_class lbl_department;使用JTextField类创建文本框用以学籍信息的输入和显示。使用JButton类创建btn_rep b
10、tn_xg btn_cx btn_sh btn_add功能按钮。使用addItemListener() 和addActionListener()方法功能按钮事件进行监听。使用JRadioButton类创建rb_man rb_woman用以学生学籍信息性别的选择。使用DefaultTableModel类定义五个titles用来学籍信息的显示。使用Container容器类,并使用add()方法添加组件到容器中。使用setBounds()方法对每个组件进行位置的设置,并使界面达到最优化。使用setVisible(true)使界面显示各个组件。class AddStudent extends JFra
11、me 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 JLab
12、el("班级:");JLabel 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 JT
13、extField() ;JTextField txt_name = 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 JBu
14、tton("删除");JButton btn_add = new JButton("添加");JRadioButton rb_man = new JRadioButton("男");JRadioButton rb_woman = new JRadioButton("女"); DefaultTableModel tableModel=new DefaultTableModel(); String titles="学号","姓名", "性别","班级
15、","系别" 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(lb
16、l_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(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.ad
17、d(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.setBounds(100, 150, 50, 25);lbl_sex.setBounds(100, 200, 50, 25);lbl_class.setBounds(100, 250, 50, 25);lbl_depar
18、tment.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(160, 350, 60, 25);txt_num.setBounds(150, 100, 110, 25);txt_name.setBounds(150, 150, 110, 25);txt_class.setBou
19、nds(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(0,450,80,20) ;bnameText1.setBounds(80,450,80,20) ;xb.setBounds(160,450,80,20) ; xbText1.setBounds(240,450,80,
20、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, 430, 400,300);rb_man.addItemListener(this);rb_woman.addItemListener(this);btn_add.addActionListener(this);bt
21、n_rep.addActionListener(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(); JOptionPane.showMessageDialog(null, "学号:" + txt_num.getText()+ "n姓名:" + txt_name.get
23、Text()+"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 = ne
24、w PrintWriter(new FileWriter( 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
25、.setText(null);txt_department.setText(null);bg.remove(rb_man);bg.remove(rb_woman);rb_man.setSelected(false);rb_woman.setSelected(false);4.3重置功能的实现使用setText()方法使各个文本框中的信息为空,使用JRadioButton 类下的remove()和setSelected(flase)方法使性别单选按钮置为未被选定状态。public void repDate()txt_num.setText(null);txt_name.setText(null)
26、;txt_class.setText(null);txt_department.setText(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);sfzText1.setText(""); bnameText1.setText(""); dateText1.setText(""); xb.setText(""
27、); xbText1.setText(""); infoLab.setText("学生信息");4.4查询功能的实现定义查询方法实现查询功能,首先使用equals方法进行判别学号输入区文本框中的内容是否为空,为空的时候则提示用回输入学号进行查询,不为空使用类BufferedReader下的readLine()方法正行读取文件text1.txt中的内容, 使用类StringTokenizer对读取的整行数据以“|“进行分割,每个分割点的内容赋值给String类型的num,name,sex,grade,xibie。再次使用equal方法判断学号输入文本框中的
28、内容是否和num相同,若相同则依次使用setText()方法将学籍信息显示区的文本框内容设置为所查找的文件数据。其中包括文件的异常处理。以下为具体代码:public void CheckDate()if (txt_num.getText().toString().equals("")JOptionPane.showMessageDialog(null, "请输入学号", "温馨提示", JOptionPane.INFORMATION_MESSAGE); try BufferedReader in = new BufferedReade
29、r(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(); xibie =t.nextToken();if(num.equals(txt_num.getText() sfzText1.setText(num); bnameText
30、1.setText(name); dateText1.setText(xibie); xb.setText(sex); xbText1.setText(grade); infoLab.setText("查询成功!"); catch (IOException e) e.printStackTrace(); 4.5删除功能的实现删除学籍信息时用户只需输入学生的学号即可删除文本文件中的该生的学籍信息,其实现是基于查询功能,首先是查询文本文件中的数据,如果输入的学号和查询到的信息相同时,提示用户是否要删除该生学籍信息,如果选择是(Y),则删除该学生的所有信息。在实现删除功能时,本系
31、统采用缓冲流StringBufferbuf的相关特性,在信息匹配成功之后,使用readLine()方法自动查找到该学籍信息在文本文件中所在的行,将该行之前的内容使用append()方法追加到缓冲流buf中,而该行数据则设置为空追加至buf中,该行之后的内容则正常追加至buf中,然后再写入文本文件text1.txt中,其中也包括对文件读取写入的异常的处理,从而实现了信息的删除。以下为具体代码:public void deleteDate()if(rb_man.isSelected()sex=rb_man.getText(); else sex=rb_woman.getText(); String
32、 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; wh
33、ile(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+"|"
34、;+ xibie; catch (IOException e) 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+)
35、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.clo
36、se(); 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_
37、man.setSelected(false); rb_woman.setSelected(false); else if(ok=JOptionPane.NO_OPTION) 4.6修改功能的实现修改学籍信息和删除功能实现方法类似,只是在修改的具体过程有些差异,修改学籍信息时需要用户输入完整的学籍信息,点击修改按钮,系统弹出对话框提示是否要删除学生学籍信息,点击是(Y)进行修改学籍信息,首先也是对文本文件的读取和信息匹配检测,以学号为标识进行匹配检测。若学号相同,使用readLine()方法自动查找到该学籍信息在文本文件中所在的行,将该行之前的内容使用append()方法追加到缓冲流buf中,而
38、该行数据则设置为从文本框中获取的内容追加至buf中,该行之后的内容则正常追加至buf中,然后再写入文本文件text1.txt中,其中也包括对文件读取写入的异常的处理,从而实现了信息的修改。以下为具体代码:public void editData()if(rb_man.isSelected()sex=rb_man.getText(); else sex=rb_woman.getText(); String m="确定要修改该学生的记录吗?" int ok=JOptionPane.showConfirmDialog(null,m,"确认",JOptionPa
39、ne.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.readLine()!=null) StringTokenizer t=new StringTokenizer(s,"|"); num=t.nextToken(); name=t.nextToken(); sex=t.
40、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("text1.txt"); BufferedReader st = new Bu
41、fferedReader(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)
42、; 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 (IOExc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长期汽车销售代理合同
- 牛犊销售协议范本
- 农产品订购配送合同
- 二零二四年度机场航站楼标识标牌制作及安装合同
- 工厂消除浪费
- 手术室核查制度
- 二零二四年服装设计生产承包合同
- 2024年度专利许可与实施合同.3篇
- 2024年度环保新材料研发合同
- 二零二四年度代理合同代理的范围和代理费的计算
- 2022-2023学年浙江省湖州市高二年级上册学期期末数学试题【含答案】
- 锂电池运输规范说明
- DBJ51∕T 081-2017 四川省城镇二次供水运行管理标准
- 《美丽中国是我家》 课件
- 110KV电缆敷设专项施工方案方案
- 《新时代劳动教育100问》读书笔记思维导图
- 仪表“三查四定”检查清单
- GB/T 7284-2016框架木箱
- 电视画面编辑(本科)王晓红课件
- 2023年西藏开发投资集团有限公司招聘笔试题库及答案解析
- 神秘的虚拟货币-比特币课件
评论
0/150
提交评论