资源描述
软 件 学 院
课程设计汇报书
课程名称 面向对象程序设计
设计题目 学生个人信息管理系统
专业班级 嵌入式软件09-2
学 号 090214
姓 名 王翀
指导老师
年 6 月
目录
1 设计时间 4
2 设计目标 4
3设计任务 4
4 设计内容 4
4.1需求分析 4
4.1.1问题描述 4
4.1.2基础要求 4
4.2总体设计 5
4.2.1包描述 7
4.2.2类描述 8
4.2.3类之间关系 9
类MainTest继承JFrame。 9
类jenter实现接口ActionListener。 9
4.3 具体设计 9
4.3.1类图 13
4.3.2页面设计 13
4.4 测试和分析 13
4.5 程序代码 15
5 总结和展望 30
参考文件 31
课程设计成绩评定 32
1 设计时间
6月13日——6月19日
2 设计目标
《面向对象程序设计》是一门实践性很强计算机专业基础课程,课程设计是学习完该课程后进行一次较全方面综合练习。其目标在于经过实践加深学生对面向对象程序设计理论、方法和基础知识了解,掌握使用Java语言进行面向对象设计基础方法,提升利用面向对象知识分析实际问题、处理实际问题能力,提升学生应用能力
3设计任务
设计一个简单学生个人信息管理系统,该系统含有录入,查询,修改三项基础功效。要求以下:
(1)含有简单录入,查询和修改功效。
(2)修改学生信息必需输入学号,然后对姓名、性别和专业等进行修改;
(3)使用文件存放数据。(也可用数据库)
(4)学生个人信息必需包含:学号、姓名、性别、出生日期、身份证号、专业、班级自我介绍,其它可自行丰富。
4 设计内容
4.1需求分析
学生管理系统需要对学生基础信息进行简单录入,查询,修改三项基础功效。具体实现使用Access数据库实现基础操作,前台窗口使用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 ActionListener
{
MainTest 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、数据库表设计:
使用Access数据库
Student表:
字段名
类型
是否可为空
学号
文本
否
姓名
文本
否
性别
文本
否
生日
日期/时间
否
身份证号
文本
否
专业
文本
否
班级
文本
否
介绍
文本
否
4.3.1类图
JFrame
MainTest
Select
UpDate
Insert
ActionListener
jenter
Select
Update
MainTest
类继承
接口实现
图 4-3-1 类关系图
4.3.2页面设计
添加学生信息
学生管理系统
修改学生信息
查询学生信息
图 4-3-2 主页面设计图
4.4 测试和分析
4.5 程序代码
//:object/MainTest.java
import 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 ActionListener
{
public void actionPerformed(ActionEvent e)
{
//设置3个按钮可见性
Insert.setVisible(true);
Update.setVisible(true);
Select.setVisible(true);
}
}
/***********主窗口监听事件**************************/
class MainTest_actionPerformed implements ActionListener
{
MainTest 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.java
import 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 implement
展开阅读全文