




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、I / 51 文档可自由编辑 JAVA 技术大作业 院 (系) 电气与信息工程学院 专业班级 计算机科学与技术 09-02 学生姓名 桂 林 学号 2008441106 成绩 2011 年 08 月 31 日 II / 51 文档可自由编辑 摘要 随着高校的扩招,大学生的数量也不断的在增加,传统的“一支笔, 一本通讯录”的学籍管理方式也慢慢的无法适应形势的变化。随着信 息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社 会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件 已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市 场的进一步的开拓。软件产业已成为社会信息化
2、进程中的一个战略性 产业。在软件技术的应用中软件的开发技术尤其是应用型软件产品的 开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软 件产品。随着社会的发展,软件也在不断的更新换代。 由于有些学校里对学生的成绩、入学、毕业等的一些繁琐处理都是 通过手工进行记载并进行处理的,对学生数据的处理工作量特别大, 不仅浪费大量的人力物力,而且还很容易出错。如果有这样一套完整 的学籍管理软件,只需点击几下鼠标就可完成所需操作,那样就会大 大的提高教师的工作效率和管理水平。并能进一步提高学校的工作效 率并使学校实施规范化管理。 学生学籍管理系统是一个教育单位不可缺少的部分。它的内容对于 学校的决策
3、者和管理者乃至教师和学生来说都至关重要, 所以学生学 籍管理系统应该能够为用户提供充足的信息和快捷的查询手段。一直 以来人们使用传统人工的方式管理学生工作, 这种管理方式存在着许 多缺点, 如: 效率低、保密性差, 另外时间一长, 将产生大量的冗余 文件和数据, 这给查找、更新和维护工作都带来了很大的困难。鉴于 学生学籍管理中存在的诸多问题, 我们在此次课程设计中以学生学籍 管理系统为研究课题,对此系统进行了全面的设计。 关键词 查询,学籍管理,学生信息 文档可自由编辑 目 录 摘要. 目 录. 1 设计目的与内容.1 1.1 课程设计目的.1 1.2 课程设计内容.1 2 具体要求.2 2.
4、1 设计要求.2 2.2 开发环境.2 3 总体设计思路.3 3.1 系统的功能模块划分.3 3.2 系统总体功能框图.3 4 详细设计.4 4.1 程序流程图如下 .4 4.2 主界面函数的设计 .4 4.3 录入界面设计 .5 4.5 修改界面和函数的设计 .8 4.6 删除界面和函数的设计.12 5 功能调试与测试.15 5.1 主界面和函数的测试 .15 5.2 学生信息的录入测试: .16 5.3 学生信息的查询测试: .16 5.4 修改学生信息的测试: .17 5.5 删除学生信息的测试: .18 6 总结.19 致谢.20 参考文献.21 附源程序.23 1 / 51 文档可自
5、由编辑 1 设计目的与内容 1.1 课程设计目的 通过设计图形用户界面的学籍管理系统,提高学生 Java 语言的 综合运用。Java 语言是从事软件开发的一门必修的专业基础课,这 次的课程设计目的将 Java 的知识点系统的结合起来,理解并加深对 教师所授内容的理解和掌握,掌握其开发技巧,为以后从事 Java 程 序开发打下基础。 1.2 课程设计内容 “录入学生基本信息功能的界面。用户可以通过菜单选项让程 序呈现“录入学生基本信息”功能的界面,通过该界面可以录入学 生的学号、姓名、性别、出生日期、专业和照片等信息。 修改学生基本信息功能的界面。用户可以通过菜单选项让程序 呈现“修改学生基本信
6、息”功能的界面,通过该界面可以对已录入 的学生信息进行修改。 查询学生基本信息功能的界面。用户可以通过菜单选项让程序 呈现“查询与打印学生基本信息”功能的界面,通过该界面可以对 已录入的学生信息进行查询。 删除学生基本信息功能的界面。用户可以通过菜单选项让程序 呈现“删除学生基本信息”功能的界面,通过该界面可以删除已录 入的学生信息。 2 / 51 文档可自由编辑 2 具体要求 2.1 设计要求 要求设计出图形用户界面学籍管理系统,实现学生信息的录入、 查询、修改、删除等。 界面要求: a.尽量使用图形界面实现,要符合日常软件使用规范来设计 菜单和界面。 b.若无法实现图形界面,则在命令行方式
7、下也需要提供菜单, 方便用户操作。 其他要求: a. 标识符命名遵循 Windows 命名规范。 b. 能够注意各种异常处理,注重提高程序运行效率。 2.2 开发环境 NetBeans IDE 6.8 并装有 Jdk 的计算机。 3 / 51 文档可自由编辑 3 总体设计思路 3.1 系统的功能模块划分 通过“public class StudentManager extends JFrame implements ActionListener”此类来生成学籍管理系统的主界面再 通过函数 public void actionPerformed(ActionEvent e)来实现对 各个类得调用
8、。如:调用 StudentSituation 类来完成对基本信息录 入;调用 ModifySituation 类来完成对学生基本信息修改;调用 Inquest 类来完成对学生基本信息查询;调用 Delete 类来完成对学 生基本信息删除。 3.2 系统总体功能框图 学籍管理系统 录入系统修改系统删除系统查询系统 4 / 51 文档可自由编辑 3-1 学籍管理系统功能总框图 5 / 51 文档可自由编辑 4 详细设计 4.1 程序流程图如下 登录 主界面函数 菜单选择函数 b) 结束 删除 修改 查询 录入 录入界面 查询界面 修改界面 删除界面 主界面函数 4.2 主界面函数的设计 主界面主要
9、是用来调用程序中的给个类来实现对学生信息的管 理和一个欢迎界面的设计以及菜单项的内容。 主界面主要是通过 StudentManager.StudentManager()函数来实 6 / 51 文档可自由编辑 现一个欢迎界面和菜单选项(包括录入学生基本信息、修改学生基 本信息、查询学生基本信息、删除学生基本信息) ,然后再通过 StudentManager.actionPerformed(ActionEvent)函数来实现对各个 类得调用从而实现对信息的录入、修改、查询、删除等事件的处理。 4.3 录入界面设计 录入信息的界面主要是通过 StudentSituation 类来实现的。其 中通过函
10、数 StudentSituation.StudentSituation(File)来实现界 面的内容。通过函数 StudentSituation.actionPerformed(ActionEvent)来实现具体内容 的录入。具体设计如下: public void actionPerformed(ActionEvent e) if(e.getSource()=录入) String number=; number=学号.getText(); if(number.length()0) try inOne=new FileInputStream(file); inTwo=new ObjectInpu
11、tStream(inOne); 基本信息表=(Hashtable) inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(基本信息表.containsKey(number) String warning=该生基本信息已存在,请到 修改页面修改!; 7 / 51 文档可自由编辑 JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); else String m=基本信息将被录入!; int ok=JOptio
12、nPane.showConfirmDialog(this,m,确认 ,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String name=姓名.getText(); String discipling=专业.getText(); String grade=年级.getText(); String borth=出生.getText(); String sex=null; if(男.isSelected() sex=男.getText(); else sex=女
13、.getText(); 学生=new Student(); 学生.setNumber(number); 学生.setName(name); 学生.setDiscipling(discipling); 学生.setGrade(grade); 学生.setBorth(borth); 学生.setSex(sex); try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,学生); 8 / 51 文档可自由编辑 outTwo.writeObject(基本信息 表); o
14、utTwo.close(); outOne.close(); 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); catch(Exception ee) System.out.println(ee); else String warning=必须要输入学号!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); if(e.getSource()=重置) 学号.setT
15、ext(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); 4.4.4 查询界面函数的设计 查询信息的界面主要是通过 Inquest 类来实现的。其中通过函 数 Inquest.Inquest(JFrame, File)来实现界面的设计和外观。通 过函数 Inquest.actionPerformed(ActionEvent)来实现具体信息的 9 / 51 文档可自由编辑 输出。输出信息具体设计如下: public void actionPerformed(ActionEvent e) 姓
16、名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); if(e.getSource()=查询|e.getSource()=学号) String number=; number=学号.getText(); if(number.length()0) try inOne=new FileInputStream(file); inTwo=new ObjectInputStream(inOne); 基本信息表=(Hashtable) inTwo.readObject(); inOne.close(); inTwo.c
17、lose(); catch(Exception ee) if(基本信息表.containsKey(number) Student stu=(Student)基本信息表. get(number); 姓名.setText(stu.getName(); 专业.setText(stu.getDisciping(); 年级.setText(stu.getGrade(); 出生.setText(stu.getBorth(); if(stu.getSex().equals(男) 男.setSelected(true); else 10 / 51 文档可自由编辑 女.setSelected(true); el
18、se String warning=该学号不存在!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); else String warning=必须要输入学号!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); 4.5 修改界面和函数的设计 修改信息的界面主要是通过 ModifySituation 类来实现的。其 中通过函数 ModifySituation.ModifySituation
19、(File)来实现界面 的设计和外观。通过函数 ModifySituation.actionPerformed(ActionEvent)来实现具体信息 的修改和保存。信息修改的具体设计如下: public void actionPerformed(ActionEvent e) if(e.getSource()=开始修改|e.getSource()=学号) String number=; number=学号.getText(); if(number.length()0) 11 / 51 文档可自由编辑 try inOne=new FileInputStream(file); inTwo=new
20、ObjectInputStream(inOne); 基本信息表=(Hashtable) inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(基本信息表.containsKey(number) 录入修改.setEnabled(true); Student stu=(Student)基本信息表. get(number); 姓名.setText(stu.getName(); 专业.setText(stu.getDisciping(); 年级.setText(stu.getGrade(); 出生.setTex
21、t(stu.getBorth(); if(stu.getSex().equals(男) 男.setSelected(true); else 女.setSelected(true); else 录入修改.setEnabled(false); String warning=该学号不存在!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); 学号.setText(null); 姓名.setText(null); 专业.setText(null); 12 / 51 文档可自由编辑 年级.setTex
22、t(null); 出生.setText(null); else 录入修改.setEnabled(false); String warning=必须要输入学号!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); else if(e.getSource()=录入修改) String number=; number=学
23、号.getText(); if(number.length()0) try inOne=new FileInputStream(file); inTwo=new ObjectInputStream(inOne); 基本信息表=(Hashtable) inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(基本信息表.containsKey(number) String question=该生基本信息已存在, 13 / 51 文档可自由编辑 您想修改他(她)的基本信息吗?; JOptionPane.show
24、MessageDialog(this,question,警告 ,JOptionPane.QUESTION_MESSAGE); String m=基本信息将被修改!; int ok=JOptionPane.showConfirmDialog(this,m,确认 ,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String name=姓名.getText(); String discipling=专业.getText(); String grade=年级.getT
25、ext(); String borth=出生.getText(); String sex=null; if(男.isSelected() sex=男.getText(); else sex=女.getText(); Student 学生=new Student(); 学生.setNumber(number); 学生.setName(name); 学生.setDiscipling(discipling); 学生.setGrade(grade); 学生.setBorth(borth); 学生.setSex(sex); try outOne=new FileOutputStream(file); o
26、utTwo=new 14 / 51 文档可自由编辑 ObjectOutputStream(outOne); 基本信息表.put(number,学生); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close(); 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); catch(Exception ee) System.out.println(ee); 录入修改.setEnabled(false); else if
27、(ok=JOptionPane.NO_OPTION) 录入修改.setEnabled(true); else String warning=该学号没有基本信息,不 能修改!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); 录入修改.setEnabled(false); else String warning=必须要输入学号!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); 录入修改
28、.setEnabled(false); 15 / 51 文档可自由编辑 if(e.getSource()=重置) 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); 4.6 删除界面和函数的设计 删除信息的界面主要是通过 Delete 类来实现的。其中通过函数 Delete.Delete(File)来实现界面的设计和外观。通过函数 Delete.actionPerformed(ActionEvent)来实现具体数据的删除和管 理。信息删除的具体设计如下: public
29、 void actionPerformed(ActionEvent e) if(e.getSource()=删除|e.getSource()=学号) String number=; number=学号.getText(); if(number.length()0) try inOne=new FileInputStream(file); inTwo=new ObjectInputStream(inOne); 基本信息表=(Hashtable) inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(基本信
30、息表.containsKey(number) 16 / 51 文档可自由编辑 Student stu=(Student)基本信息表. get(number); 姓名.setText(stu.getName(); 专业.setText(stu.getDisciping(); 年级.setText(stu.getGrade(); 出生.setText(stu.getBorth(); if(stu.getSex().equals(男) 男.setSelected(true); else 女.setSelected(true); String m=确定要删除该学号及全部信息 吗?; int ok=JO
31、ptionPane.showConfirmDialog(this,m,确认 ,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) 基本信息表.remove(number); try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close(); 学号.setText(nul
32、l); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 17 / 51 文档可自由编辑 出生.setText(null); catch(Exception ee) System.out.println(ee); else if(ok=JOptionPane.NO_OPTION) 学号.setText(null); 姓名.setText(null); 专业.setText(null); 年级.setText(null); 出生.setText(null); else String warning=该学号不存在!; JOptionPane
33、.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); else String warning=必须要输入学号!; JOptionPane.showMessageDialog(this,warning,警告 ,JOptionPane.WARNING_MESSAGE); 18 / 51 文档可自由编辑 5 功能调试与测试 5.1 主界面和函数的测试: 图 5.1 主界面函数 19 / 51 文档可自由编辑 5.2 学生信息的录入测试: 图 5.2 录入学生信息 5.3 学生信息的查询测试: 20 / 51 文档可自由编辑
34、 图 5.3 查询信息 5.4 修改学生信息的测试: 图 5.4 修改信息 21 / 51 文档可自由编辑 5.5 删除学生信息的测试: 图 5.5 删除信息 22 / 51 文档可自由编辑 6 总结 这次的课程设计主要有以下几点心得 (1)确定课题后,先将熟悉该课程主要设计的主要目的,熟读设 计要求。 (2)编写程序之前首先要进行总体设计,确定该设计需要由哪几 部分组成,并确定各部分的功能,确定主类。 (3)分析完成之后画出程序流程图,并开始编写程序。在编写程 序的过程中要注意不能将关键字打错,这样的错误不容易查出。 (4)在程序打包时要先给电脑安装 Jdk,若不安装,则在 Dos 环境 下
35、会出现找不到源文件的提示。 这次的课程设计不仅仅巩固了 java 的知识,也让我对编程的步 骤有了新的理解,以前总是先看程序,再理清各部分之间的关系, 最后才会画出程序流程图,这次的课程设计纠正了以前的错误,也 为以后编写 java 程序奠定了一定的基础。 23 / 51 文档可自由编辑 致谢 首先要感谢同学的帮忙,在他们的帮助下我才能完成这次课程设 计。在这次课程设计中我遇到了很多困难,在遇到这些困难的时候, 我觉得很烦,有点想放弃。但我们宿舍的人安慰我说:“加油,努 力就一定能完成的。 ”在他们的鼓励下,我又重新鼓起勇气,继续做 下去,所以我要感谢我们宿舍的舍友。在完成程序的过程中难免会
36、出现好多问题,俗话说:“当局者迷,旁观者清” 。我总是发现不了 自己的错误,然后我就会让同学帮我看看。最后在同学的帮助下终 于把程序做出来了。我对他们深表感谢。我要感谢我们指导老师, 他给我提出了许多宝贵的指导。在他的帮助下我可以把它搞得更加 完美。在这里我感谢每一个帮助过我的人,感谢他们对我的帮助。 同时我还要感谢学校给我们提供优良的上机环境,让我们能够在良 24 / 51 文档可自由编辑 好的环境下完成本次课程设计。 参考文献 1耿祥义,张跃平.Java2 实用教程(第三版)M . 北京:清华大学 出版社,2006 2耿祥义.Java 课程设计(第二版)M . 北京:清华大学出版社, 20
37、04 3张跃平.Java2 实用教程实验指导与习题解答(第二版)M. 北 京:清华大学出版社,2004 25 / 51 文档可自由编辑 附源程序 /*主界面的设计*/ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.Hashtable; public class StudentManager extends JFrame implements ActionListener StudentSituation 基本信息录入=null; Modif
38、ySituation 基本信息修改=null; Inquest 基本信息查询=null; Delete 基本信息删除=null; JMenuBar bar; JMenu fileMenu; JMenuItem 录入,修改,查询,删除; Container con=null; Hashtable 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter; public StudentManager() setTitle(学籍管理系统); 录入=new JMenuItem(录入学生基本信息)
39、; 修改=new JMenuItem(修改学生基本信息); 查询=new JMenuItem(查询学生基本信息); 删除=new JMenuItem(删除学生基本信息); bar=new JMenuBar(); fileMenu=new JMenu(菜单选项); fileMenu.add(录入); 26 / 51 文档可自由编辑 fileMenu.add(修改); fileMenu.add(查询); fileMenu.add(删除); bar.add(fileMenu); setJMenuBar(bar); label=new JLabel(欢迎使用学籍管理系统,JLabel.CENTER);
40、 label.setFont(new Font(TimesRoman,Font.BOLD,24); label.setForeground(Color.red); 基本信息=new Hashtable(); 录入.addActionListener(this); 修改.addActionListener(this); 查询.addActionListener(this); 删除.addActionListener(this); card=new CardLayout(); con=getContentPane(); pCenter=new JPanel(); pCenter.setLayout
41、(card); pCenter.setBackground(Color.green); file=new File(基本信息.txt); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); catch(IOException e) 基本信息录入=new StudentSi
42、tuation(file); 基本信息修改=new ModifySituation(file); 基本信息查询=new Inquest(this,file); 基本信息删除=new Delete(file); pCenter.add(欢迎语界面,label); 27 / 51 文档可自由编辑 pCenter.add(录入界面,基本信息录入); pCenter.add(修改界面,基本信息修改); pCenter.add(删除界面,基本信息删除); con.add(pCenter,BorderLayout.CENTER); con.validate(); addWindowListener(new
43、 WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,420,380); validate(); /*实现对录入、修改、查询与打印、删除等事件处理*/ public void actionPerformed(ActionEvent e) if(e.getSource()=录入) card.show(pCenter,录入界面); else if(e.getSource()=修改) card.show(pCenter,修改界面);
44、 else if(e.getSource()=查询) 基本信息查询.setVisible(true); else if(e.getSource()=删除) card.show(pCenter,删除界面); public static void main(String args) 28 / 51 文档可自由编辑 new StudentManager(); /*学生类的设计*/ /*请实现学生类*/ publicpublic classclass Student implementsimplements java.io.Serializable String number,name,discipling,grade,borth,sex; publicpublic Student() publicpublic voidvoid setNumber(String number) thisthis.number=number; publicpublic String getNumber() returnreturn number; publicpublic voidvoid setName(String name) =name; publ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 在民主生活会上的点评讲话模板
- 海上风电产业分析报告
- 投股协议合同范本
- 农村国有地皮出售合同范本
- 产品期货合同范本
- 中医基础理论模拟试题(附答案)
- 副导演合同范本
- 机械设计模拟习题(含参考答案)
- 一年级语文教研组工作计划
- 农商展期合同范本
- 护理技能培训师竞聘
- 智能交通监控系统运维服务方案(纯方案-)
- 《世界各国简介》课件
- 新质生产力与产品创新
- 能力素质模型的正确打开方式(分享)
- 2024年河北省公务员录用考试《行测》真题及答案解析
- 安保服务行业市场调研分析报告
- 吉林大学《微积分AⅠ》2021-2022学年第一学期期末试卷
- 《建筑工程施工许可管理办法》2021年9月28日修订
- 普通话培训教案1(共5篇)
- 大庆医学高等专科学校单招参考试题库(含答案)
评论
0/150
提交评论