Java课程设计 - 学生通讯录管理系统

更新时间:2024-01-17 23:53:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

苏州科技学院电子信息实验中心

面向对象技术课程设计 报告

--学生通讯录管理系统

专业年级 计算机科学与技术2014 班 级 计算机1421 学 号 1430107132 姓 名 胡耀文

成 绩

指导教师

张宗杰

2016 年 一

4月

1.引言

1.1 1.2

项目的名称 项目背景和目标

学生通讯录管理系统

学生通讯录管理系统主要对在校学生的基本信息进行管

理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供基本信息查询功能。我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设

1.3 项目的可行性研究

设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的学生通讯录管理系统

二、 需求分析

2.1系统概述

此系统提供给教师用户和学生用户。教师登陆后可以对

学生基本信息表进行查看、增添新记录、删除记录等操作。学生登陆后能查询自己的信息。

2.2系统运行环境

Java运行在eclipse软件上,数据库用mysql数据库

2.3功能需求描述

学生通讯录管理系统要面对教师和学生用户。对于教师,需要查询全部学生的基本信息,并且可以对其进行修改。对于学生,需要查询自己的基本信息。为了保护学生基本信息隐私,每位学生登录系统后只能查询自己的信息,而无法看到别人的信息。

三、系统设计

3.1开发与设计的总体思想

教师方面:教师通过自己的用户名和密码登录后,进入教

师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。在查询功能里面,可以选择是查询学生基本信息。在修改功能里面,包括对学生基本信息表进行增加、删除记录。

学生方面:学生通过自己的用户名和密码登录此系统后, 可以查询自己的信息。

3.2系统模块结构图

学 生 登 录 教师登录 学 生 通 讯 录 管 理 系 统

询 退出 教师操作界面 查询 修改

学生基本信息 删除信息 添加信 息 3.3数据库结构设计

为了支持此学生通讯录管理系统,创建数据库studencontacts。在这个数据库中包含四个表:student表,teacher表,information表。截图如下:

在student表中,有两个属性列,分别为:sname(学生姓名姓名),password(登录密码)其基本数据类型分别为:char,char。当学生登录时,从此表中获取数据。截图如下:

在teacher(教师登陆)表中,有两个属性列,分别为:tname(教师姓名),password(登录密码)。其基本数据类型分别为:char,char。当教师用户登陆此系统时,从该表获取数据。截图如下:

在information(学生信息)表中,有五个属性列,分别为:snum(学号),sname(学生姓名),phonumber(手机号码),sex(性别),dept(系别)。其基本数据类型分别为:int,char,char,char,char。当查询学生信息时,从此表获取数据。截图如下:

3.4模块设计

总主界面登陆后,可以选择用户,是学生用户或者教师用户。 如果选择学生用户,则进入学生登录界面,在这个界面上输入学生姓名和用户密码。输入后单击“查询”按钮,若密码正确,这显示该学生本人信息,若密码不正确,这提示密码错误。输入后单击“修改”按钮,跳转到用户修改密码界面进行修改,单击“注册”按钮,跳到用户注册页面进行注册。

如果选择教师用户,则进入教师登陆界面,在这个界面上输入教师姓名和用户密码,输入后单击“登录”按钮,则进入教师主界面。在教师主界面可以选择进行查询操作还是修改操作。在查询操作中包含查询学生基本信息。

若要查询学生基本信息,点击菜单项则进入学生基本信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“姓名”字段时,要键入某个学生姓名。输入后,单击“查询该生信息”按钮,则开始数据库查询。单击“浏览学生信息”按钮,则查看所有学生的信息。如果数据库检索到所需信息,这生成列表显示检索结构,如果没有所需信息,则列表中的内容为空。

如果教师要进行修改操作,则在教师主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有两项修改操作:增加新生信息,删除毕业生信息(这两个是对学生基本信息表的操作)。在增加信息操作中,按照标签提示依次输入要增添的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。在删除信息操作中,输入要删除信息的学生姓名,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。

以上就是该学生通讯录管理系统的操作步骤。

3.5系统流程描述

开始

登录

学生登录界面 教师登录

否 否 成功 成功 是 提示密码错误 是 提示密码错误

教师主界面 查询学生信息

查询 修改

学生信息 添加信息 删除信息

四、系统实现

本系统保存在studentcontacts包里

其中包含四个包:connection包,dao包,model包,ui包 1.Connection包中的类:

(1)DBconnection类:此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。若连接成功,提示:connection success,若连接失败,提示:connection failure

DBconnection类源代码:

package connection;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBconnection {

public static Connection con=null;

public static Connection getConnection() {

try { } try {

String dbDriver=\; Class.forName(dbDriver);

System.out.println(\); System.out.println(\); e.printStackTrace();

} catch (ClassNotFoundException e) {

con=DriverManager.getConnection(\

}

return con;

System.out.println(\); System.out.println(\); e.printStackTrace();

ost/studentcontacts\,\,\);

} catch (SQLException e) {

}

}

public static void closeConnection() {

if(con!=null)

try {

con.close();

System.out.println(\

success\);

} catch (SQLException e) { }

System.out.println(\); e.printStackTrace();

}

2.Dao包中的类:

(1)StudentDao类:此类中有一个方法,student,作用分别是控制学生登陆。

Studentlogin()方法中,有两个参数,分别传给select语句中的sname(学生姓名)和password(登录密码),利用select语句在student表中检索学生登录信息。若存在此信息,返回true,否则返回false StudentDao类源代码:

package Dao;

import java.sql.Connection;

import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import connection.DBconnection; public class StudentDao {

public boolean student(String sname,String password) {

DBconnection db=new DBconnection(); Connection con=db.getConnection(); boolean isfound=false; PreparedStatement pst; try {

}

}

pst = con.prepareStatement(\pst.setString(1, sname);

ResultSet rs=pst.executeQuery(); if(rs.next()) isfound=true; e.printStackTrace();

student where sname=? and password=?\);

pst.setString(2,password);

} catch (SQLException e) {

System.out.println(isfound); return isfound;

}

public static void main(String[] args) { }

}(2)TeacherDao

new StudentDao();

类:此类中有一个方法:queryTeacher,作

用是控制教师登陆

queryTeacher()方法中,有两个参数,分别传给select语句中的tname(教师姓名)和password(登陆密码),利用select语句在teacher表中检索教师登陆信息。若存在此信息,返回true,否则返回false TeacherDao类源代码:

package Dao;

import java.sql.Connection;

import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import connection.DBconnection; public class TeacherDao {

public boolean Teacherlogin(String tname,String

DBconnection db=new DBconnection(); Connection con=db.getConnection(); boolean isfound=false;

password) {

}

}

PreparedStatement pst; try {

pst = con.prepareStatement(\pst.setString(1, tname);

ResultSet rs=pst.executeQuery(); if(rs.next()) isfound=true; e.printStackTrace();

teacher where tname=? and password=?\);

pst.setString(2,password);

} catch (SQLException e) { }

System.out.println(isfound); return isfound;

(3)InformationDao类:此类中有四个方法,

queryInformation,addInformation,deleteInformation,updateInformation,queryInformation1, 作用分别是为教师用户提供查询学生信息,添加信息,删除信息,更新信息;为学生用户提供查询本人信息功能,。

queryInformation()方法中,有一个参数,传给select语句中的sname(学生姓名),利用select语句,查询学生信息表中的内容。若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理。

addInformation()方法中,有五个参数,分别传给insert语句中的snum(学号),sname(学生姓名),phonumber(手机号码),sex(性别),dept(系别)。利用insert语句,将这些记录写入information表中。若插入成功返回true,否则返 回false。 updateInformation()方法中,有五个参数,分别传给insert语句中的snum(学号),sname(学生姓名),phonumber(手机号码),sex(性别),dept(系别)。利用insert语句,将这些记录写入information表中。若插入成功返回true,否则返 回false。 deleteInformation()方法中,有一个参数,传给delete语句中的snum(学生学号),利用delete语句,把information表中相关学生信息删除。若删除成功,返回 true,否则返回false。 queryInformation1()方法中,有一个参数,传给传给select

语句中的sname(学生姓名),这个sname的学生用户登录时输入的姓名。即此类的作用是每个学生登陆只能查看本人信息。若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理

InformationDao类源代码:

package Dao;

import java.sql.Connection;

import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import ui.StudentLoginUI; import Model.Information; import connection.DBconnection; public class InformationDao {

public ArrayList queryInformation(String key) {

ArrayList lis = new ArrayList();

Connection con = DBconnection.getConnection(); Statement stm; try { }

stm = con.createStatement();

String sql = \

+ \;

sname like '%\ + key

System.out.println(sql);

ResultSet rs = stm.executeQuery(sql); while (rs.next()) { }

e.printStackTrace();

Information information = new

.getString(3), rs.getString(4),

Information(rs.getInt(1), rs.getString(2), rs rs.getString(5));

lis.add(information);

} catch (SQLException e) {

}

return lis;

public ArrayList queryInformation1(String key) { }

public boolean addInformation(int snum, String sname,

String dept) {

ArrayList lis = new ArrayList();

Connection con = DBconnection.getConnection(); Statement stm; try { }

return lis;

stm = con.createStatement();

String sql = \

+ \;

sname like '%\ + StudentLoginUI.st1

System.out.println(sql);

ResultSet rs = stm.executeQuery(sql); while (rs.next()) { }

e.printStackTrace();

Information information = new

.getString(3), rs.getString(4),

Information(rs.getInt(1), rs.getString(2), rs rs.getString(5));

lis.add(information);

} catch (SQLException e) {

String phonumber, String sex,

Connection con = DBconnection.getConnection(); PreparedStatement pst; try {

pst = con.prepareStatement(\pst.setInt(1, snum); pst.setString(2, sname); pst.setString(3, phonumber); pst.setString(4, sex);

information values(?,?,?,?,?)\);

}

pst.setString(5, dept);

int count = pst.executeUpdate();// 返回修改的记if (count == 1)

return true; return false; else

录数

}

} catch (SQLException e) {

e.printStackTrace();

return false;

public boolean deleteInformation(String key) { }

public ArrayList updateInformation(String key) {

ArrayList lis = new ArrayList();

Connection con = DBconnection.getConnection(); Statement stm; try {

stm = con.createStatement();

String sql = \Connection con = DBconnection.getConnection(); Statement stm; try { }

return false;

stm = con.createStatement();

String sql = \from information where snum System.out.println(sql);

int count = stm.executeUpdate(sql); if (count == 1)

return true; return false; else

like '%\ + key + \;

} catch (SQLException e) {

e.printStackTrace();

sname like '%\ + key + \; }

}

}

return lis;

System.out.println(sql);

ResultSet rs = stm.executeQuery(sql); while (rs.next()) { }

e.printStackTrace();

Information information = new

.getString(3),

Information(rs.getInt(1), rs.getString(2), rs rs.getString(4),rs.getString(5));

lis.add(information);

} catch (SQLException e) {

3.model包中的类:

(1)Information类:此类中有五个成员变量int snum;String sname;String phonumber;String sex;String dept;十个成员方法,分别获取和设置这五个变量,即为information表中五个属性的记录值,均为getXXX()setXXX()方法,还有一个构造方法,用于调用其对象时对成员变量赋值 Information类源代码:

package Model;

public class Information{ int snum; String sname; String phonumber; String sex; String dept;

public int getSnum() { }

public void setSnum(int snum) { }

public String getSname() {

this.snum = snum; return snum;

}

return sname;

public void setSname(String sname) { }

public String getPhonumber() { }

public void setPhonumber(String phonumber) { }

public String getSex() { }

public void setSex(String sex) { }

public String getDept() { }

public void setDept(String dept) { }

public Information(int snum, String sname, String phonumber, String sex,String dept) {

super();

this.snum = snum; this.sname = sname;

this.phonumber = phonumber; this.sex = sex; this.dept = dept; }

}

this.dept = dept; return dept; this.sex = sex; return sex;

this.phonumber = phonumber; return phonumber; this.sname = sname;

4.ui包中的类:

(1) LoginUI类:此类为登陆界面,在这个界面上,设置有两

个按钮,学生按钮,教师按钮。给这两个按钮注册事件addActionListener,分别在内部类TeacherLoginActionListene和StudentLoginActionListener中的默认方法actionPerformed()中创建TeacherLoginUI类和StudentLoginUI类的对象,即打开教师登陆界面和学生登录界面,并将原登陆界面关闭。 LoginUI类源代码:

package ui; import java.awt.*; import java.awt.event.*; import javax.swing.*;

public class LoginUI extends JFrame {

JLabel l1;

JButton bt1, bt2; Container cp; public LoginUI() {

l1 = new JLabel(\请选择用户类型\); bt1 = new JButton(\教师\); bt2 = new JButton(\学生\); JPanel p1 = new JPanel(); p1.setLayout(null);

l1.setBounds(150, 150, 120, 40); p1.add(l1);

bt1.setBounds(120, 230, 80, 30); p1.add(bt1);

bt2.setBounds(220, 230, 80, 30); p1.add(bt2);

bt1.addActionListener(new

TeacherLoginActionListener());//注册事件 bt2.addActionListener(new StudentLoginActionListener());//注册事件 cp = getContentPane();

this.setBounds(200, 200, p1.getHeight(), cp.add(p1);

this.setTitle(\用户登录界面\); this.setSize(400, 400); this.setVisible(true);

p1.getHeight());

}

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) { }

System.exit(0);

});

class TeacherLoginActionListener implements }

public void actionPerformed(ActionEvent e){ }

new TeacherLoginUI(); dispose();

ActionListener{

class StudentLoginActionListener implements ActionListener{

public void actionPerformed(ActionEvent e){ }

}

public static void main(String[] args) { } }

new LoginUI();

new StudentLoginUI(); dispose();

执行截图如下:

(2)StudentLoginUI类:此类为学生登陆界面,在这个界面

上有两个文本框,分别输入学生姓名和登录密码,还有四个按钮,查询、注册、修改和退出。输入后,从两个文本框中获取用户输入的内容,点击“查询”按钮时,调用StudentDao类中的student()方法验证是否存在该用户。若存在,则创建StudentInformationUI类的对象,即打开学生信息界面,显示此登陆学生的信息,若不存在,则提示密码错误。单击“注册”按钮,调用StudentDao类中的student()方法验证是否存在该用户。若存在,则创建ZhuceStudentUI类的对象,即打开学生注册界面。单击“修改”按钮,调用StudentDao类中的student()方法验证是否存在该用户。若存在,则创建xiugaiStudentUI类的对象,即打开修改学生密码界面。

StudentLoginUI类源代码:

package ui;

import java.awt.*; import java.awt.event.*; import javax.swing.*; import Dao.StudentDao;

public class StudentLoginUI extends JFrame{

JLabel l1, l2; JTextField t1; JPasswordField t2; JButton bt1, bt2; Container cp;

public static String st1; public String st2; public StudentLoginUI(){

l1 = new JLabel(\学生姓名\); l2 = new JLabel(\密码\); t1 = new JTextField(12); t2 = new JPasswordField(12); bt1 = new JButton(\查询\); bt2 = new JButton(\退出\);

JPanel p1 = new JPanel(); p1.setLayout(null);

l1.setBounds(150, 150, 80, 40);

p1.add(l1);

t1.setBounds(250, 150, 80, 30); p1.add(t1);

l2.setBounds(150, 190, 80, 40); p1.add(l2);

t2.setBounds(250, 190, 80, 30); p1.add(t2);

bt1.setBounds(150, 280,70, 30); p1.add(bt1);

bt2.setBounds(240, 280, 70, 30); p1.add(bt2);

bt1.addActionListener(new

LoginActionListener());//注册事件 bt2.addActionListener(new

bt2.addActionListener(new

ExitActionListener());//注册事件 cp = getContentPane();

}

class LoginActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

st1 = t1.getText(); st2 = t2.getText(); StudentDao oneStudentDao = new StudentDao(); boolean isSuccess = oneStudentDao.student(st1, this.setBounds(200, 200, p1.getHeight(), cp.add(p1);

this.setTitle(\学生登录界面\); this.setSize(450, 450); this.setVisible(true);

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) { }

System.exit(0);

p1.getHeight());

});

st2);

if (isSuccess) {

new StudentInformationUI(); dispose();

JOptionPane.showMessageDialog(null, \用户名

} else

密码错误\, \提示信息\, JOptionPane.INFORMATION_MESSAGE); }

}

class ExitActionListener implements ActionListener { }

public static void main(String[] args) { }

new StudentLoginUI();

public void actionPerformed(ActionEvent e) { }

System.exit(0); }

执行截图如下:

(3)StudentInformationUI类:此类为学生信息界面,此类

中有一个标签和一个表格。标签中从StudentLoginUI类中获取学生登录时使用的用户名,显示在标签中以表示以下是某某同学的信息。表格中为此学生的信息。调用InformationDao类中的queryInformation1(),将得到的

ArrayList对象lis放入Vector对象中,形成表格。 StudentInformationUI类源代码:

package ui;

import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.*;

import javax.swing.event.*;

import javax.swing.table.DefaultTableModel; import Model.Information; import Dao.InformationDao;

public class StudentInformationUI extends JFrame{

String aa=StudentLoginUI.st1; JLabel selectionLabel; JPanel topPanel; Container container; JTable table;

JScrollPane bookScrollPane; JPanel bottomPanel;

public StudentInformationUI(){

container = this.getContentPane();

selectionLabel = new JLabel(aa+\同学通讯录信息如下\); topPanel = new JPanel(); topPanel.setLayout(new

topPanel.add(selectionLabel);

this.add(BorderLayout.NORTH, topPanel); table = new JTable();

bookScrollPane = new JScrollPane(table); this.add(BorderLayout.CENTER, bookScrollPane); bottomPanel = new JPanel();

this.add(BorderLayout.SOUTH, bottomPanel); this.setTitle(\学生信息\); this.setSize(600, 450); this.setVisible(true);

InformationDao oneInformation=new

FlowLayout(FlowLayout.CENTER));

InformationDao();

}

}

ArrayList lis =

Vector head = new Vector(); head.add(\学号\); head.add(\姓名\); head.add(\手机号码\); head.add(\性别\);

head.add(\系别\);

Vector content = new Vector(); for (int i = 0; i < lis.size(); i++) { }

DefaultTableModel model = new table.setModel(model); repaint();

Vector row = new Vector();

Information oneInformation1 = (Information) row.add(oneInformation1.getSnum()); row.add(oneInformation1.getSname()); row.add(oneInformation1.getPhonumber()); row.add(oneInformation1.getSex()); row.add(oneInformation1.getDept()); content.add(row);

oneInformation.queryInformation1(aa);

lis.get(i);

DefaultTableModel(content, head);

执行截图如下:

(6)TeacherLoginUI类:此类为教师登陆界面,在这个界面上有两个文本框,分别输入教师姓名和登录密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户输入的内容,点击“登陆”按钮时,调用TeacherDao类中的queryTeacher()方法验证是否存在该用户。若存在创建TeacherMainUI类的对象,即打开教师主界面,若不存在,则提示密码错误。

TeacherLoginUI类源代码:

package ui;

import java.awt.*; import java.awt.event.*; import javax.swing.*; import Dao.TeacherDao;

public class TeacherLoginUI extends JFrame {

JLabel l1, l2; JTextField t1; JPasswordField t2; JButton bt1, bt2; Container cp;

public TeacherLoginUI(){

l1 = new JLabel(\教师姓名\); l2 = new JLabel(\密码\); t1 = new JTextField(12); t2 = new JPasswordField(12); bt1 = new JButton(\登录\); bt2 = new JButton(\退出\); JPanel p1 = new JPanel(); p1.setLayout(null);

l1.setBounds(150, 150, 80, 40); p1.add(l1);

t1.setBounds(250, 150, 80, 30); p1.add(t1);

l2.setBounds(150, 190, 80, 40); p1.add(l2);

t2.setBounds(250, 190, 80, 30); p1.add(t2);

bt1.setBounds(150, 230, 80, 30);

p1.add(bt1);

bt2.setBounds(250, 230, 80, 30); p1.add(bt2);

bt1.addActionListener(new

LoginActionListener());//注册事件 bt2.addActionListener(new ExitActionListener());//注册事件 cp = getContentPane();

}

class LoginActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

String st1 = t1.getText(); String st2 = t2.getText(); TeacherDao oneTeacherDao = new TeacherDao(); boolean isSuccess = if (isSuccess) {

new TeacherMainUI(); dispose();

JOptionPane.showMessageDialog(null, \用户名

this.setBounds(200, 200, p1.getHeight(), cp.add(p1);

this.setTitle(\教师登录界面\); this.setSize(400, 400); this.setVisible(true);

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) { }

System.exit(0);

p1.getHeight());

});

oneTeacherDao.Teacherlogin(st1, st2);

} else

密码错误\, \提示信息\,

JOptionPane.INFORMATION_MESSAGE);

}

}

}

class ExitActionListener implements ActionListener { }

public static void main(String[] args) { }

new TeacherLoginUI();

public void actionPerformed(ActionEvent e) { }

System.exit(0);

执行截图如下:

(7)TeacherMainUI类:此类为教师主界面类,在此界面上有一个菜单栏,三个菜单:文件,查询,修改。其中“文件”菜单中有“退出”菜单项,点击时跳出对话框问是否真的退出,若点击是,窗口关闭,若点击否,回复原界面。“查询”菜单中有“学生基本信息”菜单项:当点击“学生基本信息”时,通过注册事件,创建InformationQueryUI类的对象,即打开查询学生基本信息的窗口,修改菜单中有“增加新生信息”“删除毕业生信息”“更新”三个菜单项,当点击“增加新生信息”时,通过注册事件,创建InformationAddUI类的对象,即打开添加学生基本信息的窗口,当点击“删除毕业生信息”时,通过注册事件,创建InformationDeleteUI类的对象,即打开删除学生基本信息的窗口。 TeacherMainUI类源代码:

package ui;

import java.awt.*; import java.awt.event.*;

import javax.swing.*;

public class TeacherMainUI extends JFrame{ Container ctp; TeacherMainUI(){

}

public void buildMainMenu(JMenuBar menuBar){

JMenu fileMenu=new JMenu(\文件\);

JMenuItem exitMenuItem=new JMenuItem(\退出\); exitMenuItem.addActionListener(new ctp = this.getContentPane();

this.setTitle(\欢迎进入学生通讯录管理系统!\); ctp.setLayout(new BorderLayout()); JMenuBar menuBar = new JMenuBar(); buildMainMenu(menuBar); this.setJMenuBar(menuBar);

this.setBounds(100, 100, 400, 300); this.setVisible(true);

ExitActionListener());//注册事件 fileMenu.add(exitMenuItem);

menuBar.add(fileMenu);

JMenu queryMenu=new JMenu(\查询\);

JMenuItem queryMenuItem=new JMenuItem(\学生基本信息queryMenuItem.addActionListener(new

\);

QueryActionListener());//注册事件 queryMenu.add(queryMenuItem);

menuBar.add(queryMenu);

JMenu changeMenu=new JMenu(\修改\);

JMenuItem addMenuItem=new JMenuItem(\增加信息\); JMenuItem deleteMenuItem=new JMenuItem(\删除信息\); JMenuItem updateMenuItem=new JMenuItem(\更新信息\); addMenuItem.addActionListener(new

AddActionListener());//注册事件 deleteMenuItem.addActionListener(new DeleteActionListener());//注册事件 updateMenuItem.addActionListener(new UpdateActionListener());//注册事件

}

changeMenu.add(addMenuItem); changeMenu.add(deleteMenuItem); changeMenu.add(updateMenuItem); menuBar.add(changeMenu);

class ExitActionListener implements ActionListener{

public void actionPerformed(ActionEvent e) { int result = JOptionPane.showConfirmDialog(null,

\真的要退出吗?\, \提示信息\,

JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,

}

class QueryActionListener implements ActionListener{ }

class AddActionListener implements ActionListener{ }

class DeleteActionListener implements ActionListener{ }

public static void main(String[] args) { }

}执行截图如下:

new TeacherMainUI();

public void actionPerformed(ActionEvent e){

new InformationDeleteUI();

public void actionPerformed(ActionEvent e){

new InformationAddUI();

public void actionPerformed(ActionEvent e){ }

new InformationQueryUI(); }

}

null);

if (result == 0)

System.exit(0); else if (result == 1) {

}

}

(8)InformationQueryUI类:此类为学生信息查询界面类,在此界面有一个标签,一个文本框,三个按钮。在文本框中输入要查询信息的学生姓名,单击“查询该生信息”按钮时,通过注册事件,在内部类的方法里,获取从文本框中获取的学生姓名信息,并把此信息作为实参传给InformationDao类的queryInformation()方法,得到查询结构。同样单击“浏览学生信息”显示数据库中已有学生的信息。再把查询结构通过Vector对象放入ArrayList类的对象lis中,从而使检索结果显示在表格中。 InformationQueryUI类源代码:

package ui;

import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.*;

import javax.swing.event.*;

import javax.swing.table.DefaultTableModel; import ui.InformationAddUI.CloseListener; import Model.Information; import Dao.InformationDao;

public class InformationQueryUI extends JFrame{

JLabel selectionLabel; JPanel topPanel; JButton

JTextField keywordText; Container container; String fieldSelected; int selectedSnum; JTable table;

JScrollPane bookScrollPane;

retrievalButton1,retrievalButton2,retrievalButton3;

JPanel bottomPanel;

public InformationQueryUI(){

container = this.getContentPane(); selectionLabel = new JLabel(\学生姓名\); keywordText = new JTextField(\, 20);

retrievalButton1 = new JButton(\查询该生信息\); retrievalButton2 = new JButton(\浏览学生信息\); retrievalButton3 = new JButton(\返回\); topPanel = new JPanel(); topPanel.setLayout(new

keywordText.setSize(topPanel.getWidth() / 2, topPanel.add(selectionLabel); topPanel.add(keywordText); topPanel.add(retrievalButton1); topPanel.add(retrievalButton2); topPanel.add(retrievalButton3);

this.add(BorderLayout.NORTH, topPanel); retrievalButton1.addActionListener(new

FlowLayout(FlowLayout.LEFT)); topPanel.getWidth());

RetrievalActionListener());//给检索按钮注册事件 retrievalButton2.addActionListener(new RetrievalActionListener());

}

class RetrievalActionListener implements

public void actionPerformed(ActionEvent arg0) { retrievalButton3.addActionListener(new table = new JTable();

bookScrollPane = new JScrollPane(table); this.add(BorderLayout.CENTER, bookScrollPane); bottomPanel = new JPanel();

this.add(BorderLayout.SOUTH, bottomPanel); this.setTitle(\学生信息检索查询系统\); this.setSize(600, 450); this.setVisible(true);

CloseListener());

ActionListener{

}

}

String key = keywordText.getText(); InformationDao oneInformation=new ArrayList lis =

Vector head = new Vector(); head.add(\学号\); head.add(\姓名\); head.add(\手机号码\); head.add(\性别\);

head.add(\系别\);

Vector content = new Vector(); for (int i = 0; i < lis.size(); i++) { }

DefaultTableModel model = new table.setModel(model); repaint();

Vector row = new Vector();

Information oneInformation1 = (Information) row.add(oneInformation1.getSnum()); row.add(oneInformation1.getSname()); row.add(oneInformation1.getPhonumber()); row.add(oneInformation1.getSex()); row.add(oneInformation1.getDept()); content.add(row);

InformationDao();

oneInformation.queryInformation(key);

lis.get(i);

DefaultTableModel(content, head);

class CloseListener implements ActionListener{ }

public static void main(String[] args) { }

new InformationQueryUI();

public void actionPerformed(ActionEvent e) { }

dispose();

}

执行截图如下:

(9)InformationAddUI类:此类为添加学生基本信息界面类,在此界面中有五个标签,五个文本框,还有两个按钮“添加”“退出”。根据五个标签的提示,分别在五个文本框中输入信息。当单击“添加”按钮时,通过注册事件,在内部类的actionPerformed()方法中,获取五个文本框中的信息,并转换成相应的基本数据类型,通过InformationDao类的addInformation()方法,将数据写入数据库的information表中。若添加成功,提示成功,否则提示失败。 InformationAddUI类源代码:

package ui; import java.awt.*; import java.awt.event.*; import javax.swing.*; import Dao.InformationDao;

public class InformationAddUI extends JFrame{

JLabel l1, l2, l3, l4, l5; JTextField t1, t2, t3, t4, t5; JButton bt1, bt2;

public InformationAddUI(){

l1 = new JLabel(\学号\); l2 = new JLabel(\姓名\);

l3 = new JLabel(\手机号码\); l4 = new JLabel(\性别\); l5 = new JLabel(\系别\); t1 = new JTextField(20); t2 = new JTextField(20); t3 = new JTextField(20); t4 = new JTextField(20); t5 = new JTextField(20); bt1 = new JButton(\添加\); bt2 = new JButton(\退出\); JPanel p1 = new JPanel(); p1.setLayout(null);

l1.setBounds(100, 100, 80, 30); p1.add(l1);

t1.setBounds(170, 100, 100, 30); p1.add(t1);

l2.setBounds(100, 140, 80, 30); p1.add(l2);

t2.setBounds(170, 140, 200, 30); p1.add(t2);

l3.setBounds(100, 180, 80, 30); p1.add(l3);

t3.setBounds(170, 180, 200, 30); p1.add(t3);

l4.setBounds(100, 220, 80, 30); p1.add(l4);

t4.setBounds(170, 220, 200, 30); p1.add(t4);

l5.setBounds(100, 260, 80, 30); p1.add(l5);

t5.setBounds(170, 260, 60, 30); p1.add(t5);

bt1.setBounds(140, 300, 80, 30); p1.add(bt1);

bt2.setBounds(280, 300, 80, 30); p1.add(bt2);

bt1.addActionListener(new AddListener());

bt2.addActionListener(new CloseListener()); this.setBounds(200, 200, p1.getHeight(), this.add(p1);

this.setTitle(\添加信息界面\); this.setSize(400, 400); this.setVisible(true);

this.addWindowListener(new WindowAdapter() {// 匿

public void windowClosing(WindowEvent e)

p1.getHeight());

名类开始

// 把退出窗口的语句写在本方法中 {

}

class AddListener implements ActionListener{

public void actionPerformed(ActionEvent arg0) {

InformationDao oneInformationDao = new int snum = Integer.parseInt(t1.getText()); String sname = t2.getText(); String phonumber = t3.getText(); String sex = t4.getText(); String dept = t5.getText(); boolean issuccess =

}

dispose();

});

InformationDao();

oneInformationDao.addInformation(snum, sname,phonumber,sex,dept); if (issuccess) {

JOptionPane.showMessageDialog(null,

\, \提示信息\, JOptionPane.INFORMATION_MESSAGE);

t1.setText(\); t2.setText(\); t3.setText(\); t4.setText(\); t5.setText(\);

} else {

JOptionPane.showMessageDialog(null,

\, \提示信息\, JOptionPane.INFORMATION_MESSAGE);

}

class CloseListener implements ActionListener{ }

public static void main(String[] args) { } }

new InformationAddUI();

public void actionPerformed(ActionEvent e) { }

dispose(); }

}

执行截图如下:

(10)InformationDeleteUI类:此类为删除学生基本信息界面类,在此界面中有一个标签,一个文本框,还有两个按钮“删除”“退出”。根据标签提示,在文本框中输入要删除信息记录的学生姓名。当单击“删除”按钮时,通过注册事件,在内部类的actionPerformed()方法中,获取这个文本框中的信息,作为实参,通过InformationDao类的

deleteInformation()方法,就删除信息。若删除成功,提示成功,否则提示失败。

InformationDeleteUI类源代码:

package ui;

import java.awt.*; import java.awt.event.*; import javax.swing.*; import Dao.InformationDao;

public class InformationDeleteUI extends JFrame{

JLabel l1; JTextField t1; JButton bt1, bt2;

public InformationDeleteUI(){

l1 = new JLabel(\请输入要删除信息的学生学号:\); t1 = new JTextField(20); bt1 = new JButton(\删除\); bt2 = new JButton(\退出\); JPanel p1 = new JPanel(); p1.setLayout(null);

l1.setBounds(100, 100, 220, 30); p1.add(l1);

t1.setBounds(150, 150, 100, 30); p1.add(t1);

bt1.setBounds(140, 190, 80, 30); p1.add(bt1);

bt2.setBounds(280, 190, 80, 30); p1.add(bt2);

bt1.addActionListener(new DeleteListener()); bt2.addActionListener(new CloseListener()); this.setBounds(200, 200, p1.getHeight(),

p1.getHeight());

this.add(p1);

this.setTitle(\删除信息界面\); this.setSize(400, 400); this.setVisible(true);

this.addWindowListener(new WindowAdapter() {// 匿

public void windowClosing(WindowEvent e)

名类开始

// 把退出窗口的语句写在本方法中 {

dispose(); } // 窗口关闭

}

});// 匿名类结束

class DeleteListener implements ActionListener{

public void actionPerformed(ActionEvent e) {

InformationDao oneInformationDao = new String snum = t1.getText(); boolean issuccess =

InformationDao();

oneInformationDao.deleteInformation(snum); if (issuccess) {

JOptionPane.showMessageDialog(null,

\, \提示信息\, JOptionPane.INFORMATION_MESSAGE);

t1.setText(\);

JOptionPane.showMessageDialog(null, } else {

\, \提示信息\, JOptionPane.INFORMATION_MESSAGE);

}

class CloseListener implements ActionListener{ }

public void actionPerformed(ActionEvent e) { }

dispose(); }

}

public static void main(String[] args) { } }

new InformationDeleteUI ();

执行截图如下:

五.课程设计心得与体会

这次试验设计我做的是学生通讯录管理系统。学生通讯录管理系统主要对在校学生的个人基本信息以进行管理,对教师用户提供查询信息、增添信息、删除、修改信息等操作功能;对学生用户提供信息查询、注册、修改密码等功能。我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设

虽然系统的基本功能都已实现,但还是存在系统不稳定等多个问题尚待解决。我在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有现实意义。所以在准备工作中要正确

分析用户需求,了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。

通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。

六、参考文献

本文来源:https://www.bwwdw.com/article/ecto.html

Top