资源描述
精选优质文档-倾情为你奉上软 件 学 院课程设计报告书课程名称 面向对象程序设计 设计题目 学生个人信息管理系统 专业班级 嵌入式软件09-2 学 号 姓 名 王翀 指导教师 2011 年 6 月目录1 设计时间2012年6月13日6月19日2 设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力3设计任务设计一个简单学生个人信息管理系统,该系统具有录入,查询,修改三项基本功能。要求如下:(1)具有简单的录入,查询和修改功能。(2)修改学生信息必须输入学号,然后对姓名、性别和专业等进行修改;(3)使用文件存储数据。(也可用数据库)(4)学生个人信息必须包括:学号、姓名、性别、出生日期、身份证号、专业、班级自我简介,其余可自行丰富。4 设计内容 4.1需求分析 学生管理系统需要对学生的基本信息进行简单的录入,查询,修改三项基本功能。具体实现使用Access2003数据库实现基本操作,前台窗口使用GUI编程创建图形界面,对图形界面的窗口和按钮进行事件监听,执行相应的SQL语句。4.1.1问题描述设计一个简单学生个人信息管理系统,该系统具有录入,查询,修改三项基本功能。4.1.2基本要求(1) 具有简单的录入,查询和修改功能。(2) 修改学生信息必须输入学号,然后对姓名、性别和专业等进行修改;(3) 使用文件存储数据。(4) 学生个人信息必须包括:学号、姓名、性别、出生日期、身份证号、专业、班级自我简介,其余可自行丰富。(5) 具有对姓名,出生日期和身份证号进行简单效验的功能。4.2总体设计1、 自定义类说明:(1)类名:MainTest作用:主类,构建主界面继承的父类:Jframe主要实现接口:ActionListener主要成员变量:private JPanel ContentPane;private JButton Insert = new JButton();private JButton Select = new JButton();private JButton Update = new JButton();内部类:MainTest_actionPerformed,主页面的事件监听。jenter_ actionPerformed,按钮的事件监听。主要成员方法:public MainTest()public static void main(String args)(2)类名:Insert作用:实现添加个人信息继承的父类:Jframe主要实现接口:ActionListener主要成员变量:private JPanel ContentPane;private JLabel jlab1 = new JLabel();private JLabel jlab2 = new JLabel();private JLabel jlab3 = new JLabel();private JLabel jlab4 = new JLabel();private JLabel jlab5 = new JLabel();private JLabel jlab6= new JLabel();private JLabel jlab7 = new JLabel();private JLabel jlab8 = new JLabel();private JTextField jtextfield1 = new JTextField();private JTextField jtextfield2 = new JTextField();private JTextField jtextfield3 = new JTextField();private JTextField jtextfield4 = new JTextField();private JTextField jtextfield5 = new JTextField();private JComboBox jcombobox1 = new JComboBox();private JComboBox jcombobox2 = new JComboBox();private JTextArea jtextarea = new JTextArea();private JButton sure = new JButton();内部类:sure_actionperformed,按钮的事件监听,实现对数据的插入。主要成员方法:public Insert();(3)类名:Update作用:对个人信息进行修改。继承的父类:Jframe主要实现接口:ActionListener主要成员变量:private JPanel ContentPane;private JLabel jlab1 = new JLabel();private JLabel jlab2 = new JLabel();private JLabel jlab3 = new JLabel();private JLabel jlab4 = new JLabel();private JLabel jlab5 = new JLabel();private JTextField jtextfield1 = new JTextField();private JTextField jtextfield2 = new JTextField();private JTextField jtextfield3 = new JTextField();private JTextField jtextfield4 = new JTextField();private JButton sure = new JButton();private JButton upda = new JButton();主要成员方法:public Update()public void actionPerformed(ActionEvent e)(4)类名:Select作用:查询学生个人信息继承的父类:Jframe主要实现接口:ActionListener主要成员变量: private JTextArea taInfo=new JTextArea(); private JPanel panel=new JPanel(); private JTextField jtextfield1=new JTextField(); private JButton jbutton=new JButton(查询); private JLabel jlabel=new JLabel(学号);主要成员方法:public Select()public void actionPerformed(ActionEvent e)2、主程序流程:学生个人信息管理系统查询更新录入显示学生信息更新学生信息添加学生信息 图 4-2-1 主流程图4.2.1包的描述import java.awt.BorderLayout;边界布局勾画出一个容器,其组成部分的安排和调整以适应在五个区域:北,南,东,西,和中心。import java.awt.Color;颜色类是用于封装在默认成色彩空间的颜色或颜色任意颜色空间所确定的色彩。import java.awt.Rectangle;一个矩形指定地区在坐标空间是封闭的矩形对象的左上点(十,年)在空间中的坐标,其宽度和高度。import java.awt.event.ActionEvent;事件一个接口,知道如何调度自己。import java.awt.event.ActionListener;监听器接口接收动作事件。类的感兴趣的事件处理行动实现此接口的对象,并创建的类是一个注册的组件,使用组件的addactionlistener方法。行动时,事件发生时,该对象的actionperformed调用方法。import javax.swing.JButton;实施“推”按钮。请参阅The Java Tutorial中的信息和使用按钮的例子如何使用按钮,复选框和单选按钮。import javax.swing.JComboBox;实施 - 一个复选框可以选择或取消的项目,并显示其状态的用户。按照惯例,任何一组号码复选框可以选择。请参阅如何使用Java教程使用复选框的例子和信息按钮,复选框和单选按钮。import javax.swing.JFrame;java.awt.Frame的扩展版本,增加了JFC / Swing组件架构的支持。你可以找到有关节如何使框架,使用Java教程JFrame的面向任务的文档。import javax.swing.JLabel;一个很短的文本字符串或图像的显示区域,或两者兼而有之。一个标签不输入事件作出反应。因此,它不能获得键盘焦点。然而,标签可以显示附近的一个组成部分,有一个键盘的替代品,但不能显示它的方便的键盘替代。import javax.swing.JPanel;JPanel的是一个通用的轻量级容器。对于JPanel的任务为导向的文档和例子,请参阅如何使用面板,Java教程的一个部分。import javax.swing.JTextArea;一个JTextArea是一个多行的区域,显示纯文本。它的目的是成为一个轻量级组件,提供与java.awt.TextArea类源代码的兼容性,它可以合理地这样做。你可以找到在The Java Tutorial中使用的文本组件,部分使用所有文本组件的信息和例子。import javax.swing.JTextField;JTextField是一个轻量级的组件,它允许在一个单行文本编辑。对于使用文本字段的信息和例子,请参阅如何使用Java教程的文本字段。4.2.2类的描述JButton:实施“推”按钮。请参阅The Java Tutorial中的信息和使用按钮的例子如何使用按钮,复选框和单选按钮。JLabel:一个很短的文本字符串或图像的显示区域,或两者兼而有之。一个标签不输入事件作出反应。因此,它不能获得键盘焦点。然而,标签可以显示附近的一个组成部分,有一个键盘的替代品,但不能显示它的方便的键盘替代。JTextField:是一个轻量级的组件,它允许在一个单行文本编辑。对于使用文本字段的信息和例子,请参阅如何使用Java教程的文本字段。JComboBox:相结合的一个按钮或可编辑字段和一个下拉列表组件。用户可以选择从下拉列表中,出现在用户的请求值。如果您编辑的组合框,组合框包括一个可编辑的字段到,用户可以键入一个值。 Connection:与特定的数据库连接(会话)。执行SQL语句和内连接的情况下返回的结果。 Statement:一个Statement对象代表一种原始的语句在一个单一的方法应用到一个目标,一组参数 - “a.setFoo(二)”。 ResultSet:一个代表,它通常通过执行查询数据库的语句生成一个数据库结果集的数据表。包。4.2.3类之间的关系类MainTest继承JFrame。类jenter实现接口ActionListener。类MainText实现接口ActionListener。类Insert继承JFrame。类Select继承JFrame实现接口ActionListener。类Update继承JFrame实现接口ActionListener。4.3 详细设计1、各方法的实现:与数据库的连接:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);String url=jdbc:odbc:学生管理;Connection con=DriverManager.getConnection(url);Statement stmt=con.createStatement();MainTest类中对按钮事件监听的实现:class MainTest_actionPerformed implements ActionListenerMainTest adapte ;MainTest_actionPerformed(MainTest adapte)this.adapte = adapte;public void actionPerformed(ActionEvent e)/*调用窗口程序*/if(e.getSource()=adapte.Insert)Insert insert = new Insert();else if(e.getSource()=adapte.Update)Update update = new Update();else if(e.getSource()=adapte.Select)Select select = new Select();Insert类中添加个人信息的具体实现:public void actionPerformed(ActionEvent e) String SQL=insert into student(学号,姓名,性别,生日,身份证号,专业,班级,简介) values(+jtextfield1.getText()+,+jtextfield2.getText()+, +jcombobox1.getSelectedItem()+,+jtextfield3.getText()+, +jtextfield5.getText()+,+jcombobox2.getSelectedItem()+, +jtextfield4.getText()+,+jtextarea.getText()+);ResultSet rs=stmt.executeQuery(SQL);Update类中关于更新学生信息方法的实现:if(e.getSource()=upda)String SQL=UPDATE student SET 姓名=+jtextfield2.getText()+, 性别=+jtextfield3.getText()+, 专业=+jtextfield4.getText()+ WHERE 学号=+jtextfield1.getText()+; ResultSet rs=stmt.executeQuery(SQL); rs.close(); stmt.close(); con.close();Select类中对查询个人信息的实现:public void actionPerformed(ActionEvent e)String SQL=SELECT * FROM student WHERE 学号=+jtextfield1.getText()+; ResultSet rs=stmt.executeQuery(SQL); while(rs.next() taInfo.setText(rs.getString(学号)+n); taInfo.append(rs.getString(姓名)+n); taInfo.append(rs.getString(性别)+n); taInfo.append(rs.getString(生日)+n); taInfo.append(rs.getString(身份证号)+n); taInfo.append(rs.getString(专业)+n); taInfo.append(rs.getString(班级)+n); taInfo.append(rs.getString(简介)+n); 2、数据库表设计:使用Access2003数据库Student表:字段名类型是否可为空学号文本否姓名文本否性别文本否生日日期/时间否身份证号文本否专业文本否班级文本否简介文本否4.3.1类图JFrameMainTestSelectUpDateInsertActionListenerjenterSelectUpdateMainTest类继承接口实现图 4-3-1 类关系图4.3.2页面设计添加学生信息学生管理系统修改学生信息查询学生信息 图 4-3-2 主页面设计图4.4 测试与分析4.5 程序代码/:object/MainTest.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;/* * author LiuMingyan */public class MainTest extends JFrame/*声明变量*/private JPanel ContentPane;private JButton Insert = new JButton();private JButton Select = new JButton();private JButton Update = new JButton();public MainTest()ContentPane = (JPanel)this.getContentPane(); ContentPane.setLayout(null); this.setTitle(学生管理系统); this.setBounds(100,200,500,300); ContentPane.setBackground(Color.WHITE);/*3个按钮的设置*/Insert.setText(添加学生信息);Insert.setVisible(false);Insert.setBounds(new Rectangle(70, 50, 120, 33);Insert.addActionListener(new MainTest_actionPerformed(this);/加事件监听Insert.setForeground(Color.white);Insert.setBackground(Color.black);Update.setText(修改学生信息);Update.setVisible(false);Update.setBounds(new Rectangle(210, 50,120, 33);Update.addActionListener(new MainTest_actionPerformed(this);/加事件监听Update.setForeground(Color.white);Update.setBackground(Color.black);Select.setText(查询学生信息);Select.setVisible(false);Select.setBounds(new Rectangle(340, 50, 120, 33);Select.addActionListener(new MainTest_actionPerformed(this);/加事件监听Select.setForeground(Color.white); Select.setBackground(Color.black);/*把控件添加到面板中去*/ContentPane.add(Insert);ContentPane.add(Update);ContentPane.add(Select);this.setVisible(true);Insert.setVisible(true);Update.setVisible(true);Select.setVisible(true); /*设置动作按钮的监听事件*/class jenter_actionPerformed implements ActionListenerpublic void actionPerformed(ActionEvent e) /设置3个按钮的可见性 Insert.setVisible(true); Update.setVisible(true); Select.setVisible(true); /*主窗口的监听事件*/class MainTest_actionPerformed implements ActionListenerMainTest adapte ;MainTest_actionPerformed(MainTest adapte)this.adapte = adapte;public void actionPerformed(ActionEvent e)/*调用窗口程序*/if(e.getSource()=adapte.Insert)Insert insert = new Insert();else if(e.getSource()=adapte.Update)Update update = new Update();else if(e.getSource()=adapte.Select)Select select = new Select();public static void main(String args) MainTest maintest=new MainTest ();/ TODO 自动生成方法存根/: object/Insert.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;/* * author LiuMingyan */public class Insert extends JFrame /*声明变量*/private JPanel ContentPane;private JLabel jlab1 = new JLabel();private JLabel jlab2 = new JLabel();private JLabel jlab3 = new JLabel();private JLabel jlab4 = new JLabel();private JLabel jlab5 = new JLabel();private JLabel jlab6= new JLabel();private JLabel jlab7 = new JLabel();private JLabel jlab8 = new JLabel();private JTextField jtextfield1 = new JTextField();private JTextField jtextfield2 = new JTextField();private JTextField jtextfield3 = new JTextField();private JTextField jtextfield4 = new JTextField();private JTextField jtextfield5 = new JTextField();private JComboBox jcombobox1 = new JComboBox();private JComboBox jcombobox2 = new JComboBox();private JTextArea jtextarea = new JTextArea();private JButton sure = new JButton();public Insert()this.setBounds(320,160,450,450);this.setTitle(添加学生信息);/窗体标题 ContentPane =(JPanel)this.getContentPane();/将容器转化为JPanel ContentPane.setLayout(null);/设置可更改性 ContentPane.setBackground(Color.black);jlab1.setText(学号);jlab1.setBounds(new Rectangle(30, 11, 51, 33);jlab1.setForeground(Color.white);jlab2.setText(姓名);jlab2.setBounds(new Rectangle(162, 11, 28, 33);jlab2.setForeground(Color.white);jlab3.setText(性别);jlab3.setBounds(new Rectangle(241, 11, 28, 33);jlab3.setForeground(Color.white);jlab4.setText(出生日期);jlab4.setBounds(new Rectangle(31, 53, 55, 33);jlab4.setForeground(Color.white);jlab5.setText(身份证号);jlab5.setBounds(new Rectangle(163, 94, 55, 33);jlab5.setForeground(Color.white);jlab6.setText(班级);jlab6.setBounds(new Rectangle(163, 53, 26, 33);jlab6.setForeground(Color.white);jlab7.setText(专业);jlab7.setBounds(new Rectangle(30, 94, 50, 33);jlab7.setForeground(Color.white);jlab8.setText(自我介绍);jlab8.setBounds(new Rectangle(30, 120, 66, 33);jlab8.setForeground(Color.white);jtextfield1.setText();/学号jtextfield1.setBounds(new Rectangle(86, 16, 74, 22);jtextfield2.setText();/姓名jtextfield2.setBounds(new Rectangle(192, 16, 44, 22);jtextfield3.setText();/出生日期jtextfield3.setBounds(new Rectangle(86, 58, 74, 22);jtextfield4.setText();/班级jtextfield4.setBounds(new Rectangle(191, 58, 44, 22);jtextfield5.setText();/身份证号jtextfield5.setBounds(new Rectangle(230, 98, 158, 22);jcombobox1.setBounds(new Rectangle(275, 15, 50, 25);jcombobox1.addItem(男);jcombobox1.addItem(女);jcombobox1.setForeground(Color.black);jcombobox1.setBackground(Color.white);jcombobox2.setBounds(new Rectangle(86, 98, 75, 25);jcombobox2.addItem(软件);jcombobox2.addItem(工商);jcombobox2.addItem(电信);jcombobox2.addItem(电控);jcombobox2.addItem(营销);jcombobox2.addItem(安全);jcombobox2.setForeground(Color.black);jcombobox2.setBackground(Color.white);jtextarea.setText();jtextarea.setBounds(new Rectangle(84, 139, 285, 92);sure.setText(添加);/设置命令按钮sure.setBounds(new Rectangle(156, 244, 89, 22);sure.addActionListener(new sure_actionperformed();/设置动作监听ContentPane.add(jlab1);ContentPane.add(jlab2);ContentPane.add(jlab3);ContentPane.add(jlab4);ContentPane.add(jlab5);ContentPane.add(jlab6);ContentPane.add(jlab7);ContentPane.add(jlab8);ContentPane.add(jtextfield1);ContentPane.add(jtextfield2);ContentPane.add(jtextfield3);ContentPane.add(jtextfield4);ContentPane.add(jtextfield5);ContentPane.add(jcombobox1);ContentPane.add(jcombobox2);ContentPane.add(jtextarea);ContentPane.add(sure);this.setVisible(true);/设置可见性class sure_actionperformed implements ActionListener /设置动作按钮的监听public void actionPerformed(ActionEvent e) /创建方法 tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);String url=jdbc:odbc:学生管理;Connection con=DriverManager.getConnection(url);Statement stmt=con.createStatement();String SQL=insert into student(学号,姓名,性别,生日,身份证号,专业,班级,简介) values(+jtextfield1.getText()+, +jtextfield2.getText()+, +jcombobox1.getSelectedItem()+, +jtextfield3.getText()+, +jtextfield5.getText()+, +jcombobox2.getSelectedItem()+, +jtextfield4.getText()+, +jtextarea.getText()+); ResultSet rs=stmt.executeQuery(SQL);catch(Exception ee) jtextfield1.setText(); jtextfield2.setText(); jtextfield3.setText(); jtextfield4.setText(); jtextfield5.setText(); jtextarea.setText(); JOptionPane.showMessageDialog(null, 添加信息成功!);ee.printStackTrace(); /:object/Select.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;/* * author LiuMingyan */public class Select extends JFrame implements ActionListener private JTextArea taInfo=new JTextArea(); private JPanel panel=new JPanel(); private JTextField jtextfield1=new JTextField(); private JButton jbutton=new JButton(查询); private JLabel jlabel=new JLabel(学号);public Select()super(查询学生信息);setBounds(200,300,500,300);panel.setLayout(new BorderLayout();panel.add(jlabel, BorderLayout.WEST);panel.add(jtextfield1,BorderLayout.CENTER);panel.add(jbutton,BorderLayout.EAST);jbutton.addActionListener(this);getContentPane().setLayout(new BorderLayout();getContentPane().add(panel,BorderLayout.NORTH);getContentPane().add(taInfo,BorderLayout.CENTER);this.setVisible(true); public void actionPerformed(ActionEvent e) /创建方法 tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);String url=jdbc:odbc:学生管理;Connection con=DriverManager.getConnection(url);Statement stmt=con.createStatement();String SQL=SELECT * FROM student WHERE 学号=+jtextfield1.getText()+; ResultSet rs=stmt.executeQuery(SQL); while(rs.next() taInfo.setText(rs.getString(学号)+n); taInfo.append(rs.getString(姓名)+n); taInfo.append(rs.getString(性别)+n); taInfo.append(rs.getString(生日)+n); taInfo.append(rs.getString(身份证号)+n); taInfo.append(rs.getString(专业)+n); taInfo.append(rs.getString(班级)+n); taInfo.append(rs.getString(简介)+n); rs.close(); stmt.close(); con.close();catch(Exception ee)ee.printStackTrace(); /:object/Update.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;/* * author LiuMingyan */public class Update extends JFrame implements ActionListenerprivate JPanel ContentPane;private JLabel jlab1 = new JLabel();private JLabel jlab2 = new JLabel();private JLabel jlab3 = new JLabel();private JLabel jlab4 = new JLabel();private JLabel jlab5 = new JLabel();private JTextField jtextfield1 = new JTextField();private JTextField jtextfield2 = new JTextField();private JTextField jtextfield3 = new JTextField();private JTextField jtextfield4 = new JTextField();private JButton sure = new JButton();private JButton upda = new JButton();public Update()this.setBounds(320,160,450,450);this.setTitle(修改学生信息); ContentPane =(JPanel)this.getContentPane();/将容器转化为JPanel ContentPane.setLayout(null);/设置可更改性 ContentPane.setBackground(Color.black);jlab1.setText(请先输入学号!);jlab1.setBounds(new Rectangle(30, 11, 160, 33);jlab1.setForeground(Color.white);jlab2.setText(学号);jlab2.setBounds(new Rectangle(31,53,100,33);jlab2.setForeground(Color.white);jlab3.setText(姓名);jlab3.setBounds(new Rectangle(30, 94, 100, 33);jlab3.setForeground(Color.white);jlab4.setText(性别);jlab4.setBounds(new Rectangle(30,120,100,33);jlab4.setForeground(Color.white);jlab5.setText(专业);jlab5.setBounds(new Rectangle(30, 150, 100, 33);jlab5.setForeground(Color.white);jtextfield1.setText();jtextfield1.setBounds(new Rectangle(150, 53, 150, 22);jtextfield2.setText();jtextfield2.setBounds(new Rectangle(150, 94, 150, 22);jtextfield3.setText();jtextfield3.setBounds(new Rectangle(150, 120, 150, 22);jtextfield4.setText();jtextfield4.setBounds(new Rectangle(150, 150, 150, 22);sure.setText(确定);/设置命令按钮sure.setBounds(new Rectangle(320, 53, 89, 22);sure.addActionListener(this);upda.setText(修改);u
展开阅读全文