java课程设计学生成绩管理系统毕业论文.doc_第1页
java课程设计学生成绩管理系统毕业论文.doc_第2页
java课程设计学生成绩管理系统毕业论文.doc_第3页
java课程设计学生成绩管理系统毕业论文.doc_第4页
java课程设计学生成绩管理系统毕业论文.doc_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

华东交通大学课程设计报告java课程设计学生成绩管理系统毕业论文目录一、课程设计任务及要求1二、需求分析2三、设计思路4四、详细设计7五、运行调试与分析讨论18六、设计体会与小结22七、参考文献23八、附录24一、课程设计任务及要求课程设计任务:学籍管理系统课程设计要求: 录入学生基本信息 修改学生基本信息 查询学生基本信息 删除学生基本信息 通过这次的设计,主要是做出一个小型的学生学籍管理系统,来加强对JAVA所学知识的巩固和融会贯通,主要是在图形界面方面可以说是对一个学期所学知识的一个小结,加深对JAVA数据库的理解。二、需求分析 该学生学籍管理系统的所有功能均在一个Frame窗体中实现。学生学籍管理系统主界面模块: 采用Frame窗体来设置欢迎界面包括背景图片及字幕(可以设计成滚动字幕效果),左上方的菜单条设计成下拉式。包括“录入学生基本信息”、“修改学生基本信息”、“删除学生基本信息”、“查询学生基本信息”和“退出系统”五项菜单项。录入学生基本信息模块: 采用Panel面板来设置该部分内容信息并采用方位布局(边缘布局)和Box轻量级组件来设置“学号”、“姓名”、“性别”、“专业”、“年级”、“出生”,并在该面板中添加了“录入”和“重置”两个按钮进行监听,最后将该面板加入到Frame窗体中去。修改学生基本信息模板: 采用Panel面板来设置该部分内容信息,同样是采用方位布局及Box组件来设置相关信息,并在学号旁设置了“开始修改”按钮。在面板南部方位添加了“确定修改”和“重置”两按钮进行监听。查询学生基本信息模板: 采用Panel面板来设置该部分内容信息,并将该面板加入到主窗体中去,采用边缘布局进行方位设置,在上方加入“查询”按钮进行监听。删除学生基本信息模板: 也是采用Panel面板进行设置相关内容,并用边缘布局进行布局,并在上方添加“确定”按钮,在下方添加“确定删除”按钮实现监听。退出系统模板:采用JDialog组件来实现该部分功能,是以弹跳出对话框形式进行选择是否退出该系统,并设置“是”和“否”两个按钮来实现该功能的监听。综上,本学籍管理系统就是由以上六部分组成,并将所有内容信息在同一窗体中实现,这样可使系统可视化性提高。三、设计思路定义四个Panel面板用来实现该学籍管理系统对学生基本信息的操作:I.定义add(录入学生基本信息)面板来实现录入功能采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“录入学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后在面板的South方位设置“录入”与“重置”两按钮。最后实现与数据库的桥接,能够将从文本框获得的信息存储到数据库中去。II.定义Query(查询学生基本信息)面板来实现查询功能该部分同样采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“查询学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一个“查询”按钮。并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去。III.定义Update(修改学生基本信息)面板来实现修改功能该部分同样也是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。并在 “学号”该文本框后添加一个“开始修改”按钮用来监听。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,并将修改后的信息存储到数据库中去。IV.定义Delete(删除学生基本信息)面板来实现删除功能该部分还是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一“确定”按钮实现监听。并将其所有文本框和标签加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。并在 “学号”该文本框后添加一个“开始修改”按钮用来监听。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量,还在本面板的South方位添加“确定删除”按钮。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,删除后同时在数据库中也删除该信息并保存该操作。V.定义exit(退出系统)对话框来实现退出功能本部分采用JDialog来实现,在该对话框的North方位添加“确定要退出学籍管理系统吗?”这一标签,在South方位添加“是”和“否”两个按钮来实现是否退出学籍管理系统。VI定义fra(欢迎界面窗)窗体来实现下拉菜单条并进入以上五部分功能用MenuBar 类封装绑定到框架的菜单栏与Menu 对象是从菜单栏部署的下拉式菜单组件来实现下拉式菜单条。流程图如下修改学生信息录入学生信息退出管理系统删除学生信息修改学生信息学生学籍管理系统四、详细设计首先导入该程序中所需要用到的java包如下:import java.sql.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.JOptionPane;设计录入学生基本信息这一模块功能/add(录入学生基本信息)面板(Panel)设计:class add extends Panel implements ActionListener Connection con;Statement sql;Panel pNorth, pCenter;JButton done, readd;Box box, box0, box1, box2, box3, box4, box5, box6, box7;JTextField num, name, sex, birth, cla, professional;public add() setLayout(new BorderLayout();Font font = new Font(华文中宋, Font.BOLD, 22);UIManager.put(Label.font, font);num = new JTextField(20);name = new JTextField(20);sex = new JTextField(20);professional = new JTextField(20);cla = new JTextField(20);birth = new JTextField(20);box0 = Box.createHorizontalBox();JLabel jl = new JLabel( 录入学生基本信息 );jl.setForeground(Color.red);jl.setFont(new Font(华文行楷, Font.BOLD, 34);box0.add(jl);box1 = Box.createHorizontalBox();box1.add(new JLabel(学号:);box1.add(Box.createHorizontalStrut(8);box1.add(num);box2 = Box.createHorizontalBox();box2.add(new JLabel(姓名:);box2.add(Box.createHorizontalStrut(8);box2.add(name);box3 = Box.createHorizontalBox();box3.add(new JLabel(性别:);box3.add(Box.createHorizontalStrut(8);box3.add(sex);box4 = Box.createHorizontalBox();box4.add(new JLabel(专业:);box4.add(Box.createHorizontalStrut(8);box4.add(professional);box5 = Box.createHorizontalBox();box5.add(new JLabel(年级:);box5.add(Box.createHorizontalStrut(8);box5.add(cla);box6 = Box.createHorizontalBox();box6.add(new JLabel(出生:);box6.add(Box.createHorizontalStrut(8);box6.add(birth);box7 = Box.createHorizontalBox();done = new JButton(录入);done.setFont(new Font(华文行楷, Font.BOLD, 22);done.setForeground(Color.black);done.setBackground(Color.white);done.addActionListener(this);box7.add(done);box7.add(Box.createHorizontalStrut(8);readd = new JButton(重置);readd.setFont(new Font(华文行楷, Font.BOLD, 22);readd.setForeground(Color.black);readd.setBackground(Color.white);readd.addActionListener(this);box7.add(readd);box = Box.createVerticalBox();box.add(box0);box.add(Box.createVerticalStrut(12);box.add(box1);box.add(Box.createVerticalStrut(12);box.add(box2);box.add(Box.createVerticalStrut(12);box.add(box3);box.add(Box.createVerticalStrut(12);box.add(box4);box.add(Box.createVerticalStrut(12);box.add(box5);box.add(Box.createVerticalStrut(12);box.add(box6);box.add(Box.createVerticalStrut(12);box.add(box7);pCenter = new Panel();pCenter.add(box);add(pCenter, Center);setBackground(Color.cyan);/实现动作事件并链接数据库将文本框内信息存储到数据库中:public void actionPerformed(ActionEvent e) String num0, num1, name1, sex1, cla1, professional1, birth1;int out = 1;if (e.getSource() = done) name1 = name.getText();if (name1.equals() JOptionPane.showMessageDialog(this, 对不起,姓名不能为空!);else try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (java.lang.ClassNotFoundException ee) try con = DriverManager.getConnection(jdbc:odbc:stud, , );sql = con.createStatement();ResultSet rs = null;boolean Abook;rs = sql.executeQuery(select * from stud);while (rs.next() num1 = rs.getString(学号);if (num1.equals(num.getText().trim() num.setText();JOptionPane.showMessageDialog(this, 对不起,该学号已存在!, 学籍管理系统,JOptionPane.ERROR_MESSAGE);out = 0;break;con.close();sql.close(); catch (SQLException r) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (java.lang.ClassNotFoundException ee) try con = DriverManager.getConnection(jdbc:odbc:stud, , );sql = con.createStatement();num1 = + num.getText().trim() + ;name1 = name.getText().trim();sex1 = + sex.getText().trim() + ;professional1 = + professional.getText().trim() + ;cla1 = + cla.getText().trim() + ;birth1 = + birth.getText().trim() + ;String temp = insert into stud values ( + num1 + ,+ + name1 + + , + sex1 + ,+ professional1 + , + cla1 + , + birth1 + );sql.executeUpdate(temp);sql.close();con.close(); catch (SQLException err) JOptionPane.showMessageDialog(this, 信息录入错误,请重新录入!, 学籍管理系统,JOptionPane.ERROR_MESSAGE);out = 0;if (out = 1) JOptionPane.showMessageDialog(this, 录入成功!, 学籍管理系统,JOptionPane.INFORMATION_MESSAGE);num.setText( );name.setText( );sex.setText();cla.setText( );professional.setText( );birth.setText( );if (e.getSource() = readd) num.setText( );name.setText( );sex.setText();cla.setText( );professional.setText( );birth.setText( );设计查询(Query)这一模块、修改(Update)这一模块、删除(Delete)这一模块均和录入(add)模块类似、再此不做过多介绍,详细过程见源程序代码(八、附录);设计退出(exit)对话框(Dialog)模块class exit extends JDialog implements ActionListener JFrame mainFrame;JPanel panelS, panelN;JButton yes, no;JLabel lab;public exit(JFrame mainFrame) super(mainFrame, 华东交通大学软件学院学籍管理系统, true);this.mainFrame = mainFrame;panelN = new JPanel();panelS = new JPanel();lab = new JLabel(确认要退出学籍管理系统吗?);lab.setForeground(Color.RED);lab.setFont(new Font(华文行楷, Font.PLAIN, 22);panelN.add(lab);yes = new JButton(退出);yes.setForeground(Color.RED);yes.setFont(new Font(华文行楷, Font.PLAIN, 20);yes.addActionListener(this);no = new JButton(取消);no.setFont(new Font(华文行楷, Font.PLAIN, 20);no.setForeground(Color.RED);no.addActionListener(this);/注册监听事件panelS.add(yes);panelS.add(no);getContentPane().add(panelS, BorderLayout.SOUTH);getContentPane().add(panelN, BorderLayout.NORTH);this.setBackground(Color.yellow);this.setResizable(false); / 设置对话框为不可改变大小/以下部分为实现事件处理public void actionPerformed(ActionEvent e) if (e.getSource() = yes) System.exit(0);if (e.getSource() = no) this.setVisible(false);设计fram(欢迎界面)窗体(Frame)模块/定义主窗体并加入下拉菜单条class fram extends Frame implements ActionListener MenuBar menubar;Menu menu_select;MenuItem item_stud_add, item_stud_search, item_stud_update,item_stud_delete, item_exit;add luru;Query chaxun;Update xiugai;Delete shanchu;Box box, box1, box2;fram() super(华东交通大学软件学院学生学籍管理系统);luru = new add();chaxun = new Query();xiugai = new Update();shanchu = new Delete();menubar = new MenuBar();menu_select = new Menu(菜单选项);menu_select.setFont(new Font(华文行楷, Font.BOLD, 18);item_stud_add = new MenuItem(录入学生基本信息);item_stud_add.addActionListener(this);item_stud_update = new MenuItem(修改学生基本信息);item_stud_update.addActionListener(this);item_stud_search = new MenuItem(查询学生基本信息);item_stud_search.addActionListener(this);item_stud_delete = new MenuItem(删除学生基本信息);item_stud_delete.addActionListener(this);item_exit = new MenuItem(退出);item_exit.addActionListener(this);menu_select.add(item_stud_search);menu_select.add(item_stud_add);menu_select.add(item_stud_update);menu_select.add(item_stud_delete);menu_select.add(item_exit);menubar.add(menu_select);setMenuBar(menubar);/this.setBackground(Color.green);/*ImageIcon img = new ImageIcon(E:44.png);JLabel hy = new JLabel(img);hy.setBounds(0, 0, img.getIconWidth(), img.getIconHeight();add(hy);setVisible(true);*/Label label = new Label(欢迎进入学生学籍管理系统, Label.CENTER);label.setFont(new Font(华文行楷, Font.BOLD, 40);label.setForeground(Color.RED);this.add(label);/实现动作事件处理public void actionPerformed(ActionEvent e) if (e.getSource() = item_stud_add) removeAll();add(luru, Center);validate();if (e.getSource() = item_stud_search) removeAll();add(chaxun, Center);validate();if (e.getSource() = item_stud_update) removeAll();add(xiugai, Center);validate();if (e.getSource() = item_stud_delete) removeAll();add(shanchu, Center);validate();if (e.getSource() = item_exit) JFrame f4 = new JFrame();exit exit1 = new exit(f4);exit1.setBounds(500, 240, 300, 120);exit1.setVisible(true);定义整个程序的主类并在主类中创建数据库stud表格public class stud public static void main(String args) String url = jdbc:odbc:stud;String sql = create table stud + (学号 String(20), 姓名 String(20), 性别 String(6), 专业 String(30),年级 String(20),出生 String(20);try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (java.lang.ClassNotFoundException e) try Connection con = DriverManager.getConnection(url, , null);Statement stmt = con.createStatement();stmt.executeUpdate(sql);System.out.println(student table created );stmt.close();con.close(); catch (SQLException exe) Frame fra = new fram();fra.setBounds(300, 80, 500, 400);fra.setVisible(true);/* 窗口事件处理 */fra.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););五、运行调试与分析讨论I.运行调试部分欢迎界面登陆录入学生基本信息查询学生基本信息删除学生基本信息修改学生基本信息退出系统II.分析讨论部分(1)起初在面板的布局方面存在一些问题,如:几个按钮的方位与预期的不一致后经调试发现是没有将该面板设置为边缘布局setLayout(new BorderLayout();(2)其中还有一些按钮无法实现事件触发,后经调试发现,原来是未给该事件注册监听者addActionListener();(3)在数据库链接方面也存在一些问题,如无法将修改后的信息链入数据库,后经调试,原来是在String temp = update stud set 姓名= + name1 + ,+ 性别= + sex1 + , + 专业= + professional1 + ,+ 年级= + cla1 + , + 出生= + birth1 + where 学号=+ + num1 + ;这一行代码中的“姓名”前多了半边“(” ,因此导致无法实现修改功能;(4)在链入数据库时,忘记加载驱动try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ee) 第 24 页 六、设计体会与小结通过本次课程设计,在不懈的努力和钟小妹老师的帮助下完成了这个小型的学籍管理系统的设计,在整个设计过程中我们对JAVA使用和它强大的作用有了一个更深刻的认识,尽管这个系统很简单,但是它让我们综合运用了这个学期所学的JAVA的很多内容,在此基础上,我们对JAVA的基础知识得到了更好的巩固,尤其是在图形界面及java数据库的掌握。其实,在制作的过程中我们也学到很多思想:首先,要学会统筹全局,合理规划,例如在制作整个框架的时候提前就要做全面考虑,要把整个结构图画出来,并且要对数据库表里的东西做全面规划。同时在编写程序的时候也要想好先实现什么功能,再实现什么功能,这样做出来的东西才有条理性,更容易实现和理解。其次,要细心仔细。Java程序虽然容易理解,但在写的过程中一不留心就会出现错误。当然出错是在所难免的,与性质有关的错误可以经过思考讨论后进行改正,但如果粗心大意,出现输入上的错误就很难发现和修改,会耽误很多时间。经过这次课题的设计并实现,尽管会遇到很多难题,但是让我更加受益的是在这次课题中得到的经验、心得和锻炼。我发现开发项目的过程其实就是个不断的解决问题的过程,从中也感觉到项目开发的快乐,一个人永远有学不玩的知识,就算是项目开发中的知识点都学了,但在实际的开发过程中仍然会遇到不少问题,遇到问题时要做到两点:一个是“查”,一个是“问”。不懂的地方就得要自己找答案,可以从书本、网络中查找解决的答案;再一个就是问周边的同学。比如,在本科课题的编写代码部分,本人就参考了百度文库、CSDN等网站上的相关知识,从中得到了图形编程的很多有用的方法及如何链入数据库。我们认为最大的收获是提高了自己的动手能力。在平时的上机中大多数是根据书上的思想和布局来写程序的。这次的课程设计要自己思考自己写,考虑的东西比平时上机考虑的要多的多。在整个设计过程中写代码不是最难的,最难的是构思和布局。这次课程设计也是一次很好的实践活动,让我体会到了java的作用。七、参考文献1 丁振凡. Java语言实用教程(第2版)M. 清华大学出版社. 2008.12 丁振凡,薛清华. Java语言程序设计.清华大学出版社.2010.102 3 八、附录I.源程序代码package stud1;import java.sql.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.JOptionPane;/*增加学生基本信息*/class add extends Panel implements ActionListener Connection con;Statement sql;Panel pNorth, pCenter;JButton done, readd;Box box, box0, box1, box2, box3, box4, box5, box6, box7;JTextField num, name, sex, birth, cla, professional;public add() setLayout(new BorderLayout();Font font = new Font(华文中宋, Font.BOLD, 22);UIManager.put(Label.font, font);num = new JTextField(20);name = new JTextField(20);sex = new JTextField(20);professional = new JTextField(20);cla = new JTextField(20);birth = new JTextField(20);box0 = Box.createHorizontalBox();JLabel jl = new JLabel( 录入学生基本信息 );jl.setForeground(Color.red);jl.setFont(new Font(华文行楷, Font.BOLD, 34);box0.add(jl);box1 = Box.createHorizontalBox();box1.add(new JLabel(学号:);box1.add(Box.createHorizontalStrut(8);box1.add(num);box2 = Box.createHorizontalBox();box2.add(new JLabel(姓名:);box2.add(Box.createHorizontalStrut(8);box2.add(name);box3 = Box.createHorizontalBox();box3.add(new JLabel(性别:);box3.add(Box.createHorizontalStrut(8);box3.add(sex);box4 = Box.createHorizontalBox();box4.add(new JLabel(专业:);box4.add(Box.createHorizontalStrut(8);box4.add(professional);box5 = Box.createHorizontalBox();box5.add(new JLabel(年级:);box5.add(Box.createHorizontalStrut(8);box5.add(cla);box6 = Box.createHorizontalBox();box6.add(new JLabel(出生:);box6.add(Box.createHorizontalStrut(8);box6.add(birth);box7 = Box.createHorizontalBox();done = new JButton(录入);done.setFont(new Font(华文行楷, Font.BOLD, 22);done.setForeground(Color.black);done.setBackground(Color.white);done.addActionListener(this);box7.add(done);box7.add(Box.createHorizontalStrut(8);readd = new JButton(重置);readd.setFont(new Font(华文行楷, Font.BOLD, 22);readd.setForeground(Color.black);readd.setBackground(Color.white);readd.addActionListener(this);box7.add(readd);box = Box.createVerticalBox();box.add(box0);box.add(Box.createVerticalStrut(12);box.add(box1);box.add(Box.createVerticalStrut(12);box.add(box2);box.add(Box.createVerticalStrut(12);box.add(box3);box.add(Box.createVerticalStrut(12);box.add(box4);box.add(Box.createVerticalStrut(12);box.add(box5);box.add(Box.createVerticalStrut(12);box.add(box6);box.add(Box.createVerticalStrut(12);box.add(box7);pCenter = new Panel();pCenter.add(box);add(pCenter, Center);setBackground(Color.cyan);public void actionPerformed(ActionEvent e) String num0, num1, nam

温馨提示

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

评论

0/150

提交评论