Java程序课程设计一个简单的学生成绩管理信息系统_第1页
Java程序课程设计一个简单的学生成绩管理信息系统_第2页
Java程序课程设计一个简单的学生成绩管理信息系统_第3页
Java程序课程设计一个简单的学生成绩管理信息系统_第4页
Java程序课程设计一个简单的学生成绩管理信息系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、扬州大学数学科学学院java程序设计实验报告 课 题:一个简单的学生成绩管理信息系统 姓 名: 学 号: 班 级: 指导教师: 时 间: 12月20日 团队完成: 考核结果 1. 绪论(内容:要求小四号字体) 此次课题是一个简单的学生管理系统,该课题涉及数据库、Java等领域。要求达到以下功能: 1. 能够根据学生姓名 、学号、班级、课程名称查询具体内容。 2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。 3. 能够实现学生信息的插入、删除和修改。 4. 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。 5. 能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进

2、行排序。 6.能够使用图形界面进行操作。 要实现这些功能需要熟练使用数据库和Java编得程语言,并且能够实现数据库和Java的连接。2. 设计思路(内容:要求小四号字体)1) 建立数据库表格:将班级、姓名、学号、成绩等具体信息录入数据库。学号姓名班级语文数学英语 ·数据库系统设计 成绩查询系统- ·系统逻辑结构设计学生成绩信息表字段名 属性类型空值约束条件学号ID文本not null主键姓名name文本从键班级class文本从简语文Chinese长整数英语English长整数数学Maths长整数 ·数据库截图2) 利用Java实现数据库连接,使其可以调用数据库表格

3、中的内容。 具体截图如下:3) Java程序编写思路:主要编写了5个类: 将添加数据、查询数据、删除数据、修改数据四个功能分别为四个类来实现,此外还有一个主类用于实现面板。Insert类:功能组件 6个文本域、6个标签、1个按钮功能实现 添加数据实现过程 对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的INSERT语句。Delete类:功能组件 1个单行文本、1个标签、1个按钮、1个多行文本功能实现 删除数据实现过程 与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域中的学号信息,并执行SQL的DELETE语句;不同的是以学号为主键进行查找并将删除信息输出到文本框中。Mo

4、dify类:功能组件 6个单行文本、6个标签、1个按钮功能实现 修改数据实现过程 与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的UPDATE语句;不同的是以学号为主键进行查找并更新。Query 类:功能组件 5个按钮、三个单行文本组件、1个下拉框、1个多行文本功能实现 按学号查询、按姓名查询、按班级查询、按课程查询、显示全部实现过程 对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先获取文本域中的信息,根据对应查询的要求执行相应的SQL的SELLECT语句;按课程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询按钮将全部信息在多行文本框中输

5、出。MyFrame类:主类,实现面板,可在其上进行对插入、删除、修改、查询等方法的调用,并且对界面进行了设计和规划。4) 界面设计: 功能组件 4个按钮、1个背景、1个标签文本、1个面板 功能实现 查询数据、添加数据、删除数据、修改数据 实现过程 对按钮添加监控,共有4个监控事件,实现按钮事件为创建对应 得得得得得得得功能的类对象,出现相应的功能窗口。截图如下:3. 算法实现及分析(内容:要求小四号字体)1.主界面2.添加数据3.修改数据4.删除数据5. 查询数据(1) 按学号查询(2) 按姓名查询(3) 按班级查询(4) 按课程名称查询(5) 显示所有信息4. 运行调试与讨论(内容:要求小四

6、号字体)1. 运行与调试过程中遇到的如下的问题(1) 数据库的链接出现问题,导致表格找不到。 解决方法:重新建表(2) 编译时系统没有提示错误,但是运行的界面中某些接口不能实现。 解决方法:经检查发现是连接数据库的密码错误,改正后可以运行。2.此程序还存在下列不完善的地方(1)面板设计较为单调,欠缺调色,还可以在面板上添加制作人等信息。(2)在添加信息时,光标可以依靠键盘上下移动,不需要鼠标点击,这样可以更方便快捷。(3)修改数据的界面比例不是很协调(4)修改数据的源代码不能实现选择性的修改:例如根据学号修改姓名。(5)显示信息不能做到数据的对齐,使得界面不美观。(6)第一次查询用的信息不能自

7、动更新,导致后面的查询给人一种凌乱感:例如先使用学号120702119查询,再使用姓名“张三”查询,此时上一个学号的信息还保留,并不能更新到“张三”的学号。(7)没有退出的按钮,尚未实现退出语句。5. 设计体会与小结(内容:要求小四号字体)选择“一个简单的学生成绩管理系统”作为这一次的课题,是因为这个课题主要运用的是Java与数据库的相关知识,而这个学期,我们正好学习了这两门课程,在这个课题中Java与数据库知识的结合,是对这两个课程理解学习成果的一个双重考察。第一步,我们确定了课程的整体思路。首先在数据库中建好相关表格,然后将数据库连接到Java,最后运用Java编程实现相关界面与系统功能。

8、思路确定后,在具体实现过程中,我们遇到了一些问题。首先我们对Java连接数据库的相关知识不是特别清楚,其次应用Java编程实现相关界面不是很熟练。为了解决这些问题,顺利完成课题,我们查阅了相关的资料并且请教了上一届的学长,了解了什么叫做架包,知道了怎么实现数据库与myeclipse的连接,如何在myeclipse的环境中使用建表语句以及实现相关界面。有了这些知识作为基础,我们的课程设计便走上了正轨。首先,我们在数据库中建立了包含学生学号、姓名、班级,语文、数学、英语成绩的数据的表格,然后Java中建立了架包,建立ConnectionUtil类,获得与数据库的连接,最后就是在myeclipse环

9、境下,运用Java语句,将添加数据、查询数据、删除数据、修改数据四个功能分为四个类来实现,另外用一个主类实现面板,可在其上进行插入、删除、修改、查询等功能,并且对界面进行了设计和规划。在这个过程中,我们遇到了许多问题,如数据库连接不上,程序编译没有错误,但功能无法实现等,学长都给了我们很大帮助,一次次修改尝试,最终得到了现在的版本,虽然有许多不足与缺点,但是课题顺利完成仍是给了我们很大的满足感,也让我们体会到了程序员的辛苦。通过这次课题的研究,让我充分认识到了自己距离一个合格的程序员还很远,认识到自己相关知识的的储备量还很少,对现在所学的Java及数据库课程的掌握程度还不够,但是在这个过程中我

10、也学习到了很多相关知识,充分的认识到要想学好编程语言,就必须勤动手,要经常练习,才能熟练掌握每一种方法,光靠大脑的记忆是远远不够的,只能是纸上谈兵。在以后的课程学习中,我一定会更加重视实践练习,养成良好的编程习惯,这样才能做一个合格的程序员。 刚看到这个课题的时候,就先大体确定了整体思路,这个课题要求熟悉数据库,Java编程。实现过程中我们需要先在数据库中建立好表,再进行好与Java的连接,再运用myeclipse编程。 思路有了,但真正实施的时候出现了很多问题。通过相关资料的查询和请教上一届的学长,在Java中建立了架包,建立ConnectionUtil类,获得与数据库JSD1407的连接,

11、在编程语言环境下写好建表语言,添加包含学生学号、姓名、班级,语文、数学、英语成绩的数据。与数据库的连接出现了表丢失的现象、要实现这个学生成绩管理系统,需要一个主类,以及涉及插入,删除,查询,修改的子类,在主类中调用,达到效果。 由于对Java语句没有很熟悉的掌握,导致很多代码显得累赘繁琐。在界面上,建立了4个按钮、1个背景、1个标签文本、1个面板, 参 考 文 献(内容:要求五号字体) 1.数据库系统基础教程(第三版) 机械工业出版社 2.Java程序设计(第三版) 清华大学出版社附录(源代码)(内容:要求小五号字体)1、 架包package com.tarena.util;import ja

12、va.sql.Connection;import java.sql.DriverManager;public class ConnectionUtil public static Connection getConnection()throws Exception Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql:/localhost:3306/JSD1407" String user="root" String password="1234&quo

13、t; Connection conn=DriverManager.getConnection(url,user,password); return conn; public static void main(String args) throws Exception System.out.println(getConnection(); /s通过打印看一下是否连接上了/将获得连接的方法封装2、 建表语言create table student(no varchar(10) not null,name varchar(50) not null,class_no varchar(2) not nu

14、ll,chinese double(3,1) not null,math double(3,1) not null,english double(3,1) not null,primary key(no);desc student;insert into student(no,name,class_no,chinese,math,english) values(120702101,'陈丽芳',1,66,77,88);select * from student;3、 Java编程MainFrame类import javax.swing.*;import java.awt.*;im

15、port java.awt.event.*;public class MainFrame extends JFrameJButton insert,query,delete,modify;JPanel panel,panel1,panel2;public MainFrame()/ TODO Auto-generated method stubImageIcon img=new ImageIcon("1.gif");JLabel text1,text2,picture=new JLabel(img); JFrame frame=new JFrame("学生成绩管理系

16、统"); insert=new JButton("添加数据"); insert.setBackground(Color.green); insert.addActionListener(new insertActionPerformed(); query=new JButton("查询数据"); query.addActionListener(new queryActionPerformed(); query.setBackground(Color.green); modify=new JButton("修改数据"); mo

17、dify.setBackground(Color.green); modify.addActionListener(new modifyActionPerformed(); delete=new JButton("删除数据"); delete.setBackground(Color.green); delete.addActionListener(new deleteActionPerformed(); frame.setSize(360,200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Containe

18、r contentPane=frame.getContentPane(); contentPane.setLayout(new BorderLayout(); text1=new JLabel("欢迎使用学生成绩管理系统",JLabel.CENTER); text1.setFont(new Font("宋体",Font.BOLD,24); text1.setForeground(Color.blue); text2=new JLabel("-192091班 罗斌制作"); text2.setFont(new Font("Ti

19、mesRoman",Font.ROMAN_BASELINE,14); panel1=new JPanel(); panel1.add(insert); panel1.add(query); panel2=new JPanel(); panel2.add(modify); panel2.add(delete); panel1.setOpaque(false); panel2.setOpaque(false); panel=new JPanel(); panel.add(text2,BorderLayout.NORTH); panel.add(panel1,BorderLayout.NO

20、RTH); panel.add(panel2,BorderLayout.SOUTH); panel.setOpaque(false); contentPane.add(text1,BorderLayout.NORTH); contentPane.add(panel,BorderLayout.CENTER); frame.getLayeredPane().add(picture,new Integer(Integer.MIN_VALUE); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScree

21、nSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); picture.setBounds(0,0,360,360); (JPanel)contentPane).setOpaque(false); frame.setLocation(screenWidth-width/2, screenHeight-height/2); frame.setVisible(tr

22、ue); public class insertActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Insert().setVisible(true); public class modifyActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Modify().setVisible(true); public class queryActionP

23、erformed implements ActionListener public void actionPerformed(ActionEvent e) new Query().setVisible(true); public class deleteActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Delete().setVisible(true); public static void main(String args) new MainFrame(); Ins

24、ert类import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class Insert extends JFrame JTextField input1,input2,input3,input4,input5,input6;JLabel label1,label2,label3,label4,label5;JButton button; static Statement st; static try Class.forName("com.mysql.jdbc.Dr

25、iver"); Connection con=DriverManager.getConnection("jdbc:mysql:/localhost:3306/jsd1407","root", "123456"); st=con.createStatement(); catch(Exception e) ResultSet rs;public Insert()input1=new JTextField(15);input2=new JTextField(15);input3=new JTextField(15);input4=

26、new JTextField(15);input5=new JTextField(15);input6=new JTextField(15);JPanel panel=new JPanel();panel.setLayout(new GridLayout(6,2);panel.add(new JLabel("学号"),BorderLayout.CENTER);panel.add(input1);panel.add(new JLabel("姓名"),BorderLayout.CENTER);panel.add(input2);panel.add(new J

27、Label("班级"),BorderLayout.CENTER);panel.add(input3);panel.add(new JLabel("语文"),BorderLayout.CENTER);panel.add(input4);panel.add(new JLabel("英语");panel.add(input5);panel.add(new JLabel("数学");panel.add(input6);button=new JButton("添加");button.addActionLi

28、stener(new mysql();Container container=getContentPane();container.add(panel,BorderLayout.CENTER);container.add(button,BorderLayout.SOUTH);setTitle("添加数据窗口");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setSize(250,250); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize =

29、 kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2);setVisible(true);class mysql implements ActionListenerpublic void actionPerformed(Ac

30、tionEvent e)tryString number=input1.getText().trim();String name=input2.getText().trim();String clas=input3.getText().trim();String temp=input4.getText();double chinese=Integer.parseInt(temp);temp=input4.getText();double english=Integer.parseInt(temp);temp=input4.getText();double maths=Integer.parse

31、Int(temp);if(number.equals("")|name.equals("")| clas.equals("")|temp.equals("")JOptionPane.showMessageDialog(Insert.this,"请重新输入","提示对话框",1);elseString sql="insert into Student(no,name,class_no,chinese,english,math) values('"+n

32、umber+"','"+name+"','"+clas+"',"+chinese+","+english+","+maths+");" st.executeUpdate(sql); JOptionPane.showMessageDialog(Insert.this, "数据添加成功","提示对话框",1); input1.setText(""); input2.setText(

33、""); input3.setText(""); input4.setText(""); input5.setText(""); input6.setText("");catch(Exception ee)Modify类import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class Modify extends JFrameJTextField input1,input2,

34、input3,input4,input5,input6;JLabel label1,label2,label3,label4,label5;JButton button; static Statement st; static try Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql:/localhost:3306/jsd1407","root", "123456"); st=

35、con.createStatement(); catch(Exception e) ResultSet rs;public Modify()input1=new JTextField(15);input2=new JTextField(15);input3=new JTextField(15);input4=new JTextField(15);input5=new JTextField(15);input6=new JTextField(15);JPanel panel=new JPanel();panel.setLayout(new GridLayout(6,2);panel.add(ne

36、w JLabel("学号");panel.add(input1);panel.add(new JLabel("姓名");panel.add(input2);panel.add(new JLabel("班级");panel.add(input3);panel.add(new JLabel("语文");panel.add(input4);panel.add(new JLabel("英语");panel.add(input5);panel.add(new JLabel("数学");

37、panel.add(input6);button=new JButton("修改");button.addActionListener(new mysql();Container container=getContentPane();container.add(panel,BorderLayout.CENTER);container.add(button,BorderLayout.SOUTH);setTitle("修改数据窗口");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setSize(300,

38、150); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2);setVisible(tr

39、ue);class mysql implements ActionListenerpublic void actionPerformed(ActionEvent e)tryString number=input1.getText().trim();String name=input2.getText().trim();String clas=input3.getText().trim();String temp=input4.getText();double chinese=Integer.parseInt(temp);temp=input4.getText();double english=

40、Integer.parseInt(temp);temp=input4.getText();double maths=Integer.parseInt(temp);if(number.equals("")JOptionPane.showMessageDialog(Modify.this,"学号不能为空!","提示对话框",1);elsetryString sql="update Student set name='"+name+"',class_no='"+clas+&qu

41、ot;',chinese="+chinese+",english="+english+",math="+maths+" where no='"+number+"'" st.executeUpdate(sql); JOptionPane.showMessageDialog(Modify.this, "数据修改成功","提示对话框",1); input1.setText(""); input2.setText("&q

42、uot;); input3.setText(""); input4.setText(""); input5.setText(""); input6.setText("");catch(Exception ee)JOptionPane.showMessageDialog(Modify.this,"请确认需要修改的学号是否存在","提示对话框",1); System.out.println(ee);catch(Exception eee) System.out.println(e

43、ee); Query类import java.awt.*;import javax.swing.event.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class Query extends JFrameJTextArea show;JButton button1,button2,button3,button4,button5;JTextField field1,field2,field3;JComboBox comoBox;static Statement st; static try Cla

44、ss.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql:/localhost:3306/jsd1407","root", "123456"); st=con.createStatement(); catch(Exception e) public Query()show=new JTextArea(5,10);button1=new JButton("显示所有信息");

45、button1.addActionListener(new Mysql1();Container container=getContentPane(); container.setLayout(new BorderLayout();JPanel panel=new JPanel();JPanel mainpanel=new JPanel();button2=new JButton("按学号查询");button2.addActionListener(new Mysql2();panel.add(button2);field1=new JTextField(7);panel.

46、add(field1);panel.setVisible(true);mainpanel.add(panel);button3=new JButton("按姓名查询");button3.addActionListener(new Mysql3();panel.add(button3);field2=new JTextField(6);panel.add(field2);panel.setVisible(true);mainpanel.add(panel);button4=new JButton("按班级查询");button4.addActionList

47、ener(new Mysql4();panel.add(button4);field3=new JTextField(6);panel.add(field3);panel.setVisible(true);mainpanel.add(panel);String items="请选择","语文","英语","数学"comoBox=new JComboBox(items);button5=new JButton("按课程名称查询");button5.addActionListener(new Mys

48、ql5();panel.add(button5);panel.add(comoBox);panel.setVisible(true);mainpanel.add(panel);panel=new JPanel();panel.add(button1);container.add(mainpanel,BorderLayout.NORTH);container.add(panel,BorderLayout.SOUTH);container.add(new JScrollPane(show),BorderLayout.CENTER);setTitle("查询数据");setDef

49、aultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setSize(750,400); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(s

50、creenWidth-width/2, screenHeight-height/2);setVisible(true);class Mysql1 implements ActionListenerpublic void actionPerformed(ActionEvent e)tryString sql="select * from Student"ResultSet rs=st.executeQuery(sql);show.setText("");show.append("学号 姓名 班级 语文 英语 数学"+"n&qu

51、ot;);while(rs.next()show.append(rs.getString(1)+" ");show.append(rs.getString(2)+" ");show.append(rs.getString(3)+" ");show.append(rs.getDouble(4)+" ");show.append(rs.getDouble(5)+" ");show.append(rs.getDouble(6)+"n");catch(Exception ee)class Mysql2 implements ActionListenerpublic void actionPerformed(ActionEvent e)tryString ss=field1.getText().trim();String sql="select * from Student where no='"+ss+"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论