J A V A学生管理系统Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998一、需求分析1.实现对班级和学生基本资料的录入,包括学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等。
2.能够实现对班级学生基本资料的修改。
3.根据学号对学生资料进行查询。
4.能够删除学生的资料。
二、概要设计根据本次课程设计的目的和以上的问题描述,把该班级管理系统分为五个模块:录入模块(StudentSituation)、查询模块(Inques)、删除模块(Delete)和修改模块(ModifySituation)。
各个模块包括对学生学号,姓名,所学专业,家庭住址,出生日期等信息的操作。
系统的结构图如图一:图1 系统结构图三、总体设计本班级管理系统共有6个java源文件。
类之间的主要关系如下图所示:图2 类之间的主要关系各主类的主要作用如下:该java文件的类负责创建班级学生管理系统的主窗口,该类包含main 方法,程序从该类开始执行。
该文件的类负责创建班级学生管理系统的学生信息录入界面。
该文件的类负责创建班级学生管理系统的学生基本信息修改界面。
该文件的类负责创建班级学生管理系统的学生基本信息查询界面。
该文件的类负责创建班级学生管理系统的学生信息删除界面。
负责创建存放学生信息的对象。
四、详细设计1.管理系统主窗口成员变量表1-1 主要成员变量方法表1-2 主要方法界面截图:2.基本信息录入成员变量表2-1 主要成员变量属性方法表2-2 主要方法录入界面截图: 3.基本信息查询 成员变量表3-1 主要成员变量属性方法表3-2 主要方法查询截图: 4.基本信息修改成员变量表4-1主要成员变量方法表4-2 主要方法修改界面截图: 5.基本信息删除成员变量表5-1 主要成员变量方法表5-2 主要方法删除界面截图 6.学生对象成员变量表6-1主要成员变量方法表6-2 主要方法五、总结与展望课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 本次课程设计虽然很辛苦,实在是受益匪浅。
本来这门课的知识学的就不够扎实,本次课程设计,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。
理论和实践的相结合是学习最有效的方法。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
不过,在用Java开发类似的软件时,发现在图形界面的设计方面远没有用VB,VF等开发工具简单。
参考文献:附录:1.主界面代码import .*;import .*;import .*;public class StudentManager extends JFrame implementsActionListener{StudentSituation 基本信息录入=null;ModifySituation 基本信息修改=null;Inquest 基本信息查询=null;Delete 基本信息删除=null;JMenuBar bar;JMenu fileMenu;JMenuItem 录入,修改,查询,删除,退出;Container con=null;Hashtable 基本信息=null;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 actionPerformed(ActionEvent event) {(0);}});bar=new JMenuBar();fileMenu=new JMenu("菜单选项");(录入);();(修改);();(查询);();(删除);();();(退出);(fileMenu);setJMenuBar(bar);label=new JLabel("欢迎进入班级管理系统!",;(new Font("隶书",,30));;基本信息=new Hashtable();录入.addActionListener(this);修改.addActionListener(this);查询.addActionListener(this);删除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel();(card);file=new File("学生基本信息.txt");if(!()){try{FileOutputStream out=new FileOutputStream(file);ObjectOutputStreamobjectOut=new ObjectOutputStream(out);(基本信息);();();}catch(IOException e){}}基本信息录入=new StudentSituation(file);基本信息修改=new ModifySituation(file);基本信息查询=new Inquest(this,file);基本信息删除=new Delete(file);("欢迎语界面",label);("录入界面",基本信息录入);("修改界面",基本信息修改);("删除界面",基本信息删除);(pCenter,;();addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){(0);}});setVisible(true);setBounds(100,50,420,380);validate();}public void actionPerformed(ActionEvent e) {if()==录入){(pCenter,"录入界面");}else if()==修改){(pCenter,"修改界面");}else if()==查询){基本信息查询.setVisible(true);}else if()==删除){(pCenter,"删除界面");}}public static void main(String args[]){new StudentManager();}}2.录入代码import .*;import .*;import .*;import .*;public class StudentSituation extends JPanel implements ActionListener{Hashtable 基本信息表=null;JTextField 学号,姓名,所学专业,家庭住址,出生; JRadioButton 男,女;Student 学生=null;ButtonGroup group=null;JButton 录入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public StudentSituation(File file){=file;学号=new JTextField(10);姓名=new JTextField(10);所学专业=new JTextField(10);家庭住址=new JTextField(10);出生=new JTextField(10);group=new ButtonGroup();男=new JRadioButton("男",true);女=new JRadioButton("女",false); (男);(女);录入=new JButton("录入");重置=new JButton("重置");录入.addActionListener(this);重置.addActionListener(this);Box box1=();(new JLabel("学号:",);(学号);Box box2=();(new JLabel("姓名:",);(姓名);Box box3=();(new JLabel("性别:",);(男);(女);Box box4=();(new JLabel("所学专业:",);(所学专业);Box box5=();(new JLabel("家庭住址:",);(家庭住址);Box box6=();(new JLabel("出生:",);(出生);Box boxH=();(box1);(box2);(box3);(box4);(box5);(box6);());JPanel pCenter=new JPanel();(boxH);setLayout(new BorderLayout());add(pCenter,;JPanel pSouth=new JPanel();(录入);(重置);add(pSouth,;validate();}public void actionPerformed(ActionEvent e){if()==录入){String number="";number=学号.getText();if()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)();();();}catch(Exception ee){}if(基本信息表.containsKey(number)){String warning="该生基本信息已存在,请到修改页面修改!";(this,warning,警告",;}else{String m="基本信息将被录入!";intok=(this,m,"确认",,;if(ok=={String name=姓名.getText();String discipling=所学专业.getText(); String grade=家庭住址.getText();String borth=出生.getText();String sex=null;if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}学生=new Student();学生.setNumber(number);学生.setName(name);学生.setDiscipling(discipling);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);try{outOne=new FileOutputStream(file);outTwo=newObjectOutputStream(outOne);基本信息表.put(number,学生);(基本信息表);();();学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}catch(Exception ee){}}}}else{String warning="必须要输入学号!";(this,warning,"警告",;}}if()==重置){学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}}3.查询代码.*;import .*;import .*;import .*;public class Inquest extends JDialog implementsActionListener{Hashtable 基本信息表=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);=file;学号=new JTextField(10);查询=new JButton("查询");学号.addActionListener(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); group=new ButtonGroup();(男);(女);Box box1=();(new JLabel("输入要查询的学号:",); (学号);(查询);Box box2=();(new JLabel("姓名:",);(姓名);Box box3=();(new JLabel("性别:",);(男);(女);Box box4=();(new JLabel("所学专业:",);(所学专业);Box box5=();(new JLabel("家庭住址:",);(家庭住址);Box box6=();(new JLabel("出生:",);(出生);Box boxH=();(box1);(box2);(box3);(box4);(box5);(box6);());JPanel pCenter=new JPanel();(boxH);Container con=getContentPane();(pCenter,;();setVisible(false);setBounds(100,200,360,270);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) {setVisible(false);}});}public void actionPerformed(ActionEvent e){姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);if()==查询||()==学号){String number="";number=学号.getText();if()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)();();();}catch(Exception ee){}if(基本信息表.containsKey(number)) {Student stu=(Student)基本信息表.get(number);姓名.setText());所学专业.setText());家庭住址.setText());出生.setText());if().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}else{String warning="该学号不存在!";(this,warning,"警告",;}}else{String warning="必须要输入学号!";(this,warning,"警告",;}}}}4.修改代码import .*;import .*;import .*;import .*;public class ModifySituation extends JPanel implements ActionListener{Hashtable 基本信息表=null;JTextField 学号,姓名,所学专业,家庭住址,出生; JRadioButton 男,女;ButtonGroup group=null;JButton 开始修改,录入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null; public ModifySituation(File file){=file;学号=new JTextField(10);姓名=new JTextField(10);所学专业=new JTextField(10);家庭住址=new JTextField(10);出生=new JTextField(10);group=new ButtonGroup();男=new JRadioButton("男",true);女=new JRadioButton("女",false);(男);(女);开始修改=new JButton("开始修改");录入修改=new JButton("录入修改");录入修改.setEnabled(false);重置=new JButton("重置");学号.addActionListener(this);开始修改.addActionListener(this);录入修改.addActionListener(this);重置.addActionListener(this);Box box1=();(new JLabel("输入要修改信息的学号:",);(学号);(开始修改);Box box2=();(new JLabel("(新)姓名:",);(姓名);Box box3=();(new JLabel("(新)性别:",);(男);(女);Box box4=();(new JLabel("(新)所学专业:",); (所学专业);Box box5=();(new JLabel("(新)家庭住址:",); (家庭住址);Box box6=();(new JLabel("(新)出生:",);(出生);Box boxH=();(box1);(box2);(box3);(box4);(box5);(box6);());JPanel pCenter=new JPanel(); (boxH);setLayout(new BorderLayout()); add(pCenter,;JPanel pSouth=new JPanel();(录入修改);(重置);add(pSouth,;validate();}public void actionPerformed(ActionEvent e){if()==开始修改||()==学号){String number="";number=学号.getText();if()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)();();();}catch(Exception ee){}if(基本信息表.containsKey(number)) {录入修改.setEnabled(true);Student stu=(Student)基本信息表.get(number);姓名.setText());所学专业.setText());家庭住址.setText());出生.setText());if().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}else{录入修改.setEnabled(false);String warning="该学号不存在!";(this,warning,"警告",;学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}else{录入修改.setEnabled(false);String warning="必须要输入学号!";(this,warning,"警告",;学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}else if()==录入修改){String number="";number=学号.getText();if()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)();();();}catch(Exception ee){}if(基本信息表.containsKey(number)){String question="该生基本信息已存在,您想修改他(她)的基本信息吗"; (this,question,"警告",;String m="基本信息将被修改!";int ok=(this,m,"确认",,;if(ok=={String name=姓名.getText();String discipling=所学专业.getText();String grade=家庭住址.getText();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);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,学生);(基本信息表);();();学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}catch(Exception ee){}录入修改.setEnabled(false);}else if(ok=={录入修改.setEnabled(true);}}else{String warning="该学号没有基本信息,不能修改!"; (this,warning,"警告",;录入修改.setEnabled(false);}}else{String warning="必须要输入学号!";(this,warning,"警告",;录入修改.setEnabled(false);}}if()==重置){学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}}5.删除代码import .*;import .*;import .*;import .*;public class Delete extends JPanel implements ActionListener {Hashtable 基本信息表=null;JTextField 学号,姓名,所学专业,家庭住址,出生; JRadioButton 男,女;JButton 删除;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public Delete(File file){=file;学号=new JTextField(10);删除=new JButton("删除");学号.addActionListener(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); group=new ButtonGroup();(男);(女);Box box1=();(new JLabel("输入要删除的学号:",); (学号);(删除);Box box2=();(new JLabel("姓名:",);(姓名);Box box3=();(new JLabel("性别:",);(男);(女);Box box4=();(new JLabel("所学专业:",);(所学专业);Box box5=();(new JLabel("家庭住址:",);(家庭住址);Box box6=();(new JLabel("出生:",);(出生);Box boxH=();(box1);(box2);(box3);(box4);(box5);(box6);());JPanel pCenter=new JPanel();(boxH);setLayout(new BorderLayout());add(pCenter,;validate();}public void actionPerformed(ActionEvent e){if()==删除||()==学号){String number="";number=学号.getText();if()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)();();();}catch(Exception ee){}if(基本信息表.containsKey(number)) {Student stu=(Student)基本信息表.get(number);姓名.setText());所学专业.setText());家庭住址.setText());出生.setText());if().equals("男")){男.setSelected(true);}else{女.setSelected(true);}String m="确定要删除该学号及全部信息吗"; int ok=(this,m,"确认",if(ok=={基本信息表.remove(number);try{outOne=new FileOutputStream(file); outTwo=newObjectOutputStream(outOne);(基本信息表);();();学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}catch(Exception ee){}}else if(ok=={学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}else{String warning="该学号不存在!";(this,warning,"警告",;}}else{String warning="必须要输入学号!";(this,warning,"警告",;}}}}6.设置代码{String number,name,discipling,grade,borth,sex; public Student(){}public void setNumber(String number){=number;}public String getNumber(){return number;}public void setName(String name){=name;}public String getName(){return name;}public void setDiscipling(String discipling) {=discipling;}public String getDisciping(){return discipling;}public void setGrade(String grade){=grade;}public String getGrade(){return grade;}public void setBorth(String borth) {=borth;}public String getBorth(){return borth;}public void setSex(String sex){=sex;}public String getSex(){return sex;}}。