JAVA学生通讯录管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序号:
学号: ********
常州大学
课程设计
课程名称:《面向对象程序设计(JAVA)》
题目:通讯录管理系统
*名:***
学院:信息科学与工程学院专业班级:计算机112
***师:***
设计时间: 2012 年 12 月 24 日 2013 年 1 月 11 日
目录
一、系统分析 (4)
1.功能分析: (4)
2.功能模块: (4)
3.程序流程图: (4)
二、数据库设计 (5)
1.数据库分析: (5)
2.数据库连接: (5)
3.数据库建立: (6)
三、系统的详细设计 (6)
1.系统登录界面: (6)
(1)登录功能: (6)
(2)重置功能(代码): (6)
2.系统主界面: (6)
(1) 浏览学生信息: (6)
(2) 查询学生信息: (7)
(3) 添加学生信息: (7)
(4)删除学生信息: (7)
(5) 排序学生信息: (7)
3.浏览学生信息功能: (7)
4.查询学生信息功能: (8)
5.添加学生信息功能: (9)
(1). 添加: (9)
(2). 重置: (10)
6.删除学生信息功能: (10)
7.排序学生信息功能: (11)
8.图片插入: (12)
9.音乐插入: (13)
四、系统的使用说明 (13)
1.登录界面: (13)
2.系统主界面: (14)
3.浏览学生信息界面: (15)
4.查询学生信息界面: (15)
5.添加学生信息界面: (16)
6.删除学生信息界面: (16)
7.排序学生信息界面: (17)
五、日志 (17)
六、心得 (18)
七、参考文献: (18)
八、鸣谢 (18)
一、系统分析
1. 功能分析:
假设某校学生通讯录基本信息主要包括:学号、姓名、通讯地址、电话等,本系统应能对这些基本信息进行管理,并要求具有对学生信息添加、删除、浏览查询和排序等功能。
2. 功能模块:
3. 程序流程图:
二、数据库设计
1.数据库分析:
通讯录管理系统是方便大众日常生活的工具,为了迎合大众需求,具体有浏览信息、查询信息、添加和删除信息,及排序等功能。
这就要求数据库结构能充分满足各种信息的输入与输出,实现有组织地,动态储存大量关联数据,方便用户访问系统中的数据。
2.数据库连接:
package connect_sql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Connects {
private String dbDriver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost/new_db";
private Connection con = null;
public Connects(){
try {
Class.forName(dbDriver).newInstance(); //数据库驱动
try {
con = DriverManager.getConnection(url, "root", "123");
System.out.println("提示:数据库加载成功!"); //加载数据库} catch (SQLException e) {
e.printStackTrace();
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public Connection getConnection(){
return con;
}
}
3.数据库建立:
三、系统的详细设计
1.系统登录界面:
(1)登录功能:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { int i = 0;
flag0 = 1;
UserDao user = new UserDao();
if (user.queryUser(jTextField1.getText().trim(), jPasswordField1 .getText().trim())) {
MainFrom fr = new MainFrom();
fr.setVisible(true);
this.dispose();
} else {
i++;
if (i <= 3){
JOptionPane.showMessageDialog(this, "用户名或密码请重新登录!");
jTextField1.setText("");
jPasswordField1.setText("");
}
else
this.dispose();
}
}
(2)重置功能(代码):
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText("");
jPasswordField1.setText("");
}
2.系统主界面:
(1)浏览学生信息:
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { View ft = new View();
ft.setVisible(true);
}
(2)查询学生信息:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Search fr = new Search();
fr.setVisible(true);
}
(3)添加学生信息:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { Add ft = new Add();
ft.setVisible(true);
}
(4)删除学生信息:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { Delete ft = new Delete();
ft.setVisible(true);
}
(5) 排序学生信息:
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { Sort ft = new Sort();
ft.setVisible(true);
}
3.浏览学生信息功能:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Object title[] = { "学号", "姓名", "性别", "手机号", "学院", "专业", "地址", "班级" };
String str = (String) jComboBox1_view.getSelectedItem();
String sql = "SELECT * FROM STUINFO";
ResultSet rs1 = choose.dataSelect(sql);
int i = 0;
try {
while (rs1.next()) {
i++;
}
} catch (SQLException e) {
e.printStackTrace();
}
Object data[][] = new Object[i + 1][8];
if (str.equals("全部信息")) {
sql = "SELECT * FROM STUINFO";
} else
sql = "SELECT * FROM STUINFO WHERE 班级='" + str + "'";
ResultSet rs = choose.dataSelect(sql);
int j = 0;
try {
while (rs.next()) {
data[j][0] = rs.getString(1);
data[j][1] = rs.getString(2);
data[j][2] = rs.getString(3);
data[j][3] = rs.getString(4);
data[j][4] = rs.getString(5);
data[j][5] = rs.getString(6);
data[j][6] = rs.getString(7);
data[j][7] = rs.getString(8);
j++;
}
} catch (SQLException e) {
e.printStackTrace();
}
JTable table = new JTable(data, title);
jScrollPane1.setViewportView(table);
jScrollPane1.revalidate();
}
4.查询学生信息功能:
private void jButton_Search1ActionPerformed(java.awt.event.ActionEvent evt) { Object title[] = { "学号", "姓名", "性别", "手机号", "学院", "专业", "地址", "班级" };
String str1 = (String) jComboBox_Search1.getSelectedItem();
String str2 = jTextField_Search1.getText();
String sql = null;
if (str1.equals("学号")) {
sql = "SELECT * FROM STUINFO WHERE 学号='" + str2 + "'";
} else if (str1.equals("姓名")) {
sql = "SELECT * FROM STUINFO WHERE 姓名='" + str2 + "'";
} else if (str1.equals("班级")) {
sql = "SELECT * FROM STUINFO WHERE 班级='" + str2 + "'";
}
ResultSet rs = choose.dataSelect(sql);
Object[][] datas = new Object[50][8];
try {
int j = 0;
while (rs.next()) {
datas[j][0] = rs.getString(1);
datas[j][1] = rs.getString(2);
datas[j][2] = rs.getString(3);
datas[j][3] = rs.getString(4);
datas[j][4] = rs.getString(5);
datas[j][5] = rs.getString(8);
datas[j][6] = rs.getString(6);
datas[j][7] = rs.getString(7);
j++;
}
} catch (SQLException e1) {
e1.printStackTrace();
}
JTable table = new JTable(datas, title);
jScrollPane1.setViewportView(table);
jScrollPane1.revalidate();
}
5.添加学生信息功能:
(1). 添加:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String[] option = { "添加", "修改" };
int n = JOptionPane.showOptionDialog(this, "请仔细检查信息,确定添加?", "添加信息",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null,
option, option[1]);
if (n == 0) {
//获取添加的内容
String acctnum = jTextField1.getText();
String name = jTextField2.getText();
String sex = jTextField3.getText();
String mobile = jTextField4.getText();
String academy = jTextField5.getText();
String major = jTextField6.getText();
String adress = jTextField7.getText();
String classes = jTextField8.getText();
//插入内容
String sql = "INSERT INTO STUINFO VALUES('" + acctnum + "', '"
+ name + "', '" + sex + "', '" + mobile + "', '" + academy
+ "', '" + major + "', '" + adress + "', '" + classes
+ "')";
choose.dataInsert(sql);
JOptionPane.showMessageDialog(this, "添加成功!", "提示",
RMATION_MESSAGE);
jButton2ActionPerformed(evt);
}
}
(2). 重置:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextField5.setText("");
jTextField6.setText("");
jTextField7.setText("");
jTextField8.setText("");
}
6.删除学生信息功能:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String str = (String) jComboBox1_view.getSelectedItem();
String str2 = jTextField1.getText();
String sql = null;
if (str.equals("学号")) {
sql = "SELECT * FROM stuinfo where 学号='" + str2 + "'";
} else
sql = "SELECT * FROM stuinfo where 姓名='" + str2 + "'";
ResultSet rs = choose.dataSelect(sql);
try {
while (rs.next()) {
jTextField2_acctnum.setText(rs.getString(1));
jTextField9_name.setText(rs.getString(2));
jTextField3_sex.setText(rs.getString(3));
jTextField4_mobile.setText(rs.getString(4));
jTextField5_academy.setText(rs.getString(5));
jTextField6_major.setText(rs.getString(6));
jTextField7_address.setText(rs.getString(7));
jTextField8_class.setText(rs.getString(8));
}
} catch (SQLException e) {
e.printStackTrace();
}
String[] option = { "删除", "修改" };
int n = JOptionPane.showOptionDialog(this, "请仔细核对信息,确认删除?
", "删除信息",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null,
option, option[1]);
if (n == 0) {
if (str.equals("学号")) {
sql = "DELETE FROM stuinfo WHERE 学号='" + str2 + "'";
} else
sql = "DELETE FROM stuinfo WHERE 姓名='" + str2 + "'";
choose.dataDelete(sql);
JOptionPane.showMessageDialog(this, "删除成功!", "提示",
RMATION_MESSAGE);
jTextField2_acctnum.setText("");
jTextField9_name.setText("");
jTextField3_sex.setText("");
jTextField4_mobile.setText("");
jTextField5_academy.setText("");
jTextField6_major.setText("");
jTextField7_address.setText("");
jTextField8_class.setText("");
}
}
7.排序学生信息功能:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String str = (String) jComboBox1.getSelectedItem();
Object title[] = { "姓名", "学号", "班级", "语文", "数学", "英语", "平均成绩", "总成绩" };
String sql = null;
if (str.equals("学号")) {
sql = "SELECT * FROM stuinfo ORDER BY 学号 ASC";
} else if (str.equals("姓名")) {
sql = "SELECT * FROM stuinfo ORDER BY 姓名 ASC";
} else
sql = "SELECT * FROM stuinfo ORDER BY 班级 ASC";
ResultSet rs = choose.dataSelect(sql);
Object[][] datas = new Object[51][8];
try {
int j = 0;
while (rs.next()) {
datas[j][0] = rs.getString(1);
datas[j][1] = rs.getString(2);
datas[j][2] = rs.getString(3);
datas[j][3] = rs.getString(4);
datas[j][4] = rs.getString(5);
datas[j][5] = rs.getString(6);
datas[j][6] = rs.getString(7);
datas[j][7] = rs.getString(8);
j++;
}
} catch (SQLException e1) {
e1.printStackTrace();
}
JTable table = new JTable(datas, title);
jScrollPane1.setViewportView(table);
jScrollPane1.revalidate();
}
8.图片插入:
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class LoginPanel extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
protected ImageIcon icon;
private int width;
private int height;
public LoginPanel(){
super();
icon = new ImageIcon("res/LoginImage1.jpg");
width = icon.getIconWidth();
height = icon.getIconHeight();
setSize(width, height);
}
protected void paintComponent(Graphics g){
super.paintComponents(g);
Image img = icon.getImage();
g.drawImage(img, 0, 0, this);
}
}
9.音乐插入:
Private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) { File musicFile = new File("res/1.wav");
URI uri = musicFile.toURI();
URL url;
try {
url = uri.toURL();
AudioClip clip = Applet.newAudioClip(url);
clip.loop();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
四、系统的使用说明
1.登录界面:
设置的账号为用户姓名:杨老师、周桃春。
密码为:123456。
登录成功后进入系统主界面,若账号或密码输入错误时提示重新输入。
2.系统主界面:
登录成功后,自动进入系统主界面,
3.浏览学生信息界面:
通过单击主界面上的浏览按钮就进入浏览界面,可以分类进行浏览。
4.查询学生信息界面:
通过单击主界面上的查询按钮就进入浏览界面,可以分类进行查询。
5.添加学生信息界面:
通过单击主界面上的添加按钮就进入添加界面,可以信息添加。
6.删除学生信息界面:
通过单击主界面上的删除按钮就进入删除界面,可以通过学号姓名进行删除。
7.排序学生信息界面:
通过单击主界面上的排序按钮就进入排序界面,可以排序信息,并浏览。
五、日志
2012-1-3
仔细对程序的需求进行分析,画出基本的流程图。
确定以MVC的模式开发程序。
2012-1-4
将程序各功能模块划分,确定包名,函数名;并开始着手搭建整个程序的可视化框架。
2012-1-6
实现程序的登陆界面功能与主界面。
2012-1-7
实现程序所有的功能模块。
2012-1-8
程序各功能联合测试。
六、心得
MVC的程序开发模式,在java程序开发,结构化概念很强,也很适合Java软件开发。
通过这次的课程设计,在过程中遇到不少问题,比如说程序的保存,程序的分段测试与综合测试。
这些问题在以后的软件开发道路上不可避免的遇到,深深体会到程序员的实际动手能力很重要。
此次课程设计得到的经验很多。
七、参考文献:
参考文献:
[1]王英杰,高益民.高等教育的国际化[J].清华大学教育研究,2000,(2):13-16
[2]毛利锐,沈灌群.中国教育通史[M].济南:山东教育出版社,1988.20-22
八、鸣谢。