1、班级管理系统一 课程设计目标 本班级管理系统软件关键用于实现用户对学生部分基础信息常见操作,在本系统中定义了对学生基础信息进行添加,删除,查找等多个模块。此系统是一个很方便快捷班级学生信息管理软件,用户能够随心所欲地添加学生信息、查询学生信息、修改学生信息,删除学生信息等等。具体实现要求以下:1)能够实现对班级学生基础资料录入,包含学生学号,姓名,性别,所学专业,家庭住址和出生年月等。2)能够实现对学生基础资料修改。3)依据学号对学生资料进行查询。4)能够删除一些学生资料。二 设计方案1 设计概述 设计一个班级管理系统,能够实现对学生基础资料录入,包含学生学号,姓名,性别,所学专业,家庭住址和
2、出生年月等;能够实现对学生基础资料修改;依据学号对学生资料进行查询;能够删除一些学生资料。2 需求分析2.1 系统结构图依据此次课程设计目标和以上问题描述,把该班级管理系统分为五个模块:录入模块(StudentSituation)、查询模块(Inques)、删除模块(Delete)和修改模块(ModifySituation)。各个模块包含对学生学号,姓名,所学专业,家庭住址,出生日期等信息操作。系统结构图以下:图一 系统结构图2.2 系统关键类定义因为在本班级管理系统中各个模块操作变量和方法大致相同,在程序中,录入模块(StudentSituation)、查询模块(Inques)、删除模块(D
3、elete)和修改模块(ModifySituation)所操作变量全部是学生学号,姓名,性别,所学专业,家庭住址和出生年月等,所以把这四个模块全部定义为主类(StudentManager)子类。在该设计中,因为没有用数据库对用户所录入信息进行存放,所以又定义了录入模块(StudentSituation)一个子类, 该类能够存放用户所输入学生信息,也能够接收用户对信息修改,而当用户删除学生信息时,该子类删除该信息。所以该系统中共有6个java源文件,类之间关键关系以下图所表示:图二 类之间关系图各主类关键作用以下:1).StudentManager.java该java文件类负责创建班级学生管理系
4、统主窗口。该类包含main方法,main方法是程序实施入口,即程序从该类开始实施。2).StudentStituation.java该文件类负责创建班级学生管理系统学生信息录入界面。3).ModifySituation.java该文件类负责创建班级学生管理系统学生基础信息修改界面。4).Inquest.java该文件类负责创建班级学生管理系统学生基础信息查询界面。5).Delete.java该文件类负责创建班级学生管理系统学生信息删除界面。6).Student.java负责创建存放学生信息对象。2.3功效需求 依据上述信息管理系统业务步骤、要求和所要实现目标,我们能够拟出以下需求目标:(1)建
5、立学生档案管理和维护。实现计算机自动化管理体制。(2)建立学生成绩管理机制,在计算机支持下快速完成学生成绩查询和修改。(3)建立课程设置管理,在计算机支持下实现课程添加、删除、修改。(4)建立班级设置管理,在计算机支持下实现班级添加、删除和修改。(5)实现系统权限设置管理,确保系统安全性。依据系统需求分析,得到本系统功效要求以下:(1)班级、课程设置管理:学校教务秘书能够依据本校具体情况在每学期开始时设置所需班级数量和人数。并设置本学期课程。(2)权限管理:为了很好确保系统安全性,学校相关责任人能够设置不一样类型人员权限。(3)学生档案管理:学生档案数量十分庞大,教务管理人员进行新生入学档案录
6、入及更改。其中包含学生个人信息修改。(4)学生成绩管理:教务管理人员能够查询和修改学生历年考试成绩,掌握学生学习情况,作为评定学生素质数据依据。3 具体设计3.1 主类StudentManager.java该java文件类负责创建班级学生管理系统主窗口。该类包含main方法,main方法是程序实施入口,即程序从该类开始实施。在该主类StudentManager.java所包含关键方法和关键组员变量如表1和表2所表示:表1 关键方法名称功效备注StudentManager创建程序主窗口结构方法actionPerformed处理ActionEvent事件接口方法main系统主方法,程序开始行系统主
7、方法表2 关键组员变量组员变量描述变量类型变量名称基础信息录入界面StudentSituation基础信息录入基础信息修改界面ModifySituation基础信息修改基础信息查询界面Inquest基础信息查询基础信息删除界面Delete基础信息删除菜单选项JMenuItem录入,修改,查询,删除存基础信息散表Hashtable基础信息存放散列表文件Filefile3.2 录入界面StudentStituation.java该文件类负责创建班级学生管理系统学生信息录入界面,该界面包含对学生学号,姓名,所学专业,家庭住址,出生日期录入,在该类中定义了两个方法创建学生信息录入界面(StudentS
8、ituation),此方法属于一个结构方法;处理ActionEvent事件(actionPerformed),这是一个接口方法。该类关键组员变量和关键方法如表3和表4所表示:表3 关键组员变量属性描述变量类型变量名称“学生”对象散列表Hashtable基础信息表学生基础信息文本JTextField学号,姓名,所学专业等学生信息对象Student表4 关键方法定义名称功效备注StudentSituation创建学生信息录入面结构方法actionPerformed处理ActionEvent件接口方法3.3 查询界面Inquest.java该文件类负责创建班级学生管理系统学生基础信息查询界面,在该类
9、中所操作数据组员变量和录入界面相同,也包含学生学号,姓名,所学专业,家庭住址,出生日期。在该类中定义了一个结构方法创建查询界面(Inquest),和一个接口方法(actionPerformed)该类关键组员变量和关键方法如表5和表6所表示:表5 关键组员变量属性描述变量类型变量名称存放“学生”对象表Hashtable基础信息表显示学生基础信息文本JTextField学号,姓名,所学专业等表6 关键方法定义名称功效备注Inquest创建查询界面结构方法actionPerformed处理ActionEvent事件接口方法3.4 修改界面ModifySituation.java该文件类负责创建班级学
10、生管理系统学生基础信息修改界面,在该类中能够对各个组员变量进行修改,能够修改学生学号,姓名,所学专业,家庭住址及出生日期,一样在该类中也创建了一个结构方法和接口方法:创建学生信息修改界面(ModifySituation)和处理ActionEvent事件(actionPerform)。关键组员变量如表7所表示,关键方法如表8所表示:表7 关键组员变量描述变量类型变量名称存放“学生”对象散列表Hashtabel基础信息表输入学生基础信息文本条JTextField学号,姓名,所学专业等表8关键方法名称功效备注ModifySituation创建学生信息修改界面结构方法actionPerform处理Ac
11、tionEvent事件接口方法3.5 删除界面Delete.java该文件类负责创建班级学生管理系统学生信息删除界面。当用户要删除某一个学生信息时,输入要删除学生学号,这时系统会提醒用户是否要删除所选择学生信息,删除后在学生信息表中会删除该学生统计。在该类中定义关键组员变量和关键方法如表9和表10所表示:表9 关键组员变量描述变量类型变量名称存放“学生”对象散列Hashtable基础信息表显示学生基础信息文本条JTextField学号,姓名,所学专业等表10 关键方法名称功效备注Delete创建学生信息删除界面结构方法actionPerformed处理ActionEvent接口方法3.6 学生
12、对象Student.java负责创建存放学生信息对象。正如前面所述,在此次课程设计所开发系统中,其它模块所操作组员变量全部存放在学生对象Student.java类中,且该类是StudentSituation类子类,也是主类间接子类,所以该类继承了这两个类组员变量和组员方法。在该类中所定义关键组员变量和关键方法如表11和表12所表示:表11 关键组员变量描述变量类型变量名称学号StringNumber姓名StringName所学专业StringDiscipling家庭住址StringGrade出生StringBorth性别StringSex表12 关键方法名称功效Setnumber设置学号Set
13、number获取学号Setname设置姓名Setname获取姓名setDisciping设置所学专业setDisciping获取所学专业setGrade设置家庭住址setGrade获取家庭住址setBorth设置出生setBorth获取出生setSex设置性别setSex获取性别三 程序运行结果本程序为一简单班级管理系统,功效比较单一,不过基础功效还是实现了,能够对学生基础资料录入,修改,删除和查询。1 主界面窗口程序运行后在主界面窗口上有一个菜单项“菜单选项”,该菜单包含五个下拉菜单:“录入学生基础信息”,“修改学生基础信息”,“查询学生基础信息”,“删除学生基础信息”,“退出系统”。程序运
14、行关键界面图三所表示:图三 系统主窗口2 录入窗口界面 进入主界面窗口后,点击“录入学生基础信息”下拉菜单项,填写完学生基础信息点击录入,在弹出对话框中选择“是”,这么用户就能够录入学生基础信息。具体功效演示以下图四所表示:图四 录入窗口界面3 学生信息修改界面当用户想要修改某一学生基础信息时,输入待修改学生学号,点击开始修改,即可对学生信息中任意一项进行修改。当修改完成时,点击录入修改。在图五所表示对话框中选择“确定”,即可完成对学生信息修改。图五 学生信息修改界面4 学生信息查询界面 当用户想要查询某个学生基础信息时,只需要在查询界面中输入待查询学生学号,点击“查询”即可查询到学生基础信息
15、。具体功效图图六所表示:图六 学生信息查询界面5 学生信息删除界面一样,当用户想要删除某个学生基础信息时,也只需输入待删除学生学号,点击“删除”,在弹出对话框中点击确定,即可完成对学生基础信息删除操作。程序运行界面图七所表示图七 学生信息删除界面四 总结展望这次课程设计作业使我对用Java面向对象语言编程产生了极大爱好。经过这次课程设计也着实让自己感受到了一次编程乐趣,从中也学到了不少知识。因为在本系统包含到数据对象较多,且而因为Java面向对象设计中对异常处理严格要求,所以在此次课程设计中深刻体会到了在程序开发中对问题全方面考虑,假如对某个操作可能出现异常考虑不到,将会使程序运行中出现错误。
16、在该系统中还利用了Java中所提供两个处理图形用户界面类库:java.awt包javax.swing包。在所定义多个模块中全部用到了这两个包,用于设计图形用户界面。经过对图形用户界面设计,对这两个包中标签,文本,框架及容器等类常见方法全部有了比较深刻了解。在这次试验中,对系统中组员变量和组员方法调用也进行了很多个尝试,已经能够相对正确选择适宜参数形式来实现函数之间数据传输交互了,同时也体会到了类继承在程序设计中巨大优势。不过,在用Java开发类似软件时,发觉在图形界面设计方面远没有用VB,VF等开发工具简单。五 各功效模块关键代码import java.awt.*;import java.aw
17、t.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class StudentSituation extends JPanel implements ActionListener Hashtable 基础信息表=null; JTextField 学号,姓名,所学专业,家庭住址,出生日期; JRadioButton 男,女; Student 学生=null; ButtonGroup group=null; JButton 录入,重置; FileInputStream inOne=null; Objec
18、tInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File file=null; public StudentSituation(File file) 学号=new JTextField(10); 姓名=new JTextField(10); 所学专业=new JTextField(10); 家庭住址=new JTextField(10); 出生日期=new JTextField(10); group=new ButtonGroup(); 男=new JRadioButt
19、on(男,true); 女=new JRadioButton(女,false);group.add(男); group.add(女); 录入=new JButton(录入); 重置=new JButton(重置); 录入.addActionListener(this);重置.addActionListener(this); Box box1=Box.createHorizontalBox(); box1.add(new JLabel(学号:,JLabel.CENTER); box1.add(学号); Box box2=Box.createHorizontalBox(); box2.add(ne
20、w JLabel(姓名:,JLabel.CENTER); box2.add(姓名); Box box3=Box.createHorizontalBox(); box3.add(new JLabel(性别:,JLabel.CENTER); box3.add(男); box3.add(女); Box box4=Box.createHorizontalBox(); box4.add(new JLabel(所学专业:,JLabel.CENTER); box4.add(所学专业); Box box5=Box.createHorizontalBox(); box5.add(new JLabel(家庭住址:
21、,JLabel.CENTER); box5.add(家庭住址); Box box6=Box.createHorizontalBox(); box6.add(new JLabel(出生日期:,JLabel.CENTER); box6.add(出生日期); Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6); boxH.add(Box.createVerticalGlue(); JPanel p
22、Center=new JPanel(); pCenter.add(boxH); setLayout(new BorderLayout(); add(pCenter,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(录入); pSouth.add(重置);add(pSouth,BorderLayout.SOUTH); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=录入) String number=; number=学号.get
23、Text();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 warning=该生基础信息已存在,请到修改页面修改!; JOptionPane.showMessageDialog(this,warning,警告,J
24、OptionPane.WARNING_MESSAGE); else String m=基础信息将被录入!; int ok=JOptionPane.showConfirmDialog(this,m,确定,JOptionPane.YES_NO_OPTION,import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener Hashtable 基
25、础信息表=null; JTextField 学号,姓名,所学专业,家庭住址,出生日期; JRadioButton 男,女; JButton 查询;ButtonGroup group=null; FileInputStream inOne=null; ObjectInputStream inTwo=null; File file=null; public Inquest(JFrame f,File file) super(f,查询对话框,false); this.file=file; 学号=new JTextField(10); 查询=new JButton(查询); 学号.addActionL
26、istener(this); 查询.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false); 所学专业=new JTextField(10); 所学专业.setEditable(false); 家庭住址=new JTextField(10); 家庭住址.setEditable(false); 出生日期=new JTextField(10); 出生日期.setEditable(false); 男=new JRadioButton(男,false); 女=new JRadioButton(女,false);grou
27、p=new ButtonGroup(); group.add(男);public void actionPerformed(ActionEvent e) 姓名.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 Ob
28、jectInputStream(inOne); 基础信息表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(基础信息表.containsKey(number) Student stu=(Student)基础信息表.get(number); 姓名.setText(stu.getName(); 所学专业.setText(stu.getDisciping(); 家庭住址.setText(stu.getGrade(); 出生日期.setText(stu.getBorth(); Str
29、ing warning=该学号不存在!; String warning=必需要输入学号!; JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Delete extends JPanel implements ActionListener Hashtable 基础信息表=nu
30、ll; JTextField 学号,姓名,所学专业,家庭住址,出生日期; JRadioButton 男,女; JButton 删除; ButtonGroup group=null; FileInputStream inOne=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File file=null; public Delete(File file) this.file=file; 学号=new JTextField(10); 删除=new JButton(删除); 学号.addActionListene
31、r(this);删除.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false); 所学专业=new JTextField(10); 所学专业.setEditable(false); 家庭住址=new JTextField(10); 家庭住址.setEditable(false); 出生日期=new JTextField(10);出生日期.setEditable(false); 男=new JRadioButton(男,false); 女=new JRadioButton(女,false);public void
32、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(基础信息表.cont
33、ainsKey(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 女.setSelected(true); public void actionPerformed(ActionEvent e) if(e.getSou
34、rce()=开始修改|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(基础信息表.containsKey(number) 录入修改.setEnabled(true); S
35、tudent 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); import java.awt.*;import java.awt.event.*;import javax.swing.*;import j
36、ava.io.*;import java.util.Hashtable;public class StudentManager extends JFrame implements ActionListener StudentSituation 基础信息录入=null; ModifySituation 基础信息修改=null; Inquest 基础信息查询=null; Delete 基础信息删除=null; JMenuBar bar; JMenu fileMenu; JMenuItem 录入,修改,查询,删除,退出; Container con=null; Hashtable 基础信息=null
37、; File file=null; CardLayout card=null; JLabel label; JPanel pCenter; public StudentManager() setTitle(欢迎进入班级管理系统); 录入=new JMenuItem(录入学生基础信息); 修改=new JMenuItem(修改学生基础信息); 查询=new JMenuItem(查询学生基础信息); 删除=new JMenuItem(删除学生基础信息); 退出=new JMenuItem(退出本系统); 退出.addActionListener(new ActionListener() public void action