Java程序课程设计---一个简单的学生成绩管理信息系统.docx
与M龙卷毅学科学学就java程序设计试验报告课«>一个简洁的学生成果管理信息系统姓.名:.学.号,班.级:.指导老师,时间:12月20日团队完成:考核结果1.绪论(内容:要求小四号字体)此次课题是一个简洁的学生管理系统,该课题涉与数据库、JaYa等领域。要求达到以下功能:1 .能够依据学生姓名、学号、班级、课程名称查询详细内容。2 .能够实现依据单科成果、总成果、平均成果、学号排序。3 .能够实现学生信息的插入、删除和修改。4 .能够查询每个课程的最高分、最低分与相应学生姓名、班级和学号。5 .能够查询每个班级某门课程的优秀率(90分与以上)、不与格率,并进行排序。6 .能够运用图形界面进行操作。要实现这些功能须要娴熟运用数据库和JaVa编程语言,并且能够实现功能组件6个文本域、6个标签、1个按钮功能实现添加数据实现过程对按钮添加监控,实现按钮事务为获得文本域中的信息,并执行SQ1.的INSERT语句。Delete类:功能组件1个单行文本、1个标签、1个按钮、1个多行文本功能实现删除数据实现过程与修改数据类似,对按钮添加监控,实现按钮事务为获得文木域中的学号信息,并执行SQ1.的DE1.ETE语句:不同的是以学号为主键进行杳找并将删除信息输出到文本框中。Modify类:功能组件6个单行文本、6个标签、1个按钮功能实现修改数据实现过程与添加数据类似,对按钮添加监控,实现按钮事务为获得文木域中的信息,并执行SQ1.的UPDATE语句:不同的是以学号为主键进行查找并更新,Query类:功能组件5个按钮、三个单行文本组件、1个卜拉框、1个多行文本功能实现按学号查询、按姓名查询、按班级查询、按课程查询、显示全部实现过程对按钮添加监控,共有五个监控事务,前三个实现按钮事务为先获得文本域中的信息,依据对应查询的要求执行相应的SQ1.的SE1.1.ECT语句:按课程查询通过在下来框中选挣对应的选项,即查询相应的课程:第五个查询按钮将全部信息在多行文本框中输出。MyFrane类:主类,实现面板,可在其上进行对插入、删除、修改、杳询等方法的调用,并且对界面进行r设计和规划。4)界面设计:功能组件4个按钮、1个背景、1个标签文本、1个面板功能实现杳询数据、添加数据、删除数据、修改数据实现过程对按钮添加监控,共有4个监控事务,实现按钮事务为创建对应功能的类对象,出现相应的功能窗口。横图如下:3.算法实现与分析(内容:要求小四号字体)1 .主界面2 .添加数据3 .修改数据4 .删除数据5 .查询数据(1)按学号查询(2)按姓名查询(3)按班级查询(4)按课程名称查询(5)显示全部信息4 .运行调试与探讨(内容:要求小四号字体)1 .运行与调试过程中遇到的如下的问题(1)数据库的链接出现问题,导致表格找不到。解决方法:重新建表(2)编译时系统没有提示错误,但是运行的界面中某些接1.l不能实现。解决方法:经检查发觉是连接数据库的密码错误,改正后可以运行。2 .此程序还存在下列不完善的地方(1)面板设计较为单调,欠缺调色,还可以在面板上添加制作人等信息。(2)在添加信息时,光标可以依靠键盘上下移动,不须要鼠标点击,这样可以更便利快捷。<3)修改数据的界面比例不是很协渊(4)修改数据的源代码不能实现选择性的修改:例如依据学号修改姓名。(5)显示信息不能做到数据的对齐,使得界面不美观。(6)第一次查询用的信息不能自动更新,导致后面的查询给人一种凌乱感:例如先运用学号120702119查询,再运用姓名“张三”查询,此时上一个学号的信息还保留,并不能更新到“张三”的学号。(7)没有退出的按钮,尚未实现退出语句。5 .设计体会与小结(内容:要求小四号字体)选择“个简洁的学生成果管理系统”作为这一次的课即,是因为这个课题主要运用的是Java与数据库的相关学问,而这个学期,我们正好学习了这两门课程,在这个课题中Java与数据库学问的结合,是对这两个课程理解学习成果的一个双重考察。第步,我们确定了课程的整体思路。首先在数据库中建好相关表格,然后将数据库连接到JaVa,最终运用JaVa编程实现相关界面与系统功能。思路确定后,在详细实现过程中,我们遇到了一些问题.首先我们对Java连接数据库的相关学问不是特殊清晰,其次应用JaVa编程实现相关界面不是很娴熟。为解决这些问题,顺当完成课题,我们查阅r相关的资料并且请教了上届的学长,了解了什么叫做架包,知道了怎么实现数据库与mycclipse的连接,如何在myeclipse的环境中运用建表语句以与实现相关界面。有了这些学问作为基础,我们的课程设计便走上了正轨。首先,我们在数据库中建立了包含学生学号、姓名、班级,语文、数学、英语成果的数据的表格,然后JaVa中建立了架包,建立COnneCtionCtil类,获得与数据库的连接,最终就是在myeclipse环境下,运用JaVa语句,将添加数据、查询数据、删除数据、修改数据四个功能分为四个类来实现,另外用一个主类实现面板,可在其上进行插入、删除、修改、查询等功能,并且对界面进行了设计和规划。在这个过程中,我们遇到了很多问题,如数据库连接不上,程序编译没有错误,但功能无法实现等,学长都给了我们很大帮助,次次修改尝试,最终得到了现在的版本,虽然有很多不足与缺点,但是课题顺当完成仍是给了我们很大的满意感,也让我们体会到了程序员的辛苦。通过这次课题的探讨,让我充分相识到自己距离一个合格的程序员还很远,相识到自己相关学问的的储备量还很少,对现在所学的JaVa与数据库课程的驾驭程度还不够,但是在这个过程中我也学习到很多相关学问,充分的相识到要想学好编程语言,就必需勤动手,要常常练习,才能娴熟驾驭每一种方法,光靠大脑的记忆是远远不够的,只能是纸上谈兵。在以后的课程学习中,我肯定会更加重视实践练习,养成良好的编程习惯,这样才能做一个合格的程序员。刚看到这个课题的时候,就先大体确定了整体思路,这个课题要求熟识数据库,Java编程。实现过程中我们须要先在数据库中建立好表,再进行好与Java的连接,再运用myecIipse编程。思路有心但真正实施的时候出现很多问题,通过相关资料的查询和请教上届的学长,在Java中建立了架包,建立ConneetionUtil类,获得与数据库JSD1407的连接,在编程语言环境下写好建表语言,添加包含学生学号、姓名、班级,语文、数学、英语成果的数据。与数据库的连接出现表丢失的现象、要实现这个学生成果管理系统,须要一个主类,以与涉与插入,删除,查询,修改的子类,在主类中调用,达到效果。由于对JaVa语句没有很熟识的驾驭,导致很多代码显得累赘繁琐。在界面上,建立了4个按钮、1个背景、1个标签文本、1个面板,参考文献(内容:要求五号字体)1.数据库系统基础教程(第三版)机械工业出版社2.Java程序设计(第三版)清华高校出版社附录(源代码)(内容:要求小五号字体)一、架包packagecom.tarena.util;igortjava,sq1.Connection;importjava.Sq1.DriverManager;publicclassConnectionllti1publicstaticConnectionRetConnection()throwsException!Class.brj'Vze(*com.11ysql.jdbc.Driver*):Stringurl=*jdbc:mysql:/localhost:3306JSDI407,;StringUSer="rool"Stringpassword=*1234":Connectionconn=DriverManager.getConnecf/o?(ur1,user,password):returnconn;publicstaticvoidmain(StringJargs)throwsException!System,out.printIn(geIConnecIionO');/s通过打印看一下是否连接上了将获得连接的方法封装二、建表语言createtablestudent(novarchar(10)notnull,namevarchar(50)notnull,class_novarchar(2)notnull,Chinesedouble(3,1)notnull,mathdouble(3,1)notnull,engIishdouble(3,1)notnull,primarykey(no):descstudent;insertintostudent(no,name,cIassjio,Chinese,math,english)ValUeS(120702101,'陈丽芳',1,66,77,88):select*fromstudent:三、JaVa编程MainFrane类isportjavax.swing.;i三portjava.awt.:i11ortjava.awt.event.;publicclassMainFrameextendsJFraaeJButtoninsert,query,delete,modify;JPanelpanel,panelllpanel2:publicMainFrameO/TODOAuto-generatednethodstubImageiconing=nevImageIconCl.gif*);J1.abeltextl,text2lpictur=newJ1.abel(i三g);JFramefra三e=nwJFrame("学生成果管理系统”);insert=newJBUttOn(“添加数据;insert.SetBackground(Color,green);insert.addAction1.istener(newinsertActionPerfomed0):qury=nwJBUttOnC查询数据");query.addAction1.istener(nevQueryActionPerfor三ed();query.SetBackground(Color,green);nodify=newJBUttOn("修改数据");nodify.SetBackground(Color,green):Bdify.addAction1.istener(nerInodifyActionPerfomedO):delete=newJBUttOn(,删除数据”);delete.SetBackground(Color,green);delete.addAction1.istener(nevdeleteActionPerfomedO);frame.setSize(360,200);frame.SetDefaultcioseOperation(JFran>e.EXIT_ON_C1.OSE);ContainercontentPane=frame.getContentPaneO;ContentPane.Set1.ayout(newBorder1.ayoutO);textl=newJ1.abelf欢迎运用学生成果管理系统.,J1.abel.CENTER);textl.stFont(newFont("宋体,Font.BO1.D,24);textl.SetForeground(Color,blue);text2=newJ1.abelC192091班罗斌制作“);text2.stFont(newFont(*Ti11esRoman*,Font.ROMAN_BASE1.INE,14);panell=newJPanelO;panell.add(insert);panell.add(query);panel2=newJPanelO;pane12.add(odify);panel2.add(delete);panel1.setpaque(false);panel2.SetOpaque(false);panel=newJPanelO;panel,add(text2,Border1.ayout.N(MlTH);panel,add(panel1,Border1.ayout.NORTH);panel,add(panel2,Border1.ayout.SOUTH);panel.SetOpaque(false);ContentPane.add(text1,Border1.ayout.NORTH);ContentPane.add(panel,Border1.ayout.CENTER);frame.get1.ayeredPaneO.add(picture,newInteger(Integer.MIN_VA1.UE);Toolkitkit=Toolkit.gtDefaultToolkitO;DimensionScreenSize=kit.getScreenSizeO;intScreenIidth=screenSize.width/2:intScreenHeight=screenSize.height/2;intheight=this.getHeight();intwidth=this,getlidth();picture.setBounds(0,0,360,360);(JPanel)contentPane).SetOpaque(false);frame.Set1.ocation(SCreenWidthridth/2,screenHeight-height/2);frame.stVisible(true);publicclassInsertActionPerforinedIiiplementsAction1.istenerpublicvoidactionPerfonned(ActionEvente)newInsertO.setVisibl(true);publicclassIiodifyActionPerfonDedinplementsAction1.istenerpublicvoidactionPerfonned(ActionEvente)newModifyO.SetVisible(true):publicclassQueryActionPerformedi11lenentsAction1.istenerpublicvoidactionPerfonned(ActionEvent)newQuery().setVisible(true);publicclassdeleteActionPerformedinplementsAction1.istenerpublicvoidactionPerfonned(ActionEvente)newDeleteO.setVisible(true):publicstaticvoidmain(Stringargs)newMainFrameO;Insert类importjava.awt.;ioortjava.awt.event.;i三portJavax.swing.;ioortjava.sql.*;publicclassInsertextendsJFrameJTextFieldinputl,input2,input3,input4,input5,input6;J1.abelIabell,label2,label3,labl4,label5;JButtonbutton;staticStatementst;statictry(Class,forNaneCcmlmysql.jdbc.Driver*);Connectioncon=DriVerManager.getConnection(*jdbc:t11ysql:/localhost:3306/jsd1407*,"root","123456");st=con.CreateStatementO;catch(Exceptione)ResultSetrs;publicInsertOinputl=nwJTextField(IS):input2=nwJTextField(IS);input3=nwJTextField(15);input4=nwJTextField(15);input5=nwJTeXtFieId(15);input6=newJTextField(15);JPanelpanel=newJPanelO;panel.Set1.ayout(newGrid1.ayout(6,2);panel.add(newJ1.abe1(“学号"),Border1.ayout.CENTER);panel,add(input1);panel,add(newJ1.abel("姓名"),Border1.ayout.CENTER);panel,add(input2);panel,add(newJ1.abe1(“班级”),Border1.ayout.CENTER);panel,add(input3);panel,add(newJ1.abe1("语文"),Border1.ayout.CENTER);panel,add(input4);panel,add(newJ1.abel("英语panel,add(input5);panel.add(newJ1.abe1("数学”);.panel,add(input);button=nwJBUttOn("添加;button.BddAction1.istener(nevnysql);Containercontainer=gtContentPaneO;container,add(panel,Border1.ayout.CENTER);container,add(button,Border1.ayout.SOUTH);SetTitIeC添加数据窗口);SetDefaultcioseOperation(JFraae.DlSpOSEjxl1.C1.OSE);setSize(250,250);Toolkitkit=Toolkit.gtDefaultTlkitO;DinensionScreenSize=kit.getScreenSizeO;intScreenWidth=screenSize.width/2;intScreenHeight=screenSize.height/2;intheight=this.getHeigtO:intwidth=this,gtfidth();Set1.ocation(screenWidth-width2,screenHeight-height/2);SetVisible(true);classInySqIinlementsAction1.istenerpublicvoidactionPerfonned(ActionEvente)tryStringnumber=inputl.getTextO.trimO;Stringname=input2.getTextO.trimO;Stringclas=input3.getText().trimO;Stringt11=input4.getTextO;doubleChinese=Integer.parselnt(temp);tenp=input4.getText();doubleenglish=Integer.parselnt(temp);temp=input4.getText();doublemaths=Integer.parselnt(temp);if(nunber.equals(*)nan>e.equals(*)clas.equals(*)tenp.equalsC*)JOptionPane.ShowMessageDialog(Insert,this,“请重新愉入提示对话框,1);J1.abelIabell,label2,label3,label4,Iabe15;JButtonbutton;staticStatenentst;statictryClass.forNane(>co三.mysql.jdbc.Driver*);Connectioncon=DriVerManager.getConnection(*jdbc:三ysql:/localhost:3306/jsdl407*,*root*,"123456");st=con.CreateStateoentO;catch(Exceptione)ResultSetrs;publicModifyOinputl=nwJTextField(IS);input2=nwJTextField(15);input3=nwJTextField(15);input4=nwJTeXtField(15);input5=nwJTextField(15);input6=nwJTeXtField(I5);JPanelpanel=newJPanelO;panel.Set1.ayout(newGrid1.ayout(6,2);intScreenYidth=screenSize.vidth/2;intScreenHeight=screenSize.height/2:intheight=this.getHeightO;intwidth=this.getWidthO:Set1.ocation(screenlidth-width2,screenHeight-height2);stVisible(true)classInySqIinlementsAction1.istenerpublicvoidactionPerfonned(ActionEvente)tryStringnumber=inputl.getTextO.trimO;Stringname=input2.getTextO.trimO;Stringclas=input3.getText().trim;Stringtfl=input4.getTextO;doubleChinese=Integer.parselnt(te三p);tenp=input4.getText();doubleenglish=Integer.parselnt(temp);tenp=input4.getText();doublemaths=Integer.parselnt(temp);if(nunber.equals(*)JOptionPane.ShowMessageDialogOfodify.this,“学号不能为空IJ提示对话框,D;elsetry(StringSql="updateStudentsetnaae=''+name+"',class-no=*+clas+*,ChineSe="+Chinese+,english=*+english+*,math=>-aths+*whereno=*+nuaber+*,*;st.executeUpdate(sql);JOptionPane.ShovMessageDialog(Modify.this,“数据修改胜利,提示对话框,1);inputl.setTextinput2.setText(*);input3.setText(*)input4.setText(*);input5.setText("")input6.setText(*);catch(Exceptione)JOptionPane.ShovMessageDialogGiodify.this,*请确认须要修改的学号是否存在,“提示对话框1):,System,out.println(ee);catch(Excepti<meee)System,out.println(eee);QUery类i11ortjava.awt.;importjavax.swing,event.;panel,add(field3);panel.setVisible(true);nainpanel.add(panel);Stringite三s口=r请选择,“语文J英语”,数学;comoBox=newJConboBox(items);button5=newJBUtton("按课程名称杳询”);button5.addAction1.istener(nevMysql5);panel,add(butt(m5);panel.add(cooBox);panel.setVisible(true);mainpanel.add(panel);panel=nevJPanelO;panel,add(buttonl);container,add(mainpanel,Border1.ayout.NORTH);container,add(panel,Border1.ayout.SOUTH);container,add(newJScrollPane(show),Border1.ayout.CENTER);SetTitIeC查询数据);SetDefaultcioseOperation(JFraae.DlSpOSEjxl1.C1.OSE);setSize(750,400);Toolkitkit=Toolkit.gtDefaultTlkitO;DinensionScreenSize=kit.getScreenSizeO;intScreenWidth=screenSize.width/2;intScreenHeight=screenSize.height/2;intheight=this.getHeigtO:intwidth=this,gtfidth();Set1.ocation(SCreenWidthridth/2,screenHeight-height/2);SetVisible(true);classMysqllinleaentsAction1.istenerpublicvoidactionPerfonned(ActionEvente)tryStringsql=*selectfro«Student*;ResultSetrs=st.executeQuery(sql);show.setText(*)show,append(,学号姓名班级语文英语数学"+"n");rtile(rs.nextO)show,append(rs.getString(l)+*)show,append(rs.getString(2)+*");show,a即end(rs.getString(3)+*);sho*,append(rs.getDouble¢4)÷*);shov.append(rs.getDouble(5)+*);show,append(rs.getDouble(6)÷*n*);catch(Exceptionee)classMysql2implenentsAction1.istenerpublicvoidactionPrfo11ned(ActionEvente)tryStringss=fieldl.getText().tri三();Stringsql=>slectfromStudentirtiereno='*+ss+*t*;ResultSetrs=st.executeQuery(sql);show.setText(*)show,append("学号姓名班级语文英语数学"+");rtile(rs.nextO)show,append(rs.getString(l)+*)shv.append(rs.getString(2)+*");shov.a即end(rs.getString(3)+*);show,append(rs.getDouble(4)+*);sho*,append(rs.getDouble(5)+*");Show.a即end(rs.getDouble(6)+*n*);catch(Exceptionee)classMysql3inleentsAction1.istenerpublicvoidactionPrfo11ned(ActionEvente)tryStringss=field2.getText().tri三();Stringsql=*selectfromStudentIrtIerenaae三,*+ss+*t*;ResultSetrs=st.executeQuery(sql);show.setText(*);shov.append("学号姓名班级语文英语数学"+"n");hile(rs.next0)show,append(rs.getString(l)+*)shov.append(rs.getString(2)+*");show,append(rs.getString(3)+*);show,append(rs.getDouble(4)+*);shov.ajend(rs.getDouble(5)+*");show,append(rs.getDouble(6)+*n*);catch(Excepti<mee)classMysql4i11leentsAction1.istenerpublicvoidactionPrfor11ed(ActionEvente)tryStringss=field3.gtText().trin();Stringsql=*selectfroStudentwhereclass-no=*"+ss+"'"ResultSetrs=st.executeQuery(sql);show.setText(*)shov.append(,学号姓名班级语文英语数学"+"n");ile(rs.next0)show,append(rs.getString(1)+*);shov.append(rs.getString(2)+*”);shov.append(rs.getString(3)+*);show.append(rs.getDouble(4)+*);shv.append(rs.getDouble(5)+“");shov.ajend(rs.getDouble(6)+*n*);catch(Excepticmee)classMysql5inleaentsAction1.istenerpublicvoidactionPerfo11nd(ActionEvente)tryStringsql="StringSS=COQOBox.getSelectedIteO.toStringO;if(ss.equals("语文.)sql=*selectno,nane,class-no,ChinesefronStudent”;show.setText(*)show,append("学号姓名班级语文"+"n);elseif(ss.equals("英语")sql=*selctno,naae,class-no,englishfromStudent*;show.setText(*)ShoW.append(,学号姓名班级英语”+*k);elseif(ss.equals(“数学”)sql=*slectno,name,class-no,mathfroStudent"shv.setText(*);show.append("学号姓名班级数学+"n);ResultSetrs=st.executeQuery(sql);dile(rs.nextO)show,append(rs.getString(l)+*):sho*,append(rs.getString¢2)+.*);show,append(rs.getString(3)+*);show,append(rs.getDoubl(4)+<n);catch(Exceptionee)Delete类importjavaawt.:importjava.awt.event.;importjavax.swing.;importjava.sql.;publicclassDeleteextendsJFrameJButtonsearch;JTeXtFieIdinput;JTextAreashow;Connectioncon:Statementst;publicDeleteOJPanelp=newJPanelO;search=newJBUttOn("K除");.input=nevJTextField(IO);show=newJTextArea(6,43);P.add(newJ1.abeIe输入要删除的学号');p.add(input);p.add(search);SetTitIe("删除数据窗口);search.SddAction1.istener(nevMysqlO);show.SetEditableCfalse);add(p,Border1.ayout.NORTH);add(show,Border1.ayout.CENTER);setSize(400,150);Toolkitkit=Toolkit.getDefaultToolkit();DimensionScreenSize=kit.getScreenSize();intScreenWidth=screenSize.width/2;intScreenHeight=screenSize.heigt2;intheight=this.getHeightO;intwidth=this.getVidthO:Set1.ocation(screnlidth-idth2,screenHeight-height/2);SetVisible(true);validate: