-1-扬州大学数学科学学院java程序设计实验报告课题:一个简单的学生成绩管理信息系统姓名:学号:班级:指导教师:时间:12月20日团队完成:考核结果-2-1.绪论(内容:要求小四号字体)此次课题是一个简单的学生管理系统,该课题涉及数据库、Java等领域。要求达到以下功能:1.能够根据学生姓名、学号、班级、课程名称查询具体内容。2.能够实现按照单科成绩、总成绩、平均成绩、学号排序。3.能够实现学生信息的插入、删除和修改。4.能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。5.能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进行排序。6.能够使用图形界面进行操作。要实现这些功能需要熟练使用数据库和Java编得程语言,并且能够实现数据库和Java的连接。2.设计思路(内容:要求小四号字体)1)建立数据库表格:将班级、姓名、学号、成绩等具体信息录入数据库。·数据库系统设计成绩查询系统—--·系统逻辑结构设计学生成绩信息表字段名属性类型空值约束条件学号ID文本notnull主键姓名name文本从键班级class文本从简语文Chinese长整数英语English长整数数学Maths长整数学号姓名班级语文数学英语-3-·数据库截图2)利用Java实现数据库连接,使其可以调用数据库表格中的内容。具体截图如下:3)Java程序编写思路:主要编写了5个类:将添加数据、查询数据、删除数据、修改数据四个功能分别为四个类来实现,此外还有一个主类用于实现面板。Insert类:功能组件6个文本域、6个标签、1个按钮功能实现添加数据实现过程对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的INSERT语句。Delete类:功能组件1个单行文本、1个标签、1个按钮、1个多行文本功能实现删除数据实现过程与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域中-4-的学号信息,并执行SQL的DELETE语句;不同的是以学号为主键进行查找并将删除信息输出到文本框中。Modify类:功能组件6个单行文本、6个标签、1个按钮功能实现修改数据实现过程与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的UPDATE语句;不同的是以学号为主键进行查找并更新。Query类:功能组件5个按钮、三个单行文本组件、1个下拉框、1个多行文本功能实现按学号查询、按姓名查询、按班级查询、按课程查询、显示全部实现过程对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先获取文本域中的信息,根据对应查询的要求执行相应的SQL的SELLECT语句;按课程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询按钮将全部信息在多行文本框中输出。MyFrame类:主类,实现面板,可在其上进行对插入、删除、修改、查询等方法的调用,并且对界面进行了设计和规划。4)界面设计:功能组件4个按钮、1个背景、1个标签文本、1个面板功能实现查询数据、添加数据、删除数据、修改数据实现过程对按钮添加监控,共有4个监控事件,实现按钮事件为创建对应得得得得得得得功能的类对象,出现相应的功能窗口。截图如下:-5-3.算法实现及分析(内容:要求小四号字体)1.主界面2.添加数据3.修改数据-6-4.删除数据5.查询数据(1)按学号查询(2)按姓名查询(3)按班级查询(4)按课程名称查询-7-(5)显示所有信息4.运行调试与讨论(内容:要求小四号字体)1.运行与调试过程中遇到的如下的问题(1)数据库的链接出现问题,导致表格找不到。解决方法:重新建表(2)编译时系统没有提示错误,但是运行的界面中某些接口不能实现。解决方法:经检查发现是连接数据库的密码错误,改正后可以运行。2.此程序还存在下列不完善的地方(1)面板设计较为单调,欠缺调色,还可以在面板上添加制作人等信息。(2)在添加信息时,光标可以依靠键盘上下移动,不需要鼠标点击,这样可以更方便快捷。(3)修改数据的界面比例不是很协调(4)修改数据的源代码不能实现选择性的修改:例如根据学号修改姓名。(5)显示信息不能做到数据的对齐,使得界面不美观。(6)第一次查询用的信息不能自动更新,导致后面的查询给人一种凌乱感:例如先使用学号120702119查询,再使用姓名“张三”查询,此时上一个学号的信息还保留,并不能更新到“张三”的学号。-8-(7)没有退出的按钮,尚未实现退出语句。5.设计体会与小结(内容:要求小四号字体)选择“一个简单的学生成绩管理系统”作为这一次的课题,是因为这个课题主要运用的是Java与数据库的相关知识,而这个学期,我们正好学习了这两门课程,在这个课题中Java与数据库知识的结合,是对这两个课程理解学习成果的一个双重考察。第一步,我们确定了课程的整体思路。首先在数据库中建好相关表格,然后将数据库连接到Java,最后运用Java编程实现相关界面与系统功能。思路确定后,在具体实现过程中,我们遇到了一些问题。首先我们对Java连接数据库的相关知识不是特别清楚,其次应用Java编程实现相关界面不是很熟练。为了解决这些问题,顺利完成课题,我们查阅了相关的资料并且请教了上一届的学长,了解了什么叫做架包,知道了怎么实现数据库与myeclipse的连接,如何在myeclipse的环境中使用建表语句以及实现相关界面。有了这些知识作为基础,我们的课程设计便走上了正轨。首先,我们在数据库中建立了包含学生学号、姓名、班级,语文、数学、英语成绩的数据的表格,然后Java中建立了架包,建立ConnectionUtil类,获得与数据库的连接,最后就是在myeclipse环境下,运用Java语句,将添加数据、查询数据、删除数据、修改数据四个功能分为四个类来实现,另外用一个主类实现面板,可在其上进行插入、删除、修改、查询等功能,并且对界面进行了设计和规划。在这个过程中,我们遇到了许多问题,如数据库连接不上,程序编译没有错误,但功能无法实现等,学长都给了我们很大帮助,一次次修改尝试,最终得到-9-了现在的版本,虽然有许多不足与缺点,但是课题顺利完成仍是给了我们很大的满足感,也让我们体会到了程序员的辛苦。通过这次课题的研究,让我充分认识到了自己距离一个合格的程序员还很远,认识到自己相关知识的的储备量还很少,对现在所学的Java及数据库课程的掌握程度还不够,但是在这个过程中我也学习到了很多相关知识,充分的认识到要想学好编程语言,就必须勤动手,要经常练习,才能熟练掌握每一种方法,光靠大脑的记忆是远远不够的,只能是纸上谈兵。在以后的课程学习中,我一定会更加重视实践练习,养成良好的编程习惯,这样才能做一个合格的程序员。刚看到这个课题的时候,就先大体确定了整体思路,这个课题要求熟悉数据库,Java编程。实现过程中我们需要先在数据库中建立好表,再进行好与Java的连接,再运用myeclipse编程。思路有了,但真正实施的时候出现了很多问题。通过相关资料的查询和请教上一届的学长,在Java中建立了架包,建立ConnectionUtil类,获得与数据库JSD1407的连接,在编程语言环境下写好建表语言,添加包含学生学号、姓名、班级,语文、数学、英语成绩的数据。与数据库的连接出现了表丢失的现象、要实现这个学生成绩管理系统,需要一个主类,以及涉及插入,删除,查询,修改的子类,在主类中调用,达到效果。由于对Java语句没有很熟悉的掌握,导致很多代码显得累赘繁琐。在界面上,建立了4个按钮、1个背景、1个标签文本、1个面板,-10-参考文献(内容:要求五号字体)1.数据库系统基础教程(第三版)机械工业出版社2.Java程序设计(第三版)清华大学出版社附录(源代码)(内容:要求小五号字体)一、架包packagecom.tarena.util;importjava.sql.Connection;importjava.sql.DriverManager;publicclassConnectionUtil{publicstaticConnectiongetConnection()throwsException{Class.forName(com.mysql.jdbc.Driver);Stringurl=jdbc:mysql://localhost:3306/JSD1407;Stringuser=root;Stringpassword=1234;Connectionconn=DriverManager.getConnection(url,user,password);returnconn;-11-}publicstaticvoidmain(String[]args)throwsException{System.out.println(getConnection());}//s通过打印看一下是否连接上了}//将获得连接的方法封装二、建表语言createtablestudent(novarchar(10)notnull,namevarchar(50)notnull,class_novarchar(2)notnull,chinesedouble(3,1)notnull,mathdouble(3,1)notnull,englishdouble(3,1)notnull,primarykey(no));descstudent;insertintostudent(no,name,class_no,chinese,math,english)values(120702101,'陈丽芳',1,66,77,88);select*fromstudent;三、Java编程MainFrame类importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassMainFrameextendsJFrame{JButtoninsert,query,delete,modify;JPanelpanel,panel1,panel2;publicMainFrame(){//TODOAuto-generatedmethodstubImageIconimg=newImageIcon(1.gif);JLabeltext1,text2,picture=newJLabel(img);JFrameframe=newJFrame(学生成绩管理系统);insert=newJButton(添加数据);insert.setBackground(Color.green);insert.addActionListener(newinsertActionPerformed());query=newJButton(查询数据);-12-query.addActionListener(newqueryActionPerformed());query.setBackground(Color.green);modify=newJButton(修改数据);modify.setBackground(Color.green);modify.addActionListener(newmodifyActionPerformed());delete=newJButton(删除数据);delete.setBackground(Color.green);delete.addActionListener(newdeleteActionPerformed());frame.setSize(360,200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);ContainercontentPane=frame.getContentPane();contentPane.setLayout(newBorderLayout());text1=newJLabel(欢迎使用学生成绩管理系统,JLabel.CENTER);text1.setFont(newFont(宋体,Font.BOLD,24));text1.setFo