还剩64页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
—・引言项目的名称学生信息管理系统项目背景和目标学生信息管理系主要对在校学生的个人基本信息以及成绩信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供成绩查询功能我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设
1.3项目的可行性研究设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的学生信息管理系统
二、需求分析
2.1系统概述此系统提供给教师用户和学生用户教师登陆后可以对学生基本信息表和学生成绩表进行查看、增添新记录和删除记录等操作学生登陆后能查询自己的成绩
2.2系统运行环境Java运行在ecIipse软件上,数据库用mysqI数据库
2.3功能需求描述学生信息管理系统要面对教师和学生用户对于教师,需要查询全部学生的基本信息和成绩信息,并且可以对其进行修改对于学生,不需要查询自己的基本信息,只需要查询成绩为了保护学生成绩隐私,每位学生登录系统后只能查询自己的成绩,而无法看到别人的成绩
三、系统设计3-1开发与设计的总体思想教师方面教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能在查询功能里面,可以选择是查询学生基本信息,还是查询学生成绩信息在查询学生基本信息时,可以从依据不同字段,即学生信息表的不同属性进行查找在查找学生成绩信息时,只能依据学生姓名和学号进行查找在修改功能里面,包括对学生基本信息表和学生成绩表进行增加和删除记录学生方面学生通过自己的用户名和密码登录此系统后,可以查询自己本学期的各科成绩信息
3.2系统模块结构图
3.3数据库结构设计为了支持此学生信息管理系统,创建数据库studentmanageo在这个数据库中包含四个表student表,teacher表,studentlogin表和score表截图如下在student(学生基本信息)表中,有五个属性列,分别为num(学号),sname(学生姓名姓名),sex(性别),age(年龄),dept(系别)其基本数据类型分别为:intcharcharintcharo当查询学生基本信息时,从此表中获取数据裁图如下在teacher(教师登陆)表中,有两个属性列,分别为tname(教师姓名),password(登录密码)其基本数据类型分别为charcharo当教师用户登陆此系统时,从该表获取数据裁图如下在studentlogin(学生登录)表中,有两个属性列,分别为sname(学生姓名),password(登录密码)其基本数据类型分别为charcharo当学生用户登陆此系统时,从该表获取数据截图如下在score(学生成绩)表中,有五个属性列,分别为num(学号),sname(学生姓名),course(课程名称),score(考试成绩)credit(学分)其基本数据类型分别为intcharcharintinto当查询学生成绩信息时,从此表获取数据截图如下3-4模块设计总主界面登陆后,可以选择用户,是学生用户或者教师用户如果选择学生用户,则进入学生登录界面,在这个界面上输入学生姓名和用户密码输入后单击“成绩查询“按钮,若密码正确,这显示该学生本人本学期成绩,若密码不正确,这提示密码错误如果选择教师用户,则进入教师登陆界面,在这个界面上输入教师姓名和用户密码,输入后单击“登录”按钮,则进入教师主界面在教师主界面可以选择进行查询操作还是修改操作在查询操作中包含查询学生基本信息和查询学生成绩信息若要查询学生基本信息,点击菜单项则进入学生基本信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“姓名”字段时,要键入某个学生姓名输入后,单击“检索”按钮,则开始数据库查询如果数据库检索到所需信息,这生成列表显示检索结构,如果没有所需信息,则列表中的内容为空若要查询学生成绩信息,则点击学生成绩查询菜单项,进入成绩查询界面在此界面的文本框中输入要查询成绩的学生姓名,然后单击检索按钮若数据库中有此学生的成绩信息,则生成列表显示成绩信息,若没有此记录,则列表内容为空如果教师要进行修改操作,则在教师主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有四项修改操作增加新生信息,删除毕业生信息(这两个是对学生基本信息表的操作),增加成绩信息,删除成绩信息(这两个是对学生成绩信息表的操作)在增加信息操作中,按照标签提示一次输入要增添的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败在删除信息操作中,输入要删除信息的学生姓名,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败以上就是该学生信息管理系统的操作步骤
3.5系统流程描述系统实现本系统保存在studentmanage包里其中包含四个包connection包,dao包,modeI包,ui包
1.Connection包中的类1DBconnection类此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库若连接成功,提示connectionsuccess若连接失败,提示connectionfaiIureDBconnection类源代码packageconnection;publicclassDBConnection{publicstaticConnectioncon=null;publicstaticConnectiongetConnection{tryClass.forNamedbDriver;}catchClassNotFoundExceptionee.printStackTraceO;try〃〃工〃〃工〃、agerootroot;}catchSQLExceptionee.printStackTraceO;returncon;publicstaticvoidcloseConnection{ifcon!=nulltrycon.close;}catchSQLExceptionee.printStackTrace;
2.Dao包中的类:1StudentDao类此类中有四个方法,studentLoginaddStudentdeIeteStudentqueryStuden作用分别是控制学生登陆,增加学生基本信息,查询学生基本信息,删除学生基本信息studentLogin方法中,有两个参数,分别传给seIect语句中的sname学生姓名和password登录密码,利用seIect语句在studentlogin表中检索学生登录信息若存在此信息返回true否则返回faIseaddStudent方法中,有五个参数,分别传给insert语句中的num学号sname学生姓名,age年龄,sex性别和dept系别,利用insert语句向student学生基本信息表中插入学生记录若插入成功,返回true否则返回faIsedeIeteStudent方法中,有一个参数,传给deIete语句中的sname学生姓名,利用delete语句,把student表中相关学生信息删除若删除成功,返回true否则返回faIsequeryStuden方法中,有两个参数分别传给seIect语句中的field查找方式和key查找内容,利用seIect语句,从student表中检索学生基本信息若存在此信息,则返回一个ArrayList类的对象lis表格,否则,异常处理StudentDao类源代码packagedao;imporimportmodel.Student;importconnection.DBConnection;publicclassStudentDaopublicbooleanstudentLoginStringsnameStringpasswordDBConnectiondb=newDBConnection;Connectioncon=db.getConnection;booleanisfound=false;PreparedStatementpst;trypst=con.prepareStatementz/select*fromstudentloginwheresname=andpassword=〃;pst.setString1sname;pst.setString2password;ResultSetrs=pst.executeQuery;ifrs.nextisfound二true;/catchSQLExceptione\e.printStackTraceO;returnisfound;publicbooleanaddStudentintnumStringsnameStringsexintageStringdept{Connectioncon=DBConnection.getConnection;PreparedStatementpst;trypst=con.prepareStatement/zinsertintostudentvalues〃;pst.setlnt1num;pst.setString2sname;pst.setString3sex;pst.setlnt4age;pst.setString5dept;intcount=pst.executeUpdate;//返回修改的记录数ifcount==1returntrue;elsereturnfalse;/catchSQLExceptione〔e.printStackTraceO;returnfalse;publicArrayListqueryStudentStringfieldStringkey{ArrayListlis=newArrayList;Connectioncon=DBConnection.getConnection;Statementstm;try{stm=con.createStatement;Stringsql=select*fromstudentwhere〃+field+〃like%〃+key+〃%〃;ResultSetrs=stm.executeQuerysql;whilers.nextnewStudentrs.getlnt1rs.getString2rs.getString3rs.getlnt4rs.getString5;lis.addstudent;■}catchSQLExceptione{e.printStackTraceO;}returnlis;}publicbooleandeleteStudentStringkey.Connectioncon=DBConnection.getConnection;Statementstm;try{stm=con.createStatement;Stringsql=deletefromstudentwheresnamelike%〃+key+〃%〃;intcount=stm.executeUpdatesql;ifcount==1returntrue;elsereturnfalse;}catchSQLExceptionee.printStackTrace;returnfalse;2TeacherDao类此类中有一个方法queryTeacher作用是控制教师登陆queryTeacher方法中,有两个参数分别传给select语句中的tname教师姓名和password登陆密码,利用seIect语句在teacher表中检索教师登陆信息若存在此信息,返回true否则返回falseTeacherDao类源代码packagedao;t;importconnection.DBConnection;publicclassTeacherDaopublicbooleanqueryTeacherStringtnameStringpasswordDBConnectiondb=newDBConnection;Connectioncon=db.getConnection;booleanisfound=false;PreparedStatementpst;trypst=con.prepareStatement^select*fromteacherwheretname=andpassword=〃;pst.setString1tname;pst.setString2password;ResultSetrs=pst.executeQuery;ifrs.nextisfound=true;}catchSQLExceptione.e.printStackTrace;areturnisfound;publicstaticvoidmainString[]args{}}3ScoreDao类此类中有四个方法,queryScorequeryScoreladdScoredeIeteScor作用分别是为教师用户提供查询学生成绩信息功能,为学生用户提供询本人成绩信息功能,添加成绩信息,删除成绩信息queryScore方法中,有一个参数,传给seIect语句中的sname学生姓名,利用select语句,查询学生成绩信息表中的内容若查询成功,则返回一个ArrayList类的对象Iis表格,否贝异常处理queryScorel方法中,有一个参数,传给传给select语句中的sname学生姓名,这个sname的学生用户登录时输入的姓名即此类的作用是每个学生登陆只能查看本人成绩若查询成功,则返回一个ArrayList类的对象Iis表格,否则,异常处理addScore方法中,有五个参数,分别传给insert语句中的num学号,sname学生姓名,course课程名称,score成绩,credit学分利用insert语句,将这些记录写入score表中若插入成功返回true否则返回faIsedeleteScoreO方法中,有一个参数,传给deIete语句中的sname学生姓名,利用delete语句,把score表中相关学生信息删除若删除成功,返回true否则返回falseScoreDao类源代码packagedao;importjava.util.ArrayList;importui.StudentLoginUI;importmodel.Score;importmodel.Student;importconnection.DBConnection;publicclassScoreDaopublicArrayListqueryScoreStringkey{ArrayListlis=newArrayList;Connectioncon=DBConnection.getConnection;Statementstm;trystm=con.createStatement;Stringsql=select*fromscorewheresname1ike%〃+key+〃%〃;ResultSetrs=stm.executeQuerysql;whilers.next{Scorescore=newScorers.getlnt1rs.getString2rs.getString3rs.getlnt4rs.getlnt5;lis.addscore;/catchSQLExceptionee.printStackTrace;returnlis;publicArrayListqueryScorelStringkeyArrayListlis=newArrayList;Connectioncon=DBConnection.getConnection;Statementstm;trystm=con.createStatement;Stringsql=select*fromscorewheresnamelike+StudentLoginULstl+〃%〃;ResultSetrs=stm.executeQuerysql;whilers.next{Scorescore=newScorers.getlnt1rs.getString2rs.getString3rs.getlnt4rs.getlnt5;lis.addscore;■/catchSQLExceptionee.printStackTrace;-returnlis;}publicbooleanaddScoreintnumStringsnameStringcourseintscoreintcreditConnectioncon=DBConnection.getConnection;PreparedStatementpst;trypst=con.prepareStatementz/insertintoscorevalues〃;pst.setInt1num;pst.setString2sname;pst.setString3course;pst.setInt4score;pst.setInt5credit;intcount=pst.executeUpdateO;//返回修改的记录数ifcount==1returntrue;returnfalse;catchSQLExceptionee.printStackTrace;returnfalse;}publicbooleandeleteScoreStringkey.Connectioncon=DBConnection.getConnection;Statementstm;trystm=con.createStatement;Stringsql=deletefromscorewheresname1ike%〃+key+〃%〃;intcount=stm.executeUpdatesql;ifcount==1returntrue;elsereturnfalse;/catchSQLExceptionee.printStackTrace;returnfalse;
3.model包中的类:1Score类此类中有五个成员变量,intnum;Stringsname;Stringcourse;intscore;intcredit;十个成员方法个变量,即为score表中五个属性的记录值,均为getXXXsetXXX方法,还有一个构造方法,用于调用其对象时对成员变量赋值Score类源代码:packagemodel;publicclassScoreintnum;Stringsname;Stringcourse;intscore;intcredit;publicintgetNum{returnnum;}publicvoidsetNumintnumthisnum=num;publicStringgetSname{returnsname;}publicvoidsetSnameStringsnamethissname=sname;publicStringgetCourse〔returncourse;}publicvoidsetCourseStringcoursethis.course=course;}publicintgetScore{returnscore;}publicvoidsetScoreintscorethisscore=score;publicintgetCreditreturncredit;publicvoidsetCreditintcredit{thiscredit=credit;}publicScoreintnumStringsnameStringcourseintscoreintcreditsuper;this.num=num;thissname=sname;this.course=course;this.score=score;this.credit=credit;2Student类此类中有五个成员变量,intnum;Stringsname;Stringsex;intage;Stringdept;十个成员方法,分别获取和设置这五个变量,即为student表中五个属性的记录值,均为getXXXsetXXX方法,还有一个构造方法,用于调用其对象时对成员变量赋值Student类源代码packagemodel;publicclassStudent{intnum;Stringsname;Stringsex;intage;Stringdept;publicintgetNumreturnnum;publicvoidsetNumintnum{thisnum=num;publicStringgetSnamereturnsname;publicvoidsetSnameStringsnamethissname=sname;publicStringgetSex{returnsex;publicvoidsetSexStringsexthis.sex=sex;publicintgetAgereturnage;}publicvoidsetAgeintagethisage=age;}publicStringgetDept{returndept;publicvoidsetDeptStringdept{this.dept=dept;publicStudentintnumStringsnameStringsexintageStringdeptsuper;thisnum=num;thissname=sname;thissex=sex;thisage=age;this.dept=dept;
4.ui包中的类:1LoginUI类此类为登陆界面,在这个界面上,设置有两个按钮,学生按钮,教师按钮给这两个按钮注册事件addActionListener分别在内部类TeacherLoginActionListene和StudentLoginActionListener中的默认方法actionPerformed中创建TeacherLoginlll类和StudentLoginUI类的对象,即打开教师登陆界面和学生登录界面,并将原登陆界面关闭LoginUI类源代码packageui;importjava.awt.*;importjavax.swing.*;publicclassLoginUIextendsJFrame.JLabel11;JButtonbt1bt2;Containercp;publicLoginUI11=newJLabel〃请选择用户类型〃;bt1=newJButton“教师〃;bt2=newJButton〃学生〃;JPanelpl=newJPanel;pl.setLayoutnull;
11.setBounds15015012040;pl.add11;btl.setBounds1202308030;pl.addbtl;bt
2.setBounds2202308030;pl.addbt2;btl.addActionListenernewTeacherLoginActionListener;//注册事件bt
2.addActionListenernewStudentLoginActionListener;//注册事件cp=getContentPane;this.setBounds200200pl.getHeightpl.getHeight;cp.addpl;this.setTitle/z用户登录界面〃;this.setSize400400:this.setVisibletrue;this.addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEventeSystemexit0;-};}classTeacherLoginActionListenerimplementsActionListener{publicvoidactionPerformedActionEventenewTeacherLoginUI;dispose;classStudentLoginActionListenerimplementsActionListener.publicvoidactionPerformedActionEventenewStudentLoginUI;dispose;}publicstaticvoidmainString[]args{newLoginUI;}执行截图如下2StudentLoginllI类此类为学生登陆界面,在这个界面上有两个文本框,分别输入学生姓名和登录密码,还有两个按钮,登陆和退出输入后,从两个文本框中获取用户输入的内容,点击“登陆”按钮时,调用StudentDao类中的studentLogin方法验证是否存在该用户若存在,则创建StudentScoreUI类的对象,即打开学生成绩界面,显示此登陆学生的成绩信息,若不存在,则提示密码错误StudentLoginUI类源代码packageui;importjava.awt.*;importjavax.swing.*;importdao.StudentDao;publicclassStudentLoginUIextendsJFrameJLabel1112;JTextField11;JPasswordFieldt2;JButtonbt1bt2;Containercp;publicstaticStringst1;publicStringst2;publicStudentLoginUI=newJLabel学生姓名〃;=newJLabel〃密码〃;11=newJTextField12;t2=newJPasswordField12;btl=newJButtonz,成绩查询〃;bt2=newJButton〃退出〃;JPanelpl=newJPanel;pl.setLayoutnull;pl.addt2;btl.setBounds15023012030;pl.addbtl;bt
2.setBounds2802308030;pl.addbt2;btl.addActionListenernewLoginActionListener;//注册事件bt
2.addActionListenernewExitActionListener;//注册事件cp=getContentPane;this.setBounds200200pl.getHeightpl.getHeight;cp.addpl;this.setTitle/z学生登录界面〃;this.setSize400400;this.setVisibletrue;this.addWindowListenernewWindowAdapterpublicvoidwindowClosingWindowEvente{System.exit0;}};}classLoginActionListenerimplementsActionListener{publicvoidactionPerformedActionEventest1=
11.getText;st2=t
2.getText;StudentDaooneStudentDao=newStudentDaoO;booleanisSuccess=oneStudentDao.studentLoginst1st2;ifisSuccess{newStudentScoreUI;dispose;‘elseJOptionPane.showMessageDialognul1〃用户名密码错误〃,〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;classExitActionListenerimplementsActionListener〔publicvoidactionPerformedActionEventeSystemexit0;-*apublicstaticvoidmainString[]args{newStudentLoginUI;-*}执行截图如下3StudentScoreUI类此类为学生成绩界面,此类中有一个标签和一个表格标签中从StudentLoginUI类中获取学生登录时使用的用户名,显示在标签中以表示以下是某某同学的成绩信息表格中为此学生的成绩调用ScoreDao类中的queryScorel将得到的ArrayList对象Iis放入Vector对象中,形成表格StudentScoreUI类源代码packageui;importjava.awt.*;importjavax.swing.*;importjava.util.*;importmodel.Score;importdao.ScoreDao;publicclassStudentScoreUIextendsJFrameStringaa二StudentLoginUI.st1;JLabelselectionLabel;JPaneltopPanel;Containercontainer;JTabletable;JScrollPanebookScrollPane;JPanelbottomPanel;publicStudentScoreUIcontainer=this.getContentPane;selectionLabel=newJLabelaa+z/同学本学期成绩如下〃;topPanel=newJPanel;topPaneLsetLayoutnewFlowLayoutFlowLayout.CENTER;topPanel.addselectionLabel;thisaddBorderLayout.NORTHtopPanel;table=newJTable;bookScrollPane=newJScrollPanetable;thisaddBorderLayout.CENTERbookScrollPane;bottomPanel=newJPanel;thisaddBorderLayout.SOUTHbottomPanel;this.setTitle/z学生成绩查询”;this.setSize600450;this.setVisibletrue;ScoreDaooneScore=newScoreDao;ArrayList1is=oneScore.queryScoreaa;VectorStringhead=newVector;headadd〃学号〃;head.add〃姓名〃;headadd/z学科〃;headaddz,成绩〃;head.add〃学分〃;VectorVectorcontent=newVector;forinti二0;ilis.size;i++Vectorrow=newVector;ScoreoneScorel=Scorelis.geti;row.addoneScorel.getNum;row.addoneScorel.getSnameO;row.addoneScorel.getCourse;row.addoneScorel.getScoreO;row.addoneScorel.getCredit;contentaddrow;DefaultTableModelmodel=newDefaultTableModelcontenthead;table.setModelmodel;repaint;执行截图如下4TeacherLoginllI类此类为教师登陆界面,在这个界面上有两个文本框,分别输入教师姓名和登录密码,还有两个按钮,登陆和退出输入后,从两个文本框中获取用户输入的内容,点击“登陆”按钮时,调用TeacherDao类中的queryTeacher方法验证是否存在该用户若存在创建则提示密码错误TeacherLoginUI类源代码:packageui;importjava.awt.*;importjimportjavax.swing.*;importdao.TeacherDao;publicclassTeacherLoginUIextendsJFrameJLabel1112;JTextField11;JPasswordFieldt2;JButtonbt1bt2;Containercp;publicTeacherLoginUI=newJLabel〃教师姓名〃;二newJLabel密码〃;11=newJTextField12;t2=newJPasswordField12;bt1=newJButton〃登录〃;bt2=newJButton〃退出〃;JPanelpl=newJPanel;pl.setLayoutnull;
11.setBounds1501508040;pl.add11;pl.addbt2;bt
1.addActionListenernewLoginActionListener;〃注册事件bt
2.addActionListenernewExitActionListener;//注册事件cp=getContentPane;this.setBounds200200pl.getHeightpl.getHeight;cp.addpl;this.setTitleC教师登录界面〃;this.setSize400400;this.setVisibletrue;this.addWindowListenernewWindowAdapterpublicvoidwindowClosingWindowEvente{System.exit0;}};classLoginActionListenerimplementsActionListenerpublicvoidactionPerformedActionEventeStringst1=
11.getText;Stringst2二t
2.getText;TeacherDaooneTeacherDao=newTeacherDaoO;booleanisSuccess=oneTeacherDao.queryTeacherstlst2;ifisSuccess\newTeacherMainUI;dispose;}elseJOptionPane.showMessageDialognull用户名密码错误〃,〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;}classExitActionListenerimplementsActionListener{publicvoidactionPerformedActionEventeSystemexit0;}}publicstaticvoidmainString[]args{newTeacherLoginUI;执行截图如下5TeacherMainUI类此类为教师主界面类,在此界面上有一个菜单栏,三个菜单文件,查询,修改其中“文件”菜单中有“退出”菜单项,点击时跳出对话框问是否真的退出,若点击是,窗口关闭,若点击否,回复原界面“查询菜单中有“学生基本信息”和“学生成绩信息,,两个菜单项当点击“学生基本信息”时,通过注册事件,创建InformationQueryllI类的对象,即打开查询学生基本信息的窗口,当点击“学生成绩信息”时,通过注册事件,创建ScoreQueryUI类的对象,即打开查询学生成绩信息的窗口修改菜单中有“增加新生信息”“删除毕业生信息”“增加成绩信息”和“删除成绩信息”四个菜单项,当点击“增加新生信息”时,通过注册事件,创建StudentAddUI类的对象即打开添加学生基本信息的窗口,当点击“删除毕业生信息时,通过注册事件,创建StudentDeIeteUI类的对象即打开删除学生基本信息的窗口,当点击“增加成绩信息时,通过注册事件,创建ScoreAddUI类的对象,即打开添加成绩信息的窗口,当点击“删除成绩信息时,通过注册事件创建ScoreDeleteUI类的对象,即打开删除成绩信息的窗口TeacherMainUI类源代码:packageui;importjava.awt.*;importjavax.swing.*;publicclassTeacherMainUIextendsJFrameContainerctp;TeacherMainUI{ctp二this.getContentPane;this.setTitle〃欢迎进入学生管理系统!〃;ctp.setLayoutnewBorderLayout;JMenuBarmenuBar=newJMenuBar;buiIdMainMenumenuBar;thissetJMenuBarmenuBar;this.setBounds100100400300;this.setVisibletrue;}publicvoidbui1dMainMenuJMenuBarmenuBarJMenufileMenu=newJMenu文件〃;JMenuItemexitMenuItem二newJMenuItem〃退出〃;exitMenuItem.addActionListenernewExitActionListener;//注册事件fileMenu.addexitMenuItem;menuBar.addfileMenu;JMenuqueryMenu=newJMenu〃查询〃;JMenuItemqueryMenuItem=newJMenuItem〃学生基本信,息〃;JMenuItemqueryScoreMenultem=newJMenuItem/z学生成绩查询〃;queryMenuItem.addActionListenernewQueryActionListener;//注册事件queryScoreMenuItem.addActionListenernewQueryScoreActionListener;〃注册事件queryMenu.addqueryMenuItem;queryMenu.addqueryScoreMenuItem;menuBar.addqueryMenu;JMenuchangeMenu二newJMenu〃修改〃;JMenuItemaddMenuItem=newJMenuItemz/增加新生信息〃;JMenuItemdeleteMenuItem=newJMenuItemz,删除毕业生信息〃;JMenuItemaddScoreMenuItem=newJMenuItemz/增加成绩信息〃;JMenuItemdeleteScoreMenuItem=newJMenuItem/z删除成绩信息〃);addMenuItem.addActionListenernewAddActionListener;//注册事件deleteMenuItem.addActionListenernewDeleteActionListener;//注册事件addScoreMenuItem.addActionListenernewAddScoreActionListener;//注册事件deleteScoreMenuItem.addActionListenernewDeleteScoreActionListener;//注册事件changeMenu.addaddMenuItem;changeMenu.adddeleteMenuItem;changeMenu.addaddScoreMenuItem;changeMenu.adddeleteScoreMenuItem;menuBar.addchangeMenu;}classExitActionListenerimplementsActionListener{publicvoidactionPerformedActionEventeintresult=JOptionPane.showConfirmDialognull〃真的要推出吗〃,〃提示信息〃,JOptionPane.YES_NO_OPTIONJOptionPane.QUESTION_MESSAGEnull;ifresult二二0System.exit0;elseifresult==1classQueryScoreActionListenerimplementsActionListenerpublicvoidactionPerformedActionEventenewScoreQueryUI;-}classQueryActionListenerimplementsActionListenerpublicvoidactionPerformedActionEvente{newInformationQueryUI;classAddActionListenerimplementsActionListener{publicvoidactionPerformedActionEvente{newStudentAddUI;classDeleteActionListenerimplementsActionListenerpublicvoidactionPerformedActionEventenewStudentDeleteUI;classAddScoreActionListenerimplementsActionListenerpublicvoidactionPerformedActionEventenewScoreAddUI;classDeleteScoreActionListenerimplementsActionListenerpublicvoidactionPerformedActionEventenewScoreDeleteUI;publicstaticvoidmainString[]argsnewTeacherMainUI;执行截图如下6InformationQueryUI类此类为学生基本信息查询界面类,在此界面上有一个标签,一个下拉列表框,-一个文本框和一个按钮点击下拉列表框时,可以选择要检索的方式,即要检索的属性,单击时,通过注册事件,在内部类的方法里获取所点击的属性名称,保存在一个String型的变量里在文本框中输入要检索的属性内容,单击“检索”按钮时,通过注册事件,在内部类的方法中把刚才获取的属性参数和内容参数传给StudentDao类的queryStudent方法,从而获取检索内容,再把检索得到的内容通过Vector对象放入ArrayList类的对象Iis中,从而使检索结果显示在表格中InformationQueryUI类源代码packageui;importjava.awt.*;importjavax.swing.*;importjava.util.*;importmodel.Student;importdao.StudentDao;publicclassInformationQueryUIextendsJFrameJLabelselectionLabel;JComboBoxfieldComboBox;JPaneltopPanel;JButtonretrievalButton;JTextFieldkeywordText;Containercontainer;StringfieldSelected;intselectedNum;JTabletable;JScrollPanebookScrollPane;JPanelbottomPanel;publicInformationQueryUIcontainer=this.getContentPane;selectionLabel=newJLabel〃检索方式〃;fieldComboBox=newJComboBox;fieldComboBox.additem..z/;fieldComboBox.addltem〃学号〃;fieldComboBox.additemz/姓名〃;fieldComboBox.additem〃年龄〃;fieldComboBox.addltem〃性别〃;fieldComboBox.addltem〃系别〃;fieldComboBox.addltemListenernewSelectedListener;//下拉列表框注册事件注册事件keywordText=newJTextField〃〃,20;retrievalButton=newJButton〃检索;topPanel=newJPanel;topPanel.setLayoutnewFlowLayoutFlowLayout.LEFT;keywordText.setSizetopPaneLgetWidth/2topPanel.getWidthO;topPanel.addselectionLabel;topPanel.addfieldComboBox;topPaneLaddkeywordText;topPanel.addretrievalButton;thisaddBorderLayout.NORTHtopPanel;retrievalButton.addActionListenernewRetrievalActionListener;//给检索按钮注册事件table=newJTable;bookScrollPane=newJScrolIPanetable;thisaddBorderLayout.CENTERbookScrollPane;bottomPanel=newJPanel;thisaddBorderLayout.SOUTHbottomPanel;this.setTitle,z学生信息检索查询系统〃;this.setSize600450;this.setVisibletrue;classSelectedListenerimplementsItemListenerpublicvoiditemStateChangedItemEventeventifevent.getStateChange==ItemEvent.SELECTED{selectedNum=fieldComboBox.getSelectedlndexO;//获取文本信息classRetrievalActionListenerimplementsActionListenerpublicvoidactionPerformedActionEventevent{switchselectedNumcase1:fieldSelected=〃nunT;break;case2:fieldSelected=〃sname〃;break;case3:fieldSelected=〃age〃;break;case4:fieldSelected=〃sex〃;break;case5:fieldSelected=〃dept〃;break;Stringkey=keywordText.getText;StudentDaooneStudentDao=newStudentDaoO;ArrayListlis=oneStudentDao.queryStudentfieldSelectedkey;VectorStringhead=newVector;headadd〃学号〃;headaddz/姓名〃;head.add〃年龄〃;headadd/z性别〃;headadd系别〃;VectorVectorcontent=newVector;forinti=0;ilis.size;i++■.Vectorrow=newVector;StudentoneStudent=Studentlis.geti;row.addoneStudent.getNum;row.addoneStudent.getSname;row.addoneStudent.getAge;row.addoneStudent.getSex;row.addoneStudent.getDept;contentaddrow;*DefaultTableModelmodel=newDefaultTableModelcontenthead;table.setModelmodel;repaint;}publicstaticvoidmainString[]argsnewInformationQueryUI;}}执行截图如下7ScoreQueryUI类此类为学生成绩查询界面类,在此界面有一个标签,一个文本框,一个按钮在文本框中输入要查询成绩的学生姓名,单击“查询”按钮时,通过注册事件在内部类的方法里,获取从文本框中获取的学生姓名信息,并把此信息作为实参传给ScoreDao类的queryScore方法,得到查询结构再把查询结构通过Vector对象放入ArrayList类的对象Iis中,从而使检索结果显示在表格中ScoreQueryUI类源代码packageui;importjava.awt.*;importjavax.swing.*;importjava.util.*;importmodel.Score;importdao.ScoreDao;publicclassScoreQueryUIextendsJFrameJLabelselectionLabel;JPaneltopPanel;JButtonretrievalButton;JTextFieldkeywordText;Containercontainer;StringfieldSelected;intselectedNum;JTabletable;JScrolIPanebookScrolIPane;JPanelbottomPanel;publicScoreQueryUI、container=this.getContentPane;selectionLabel=newJLabel〃学生姓名〃;keywordText=newJTextField〃〃,20;topPanel=newJPanel;topPanel.setLayoutnewFlowLayoutFlowLayout.LEFT;keywordText.setSizetopPanel.getWidth/2topPanel.getWidthO;topPanel.addselectionLabel;topPanel.addkeywordText;topPanel.addretrievalButton;thisaddBorderLayout.NORTHtopPanel;retrievalButton.addActionListenernewRetrievalActionListener;//给检索按钮注册事件table=newJTable;bookScrolIPane=newJScrollPanetable;thisaddBorderLayout.CENTERbookScrolIPane;bottomPanel=newJPanel;thisaddBorderLayout.SOUTHbottomPanel;this.setTitle(/z学生信息检索查询系统〃);this.setSize600450;this.setVisibletrue;classRetrievalActionListenerimplementsActionListener{publicvoidactionPerformedActionEventargOStringkey=keywordText.getText;ScoreDaooneScore=newScoreDao;ArrayListlis=oneScore.queryScorekey;VectorStringhead=newVector;headadd〃学号〃;head.add〃姓名〃;headaddz,学科〃;headadd〃成绩〃;head.add学分〃;VectorVectorcontent=newVector;forinti=0;ilis.size;i++Vectorrow=newVector;ScoreoneScorel=Scorelis.geti;row.addoneScorel.getNum;row.addoneScorel.getSnameO;row.addoneScorel.getCourse;row.addoneScorel.getScoreO;row.addoneScorel.getCredit;content.addrow;DefaultTableModelmodel=newDefaultTableModelcontenthead;table.setModelmodel;repaint;publicstaticvoidmainString[]argsnewScoreQueryUI;}}执行截图如下8StudentAddllI类此类为添加学生基本信息界面类,在此界面中有五个标签,五个文本框,还有两个按钮“添加”“退出”o根据五个标签的提示,分别在五个文本框中输入信息当单击“添加”按钮时,通过注册事件,在内部类的actionPerformed方法中,获取五个文本框中的信息,并转换成相应的基本数据类型,通过StudentDao类的addStudent方法,将数据写入数据库的student表中若添加成功,提示成功,否则提示失败StudentAddllI类源代码packageui;importjava.awt.*;importjavax.swing.*;importdao.StudentDao;publicclassStudentAddUIextendsJFrameJLabel1112131415;JTextFieldtlt2t3t4t5;JButtonbt1bt2;publicStudentAddUI{二newJLabel〃学号〃;=newJLabel〃姓名〃;=newJLabel性别〃;二newJLabel〃年龄〃;=newJLabel系别〃;11=newJTextField12;t2=newJTextField24;t3二newJTextField24;t4=newJTextField24;t5=newJTextField6;bt1=newJButton〃添加〃;bt2二newJButton〃退出〃;JPanelpl=newJPanel;btl.setBounds1403008030;pl.addbtl;bt
2.setBounds2803008030;pl.addbt2;btl.addActionListenernewAddListener;bt
2.addActionListenernewCloseListener;this.setBounds200200pl.getHeightpl.getHeight;thisaddpl;this.setTitlez/增添新生录入界面〃;this.setSize400400;this.setVisibletrue;this.addWindowListenernewWindowAdapter//匿名类开始publicvoidwindowClosingWindowEvente//把退出窗口的语句写在本方法中dispose;};}classAddListenerimplementsActionListener{publicvoidactionPerformedActionEventargO{StudentDaooneStudentDao=newStudentDaoO;intnum=Integerparselnttl.getText;Stringsname=t
2.getText;Stringsex=t
3.getText;intage=Integerparselntt
4.getText;Stringdept二t
5.getText;booleanissuccess=oneStudentDao.addStudentnumsnamesexagedept;ifissuccess、JOptionPane.showMessageDialognul1insertsuccess”〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;
11.setText〃〃;t
2.setText〃〃;t
3.setText〃〃;t
4.setText〃〃;t
5.setText〃〃;}else\JOptionPane.showMessageDialognul1insertfailure”〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;classCloseListenerimplementsActionListenerpublicvoidactionPerformedActionEventedispose;}publicstaticvoidmainString[]argsnewStudentAddUI;执行截图如下9StudentDeleteUI类此类为删除学生基本信息界面类在此界面中有一个标签,一个文本框,还有两个按钮“删除”“退出”根据标签提示,在文本框中输入要删除成绩记录的学生姓名当单击“删除”按钮时,通过注册事件,在内部类的actionPerformed方法中,获取这个文本框中的信息,作为实参,通过StudentDao类的deIeteStudent方法,就该省成绩信息删除若删除成功,提示成功,否则提示失败StudentDeleteUI类源代码packageui;importjava.awt.*;importjavax.swing.*;importdao.StudentDao;publicclassStudentDeleteUIextendsJFrameJLabel11;JTextField11;JButtonbt1bt2;publicStudentDeleteUI11二newJLabel〃请输入要删除基本信息的学生姓名〃;11=newJTextField20;btl=newJButton〃删除〃;bt2=newJButton〃退出〃;JPanelpl=newJPanel;pl.setLayoutnull;
11.setBounds10010025050;pl.add11;
11.setBounds15020010030;pl.addt1;btl.setBounds1403008030;pl.addbtl;bt
2.setBounds2803008030;pl.addbt2;btl.addActionListenernewDeleteListener;bt
2.addActionListenernewCloseListener;this.setBounds200200pl.getHeightpl.getHeight;thisaddpl;this.setTitleC删除毕业生界面〃;this.setSize400400;this.setVisibletrue;this.addWindowListenernewWindowAdapter//匿名类开始publicvoidwindowClosingWindowEvente//把退出窗口的语句写在本方法中dispose;}//窗口关闭};//匿名类结束classDeleteListenerimplementsActionListenerpublicvoidactionPerformedActionEventargOStudentDaooneStudentDao=newStudentDaoO;Stringsname=
11.getText;booleanissuccess=oneStudentDao.deleteStudentsname;ifissuccess{JOptionPane.showMessageDialognul1deletesuccess”〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;
11.setText〃〃;}else\JOptionPane.showMessageDialognul1deletefailure”〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;classCloseListenerimplementsActionListenerpublicvoidactionPerformedActionEventedispose;}publicstaticvoidmainString[]args.newStudentDeleteUI;执行截图如下10ScoreAddUI类此类为添加学生成绩信息界面类,在此界面中有五个标签,五个文本框,还有两个按钮“添加”“退出”根据五个标签的提示,分别在五个文本框中输入信息当单击“添加”按钮时,通过注册事件,在内部类的actionPerformed方法中,获取五个文本框中的信息,作为实参,并转换成相应的基本数据类型,通过ScoreDao类的addScore方法,将数据写入数据库的score表中若添加成功,提示成功,否则提示失败ScoreAddUI类源代码packageui;importjava.awt.*;importjavax.swing.*;importdao.ScoreDao;publicclassScoreAddUIextendsJFrameJLabel1112131415;JTextFieldtlt2t3t4t5;JButtonbt1bt2;publicScoreAddUI二newJLabel〃学号〃;=newJLabel〃姓名〃;=newJLabel〃学科〃;=newJLabel〃成绩〃;=newJLabel〃学分〃;11=newJTextField20;t2=newJTextField20;t3=newJTextField20;t4=newJTextField20;t5二newJTextField20;bt1=newJButton〃添加〃;bt2=newJButton〃退出〃;JPanelpl=newJPanel;pl.setLayoutnull;
11.setBounds1001008030;pl.add11;
11.setBounds17010010030;pl.addt1;pl.addbt2;bt
1.addActionListenernewAddListener;bt
2.addActionListenernewCloseListener;this.setBounds200200pl.getHeightpl.getHeight;thisaddpl;this.setTitleC添加成绩信息录入界面〃;this.setSize400400;this.setVisibletrue;this.addWindowListenernewWindowAdapter//匿名类开始publicvoidwindowClosingWindowEvente//退出窗口的语句写在本方法中dispose;};classAddListenerimplementsActionListenerpublicvoidactionPerformedActionEventargOScoreDaooneScoreDao=newScoreDao;intnum=Integerparselnttl.getText;Stringsname=t
2.getText;Stringcourse=t
3.getText;intscore=Integerparselntt
4.getText;intcredit=Integerparselntt
5.getText;booleanissuccess=oneScoreDao.addScorenumsnamecoursescorecredit;ifissuccessJOptionPane.showMessageDialognul1insertsuccess”,〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;
11.setText〃〃;t
2.setText〃〃;t
3.setText〃〃;t
4.setText〃〃;t
5.setText〃〃;elseJOptionPane.showMessageDialognul1insertfailure”〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;classCloseListenerimplementsActionListenerpublicvoidactionPerformedActionEventedispose;}publicstaticvoidmainString[]argsnewScoreAddUI;}}执行截图如下11ScoreDeletelll类此类为删除学生成绩信息界面类在此界面中有一个标签,一个文本框,还有两个按钮“删除”“退出”根据标签提示,在文本框中输入要删除成绩记录的学生姓名当单击“删除”按钮时,通过注册事件,在内部类的actionPerformed方法中,获取这个文本框中的信息,作为实参,通过ScoreDao类的deIeteScore方法,就该省成绩信息删除若删除成功,提示成功,否则提示失败ScoreDeleteUI类源程序packageui;importimportimportpublicJLabel11;JTextField11;JButtonbt1bt2;publicScoreDeleteUI11=newJLabel〃请输入要删除成绩信息的学生姓名〃;11=newJTextField20;btl=newJButton〃删除〃;bt2=newJButton〃退出〃;JPanelpl二newJPanel;pl.setLayoutnull;
11.setBounds100100220pl.add11;t
1.setBounds150150100pl.addtl;btl.setBounds14030080pl.addbtl;bt
2.setBounds28030080pl.addbt2;btl.addActionListenernewDeleteListener;bt
2.addActionListenernewCloseListener;this.setBounds200200pl.getHeightpl.getHeight;thisaddpl;this.setTitleC删除成绩信息界面〃;this.setSize400400;this.setVisibletrue;this.addWindowListenernewWindowAdapter{//匿名类开始publicvoidwindowClosingWindowEvente//把退出窗口的语句写在本方法中{dispose;}//窗口关闭;//匿名类结束classDeleteListenerimplementsActionListenerpublicvoidactionPerformedActionEventeScoreDaooneScoreDao=newScoreDao;Stringsname=
11.getText;booleanissuccess=oneScoreDao.deleteScoresname;ifissuccess{JOptionPane.showMessageDialognul1deletesuccess”〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;
11.setText〃〃;elseJOptionPane.showMessageDialognul1deletefailure”〃提示信息〃,JOptionPane.INFORMATION_MESSAGE;classCloseListenerimplementsActionListenerpublicvoidactionPerformedActionEventedispose;}publicstaticvoidmainString[]argsnewScoreDeleteUI;执行截图如下:五.课程设计心得与体会这次试验设计我做的是学生信息管理系统学生信息管理系主要对在校学生的个人基本信息以及成绩信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供成绩查询功能我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设虽然系统的基本功能都已实现,但还是存在系统不稳定等多个问题尚待解决我在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有现实意义所以在准备工作中要正确分析用户需求,了解现实应用,画出流程图,把大体框架做好,然后再逐一细化我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程
六、参考文献肖磊李钟尉Java实用教程人民邮电出版社2008年5月第一版
11.setBounds1501508040;pl.add11;t
1.setBounds2501508030;pl.addt1;
12.setBounds1501908040;pl.add12;t
2.setBounds2501908030;
11.setBounds2501508030;pl.addtl;
12.setBounds1501908040;pl.add12;t
2.setBounds2501908030;pl.addt2;bt
1.setBounds1502308030pl.addbt1;bt
2.setBounds2502308030pl.setLayoutnull;setBounds100100pl.add11;t
1.setBounds170100pl.addt1;setBounds100140pl.add12;t
2.setBounds170140pl.addt2;setBounds100180pl.add13;t
3.setBounds170180pl.addt3;setBounds100220pl.add14;t
4.setBounds170220pl.addt4;setBounds100260pl.add15;t
5.setBounds170260pl.addt5;8030;10030;8030;20030;8030;20030;8030;20030;8030;6030;
12.setBounds1001408030;pl.add12;t
2.setBounds17014020030;pl.addt2;
13.setBounds1001808030;pl.add13;t
3.setBounds17018020030;pl.addt3;
14.setBounds1002208030;pl.add14;t
4.setBounds17022020030;pl.addt4;
15.setBounds1002608030;pl.add15;t
5.setBounds1702606030;pl.addt5;btl.setBounds1403008030;pl.addbtl;bt
2.setBounds2803008030;。