分类号:密级:学号:******* Java项目报告——学生信息管理系统作者姓名: `````所在系部:`````专业: ````````指导教师: ``````2010 年 06 月 27 日摘要现代社会随着科技的发展,如果依然采用人工管理庞大的数据库是一项繁重枯燥的工作,无论是数据录入,查询还是修改都存在着工作量大,效率低下,周期长的缺点。
而计算机管理系统的引进将给人工管理数据库的工作带来一次彻底的变革。
学校由于学生众多,学生数据信息库庞大,使信息的管理成为了一个复杂繁琐的工作。
本系统针对学校,经过实际的需求分析,采用功能强大的VB6.0作为开发工具来开发学生信息管理系统。
整个系统从符合操作简便,界面美观、灵活、实用的要求出发,完成学生信息管理的全过程,包括系统管理、基本信息管理、学习管理、奖惩管理和打印报表等功能。
经过使用证明,本文所设计的学生信息管理系统可以满足学校对学生信息管理方面的需要。
本项目报告主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
目录摘要 (2)目录 (3)前言 (4)正文 (5)1需求分析 (5)1.1 管理学生信息 (5)1.2 管理课程信息 (5)1.3 管理选课与成绩 (5)2系统设计 (5)2.1结构设计 (5)2.2 功能流程及工作描述 (6)4详细设计及功能实现 (8)4.1学生信息管理系统主界面模块 (8)4.1.1成绩信息综合管理类 (8)4.1.2添加成绩功能 (14)4.1.3修改成绩功能 (17)4.1.4保存成绩查询功能 (20)总结 (25)致谢 (26)参考文献 (27)小组成员 (28)前言学生成绩管理工作是高校教育工作的一项重要内容。
教务管理工作是指学校管理人员按照一定教育方针,运用先进的管理手段,组织、协调、指挥并指导各用户活动,以便高效率、高质量地完成各项教学任务,完成国家所制定的教育目标。
学生成绩管理工作是学校教学工作的中枢,是保证高校教学机制正常运转的枢纽,它是一项目的性、计划性、适用性、创造性和科学性很强的工作。
学生成绩工作关系到高校教学秩序的稳定。
随着计算机技术的飞速发展和高等教育体制改革的不断深入,传统教育管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成教学管理工作。
提高教务管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。
同时,运用先进的信息技术,开发高校综合成绩管理信息系统,是深化教务体制改革的有利措施。
JAVA以GUI的编程方式、面向对象的程序设计、众多的GUI组件和强大的数据库应用开发支持,在竞争激励的开发工具市场中越来越羸得程序设计者的青睐。
JAVA是Windows系统下的可视化集成开发工具,提供了强大的可视化组件功能,使程序员能够快速、高效地开发出Windows系统下的应用程序,特别是在数据库和网络方面,JAVA与其它开发工具相比更是胜出一筹。
可视化主要是指开发图形用户界面,而只需调用GUI组件即可。
本此系统由6个模块构成,包括学生管理系统主界面模块,学生信息管理模块,课程信息管理模块,成绩信息管理模块,信息查询模块和数据库操作模块。
我主要负责学生管理系统主界面模块、课程信息管理模块,成绩信息管理模块。
正文1需求分析学生管理信息系统的功能总结起来,共需要以下几个方面。
1.1 管理学生信息管理所有学生的基本信息,包括添加、修改、删除等,可以根据各种条件查询出要求的信息。
1.2 管理课程信息管理所有课程的基本信息,包括添加、修改、删除等,可以根据各种条件查询出要求的信息。
1.3 管理选课与成绩根据学号进行选课,登记所选课程的成绩,可以根据各种条件查询出所选课程信息与成绩的信息。
2系统设计2.1结构设计根据对系统进行的需求分析,本系统将分为4各模块:(1)学生管理管理学生的基本信息,包括个人信息的添加、修改、删除,以及选课信息的添加。
(2)课程管理管理课程的基本信息,包括课程信息的添加、修改、删除。
(3)成绩管理管理学生选课的成绩信息,包括成绩的登记与修改。
(4)信息管理查询已经登记的信息,包括学生的基本信息,课程的基本信息与成绩信息。
2.2 功能流程及工作描述(1)增加学生信息系统操作人员打开学生信息增加界面,输入相关信息(姓名、性别、民族、籍贯、出生日期、入学年份、专业和学院等),在数据库中添加相关数据。
(2)修改学生信息根据学生学号查询出该学生的相关信息,修改相关条目后保存在数据库中。
(3)删除学生信息根据学生学号查询出该学生的相关信息,确定删除后,在数据库中删除该信息。
(4)学生选课选择学生学号与需要选择的课程,确认无误后保存,数据库中将自动添加新的记录。
(5)增加课程信息系统操作人员打开课程信息增加界面,输入相关信息(课程名称、授课教师、上课时间、上课地点和课程类型等),在数据库中添加相关数据。
(6)修改课程信息根据课程号查询出该课程的相关信息,修改相关条目后保存在数据库中。
(7)删除课程信息根据课程号查询出该课程的相关信息,确定删除后,在数据库中删除该信息。
(8)登记成绩根据学号,以及该学生所选择的相关信息,进行成绩登记,未选课的学生无法进行登记。
(9)修改成绩对已登记的成绩查询信息进行编辑。
(10)学生查询可以根据学生学号、学生性别、学生所学专业、学生所属学院对学生信息进行查询,所有符合查询条件的学生信息将都被显示出来。
(11)课程查询可以根据课程名称和授课教师的姓名对课程详细信息进行查询,所有符合查询条件的课程信息都会被显示出来。
(12)成绩查询根据学生的学号来查询该学生所有课程的成绩。
3数据库设计在本系统中的数据库中应包含4个表:用户表(users):学生选课表(SC):课程信息表(Course):学生信息表(Student):4详细设计及功能实现该系统由6个模块构成,包括学生管理系统主界面模块,学生信息管理模块,课程信息管理模块,成绩信息管理模块,信息查询模块和数据库操作模块。
4.1学生信息管理系统主界面模块成绩信息管理模块主要同由GradeInfo.javaAddGradeInfo.javaEditGradeInffo.jfava这三个文件组。
4.1.1成绩信息综合管理类package 管理系统;import javax.swing.*;import java.awt.*;import .*;/*** 成绩信息综合管理类* 提供主界面,供其他类继承*/public class GradeInfo extends JFrame {Container contentPane;JPanel centerPanel=new JPanel();JPanel upPanel=new JPanel();JPanel downPanel=new JPanel();//框架的大小Dimension faceSize=new Dimension();JLabel jLabel1=new JLabel();JLabel jLabel2=new JLabel();JLabel jLabel3=new JLabel();JLabel jLabel4=new JLabel();JLabel jLabel5=new JLabel();JLabel jLabel6=new JLabel();String[] stu=null;//记录所有的学号String[] cReturn=null;//记录学生的选课信息JComboBox sNum;JTextField sName=new JTextField(15);JTextField cNum=new JTextField(15);JComboBox cName;JTextField cTeacher=new JTextField(15);JTextField Grade=new JTextField(15);JTextField sMajor=new JTextField(15);JTextField sCollege=new JTextField(15);JTextField sHome=new JTextField(46);JButton searchInfo=new JButton();JButton addInfo=new JButton();JButton modifyInfo=new JButton();JButton deleteInfo=new JButton();JButton clearInfo=new JButton();JButton saveInfo=new JButton();JButton eixtInfo=new JButton();GridBagLayout girdBag=new GridBagLayout(); GridBagConstraints girdBagCon;public GradeInfo(){this.setSize(faceSize);this.setResizable(false);//设置标题this.setTitle("成绩综合信息管理");//设置程序图标GetImage getimage=new GetImage();this.setIconImage(getimage.getImage1("icon.gif"));try{Init();}catch(Exception e){e.printStackTrace();}}public void Init() throws Exception{contentPane=this.getContentPane();contentPane.setLayout(new BorderLayout());//中部面板的布局centerPanel.setLayout(girdBag);jLabel1.setText("学号:");jLabel1.setFont(new Font("Dialog",0,12));girdBagCon=new GridBagConstraints();girdBagCon.gridx=0;girdBagCon.gridy=0;girdBagCon.insets=new Insets(10,10,10,1);girdBag.setConstraints(jLabel1, girdBagCon);centerPanel.add(jLabel1);StuBean sN=new StuBean();stu=sN.getAllId();System.out.println(stu);sNum=new JComboBox(stu);girdBagCon=new GridBagConstraints();girdBagCon.gridx=1;girdBagCon.gridy=0;girdBagCon.fill=girdBagCon.BOTH;girdBagCon.insets=new Insets(10,1,10,15);sNum.setSelectedItem(null);girdBag.setConstraints(sNum, girdBagCon);centerPanel.add(sNum);jLabel2.setText("姓名:");jLabel2.setFont(new Font("Dialog",0,12));girdBagCon=new GridBagConstraints();girdBagCon.gridy=0;girdBagCon.insets=new Insets(10,15,10,1); girdBag.setConstraints(jLabel2, girdBagCon); centerPanel.add(jLabel2);girdBagCon=new GridBagConstraints(); girdBagCon.gridx=3;girdBagCon.gridy=0;girdBagCon.insets=new Insets(10,1,10,10); sName.setEnabled(false);girdBag.setConstraints(sName, girdBagCon); centerPanel.add(sName);jLabel3.setText("课程名称:");jLabel3.setFont(new Font("Dialog",0,12)); girdBagCon=new GridBagConstraints(); girdBagCon.gridx=0;girdBagCon.gridy=1;girdBagCon.insets=new Insets(10,10,10,1); girdBag.setConstraints(jLabel3, girdBagCon); centerPanel.add(jLabel3);cName=new JComboBox();girdBagCon=new GridBagConstraints(); girdBagCon.gridx=1;girdBagCon.gridy=1;girdBagCon.fill=girdBagCon.BOTH; girdBagCon.insets=new Insets(10,1,10,15); girdBag.setConstraints(cName, girdBagCon); centerPanel.add(cName);jLabel4.setText("课程编码:");jLabel4.setFont(new Font("Dialog",0,12)); girdBagCon=new GridBagConstraints();girdBagCon.gridy=1;girdBagCon.insets=new Insets(10,15,10,1); girdBag.setConstraints(jLabel4, girdBagCon); centerPanel.add(jLabel4);girdBagCon=new GridBagConstraints(); girdBagCon.gridx=3;girdBagCon.gridy=1;girdBagCon.insets=new Insets(10,1,10,10); cNum.setEditable(false);girdBag.setConstraints(cNum, girdBagCon); centerPanel.add(cNum);jLabel5.setText("授课老师:");jLabel5.setFont(new Font("Dialog",0,12)); girdBagCon=new GridBagConstraints(); girdBagCon.gridx=0;girdBagCon.gridy=2;girdBagCon.insets=new Insets(10,10,10,1); girdBag.setConstraints(jLabel5, girdBagCon); centerPanel.add(jLabel5);girdBagCon=new GridBagConstraints(); girdBagCon.gridx=1;girdBagCon.gridy=2;girdBagCon.insets=new Insets(10,1,10,15); cTeacher.setEnabled(false);girdBag.setConstraints(cTeacher, girdBagCon); centerPanel.add(cTeacher);jLabel6.setText("成绩:");jLabel6.setFont(new Font("Dialog",0,12)); girdBagCon=new GridBagConstraints(); girdBagCon.gridx=2;girdBagCon.insets=new Insets(10,15,10,1);girdBag.setConstraints(jLabel6, girdBagCon);centerPanel.add(jLabel6);girdBagCon=new GridBagConstraints();girdBagCon.gridx=3;girdBagCon.insets=new Insets(10,1,10,10);girdBag.setConstraints(Grade, girdBagCon);centerPanel.add(Grade);contentPane.add(centerPanel,BorderLayout.CENTER); }//下部面板的布局public void downInit(){searchInfo.setText("查询");searchInfo.setFont(new Font("Dialog",0,12));downPanel.add(searchInfo);addInfo.setText("增加");addInfo.setFont(new Font("Dialog",0,12));downPanel.add(addInfo);modifyInfo.setText("修改");modifyInfo.setFont(new Font("Dialog",0,12));downPanel.add(modifyInfo);deleteInfo.setText("删除");deleteInfo.setFont(new Font("Dialog",0,12));downPanel.add(deleteInfo);saveInfo.setText("保存");saveInfo.setFont(new Font("Dialog",0,12));downPanel.add(saveInfo);clearInfo.setText("清空");clearInfo.setFont(new Font("Dialog",0,12));downPanel.add(clearInfo);eixtInfo.setText("退出");eixtInfo.setFont(new Font("Dialog",0,12));downPanel.add(eixtInfo);contentPane.add(downPanel,BorderLayout.SOUTH);}}4.1.2添加成绩功能package 管理系统;import java.awt.*;import java.awt.event.*;import javax.swing.*;//成绩管理模块添加新的成绩信息public class AddGradeInfo extends GradeInfo implements ActionListener{public AddGradeInfo(){this.setTitle("添加成绩的信息");this.setResizable(false);//设置运行位置,使对话框居中Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((int)(screenSize.width-400)/2,(int)(screenSize.height-300)/2+45);}public void downInit(){addInfo.setText("增加");addInfo.setFont(new Font("Dialog",0,12));downPanel.add(addInfo);eixtInfo.setText("退出");eixtInfo.setFont(new Font("Dialog",0,12));downPanel.add(eixtInfo);this.contentPane.add(downPanel, BorderLayout.SOUTH);sNum.addActionListener(this);addInfo.addActionListener(this);eixtInfo.addActionListener(this);}//事件处理public void actionPerformed(ActionEvent e){Object obj=e.getSource();if(obj==addInfo){//增加cNum.setEnabled(false);cName.setEditable(false);cTeacher.setEditable(false);Grade.setEditable(false);sNum.setEditable(false);sName.setEditable(false);addInfo.setEnabled(false);clearInfo.setEnabled(false);eixtInfo.setEnabled(false);csBean addGrade=new csBean();addGrade.csModify(cNum.getText(),(String)sNum.getSelectedItem(), Grade.getText());this.dispose();AddGradeInfo agi=new AddGradeInfo();agi.downInit();agi.pack();agi.setVisible(true);}else if(obj==eixtInfo){//退出this.dispose();}else if(obj==sNum){//选择学号StuBean sN=new StuBean();sName.setText(sN.stuSearch((String)sNum.getSelectedItem())[0]);if(cName.getItemCount()>0){cName.removeAllItems();}csBean cN=new csBean();cReturn=ameSearch((String)sNum.getSelectedItem());if(cReturn==null){cName.removeActionListener(this);JOptionPane.showMessageDialog(null,"该学生没有选择课程!");addInfo.setEnabled(false);cName.setEnabled(false);}else{int i=0;for(i=0;i<(cReturn.length);i++){cName.addItem(cReturn[i]);}cName.setEnabled(true);sNum.setEnabled(false);cName.setSelectedItem(null);cName.addActionListener(this);}}else if(obj==cName){//选择课程号CrsBean cSname=new CrsBean();cNum.setText(cSname.crsNameSearch((String)cName.getSelectedItem(),(String)sNum.getSelectedIte m())[0]);cTeacher.setText(cSname.crsNameSearch((String)cName.getSelectedItem(),(String)sNum.getSelectedItem())[1]);addInfo.setEnabled(true);cName.setEnabled(false);cName.removeActionListener(this);}}}4.1.3修改成绩功能package 管理系统;import java.awt.*;import java.awt.event.*;import javax.swing.*;//成绩信息管理模块修改成绩信息的类public class EditGradeInfo extends GradeInfo implements ActionListener{ public EditGradeInfo(){this.setTitle("修改成绩信息");this.setResizable(false);//设置运行位置,使对话框居中Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((int)(screenSize.width-400)/2,(int)(screenSize.height-300)/2+45);}public void downInit(){modifyInfo.setText("修改");modifyInfo.setFont(new Font("Dialog",0,12));downPanel.add(modifyInfo);eixtInfo.setText("退出");eixtInfo.setFont(new Font("Dialog",0,12));downPanel.add(eixtInfo);this.contentPane.add(downPanel,BorderLayout.SOUTH);sNum.addActionListener(this);modifyInfo.addActionListener(this);clearInfo.addActionListener(this);eixtInfo.addActionListener(this);}//事件处理public void actionPerformed(ActionEvent e){Object obj=e.getSource();if(obj==modifyInfo){//修改cNum.setEnabled(false);cName.setEditable(false);cTeacher.setEditable(false);Grade.setEditable(false);sNum.setEditable(false);sName.setEditable(false);modifyInfo.setEnabled(false);clearInfo.setEnabled(false);eixtInfo.setEnabled(false);csBean addGrade=new csBean();addGrade.csModify(cNum.getText(),(String)sNum.getSelectedItem(),Grade.getText());this.dispose();EditGradeInfoegi=new EditGradeInfo();egi.downInit();egi.pack();egi.setVisible(true);}else if(obj==eixtInfo){//退出this.dispose();}else if(obj==sNum){//选择学号StuBean sN=new StuBean();sName.setText(sN.stuSearch((String)sNum.getSelectedItem())[0]);if(cName.getItemCount()>0){cName.removeAllItems();}csBean cN=new csBean();cReturn=ameSearch((String)sNum.getSelectedItem());if(cReturn==null){cName.removeActionListener(this);JOptionPane.showMessageDialog(null,"该学生没有选择课程");modifyInfo.setEnabled(false);cName.setEnabled(false);}else{int i=0;for(i=0;i<(cReturn.length);i++){cName.addItem(cReturn[i]);}cName.setEnabled(true);sNum.setEnabled(false);cName.setSelectedItem(null);cName.addActionListener(this);}}else if(obj==cName){//选择课程号CrsBean cSname=new CrsBean();cNum.setText(cSname.crsNameSearch((String)cName.getSelectedItem(),(String)sNum.getSelectedIte m())[0]);cTeacher.setText(cSname.crsNameSearch((String)cName.getSelectedItem(),(String)sNum.getSelected Item())[1]);Grade.setText("");Grade.setText(cSname.crsNameSearch((String)cName.getSelectedItem(),(String)sNum.getSelectedItem())[5]);modifyInfo.setEnabled(true);cName.setEnabled(false);}}}4.1.4保存成绩查询功能package 管理系统;import java.sql.*;import java.util.*;import javax.swing.*;//用来保存成绩查询方面的类public class csBean {String sql;ResultSet rs;Vector tempvector=new Vector(1,1);String cNum;String sNum;float grade;int colNum;//添加学生的选课信息public void csAdd(String cnum,String snum){Database DB=new Database();um=cnum;this.sNum=snum;sql="insert into sc(Cnum,Snum) values("+Integer.parseInt(cNum)+","+Integer.parseInt(sNum)+")";try{System.out.println(sql);DB.OpenConn();if(DB.executeUpdate(sql)==1){JOptionPane.showMessageDialog(null,"成功添加一条新记录!");}}catch(Exception e){JOptionPane.showMessageDialog(null,"保存失败","错误",JOptionPane.ERROR_MESSAGE);}finally{DB.closeStmt();DB.closeConn();}}//修改学生的选课成绩public void csModify(String cnum,String snum,String grade){Database DB=new Database();um=cnum;this.sNum=snum;try{this.grade=Float.parseFloat(grade);}catch(Exception e){JOptionPane.showMessageDialog(null,"成绩输入错误","错误",JOptionPane.ERROR_MESSAGE);return;}sql="update sc set grade="+grade+"where snum="+Integer.parseInt(sNum)+"and cnum="+Integer.parseInt(cNum)+"";try{DB.OpenConn();if(DB.executeUpdate(sql)==1)JOptionPane.showMessageDialog(null,"成功登记!");}}catch(Exception e){JOptionPane.showMessageDialog(null,"登记失败","错误",JOptionPane.ERROR_MESSAGE);}finally{DB.closeStmt();DB.closeConn();}}//根据学号搜索其所选的课程名称public String[] cNameSearch(String snum){Database DB=new Database();this.sNum=snum;sql="select * from sc,course where sc.snum="+Integer.parseInt(sNum)+"and um=um";String[] cn=null;int row=0;int i=0;try {DB.OpenConn();rs=DB.executeQuery(sql);if(st()){row=rs.getRow();}if(row==0){cn=null;}cn=new String[row];rs.first();rs.previous();while(rs.next()){cn[i]=rs.getString(5);i++;}}}catch (Exception e) {System.out.println(e);}finally{DB.closeStmt();DB.closeConn();}return cn;}//成绩信息综合查询public String[][] csAllSearch(String snum,int colnum){this.sNum=snum;this.colNum=colnum;Database DB=new Database();String[][] cn=null;int row=0;int i=0;sql="select * from sc,course,student where sc.snum="+Integer.parseInt(sNum)+" and um=um and sc.snum=student.snum";try {DB.OpenConn();rs=DB.executeQuery(sql);if(st()){row=rs.getRow();}if(row==0){cn=null;}else{cn=new String[row][colNum];rs.first();rs.previous();while(rs.next()){cn[i][0]=rs.getString(1);cn[i][1]=rs.getString(11);cn[i][2]=rs.getString(2);cn[i][3]=rs.getString(5);cn[i][4]=rs.getString(3);i++;}}}catch (Exception e) {System.out.println(e);}finally{DB.closeStmt();DB.closeConn();}return cn;}}总结该学生成绩管理系统总体说来功能比较齐全,学生和教师的一些基本的功能都已经具备;数据库的设计方面,建有学生信息表、课程信息表、选课信息表,数据库中存在一些问题,如数据冗余,不够完善。